From 1a44cf70534a8f2421664224de4788dcc4b82176 Mon Sep 17 00:00:00 2001 From: EmeraldLockdown <86802223+EmeraldLoc@users.noreply.github.com> Date: Mon, 2 Mar 2026 22:17:58 -0600 Subject: [PATCH] modify `gOverrideEeprom` --- src/pc/network/network.c | 9 +++++---- .../packets/packet_download_save_files.c | 5 ++++- src/pc/network/packets/packet_join.c | 19 +------------------ src/pc/ultra_reimplementation.c | 15 +++++---------- 4 files changed, 15 insertions(+), 33 deletions(-) diff --git a/src/pc/network/network.c b/src/pc/network/network.c index 31f880991..c4b581d27 100644 --- a/src/pc/network/network.c +++ b/src/pc/network/network.c @@ -34,6 +34,7 @@ #include "game/first_person_cam.h" #include "game/envfx_snow.h" #include "game/mario.h" +#include "game/save_file.h" #include "engine/math_util.h" #include "engine/lighting_engine.h" #include "src/audio/load.h" @@ -169,8 +170,8 @@ bool network_init(enum NetworkType inNetworkType, bool reconnecting) { dynos_behavior_hook_all_custom_behaviors(); network_player_connected(NPT_LOCAL, 0, configPlayerModel, &configPlayerPalette, configPlayerName, get_local_discord_id()); - extern u8* gOverrideEeprom; - gOverrideEeprom = NULL; + extern u8* gOverrideEeprom[NUM_SAVE_FILES]; + memset(gOverrideEeprom, 0, sizeof(gOverrideEeprom)); if (gCurrLevelNum != (s16)gLevelValues.entryLevel) { extern s16 gChangeLevelTransition; @@ -705,8 +706,8 @@ void network_shutdown(bool sendLeaving, bool exiting, bool popup, bool reconnect dynos_model_clear_pool(MODEL_POOL_SESSION); // reset other stuff - extern u8* gOverrideEeprom; - gOverrideEeprom = NULL; + extern u8* gOverrideEeprom[NUM_SAVE_FILES]; + memset(gOverrideEeprom, 0, sizeof(gOverrideEeprom)); extern u8 gOverrideFreezeCamera; gOverrideFreezeCamera = false; gDjuiHudLockMouse = false; diff --git a/src/pc/network/packets/packet_download_save_files.c b/src/pc/network/packets/packet_download_save_files.c index 1dafb1383..9f9d738db 100644 --- a/src/pc/network/packets/packet_download_save_files.c +++ b/src/pc/network/packets/packet_download_save_files.c @@ -4,7 +4,7 @@ #include "game/save_file.h" #include "pc/debuglog.h" -extern u8* gOverrideEeprom; +extern u8* gOverrideEeprom[NUM_SAVE_FILES]; static u8 eeprom[NUM_SAVE_FILES][EEPROM_SIZE] = { 0 }; static int filledEepromData = 0; static int chunks = (NUM_SAVE_FILES * EEPROM_SIZE + (PACKET_LENGTH - 8) - 1) / (PACKET_LENGTH - 8); @@ -86,6 +86,9 @@ void network_receive_download_save(struct Packet* p) { } if (filledEepromData == NUM_SAVE_FILES * EEPROM_SIZE) { + for (int i = 0; i < NUM_SAVE_FILES; i++) { + gOverrideEeprom[i] = eeprom[i]; + } filledEepromData = 0; network_send_join_request(); } else if (filledEepromData > NUM_SAVE_FILES * EEPROM_SIZE) { diff --git a/src/pc/network/packets/packet_join.c b/src/pc/network/packets/packet_join.c index 8895e9af3..3cf5700c7 100644 --- a/src/pc/network/packets/packet_join.c +++ b/src/pc/network/packets/packet_join.c @@ -27,10 +27,7 @@ #include "pc/configfile.h" #include "pc/lua/utils/smlua_misc_utils.h" -extern u8* gOverrideEeprom; -static u8 eeprom[EEPROM_SIZE] = { 0 }; - -static u8 sJoinRequestPlayerModel; +static u8 sJoinRequestPlayerModel; static struct PlayerPalette sJoinRequestPlayerPalette; static char sJoinRequestPlayerName[MAX_CONFIG_STRING]; static char sJoinRequestDiscordId[64]; @@ -40,7 +37,6 @@ void network_send_join_request(void) { SOFT_ASSERT(gNetworkType == NT_CLIENT); gNetworkSentJoin = true; - gOverrideEeprom = eeprom; struct Packet p = { 0 }; packet_init(&p, PACKET_JOIN_REQUEST, true, PLMT_NONE); @@ -99,15 +95,6 @@ void network_send_join(struct Packet* joinRequestPacket) { // do connection event network_player_connected(NPT_CLIENT, globalIndex, sJoinRequestPlayerModel, &sJoinRequestPlayerPalette, sJoinRequestPlayerName, sJoinRequestDiscordId); - - char filePath[256]; - save_file_get_dir(gCurrSaveFileNum - 1, filePath, 256, NULL); - fs_file_t* fp = fs_open(filePath); - if (fp != NULL) { - fs_read(fp, eeprom, EEPROM_SIZE); - fs_close(fp); - } - char version[MAX_VERSION_LENGTH] = { 0 }; snprintf(version, MAX_VERSION_LENGTH, "%s", get_version()); LOG_INFO("sending version: %s", version); @@ -128,7 +115,6 @@ void network_send_join(struct Packet* joinRequestPacket) { packet_write(&p, &gServerSettings.maxPlayers, sizeof(u8)); packet_write(&p, &gServerSettings.pauseAnywhere, sizeof(u8)); packet_write(&p, &gServerSettings.pvpType, sizeof(u8)); - packet_write(&p, eeprom, sizeof(u8) * EEPROM_SIZE); network_send_to(globalIndex, &p); LOG_INFO("sending join packet"); @@ -142,8 +128,6 @@ void network_receive_join(struct Packet* p) { LOG_INFO("received join packet"); gCurrentlyJoining = true; - gOverrideEeprom = eeprom; - char version[MAX_VERSION_LENGTH] = { 0 }; snprintf(version, MAX_VERSION_LENGTH, "%s", get_version()); LOG_INFO("client has version: %s", version); @@ -181,7 +165,6 @@ void network_receive_join(struct Packet* p) { packet_read(p, &gServerSettings.maxPlayers, sizeof(u8)); packet_read(p, &gServerSettings.pauseAnywhere, sizeof(u8)); packet_read(p, &gServerSettings.pvpType, sizeof(u8)); - packet_read(p, eeprom, sizeof(u8) * EEPROM_SIZE); network_player_connected(NPT_SERVER, 0, 0, &DEFAULT_MARIO_PALETTE, "Player", "0"); network_player_connected(NPT_LOCAL, myGlobalIndex, configPlayerModel, &configPlayerPalette, configPlayerName, get_local_discord_id()); diff --git a/src/pc/ultra_reimplementation.c b/src/pc/ultra_reimplementation.c index 9db65fef0..dccc55cd6 100644 --- a/src/pc/ultra_reimplementation.c +++ b/src/pc/ultra_reimplementation.c @@ -6,7 +6,7 @@ #include "fs/fs.h" #include "game/save_file.h" -u8* gOverrideEeprom = NULL; +u8* gOverrideEeprom[NUM_SAVE_FILES] = { NULL }; extern OSMgrArgs piMgrArgs; @@ -126,11 +126,6 @@ s32 osEepromProbe(UNUSED OSMesgQueue *mq) { } s32 osEepromLongReadLegacy(UNUSED OSMesgQueue *mq, u8 address, u8 *buffer, int nbytes) { - if (gOverrideEeprom != NULL) { - memcpy(buffer, gOverrideEeprom + address * 8, nbytes); - return 0; - } - u8 content[512]; s32 ret = -1; @@ -148,8 +143,8 @@ s32 osEepromLongReadLegacy(UNUSED OSMesgQueue *mq, u8 address, u8 *buffer, int n } s32 osEepromLongRead(UNUSED OSMesgQueue *mq, u8 fileIndex, u8 address, u8 *buffer, int nbytes) { - if (gOverrideEeprom != NULL) { - memcpy(buffer, gOverrideEeprom + address * 8, nbytes); + if (gOverrideEeprom[fileIndex] != NULL) { + memcpy(buffer, gOverrideEeprom[fileIndex] + address * 8, nbytes); return 0; } @@ -172,8 +167,8 @@ s32 osEepromLongRead(UNUSED OSMesgQueue *mq, u8 fileIndex, u8 address, u8 *buffe } s32 osEepromLongWrite(UNUSED OSMesgQueue *mq, u8 fileIndex, u8 address, u8 *buffer, int nbytes) { - if (gOverrideEeprom != NULL) { - memcpy(gOverrideEeprom + address * 8, buffer, nbytes); + if (gOverrideEeprom[fileIndex] != NULL) { + memcpy(gOverrideEeprom[fileIndex] + address * 8, buffer, nbytes); return 0; }