diff --git a/src/Client.hh b/src/Client.hh index 44b66a2f..c91c5e96 100644 --- a/src/Client.hh +++ b/src/Client.hh @@ -19,6 +19,7 @@ #include "QuestScript.hh" #include "TeamIndex.hh" #include "Text.hh" +#include extern const uint64_t CLIENT_CONFIG_MAGIC; diff --git a/src/ReceiveCommands.cc b/src/ReceiveCommands.cc index e042fa19..129808f3 100644 --- a/src/ReceiveCommands.cc +++ b/src/ReceiveCommands.cc @@ -2,6 +2,7 @@ #include #include +#include #include #include @@ -33,12 +34,9 @@ const char* BATTLE_TABLE_DISCONNECT_HOOK_NAME = "battle_table_state"; const char* QUEST_BARRIER_DISCONNECT_HOOK_NAME = "quest_barrier"; const char* ADD_NEXT_CLIENT_DISCONNECT_HOOK_NAME = "add_next_game_client"; -static string bb_test_taint_filename(shared_ptr c) { - return c->character_filename() + ".test-tainted"; -} -static string bb_test_taint_grandfather_filename(shared_ptr c) { - return c->character_filename() + ".grandfathered-before-test-taint"; +static string bb_test_filename(shared_ptr c) { + return c->character_filename() + ".test"; } static bool file_exists_for_bb_taint(const string& filename) { @@ -46,28 +44,67 @@ static bool file_exists_for_bb_taint(const string& filename) { return f.good(); } -static bool bb_character_is_test_tainted(shared_ptr c) { - return file_exists_for_bb_taint(bb_test_taint_filename(c)); +static bool bb_character_is_test(shared_ptr c) { + return file_exists_for_bb_taint(bb_test_filename(c)); } -static bool bb_character_is_test_taint_grandfathered(shared_ptr c) { - return file_exists_for_bb_taint(bb_test_taint_grandfather_filename(c)); -} - -static bool mark_bb_character_test_tainted(shared_ptr c) { - string filename = bb_test_taint_filename(c); +static bool mark_bb_character_test(shared_ptr c) { + string filename = bb_test_filename(c); ofstream f(filename, ios::out | ios::trunc); if (!f.good()) { return false; } - f << "status=test-tainted\n"; - f << "reason=entered-test-ship\n"; - f << "account_id=" << c->login->account->account_id << "\n"; + uint32_t account_id = 0; + if (c->login && c->login->account) { + account_id = c->login->account->account_id; + } + + f << "status=test\n"; + f << "reason=created-on-test-ship\n"; + f << "account_id=" << account_id << "\n"; f << "character_file=" << c->character_filename() << "\n"; return f.good(); } +static void clear_bb_ship_state_markers_for_recreated_character(shared_ptr c) { + const string base_filename = c->character_filename(); + const vector suffixes = { + ".hardcore", + ".hardcore-dead", + ".hardcore-ineligible", + ".test", + ".test-tainted", + ".grandfathered-before-test-taint", + }; + + for (const auto& suffix : suffixes) { + const string filename = base_filename + suffix; + if (file_exists_for_bb_taint(filename)) { + if (::unlink(filename.c_str()) == 0) { + c->log.info_f("Removed stale BB ship-state marker for recreated character: {}", filename); + } else { + c->log.warning_f("Failed to remove stale BB ship-state marker for recreated character: {}", filename); + } + } + } +} + +static bool enforce_bb_test_ship_lock(shared_ptr c, bool current_ship_is_test) { + if (current_ship_is_test) { + if (!bb_character_is_test(c)) { + send_message_box(c, "$C6Only Test characters can enter Test.\n\n$C7Create a new character on the Test ship."); + return false; + } + } else { + if (bb_character_is_test(c)) { + send_message_box(c, "$C6This BB character is locked to Test.\n\n$C7Test characters cannot enter public ships."); + return false; + } + } + + return true; +} static string bb_hardcore_filename(shared_ptr c) { return c->character_filename() + ".hardcore"; @@ -126,9 +163,7 @@ static bool enforce_bb_hardcore_ship_lock(shared_ptr c, bool current_shi } if (current_ship_is_hardcore) { - if (bb_character_is_hardcore_ineligible(c) || - bb_character_is_test_tainted(c) || - bb_character_is_test_taint_grandfathered(c)) { + if (bb_character_is_hardcore_ineligible(c)) { if (!bb_character_is_hardcore_ineligible(c)) { mark_bb_character_hardcore_ineligible(c); } @@ -235,8 +270,6 @@ static void send_main_menu(shared_ptr c) { ((c->version() == Version::BB_V4) || (c->version() == Version::BB_PATCH)); bool bb_frontdoor_ship_menu = s->enable_bb_ship_selection_menu && is_bb_ship_menu_client; bool bb_destination_transport_menu = !s->enable_bb_ship_selection_menu && is_bb_ship_menu_client; - bool show_bb_live_test_menu_items = bb_frontdoor_ship_menu || bb_destination_transport_menu; - bool show_bb_restricted_ship_menu_items = bb_frontdoor_ship_menu; uint32_t go_to_lobby_menu_item_flags = (s->proxy_destinations_dc.empty() ? 0 : MenuItem::Flag::INVISIBLE_ON_DC) | @@ -302,43 +335,8 @@ static void send_main_menu(shared_ptr c) { // pre-lobby page and the lobby counter Transport list. Keep the frontdoor // as the full ship selector, but only expose safe transport choices on // destination ships. - uint32_t bb_live_test_menu_item_flags = - show_bb_live_test_menu_items - ? MenuItem::Flag::BB_ONLY - : (MenuItem::Flag::INVISIBLE_ON_DC | - MenuItem::Flag::INVISIBLE_ON_PC | - MenuItem::Flag::INVISIBLE_ON_GC | - MenuItem::Flag::INVISIBLE_ON_XB | - MenuItem::Flag::INVISIBLE_ON_BB); - uint32_t bb_restricted_ship_menu_item_flags = - show_bb_restricted_ship_menu_items - ? MenuItem::Flag::BB_ONLY - : (MenuItem::Flag::INVISIBLE_ON_DC | - MenuItem::Flag::INVISIBLE_ON_PC | - MenuItem::Flag::INVISIBLE_ON_GC | - MenuItem::Flag::INVISIBLE_ON_XB | - MenuItem::Flag::INVISIBLE_ON_BB); - main_menu->items.emplace_back(MainMenuItemID::BB_LIVE_SHIP, "PSO-Peeps Live", - "Join the live\nPSO-Peeps ship", bb_live_test_menu_item_flags); - main_menu->items.emplace_back(MainMenuItemID::BB_TEST_SHIP, "Test Ship", - "Join the test\nconfiguration ship", bb_live_test_menu_item_flags); - main_menu->items.emplace_back(MainMenuItemID::BB_DEV_SHIP, "Dev Ship", - "Join the dev\nexperimental ship", bb_restricted_ship_menu_item_flags); - main_menu->items.emplace_back(MainMenuItemID::BB_VANILLA_SHIP, "Vanilla Ship", - "Join the vanilla\ndefault-settings ship", bb_restricted_ship_menu_item_flags); - main_menu->items.emplace_back(MainMenuItemID::BB_HARDCORE_SHIP, "Hardcore Ship", - "Join the hardcore\npermadeath ship", bb_restricted_ship_menu_item_flags); - - uint32_t proxy_destinations_menu_item_flags = - (s->proxy_destinations_dc.empty() ? MenuItem::Flag::INVISIBLE_ON_DC : 0) | - (s->proxy_destinations_pc.empty() ? MenuItem::Flag::INVISIBLE_ON_PC : 0) | - (s->proxy_destinations_gc.empty() ? MenuItem::Flag::INVISIBLE_ON_GC : 0) | - (s->proxy_destinations_xb.empty() ? MenuItem::Flag::INVISIBLE_ON_XB : 0) | - MenuItem::Flag::INVISIBLE_ON_BB; - main_menu->items.emplace_back(MainMenuItemID::PROXY_DESTINATIONS, "Select ship", - "Choose Live,\nVanilla, or Test", proxy_destinations_menu_item_flags); main_menu->items.emplace_back(MainMenuItemID::DOWNLOAD_QUESTS, "Download quests", "Download quests", MenuItem::Flag::INVISIBLE_ON_DC_PROTOS | MenuItem::Flag::INVISIBLE_ON_PC_NTE | MenuItem::Flag::INVISIBLE_ON_BB); @@ -2850,14 +2848,6 @@ static asio::awaitable on_10_main_menu(shared_ptr c, uint32_t item break; } - // PSO Peeps alpha test: entering Test taints only non-grandfathered BB characters. - // Existing characters were grandfathered before this feature was enabled. - if (!bb_character_is_test_taint_grandfathered(c)) { - if (!mark_bb_character_test_tainted(c)) { - send_message_box(c, "$C6Could not mark this character for Test access.\n\n$C7Please report this."); - break; - } - } send_reconnect(c, s->connect_address_for_client(c), 19345); break; @@ -2879,13 +2869,6 @@ static asio::awaitable on_10_main_menu(shared_ptr c, uint32_t item break; } - // PSO Peeps dev/test isolation: entering Dev taints only non-grandfathered BB characters. - if (!bb_character_is_test_taint_grandfathered(c)) { - if (!mark_bb_character_test_tainted(c)) { - send_message_box(c, "$C6Could not mark this character for Dev access.\n\n$C7Please report this."); - break; - } - } send_reconnect(c, s->connect_address_for_client(c), 19445); break; @@ -2907,8 +2890,8 @@ static asio::awaitable on_10_main_menu(shared_ptr c, uint32_t item break; } - if (bb_character_is_test_tainted(c)) { - send_message_box(c, "$C6This character has been used outside of Vanilla and cannot enter Vanilla.\n\n$C7Use Live/Test with this character, or create a fresh Vanilla character."); + if (bb_character_is_test(c)) { + send_message_box(c, "$C6This BB character is locked to Test.\n\n$C7Test characters cannot enter public ships."); c->channel->disconnect(); break; } @@ -2936,8 +2919,7 @@ static asio::awaitable on_10_main_menu(shared_ptr c, uint32_t item } if (bb_character_is_hardcore_ineligible(c) || - bb_character_is_test_tainted(c) || - bb_character_is_test_taint_grandfathered(c)) { + bb_character_is_test(c)) { if (!bb_character_is_hardcore_ineligible(c)) { mark_bb_character_hardcore_ineligible(c); } @@ -4164,6 +4146,10 @@ static asio::awaitable on_E3_BB(shared_ptr c, Channel::Message& ms c->bb_bank_character_index = cmd.character_index; auto s = c->require_server_state(); + if (!enforce_bb_test_ship_lock(c, s->enable_test_mode)) { + c->unload_character(false); + co_return; + } if (!enforce_bb_hardcore_ship_lock(c, s->enable_hardcore_mode)) { c->unload_character(false); co_return; @@ -4415,7 +4401,14 @@ static asio::awaitable on_E5_BB(shared_ptr c, Channel::Message& ms } else { try { auto s = c->require_server_state(); + clear_bb_ship_state_markers_for_recreated_character(c); c->create_character_file(c->login->account->account_id, c->language(), cmd.preview, s->level_table(c->version())); + if (s->enable_test_mode) { + if (!mark_bb_character_test(c)) { + throw runtime_error("could not mark new character as Test"); + } + c->log.info_f("Marked BB character as Test: {}", c->character_filename()); + } } catch (const exception& e) { send_message_box(c, std::format("$C6New character could not be created:\n{}", e.what())); should_send_approve = false; diff --git a/src/ServerState.cc b/src/ServerState.cc index 81d9f632..9f2a6b93 100644 --- a/src/ServerState.cc +++ b/src/ServerState.cc @@ -878,6 +878,11 @@ void ServerState::load_config_early() { this->client_ping_interval_usecs = this->config_json->get_int("ClientPingInterval", 30000000); this->client_idle_timeout_usecs = this->config_json->get_int("ClientIdleTimeout", 60000000); this->patch_client_idle_timeout_usecs = this->config_json->get_int("PatchClientIdleTimeout", 300000000); + this->psopeeps_dcv2_exp_multiplier = this->config_json->get_int("PsoPeepsDCV2EXPMultiplier", 5); + if ((this->psopeeps_dcv2_exp_multiplier != 5) && (this->psopeeps_dcv2_exp_multiplier != 10)) { + throw runtime_error("PsoPeepsDCV2EXPMultiplier must be 5 or 10"); + } + this->ip_stack_debug = this->config_json->get_bool("IPStackDebug", false); this->allow_unregistered_users = this->config_json->get_bool("AllowUnregisteredUsers", false); @@ -952,6 +957,7 @@ void ServerState::load_config_early() { this->enable_bb_ship_selection_menu = this->config_json->get_bool("EnableBBShipSelectionMenu", false); this->enable_blueballz = this->config_json->get_bool("EnableBlueballz", false); this->enable_hardcore_mode = this->config_json->get_bool("EnableHardcoreMode", false); + this->enable_test_mode = this->config_json->get_bool("EnableTestMode", false); this->blueballz_max_tier = std::min(10, std::max(0, this->config_json->get_int("BlueballzMaxTier", 10))); this->blueballz_unlocked_tier_v2 = std::min( this->blueballz_max_tier, diff --git a/src/ServerState.hh b/src/ServerState.hh index 61ebee3a..7ff63fdd 100644 --- a/src/ServerState.hh +++ b/src/ServerState.hh @@ -123,6 +123,7 @@ struct ServerState : public std::enable_shared_from_this { uint64_t client_ping_interval_usecs = 30000000; uint64_t client_idle_timeout_usecs = 60000000; uint64_t patch_client_idle_timeout_usecs = 300000000; + uint64_t psopeeps_dcv2_exp_multiplier = 5; bool is_debug = false; bool ip_stack_debug = false; bool allow_unregistered_users = false; @@ -177,6 +178,7 @@ struct ServerState : public std::enable_shared_from_this { bool enable_blueballz = false; int64_t blueballz_enemy_hp_scale_tier = -1; // -1 = disabled; 0..10 = scale BB enemy HP in stream files bool enable_hardcore_mode = false; + bool enable_test_mode = false; int8_t blueballz_max_tier = 10; int8_t blueballz_unlocked_tier_v2 = 0; int8_t blueballz_unlocked_tier_v3 = 0; diff --git a/system/client-functions.disabled/PsoPeepsEP1EXP10x.s b/system/client-functions.disabled/PsoPeepsEP1EXP10x.s index eb1990ea..56c334ec 100644 --- a/system/client-functions.disabled/PsoPeepsEP1EXP10x.s +++ b/system/client-functions.disabled/PsoPeepsEP1EXP10x.s @@ -1,10 +1,9 @@ .meta visibility="menu" .meta key="PsoPeepsEP1EXP10x" .meta name="EP1 10x" -.meta client_flag="0x0000200000000000" .meta description="Sets EP1 enemy EXP\nto 10x for GC crossplay" -.versions 3OE2 3OJ5 +.versions 3OE2 entry_ptr: reloc0: @@ -19,819 +18,819 @@ start: # EXP field offset within each 0x24-byte row is +0x1C # Generated from clean BattleParamEntry_on.dat; multiplier=10x - .data + .data 0x811AB7DC .data 4 .binary 0000000a - .data + .data 0x811AB800 .data 4 .binary 0000003c - .data + .data 0x811AB824 .data 4 .binary 00000032 - .data + .data 0x811AB848 .data 4 .binary 00000046 - .data + .data 0x811AB86C .data 4 .binary 00000064 - .data + .data 0x811AB890 .data 4 .binary 000005dc - .data + .data 0x811AB8B4 .data 4 .binary 000000fa - .data + .data 0x811AB8D8 .data 4 .binary 000000a0 - .data + .data 0x811AB8FC .data 4 .binary 000000a0 - .data + .data 0x811AB920 .data 4 .binary 000000aa - .data + .data 0x811AB944 .data 4 .binary 00000122 - .data + .data 0x811AB968 .data 4 .binary 00000028 - .data + .data 0x811AB98C .data 4 .binary 00000028 - .data + .data 0x811AB9B0 .data 4 .binary 0000015e - .data + .data 0x811AB9D4 .data 4 .binary 0000015e - .data + .data 0x811AB9F8 .data 4 .binary 000022c4 - .data + .data 0x811ABA1C .data 4 .binary 00000064 - .data + .data 0x811ABA40 .data 4 .binary 00000064 - .data + .data 0x811ABA64 .data 4 .binary 00000fa0 - .data + .data 0x811ABA88 .data 4 .binary 00000118 - .data + .data 0x811ABB3C .data 4 .binary 00000028 - .data + .data 0x811ABB60 .data 4 .binary 000003e8 - .data + .data 0x811ABB84 .data 4 .binary 00000096 - .data + .data 0x811ABBA8 .data 4 .binary 0000001e - .data + .data 0x811ABBCC .data 4 .binary 000000b4 - .data + .data 0x811ABBF0 .data 4 .binary 000000dc - .data + .data 0x811ABC14 .data 4 .binary 000000c8 - .data + .data 0x811ABC38 .data 4 .binary 0000010e - .data + .data 0x811ABC5C .data 4 .binary 0000003c - .data + .data 0x811ABD10 .data 4 .binary 000030d4 - .data + .data 0x811ABE9C .data 4 .binary 00000064 - .data + .data 0x811ABEC0 .data 4 .binary 0000003c - .data + .data 0x811ABEE4 .data 4 .binary 00000028 - .data + .data 0x811ABF08 .data 4 .binary 00000028 - .data + .data 0x811ABF2C .data 4 .binary 000005dc - .data + .data 0x811ABF50 .data 4 .binary 00000032 - .data + .data 0x811ABF98 .data 4 .binary 00007530 - .data + .data 0x811ABFE0 .data 4 .binary 00000032 - .data + .data 0x811AC220 .data 4 .binary 00000082 - .data + .data 0x811AC244 .data 4 .binary 000003e8 - .data + .data 0x811AC268 .data 4 .binary 00000032 - .data + .data 0x811AC28C .data 4 .binary 0000003c - .data + .data 0x811AC2B0 .data 4 .binary 00000046 - .data + .data 0x811AC2D4 .data 4 .binary 000000c8 - .data + .data 0x811AC2F8 .data 4 .binary 00000064 - .data + .data 0x811AC31C .data 4 .binary 00000078 - .data + .data 0x811AC340 .data 4 .binary 0000008c - .data + .data 0x811AC364 .data 4 .binary 0000012c - .data + .data 0x811AC388 .data 4 .binary 000000dc - .data + .data 0x811AC3AC .data 4 .binary 000000f0 - .data + .data 0x811AC3D0 .data 4 .binary 00000104 - .data + .data 0x811AC55C .data 4 .binary 00000168 - .data + .data 0x811AC580 .data 4 .binary 000001ae - .data + .data 0x811AC5A4 .data 4 .binary 000001a4 - .data + .data 0x811AC5C8 .data 4 .binary 000001c2 - .data + .data 0x811AC5EC .data 4 .binary 000001ea - .data + .data 0x811AC610 .data 4 .binary 00000a1e - .data + .data 0x811AC634 .data 4 .binary 000002bc - .data + .data 0x811AC658 .data 4 .binary 00000244 - .data + .data 0x811AC67C .data 4 .binary 00000244 - .data + .data 0x811AC6A0 .data 4 .binary 00000258 - .data + .data 0x811AC6C4 .data 4 .binary 0000030c - .data + .data 0x811AC6E8 .data 4 .binary 00000190 - .data + .data 0x811AC70C .data 4 .binary 00000190 - .data + .data 0x811AC730 .data 4 .binary 000003ca - .data + .data 0x811AC754 .data 4 .binary 00000348 - .data + .data 0x811AC778 .data 4 .binary 00007d00 - .data + .data 0x811AC79C .data 4 .binary 000000fa - .data + .data 0x811AC7C0 .data 4 .binary 00000028 - .data + .data 0x811AC7E4 .data 4 .binary 00005dc0 - .data + .data 0x811AC808 .data 4 .binary 000002ee - .data + .data 0x811AC8BC .data 4 .binary 00000190 - .data + .data 0x811AC8E0 .data 4 .binary 00000730 - .data + .data 0x811AC904 .data 4 .binary 0000023a - .data + .data 0x811AC928 .data 4 .binary 0000006e - .data + .data 0x811AC94C .data 4 .binary 00000262 - .data + .data 0x811AC970 .data 4 .binary 0000029e - .data + .data 0x811AC994 .data 4 .binary 00000280 - .data + .data 0x811AC9B8 .data 4 .binary 00000302 - .data + .data 0x811AC9DC .data 4 .binary 000001ae - .data + .data 0x811ACA90 .data 4 .binary 00009470 - .data + .data 0x811ACC1C .data 4 .binary 000001ea - .data + .data 0x811ACC40 .data 4 .binary 00000104 - .data + .data 0x811ACC64 .data 4 .binary 000000e6 - .data + .data 0x811ACC88 .data 4 .binary 000000e6 - .data + .data 0x811ACCAC .data 4 .binary 00000a1e - .data + .data 0x811ACCD0 .data 4 .binary 00000032 - .data + .data 0x811ACD3C .data 4 .binary 00013880 - .data + .data 0x811ACD60 .data 4 .binary 00000032 - .data + .data 0x811ACFA0 .data 4 .binary 00000230 - .data + .data 0x811ACFC4 .data 4 .binary 00000730 - .data + .data 0x811ACFE8 .data 4 .binary 000001a4 - .data + .data 0x811AD00C .data 4 .binary 000001ae - .data + .data 0x811AD030 .data 4 .binary 000001c2 - .data + .data 0x811AD054 .data 4 .binary 00000280 - .data + .data 0x811AD078 .data 4 .binary 000001ea - .data + .data 0x811AD09C .data 4 .binary 00000208 - .data + .data 0x811AD0C0 .data 4 .binary 00000226 - .data + .data 0x811AD0E4 .data 4 .binary 0000032a - .data + .data 0x811AD108 .data 4 .binary 0000029e - .data + .data 0x811AD12C .data 4 .binary 000002bc - .data + .data 0x811AD150 .data 4 .binary 000002da - .data + .data 0x811AD2DC .data 4 .binary 00000334 - .data + .data 0x811AD300 .data 4 .binary 00000398 - .data + .data 0x811AD324 .data 4 .binary 00000384 - .data + .data 0x811AD348 .data 4 .binary 000003ac - .data + .data 0x811AD36C .data 4 .binary 000003e8 - .data + .data 0x811AD390 .data 4 .binary 00000ed8 - .data + .data 0x811AD3B4 .data 4 .binary 0000055a - .data + .data 0x811AD3D8 .data 4 .binary 00000460 - .data + .data 0x811AD3FC .data 4 .binary 00000460 - .data + .data 0x811AD420 .data 4 .binary 00000474 - .data + .data 0x811AD444 .data 4 .binary 000005c8 - .data + .data 0x811AD468 .data 4 .binary 00000370 - .data + .data 0x811AD48C .data 4 .binary 00000370 - .data + .data 0x811AD4B0 .data 4 .binary 000005dc - .data + .data 0x811AD4D4 .data 4 .binary 000005a0 - .data + .data 0x811AD4F8 .data 4 .binary 000153d8 - .data + .data 0x811AD51C .data 4 .binary 0000012c - .data + .data 0x811AD540 .data 4 .binary 00000050 - .data + .data 0x811AD564 .data 4 .binary 000137b8 - .data + .data 0x811AD588 .data 4 .binary 00000596 - .data + .data 0x811AD63C .data 4 .binary 00000370 - .data + .data 0x811AD660 .data 4 .binary 00000af0 - .data + .data 0x811AD684 .data 4 .binary 000004b0 - .data + .data 0x811AD6A8 .data 4 .binary 000000dc - .data + .data 0x811AD6CC .data 4 .binary 00000488 - .data + .data 0x811AD6F0 .data 4 .binary 000004d8 - .data + .data 0x811AD714 .data 4 .binary 000004b0 - .data + .data 0x811AD738 .data 4 .binary 00000500 - .data + .data 0x811AD75C .data 4 .binary 00000398 - .data + .data 0x811AD810 .data 4 .binary 0001b198 - .data + .data 0x811AD99C .data 4 .binary 000003e8 - .data + .data 0x811AD9C0 .data 4 .binary 00000208 - .data + .data 0x811AD9E4 .data 4 .binary 000001e0 - .data + .data 0x811ADA08 .data 4 .binary 000001e0 - .data + .data 0x811ADA2C .data 4 .binary 00000ed8 - .data + .data 0x811ADA50 .data 4 .binary 0000005a - .data + .data 0x811ADABC .data 4 .binary 00027100 - .data + .data 0x811ADAE0 .data 4 .binary 0000005a - .data + .data 0x811ADD20 .data 4 .binary 00000456 - .data + .data 0x811ADD44 .data 4 .binary 00000af0 - .data + .data 0x811ADD68 .data 4 .binary 00000384 - .data + .data 0x811ADD8C .data 4 .binary 00000398 - .data + .data 0x811ADDB0 .data 4 .binary 000003ac - .data + .data 0x811ADDD4 .data 4 .binary 000004e2 - .data + .data 0x811ADDF8 .data 4 .binary 000003e8 - .data + .data 0x811ADE1C .data 4 .binary 00000410 - .data + .data 0x811ADE40 .data 4 .binary 00000438 - .data + .data 0x811ADE64 .data 4 .binary 000005dc - .data + .data 0x811ADE88 .data 4 .binary 000004d8 - .data + .data 0x811ADEAC .data 4 .binary 00000500 - .data + .data 0x811ADED0 .data 4 .binary 00000528 - .data + .data 0x811AE05C .data 4 .binary 000005aa - .data + .data 0x811AE080 .data 4 .binary 00000a8c - .data + .data 0x811AE0A4 .data 4 .binary 00000abe - .data + .data 0x811AE0C8 .data 4 .binary 00000af0 - .data + .data 0x811AE0EC .data 4 .binary 00000b86 - .data + .data 0x811AE110 .data 4 .binary 00002328 - .data + .data 0x811AE134 .data 4 .binary 00000dac - .data + .data 0x811AE158 .data 4 .binary 00000c80 - .data + .data 0x811AE17C .data 4 .binary 00000c80 - .data + .data 0x811AE1A0 .data 4 .binary 00000cb2 - .data + .data 0x811AE1C4 .data 4 .binary 00000e2e - .data + .data 0x811AE1E8 .data 4 .binary 000003e8 - .data + .data 0x811AE20C .data 4 .binary 000003e8 - .data + .data 0x811AE230 .data 4 .binary 00000f0a - .data + .data 0x811AE254 .data 4 .binary 00000e88 - .data + .data 0x811AE278 .data 4 .binary 0002de60 - .data + .data 0x811AE29C .data 4 .binary 00000258 - .data + .data 0x811AE2C0 .data 4 .binary 000000a0 - .data + .data 0x811AE2E4 .data 4 .binary 00026d18 - .data + .data 0x811AE308 .data 4 .binary 00000d70 - .data + .data 0x811AE3BC .data 4 .binary 00000a00 - .data + .data 0x811AE3E0 .data 4 .binary 00001b58 - .data + .data 0x811AE404 .data 4 .binary 00000c80 - .data + .data 0x811AE428 .data 4 .binary 0000024e - .data + .data 0x811AE44C .data 4 .binary 00000c8a - .data + .data 0x811AE470 .data 4 .binary 00000dde - .data + .data 0x811AE494 .data 4 .binary 00000d0c - .data + .data 0x811AE4B8 .data 4 .binary 00000d0c - .data + .data 0x811AE4DC .data 4 .binary 00000aaa - .data + .data 0x811AE590 .data 4 .binary 000395f8 - .data + .data 0x811AE71C .data 4 .binary 00000b54 - .data + .data 0x811AE740 .data 4 .binary 0000079e - .data + .data 0x811AE764 .data 4 .binary 00000708 - .data + .data 0x811AE788 .data 4 .binary 00000708 - .data + .data 0x811AE7AC .data 4 .binary 00002260 - .data + .data 0x811AE7D0 .data 4 .binary 000000fa - .data + .data 0x811AE83C .data 4 .binary 0007a120 - .data + .data 0x811AE860 .data 4 .binary 000000c8 - .data + .data 0x811AEAA0 .data 4 .binary 00000bb8 - .data + .data 0x811AEAC4 .data 4 .binary 00001af4 - .data + .data 0x811AEAE8 .data 4 .binary 00000a96 - .data + .data 0x811AEB0C .data 4 .binary 00000ac8 - .data + .data 0x811AEB30 .data 4 .binary 00000a78 - .data + .data 0x811AEB54 .data 4 .binary 00000d02 - .data + .data 0x811AEB78 .data 4 .binary 00000b86 - .data + .data 0x811AEB9C .data 4 .binary 00000bd6 - .data + .data 0x811AEBC0 .data 4 .binary 00000c6c - .data + .data 0x811AEBE4 .data 4 .binary 00000ea6 - .data + .data 0x811AEC08 .data 4 .binary 00000d3e - .data + .data 0x811AEC2C .data 4 .binary 00000d7a - .data + .data 0x811AEC50 .data 4 .binary 00000de8 diff --git a/system/client-functions.disabled/PsoPeepsEP1EXP5x.s b/system/client-functions.disabled/PsoPeepsEP1EXP5x.s index db798ee5..7b0c83f2 100644 --- a/system/client-functions.disabled/PsoPeepsEP1EXP5x.s +++ b/system/client-functions.disabled/PsoPeepsEP1EXP5x.s @@ -1,10 +1,9 @@ .meta visibility="menu" .meta key="PsoPeepsEP1EXP5x" .meta name="EP1 5x" -.meta client_flag="0x0000200000000000" .meta description="Sets EP1 enemy EXP\nto 5x for GC crossplay" -.versions 3OE2 3OJ5 +.versions 3OE2 entry_ptr: reloc0: @@ -19,819 +18,819 @@ start: # EXP field offset within each 0x24-byte row is +0x1C # Generated from clean BattleParamEntry_on.dat; multiplier=5x - .data + .data 0x811AB7DC .data 4 .binary 00000005 - .data + .data 0x811AB800 .data 4 .binary 0000001e - .data + .data 0x811AB824 .data 4 .binary 00000019 - .data + .data 0x811AB848 .data 4 .binary 00000023 - .data + .data 0x811AB86C .data 4 .binary 00000032 - .data + .data 0x811AB890 .data 4 .binary 000002ee - .data + .data 0x811AB8B4 .data 4 .binary 0000007d - .data + .data 0x811AB8D8 .data 4 .binary 00000050 - .data + .data 0x811AB8FC .data 4 .binary 00000050 - .data + .data 0x811AB920 .data 4 .binary 00000055 - .data + .data 0x811AB944 .data 4 .binary 00000091 - .data + .data 0x811AB968 .data 4 .binary 00000014 - .data + .data 0x811AB98C .data 4 .binary 00000014 - .data + .data 0x811AB9B0 .data 4 .binary 000000af - .data + .data 0x811AB9D4 .data 4 .binary 000000af - .data + .data 0x811AB9F8 .data 4 .binary 00001162 - .data + .data 0x811ABA1C .data 4 .binary 00000032 - .data + .data 0x811ABA40 .data 4 .binary 00000032 - .data + .data 0x811ABA64 .data 4 .binary 000007d0 - .data + .data 0x811ABA88 .data 4 .binary 0000008c - .data + .data 0x811ABB3C .data 4 .binary 00000014 - .data + .data 0x811ABB60 .data 4 .binary 000001f4 - .data + .data 0x811ABB84 .data 4 .binary 0000004b - .data + .data 0x811ABBA8 .data 4 .binary 0000000f - .data + .data 0x811ABBCC .data 4 .binary 0000005a - .data + .data 0x811ABBF0 .data 4 .binary 0000006e - .data + .data 0x811ABC14 .data 4 .binary 00000064 - .data + .data 0x811ABC38 .data 4 .binary 00000087 - .data + .data 0x811ABC5C .data 4 .binary 0000001e - .data + .data 0x811ABD10 .data 4 .binary 0000186a - .data + .data 0x811ABE9C .data 4 .binary 00000032 - .data + .data 0x811ABEC0 .data 4 .binary 0000001e - .data + .data 0x811ABEE4 .data 4 .binary 00000014 - .data + .data 0x811ABF08 .data 4 .binary 00000014 - .data + .data 0x811ABF2C .data 4 .binary 000002ee - .data + .data 0x811ABF50 .data 4 .binary 00000019 - .data + .data 0x811ABF98 .data 4 .binary 00003a98 - .data + .data 0x811ABFE0 .data 4 .binary 00000019 - .data + .data 0x811AC220 .data 4 .binary 00000041 - .data + .data 0x811AC244 .data 4 .binary 000001f4 - .data + .data 0x811AC268 .data 4 .binary 00000019 - .data + .data 0x811AC28C .data 4 .binary 0000001e - .data + .data 0x811AC2B0 .data 4 .binary 00000023 - .data + .data 0x811AC2D4 .data 4 .binary 00000064 - .data + .data 0x811AC2F8 .data 4 .binary 00000032 - .data + .data 0x811AC31C .data 4 .binary 0000003c - .data + .data 0x811AC340 .data 4 .binary 00000046 - .data + .data 0x811AC364 .data 4 .binary 00000096 - .data + .data 0x811AC388 .data 4 .binary 0000006e - .data + .data 0x811AC3AC .data 4 .binary 00000078 - .data + .data 0x811AC3D0 .data 4 .binary 00000082 - .data + .data 0x811AC55C .data 4 .binary 000000b4 - .data + .data 0x811AC580 .data 4 .binary 000000d7 - .data + .data 0x811AC5A4 .data 4 .binary 000000d2 - .data + .data 0x811AC5C8 .data 4 .binary 000000e1 - .data + .data 0x811AC5EC .data 4 .binary 000000f5 - .data + .data 0x811AC610 .data 4 .binary 0000050f - .data + .data 0x811AC634 .data 4 .binary 0000015e - .data + .data 0x811AC658 .data 4 .binary 00000122 - .data + .data 0x811AC67C .data 4 .binary 00000122 - .data + .data 0x811AC6A0 .data 4 .binary 0000012c - .data + .data 0x811AC6C4 .data 4 .binary 00000186 - .data + .data 0x811AC6E8 .data 4 .binary 000000c8 - .data + .data 0x811AC70C .data 4 .binary 000000c8 - .data + .data 0x811AC730 .data 4 .binary 000001e5 - .data + .data 0x811AC754 .data 4 .binary 000001a4 - .data + .data 0x811AC778 .data 4 .binary 00003e80 - .data + .data 0x811AC79C .data 4 .binary 0000007d - .data + .data 0x811AC7C0 .data 4 .binary 00000014 - .data + .data 0x811AC7E4 .data 4 .binary 00002ee0 - .data + .data 0x811AC808 .data 4 .binary 00000177 - .data + .data 0x811AC8BC .data 4 .binary 000000c8 - .data + .data 0x811AC8E0 .data 4 .binary 00000398 - .data + .data 0x811AC904 .data 4 .binary 0000011d - .data + .data 0x811AC928 .data 4 .binary 00000037 - .data + .data 0x811AC94C .data 4 .binary 00000131 - .data + .data 0x811AC970 .data 4 .binary 0000014f - .data + .data 0x811AC994 .data 4 .binary 00000140 - .data + .data 0x811AC9B8 .data 4 .binary 00000181 - .data + .data 0x811AC9DC .data 4 .binary 000000d7 - .data + .data 0x811ACA90 .data 4 .binary 00004a38 - .data + .data 0x811ACC1C .data 4 .binary 000000f5 - .data + .data 0x811ACC40 .data 4 .binary 00000082 - .data + .data 0x811ACC64 .data 4 .binary 00000073 - .data + .data 0x811ACC88 .data 4 .binary 00000073 - .data + .data 0x811ACCAC .data 4 .binary 0000050f - .data + .data 0x811ACCD0 .data 4 .binary 00000019 - .data + .data 0x811ACD3C .data 4 .binary 00009c40 - .data + .data 0x811ACD60 .data 4 .binary 00000019 - .data + .data 0x811ACFA0 .data 4 .binary 00000118 - .data + .data 0x811ACFC4 .data 4 .binary 00000398 - .data + .data 0x811ACFE8 .data 4 .binary 000000d2 - .data + .data 0x811AD00C .data 4 .binary 000000d7 - .data + .data 0x811AD030 .data 4 .binary 000000e1 - .data + .data 0x811AD054 .data 4 .binary 00000140 - .data + .data 0x811AD078 .data 4 .binary 000000f5 - .data + .data 0x811AD09C .data 4 .binary 00000104 - .data + .data 0x811AD0C0 .data 4 .binary 00000113 - .data + .data 0x811AD0E4 .data 4 .binary 00000195 - .data + .data 0x811AD108 .data 4 .binary 0000014f - .data + .data 0x811AD12C .data 4 .binary 0000015e - .data + .data 0x811AD150 .data 4 .binary 0000016d - .data + .data 0x811AD2DC .data 4 .binary 0000019a - .data + .data 0x811AD300 .data 4 .binary 000001cc - .data + .data 0x811AD324 .data 4 .binary 000001c2 - .data + .data 0x811AD348 .data 4 .binary 000001d6 - .data + .data 0x811AD36C .data 4 .binary 000001f4 - .data + .data 0x811AD390 .data 4 .binary 0000076c - .data + .data 0x811AD3B4 .data 4 .binary 000002ad - .data + .data 0x811AD3D8 .data 4 .binary 00000230 - .data + .data 0x811AD3FC .data 4 .binary 00000230 - .data + .data 0x811AD420 .data 4 .binary 0000023a - .data + .data 0x811AD444 .data 4 .binary 000002e4 - .data + .data 0x811AD468 .data 4 .binary 000001b8 - .data + .data 0x811AD48C .data 4 .binary 000001b8 - .data + .data 0x811AD4B0 .data 4 .binary 000002ee - .data + .data 0x811AD4D4 .data 4 .binary 000002d0 - .data + .data 0x811AD4F8 .data 4 .binary 0000a9ec - .data + .data 0x811AD51C .data 4 .binary 00000096 - .data + .data 0x811AD540 .data 4 .binary 00000028 - .data + .data 0x811AD564 .data 4 .binary 00009bdc - .data + .data 0x811AD588 .data 4 .binary 000002cb - .data + .data 0x811AD63C .data 4 .binary 000001b8 - .data + .data 0x811AD660 .data 4 .binary 00000578 - .data + .data 0x811AD684 .data 4 .binary 00000258 - .data + .data 0x811AD6A8 .data 4 .binary 0000006e - .data + .data 0x811AD6CC .data 4 .binary 00000244 - .data + .data 0x811AD6F0 .data 4 .binary 0000026c - .data + .data 0x811AD714 .data 4 .binary 00000258 - .data + .data 0x811AD738 .data 4 .binary 00000280 - .data + .data 0x811AD75C .data 4 .binary 000001cc - .data + .data 0x811AD810 .data 4 .binary 0000d8cc - .data + .data 0x811AD99C .data 4 .binary 000001f4 - .data + .data 0x811AD9C0 .data 4 .binary 00000104 - .data + .data 0x811AD9E4 .data 4 .binary 000000f0 - .data + .data 0x811ADA08 .data 4 .binary 000000f0 - .data + .data 0x811ADA2C .data 4 .binary 0000076c - .data + .data 0x811ADA50 .data 4 .binary 0000002d - .data + .data 0x811ADABC .data 4 .binary 00013880 - .data + .data 0x811ADAE0 .data 4 .binary 0000002d - .data + .data 0x811ADD20 .data 4 .binary 0000022b - .data + .data 0x811ADD44 .data 4 .binary 00000578 - .data + .data 0x811ADD68 .data 4 .binary 000001c2 - .data + .data 0x811ADD8C .data 4 .binary 000001cc - .data + .data 0x811ADDB0 .data 4 .binary 000001d6 - .data + .data 0x811ADDD4 .data 4 .binary 00000271 - .data + .data 0x811ADDF8 .data 4 .binary 000001f4 - .data + .data 0x811ADE1C .data 4 .binary 00000208 - .data + .data 0x811ADE40 .data 4 .binary 0000021c - .data + .data 0x811ADE64 .data 4 .binary 000002ee - .data + .data 0x811ADE88 .data 4 .binary 0000026c - .data + .data 0x811ADEAC .data 4 .binary 00000280 - .data + .data 0x811ADED0 .data 4 .binary 00000294 - .data + .data 0x811AE05C .data 4 .binary 000002d5 - .data + .data 0x811AE080 .data 4 .binary 00000546 - .data + .data 0x811AE0A4 .data 4 .binary 0000055f - .data + .data 0x811AE0C8 .data 4 .binary 00000578 - .data + .data 0x811AE0EC .data 4 .binary 000005c3 - .data + .data 0x811AE110 .data 4 .binary 00001194 - .data + .data 0x811AE134 .data 4 .binary 000006d6 - .data + .data 0x811AE158 .data 4 .binary 00000640 - .data + .data 0x811AE17C .data 4 .binary 00000640 - .data + .data 0x811AE1A0 .data 4 .binary 00000659 - .data + .data 0x811AE1C4 .data 4 .binary 00000717 - .data + .data 0x811AE1E8 .data 4 .binary 000001f4 - .data + .data 0x811AE20C .data 4 .binary 000001f4 - .data + .data 0x811AE230 .data 4 .binary 00000785 - .data + .data 0x811AE254 .data 4 .binary 00000744 - .data + .data 0x811AE278 .data 4 .binary 00016f30 - .data + .data 0x811AE29C .data 4 .binary 0000012c - .data + .data 0x811AE2C0 .data 4 .binary 00000050 - .data + .data 0x811AE2E4 .data 4 .binary 0001368c - .data + .data 0x811AE308 .data 4 .binary 000006b8 - .data + .data 0x811AE3BC .data 4 .binary 00000500 - .data + .data 0x811AE3E0 .data 4 .binary 00000dac - .data + .data 0x811AE404 .data 4 .binary 00000640 - .data + .data 0x811AE428 .data 4 .binary 00000127 - .data + .data 0x811AE44C .data 4 .binary 00000645 - .data + .data 0x811AE470 .data 4 .binary 000006ef - .data + .data 0x811AE494 .data 4 .binary 00000686 - .data + .data 0x811AE4B8 .data 4 .binary 00000686 - .data + .data 0x811AE4DC .data 4 .binary 00000555 - .data + .data 0x811AE590 .data 4 .binary 0001cafc - .data + .data 0x811AE71C .data 4 .binary 000005aa - .data + .data 0x811AE740 .data 4 .binary 000003cf - .data + .data 0x811AE764 .data 4 .binary 00000384 - .data + .data 0x811AE788 .data 4 .binary 00000384 - .data + .data 0x811AE7AC .data 4 .binary 00001130 - .data + .data 0x811AE7D0 .data 4 .binary 0000007d - .data + .data 0x811AE83C .data 4 .binary 0003d090 - .data + .data 0x811AE860 .data 4 .binary 00000064 - .data + .data 0x811AEAA0 .data 4 .binary 000005dc - .data + .data 0x811AEAC4 .data 4 .binary 00000d7a - .data + .data 0x811AEAE8 .data 4 .binary 0000054b - .data + .data 0x811AEB0C .data 4 .binary 00000564 - .data + .data 0x811AEB30 .data 4 .binary 0000053c - .data + .data 0x811AEB54 .data 4 .binary 00000681 - .data + .data 0x811AEB78 .data 4 .binary 000005c3 - .data + .data 0x811AEB9C .data 4 .binary 000005eb - .data + .data 0x811AEBC0 .data 4 .binary 00000636 - .data + .data 0x811AEBE4 .data 4 .binary 00000753 - .data + .data 0x811AEC08 .data 4 .binary 0000069f - .data + .data 0x811AEC2C .data 4 .binary 000006bd - .data + .data 0x811AEC50 .data 4 .binary 000006f4 diff --git a/system/client-functions.disabled/PsoPeepsEP2EXP10x.s b/system/client-functions.disabled/PsoPeepsEP2EXP10x.s index b5e118af..b1f8fb65 100644 --- a/system/client-functions.disabled/PsoPeepsEP2EXP10x.s +++ b/system/client-functions.disabled/PsoPeepsEP2EXP10x.s @@ -1,6 +1,5 @@ .meta key="PsoPeepsEP2EXP10x" .meta name="EP2 10x" -.meta client_flag="0x0000200000000000" .meta description="Sets EP2 enemy EXP\nto 10x for GC crossplay" .versions 3OE2 3OJ5 diff --git a/system/client-functions.disabled/PsoPeepsEP2EXP10xJP.s b/system/client-functions.disabled/PsoPeepsEP2EXP10xJP.s index 8104cfa2..f265fb3f 100644 --- a/system/client-functions.disabled/PsoPeepsEP2EXP10xJP.s +++ b/system/client-functions.disabled/PsoPeepsEP2EXP10xJP.s @@ -1,7 +1,5 @@ -.meta visibility="menu" .meta key="PsoPeepsEP2EXP10xJP" .meta name="EP2 10x" -.meta client_flag="0x0000200000000000" .meta description="Sets EP2 enemy EXP\nto 10x for GC crossplay" .versions 3OJ5 diff --git a/system/client-functions.disabled/PsoPeepsEP2EXP10xUS.s b/system/client-functions.disabled/PsoPeepsEP2EXP10xUS.s index daa53e12..c4676097 100644 --- a/system/client-functions.disabled/PsoPeepsEP2EXP10xUS.s +++ b/system/client-functions.disabled/PsoPeepsEP2EXP10xUS.s @@ -1,7 +1,6 @@ .meta visibility="menu" .meta key="PsoPeepsEP2EXP10xUS" .meta name="EP2 10x" -.meta client_flag="0x0000200000000000" .meta description="Sets EP2 enemy EXP\nto 10x for GC crossplay" .versions 3OE2 diff --git a/system/client-functions.disabled/PsoPeepsEP2EXP5x.s b/system/client-functions.disabled/PsoPeepsEP2EXP5x.s index e733adb8..011dc187 100644 --- a/system/client-functions.disabled/PsoPeepsEP2EXP5x.s +++ b/system/client-functions.disabled/PsoPeepsEP2EXP5x.s @@ -1,6 +1,5 @@ .meta key="PsoPeepsEP2EXP5x" .meta name="EP2 5x" -.meta client_flag="0x0000200000000000" .meta description="Sets EP2 enemy EXP\nto 5x for GC crossplay" .versions 3OE2 3OJ5 diff --git a/system/client-functions.disabled/PsoPeepsEP2EXP5xJP.s b/system/client-functions.disabled/PsoPeepsEP2EXP5xJP.s index 11013f78..e670dab0 100644 --- a/system/client-functions.disabled/PsoPeepsEP2EXP5xJP.s +++ b/system/client-functions.disabled/PsoPeepsEP2EXP5xJP.s @@ -1,7 +1,5 @@ -.meta visibility="menu" .meta key="PsoPeepsEP2EXP5xJP" .meta name="EP2 5x" -.meta client_flag="0x0000200000000000" .meta description="Sets EP2 enemy EXP\nto 5x for GC crossplay" .versions 3OJ5 diff --git a/system/client-functions.disabled/PsoPeepsEP2EXP5xUS.s b/system/client-functions.disabled/PsoPeepsEP2EXP5xUS.s index 6fa1a39c..23304369 100644 --- a/system/client-functions.disabled/PsoPeepsEP2EXP5xUS.s +++ b/system/client-functions.disabled/PsoPeepsEP2EXP5xUS.s @@ -1,7 +1,6 @@ .meta visibility="menu" .meta key="PsoPeepsEP2EXP5xUS" .meta name="EP2 5x" -.meta client_flag="0x0000200000000000" .meta description="Sets EP2 enemy EXP\nto 5x for GC crossplay" .versions 3OE2 diff --git a/system/patch-pc-10x/Media/PSO/BattleParamEntry.dat b/system/patch-pc-10x/Media/PSO/BattleParamEntry.dat new file mode 100644 index 00000000..21706618 Binary files /dev/null and b/system/patch-pc-10x/Media/PSO/BattleParamEntry.dat differ diff --git a/system/patch-pc-10x/Media/PSO/BattleParamEntry_on.dat b/system/patch-pc-10x/Media/PSO/BattleParamEntry_on.dat new file mode 100644 index 00000000..f3406430 Binary files /dev/null and b/system/patch-pc-10x/Media/PSO/BattleParamEntry_on.dat differ diff --git a/system/patch-pc-10x/Media/PSO/newserv-test-pc.txt b/system/patch-pc-10x/Media/PSO/newserv-test-pc.txt new file mode 100644 index 00000000..d872b3ae --- /dev/null +++ b/system/patch-pc-10x/Media/PSO/newserv-test-pc.txt @@ -0,0 +1 @@ +This file exists to test the patch download system. \ No newline at end of file diff --git a/system/patch-pc-5x/.metadata-cache.json b/system/patch-pc-5x/.metadata-cache.json new file mode 100644 index 00000000..9097535f --- /dev/null +++ b/system/patch-pc-5x/.metadata-cache.json @@ -0,0 +1 @@ +{"./Media/PSO/BattleParamEntry.dat":[62976,1777951677030279266,217294441,[333854591,3127350609,1651077234]],"./Media/PSO/newserv-test-pc.txt":[51,1777951677024279220,3510656944,[3510656944]],"./Media/PSO/BattleParamEntry_on.dat":[62976,1777951677030279246,2007581284,[3877699156,780358345,290569120]]} \ No newline at end of file diff --git a/system/patch-pc-5x/Media/PSO/BattleParamEntry.dat b/system/patch-pc-5x/Media/PSO/BattleParamEntry.dat new file mode 100644 index 00000000..a31d7825 Binary files /dev/null and b/system/patch-pc-5x/Media/PSO/BattleParamEntry.dat differ diff --git a/system/patch-pc-5x/Media/PSO/BattleParamEntry_on.dat b/system/patch-pc-5x/Media/PSO/BattleParamEntry_on.dat new file mode 100644 index 00000000..23b2f66a Binary files /dev/null and b/system/patch-pc-5x/Media/PSO/BattleParamEntry_on.dat differ diff --git a/system/patch-pc-5x/Media/PSO/newserv-test-pc.txt b/system/patch-pc-5x/Media/PSO/newserv-test-pc.txt new file mode 100644 index 00000000..d872b3ae --- /dev/null +++ b/system/patch-pc-5x/Media/PSO/newserv-test-pc.txt @@ -0,0 +1 @@ +This file exists to test the patch download system. \ No newline at end of file