Compare commits

...

4 Commits

Author SHA1 Message Date
thepikachugamer d2e95f3a0d
Merge 0cf8c31447 into 608d954afe 2024-04-18 11:56:46 -04:00
thepikachugamer 608d954afe
Merge pull request #10 from MikeIsAStar/handle-all-known-product-areas
Handle all known product areas
2024-03-22 22:31:15 -05:00
MikeIsAStar 13dd003f3d Handle all known product areas 2024-03-16 17:41:48 -04:00
Naim2000 0cf8c31447 fix compilation issues on latest libogc & ppc-mxml 2023-10-25 17:33:03 -05:00
3 changed files with 30 additions and 31 deletions

View File

@ -4,38 +4,36 @@
#include "appmetadata.h" #include "appmetadata.h"
static char* GetStringValue(mxml_node_t* node, const char* element) static const char* GetStringValue(mxml_node_t* node, const char* element)
{ {
mxml_node_t* elementNode = mxmlFindElement(node, node, element, NULL, NULL, MXML_DESCEND_FIRST); mxml_node_t* elementNode = mxmlFindElement(node, node, element, NULL, NULL, MXML_DESCEND_FIRST);
if (!elementNode) return NULL;
if (elementNode)
{
mxml_node_t* current = elementNode->child;
while (current && current->type != MXML_OPAQUE) mxml_node_t* current = mxmlGetFirstChild(elementNode);
current = mxmlWalkNext(current, elementNode, MXML_NO_DESCEND);
while (current && mxmlGetType(current) != MXML_OPAQUE)
current = mxmlWalkNext(current, elementNode, MXML_NO_DESCEND);
if (current)
return mxmlGetOpaque(current);
else
return NULL;
if (current->type == MXML_OPAQUE)
return current->value.opaque;
}
return NULL;
} }
static char* GetArgumentValue(mxml_node_t* node) static const char* GetArgumentValue(mxml_node_t* node)
{ {
if (node) if (!node) return NULL;
{
mxml_node_t* current = node->child;
while (current && current->type != MXML_OPAQUE) mxml_node_t* current = mxmlGetFirstChild(node);
current = mxmlWalkNext(current, node, MXML_NO_DESCEND);
if (current->type == MXML_OPAQUE) while (current && mxmlGetType(current) != MXML_OPAQUE)
return current->value.opaque; current = mxmlWalkNext(current, node, MXML_NO_DESCEND);
}
return NULL; if (current)
return mxmlGetOpaque(current);
else
return NULL;
} }
struct MetaData* LoadMetaData(const char* path) struct MetaData* LoadMetaData(const char* path)
@ -142,7 +140,7 @@ char* LoadArguments(const char* path, u16* length)
for (arg = mxmlFindElement(arguments, arguments, "arg", NULL, NULL, MXML_DESCEND_FIRST); arg != NULL; arg = mxmlFindElement(arg, arguments, "arg", NULL, NULL, MXML_NO_DESCEND)) for (arg = mxmlFindElement(arguments, arguments, "arg", NULL, NULL, MXML_DESCEND_FIRST); arg != NULL; arg = mxmlFindElement(arg, arguments, "arg", NULL, NULL, MXML_NO_DESCEND))
{ {
char* current = GetArgumentValue(arg); const char* current = GetArgumentValue(arg);
if (current) if (current)
{ {
@ -165,7 +163,7 @@ char* LoadArguments(const char* path, u16* length)
for (arg = mxmlFindElement(arguments, arguments, "arg", NULL, NULL, MXML_DESCEND_FIRST); arg != NULL; arg = mxmlFindElement(arg, arguments, "arg", NULL, NULL, MXML_NO_DESCEND)) for (arg = mxmlFindElement(arguments, arguments, "arg", NULL, NULL, MXML_DESCEND_FIRST); arg != NULL; arg = mxmlFindElement(arg, arguments, "arg", NULL, NULL, MXML_NO_DESCEND))
{ {
char* current = GetArgumentValue(arg); const char* current = GetArgumentValue(arg);
if (current) if (current)
{ {
@ -186,4 +184,4 @@ char* LoadArguments(const char* path, u16* length)
*length = size; *length = size;
return argStr; return argStr;
} }

View File

@ -61,7 +61,7 @@ s32 Title_FakesignTMD(signed_blob *p_tmd)
sha1 hash; sha1 hash;
/* Modify TMD fill field */ /* Modify TMD fill field */
tmd_data->fill2 = fill; tmd_data->fill3 = fill;
/* Calculate hash */ /* Calculate hash */
SHA1((u8 *)tmd_data, TMD_SIZE(tmd_data), hash); SHA1((u8 *)tmd_data, TMD_SIZE(tmd_data), hash);

View File

@ -185,16 +185,17 @@ static bool GetRegionFromTXT(char* region)
{ {
start++; start++;
if (!strncmp(start, "JPN", 3)) if (!strncmp(start, "JPN", 3) || !strncmp(start, "TWN", 3) || !strncmp(start, "ROC", 3))
*region = 'J'; *region = 'J';
else if (!strncmp(start, "TWN", 3)) else if (!strncmp(start, "USA", 3) || !strncmp(start, "BRA", 3) || !strncmp(start, "HKG", 3) ||
*region = 'J'; !strncmp(start, "ASI", 3) || !strncmp(start, "LTN", 3) || !strncmp(start, "SAF", 3))
else if (!strncmp(start, "USA", 3))
*region = 'U'; *region = 'U';
else if (!strncmp(start, "EUR", 3)) else if (!strncmp(start, "EUR", 3) || !strncmp(start, "AUS", 3))
*region = 'E'; *region = 'E';
else if (!strncmp(start, "KOR", 3)) else if (!strncmp(start, "KOR", 3))
*region = 'K'; *region = 'K';
else if (!strncmp(start, "CHN", 3))
printf("Error! GetRegionFromTXT: Unhandled product area \"CHN\"!\n");
if (*region != 0) if (*region != 0)
{ {