From 82b49e9102b6e42c8bb89d06f050c0f14e9556b8 Mon Sep 17 00:00:00 2001 From: Steveice10 <1269164+Steveice10@users.noreply.github.com> Date: Sat, 2 Mar 2019 17:09:06 -0800 Subject: [PATCH] Split and fix SMDH match maker IDs. --- source/3ds/smdh.h | 5 +++-- source/cmd.cpp | 13 +++++++------ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/source/3ds/smdh.h b/source/3ds/smdh.h index 818d8e6..074fe68 100644 --- a/source/3ds/smdh.h +++ b/source/3ds/smdh.h @@ -76,7 +76,8 @@ typedef struct { typedef struct { u8 gameRatings[SMDH_NUM_RATING_SLOTS]; u32 regionLock; - u8 matchMakerId[0xC]; + u32 matchMakerId; + u64 matchMakerBitId; u32 flags; u16 eulaVersion; u16 reserved1; @@ -95,4 +96,4 @@ typedef struct { u16 largeIcon[SMDH_LARGE_ICON_SIZE * SMDH_LARGE_ICON_SIZE]; } SMDH; -#endif \ No newline at end of file +#endif diff --git a/source/cmd.cpp b/source/cmd.cpp index f31857f..9f74654 100644 --- a/source/cmd.cpp +++ b/source/cmd.cpp @@ -504,6 +504,7 @@ static void cmd_print_info(const std::string& command) { printf(" -f/--flags: Optional. Flags to apply to the SMDH file.\n"); printf(" Valid flags: visible, autoboot, allow3d, requireeula, autosave, extendedbanner, ratingrequired, savedata, recordusage, nosavebackups, new3ds.\n"); printf(" -mmid/--matchmakerid: Optional. Match maker ID of the SMDH.\n"); + printf(" -mmbid/--matchmakerbitid: Optional. Match maker BIT ID of the SMDH.\n"); printf(" -ev/--eulaversion: Optional. Version of the EULA required to be accepted before launching.\n"); printf(" -obf/--optimalbannerframe: Optional. Optimal frame of the accompanying banner.\n"); printf(" -spid/--streetpassid: Optional. Streetpass ID of the SMDH.\n"); @@ -709,12 +710,12 @@ int cmd_process_command(int argc, char* argv[]) { } } - u64 matchMakerId = (u64) atoll(cmd_find_arg(args, "mmid", "matchmakerid", "0").c_str()); - memcpy(smdh.settings.matchMakerId, &matchMakerId, 0xC); + smdh.settings.matchMakerId = (u32) atoi(cmd_find_arg(args, "mmid", "matchmakerid", "0").c_str()); + smdh.settings.matchMakerBitId = (u64) atoll(cmd_find_arg(args, "mmbid", "matchmakerbitid", "0").c_str()); smdh.settings.eulaVersion = (u16) atoi(cmd_find_arg(args, "ev", "eulaversion", "0").c_str()); - smdh.settings.optimalBannerFrame = (u32) atoll(cmd_find_arg(args, "obf", "optimalbannerframe", "0").c_str()); - smdh.settings.streetpassId = (u32) atoll(cmd_find_arg(args, "spid", "streetpassid", "0").c_str()); + smdh.settings.optimalBannerFrame = (u32) atoi(cmd_find_arg(args, "obf", "optimalbannerframe", "0").c_str()); + smdh.settings.streetpassId = (u32) atoi(cmd_find_arg(args, "spid", "streetpassid", "0").c_str()); smdh.settings.gameRatings[SMDH_RATING_CERO] = (u8) atoi(cmd_find_arg(args, "cer", "cero", "0").c_str()); smdh.settings.gameRatings[SMDH_RATING_ESRB] = (u8) atoi(cmd_find_arg(args, "er", "esrb", "0").c_str()); @@ -731,8 +732,8 @@ int cmd_process_command(int argc, char* argv[]) { const std::string input = cmd_find_arg(args, "i", "input", ""); const std::string output = cmd_find_arg(args, "o", "output", ""); std::string loop = cmd_find_arg(args, "l", "loop", "false"); - u32 loopStartFrame = (u32) atol(cmd_find_arg(args, "s", "loopstartframe", "0").c_str()); - u32 loopEndFrame = (u32) atol(cmd_find_arg(args, "e", "loopendframe", "0").c_str()); + u32 loopStartFrame = (u32) atoi(cmd_find_arg(args, "s", "loopstartframe", "0").c_str()); + u32 loopEndFrame = (u32) atoi(cmd_find_arg(args, "e", "loopendframe", "0").c_str()); if(input.empty() || output.empty()) { cmd_missing_args(command); return -1;