WiiUDownloader/gtitles.go
2023-07-18 12:27:23 +02:00

70 lines
1.5 KiB
Go

package wiiudownloader
/*
#cgo CFLAGS: -I${SRCDIR}/gtitles
#cgo LDFLAGS: -Wl,-rpath,${SRCDIR}/gtitles
#cgo LDFLAGS: -L${SRCDIR}/gtitles
#cgo LDFLAGS: -lgtitles
#include <gtitles.h>
#include <ctype.h>
*/
import "C"
import "unsafe"
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 = 0
TITLE_KEY_nintendo = 1
TITLE_KEY_test = 2
TITLE_KEY_1234567890 = 3
TITLE_KEY_Lucy131211 = 4
TITLE_KEY_fbf10 = 5
TITLE_KEY_5678 = 6
TITLE_KEY_1234 = 7
TITLE_KEY_ = 8
TITLE_KEY_MAGIC = 9
)
const (
TITLE_CATEGORY_GAME = 0
TITLE_CATEGORY_UPDATE = 1
TITLE_CATEGORY_DLC = 2
TITLE_CATEGORY_DEMO = 3
TITLE_CATEGORY_ALL = 4
TITLE_CATEGORY_DISC = 5
)
type TitleEntry struct {
name string
titleID uint64
region uint8
key uint8
}
func getTitleEntries(category uint8) []TitleEntry {
entriesSize := getTitleEntriesSize(category)
entriesSlice := make([]TitleEntry, entriesSize)
cEntries := C.getTitleEntries(C.TITLE_CATEGORY(category))
cSlice := (*[1 << 28]C.TitleEntry)(unsafe.Pointer(cEntries))[:entriesSize:entriesSize]
for i := 0; i < entriesSize; i++ {
entriesSlice[i] = TitleEntry{
name: C.GoString(cSlice[i].name),
titleID: uint64(cSlice[i].tid),
region: uint8(cSlice[i].region),
key: uint8(cSlice[i].key),
}
}
return entriesSlice
}
func getTitleEntriesSize(category uint8) int {
return int(C.getTitleEntriesSize(C.TITLE_CATEGORY(category)))
}