WiiUDownloader/gtitles.go
2024-06-20 15:46:15 +02:00

136 lines
2.8 KiB
Go

package wiiudownloader
const (
MCP_REGION_JAPAN = 0x01
MCP_REGION_USA = 0x02
MCP_REGION_EUROPE = 0x04
MCP_REGION_CHINA = 0x10
MCP_REGION_KOREA = 0x20
MCP_REGION_TAIWAN = 0x40
)
const (
TITLE_KEY_mypass = iota
TITLE_KEY_nintendo
TITLE_KEY_test
TITLE_KEY_1234567890
TITLE_KEY_Lucy131211
TITLE_KEY_fbf10
TITLE_KEY_5678
TITLE_KEY_1234
TITLE_KEY_
TITLE_KEY_MAGIC
)
const (
TITLE_CATEGORY_GAME = iota
TITLE_CATEGORY_UPDATE
TITLE_CATEGORY_DLC
TITLE_CATEGORY_DEMO
TITLE_CATEGORY_ALL
TITLE_CATEGORY_DISC
)
const (
TID_HIGH_GAME = 0x00050000
TID_HIGH_DEMO = 0x00050002
TID_HIGH_SYSTEM_APP = 0x00050010
TID_HIGH_SYSTEM_DATA = 0x0005001B
TID_HIGH_SYSTEM_APPLET = 0x00050030
TID_HIGH_VWII_IOS = 0x00000007
TID_HIGH_VWII_SYSTEM_APP = 0x00070002
TID_HIGH_VWII_SYSTEM = 0x00070008
TID_HIGH_DLC = 0x0005000C
TID_HIGH_UPDATE = 0x0005000E
)
func GetTitleEntries(category uint8) []TitleEntry {
titleEntries := make([]TitleEntry, 0)
for _, entry := range titleEntry {
if category == TITLE_CATEGORY_ALL || category == entry.Category {
if entry.Category == TITLE_CATEGORY_DISC {
continue
}
titleEntries = append(titleEntries, entry)
}
}
return titleEntries
}
func GetFormattedRegion(region uint8) string {
if region&MCP_REGION_EUROPE != 0 {
if region&MCP_REGION_USA != 0 {
if region&MCP_REGION_JAPAN != 0 {
return "All"
}
return "USA/Europe"
}
if region&MCP_REGION_JAPAN != 0 {
return "Europe/Japan"
}
return "Europe"
}
if region&MCP_REGION_USA != 0 {
if region&MCP_REGION_JAPAN != 0 {
return "USA/Japan"
}
return "USA"
}
if region&MCP_REGION_JAPAN != 0 {
return "Japan"
}
return "Unknown"
}
func GetFormattedKind(titleID uint64) string {
switch titleID >> 32 {
case TID_HIGH_GAME:
return "Game"
case TID_HIGH_DEMO:
return "Demo"
case TID_HIGH_SYSTEM_APP:
return "System App"
case TID_HIGH_SYSTEM_DATA:
return "System Data"
case TID_HIGH_SYSTEM_APPLET:
return "System Applet"
case TID_HIGH_VWII_IOS:
return "vWii IOS"
case TID_HIGH_VWII_SYSTEM_APP:
return "vWii System App"
case TID_HIGH_VWII_SYSTEM:
return "vWii System"
case TID_HIGH_DLC:
return "DLC"
case TID_HIGH_UPDATE:
return "Update"
default:
return "Unknown"
}
}
func GetCategoryFromFormattedCategory(formattedCategory string) uint8 {
switch formattedCategory {
case "Game":
return TITLE_CATEGORY_GAME
case "Update":
return TITLE_CATEGORY_UPDATE
case "DLC":
return TITLE_CATEGORY_DLC
case "Demo":
return TITLE_CATEGORY_DEMO
case "All":
return TITLE_CATEGORY_ALL
default:
return TITLE_CATEGORY_ALL
}
}
func GetTitleEntryFromTid(tid uint64) TitleEntry {
for _, entry := range GetTitleEntries(TITLE_CATEGORY_ALL) {
if entry.TitleID == tid {
return entry
}
}
return TitleEntry{}
}