Split and fix SMDH match maker IDs.

This commit is contained in:
Steveice10 2019-03-02 17:09:06 -08:00
parent c421c16cd3
commit 82b49e9102
2 changed files with 10 additions and 8 deletions

View File

@ -76,7 +76,8 @@ typedef struct {
typedef struct { typedef struct {
u8 gameRatings[SMDH_NUM_RATING_SLOTS]; u8 gameRatings[SMDH_NUM_RATING_SLOTS];
u32 regionLock; u32 regionLock;
u8 matchMakerId[0xC]; u32 matchMakerId;
u64 matchMakerBitId;
u32 flags; u32 flags;
u16 eulaVersion; u16 eulaVersion;
u16 reserved1; u16 reserved1;
@ -95,4 +96,4 @@ typedef struct {
u16 largeIcon[SMDH_LARGE_ICON_SIZE * SMDH_LARGE_ICON_SIZE]; u16 largeIcon[SMDH_LARGE_ICON_SIZE * SMDH_LARGE_ICON_SIZE];
} SMDH; } SMDH;
#endif #endif

View File

@ -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(" -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(" 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(" -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(" -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(" -obf/--optimalbannerframe: Optional. Optimal frame of the accompanying banner.\n");
printf(" -spid/--streetpassid: Optional. Streetpass ID of the SMDH.\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()); smdh.settings.matchMakerId = (u32) atoi(cmd_find_arg(args, "mmid", "matchmakerid", "0").c_str());
memcpy(smdh.settings.matchMakerId, &matchMakerId, 0xC); 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.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.optimalBannerFrame = (u32) atoi(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.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_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()); 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 input = cmd_find_arg(args, "i", "input", "");
const std::string output = cmd_find_arg(args, "o", "output", ""); const std::string output = cmd_find_arg(args, "o", "output", "");
std::string loop = cmd_find_arg(args, "l", "loop", "false"); std::string loop = cmd_find_arg(args, "l", "loop", "false");
u32 loopStartFrame = (u32) atol(cmd_find_arg(args, "s", "loopstartframe", "0").c_str()); u32 loopStartFrame = (u32) atoi(cmd_find_arg(args, "s", "loopstartframe", "0").c_str());
u32 loopEndFrame = (u32) atol(cmd_find_arg(args, "e", "loopendframe", "0").c_str()); u32 loopEndFrame = (u32) atoi(cmd_find_arg(args, "e", "loopendframe", "0").c_str());
if(input.empty() || output.empty()) { if(input.empty() || output.empty()) {
cmd_missing_args(command); cmd_missing_args(command);
return -1; return -1;