*Added Forwarder source to the Branch
10
HBC/META.XML
@ -1,10 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<app version="1">
|
||||
<name>USB Loader GX</name>
|
||||
<coder>USB Loader GX Team</coder>
|
||||
<version>1.0</version>
|
||||
<release_date>20090118030000</release_date>
|
||||
<short_description>Loads games from USB-devices</short_description>
|
||||
<long_description>USB Loader GX is a libwiigui based USB iso loader with a wii-like GUI. You can install games to your HDDs and boot them with shorter loading times. The interactive GUI is completely controllable with WiiMote, Classic Controller or GC Controller. Features are automatic widescreen detection, coverdownload, parental control, theme support and many more.
|
||||
Coders: dimok/nIxx/cyrex/giantpune/Hungyip84/NeoRame/WiiShizzza/ardi.</long_description>
|
||||
</app>
|
BIN
HBC/icon.png
Before Width: | Height: | Size: 7.8 KiB |
173
Languages/danish
@ -1,173 +0,0 @@
|
||||
Specialthanksto = Special tak til
|
||||
Favorite = Favorit
|
||||
t3Coverst = 3D Covers
|
||||
AppLanguage = Program Sprog
|
||||
Areyousure = Er du sikker?
|
||||
AutoPatch = AutoPatch
|
||||
Keyboard = Tastatur
|
||||
Back = Tilbage
|
||||
Backgroundmusic = Baggrunds musik
|
||||
BacktoHBCorWiiMenu = Tilbage til HBC eller Wii Menu
|
||||
BacktoLoader = Tilbage til Loaderen
|
||||
BacktoWiiMenu = Tilbage til HBC
|
||||
BootStandard = Boot/Standard
|
||||
BothBoth = Begge
|
||||
Cantcreatedirectory = Kan ikke lave ny mappe
|
||||
Cancel = Annullere
|
||||
Cantbeformated = Kan ikke formatteres
|
||||
Cantdelete = Kan ikke slettes:
|
||||
ClicktoDownloadCovers = Klik for at Downloade Covers
|
||||
Clock = Klokke
|
||||
Continueinstallgame = Vil du blive ved med at installere spillet?
|
||||
ConsoleDefault = Konsol Standard
|
||||
Consoleshouldbeunlockedtomodifyit = Konsol skal være låst op for ændre dette.
|
||||
ConsoleLocked = Konsol låst
|
||||
CorrectPassword = Korrekt Password
|
||||
Couldnotinitializenetwork = Kunne ikke initialisere netværk!
|
||||
CouldnotopenDisc = Kunne ikke åbne dvd
|
||||
CouldnotinitializeDIPmodule = Kunne ikke initialisere DIP module!
|
||||
CoverDownload = Cover Download
|
||||
CoverPath = Cover Sti
|
||||
CoverpathChanged = CoverSti Ændret
|
||||
Coverpathchange = CoverSti Ændringer
|
||||
Credits = Lavet af:
|
||||
DiscImages = Dvdbilleder
|
||||
DiscimagePath = Dvdbilleder sti
|
||||
DiscpathChanged = DvdSti Ændret
|
||||
Discpathchange = DvdSti ændringer
|
||||
DiscDefault = Spillets standard
|
||||
Display = Skærm
|
||||
Doyouwanttoformat = Vil du formattere?:
|
||||
Doyoureallywanttodelete = Vil du virkelig slette:
|
||||
Doyouwanttoretryfor30secs = Vil du prøve igen?
|
||||
Downloadingfile = Downloader fil:
|
||||
DownloadBoxartimage = Downloade Boxart billede?
|
||||
Downloadfinished = Download færdig
|
||||
Error = Fejl!
|
||||
BOOTERROR = BOOT FEJL
|
||||
ErrorreadingDisc = Disken kunne ikke læses
|
||||
ExitUSBISOLoader = Afslut USB Loader GX?
|
||||
InitializingNetwork = Initialiserer Netværk
|
||||
InsertDisk = Indsæt en disk
|
||||
InsertaWiiDisc = Indsæt en wii disk!
|
||||
InsertaSDCardtodownloadimages = Indsæt et sd kort for at downloade billeder.
|
||||
InsertaSDCardtosave = Indsæt et sd kort for at gemme.
|
||||
InstallRenameandDeleteareunlocked = Alle USB Loader GX's funktioner er låst op.
|
||||
Installerror = Installations fejl!
|
||||
Installagame = Installer et spil?
|
||||
Installinggame = Installerer spillet:
|
||||
Failedtoboot = Kunne ikke start op:
|
||||
FailedtomountfrontSDcard = Kunne ikke montere sd kort
|
||||
FailedtosetUSB = Kunne ikke sætte usb:
|
||||
Failedformating = Formatteringen mislykkedes
|
||||
filesnotfoundontheserver = Filerne blev ikke fundet på serveren!
|
||||
filesleft = Fil(er) tilbage
|
||||
FlipX = Flip-X
|
||||
Force = Tving
|
||||
Youneedtoformatapartition = Du må formattere en partition
|
||||
Format = Format
|
||||
Formattingpleasewait = Formatterer, vent venligst...
|
||||
formated = Formatteret!
|
||||
free = ledig
|
||||
FreeSpace = Ledig plads
|
||||
FullShutdown = Fuld shutdown
|
||||
GameID = Spil ID
|
||||
Games = Spil
|
||||
Gameisalreadyinstalled = Dette spil er allerede installeret:
|
||||
GameRegion = Region
|
||||
GameSize = Spil størrelse
|
||||
GoBack = Gå tilbage
|
||||
//GotoPage = Gå til side
|
||||
HowtoShutdown = Hvordan skal den slukkes?
|
||||
Language = Sprog
|
||||
Langchange = Sprog skift
|
||||
Left = Venstre
|
||||
LikeSysMenu = Ligesom wii menu
|
||||
LoadingincIOS = Loader i cIOS249
|
||||
Lock = Lås
|
||||
LockConsole = Lås Konsol
|
||||
MP3Menu = MP3 Menu
|
||||
Missingfiles = Manglende filer
|
||||
Networkiniterror = Netværket kunne ikke intialiseres
|
||||
Next = Næste
|
||||
No = Nej
|
||||
Nofilemissing = Ingen filer mangler!
|
||||
NoHDDfound = Ingen HDD fundet!
|
||||
NoSDcardinserted = Intet SD-kort fundet!
|
||||
Nopartitionsfound = Ingen partitioner fundet
|
||||
NoUSBDevice = Intet USB apparat tilsluttet
|
||||
NoWBFSpartitionfound = Ingen WBFS partition fundet
|
||||
NormalCovers = Normale Covers
|
||||
Normal = Normal
|
||||
NotaWiiDisc = Ikke en Wii Disk
|
||||
NoUSBDevicefound = Intet USB apparat fundet.
|
||||
Notenoughfreespace = Ikke nok ledig plads!
|
||||
notset = Ikke sat
|
||||
of = af
|
||||
OFF = Fra
|
||||
OfficialSite = Officielle Side
|
||||
ok = OK
|
||||
ON = Til
|
||||
Parentalcontrol = Forælder kontrol
|
||||
Partition = Partition
|
||||
Password = Password
|
||||
PasswordChanged = Password Ændret
|
||||
Passwordhasbeenchanged = Passwordet er blevet ændret
|
||||
Passwordchange = Password skift
|
||||
PowerofftheWii = Sluk wii'en
|
||||
Prev = Forrig
|
||||
PromptsButtons = Prompts Buttons
|
||||
ReloadSD = Genindlæs SD
|
||||
RenameGameonWBFS = Omdøb spil på WBFS
|
||||
Restart = Genstart
|
||||
Return = Tilbage
|
||||
ReturntoWii = Vend tilbage til menuen
|
||||
Right = Højre
|
||||
Rumble = Vibration
|
||||
QuickBoot = Hurtig opstart
|
||||
Save = Gem
|
||||
SaveFailed = Gemningen mislykkedes
|
||||
Specialthanksto = Speciel tak til
|
||||
For = for
|
||||
theUSBLoaderandreleasingthesourcecodethe = og for at gøre deres source code tilgængelig
|
||||
secondsleft = Sekunder tilbage
|
||||
SelectthePartition = Vælg Partitionen
|
||||
youwanttoformat = du vil formatter
|
||||
settings = Indstillinger
|
||||
ShutdowntoIdle = Almindeligt
|
||||
ShutdownSystem = Sluk Totalt(Rødt lys)
|
||||
Success = Succes:
|
||||
Successfullyinstalled = Installationen lykkedes:
|
||||
Successfullydeleted = Sletningen lykkedes:
|
||||
SuccessfullySaved = Successfully Saved:
|
||||
SystemDefault = System standard
|
||||
ThemePath = TemaSti
|
||||
ThemepathChanged = TemaSti ændret
|
||||
Themepathchange = TemaSti æmdringer
|
||||
Try = Prøv
|
||||
Tooltips = Værktøjtips
|
||||
Timeleft = Tid tilbage:
|
||||
Unlock = Lås op
|
||||
Uninstall = Afinstaller
|
||||
USBLoaderisprotected = USB Loader GX er beskyttet
|
||||
USBapparatnotfound = USB apparat ikke fundet
|
||||
VideoMode = Video Mode
|
||||
VIDTVPatch = VIDTV Patch
|
||||
Volume = Lydstyrke
|
||||
Waiting = Venter.....
|
||||
WaitingforUSBapparat = Venter på USB apparat
|
||||
WidescreenFix = Widescreen Fix
|
||||
WiiMenu = Wii Menu
|
||||
WrongPassword = Forkert Password
|
||||
Yes = Ja
|
||||
YoudonthavecIOS = Du har ikke cIOS222
|
||||
Japanese = Japansk
|
||||
German = Tysk
|
||||
English = Engelsk
|
||||
French = Fransk
|
||||
Spanish = Spansk
|
||||
Italian = Italiensk
|
||||
Dutch = Nederlandsk
|
||||
SChinese = Simpelt Kinesisk
|
||||
TChinese = Tradionelt Kinesisk
|
||||
Korean = Koreansk
|
171
Languages/dutch
@ -1,171 +0,0 @@
|
||||
Specialthanksto = Speciale dank aan
|
||||
t3Covers = 3D hoesjes
|
||||
AppLanguage = Applicatietaal
|
||||
Areyousure = Zeker weten?
|
||||
AutoPatch = Automatisch patchen
|
||||
Back = Terug
|
||||
BacktoHBCorWiiMenu = Naar HBC of Wiimenu
|
||||
BacktoLoader = Naar Loader
|
||||
BacktoWiiMenu = Terug naar Wiimenu
|
||||
BootStandard = Boot/Standaard
|
||||
BothBoth = Beide
|
||||
Cantcreatedirectory = Kan map niet maken
|
||||
Cancel = Annuleren
|
||||
Cantbeformated = Kan niet formatteren
|
||||
Cantdelete = Kan niet verwijderen:
|
||||
ClicktoDownloadCovers = Klik om hoesjes te downloaden
|
||||
Clock = Klok
|
||||
Continueinstallgame = Installatie van spel voortzetten?
|
||||
ConsoleDefault = Consolestandaard
|
||||
Consoleshouldbeunlockedtomodifyit = Aanpassen vereist vrijgeven console
|
||||
ConsoleLocked = Console op slot
|
||||
CorrectPassword = Correct wachtwoord
|
||||
Couldnotinitializenetwork = Netwerk kan niet worden ingesteld
|
||||
CouldnotopenDisc = Schijf kan niet worden geopend
|
||||
CouldnotinitializeDIPmodule = DIP module kan niet worden ingesteld
|
||||
CoverDownload = Hoesjes downloaden
|
||||
CoverPath = Hoesjesmap
|
||||
CoverpathChanged = Hoesjesmap gewijzigd
|
||||
Coverpathchange = Hoesjesmap wijzigen
|
||||
Credits = Credits
|
||||
DiscImages = Discplaatjes
|
||||
DiscimagePath = Discplaatjesmap
|
||||
DiscpathChanged = Discplaatjesmap gewijzigd
|
||||
Discpathchange = Discplaatjesmap wijzigen
|
||||
DiscDefault = Discstandaard
|
||||
Display = Weergeven
|
||||
Doyouwanttoformat = Wil je dit formatteren:
|
||||
Doyoureallywanttodelete = Wil je dit echt verwijderen:
|
||||
Doyouwanttoretryfor30secs = 30 seconden lang opnieuw proberen?
|
||||
Downloadingfile = Bezig met downloaden:
|
||||
DownloadBoxartimage = Hoesjes downloaden?
|
||||
Downloadfinished = Downloaden voltooid
|
||||
Error = Fout!
|
||||
BOOTERROR = BOOT FOUT
|
||||
ErrorreadingDisc = Fout tijdens lezen van disc
|
||||
ExitUSBISOLoader = USB Loader GX afsluiten?
|
||||
InitializingNetwork = Netwerk instellen
|
||||
InsertDisk = Voer een schijf in
|
||||
InsertaWiiDisc = Voer een Wiischijf in
|
||||
InsertaSDCardtodownloadimages = Voer een SD-kaart in voor de plaatjes
|
||||
InsertaSDCardtosave = Voor een SD-kaart in voor het opslaan
|
||||
InstallRenameandDeleteareunlocked = Alle functies van de USB-loader zijn vrijgegeven
|
||||
Installerror = Installatiefout
|
||||
Installagame = Spel installeren
|
||||
Installinggame = Bezig met installeren:
|
||||
Failedtoboot = Fout tijdens laden van:
|
||||
FailedtomountfrontSDcard = Kan SD-kaart niet koppelen
|
||||
FailedtosetUSB = Kan USB niet instellen:
|
||||
Failedformating = Formatteren mislukt
|
||||
filesnotfoundontheserver = Bestanden niet gevonden op de server
|
||||
filesleft = bestanden resterend:
|
||||
FlipX = X wisselen
|
||||
Force = Afdwingen
|
||||
Youneedtoformatapartition = Je moet een partitie formatteren
|
||||
Format = Formatteren
|
||||
Formattingpleasewait = Bezig met formatteren, even geduld
|
||||
formated = geformatteerd!
|
||||
free = beschikbaar
|
||||
FreeSpace = Beschikbare ruimte
|
||||
FullShutdown = Volledig
|
||||
GameID = Spel ID
|
||||
Games = Spellen
|
||||
Gameisalreadyinstalled = Spel is reeds geïnstalleerd!
|
||||
GameRegion = Regio
|
||||
GameSize = Spelgrootte
|
||||
GoBack = Ga terug
|
||||
//GotoPage = Ga naar pagina
|
||||
HowtoShutdown = Op welke manier uitschakelen?
|
||||
Language = Taal
|
||||
Langchange = Taal wijzigen
|
||||
Left = Links
|
||||
LikeSysMenu = Zoals systeemmenu
|
||||
LoadingincIOS = Laden in Cios249
|
||||
Lock = Vergrendelen
|
||||
LockConsole = Console vergrendelen
|
||||
MP3Menu = MP3 Menu
|
||||
Missingfiles = Ontbrekende bestanden
|
||||
Networkiniterror = Network initialisatiefout
|
||||
Neither = Geen
|
||||
Next = Volgende
|
||||
No = Nee
|
||||
Nofilemissing = Alle bestanden compleet!
|
||||
NoHDDfound = Geen harde schijf gevonden!
|
||||
NoSDcardinserted = Geen SD-kaart gevonden!
|
||||
Nopartitionsfound = Geen partities gevonden
|
||||
NoUSBDevice = Geen USB-apparaat
|
||||
NoWBFSpartitionfound = Geen WBFS partities gevonden
|
||||
NormalCovers = Standaard hoesjes
|
||||
Normal = Standaard
|
||||
NotaWiiDisc = Geen Wiidisc
|
||||
NoUSBDevicefound = Geen USB-apparaat gevonden
|
||||
Notenoughfreespace = Onvoldoende vrije ruimte
|
||||
notset = niet ingesteld
|
||||
of = of
|
||||
OFF = UIT
|
||||
OfficialSite = Officiële site
|
||||
ok = oké
|
||||
ON = AAN
|
||||
Parentalcontrol = Ouderlijk toezicht
|
||||
Partition = Partitie
|
||||
Password = Wachtwoord
|
||||
PasswordChanged = Wachtwoord gewijzigsd
|
||||
Passwordhasbeenchanged = Het wachtwoord is gewijzigd
|
||||
Passwordchange = Wachtwoord wijzigen
|
||||
PowerofftheWii = Wii uitschakelen
|
||||
Prev = Vorige
|
||||
PromptsButtons = Weergave knoppen
|
||||
ReloadSD = SD herladen
|
||||
RenameGameonWBFS = Spel hernoemen op WBFS
|
||||
Restart = Herstarten
|
||||
Return = Terug
|
||||
ReturntoWii = Terug naar Wiimenu
|
||||
Right = Rechts
|
||||
Rumble = Trillen
|
||||
QuickBoot = Snelstarten
|
||||
Save = Opslaan
|
||||
SaveFailed = Opslaan mislukt
|
||||
Specialthanksto = Met speciale dank aan
|
||||
For = voor
|
||||
theUSBLoaderandreleasingthesourcecodethe = De USB-Loader en het vrijgeven van de broncode
|
||||
secondsleft = seconden resterend
|
||||
SelectthePartition = Selecteer de partitie
|
||||
youwanttoformat = wil je formatteren
|
||||
settings = Instellingen
|
||||
ShutdowntoIdle = Slaapstand
|
||||
ShutdownSystem = Systeem uitschakelen
|
||||
Success = Voltooid:
|
||||
Successfullyinstalled = Installatie voltooid:
|
||||
Successfullydeleted = Verwijdering voltooid:
|
||||
SuccessfullySaved = Opslaan voltooid:
|
||||
SystemDefault = Systeemstandaard
|
||||
ThemePath = Themamap
|
||||
ThemepathChanged = Themamap gewijzigd
|
||||
Themepathchange = Themamap gewijzigd
|
||||
Try = Proberen
|
||||
Tooltips = Tekstballonen
|
||||
Timeleft = Tijd resterend:
|
||||
Unlock = Vrijgeven
|
||||
Uninstall = Deïnstalleren
|
||||
USBLoaderisprotected = USB Loader GX is op slot
|
||||
USBDevicenotfound = USB apparaat niet gevonden
|
||||
VideoMode = Video Modus
|
||||
VIDTVPatch = VIDTV Patch
|
||||
Volume = Volume
|
||||
Waiting = Wachten...
|
||||
WaitingforUSBDevice = Wachten op USB-apparaat
|
||||
WidescreenFix = Breedbeeld
|
||||
WiiMenu = Wiimenu
|
||||
WrongPassword = Onjuist wachtwoord
|
||||
Yes = Ja
|
||||
YoudonthavecIOS = cIOS222 niet geïnstalleerd
|
||||
Japanese = Japans
|
||||
German = Duits
|
||||
English = Engels
|
||||
French = Frans
|
||||
Spanish = Spaans
|
||||
Italian = Italiaans
|
||||
Dutch = Nederlands
|
||||
SChinese = SChinees
|
||||
TChinese = TChinees
|
||||
Korean = Koreaans
|
@ -1,171 +0,0 @@
|
||||
Specialthanksto = Erikoiskiitokset:
|
||||
t3Coverst = 3D kannet
|
||||
AppLanguage = Ohjelman kieli
|
||||
Areyousure = Oletko varma?
|
||||
AutoPatch = AutoPatch
|
||||
Back = Takaisin
|
||||
BacktoHBCorWiiMenu = Takaisin HBC:hen tai Wii Menuun
|
||||
BacktoLoader = HBC
|
||||
BacktoWiiMenu = Takaisin Wii Menuun
|
||||
BootStandard = K%äynnistys/Standardi
|
||||
BothBoth = Molemmat
|
||||
Cantcreatedirectory = Ei voi luoda kansiota
|
||||
Cancel = Peruuta
|
||||
Cantbeformated = Ei voida formatoida
|
||||
Cantdelete = Ei voida poistaa:
|
||||
ClicktoDownloadCovers = Klikkaa ladataksesi kansia
|
||||
Clock = Kello
|
||||
Continueinstallgame = Jatka pelin asennusta?
|
||||
ConsoleDefault = Konsolin oletus
|
||||
Consoleshouldbeunlockedtomodifyit = Avaa konsolin lukitus muokataksesi asetuksia.
|
||||
ConsoleLocked = Konsoli lukittu
|
||||
CorrectPassword = Oikea salasana
|
||||
Couldnotinitializenetwork = Verkkoon ei voitu yhdistää!
|
||||
CouldnotopenDisc = Levyä ei voitu lukea
|
||||
CouldnotinitializeDIPmodule = DIP Moduulia ei voitu alustaa!
|
||||
CoverDownload = kansien lataus
|
||||
CoverPath = kansien sijainti
|
||||
CoverpathChanged = kansien sijainti muutettu
|
||||
Coverpathchange = kansien sijainti
|
||||
Credits = Tekij%ät
|
||||
DiscImages = Levykuvat
|
||||
DiscimagePath = Levykuvien sijainti
|
||||
DiscpathChanged = Levykuvien sijainti muutettu
|
||||
Discpathchange = Levykuvien sijainti
|
||||
DiscDefault = Levy oletus
|
||||
Display = N%äytt%ö
|
||||
Doyouwanttoformat = Haluatko formatoida:
|
||||
Doyoureallywanttodelete = Haluatko varmasti formatoida:
|
||||
Doyouwanttoretryfor30secs = Haluatko odottaa 30 sekuntia?
|
||||
Downloadingfile = Lataa tiedostoa:
|
||||
DownloadBoxartimage = Lataa kansikuva?
|
||||
Downloadfinished = Lataus valmistunut
|
||||
Error = Virhe !
|
||||
BOOTERROR = BOOTTAUS VIRHE
|
||||
ErrorreadingDisc = Virhe luettaessa levyä
|
||||
ExitUSBISOLoader = Poistu USB Loader GX:stä?
|
||||
InitializingNetwork = Yhdistää verkkoon
|
||||
InsertDisk = Aseta levy Wiihin
|
||||
InsertaWiiDisc = Aseta Wii-levy!
|
||||
InsertaSDCardtodownloadimages = Aseta SD-kortti ladataksesi kansia.
|
||||
InsertaSDCardtosave = Aseta SD-kortti tallentaaksesi asetuksia.
|
||||
InstallRenameandDeleteareunlocked = Kaikki asetukset on nyt käytettävissä.
|
||||
Installerror = Asennusvirhe!
|
||||
Installagame = Asenna peli
|
||||
Installinggame = Asentaa peliä:
|
||||
Failedtoboot = Käynnistys ei onnistunut:
|
||||
FailedtomountfrontSDcard = Ei voinut asentaa SD-korttia
|
||||
FailedtosetUSB = USB:ta ei voitu asentaa:
|
||||
Failedformating = Formatointi ei onnistunut
|
||||
filesnotfoundontheserver = tiedostoja ei löytynyt serveriltä!
|
||||
filesleft = tiedosto(j)a jäljellä
|
||||
FlipX = k%ä%änn%ä-X
|
||||
Force = Pakota
|
||||
Youneedtoformatapartition = Sinun täytyy formatoida osio
|
||||
Format = Formatoi
|
||||
Formattingpleasewait = Formatoi, odota...
|
||||
formated = formatoitu!
|
||||
free = vapaa
|
||||
FreeSpace = Vapaata tilaa
|
||||
FullShutdown = Täysi sammutus
|
||||
GameID = Peli ID
|
||||
Games = Pelejä
|
||||
Gameisalreadyinstalled = Peli on jo asennettu:
|
||||
GameRegion = Alue
|
||||
GameSize = Pelin koko
|
||||
GoBack = Mene takaisin
|
||||
//GotoPage = Mene sivulle
|
||||
HowtoShutdown = Miten sammutetaan?
|
||||
Language = Kieli
|
||||
Langchange = Kielen muuttaminen
|
||||
Left = Vasen
|
||||
LikeSysMenu = Kuin wii-menu
|
||||
LoadingincIOS = Lataa cIOS249
|
||||
Lock = Lukitse
|
||||
LockConsole = Lukitse konsoli
|
||||
MP3Menu = MP3 valikko
|
||||
Missingfiles = tiedostoa puuttuu
|
||||
Networkiniterror = Verkon alustusvirhe
|
||||
Neither = Ei kumpikaan
|
||||
Next = Seuraava
|
||||
No = Ei
|
||||
Nofilemissing = Ei tiedostoja kadoksissa!
|
||||
NoHDDfound = Kovalevyä ei löytynyt!
|
||||
NoSDcardinserted = SD-korttia ei ole asetettu wiihin!
|
||||
Nopartitionsfound = Osioita ei löytynyt
|
||||
NoUSBDevice = Ei USB-laitetta
|
||||
NoWBFSpartitionfound = Ei WBFS-osioita löytynyt
|
||||
NormalCovers = Normaalit kannet
|
||||
Normal = Normaali
|
||||
NotaWiiDisc = Ei Wii-levy
|
||||
NoUSBDevicefound = USB-laitetta ei löytynyt.
|
||||
Notenoughfreespace = Ei tarpeeksi tilaa!
|
||||
notset = ei asetettu
|
||||
of = josta
|
||||
OFF = OFF
|
||||
OfficialSite = Virallinen sivusto
|
||||
ok = OK
|
||||
ON = ON
|
||||
Parentalcontrol = Valvonta
|
||||
Partition = Osio
|
||||
Password = Salasana
|
||||
PasswordChanged = Salasana muutettu
|
||||
Passwordhasbeenchanged = Salasana on muutettu
|
||||
Passwordchange = Salasanan vaihto
|
||||
PowerofftheWii = Sammuta Wii
|
||||
Prev = Edellinen
|
||||
PromptsButtons = Napit
|
||||
ReloadSD = Uudelleenlataa SD
|
||||
RenameGameonWBFS = Uudelleennimeä peli
|
||||
Restart = Käynnistä uudelleen
|
||||
Return = Palaa
|
||||
ReturntoWii = Palaa Wii-menuun
|
||||
Right = Oikea
|
||||
Rumble = V%ärin%ä
|
||||
QuickBoot = Pikak%äynnistys
|
||||
Save = Tallenna
|
||||
SaveFailed = Tallennus ei onnistunut
|
||||
Specialthanksto = Erikoiskiitokset
|
||||
For =
|
||||
theUSBLoaderandreleasingthesourcecodethe = ja l%ähdekoodin julkaisemisesta
|
||||
secondsleft = sekuntia jäljellä
|
||||
SelectthePartition = Valitse osio
|
||||
youwanttoformat = jonka haluat formatoida
|
||||
settings = Asetukset
|
||||
ShutdowntoIdle = Valmiustila
|
||||
ShutdownSystem = Sammuta järjestelmä
|
||||
Success = Onnistui:
|
||||
Successfullyinstalled = Asennettu onnistuneesti:
|
||||
Successfullydeleted = Poistettu onnistuneesti:
|
||||
SuccessfullySaved = Tallennettu onnistuneesti
|
||||
SystemDefault = Wiin oletus
|
||||
ThemePath = Teeman sijainti
|
||||
ThemepathChanged = Teeman sijainti muutettu
|
||||
Themepathchange = Teeman sijainti
|
||||
Try = Yrit%ä
|
||||
Tooltips = vinkit
|
||||
Timeleft = Aikaa jäljellä:
|
||||
Unlock = Avaa
|
||||
Uninstall = Poista
|
||||
USBLoaderisprotected = USB Loader GX on suojattu.
|
||||
USBDevicenotfound = USB-laitetta ei löytynyt
|
||||
VideoMode = Video tila
|
||||
VIDTVPatch = VIDTV korjaus
|
||||
Volume = Voimakkuus
|
||||
Waiting = Odottaa...
|
||||
WaitingforUSBDevice = Odottaa USB-laitetta...
|
||||
WidescreenFix = Laajakuva korjaus
|
||||
WiiMenu = Wii Menu
|
||||
WrongPassword = Väärä salasana
|
||||
Yes = Kyllä
|
||||
YoudonthavecIOS = Sinulla ei ole cIOS222:sta
|
||||
Japanese = Japani
|
||||
German = Saksa
|
||||
English = Englanti
|
||||
French = Ranska
|
||||
Spanish = Espanja
|
||||
Italian = Italia
|
||||
Dutch = Hollanti
|
||||
SChinese = SKiina
|
||||
TChinese = TKiina
|
||||
Korean = Korea
|
210
Languages/french
@ -1,210 +0,0 @@
|
||||
t3Covers = Jaquettes 3D
|
||||
addToFavorite = Ajouter aux favoris
|
||||
all = Alphabétique
|
||||
AppLanguage = Langue d'interface
|
||||
Areyousure = Êtes-vous sûr?
|
||||
available = disponible
|
||||
AutoPatch = AutoPatch
|
||||
Back = Retour
|
||||
Backgroundmusic = Fond sonore
|
||||
Backgroundmusicpath = Dossier fond sonore modifié
|
||||
BacktoHBCorWiiMenu = Retour HBC / Menu Wii
|
||||
BacktoLoader = Wii HomeBrews
|
||||
BacktoWiiMenu = Retour Menu Wii
|
||||
BootStandard = Boot/Standard
|
||||
Both = Tous
|
||||
Cantcreatedirectory = Création du répertoire impossible
|
||||
Cancel = Annuler
|
||||
Cantbeformated = Formatage impossible
|
||||
CheckingforUpdates = Recherche de Mise à Jour
|
||||
Cantdelete = Impossible de supprimer :
|
||||
ClicktoDownloadCovers = Téléchargement des jaquettes
|
||||
Clock = Horloge
|
||||
Close = Fermer
|
||||
Continueinstallgame = Continuer l'installation ?
|
||||
ConsoleDefault = Console par défaut
|
||||
Consoleshouldbeunlockedtomodifyit = La console doit être déverrouillée.
|
||||
ConsoleLocked = Console verrouillée
|
||||
CorrectPassword = Mot de passe correct
|
||||
Couldnotinitializenetwork = Initialisation réseau impossible !
|
||||
CouldnotopenDisc = Initialisation disque impossible
|
||||
CouldnotinitializeDIPmodule = Initialisation DIP impossible !
|
||||
CoverDownload = Téléchargement Jaquettes
|
||||
CoverPath = Dossier Jaquettes
|
||||
CoverpathChanged = Dossier des jaquettes modifié
|
||||
Coverpathchange = Dossier des jaquettes
|
||||
count = Utilisation
|
||||
Credits = Crédits
|
||||
DiscImages = Labels DVD
|
||||
DiscimagePath = Dossier Labels DVD
|
||||
DiscpathChanged = Dossier des labels DVD changé
|
||||
Discpathchange = Dossier des labels DVD
|
||||
DiscDefault = Disque par défaut
|
||||
Display = Affichage
|
||||
Doyouwanttoformat = Voulez-vous formater ?
|
||||
Doyoureallywanttodelete = Voulez-vous vraiment supprimer ?
|
||||
Doyouwanttoretryfor30secs = Réessayer pendant 30 sec. ?
|
||||
Doyouwanttoupdate = Comment faire la Mise à Jour ?
|
||||
Downloadingfile = Téléchargement du fichier
|
||||
DownloadBoxartimage = Télécharger les jaquettes ?
|
||||
Downloadfinished = Téléchargement terminé
|
||||
//Defaultgamesettings = Rétablir les paramètres du jeu par défaut
|
||||
//Defaultsettings = Rétablir les paramètres par défaut
|
||||
Defaultgamesettings = Reset Paramètres Jeu
|
||||
Defaultsettings = Reset Paramètres
|
||||
Error = Erreur !
|
||||
hour = Heures
|
||||
Homemenu = Menu HOME
|
||||
BOOTERROR = ERREUR DE DÉMARRAGE
|
||||
ErrorreadingDisc = Erreur à la lecture du disque
|
||||
ExitUSBISOLoader = Quitter USB Loader GX ?
|
||||
InitializingNetwork = Initialisation du réseau
|
||||
InsertDisk = Insérez un disque
|
||||
InsertaWiiDisc = Insérez un disque Wii !
|
||||
InsertaSDCardtodownloadimages = Insérez une carte SD pour télécharger les jaquettes.
|
||||
InsertaSDCardtosave = Insérez une carte SD pour enregistrer.
|
||||
InsertaSDCardtousethatoption = Insérez une carte SD pour utiliser cette option.
|
||||
InstallRenameandDeleteareunlocked = Toutes les fonctionnalités sont déverrouillées.
|
||||
Installerror = Erreur à l'installation !
|
||||
Installagame = Installer un jeu
|
||||
Installinggame = Installation du jeu :
|
||||
Failedtoboot = Échec au démarrage de :
|
||||
FailedtomountfrontSDcard = Échec à l'initialisation de la SD
|
||||
FailedtosetUSB = Échec d'initialisation USB :
|
||||
Failedformating = Échec du formatage
|
||||
fave = Favoris
|
||||
Filenotfound = Fichier introuvable.
|
||||
filesnotfoundontheserver = fichiers introuvables sur le serveur !
|
||||
filesleft = fichier(s) restant(s)
|
||||
FlipX = Inversion-X
|
||||
Force = Forcer
|
||||
Youneedtoformatapartition = Vous devez formater une partition
|
||||
Format = Formater
|
||||
Formattingpleasewait = Formatage en cours, veuillez patienter...
|
||||
formated = formaté !
|
||||
free = libre
|
||||
FreeSpace = Espace restant
|
||||
FullShutdown = Éteindre
|
||||
GameID = ID du jeu
|
||||
Games = Jeux
|
||||
Gameisalreadyinstalled = Le jeu est déjà installé :
|
||||
GameRegion = Région
|
||||
GameSize = Taille du jeu
|
||||
GoBack = Retour
|
||||
HowtoShutdown = Arrêt de la Wii ?
|
||||
keyboard = Clavier
|
||||
Language = Langue du jeu
|
||||
Langchange = Changer la langue
|
||||
Left = Gauche
|
||||
LikeSysMenu = Menu système
|
||||
LoadingincIOS = Charger avec cIOS249
|
||||
ListSort = Tri des Jeux
|
||||
Loadingstandardlanguage = Chargement de la langue par défaut.
|
||||
Loadingstandardmusic = Chargement musique standard.
|
||||
Lock = Verrouiller
|
||||
LockConsole = Verrouiller la console
|
||||
MP3Menu = Menu MP3
|
||||
Missingfiles = Fichier(s) manquant(s)
|
||||
Networkiniterror = Erreur d'initialisation réseau
|
||||
Neither = Aucun
|
||||
Next = Suivant
|
||||
Nonewupdates = Pas de nouvelle Mise à Jour.
|
||||
No = Non
|
||||
Nofilemissing = Aucun fichier manquant !
|
||||
NoHDDfound = Aucun HDD trouvé !
|
||||
NoSDcardinserted = Aucune carte SD insérée !
|
||||
Nopartitionsfound = Aucune partition trouvée
|
||||
NoUSBDevice = Aucun périphérique USB
|
||||
NoWBFSpartitionfound = Aucune partition WBFS trouvée
|
||||
NormalCovers = Normales
|
||||
Normal = 4:3
|
||||
NotaWiiDisc = Ce n'est pas un jeu Wii
|
||||
NoUSBDevicefound = Aucun périphérique USB trouvé.
|
||||
Notenoughfreespace = Espace libre insuffisant !
|
||||
Notasupportedformat = Format non supporté !
|
||||
notset = non défini
|
||||
of = sur
|
||||
OFF = Désactivé
|
||||
OfficialSite = Site Officiel
|
||||
ok = OK
|
||||
ON = Activé
|
||||
OnlyInstall = Jeu installé seulement
|
||||
Parentalcontrol = Contrôle parental
|
||||
Partition = Partition
|
||||
Password = Mot de passe
|
||||
PasswordChanged = Mot de passe modifié
|
||||
Passwordhasbeenchanged = Le mot de passe a été modifié
|
||||
Passwordchange = Modification du mot de passe
|
||||
Plays = Utilisation
|
||||
PowerofftheWii = Éteindre la Wii
|
||||
Prev = Précédent
|
||||
PromptsButtons = Interface
|
||||
ReloadSD = Recharger la SD
|
||||
RenameGameonWBFS = Renommer un jeu
|
||||
Restart = Redémarrer
|
||||
Restarting = Redémarrage...
|
||||
Return = Retour
|
||||
ReturntoWii = Retourner au menu Wii
|
||||
Right = Droite
|
||||
Rumble = Vibrations
|
||||
QuickBoot = Démarrage rapide
|
||||
Save = Enregistrer
|
||||
SaveFailed = Échec de sauvegarde
|
||||
Specialthanksto = Remerciements à
|
||||
For = pour
|
||||
theUSBLoaderandreleasingthesourcecodethe = et pour avoir partagé le code source
|
||||
secondsleft = secondes restantes
|
||||
Setasbackgroundmusic = Utiliser comme fond sonore ?
|
||||
SelectthePartition = Choisissez la partition
|
||||
youwanttoformat = Vous voulez formater
|
||||
Standard = Standard
|
||||
settings = Paramètres
|
||||
ShutdowntoIdle = Veille
|
||||
ShutdownSystem = Arrêt
|
||||
Success = Succès :
|
||||
Successfullyinstalled = Installé avec succès :
|
||||
Successfullyupdated = Mise à Jour réussie
|
||||
Successfullydeleted = Supprimé avec succès :
|
||||
SuccessfullySaved = Enregistré avec succès
|
||||
SystemDefault = Système par défaut
|
||||
ThemePath = Dossier Thème
|
||||
ThemepathChanged = Dossier du thème modifié
|
||||
Themepathchange = Dossier du thème
|
||||
Titlestxtpath = Localisation titles.txt
|
||||
TitlestxtpathChanged = Localisation de titles.txt modifié
|
||||
Titlestxtpathchange = Localisation de titles.txt
|
||||
Try = Essayer
|
||||
Tooltips = Info-bulles
|
||||
Timeleft = Temps restant :
|
||||
updating = Mise à Jour
|
||||
Unlock = Déverrouiller
|
||||
Unicodefix = Unicode
|
||||
Uninstall = Désinstaller
|
||||
Updatepath= Dossier Mise à Jour
|
||||
Updatepathchanged = Dossier de Mise à Jour changé.
|
||||
Updatefailed = Mise à Jour échouée
|
||||
Updatedol = DOL seul
|
||||
Updateall = Totale
|
||||
USBLoaderisprotected = USB Loader GX est verrouillé
|
||||
USBDevicenotfound = Périphérique USB introuvable
|
||||
VideoMode = Mode vidéo
|
||||
VIDTVPatch = Patch VIDTV
|
||||
Volume = Volume
|
||||
Waiting = En attente...
|
||||
WaitingforUSBDevice = Attente d'un périphérique USB
|
||||
WidescreenFix = 16:9
|
||||
WiiMenu = Menu Wii
|
||||
Wiilight = Illumination Wii
|
||||
WrongPassword = Mot de passe incorrect
|
||||
Yes = Oui
|
||||
YoudonthavecIOS = cIOS222 non installé
|
||||
Japanese = Japonais
|
||||
German = Allemand
|
||||
English = Anglais
|
||||
French = Français
|
||||
Spanish = Espagnol
|
||||
Italian = Italien
|
||||
Dutch = Néerlandais
|
||||
SChinese = Chinois simplifié
|
||||
TChinese = Chinois traditionnel
|
||||
Korean = Coréen
|
178
Languages/german
@ -1,178 +0,0 @@
|
||||
Specialthanksto = Besonderer dank an
|
||||
t3Covers = 3D Cover
|
||||
AppLanguage = Sprache
|
||||
Areyousure = Bist du sicher?
|
||||
AutoPatch = AutoPatch
|
||||
Back = Zurück
|
||||
BacktoHBCorWiiMenu = Zurück zum HBC oder Wii Menü
|
||||
BacktoLoader = Zurück zum Loader
|
||||
BacktoWiiMenu = Zurück ins Wii Menü
|
||||
BootStandard = Boot/Standard
|
||||
Both = Beides
|
||||
Cantcreatedirectory = Verzeichnis kann nicht erstellt werden
|
||||
Cancel = Abbrechen
|
||||
Cantbeformated = Konnte nicht formatiert werden
|
||||
Cantdelete = Löschen fehlgeschlagen:
|
||||
ClicktoDownloadCovers = Klick um Cover runterzuladen
|
||||
Clock = Uhr
|
||||
Continueinstallgame = Spiel installieren?
|
||||
ConsoleDefault = Konsolenstandard
|
||||
Consoleshouldbeunlockedtomodifyit = Konsole zum ändern bitte entsperren.
|
||||
ConsoleLocked = Konsole gesperrt
|
||||
CorrectPassword = Passwort korrekt
|
||||
Couldnotinitializenetwork = Netzwerk konnte nicht initialisiert werden!
|
||||
CouldnotopenDisc = Konnte Disc nicht öffnen
|
||||
CouldnotinitializeDIPmodule = DIP Modul konnte nict initialisiert werden!
|
||||
CoverDownload = Cover Download
|
||||
CoverPath = Cover Pfad
|
||||
CoverpathChanged = Cover Pfad geändert
|
||||
Coverpathchange = Cover Pfad ändern
|
||||
Credits = Credits
|
||||
DiscImages = Disc Images
|
||||
DiscimagePath = Discimage Pfad
|
||||
DiscpathChanged = Disc Pfad geändert
|
||||
Discpathchange = Disc Pfad ändern
|
||||
DiscDefault = Disc Standard
|
||||
Display = Anzeige
|
||||
Doyouwanttoformat = Wollen sie formatieren:
|
||||
Doyoureallywanttodelete = Wirklich löschen:
|
||||
Doyouwanttoretryfor30secs = 30 sek lang erneut versuchen?
|
||||
Downloadingfile = Downloade Datei:
|
||||
DownloadBoxartimage = Download Boxart Grafik?
|
||||
Downloadfinished = Download abgeschlossen
|
||||
Error = Fehler !
|
||||
BOOTERROR = BOOT FEHLER
|
||||
ErrorreadingDisc = Disclesefehler
|
||||
ExitUSBISOLoader = USB Loader GX beenden?
|
||||
InitializingNetwork = Initialisiere Netzwerk
|
||||
InsertDisk = Disc einlegen
|
||||
InsertaWiiDisc = Wii Disc einlegen!
|
||||
InsertaSDCardtodownloadimages = SD Card für Grafik-Download einlegen.
|
||||
InsertaSDCardtosave = SD-Card zum speichern einlegen.
|
||||
InstallRenameandDeleteareunlocked = Alle Funktionen des USB Loader GX freigeschaltet.
|
||||
Installerror = Installationsfehler!
|
||||
Installagame = Spiel installieren
|
||||
Installinggame = Installiere Spiel:
|
||||
Failedtoboot = Bootfehler:
|
||||
FailedtomountfrontSDcard = SD-Card Mount-Fehler
|
||||
FailedtosetUSB = USB-Fehler:
|
||||
Failedformating = Formatieren fehlgeschlagen
|
||||
Filenotfound = Datei nicht gefunden.
|
||||
filesnotfoundontheserver = Datei(en) konnte(n) auf dem Server nicht gefunden werden!
|
||||
filesleft = Datei(en) verbleiben
|
||||
FlipX = Flip-X
|
||||
Force = Erzwinge
|
||||
Youneedtoformatapartition = Partition muss formatiert werden
|
||||
Format = Formatieren
|
||||
Formattingpleasewait = Formatiere, bitte warten...
|
||||
formated = formatiert!
|
||||
free = frei
|
||||
FreeSpace = Freier Speicher
|
||||
FullShutdown = Ausschalten
|
||||
GameID = Spiel ID
|
||||
Games = Spiele
|
||||
Gameisalreadyinstalled = Spiel bereits vorhanden:
|
||||
GameRegion = Region
|
||||
GameSize = Grösse
|
||||
GoBack = Zurück
|
||||
//GotoPage = Gehe zu Seite
|
||||
HowtoShutdown = Wie beenden?
|
||||
keyboard = Tastatur
|
||||
Language = Sprache
|
||||
Langchange = Sprache ändern
|
||||
Left = Links
|
||||
LikeSysMenu = Wie SysMenü
|
||||
LoadingincIOS = Lade in cIOS249
|
||||
Loadingstandardlanguage = Lade Standardsprache.
|
||||
Lock = Sperren
|
||||
LockConsole = Konsole sperren
|
||||
MP3Menu = MP3 Menü
|
||||
Missingfiles = Fehlende Datei(en)
|
||||
Networkiniterror = Netzwerk init Fehler
|
||||
Neither = Nichts
|
||||
Next = Nächste
|
||||
No = Nein
|
||||
Nofilemissing = Alle Dateien vorhanden!
|
||||
NoHDDfound = Keine HDD gefunden!
|
||||
NoSDcardinserted = Keine SD-Card eingelegt!
|
||||
Nopartitionsfound = Keine Partitionen gefunden
|
||||
NoUSBDevice = Kein USB Gerät
|
||||
NoWBFSpartitionfound = Keine WBFS Partition gefunden
|
||||
NormalCovers = Normale Cover
|
||||
Normal = Normal
|
||||
NotaWiiDisc = Keine Wii Disc
|
||||
NoUSBDevicefound = Kein USB Gerät gefunden.
|
||||
Notenoughfreespace = Nicht genug freier Speicher!
|
||||
notset = nicht gesetzt
|
||||
of = von
|
||||
OFF = AUS
|
||||
OfficialSite = Offizielle Seite
|
||||
ok = OK
|
||||
ON = AN
|
||||
Parentalcontrol = Jugenschutz
|
||||
Partition = Partition
|
||||
Password = Passwort
|
||||
PasswordChanged = Passwort geändert
|
||||
Passwordhasbeenchanged = Passwort geändert
|
||||
Passwordchange = Passwort ändern
|
||||
PowerofftheWii = Wii ausschalten
|
||||
Prev = Vorherige
|
||||
PromptsButtons = Button Anzeige
|
||||
ReloadSD = SD aktualisieren
|
||||
RenameGameonWBFS = Spiel umbenennen
|
||||
Restart = Neustart
|
||||
Return = Zurück
|
||||
ReturntoWii = Zurück ins Wii Menü
|
||||
Right = Rechts
|
||||
Rumble = Rumble
|
||||
QuickBoot = Quick Boot
|
||||
Save = Speichern
|
||||
SaveFailed = Speichern fehlgeschlagen
|
||||
Specialthanksto = Besonderer Dank an
|
||||
Titlestxtpath = Titles.txt Pfad
|
||||
TitlestxtpathChanged = Pfad zu titles.txt geändert.
|
||||
Titlestxtpathchange = Pfad von titles.txt ändern
|
||||
For = für
|
||||
theUSBLoaderandreleasingthesourcecodethe = und die veröffentlichung des Quellcodes
|
||||
secondsleft = sekunden verbleiben
|
||||
SelectthePartition = Partition auswählen
|
||||
youwanttoformat = sie wollen formatieren
|
||||
settings = Einstellungen
|
||||
ShutdowntoIdle = StandBy
|
||||
ShutdownSystem = System abschalten
|
||||
Success = Erfolg:
|
||||
Successfullyinstalled = Erfolgreich installiert:
|
||||
Successfullydeleted = Erfolgreich gelöscht:
|
||||
SuccessfullySaved = Erfolgreich gespeichert
|
||||
SystemDefault = Systemstandard
|
||||
ThemePath = Theme Pfad
|
||||
ThemepathChanged = Theme Pfad geändert
|
||||
Themepathchange = Theme Pfad ändern
|
||||
Try = Versuche
|
||||
Tooltips = ToolTips
|
||||
Timeleft = Dauer:
|
||||
Unlock = Entsperren
|
||||
Unicodefix = Unicode Fix
|
||||
Uninstall = Deinstallieren
|
||||
USBLoaderisprotected = USB Loader GX ist geschützt
|
||||
USBDevicenotfound = USB Gerät nicht gefunden
|
||||
VideoMode = Video Modus
|
||||
VIDTVPatch = VIDTV Patch
|
||||
Volume = Lautstärke
|
||||
Waiting = Warte...
|
||||
WaitingforUSBDevice = Warte auf USB Gerät
|
||||
WidescreenFix = Widescreen Fix
|
||||
WiiMenu = Wii Menü
|
||||
WrongPassword = Passwort falsch
|
||||
Yes = Ja
|
||||
YoudonthavecIOS = cIOS222 nicht vorhanden
|
||||
Japanese = Japanisch
|
||||
German = Deutsch
|
||||
English = Englisch
|
||||
French = Französisch
|
||||
Spanish = Spanisch
|
||||
Italian = Italienisch
|
||||
Dutch = Niederländisch
|
||||
SChinese = Simpl.Chinesisch
|
||||
TChinese = Trad.Chinesisch
|
||||
Korean = Koreanisch
|
@ -1,192 +0,0 @@
|
||||
Specialthanksto = Un Ringraziamento Speciale a
|
||||
t3Covers = 3D
|
||||
AppLanguage = Percorso Lingua
|
||||
Areyousure = Sei sicuro?
|
||||
AutoPatch = Automatico
|
||||
Back = Indietro
|
||||
BacktoHBCorWiiMenu = Torna a HBC/Menù Wii
|
||||
BacktoLoader = Torna al Loader
|
||||
BacktoWiiMenu = Torna al Menù Wii
|
||||
BootStandard = Riavvio/Standard
|
||||
Both = Entrambi
|
||||
Cantcreatedirectory = Non posso creare la cartella
|
||||
Cancel = Cancella
|
||||
Cantbeformated = Non può essere Formattato
|
||||
Cantdelete = Non Posso Eliminare:
|
||||
ClicktoDownloadCovers = Premi per scaricare le Copertine
|
||||
Clock = Orologio
|
||||
Continueinstallgame = Continua ad Installare il gioco?
|
||||
ConsoleDefault = Predefinito Console
|
||||
Consoleshouldbeunlockedtomodifyit = Console deve essere Sbloccata per Modificarla.
|
||||
ConsoleLocked = Console Bloccata
|
||||
CorrectPassword = Password Corretta
|
||||
Couldnotinitializenetwork = Non posso Inizializzare la rete!
|
||||
CouldnotopenDisc = Non posso caricare il Disco!
|
||||
CouldnotinitializeDIPmodule = Non posso inizializzare il modulo DIP!
|
||||
CoverDownload = Scaricamento Copertina
|
||||
CoverPath = Percorso Copertina
|
||||
CoverpathChanged = Percorso Copertina Modificato
|
||||
Coverpathchange = Modifico Percorso Copertina
|
||||
Credits = Credits
|
||||
DiscImages = Immagine Disco
|
||||
DiscimagePath = Percorso Imm. Disco
|
||||
DiscpathChanged = Percorso Immagine Disco Modificato
|
||||
Discpathchange = Modifica Percorso Immagine Disco
|
||||
DiscDefault = Predefinito Disco
|
||||
Display = Display
|
||||
Doyouwanttoformat = Vuoi Formattare:
|
||||
Doyoureallywanttodelete = Vuoi realmente Eliminare:
|
||||
Doyouwanttoretryfor30secs = Vuoi Riprovare per 30 sec?
|
||||
Downloadingfile = Scaricamento file:
|
||||
DownloadBoxartimage = Scaricamento Immagine Boxart?
|
||||
Downloadfinished = Scaricamento Completato
|
||||
Error = Errore !
|
||||
BOOTERROR = Errore Avvio
|
||||
ErrorreadingDisc = Errore Lettura Disco
|
||||
ExitUSBISOLoader = Esci da USB Loader GX?
|
||||
InitializingNetwork = Inizializzazione rete
|
||||
InsertDisk = Inserisci Disco
|
||||
InsertaWiiDisc = Inserisci un Disco nella Wii!
|
||||
InsertaSDCardtodownloadimages = Inserisci una scheda SD per scaricare le immagini.
|
||||
InsertaSDCardtosave = Inserisci una scheda SD per Salvare.
|
||||
InstallRenameandDeleteareunlocked = Tutte le funzioni di USB Loader GX sono sbloccate.
|
||||
Installerror = Errore Installazione!
|
||||
Installagame = Installa un gioco
|
||||
Installinggame = Sto Installando il gioco:
|
||||
Failedtoboot = Erroe Avvio:
|
||||
FailedtomountfrontSDcard = Errore lettura scheda SD
|
||||
FailedtosetUSB = Errore a Settare porta USB:
|
||||
Failedformating = Errore Formattazione
|
||||
Filenotfound = File non trovato.
|
||||
filesnotfoundontheserver = file non trovato/i sul server!
|
||||
filesleft = file mancante/i
|
||||
FlipX = Flip-X
|
||||
Force = Forza
|
||||
Youneedtoformatapartition = Devi Formattare una Partizione
|
||||
Format = Formatta
|
||||
Formattingpleasewait = Sto Formattando, prego attendere...
|
||||
formated = formattato!
|
||||
free = liberi
|
||||
FreeSpace = Spazio libero
|
||||
FullShutdown = Completo
|
||||
GameID = ID Gioco
|
||||
Games = Giochi
|
||||
Gameisalreadyinstalled = Gioco già installato:
|
||||
GameRegion = Regione
|
||||
GameSize = Dimensione Gioco
|
||||
GoBack = Indietro
|
||||
//GotoPage = Vai alla Pagina
|
||||
HowtoShutdown = Spegnimento Wii?
|
||||
keyboard = tastiera
|
||||
Language = Lingua
|
||||
Langchange = Cambio Lingua
|
||||
Left = Sinistra
|
||||
LikeSysMenu = Come SysMenu
|
||||
LoadingincIOS = Caricamento in cIOS249
|
||||
Loadingstandardlanguage = Caricamento Lingua Standard.
|
||||
Lock = Blocco
|
||||
LockConsole = Blocco Console
|
||||
MP3Menu = Menù MP3
|
||||
Missingfiles = File Mancante/i
|
||||
Networkiniterror = Errore inizializzazione rete
|
||||
Neither = Nessuno
|
||||
Next = Avanti
|
||||
No = No
|
||||
Nofilemissing = Nessun file mancante!
|
||||
NoHDDfound = Nessun HDD trovato!
|
||||
NoSDcardinserted = Nessuna scheda SD inserita!
|
||||
Nopartitionsfound = Nessuna partizione trovata
|
||||
NoUSBDevice = Nessun Dispositivo USB
|
||||
NoWBFSpartitionfound = Nessuna partizione WBFS trovata
|
||||
NormalCovers = Normali
|
||||
Normal = Normale
|
||||
NotaWiiDisc = Non è un Disco Wii
|
||||
NoUSBDevicefound = Nessun Dispositivo USB trovato.
|
||||
Notenoughfreespace = Spazio Insufficiente!
|
||||
notset = non inserita
|
||||
of = di
|
||||
OFF = OFF
|
||||
OfficialSite = Sito Ufficiale
|
||||
ok = OK
|
||||
ON = ON
|
||||
Parentalcontrol = Controllo Genitori
|
||||
Partition = Partizione
|
||||
Password = Password
|
||||
PasswordChanged = Password Modificata
|
||||
Passwordhasbeenchanged = Password è stata modificata
|
||||
Passwordchange = Modifica Password
|
||||
PowerofftheWii = Spegnimento Wii
|
||||
Prev = Indietro
|
||||
PromptsButtons = Pulsanti
|
||||
ReloadSD = Ricarica SD
|
||||
RenameGameonWBFS = Rinomina Gioco su WBFS
|
||||
Restart = RiAvvia
|
||||
Return = Ritorna
|
||||
ReturntoWii = Ritorna al Menù Wii
|
||||
Right = Destra
|
||||
Rumble = Vibrazione
|
||||
QuickBoot = Avvio Veloce
|
||||
Save = Salva
|
||||
SaveFailed = Salvataggio Fallito
|
||||
Specialthanksto = Ringraziamenti Speciali a
|
||||
Titlestxtpath = Percorso Titles.txt
|
||||
TitlestxtpathChanged = Percorso of titles.txt modificato.
|
||||
Titlestxtpathchange = Modifica percorso titles.txt
|
||||
For = per
|
||||
theUSBLoaderandreleasingthesourcecodethe = e rilascio codice sorgente
|
||||
secondsleft = secondi mancanti
|
||||
SelectthePartition = Seleziona la Partizione
|
||||
youwanttoformat = vuoi formattare
|
||||
settings = Strumenti
|
||||
ShutdowntoIdle = StandBy
|
||||
ShutdownSystem = Spegnimento
|
||||
Success = Successo:
|
||||
Successfullyinstalled = Installato con successo:
|
||||
Successfullydeleted = Eliminato con successo:
|
||||
SuccessfullySaved = Salvato con successo
|
||||
SystemDefault = Predefinito Sistema
|
||||
ThemePath = Percorso Tema
|
||||
ThemepathChanged = Percorso Tema modificato
|
||||
Themepathchange = Modifica Percorso Tema
|
||||
Try = Prova
|
||||
Tooltips = Suggerimenti
|
||||
Timeleft = Restante:
|
||||
Unlock = Sblocca
|
||||
Unicodefix = Caratteri Speciali
|
||||
Uninstall = Disinstalla
|
||||
USBLoaderisprotected = USB Loader GX è Protetto
|
||||
USBDevicenotfound = Dispositivo USB non Trovato
|
||||
VideoMode = Modalità Video
|
||||
VIDTVPatch = Forza Video
|
||||
Volume = Volume
|
||||
Waiting = Caricamento...
|
||||
WaitingforUSBDevice = Caricamento Dispositivo USB
|
||||
WidescreenFix = Widescreen
|
||||
WiiMenu = Menù Wii
|
||||
WrongPassword = Password Errata
|
||||
Yes = Sì
|
||||
YoudonthavecIOS = Non Possiedi cIOS222
|
||||
Japanese = Giapponese
|
||||
German = Tedesco
|
||||
English = Inglese
|
||||
French = Francese
|
||||
Spanish = Spagnolo
|
||||
Italian = Italiano
|
||||
Dutch = Olandese
|
||||
SChinese = Cinese Moderno
|
||||
TChinese = Cinese Tradizionale
|
||||
Korean = Coreano
|
||||
addToFavorite = Favoriti
|
||||
Backgroundmusic = Musica di Fondo
|
||||
Backgroundmusicpath = Percorso Musica
|
||||
hour = ore
|
||||
Loadingstandardmusic = Caricamento Musica std.
|
||||
Notasupportedformat = Formato non supportato.
|
||||
Setasbackgroundmusic = Imposta come Musica fondo
|
||||
Standard = Standard
|
||||
Plays = Giocati
|
||||
all = Alfabetico
|
||||
count = più giocati
|
||||
fave = Favoriti
|
||||
ListSort = Ordine Giochi
|
||||
InsertaSDCardtousethatoption = Inserire scheda SD per questa opzione
|
@ -1,193 +0,0 @@
|
||||
t3Covers = 3D カバー
|
||||
addToFavorite = お気に入り
|
||||
all = 全て
|
||||
AppLanguage = Appの表示言語
|
||||
Areyousure = 実行しますか?
|
||||
AutoPatch = 自動パッチ
|
||||
Back = 戻る
|
||||
BacktoHBCorWiiMenu = HBC/Wiiメニューへ戻る
|
||||
Backgroundmusic = サウンド
|
||||
Backgroundmusicpath = サウンドのPath
|
||||
BacktoLoader = HBCへ戻る
|
||||
BacktoWiiMenu = Wiiメニューへ戻る
|
||||
BootStandard = ブート/標準
|
||||
BothBoth = 両方
|
||||
Cantcreatedirectory = ディレクトリ作成に失敗しました。
|
||||
Cancel = キャンセル
|
||||
Cantbeformated = フォーマットに失敗しました。
|
||||
Cantdelete = 削除に失敗しました:
|
||||
ClicktoDownloadCovers = カバーをダウンロードするのにクリックして下さい。
|
||||
Clock = Clock
|
||||
Close = 閉じる
|
||||
Continueinstallgame = ゲームのインストールを続けますか?
|
||||
ConsoleDefault = デフォルトコンソール
|
||||
Consoleshouldbeunlockedtomodifyit = 変更にはコンソールのロック解除が必要です。
|
||||
ConsoleLocked = コンソールがロックされています。
|
||||
CorrectPassword = 正しいパスワード
|
||||
Couldnotinitializenetwork = ネットワークの初期化ができません!
|
||||
CouldnotopenDisc = ディスクオープンに失敗しました。
|
||||
CouldnotinitializeDIPmodule = DIPモジュールの初期化ができません!
|
||||
CoverDownload = カバー ダウンロード
|
||||
CoverPath = カバーパス
|
||||
CoverpathChanged = カバーパスを変更しました。
|
||||
Coverpathchange = カバーパスの変更
|
||||
count = プレイ時間
|
||||
Credits = 協力者
|
||||
DiscImages = ディスクイメージ
|
||||
DiscimagePath = ディスクイメージパス
|
||||
DiscpathChanged = ディスクパスを変更しました。
|
||||
Discpathchange = ディスクパスの変更
|
||||
DiscDefault = デフォルトディスク
|
||||
Display = ディスプレイ
|
||||
Doyouwanttoformat = フォーマットしますか:
|
||||
Doyoureallywanttodelete = 削除しますか:
|
||||
Doyouwanttoretryfor30secs = 再実行しますか?(30秒)
|
||||
Downloadingfile = ファイルのダウンロード中:
|
||||
DownloadBoxartimage = Boxart imageをダウンロードしますか?
|
||||
Downloadfinished = ダウンロードを終了しました。
|
||||
Error = Error !
|
||||
BOOTERROR = BOOT ERROR
|
||||
ErrorreadingDisc = ディスク読込み失敗(Error reading Disc)
|
||||
ExitUSBISOLoader = USB Loader GXを終了しますか?
|
||||
Homemenu = ホームメニュー
|
||||
InitializingNetwork = ネットワークの初期化中...
|
||||
InsertDisk = ディスク挿入
|
||||
InsertaWiiDisc = Wiiディスクを挿入して下さい!
|
||||
InsertaSDCardtodownloadimages = イメージをダウンロードするSDカードを挿入して下さい。
|
||||
InsertaSDCardtosave = 保存するSDカードを挿入して下さい。
|
||||
InsertaSDCardtousethatoption = このオプションを使用するのにSDカードを挿入して下さい。
|
||||
InstallRenameandDeleteareunlocked = 全ての機能がアンロックされてました。
|
||||
Installerror = Install Error!
|
||||
Installagame = ゲームインストール
|
||||
Installinggame = ゲームをインストール中:
|
||||
Failedtoboot = 起動に失敗:
|
||||
FailedtomountfrontSDCard = SDカードの認識に失敗しました。
|
||||
FailedtosetUSB = USB接続に失敗:
|
||||
Failedformating = フォーマットに失敗しました。
|
||||
fave = お気に入り
|
||||
Filenotfound = ファイルを検出できませんでした。
|
||||
filesnotfoundontheserver = サーバーにファイルがありません!
|
||||
filesleft = file(s) left(残りのファイル数)
|
||||
FlipX = Flip-X
|
||||
Force = Force
|
||||
Youneedtoformatapartition = パーティションをフォーマットして下さい。
|
||||
Format = フォーマット
|
||||
Formattingpleasewait = フォーマット中です、暫くお待ち下さい...
|
||||
formated = フォーマット完了!
|
||||
free = 空き
|
||||
FreeSpace = 空容量
|
||||
FullShutdown = 完全シャットダウン
|
||||
GameID = ゲームID
|
||||
Games = ゲーム
|
||||
Gameisalreadyinstalled = ゲームは既にインストール済みです:
|
||||
GameRegion = ゲームの地域情報
|
||||
GameSize = ゲームサイズ
|
||||
GoBack = 戻る
|
||||
//GotoPage = Go to Page
|
||||
HowtoShutdown = シャットダウンの方法は?
|
||||
hour = 時間
|
||||
keyboard = キーボード
|
||||
Language = 言語
|
||||
Langchange = 言語の変更
|
||||
Left = 左
|
||||
LikeSysMenu = Like SysMenu
|
||||
LoadingincIOS = cIOS249でロード中...
|
||||
Loadingstandardlanguage = 標準の言語をロード中...
|
||||
LikeSysMenu = Like SysMenu Loading
|
||||
IOS = cIOS249ロード
|
||||
Lock = ロック
|
||||
LockConsole = コンソールをロックする
|
||||
MP3Menu = MP3メニュー
|
||||
Missingfiles = 検出できなかったファイル
|
||||
Networkiniterror = Network initialization error
|
||||
Neither = どちらでもない
|
||||
Next = 次へ
|
||||
No = いいえ
|
||||
Nofilemissing = ファイルを検出できませんでした!
|
||||
NoHDDfound = HDDを検出できませんでした!
|
||||
NoSDCardinserted = SDカードを検出できませんでした!
|
||||
Nopartitionsfound = パーティションを検出できませんでした。
|
||||
NoUSBDevice = USBデバイスを検出できませんでした。
|
||||
NoWBFSpartitionfound = WBFSパーティションを検出できませんでした。
|
||||
NormalCovers = ノ-マルカバー
|
||||
Normal = Normal(4:3)
|
||||
NotaWiiDisc = Wiiディスクではありません。
|
||||
NoUSBDevicefound = USBデバイズが検出されていません。
|
||||
Notenoughfreespace = 空容量が不足しています!
|
||||
Notasupportedformat = ディスク形式はサポートされていません。
|
||||
notset = セットされませんでした。
|
||||
of = of
|
||||
OFF = オフ
|
||||
OfficialSite = オフィシャルサイト
|
||||
ok = OK
|
||||
ON = オン
|
||||
Parentalcontrol = 保護者による制限
|
||||
Partition = パーティション
|
||||
Password = パスワード
|
||||
PasswordChanged = パスワード変更
|
||||
Passwordhasbeenchanged = パスワードを変更しました
|
||||
Passwordchange = パスワード変更
|
||||
PowerofftheWii = Wiiを電源OFFする
|
||||
Plays = プレイ時間
|
||||
Prev = 前へ
|
||||
PromptsButtons = ボタンを押して~
|
||||
ReloadSDカード = SDカードのリロード
|
||||
RenameGameonWBFS = WBFS上のゲーム名変更
|
||||
Restart = リスタート
|
||||
Return = 戻る
|
||||
ReturntoWii = Wiiメニューへ戻る
|
||||
Right = 右
|
||||
Rumble = 振動
|
||||
QuickBoot = クイック起動
|
||||
Save = セーブ
|
||||
SaveFailed = セーブに失敗しました。
|
||||
Specialthanksto = この場を借りて感謝です☆
|
||||
For = for
|
||||
theUSBLoaderandreleasingthesourcecodethe = 及びリリースされているソースコード
|
||||
secondsleft = 完了までの秒数
|
||||
SelectthePartition = パーティション選択
|
||||
youwanttoformat = フォーマットを実行する。
|
||||
settings = 設定
|
||||
Setasbackgroundmusic = サウンドとして設定する
|
||||
Standard = 標準
|
||||
ShutdowntoIdle = システムをアイドル状態にする
|
||||
ShutdownSystem = システムを終了する
|
||||
Success = 成功:
|
||||
Successfullyinstalled = インストールに成功:
|
||||
Successfullydeleted = 削除に成功:
|
||||
SuccessfullySaved = セーブに成功:
|
||||
SystemDefault = デフォルトシステム
|
||||
ThemePath = テーマパス
|
||||
ThemepathChanged = テーマパスを変更しました。
|
||||
Themepathchange = テーマパスの変更
|
||||
Titlestxtpath = Titles.txt Path
|
||||
TitlestxtpathChanged = titles.txtのPathを変更しました。
|
||||
Titlestxtpathchange = titles.txtのPathを変更
|
||||
Try = 試みる
|
||||
Tooltips = ツールヒント
|
||||
Timeleft = 残り時間:
|
||||
Unlock = アンロック
|
||||
Unicodefix = Unicode Fix
|
||||
Uninstall = アンインストール
|
||||
USBLoaderisprotected = USB Loaderは保護されています。
|
||||
USBDevicenotfound = USBデバイスを検出できませんでした。
|
||||
VideoMode = ビデオモード
|
||||
VIDTVPatch = VIDTVパッチ
|
||||
Volume = ボリューム
|
||||
Waiting = 暫くお待ちください...
|
||||
WaitingforUSBDevice = USBデバイスの応答待ち。
|
||||
WidescreenFix = Widescreen(16:9)
|
||||
WiiMenu = Wiiメニュー
|
||||
WrongPassword = パスワードが違います。
|
||||
Yes = はい
|
||||
YoudonthavecIOS = cIOS222が検出できませんでした。
|
||||
Japanese = 日本語
|
||||
German = ドイツ語
|
||||
English = 英語
|
||||
French = フランス語
|
||||
Spanish = スペイン語
|
||||
Italian = イタリア語
|
||||
Dutch = オランダ語
|
||||
SChinese = 中国語(簡体字)
|
||||
TChinese = 中国語(繁体字)
|
||||
Korean = 韓国語
|
171
Languages/korean
@ -1,171 +0,0 @@
|
||||
Specialthanksto = Special thanks to
|
||||
t3Covers = 3D 표지
|
||||
AppLanguage = USB 로더 언어
|
||||
Areyousure = 확실합니까?
|
||||
AutoPatch = 자동 패치
|
||||
Back = 뒤로
|
||||
BacktoHBCorWiiMenu = 홈브류 메뉴 또는 Wii 메뉴로
|
||||
BacktoLoader = 로더로 돌아감
|
||||
BacktoWiiMenu = Wii 메뉴로 놀아가기
|
||||
BootStandard = 기본 부팅설정
|
||||
BothBoth = 전부 표시
|
||||
Cantcreatedirectory = 디렉토리를 만들 수 없습니다
|
||||
Cancel = 취소
|
||||
Cantbeformated = 포맷할 수 없습니다.
|
||||
Cantdelete = 삭제할 수 없습니다:
|
||||
ClicktoDownloadCovers = 표지를 다운하려면 클릭하세요
|
||||
Clock = 시계
|
||||
Continueinstallgame = 계속 설치하겠습니까?
|
||||
ConsoleDefault = 콘솔 기본값
|
||||
Consoleshouldbeunlockedtomodifyit = 변경하려면 콘솔 잠김을 해제하세요.
|
||||
ConsoleLocked = 콘솔 잠김
|
||||
CorrectPassword = 올바른 비밀번호
|
||||
Couldnotinitializenetwork = 네트워크 초기화 실패!
|
||||
CouldnotopenDisc = 디스크를 열 수 없습니다.
|
||||
CouldnotinitializeDIPmodule = DIP 모듈 초기화 실패!
|
||||
CoverDownload = 표지 다운로드
|
||||
CoverPath = 표지 경로
|
||||
CoverpathChanged = 표지 경로 변경됨
|
||||
Coverpathchange = 표지 경로 변경
|
||||
Credits = Credits
|
||||
DiscImages = 디스크 이미지
|
||||
DiscimagePath = 디스크 이미지 경로
|
||||
DiscpathChanged = 디스크 경로 변경됨
|
||||
Discpathchange = 디스크 경로 변경
|
||||
DiscDefault = 디스크 기본값
|
||||
Display = 화면 표시
|
||||
Doyouwanttoformat = 포맷하겠습니까:
|
||||
Doyoureallywanttodelete = 정말로 삭제하겠습니까:
|
||||
Doyouwanttoretryfor30secs = 30초간 재시도 할까요?
|
||||
Downloadingfile = 파일 다운로드 중:
|
||||
DownloadBoxartimage = 박스 이미지를 다운로드 할까요?
|
||||
Downloadfinished = 다운로드 완료
|
||||
Error = 에러 !
|
||||
BOOTERROR = 부팅 에러
|
||||
ErrorreadingDisc = 디스크 읽기 오류
|
||||
ExitUSBISOLoader = USB로더 GX를 종료할까요?
|
||||
InitializingNetwork = 네트워크 초기화
|
||||
InsertDisk = 디스크를 넣어주세요
|
||||
InsertaWiiDisc = Wii 디스크를 넣으세요!
|
||||
InsertaSDCardtodownloadimages = 다운받은 이미지를 저장할 SD카드를 넣으세요.
|
||||
InsertaSDCardtosave = 저장할 SD카드를 넣으세요.
|
||||
InstallRenameandDeleteareunlocked = USB로더 GX 기능 잠금 해제.
|
||||
Installerror = 설치 에러!
|
||||
Installagame = 게임을 설치할까요
|
||||
Installinggame = 게임 설치 중:
|
||||
Failedtoboot = 부팅 실패:
|
||||
FailedtomountfrontSDcard = SD카드 인식 실패
|
||||
FailedtosetUSB = USB 세팅 실패:
|
||||
Failedformating = 포맷 실패
|
||||
filesnotfoundontheserver = 파일이 서버에 없습니다!
|
||||
filesleft = 파일 남음
|
||||
FlipX = 좌/우 설정
|
||||
Force = 강제
|
||||
Youneedtoformatapartition = 파티션을 포맷해야 합니다
|
||||
Format = 포맷
|
||||
Formattingpleasewait = 포맷 중. 기다려 주세요...
|
||||
formated = 포맷 완료!
|
||||
free = 남음
|
||||
FreeSpace = 여유 공간
|
||||
FullShutdown = 완전히 끄기
|
||||
GameID = 게임 ID
|
||||
Games = 게임
|
||||
Gameisalreadyinstalled = 게임이 이미 설치되어 있습니다.
|
||||
GameRegion = 지역
|
||||
GameSize = 게임 용량
|
||||
GoBack = 뒤로 가기
|
||||
//GotoPage = 페이지
|
||||
HowtoShutdown = 어떻게 종료할까요?
|
||||
Language = 언어
|
||||
Langchange = 언어 변경
|
||||
Left = 왼쪽
|
||||
LikeSysMenu = 시스템 메뉴처럼
|
||||
LoadingincIOS = cIOS249로 로딩
|
||||
Lock = 잠금
|
||||
LockConsole = 콘솔 잠금
|
||||
MP3Menu = MP3 메뉴
|
||||
Missingfiles = 파일 누락
|
||||
Networkiniterror = 네트워크 초기화 에러
|
||||
Neither = 표시 없음
|
||||
Next = 다음
|
||||
No = 아니오
|
||||
Nofilemissing = 누락 파일 없음!
|
||||
NoHDDfound = 하드 디스크가 없습니다!
|
||||
NoSDcardinserted = SD카드가 없습니다!
|
||||
Nopartitionsfound = 파티션이 없습니다.
|
||||
NoUSBDevice = USB 장치가 없습니다.
|
||||
NoWBFSpartitionfound = WBFS 파티션이 없습니다.
|
||||
NormalCovers = 일반 표지
|
||||
Normal = 일반
|
||||
NotaWiiDisc = Wii 디스크가 아닙니다
|
||||
NoUSBDevicefound = USB 장치가 없습니다.
|
||||
Notenoughfreespace = 여유 공간이 부족합니다!
|
||||
notset = 설정되지 않음
|
||||
of = 중
|
||||
OFF = 꺼짐
|
||||
OfficialSite = 공식 사이트
|
||||
ok = 확인
|
||||
ON = 켜짐
|
||||
Parentalcontrol = 자녀보호기능
|
||||
Partition = 파티션
|
||||
Password = 비밀번호
|
||||
PasswordChanged = 비밀번호 변경됨
|
||||
Passwordhasbeenchanged = 비밀번호가 변경되었습니다
|
||||
Passwordchange = 비밀번호 변경
|
||||
PowerofftheWii = Wii 전원 끄기
|
||||
Prev = 이전
|
||||
PromptsButtons = 프롬프트/버튼
|
||||
ReloadSD = SD카드 읽기
|
||||
RenameGameonWBFS = WBFS에서 게임 이름 변경
|
||||
Restart = 다시 시작
|
||||
Return = 돌아가기
|
||||
ReturntoWii = Wii로 돌아가기
|
||||
Right = 오른쪽
|
||||
Rumble = 진동
|
||||
QuickBoot = 게임 바로실행
|
||||
Save = 저장
|
||||
SaveFailed = 저장 실패
|
||||
Specialthanksto = Special thanks to
|
||||
For = for
|
||||
theUSBLoaderandreleasingthesourcecodethe = and releasing the source code
|
||||
secondsleft = 초 남았습니다
|
||||
SelectthePartition = 포맷하려는
|
||||
youwanttoformat = 파티션을 선택하세요
|
||||
settings = 설정
|
||||
ShutdowntoIdle = 대기 상태로
|
||||
ShutdownSystem = 시스템 종료
|
||||
Success = 성공:
|
||||
Successfullyinstalled = 설치 성공:
|
||||
Successfullydeleted = 삭제 성공:
|
||||
SuccessfullySaved = 저장 성공
|
||||
SystemDefault = 시스템 기본값
|
||||
ThemePath = 테마 경로
|
||||
ThemepathChanged = 테마 경로 변경됨
|
||||
Themepathchange = 테마 경로 변경
|
||||
Try = 시도
|
||||
Tooltips = Tooltips
|
||||
Timeleft = 남은 시간:
|
||||
Unlock = 잠금해제
|
||||
Uninstall = 제거
|
||||
USBLoaderisprotected = USB 로더 GX 잠김 상태
|
||||
USBDevicenotfound = USB 장치가 없습니다.
|
||||
VideoMode = 비디오 모드
|
||||
VIDTVPatch = VIDTV 패치
|
||||
Volume = 음량
|
||||
Waiting = 기다리는 중...
|
||||
WaitingforUSBDevice = USB 장치를 기다리는 중
|
||||
WidescreenFix = 와이드 스크린에 맞춤
|
||||
WiiMenu = Wii 메뉴로
|
||||
WrongPassword = 잘못된 비밀번호
|
||||
Yes = 예
|
||||
YoudonthavecIOS = cIOS222가 없습니다.
|
||||
Japanese = 일본어
|
||||
German = 독일어
|
||||
English = 영어
|
||||
French = 불어
|
||||
Spanish = 스페인어
|
||||
Italian = 이태리어
|
||||
Dutch = 네덜란드어
|
||||
SChinese = 중국어(간체)
|
||||
TChinese = 중국어(번체)
|
||||
Korean = 한국어
|
@ -1,192 +0,0 @@
|
||||
//r380, Norwegian v2, 21.05.2009
|
||||
ok = OK
|
||||
addToFavorite = Favoritt
|
||||
all = Alfabetisk
|
||||
AppLanguage = Program språk
|
||||
t3Covers = 3D cover
|
||||
Areyousure = Er du sikker?
|
||||
AutoPatch = AutoPatch
|
||||
Back = Tilbake
|
||||
Backgroundmusic = Bakgrunnsmusikk
|
||||
Backgroundmusicpath = Bakgrunnsmusikk sti endret
|
||||
BacktoHBCorWiiMenu = Tilbake til HBC eller Wii meny
|
||||
BacktoLoader = HBC/Loader
|
||||
BacktoWiiMenu = Wii meny
|
||||
BootStandard = Boot/Standard
|
||||
Both = Begge
|
||||
Cantcreatedirectory = Kan ikke opprette mappestruktur
|
||||
Cancel = Avbryt
|
||||
Cantbeformated = Kan ikke formateres
|
||||
Cantdelete = Kan ikke slette:
|
||||
ClicktoDownloadCovers = Klikk for å laste ned cover
|
||||
Clock = Klokke
|
||||
Close = Lukk
|
||||
Continueinstallgame = Fortsett å installere spill?
|
||||
ConsoleDefault = Konsoll Standard
|
||||
Consoleshouldbeunlockedtomodifyit = Konsoll må være opplåst for å modifisere.
|
||||
ConsoleLocked = Konsoll låst
|
||||
CorrectPassword = Riktig passord
|
||||
Couldnotinitializenetwork = Kan ikke initialisere nettverk!
|
||||
CouldnotopenDisc = Kan ikke åpne plate
|
||||
CouldnotinitializeDIPmodule = Kan ikke initialisere DIP modul!
|
||||
CoverDownload = Cover nedlasting
|
||||
CoverPath = Cover sti
|
||||
CoverpathChanged = Cover sti endret
|
||||
Coverpathchange = Endre cover sti
|
||||
count = Ganger spilt
|
||||
Credits = Medvirkende
|
||||
DiscImages = Plate bilder
|
||||
DiscimagePath = Plate sti
|
||||
DiscpathChanged = Plate sti endret
|
||||
Discpathchange = Endre plate sti
|
||||
DiscDefault = Plate Standard
|
||||
Display = Vis
|
||||
Doyouwanttoformat = Vil du formatere:
|
||||
Doyoureallywanttodelete = Er du sikker på at du vil slette:
|
||||
Doyouwanttoretryfor30secs = Vil du fortsette å prøve i 30 sekunder?
|
||||
Downloadingfile = Laster ned fil:
|
||||
DownloadBoxartimage = Last ned cover bilde?
|
||||
Downloadfinished = Nedlasting ferdig
|
||||
Error = Feil !
|
||||
hour = Timer
|
||||
Homemenu = HOME Meny
|
||||
BOOTERROR = BOOT FEIL
|
||||
ErrorreadingDisc = Feil ved lesing av plate
|
||||
ExitUSBISOLoader = Avslutt USB Loader GX?
|
||||
InitializingNetwork = Initialiserer nettverk
|
||||
InsertDisk = Sett inn plate
|
||||
InsertaWiiDisc = Sett inn en Wii plate!
|
||||
InsertaSDCardtodownloadimages = Sett inn et SD-kort for å laste ned bilder.
|
||||
InsertaSDCardtosave = Sett inn et SD-kort for å lagre.
|
||||
InsertaSDCardtousethatoption = Sett inn et SD-kort for å bruke innstillingen.
|
||||
InstallRenameandDeleteareunlocked = Alle funksjonene til USB Loader GX er opplåst.
|
||||
Installerror = Installasjonsfeil!
|
||||
Installagame = Installer et spill
|
||||
Installinggame = Installerer spill:
|
||||
Failedtoboot = Feil ved start:
|
||||
FailedtomountfrontSDcard = Feil ved montering av SD-kort i front
|
||||
FailedtosetUSB = Feil ved valgt USB:
|
||||
Failedformating = Feil ved formatering
|
||||
fave = Favoritter
|
||||
filesnotfoundontheserver = filer ikke funnet på serveren!
|
||||
Filenotfound = Fil ikke funnet.
|
||||
filesleft = fil(er) gjenstår
|
||||
FlipX = Flip-X
|
||||
Force = Tving
|
||||
Youneedtoformatapartition = Du må formatere en partisjon
|
||||
Format = Formater
|
||||
keyboard = Tastatur
|
||||
Formattingpleasewait = Formaterer, vennligst vent...
|
||||
formated = formatert!
|
||||
free = ledig
|
||||
FreeSpace = Ledig plass
|
||||
FullShutdown = Skru helt av
|
||||
GameID = Spill ID
|
||||
Games = Spill
|
||||
Gameisalreadyinstalled = Spillet er allerede installert:
|
||||
GameRegion = Region
|
||||
GameSize = Spill størrelse
|
||||
GoBack = Gå tilbake
|
||||
HowtoShutdown = Hvordan skru av?
|
||||
Language = Språk
|
||||
Left = Venstre
|
||||
LikeSysMenu = Lik Systemmeny
|
||||
LoadingincIOS = Laster i cIOS249
|
||||
ListSort = Sorter spill liste
|
||||
Loadingstandardlanguage = Laster standard språk.
|
||||
Loadingstandardmusic = Laster standard musikk.
|
||||
Lock = Lås
|
||||
LockConsole = Lås konsoll
|
||||
MP3Menu = MP3 meny
|
||||
Missingfiles = Manglende filer
|
||||
Networkiniterror = Nettverk init feil
|
||||
Neither = Ingen
|
||||
Next = Neste
|
||||
No = Nei
|
||||
Nofilemissing = Ingen filer mangler!
|
||||
NoHDDfound = Ingen HDD funnet!
|
||||
NoSDcardinserted = Intet SD-kort satt i!
|
||||
Nopartitionsfound = Ingen partisjoner funnet
|
||||
NoUSBDevice = Ingen USB enhet
|
||||
NoWBFSpartitionfound = Ingen WBFS partisjon funnet
|
||||
NormalCovers = Normale cover
|
||||
Normal = Normal
|
||||
NotaWiiDisc = Ikke en Wii plate
|
||||
NoUSBDevicefound = Ingen USB enhet funnet.
|
||||
Notenoughfreespace = Ikke nok ledig plass!
|
||||
Notasupportedformat = Ikke et støttet format!
|
||||
notset = ikke satt
|
||||
of = av
|
||||
OFF = AV
|
||||
OfficialSite = Offisiell nettside
|
||||
ON = PÅ
|
||||
Parentalcontrol = Foreldre kontroll
|
||||
Partition = Partisjon
|
||||
Password = Passord
|
||||
PasswordChanged = Passord endret
|
||||
Passwordhasbeenchanged = Passord har blitt endret
|
||||
Passwordchange = Endre passord
|
||||
Plays = Ganger spilt
|
||||
PowerofftheWii = Skru av Wii
|
||||
Prev = Forrige
|
||||
PromptsButtons = Dialog knapper
|
||||
ReloadSD = Les SD på nytt
|
||||
RenameGameonWBFS = Gi nytt navn til spill på WBFS
|
||||
Restart = Start på nytt
|
||||
Return = Gå tilbake
|
||||
ReturntoWii = Tilbake til Wii meny
|
||||
Right = Høyre
|
||||
Rumble = Vibrasjon
|
||||
QuickBoot = Hurtig start
|
||||
Save = Lagre
|
||||
SaveFailed = Lagre feilet
|
||||
Specialthanksto = Spesiell takk til
|
||||
For = for
|
||||
theUSBLoaderandreleasingthesourcecodethe = og utgivelse av kildekoden
|
||||
secondsleft = sekunder gjenstår
|
||||
Setasbackgroundmusic = Bruk som bakgrunnsmusikk?
|
||||
SelectthePartition = Velg partisjonen
|
||||
youwanttoformat = du vil formatere
|
||||
Standard = Standard
|
||||
settings = Innstillinger
|
||||
ShutdowntoIdle = Skru av
|
||||
ShutdownSystem = Skru helt av
|
||||
Success = Suksess:
|
||||
Successfullyinstalled = Vellykket installering:
|
||||
Successfullydeleted = Vellykket sletting:
|
||||
SuccessfullySaved = Vellykket lagring
|
||||
SystemDefault = System Standard
|
||||
ThemePath = Tema sti
|
||||
ThemepathChanged = Tema sti endret
|
||||
Themepathchange = Endre tema sti
|
||||
Titlestxtpath = Titles.txt sti
|
||||
TitlestxtpathChanged = Titles.txt sti endret.
|
||||
Titlestxtpathchange = Endre titles.txt sti
|
||||
Try = Prøv
|
||||
Tooltips = Verktøystips
|
||||
Timeleft = Tid igjen:
|
||||
Unlock = Lås opp
|
||||
Unicodefix = Unicode fiks
|
||||
Uninstall = Avinstaller
|
||||
USBLoaderisprotected = USB Loader GX er beskyttet
|
||||
USBDevicenotfound = USB enhet ikke funnet
|
||||
VideoMode = Video modus
|
||||
VIDTVPatch = VIDTV Patch
|
||||
Volume = Volum
|
||||
Waiting = Venter...
|
||||
WaitingforUSBDevice = Venter på USB enhet
|
||||
WidescreenFix = Fiks for 16/9
|
||||
WiiMenu = Wii meny
|
||||
WrongPassword = Feil passord
|
||||
Yes = Ja
|
||||
YoudonthavecIOS = Du har ikke cIOS222
|
||||
Japanese = Japansk
|
||||
German = Tysk
|
||||
English = Engelsk
|
||||
French = Fransk
|
||||
Spanish = Spansk
|
||||
Italian = Italiensk
|
||||
Dutch = Nederlandsk
|
||||
SChinese = S.Kinesisk
|
||||
TChinese = T.Kinesisk
|
||||
Korean = Koreansk
|
@ -1,194 +0,0 @@
|
||||
t3Covers = Capas 3D
|
||||
addToFavorite = Adicionar aos favoritos
|
||||
all = Alfabética
|
||||
AppLanguage = Idioma
|
||||
Areyousure = Tem a certeza?
|
||||
AutoPatch = Patch automático
|
||||
Back = Voltar
|
||||
Backgroundmusic = Música de fundo
|
||||
Backgroundmusicpath = Pasta Música Fundo
|
||||
BacktoHBCorWiiMenu = Voltar ao Loader/Menu da Wii
|
||||
BacktoLoader = Loader
|
||||
BacktoWiiMenu = Menu da Wii
|
||||
BootStandard = Arranque/Standard
|
||||
Both = Ambos
|
||||
Cantcreatedirectory = Não foi possível criar a pasta
|
||||
Cancel = Cancelar
|
||||
Cantbeformated = Não pode pode ser formatado
|
||||
Cantdelete = Não foi possível apagar:
|
||||
ClicktoDownloadCovers = Carregue para descarregar capas
|
||||
Clock = Relógio
|
||||
Close = Fechar
|
||||
Continueinstallgame = Continuar instalação do jogo?
|
||||
ConsoleDefault = Predefinição Consola
|
||||
Consoleshouldbeunlockedtomodifyit = É necessário desbloquear a configuração para poder modificar o parâmetro.
|
||||
ConsoleLocked = Configuração Bloqueada
|
||||
CorrectPassword = Password Correcta
|
||||
Couldnotinitializenetwork = Não foi possível incializar a Ligação de Rede!
|
||||
CouldnotopenDisc = Não foi possível abrir o Disco
|
||||
CouldnotinitializeDIPmodule = Não foi possível inicializar o módulo DIP!
|
||||
CoverDownload = Download de Capas
|
||||
CoverPath = Pasta Capas
|
||||
CoverpathChanged = Pasta das Capas alterado
|
||||
Coverpathchange = Alterar Pasta das Capas
|
||||
count = Vezes jogadas
|
||||
Credits = Créditos
|
||||
DiscImages = Imagens de Disco
|
||||
DiscimagePath = Pasta Imagens Disco
|
||||
DiscpathChanged = Pasta das Imagens Disco alterada
|
||||
Discpathchange = Alterar da Pasta das Imagens de Disco
|
||||
DiscDefault = Predefinição Disco
|
||||
Display = Mostrar
|
||||
Doyouwanttoformat = Deseja FORMATAR:
|
||||
Doyoureallywanttodelete = Quer mesmo REMOVER o jogo:
|
||||
Doyouwanttoretryfor30secs = Deseja tentar novamente dentro de 30 segs?
|
||||
Downloadingfile = Descarregando ficheiro:
|
||||
DownloadBoxartimage = Descarregar imagem da Caixa?
|
||||
Downloadfinished = Download Terminado
|
||||
Error = Erro !
|
||||
hour = Horas
|
||||
BOOTERROR = ERRO DE ARRANQUE
|
||||
ErrorreadingDisc = Erro ao ler o Disco
|
||||
ExitUSBISOLoader = Pretende sair do USB Loader GX?
|
||||
InitializingNetwork = Inicializando Ligação de Rede
|
||||
InsertDisk = Insira o Disco
|
||||
InsertaWiiDisc = Insira um Disco da Wii!
|
||||
InsertaSDCardtodownloadimages = Insira um cartão SD para descarregar as imagens.
|
||||
InsertaSDCardtosave = Insira um cartão SD para guardar.
|
||||
InsertaSDCardtousethatoption = Insira um cartão SD para usar esta funcionalidade.
|
||||
InstallRenameandDeleteareunlocked = As configurações estão desbloqueadas.
|
||||
Installerror = Erro de Instalação!
|
||||
Installagame = Instalar um jogo
|
||||
Installinggame = Instalando jogo:
|
||||
Failedtoboot = Falha ao arrancar:
|
||||
FailedtomountfrontSDcard = Falha ao montar cartão SD
|
||||
FailedtosetUSB = Falha ao iniciar USB:
|
||||
Failedformating = Falha ao formatar
|
||||
fave = Favoritos
|
||||
Filenotfound = Ficheiro não encontrado.
|
||||
filesnotfoundontheserver = ficheiros não encontrados no servidor!
|
||||
filesleft = ficheiros(s) restante(s)
|
||||
FlipX = Paginação Horizontal
|
||||
Force = Forçar
|
||||
Youneedtoformatapartition = É necessário FORMATAR a partição
|
||||
Format = Formatar
|
||||
Formattingpleasewait = Formatando, por favor aguarde...
|
||||
formated = formatado!
|
||||
free = livres
|
||||
FreeSpace = Espaço Livre
|
||||
FullShutdown = Desligar
|
||||
GameID = ID do Jogo
|
||||
Games = Jogos
|
||||
Gameisalreadyinstalled = Este jogo já está instalado:
|
||||
GameRegion = Região
|
||||
GameSize = Tamanho do Jogo
|
||||
GoBack = Voltar
|
||||
//GotoPage = Ir para a Página
|
||||
HowtoShutdown = Como desligar a consola?
|
||||
Homemenu = Menú Inicial
|
||||
Keyboard = Teclado
|
||||
Language = Idioma
|
||||
Langchange = Alterar Idioma
|
||||
Left = Esquerda
|
||||
LikeSysMenu = Igual ao Menu da Wii
|
||||
ListSort = Ordenação Jogos
|
||||
LoadingincIOS = Carregando com o cIOS249
|
||||
Loadingstandardlanguage = Carregado idioma padrão.
|
||||
Loadingstandardmusic = Carregando música padrão.
|
||||
Lock = Bloquear
|
||||
LockConsole = Bloquear Configurações
|
||||
MP3Menu = Menu MP3
|
||||
Missingfiles = Ficheiros em falta
|
||||
Networkiniterror = Erro ao inicializar ligação de rede
|
||||
Neither = Nenhum
|
||||
Next = Próximo
|
||||
No = Não
|
||||
Nofilemissing = Não há ficheiros em falta!
|
||||
NoHDDfound = Não foi encontrado nenhum Disco Rígido!
|
||||
NoSDcardinserted = Cartão SD não inserido!
|
||||
Nopartitionsfound = Não foram encontradas partições
|
||||
NoUSBDevice = Nenhum dispositivo USB encontrado
|
||||
NoWBFSpartitionfound = Não foi encontrada nenhuma partição WBFS
|
||||
NormalCovers = Capas Normais
|
||||
Normal = Normal
|
||||
NotaWiiDisc = Não é um Disco da Wii
|
||||
NoUSBDevicefound = Nenhum dispositivo USB encontrado.
|
||||
Notenoughfreespace = Não há espaço livre suficiente!
|
||||
notset = não definido
|
||||
of = de
|
||||
OFF = Desligado
|
||||
OfficialSite = Site Oficial
|
||||
ok = OK
|
||||
ON = Ligado
|
||||
Parentalcontrol = Controlo Parental
|
||||
Partition = Partição
|
||||
Password = Password
|
||||
PasswordChanged = Password Alterada
|
||||
Passwordhasbeenchanged = A Password foi alterada
|
||||
Passwordchange = Alterar Password
|
||||
Plays = Vezes jogadas
|
||||
PowerofftheWii = Desligar a Wii
|
||||
Prev = Anterior
|
||||
PromptsButtons = Mensagens/Botões
|
||||
ReloadSD = Actualizar do cartão SD
|
||||
RenameGameonWBFS = Alterar nome do jogo na partição WBFS
|
||||
Restart = Reiniciar
|
||||
Return = Voltar
|
||||
ReturntoWii = Menu da Wii
|
||||
Right = Direita
|
||||
Rumble = Vibração
|
||||
QuickBoot = Arranque Rápido
|
||||
Save = Gravar
|
||||
SaveFailed = Falha ao Gravar
|
||||
Specialthanksto = Agradecimentos
|
||||
Titlestxtpath = Pasta Titles.txt
|
||||
TitlestxtpathChanged = Pasta do ficheiro titles.txt alterada.
|
||||
Titlestxtpathchange = Alterar pasta do titles.txt
|
||||
For = pelo
|
||||
theUSBLoaderandreleasingthesourcecodethe = e ter disponibilizado o código fonte
|
||||
secondsleft = segundos restantes
|
||||
SelectthePartition = Seleccione a Partição
|
||||
youwanttoformat = Deseja formatar?
|
||||
Standard = Standard
|
||||
settings = Configurações
|
||||
ShutdowntoIdle = Standby
|
||||
ShutdownSystem = Desligar
|
||||
Success = Sucesso:
|
||||
Successfullyinstalled = Instalado com Sucesso:
|
||||
Successfullydeleted = Removido com Sucesso:
|
||||
SuccessfullySaved = Gravado com Sucesso
|
||||
SystemDefault = Predefinição Sistema
|
||||
ThemePath = Pasta Temas
|
||||
ThemepathChanged = Pasta dos Temas alterada
|
||||
Themepathchange = Alterar pasta dos Temas
|
||||
Try = Tentar
|
||||
Tooltips = Dicas
|
||||
Timeleft = Tempo restante:
|
||||
Unlock = Desbloquear
|
||||
Unicodefix = Corrigir Unicode
|
||||
Uninstall = Remover
|
||||
USBLoaderisprotected = O USB Loader GX está bloqueado
|
||||
USBDevicenotfound = Dispositivo USB não encontrado
|
||||
VideoMode = Modo de Vídeo
|
||||
VIDTVPatch = Patch VIDTV
|
||||
Volume = Volume
|
||||
Waiting = Aguardando...
|
||||
WaitingforUSBDevice = Aguardando pelo Dispositivo USB
|
||||
WidescreenFix = Correcção Widescreen
|
||||
WiiMenu = Menu da Wii
|
||||
WrongPassword = Password Incorrecta
|
||||
Yes = Sim
|
||||
YoudonthavecIOS = cIOS222 não instalado
|
||||
Japanese = Japonês
|
||||
German = Alemão
|
||||
English = Inglês
|
||||
French = Francês
|
||||
Spanish = Espanhol
|
||||
Italian = Italiano
|
||||
Dutch = Holandês
|
||||
SChinese = Chinês Simplificado
|
||||
TChinese = Chinês Tradicional
|
||||
Korean = Coreano
|
||||
// Portuguese(pt-pt) Language File rev4.4 (22-05-2009 9:54) for GUI USB Loader GX 1
|
||||
// Tested with Loader rev385
|
||||
// Translated by Sky8000
|
@ -1,186 +0,0 @@
|
||||
Specialthanksto = Отдельное спасибо :
|
||||
addToFavorite = Добавить в избранное
|
||||
t3Covers = 3D Обложки
|
||||
AppLanguage = Язык приложения
|
||||
Areyousure = Вы уверены ?
|
||||
AutoPatch = Авто Патч
|
||||
Back = Назад
|
||||
Backgroundmusic = Фоновая музыка
|
||||
Backgroundmusicpath = Путь к фоновой музыке
|
||||
BacktoHBCorWiiMenu = Вернуться в HBC или меню Wii
|
||||
BacktoLoader = Вернуться в загрузчик
|
||||
BacktoWiiMenu = Вернуться в меню Wii
|
||||
BootStandard = Загрузка/Стандарт
|
||||
Both = Оба
|
||||
Cantcreatedirectory = Не могу создать папку
|
||||
Cancel = Отмена
|
||||
Cantbeformated = Невозможно отформатировать
|
||||
Cantdelete = Невозможно удалить:
|
||||
ClicktoDownloadCovers = Нажми, чтобы скачать обложки
|
||||
Clock = Часы
|
||||
Close = Закрыть
|
||||
Continueinstallgame = Продолжить установку игры ?
|
||||
ConsoleDefault = По умолчанию (консоль)
|
||||
Consoleshouldbeunlockedtomodifyit = Для изменения консоль должна быть разблокирована.
|
||||
ConsoleLocked = Консоль заблокирована
|
||||
CorrectPassword = Правильный пароль
|
||||
Couldnotinitializenetwork = Не могу инициализировать сеть!
|
||||
CouldnotopenDisc = Не могу прочесть диск
|
||||
CouldnotinitializeDIPmodule = Не могу запустить модуль DIP!
|
||||
CoverDownload = Скачать обложку
|
||||
CoverPath = Путь к обложкам
|
||||
CoverpathChanged = Путь к обложкам был изменен.
|
||||
Coverpathchange = Сменить путь к обложкам
|
||||
Credits = Об авторах
|
||||
DiscImages = Изображения дисков
|
||||
DiscimagePath = путь к изображениям дисков
|
||||
DiscpathChanged = путь к изображениям дисков изменен
|
||||
Discpathchange = изменить путь к изображениям дисков
|
||||
DiscDefault = По умолчанию (диск)
|
||||
Display = Отображать
|
||||
Doyouwanttoformat = Вы хотите отформатировать:
|
||||
Doyoureallywanttodelete = Вы хотите удалить:
|
||||
Doyouwanttoretryfor30secs = Хотите попробовать еще раз на 30 секунд?
|
||||
Downloadingfile = Скачиваю файл:
|
||||
DownloadBoxartimage = Скачать обложку диска?
|
||||
Downloadfinished =Скачивание завершено
|
||||
Error = Ошибка !
|
||||
BOOTERROR = ОШИБКА ЗАГРУЗКИ
|
||||
ErrorreadingDisc = Ошибка чтения диска
|
||||
ExitUSBISOLoader = Выйти из USB Loader GX?
|
||||
InitializingNetwork = Инициализирую сеть
|
||||
InsertDisk = Вставьте диск
|
||||
InsertaWiiDisc = Вставьте диск от Wii!
|
||||
InsertaSDCardtodownloadimages = Для скачивания изображений вставьте SD карту.
|
||||
InsertaSDCardtosave = Для сохранения вставьте SD карту.
|
||||
InsertaSDCardtousethatoption = Для использования этой функции нужна SD карта
|
||||
InstallRenameandDeleteareunlocked = Все функции USB Loader GX разблокированы.
|
||||
Installerror = Ошибка установки!
|
||||
Installagame = Установить игру
|
||||
Installinggame = Устанавливаю игру:
|
||||
Failedtoboot = Ошибка загрузки:
|
||||
FailedtomountfrontSDcard = Ошибка при монтировании SD карты
|
||||
FailedtosetUSB = Ошибка инициализации USB:
|
||||
Failedformating = Форматирование не удалось
|
||||
Filenotfound = Файл не найден
|
||||
filesnotfoundontheserver = файлы не найдены на сервере!
|
||||
filesleft = осталось файлов:
|
||||
FlipX = Flip-X
|
||||
Force = Принудительно
|
||||
Youneedtoformatapartition = Требуется форматирование раздела
|
||||
Format = Форматировать
|
||||
Formattingpleasewait = Форматирую, пожалуйста подождите...
|
||||
formated = форматирование завершено!
|
||||
free = свободно
|
||||
FreeSpace = Свободное пространство
|
||||
FullShutdown = Полное отключение
|
||||
GameID = ID игры
|
||||
Games = Игры
|
||||
Gameisalreadyinstalled = Игра уже установлена:
|
||||
GameRegion = Регион
|
||||
GameSize = Размер игры
|
||||
GoBack = Назад
|
||||
GotoPage = На страницу
|
||||
HowtoShutdown = Способ отключения?
|
||||
Homemenu = Домашнее Меню
|
||||
Language = Язык
|
||||
Langchange = Сменить язык
|
||||
Left = Налево
|
||||
LikeSysMenu = как SysMenu
|
||||
LoadingincIOS = загружаю с cIOS249
|
||||
Lock = Заблокировать
|
||||
LockConsole = Заблокировать консоль
|
||||
MP3Menu = Меню MP3
|
||||
Missingfiles = Отсутствующие файлы
|
||||
Networkiniterror = Ошибка инициализации сети
|
||||
Neither = Ни то, ни другое
|
||||
Next = Следующий
|
||||
No = Нет
|
||||
Nofilemissing = Файл не найден!
|
||||
NoHDDfound = HDD не найден!
|
||||
NoSDcardinserted = SD карта не вставлена!
|
||||
Nopartitionsfound = Разделы не найдены
|
||||
NoUSBDevice = Нет USB устройств
|
||||
NoWBFSpartitionfound = Не найден раздел WBFS
|
||||
NormalCovers = Обычные обложки
|
||||
Normal = Обычный
|
||||
NotaWiiDisc = Это не диск Wii
|
||||
NoUSBDevicefound =USB устройств не обнаружено
|
||||
Notenoughfreespace = Не хватает свободного места!
|
||||
Notasupportedformat = Формат не поддерживается
|
||||
notset = не установлено
|
||||
of = из
|
||||
OFF = ВЫКЛ
|
||||
OfficialSite = Официальный сайт
|
||||
ok = OK
|
||||
ON = ВКЛ
|
||||
Parentalcontrol = Родительский контроль
|
||||
Partition = Раздел
|
||||
Password = Пароль
|
||||
PasswordChanged = Пароль изменен
|
||||
Passwordhasbeenchanged = Пароль был изменен
|
||||
Passwordchange = Сменить пароль
|
||||
PowerofftheWii = Выключить Wii
|
||||
Plays = Воспроизводится
|
||||
Prev = Предыдущий
|
||||
PromptsButtons = Кнопки приглашения
|
||||
ReloadSD = Перечитать SD карту
|
||||
RenameGameonWBFS = Переименовать игры в WBFS
|
||||
Restart = Перезапустить
|
||||
Return = Вернуться
|
||||
ReturntoWii = Вернуться в меню Wii
|
||||
Right = Направо
|
||||
Rumble = Вибрация
|
||||
QuickBoot = Быстрая загрузка
|
||||
Save = Сохранить
|
||||
SaveFailed = Сохранение не удалось
|
||||
Specialthanksto = Отдельные благодарности
|
||||
For = за
|
||||
theUSBLoaderandreleasingthesourcecodethe = и публикацию исходного кода
|
||||
secondsleft = секунд осталось
|
||||
SelectthePartition = Выберите раздел,
|
||||
youwanttoformat = который вы хотите отформатировать
|
||||
settings = Установки
|
||||
Standard = Стандартный
|
||||
ShutdowntoIdle = Перевести в режим сна
|
||||
ShutdownSystem = Выключить систему
|
||||
Success = Успех:
|
||||
Successfullyinstalled = Успешно установлено:
|
||||
Successfullydeleted = Успешно удалено:
|
||||
SuccessfullySaved = Успешно сохранено
|
||||
SystemDefault = По умолчанию
|
||||
ThemePath = Путь к темам
|
||||
ThemepathChanged = путь к темам изменён
|
||||
Themepathchange = изменить путь к темам
|
||||
Titlestxtpath = путь к titles.txt
|
||||
Titlestxtpathchange = изменить путь к titles.txt
|
||||
TitlestxtpathChanged = путь к titles.txt изменён
|
||||
Try = Попытка
|
||||
Tooltips = Подсказки
|
||||
Timeleft = Осталось времени:
|
||||
Unlock = Разблокировать
|
||||
Unicodefix = фикс Unicode
|
||||
Uninstall = Деинсталлировать
|
||||
USBLoaderisprotected = USB Loader GX заблокирован
|
||||
USBDevicenotfound = USB устройство не найдено
|
||||
VideoMode = Видео режим
|
||||
VIDTVPatch = патч VIDTV
|
||||
Volume = Громкость
|
||||
Waiting = Ожидание...
|
||||
WaitingforUSBDevice = Ожидание USB устройства
|
||||
WidescreenFix = Широкоформатный фикс
|
||||
WiiMenu = Меню Wii
|
||||
WrongPassword = Неверный пароль
|
||||
Yes = Да
|
||||
YoudonthavecIOS = У вас не установлен cIOS222
|
||||
Japanese = Японский
|
||||
German = Немецкий
|
||||
English = Английский
|
||||
French = Французский
|
||||
Spanish = Испанский
|
||||
Italian = Итальянский
|
||||
Dutch = Голландский
|
||||
SChinese = Упрощенный китайский
|
||||
TChinese = Традиционный китайский
|
||||
Korean = Корейский
|
||||
Russian = Русский
|
@ -1,178 +0,0 @@
|
||||
Specialthanksto = 特别感谢
|
||||
t3Coverst = 3D 封面
|
||||
AppLanguage = 语言设定
|
||||
Areyousure = 确定?
|
||||
AutoPatch = 自动选择
|
||||
Back = 返回
|
||||
BacktoHBCorWiiMenu = 返回 HBC 或 Wii 系统菜单
|
||||
BacktoLoader = 返回 Loader
|
||||
BacktoWiiMenu = 返回 Wii 系统菜单
|
||||
BootStandard = 启动/标准
|
||||
BothBoth = 全部
|
||||
Cantcreatedirectory = 无法建立目录
|
||||
Cancel = 取消
|
||||
Cantbeformated = 无法格式化
|
||||
Cantdelete = 无法删除:
|
||||
ClicktoDownloadCovers = 点击下载封面
|
||||
Clock = 时钟
|
||||
Continueinstallgame = 继续安装游戏?
|
||||
ConsoleDefault = 主机默认
|
||||
Consoleshouldbeunlockedtomodifyit = 需解锁以开启设定功能.
|
||||
ConsoleLocked = 主机锁定
|
||||
CorrectPassword = 密码正确
|
||||
Couldnotinitializenetwork = 无法启动网络!
|
||||
CouldnotopenDisc = 无法开启光盘
|
||||
CouldnotinitializeDIPmodule = 无法启动 DIP 模块!
|
||||
CoverDownload = 下载封面
|
||||
CoverPath = 封面存放路径
|
||||
CoverpathChanged = 封面路径已变更
|
||||
Coverpathchange = 变更封面存放路径
|
||||
Credits = Credits
|
||||
DiscImages = DVD封面
|
||||
DiscimagePath = 菜单封面存放路径
|
||||
DiscpathChanged = DVD封面路径已变更
|
||||
Discpathchange = 变更DVD封面存放路径
|
||||
DiscDefault = 游戏默认
|
||||
Display = 显示
|
||||
Doyouwanttoformat = 是否格式化:
|
||||
Doyoureallywanttodelete = 确定删除:
|
||||
Doyouwanttoretryfor30secs = 是否等待30秒重试?
|
||||
Downloadingfile = 下载文件:
|
||||
DownloadBoxartimage = 下载封面图片?
|
||||
Downloadfinished = 下载完成
|
||||
Error = 错误 !
|
||||
BOOTERROR = 启动错误
|
||||
ErrorreadingDisc = 读取光盘错误
|
||||
ExitUSBISOLoader = 离开 USB Loader GX?
|
||||
InitializingNetwork = 正在启动网络
|
||||
InsertDisk = 插入光盘
|
||||
InsertaWiiDisc = 插入 Wii 光盘!
|
||||
InsertaSDCardtodownloadimages = 插入 SD 卡下载封面.
|
||||
InsertaSDCardtosave = 插入SD卡保存.
|
||||
InstallRenameandDeleteareunlocked = USB Loader GX 功能已解锁.
|
||||
Installerror = 安装错误!
|
||||
Installagame = 安装游戏
|
||||
Installinggame = 正在安装游戏:
|
||||
Failedtoboot = 无法启动:
|
||||
FailedtomountfrontSDcard = 挂载前端 SD 卡失败
|
||||
FailedtosetUSB = 无法设定 USB:
|
||||
Failedformating = 格式化失败
|
||||
filesnotfoundontheserver = 服务器中无此文件!
|
||||
filesleft = 剩余文件
|
||||
FlipX = 按键规则
|
||||
Force = 强制
|
||||
Youneedtoformatapartition = 必须格式化一个分区
|
||||
Format = 格式化
|
||||
Formattingpleasewait = 格式化中, 请稍候...
|
||||
formated = 完成格式化!
|
||||
free = 剩余
|
||||
FreeSpace = 剩余空间
|
||||
FullShutdown = 完全关机
|
||||
GameID = 游戏ID
|
||||
Games = 游戏
|
||||
Gameisalreadyinstalled = 已安装过游戏:
|
||||
GameRegion = 区域
|
||||
GameSize = 游戏容量
|
||||
GoBack = 返回
|
||||
GotoPage = 前往页面
|
||||
HowtoShutdown = 如何关机?
|
||||
Language = 语言
|
||||
Langchange = 变更语言
|
||||
Left = 左
|
||||
LikeSysMenu = 同系统选单
|
||||
LoadingincIOS = 以 cIOS249 载入
|
||||
Lock = 锁定
|
||||
LockConsole = 锁定控制台
|
||||
MP3Menu = MP3 选单
|
||||
Missingfiles = 缺少的文件
|
||||
Networkiniterror = 网络启动错误
|
||||
Neither = 全不
|
||||
Next = 往后
|
||||
No = 否
|
||||
Nofilemissing = 没有缺少的文件!
|
||||
NoHDDfound = 找不到硬盘!
|
||||
NoSDcardinserted = 未插入 SD 卡!
|
||||
Nopartitionsfound = 找不到分区
|
||||
NoUSBDevice = 没有 USB 设备
|
||||
NoWBFSpartitionfound = 找不到 WBFS 分区
|
||||
NormalCovers = 一般封面
|
||||
Normal = 一般
|
||||
NotaWiiDisc = 不是 Wii 的光盘
|
||||
NoUSBDevicefound = 找不到 USB 设备.
|
||||
Notenoughfreespace = 剩余空间不足!
|
||||
notset = 未设定
|
||||
of = 的
|
||||
OFF = 关闭
|
||||
OfficialSite = 官方网址
|
||||
ok = 确定
|
||||
ON = 开启
|
||||
Parentalcontrol = 家长控制
|
||||
Partition = 分区
|
||||
Password = 密码
|
||||
PasswordChanged = 密码已变更
|
||||
Passwordhasbeenchanged = 密码已被变更
|
||||
Passwordchange = 变更密码
|
||||
PowerofftheWii = 关闭Wii主机
|
||||
Prev = 往前
|
||||
PromptsButtons = 显示校正
|
||||
ReloadSD = 重新载入SD卡
|
||||
RenameGameonWBFS = 改变WBFS(硬盘)上的游戏名称
|
||||
Restart = 重新启动
|
||||
Return = 返回
|
||||
ReturntoWii = 返回Wii系统菜单
|
||||
Right = 右
|
||||
Rumble = 震动
|
||||
QuickBoot = 快速启动
|
||||
Save = 保存
|
||||
SaveFailed = 保存失败
|
||||
Specialthanksto = 特别感谢
|
||||
For = 的
|
||||
theUSBLoaderandreleasingthesourcecodethe = 放出原代码
|
||||
secondsleft = 剩余秒数
|
||||
SelectthePartition = 选择分区
|
||||
youwanttoformat = 是否格式化
|
||||
settings = 设置
|
||||
ShutdowntoIdle = 进入待机状态
|
||||
ShutdownSystem = 关闭系统
|
||||
Success = 成功:
|
||||
Successfullyinstalled = 成功的安装:
|
||||
Successfullydeleted = 成功的删除:
|
||||
SuccessfullySaved = 保存成功
|
||||
SystemDefault = 系统默认
|
||||
ThemePath = 主题存放路径
|
||||
ThemepathChanged = 主题路径已变更
|
||||
Themepathchange = 变更主题存放路径
|
||||
Try = 尝试
|
||||
Tooltips = 工具提示
|
||||
Timeleft = 剩余时间:
|
||||
Unlock = 解锁
|
||||
Uninstall = 删除
|
||||
USBLoaderisprotected = USB Loader GX 被锁定
|
||||
USBDevicenotfound = 找不到 USB 设备
|
||||
VideoMode = 视频制式
|
||||
VIDTVPatch = VIDTV 修改
|
||||
Volume = 音量
|
||||
Waiting = 等待中...
|
||||
WaitingforUSBDevice = 等待 USB 设备
|
||||
WidescreenFix = 宽屏校正
|
||||
WiiMenu = Wii 系统菜单
|
||||
WrongPassword = 密码错误
|
||||
Yes = 是
|
||||
YoudonthavecIOS = 未安装 cIOS222
|
||||
Japanese = 日文
|
||||
German = 德文
|
||||
English = 英文
|
||||
French = 法文
|
||||
Spanish = 西班牙文
|
||||
Italian = 意大利文
|
||||
Dutch = 荷文
|
||||
SChinese = 简体中文
|
||||
TChinese = 繁体中文
|
||||
Korean = 韩文
|
||||
keyboard = 键盘
|
||||
Unicodefix = Unicode 修正
|
||||
Filenotfound = 找不到文件
|
||||
Loadingstandardlanguage = 载入标准语言
|
||||
Titlestxtpath = Titles.txt 存放路径
|
||||
TitlestxtpathChanged = titles.txt 路径已变更
|
||||
Titlestxtpathchange = 变更 titles.txt 存放路径
|
@ -1,194 +0,0 @@
|
||||
t3Covers = Carátulas 3D
|
||||
addToFavorite = Favoritos
|
||||
all = Alfabético
|
||||
AppLanguage = Idioma Aplic.
|
||||
Areyousure = ¿Estás seguro?
|
||||
AutoPatch = Auto-Parchear
|
||||
Back = Volver
|
||||
Backgroundmusic = Música de fondo
|
||||
Backgroundmusicpath = Ruta a Música cambiada
|
||||
BacktoHBCorWiiMenu = Volver a HBC o Menú Wii
|
||||
BacktoLoader = Volver al HBC
|
||||
BacktoWiiMenu = Volver a Menú Wii
|
||||
BootStandard = Inicio/Estandar
|
||||
Both = Ambos
|
||||
Cantcreatedirectory = No se creó directorio
|
||||
Cancel = Cancelar
|
||||
Cantbeformated = No se pudo formatear
|
||||
Cantdelete = No se eliminó:
|
||||
ClicktoDownloadCovers = Click para bajar Carátulas
|
||||
Clock = Reloj
|
||||
Close = Cerrar
|
||||
Continueinstallgame = ¿Continuar instalando juego?
|
||||
ConsoleDefault = Pred. Consola
|
||||
Consoleshouldbeunlockedtomodifyit = Debes desbloquear la consola para modificar.
|
||||
ConsoleLocked = Consola Bloqueada
|
||||
CorrectPassword = Contraseña Correcta
|
||||
Couldnotinitializenetwork = ¡No se pudo iniciar la Conexión!
|
||||
CouldnotopenDisc = No se puede abrir Disco
|
||||
CouldnotinitializeDIPmodule = ¡No se pudo iniciar módulo DIP!
|
||||
CoverDownload = Descarga de Carátulas
|
||||
CoverPath = Ruta Carátulas
|
||||
CoverpathChanged = Ruta de Carátulas cambiada
|
||||
Coverpathchange = Cambio ruta Carátulas
|
||||
count = Veces Jugadas
|
||||
Credits = Créditos
|
||||
DiscImages = Imágen Discos
|
||||
DiscimagePath = Ruta Img. Disco
|
||||
DiscpathChanged = Ruta Img. Disco cambiada
|
||||
Discpathchange = Cambio ruta Img. Disco
|
||||
DiscDefault = Pred. Disco
|
||||
Display = Mostrar
|
||||
Doyouwanttoformat = Quieres formatear:
|
||||
Doyoureallywanttodelete = ¿Realmente quieres borrar?:
|
||||
Doyouwanttoretryfor30secs = ¿Quiéres reintentar por 30 segs.?
|
||||
Downloadingfile = Descargando archivo:
|
||||
DownloadBoxartimage = ¿Descargar Imágenes?
|
||||
Downloadfinished = Descarga completa
|
||||
Error = ¡Error!
|
||||
BOOTERROR = ERROR DE INICIO
|
||||
ErrorreadingDisc = Error leyendo Disco
|
||||
ExitUSBISOLoader = ¿Salir de USB Loader GX?
|
||||
Homemenu = Menú de Inicio
|
||||
InitializingNetwork = Iniciando Conexión
|
||||
InsertDisk = Inserta el Disco
|
||||
InsertaWiiDisc = ¡Inserta un Disco Wii!
|
||||
InsertaSDCardtodownloadimages = Insertar SD para bajar imágenes.
|
||||
InsertaSDCardtosave = Insertar SD para guardar.
|
||||
InsertaSDCardtousethatoption = Insertar SD para usar esta opción
|
||||
InstallRenameandDeleteareunlocked = Todas las caracteristicas del USB Loader GX desbloqueadas.
|
||||
Installerror = ¡Error de Instalación!
|
||||
Installagame = Instalar un juego
|
||||
Installinggame = Instalando juego:
|
||||
Failedtoboot = Fallo al iniciar:
|
||||
FailedtomountfrontSDcard = Fallo al montar SD
|
||||
FailedtosetUSB = Fallo al iniciar USB:
|
||||
Failedformating = Fallo al formatear
|
||||
fave = Favoritos
|
||||
Filenotfound = Archivo no encontrado.
|
||||
filesnotfoundontheserver = ¡ Archivo(s) no encontrado(s) en el servidor!
|
||||
filesleft = archivo(s) restante(s)
|
||||
FlipX = Desplazamiento X
|
||||
Force = Forzar
|
||||
Youneedtoformatapartition = Necesitas formatear una partición
|
||||
Format = Formateo
|
||||
Formattingpleasewait = Formateando, por favor espera...
|
||||
formated = ¡formateado!
|
||||
free = libres
|
||||
FreeSpace = Espacio Libre
|
||||
FullShutdown = Apagado Total
|
||||
GameID = ID de Juego
|
||||
Games = Juegos
|
||||
Gameisalreadyinstalled = El juego ya estaba instalado:
|
||||
GameRegion = Región
|
||||
GameSize = Tamaño del Juego
|
||||
GoBack = Volver
|
||||
//GotoPage = Ir a Página
|
||||
HowtoShutdown = ¿Cómo Apagar?
|
||||
hour = Horas
|
||||
Keyboard = Teclado
|
||||
Language = Idioma
|
||||
Langchange = Cambio de Idioma
|
||||
Left = Izquierda
|
||||
LikeSysMenu = Como Menú Sist.
|
||||
LoadingincIOS = Cargando en cIOS249
|
||||
ListSort = Ordenar juegos
|
||||
Loadingstandardlanguage = Cargando idioma estandar.
|
||||
Loadingstandardmusic = Cargando música estandar.
|
||||
Lock = Bloquear
|
||||
LockConsole = Bloquear consola
|
||||
MP3Menu = Menú MP3
|
||||
Missingfiles = Archivo(s) faltante(s)
|
||||
Networkiniterror = Error inicio conexión
|
||||
Neither = Ninguno
|
||||
Next = Siguiente
|
||||
No = No
|
||||
Nofilemissing = ¡No faltan archivos!
|
||||
NoHDDfound = ¡HDD no encontrado!
|
||||
NoSDcardinserted = ¡SD no insertada!
|
||||
Nopartitionsfound = Particiones no encontradas
|
||||
NoUSBDevice = USB no encontrado
|
||||
NoWBFSpartitionfound = Partición WBFS no encontrada
|
||||
NormalCovers = Carátulas Norm.
|
||||
Normal = Normal
|
||||
NotaWiiDisc = No es un Disco Wii
|
||||
NoUSBDevicefound = USB no encontrado.
|
||||
Notenoughfreespace = ¡No hay suficiente espacio libre!
|
||||
Notasupportedformat = Formato no soportado.
|
||||
notset = no puesto
|
||||
of = de
|
||||
OFF = Apagado
|
||||
OfficialSite = Sitio Oficial
|
||||
ok = OK
|
||||
ON = Encendido
|
||||
Parentalcontrol = Control Parental
|
||||
Partition = Partición
|
||||
Password = Contraseña
|
||||
PasswordChanged = Contraseña cambiada
|
||||
Passwordhasbeenchanged = Contraseña ha sido cambiada
|
||||
Passwordchange = Cambio Contraseña
|
||||
PowerofftheWii = Apagar la Wii
|
||||
Plays = Veces Jugadas
|
||||
Prev = Ant.
|
||||
PromptsButtons = Botones
|
||||
ReloadSD = Recargar SD
|
||||
RenameGameonWBFS = Renombrar juego en WBFS
|
||||
Restart = Reiniciar
|
||||
Return = Volver
|
||||
ReturntoWii = Volver a Menú Wii
|
||||
Right = Derecha
|
||||
Rumble = Vibración
|
||||
QuickBoot = Inicio Rápido
|
||||
Save = Guardar
|
||||
SaveFailed = Fallo al guardar
|
||||
Specialthanksto = Agradecimientos a
|
||||
For = por
|
||||
theUSBLoaderandreleasingthesourcecodethe = y liberar el código fuente
|
||||
secondsleft = segundos restantes
|
||||
SelectthePartition = Selecciona la partición
|
||||
youwanttoformat = ¿quieres formatear?
|
||||
settings = Configuración
|
||||
Setasbackgroundmusic = Poner como música de fondo
|
||||
Standard = Estandar
|
||||
ShutdowntoIdle = Apagar a Idle
|
||||
ShutdownSystem = Apagar Sistema
|
||||
Success = Conseguido:
|
||||
Successfullyinstalled = Instalado correctamente:
|
||||
Successfullydeleted = Borrado correctamente:
|
||||
SuccessfullySaved = Guardado correctamente
|
||||
SystemDefault = Pred. Sistema
|
||||
ThemePath = Ruta del Tema
|
||||
ThemepathChanged = Ruta de Tema cambiada
|
||||
Themepathchange = Cambio Ruta de Tema
|
||||
Titlestxtpath = Ruta Titles.txt
|
||||
TitlestxtpathChanged = Ruta a titles.txt cambiada.
|
||||
Titlestxtpathchange = Cambio ruta titles.txt
|
||||
Try = Intentar
|
||||
Tooltips = InfoBurbujas
|
||||
Timeleft = T. restante:
|
||||
Unlock = Desbloquear
|
||||
Unicodefix = Párche Unicode
|
||||
Uninstall = Desinstalar
|
||||
USBLoaderisprotected = USB Loader GX está protegido
|
||||
USBDevicenotfound = USB no encontrado
|
||||
VideoMode = Modo Video
|
||||
VIDTVPatch = Parche VIDTV
|
||||
Volume = Volumen
|
||||
Waiting = Esperando...
|
||||
WaitingforUSBDevice = Esperando al Dispositivo USB
|
||||
WidescreenFix = Ajuste panorámico
|
||||
WiiMenu = Menú de Wii
|
||||
WrongPassword = Contraseña incorrecta
|
||||
Yes = Si
|
||||
YoudonthavecIOS = No tienes un cIOS222
|
||||
Japanese = Japonés
|
||||
German = Alemán
|
||||
English = Inglés
|
||||
French = Francés
|
||||
Spanish = Español
|
||||
Italian = Italiano
|
||||
Dutch = Holandés
|
||||
SChinese = Chino Simplif.
|
||||
TChinese = Chino Tradic.
|
||||
Korean = Coreano
|
||||
|
@ -1,178 +0,0 @@
|
||||
Specialthanksto = 特別感謝
|
||||
t3Coverst = 3D 封面
|
||||
AppLanguage = 語言設定
|
||||
Areyousure = 確定?
|
||||
AutoPatch = 自動修改
|
||||
Back = 返回
|
||||
BacktoHBCorWiiMenu = 返回 HBC 或 Wii 系統選單
|
||||
BacktoLoader = 返回 Loader
|
||||
BacktoWiiMenu = 返回 Wii 系統選單
|
||||
BootStandard = 啟動/標準
|
||||
Both = 全部顯示
|
||||
Cantcreatedirectory = 無法產生目錄
|
||||
Cancel = 取消
|
||||
Cantbeformated = 無法格式化
|
||||
Cantdelete = 無法刪除:
|
||||
ClicktoDownloadCovers = 點擊進行封面下載
|
||||
Clock = 時鐘
|
||||
Continueinstallgame = 繼續安裝遊戲?
|
||||
ConsoleDefault = 主機預設值
|
||||
Consoleshouldbeunlockedtomodifyit = 需解鎖以開啟設定功能.
|
||||
ConsoleLocked = 控制台鎖定
|
||||
CorrectPassword = 密碼正確
|
||||
Couldnotinitializenetwork = 無法啟動網路!
|
||||
CouldnotopenDisc = 無法開啟光碟
|
||||
CouldnotinitializeDIPmodule = 無法啟動 DIP 模組!
|
||||
CoverDownload = 下載封面
|
||||
CoverPath = 封面存放路徑
|
||||
CoverpathChanged = 封面路徑已變更
|
||||
Coverpathchange = 變更封面路徑
|
||||
Credits = Credits
|
||||
DiscImages = 光碟圖像
|
||||
DiscimagePath = 光碟圖像路徑
|
||||
DiscpathChanged = 光碟圖像路徑已變更
|
||||
Discpathchange = 變更光碟圖像路徑
|
||||
DiscDefault = 光碟預設
|
||||
Display = 顯示
|
||||
Doyouwanttoformat = 是否格式化:
|
||||
Doyoureallywanttodelete = 確定刪除:
|
||||
Doyouwanttoretryfor30secs = 是否等待30秒重試?
|
||||
Downloadingfile = 下載檔案:
|
||||
DownloadBoxartimage = 下載外盒封面圖片?
|
||||
Downloadfinished = 下載完成
|
||||
Error = 錯誤 !
|
||||
BOOTERROR = 啟動錯誤
|
||||
ErrorreadingDisc = 讀取光碟錯誤
|
||||
ExitUSBISOLoader = 離開 USB Loader GX?
|
||||
InitializingNetwork = 正在啟動網路
|
||||
InsertDisk = 插入光碟
|
||||
InsertaWiiDisc = 插入 Wii 光碟!
|
||||
InsertaSDCardtodownloadimages = 插入 SD 卡下載封面.
|
||||
InsertaSDCardtosave = 插入SD卡儲存.
|
||||
InstallRenameandDeleteareunlocked = USB Loader GX 功能已解鎖.
|
||||
Installerror = 安裝錯誤!
|
||||
Installagame = 安裝遊戲
|
||||
Installinggame = 正在安裝遊戲:
|
||||
Failedtoboot = 無法啟動:
|
||||
FailedtomountfrontSDcard = 掛載前端 SD 卡失敗
|
||||
FailedtosetUSB = 無法設定 USB:
|
||||
Failedformating = 格式化失敗
|
||||
filesnotfoundontheserver = 伺服器中無此檔案!
|
||||
filesleft = 剩下的檔案
|
||||
FlipX = 按鍵規則
|
||||
Force = 強制
|
||||
Youneedtoformatapartition = 必須格式化一個磁區
|
||||
Format = 格式化
|
||||
Formattingpleasewait = 格式化中, 請稍候...
|
||||
formated = 完成格式化!
|
||||
free =
|
||||
FreeSpace = 剩餘空間
|
||||
FullShutdown = 完全關機
|
||||
GameID = 遊戲代碼
|
||||
Games = 遊戲數量
|
||||
Gameisalreadyinstalled = 已安裝過遊戲:
|
||||
GameRegion = 遊戲區碼
|
||||
GameSize = 遊戲容量
|
||||
GoBack = 返回
|
||||
//GotoPage = 前往頁面
|
||||
HowtoShutdown = 如何關機?
|
||||
Keyboard = 鍵盤
|
||||
Language = 語言
|
||||
Langchange = 變更語言
|
||||
Left = 左
|
||||
LikeSysMenu = 同系統選單
|
||||
LoadingincIOS = 以 cIOS249 載入
|
||||
Lock = 鎖定
|
||||
LockConsole = 鎖定控制台
|
||||
MP3Menu = MP3 選單
|
||||
Missingfiles = 遺失的檔案
|
||||
Networkiniterror = 網路啟動錯誤
|
||||
Neither = 皆不顯示
|
||||
Next = 往後
|
||||
No = 否
|
||||
Nofilemissing = 沒有缺少的檔案!
|
||||
NoHDDfound = 找不到硬碟!
|
||||
NoSDcardinserted = 未插入 SD 卡!
|
||||
Nopartitionsfound = 找不到磁區
|
||||
NoUSBDevice = 沒有 USB 裝置
|
||||
NoWBFSpartitionfound = 找不到 WBFS 磁區
|
||||
NormalCovers = 一般封面
|
||||
Normal = 一般
|
||||
NotaWiiDisc = 不是 Wii 的光碟
|
||||
NoUSBDevicefound = 找不到 USB 裝置.
|
||||
Notenoughfreespace = 剩餘空間不足!
|
||||
notset = 未設定
|
||||
of = 剩餘空間 總容量
|
||||
OFF = 關閉
|
||||
OfficialSite = 官方網址
|
||||
ok = 確定
|
||||
ON = 開啟
|
||||
Parentalcontrol = 親子控制
|
||||
Partition = 磁區
|
||||
Password = 密碼
|
||||
PasswordChanged = 密碼已變更
|
||||
Passwordhasbeenchanged = 密碼已被變更
|
||||
Passwordchange = 變更密碼
|
||||
PowerofftheWii = 關閉Wii主機
|
||||
Prev = 往前
|
||||
PromptsButtons = 顯示校正
|
||||
ReloadSD = 重新載入SD卡
|
||||
RenameGameonWBFS = 改變WBFS上的遊戲名稱
|
||||
Restart = 重新啟動
|
||||
Return = 返回
|
||||
ReturntoWii = 返回Wii系統選單
|
||||
Right = 右
|
||||
Rumble = 震動
|
||||
QuickBoot = 快速啟動
|
||||
Save = 儲存
|
||||
SaveFailed = 儲存失敗
|
||||
Specialthanksto = 特別感謝
|
||||
For = 的
|
||||
theUSBLoaderandreleasingthesourcecodethe = 釋出原始碼
|
||||
secondsleft = 剩餘秒數
|
||||
SelectthePartition = 選擇磁區
|
||||
youwanttoformat = 是否格式化
|
||||
settings = 設定
|
||||
ShutdowntoIdle = 進入待機狀態
|
||||
ShutdownSystem = 關閉系統
|
||||
Success = 成功:
|
||||
Successfullyinstalled = 成功的安裝:
|
||||
Successfullydeleted = 成功的刪除:
|
||||
SuccessfullySaved = 儲存成功
|
||||
SystemDefault = 系統預設值
|
||||
ThemePath = 背景主題
|
||||
ThemepathChanged = 背景主題路徑已變更
|
||||
Themepathchange = 變更背景主題路徑
|
||||
Try = 嘗試
|
||||
Tooltips = 工具提示
|
||||
Timeleft = 剩餘時間:
|
||||
Unlock = 解鎖
|
||||
Uninstall = 移除
|
||||
USBLoaderisprotected = USB Loader GX 被鎖定
|
||||
USBDevicenotfound = 找不到 USB 裝置
|
||||
VideoMode = 影像格式
|
||||
VIDTVPatch = VIDTV 修改
|
||||
Volume = 音量
|
||||
Waiting = 等待中...
|
||||
WaitingforUSBDevice = 等待 USB 裝置
|
||||
WidescreenFix = 寬螢幕校正
|
||||
WiiMenu = Wii 系統選單
|
||||
WrongPassword = 密碼錯誤
|
||||
Yes = 是
|
||||
YoudonthavecIOS = 未安裝 cIOS222
|
||||
Japanese = 日文
|
||||
German = 德文
|
||||
English = 英文
|
||||
French = 法文
|
||||
Spanish = 西班牙文
|
||||
Italian = 義大利文
|
||||
Dutch = 荷文
|
||||
SChinese = 簡體中文
|
||||
TChinese = 繁體中文
|
||||
Korean = 韓文
|
||||
Unicodefix = Unicode 修正
|
||||
Filenotfound = 找不到檔案
|
||||
Loadingstandardlanguage = 載入標準語言
|
||||
Titlestxtpath = Titles.txt 路徑
|
||||
TitlestxtpathChanged = titles.txt 路徑已變更
|
||||
Titlestxtpathchange = 變更 titles.txt 路徑
|
@ -1,172 +0,0 @@
|
||||
Specialthanksto = Özel tesekkürler :
|
||||
t3Covers = 3B Kapaklar
|
||||
AppLanguage = Program Lisani
|
||||
Areyousure = Emin misiniz?
|
||||
AutoPatch = OtoYama
|
||||
Back = Geri
|
||||
BacktoHBCorWiiMenu = HBC veya Wii Menüye dönüs
|
||||
BacktoLoader = Yükleyiciye dönüs
|
||||
BacktoWiiMenu = Wii Menüye dönüs
|
||||
BootStandard = Boot/Standard
|
||||
BothBoth = Ikisi de
|
||||
Cantcreatedirectory = Klasör olusturulamiyorF
|
||||
Cancel = Iptal
|
||||
Cantbeformated = Biçimlendirilemiyor
|
||||
Cantdelete = Silinemiyor
|
||||
ClicktoDownloadCovers = Kapaklari Indirmek için Tiklayin
|
||||
Clock = Saat
|
||||
Continueinstallgame = Oyunu kurmaya devam et?
|
||||
ConsoleDefault = Konsol Ayari
|
||||
Consoleshouldbeunlockedtomodifyit = Degistirmek için konsolun kilidini açmalisin.
|
||||
ConsoleLocked = Konsol Kilitli
|
||||
CorrectPassword = Dogru Sifre
|
||||
Couldnotinitializenetwork = Aga baglanilamiyor!
|
||||
CouldnotopenDisc = Disk açilamiyor
|
||||
CouldnotinitializeDIPmodule = DIP modülü baslatilamiyor!
|
||||
CoverDownload = Kapak Indirme
|
||||
CoverPath = Kapak Yolu
|
||||
CoverpathChanged = Kapak Yolu Degistir
|
||||
Coverpathchange = Kapak Yolunu Degistir
|
||||
Credits = Emegi Geçenler
|
||||
DiscImages = Disk Resimleri
|
||||
DiscimagePath = Disk Resimleri Yolu
|
||||
DiscpathChanged = Disk Resimleri Yolu Degistirildi
|
||||
Discpathchange = Disk Resimleri Yolunu Degistir
|
||||
DiscDefault = Disk Ayari
|
||||
Display = Görüntü
|
||||
Doyouwanttoformat = Formatlamak istiyor musunuz:
|
||||
Doyoureallywanttodelete = Gerçekten silmek istiyor musunuz:
|
||||
Doyouwanttoretryfor30secs = 30 saniye sonra denemek ister misiniz?
|
||||
Downloadingfile = Indirilen dosya:
|
||||
DownloadBoxartimage = Kutu resmini indirmek ister misiniz?
|
||||
Downloadfinished = Indirme tamamlandi
|
||||
Error = Hata !
|
||||
BOOTERROR = AÇILIS HATASI
|
||||
ErrorreadingDisc = Disk Okuma Hatasi
|
||||
ExitUSBISOLoader = USB Loader GX'dan çik?
|
||||
InitializingNetwork = Aga Baglaniliyor
|
||||
InsertDisk = Diski Takin
|
||||
InsertaWiiDisc = Wii Diski Takin!
|
||||
InsertaSDCardtodownloadimages = Resimleri indirebilmek için SD-Card takin.
|
||||
InsertaSDCardtosave = Kaydedebilmek için SD-Card takin.
|
||||
InstallRenameandDeleteareunlocked = USB Loader GX'in tüm özellikleri kilitli.
|
||||
Installerror = Yükleme Hatasi!
|
||||
Installagame = Oyun yükle
|
||||
Installinggame = Yüklenen oyun:
|
||||
Failedtoboot = Açilamadi:
|
||||
FailedtomountfrontSDcard = SD-card monte edilemedi
|
||||
FailedtosetUSB = USB ayarlamasi basarisiz oldu:
|
||||
Failedformating = Biçimlendirme basarisiz oldu
|
||||
filesnotfoundontheserver = dosyalar sunucuda bulunamadi!
|
||||
filesleft = dosya kaldi
|
||||
FlipX = Flip-X
|
||||
Force = Zorla
|
||||
Youneedtoformatapartition = Bir bölüm biçimlendirmeniz gerekiyor
|
||||
Format = Biçimlendir
|
||||
Formattingpleasewait = Biçimlendiriliyor, bekleyiniz...
|
||||
formated = biçimlendirildi!
|
||||
free = bos
|
||||
FreeSpace = Bos Yer
|
||||
FullShutdown = Tam Kapama
|
||||
GameID = Oyun ID
|
||||
Games = Oyunlar
|
||||
Gameisalreadyinstalled = Oyun zaten yüklü:
|
||||
GameRegion = Bölge
|
||||
GameSize = Oyun Boyutu
|
||||
GoBack = Geri Dön
|
||||
//GotoPage = Sayfaya Git
|
||||
HowtoShutdown = Nasil Kapansin?
|
||||
Language = Lisan
|
||||
Langchange = Lisan degistirme
|
||||
Left = Sol
|
||||
LikeSysMenu = Sistem Menüsü Gibi
|
||||
LoadingincIOS = cIOS249'dan yükleme
|
||||
Lock = Kilitle
|
||||
LockConsole = Konsolu Kilitle
|
||||
MP3Menu = MP3 Menüsü
|
||||
Missingfiles = Kayip dosyalar
|
||||
Networkiniterror = Ag baslatma hatasi
|
||||
Neither = Hiçbiri
|
||||
Next = Ileri
|
||||
No = Hayir
|
||||
Nofilemissing = Kayip dosya yok!
|
||||
NoHDDfound = HDD bulunamadi!
|
||||
NoSDcardinserted = SD-Card takili degil!
|
||||
Nopartitionsfound = Bölüm bulunamadi
|
||||
NoUSBDevice = USB Aygiti bulunamadi
|
||||
NoWBFSpartitionfound = WBFS bölümü bulunamadi
|
||||
NormalCovers = Normal Kapaklar
|
||||
Normal = Normal
|
||||
NotaWiiDisc = Wii Diski Degil
|
||||
NoUSBDevicefound = USB Aygiti bulunamadi
|
||||
Notenoughfreespace = Gerekli bos yer yok!
|
||||
notset = ayarlanmadi
|
||||
of = /
|
||||
OFF = KAPALI
|
||||
OfficialSite = Resmi Site
|
||||
ok = OK
|
||||
ON = AÇIK
|
||||
Parentalcontrol = Ebeveyn kontrolü
|
||||
Partition = Bölüm
|
||||
Password = Parola
|
||||
PasswordChanged = Parola degistirildi
|
||||
Passwordhasbeenchanged = Password has been changed
|
||||
Passwordchange = Password change
|
||||
PowerofftheWii = Wii'yi kapat
|
||||
Prev = Önceki
|
||||
PromptsButtons = Hiz ve Butonlar
|
||||
ReloadSD = SD-Card'i yeniden oku
|
||||
RenameGameonWBFS = WBFS'deki oyunu yeniden isimlendir
|
||||
Restart = Yeniden Baslat
|
||||
Return = Dönüs
|
||||
ReturntoWii = Wii Menü'ye Dönüs
|
||||
Right = Sag
|
||||
Rumble = Titresim
|
||||
QuickBoot = Hizli Açilis
|
||||
Save = Kaydet
|
||||
SaveFailed = Kaydetme Basarisiz
|
||||
Specialthanksto = Özel tesekkürler
|
||||
For = ,
|
||||
theUSBLoaderandreleasingthesourcecodethe = kaynak kodunu açtigi için
|
||||
secondsleft = saniye kaldi
|
||||
SelectthePartition = Bölümü Seçin
|
||||
youwanttoformat = biçimlendirmek istiyorsunuz
|
||||
settings = Ayarlar
|
||||
ShutdowntoIdle = Yari Kapat
|
||||
ShutdownSystem = Tam Kapat
|
||||
Success = Basarili:
|
||||
Successfullyinstalled = Basariyla yüklendi:
|
||||
Successfullydeleted = Basariyla silindi:
|
||||
SuccessfullySaved = Basariyla Kaydedildi
|
||||
SystemDefault = Sistem Ayari
|
||||
ThemePath = Tema Yolu
|
||||
ThemepathChanged = Tema Yolu Degisti
|
||||
Themepathchange = Tema yolunu degistir
|
||||
Try = Dene
|
||||
Tooltips = Yardimlar
|
||||
Timeleft = Kalan zaman:
|
||||
Unlock = Kilidi Kaldir
|
||||
Uninstall = Sil
|
||||
USBLoaderisprotected = USB Loader GX koruma altinda
|
||||
USBDevicenotfound = USB Aygiti bulunamadi
|
||||
VideoMode = Video Modu
|
||||
VIDTVPatch = VIDTV Yamasi
|
||||
Volume = Ses
|
||||
Waiting = Bekliyor...
|
||||
WaitingforUSBDevice = USB Aygiti için Bekleniyor
|
||||
WidescreenFix = Genisekran Çözümü
|
||||
WiiMenu = Wii Menü
|
||||
WrongPassword = Yanlis Parola
|
||||
Yes = Evet
|
||||
YoudonthavecIOS = cIOS222'ye sahip degilsiniz
|
||||
Japanese = Japonca
|
||||
German = Almanca
|
||||
English = Ingilizce
|
||||
French = Fransizca
|
||||
Spanish = Ispanyolca
|
||||
Italian = Italyanca
|
||||
Dutch = Hollandaca
|
||||
SChinese = Basitlestirilmis Çince
|
||||
TChinese = Geleneksel Çince
|
||||
Korean = Korece
|
||||
Turkish = Türkçe
|
61
Makefile
@ -17,27 +17,35 @@ include $(DEVKITPPC)/wii_rules
|
||||
#---------------------------------------------------------------------------------
|
||||
TARGET := boot
|
||||
BUILD := build
|
||||
SOURCES := source source/libwiigui source/images source/fonts source/sounds source/libwbfs
|
||||
INCLUDES := source
|
||||
SVNDEV := -D'SVN_REV="$(shell svnversion -n ..)"'
|
||||
SOURCES := source source/images
|
||||
DATA := data
|
||||
INCLUDES :=
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# options for code generation
|
||||
#---------------------------------------------------------------------------------
|
||||
|
||||
CFLAGS = -g -O2 -Wall $(SVNDEV) $(MACHDEP) $(INCLUDE)
|
||||
CXXFLAGS = -save-temps -Xassembler -aln=$@.lst $(CFLAGS)
|
||||
LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map,--section-start,.init=0x80a00100
|
||||
CFLAGS = -g -O2 -Wall $(MACHDEP) $(INCLUDE)
|
||||
CXXFLAGS = $(CFLAGS)
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# move loader to another location - THANKS CREDIAR - 0x81330000 for HBC
|
||||
#---------------------------------------------------------------------------------
|
||||
#LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map
|
||||
LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map -Wl,--section-start,.init=0x81000000
|
||||
#LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map -Wl,--section-start,.init=0x80003f00
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# any extra libraries we wish to link with the project
|
||||
#---------------------------------------------------------------------------------
|
||||
LIBS := -lfat -lpngu -lpng -lmetaphrasis -lm -lz -lwiiuse -lmad -lbte -lasnd -logc -ltremor -lfreetype
|
||||
LIBS := -lfat -lpngu -lpng -lz -lbte -logc -lm
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# list of directories containing libraries, this must be the top level containing
|
||||
# include and lib
|
||||
#---------------------------------------------------------------------------------
|
||||
LIBDIRS := $(DEVKITPPC)/lib $(CURDIR)
|
||||
LIBDIRS := $(CURDIR)
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# no real need to edit anything past this point unless you need to add additional
|
||||
# rules for different file extensions
|
||||
@ -45,9 +53,11 @@ LIBDIRS := $(DEVKITPPC)/lib $(CURDIR)
|
||||
ifneq ($(BUILD),$(notdir $(CURDIR)))
|
||||
#---------------------------------------------------------------------------------
|
||||
|
||||
export OUTPUT := $(CURDIR)/$(TARGETDIR)/$(TARGET)
|
||||
export OUTPUT := $(CURDIR)/$(TARGET)
|
||||
|
||||
export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \
|
||||
$(foreach dir,$(DATA),$(CURDIR)/$(dir))
|
||||
|
||||
export DEPSDIR := $(CURDIR)/$(BUILD)
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
@ -58,10 +68,7 @@ CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
|
||||
sFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
|
||||
SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.S)))
|
||||
BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*)))
|
||||
TTFFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.ttf)))
|
||||
PNGFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.png)))
|
||||
OGGFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.ogg)))
|
||||
PCMFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.pcm)))
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# use CXX for linking C++ projects, CC for standard C
|
||||
@ -75,13 +82,12 @@ endif
|
||||
export OFILES := $(addsuffix .o,$(BINFILES)) \
|
||||
$(CPPFILES:.cpp=.o) $(CFILES:.c=.o) \
|
||||
$(sFILES:.s=.o) $(SFILES:.S=.o) \
|
||||
$(TTFFILES:.ttf=.ttf.o) $(PNGFILES:.png=.png.o) \
|
||||
$(OGGFILES:.ogg=.ogg.o) $(PCMFILES:.pcm=.pcm.o)
|
||||
$(PNGFILES:.png=.png.o)
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# build a list of include paths
|
||||
#---------------------------------------------------------------------------------
|
||||
export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
|
||||
export INCLUDE := $(foreach dir,$(INCLUDES), -iquote $(CURDIR)/$(dir)) \
|
||||
$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
|
||||
-I$(CURDIR)/$(BUILD) \
|
||||
-I$(LIBOGC_INC)
|
||||
@ -107,16 +113,13 @@ clean:
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
run:
|
||||
wiiload $(OUTPUT).dol
|
||||
wiiload $(TARGET).dol
|
||||
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
reload:
|
||||
wiiload -r $(OUTPUT).dol
|
||||
pack:
|
||||
zip -9 loadMii.zip $(TARGET).dol ../icon.png ../meta.xml ../README
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
release:
|
||||
make
|
||||
cp boot.dol ./hbc/boot.dol
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
else
|
||||
@ -130,24 +133,12 @@ $(OUTPUT).dol: $(OUTPUT).elf
|
||||
$(OUTPUT).elf: $(OFILES)
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# This rule links in binary data with .ttf, .png, and .mp3 extensions
|
||||
# This rule links in binary data with the .jpg extension
|
||||
#---------------------------------------------------------------------------------
|
||||
%.ttf.o : %.ttf
|
||||
@echo $(notdir $<)
|
||||
$(bin2o)
|
||||
|
||||
%.png.o : %.png
|
||||
@echo $(notdir $<)
|
||||
$(bin2o)
|
||||
|
||||
%.ogg.o : %.ogg
|
||||
@echo $(notdir $<)
|
||||
$(bin2o)
|
||||
|
||||
%.pcm.o : %.pcm
|
||||
@echo $(notdir $<)
|
||||
$(bin2o)
|
||||
|
||||
-include $(DEPENDS)
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
|
1
gui.pnps
@ -1 +0,0 @@
|
||||
<pd><ViewState><e p="gui" x="true"></e><e p="gui\source" x="true"></e><e p="gui\source\fonts" x="false"></e><e p="gui\source\images" x="false"></e><e p="gui\source\libwbfs" x="false"></e><e p="gui\source\libwiigui" x="true"></e><e p="gui\source\sounds" x="false"></e></ViewState></pd>
|
3161
source/CH2Unicode.c
@ -1,22 +0,0 @@
|
||||
|
||||
#ifndef CH2UNICODE_H_
|
||||
#define CH2UNICODE_H_
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
int CH2Unicode(char *szFrom,wchar_t *wszTo); //,int ctype);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@ -1,791 +0,0 @@
|
||||
/*
|
||||
* FreeTypeGX is a wrapper class for libFreeType which renders a compiled
|
||||
* FreeType parsable font into a GX texture for Wii homebrew development.
|
||||
* Copyright (C) 2008 Armin Tamzarian
|
||||
* Modified by Tantric, 2009
|
||||
*
|
||||
* This file is part of FreeTypeGX.
|
||||
*
|
||||
* FreeTypeGX is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* FreeTypeGX is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with FreeTypeGX. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "FreeTypeGX.h"
|
||||
#include "CH2Unicode.h"
|
||||
#include "GB2Unicode.h"
|
||||
#include "main.h"
|
||||
#include "cfg.h"
|
||||
|
||||
/*! \struct ftgxCharData_
|
||||
*
|
||||
* Font face character glyph relevant data structure.
|
||||
*/
|
||||
typedef struct ftgxCharData_ {
|
||||
int16_t renderOffsetX; /**< Texture X axis bearing offset. */
|
||||
uint16_t glyphAdvanceX; /**< Character glyph X coordinate advance in pixels. */
|
||||
uint16_t glyphIndex; /**< Charachter glyph index in the font face. */
|
||||
|
||||
uint16_t textureWidth; /**< Texture width in pixels/bytes. */
|
||||
uint16_t textureHeight; /**< Texture glyph height in pixels/bytes. */
|
||||
|
||||
int16_t renderOffsetY; /**< Texture Y axis bearing offset. */
|
||||
int16_t renderOffsetMax; /**< Texture Y axis bearing maximum value. */
|
||||
int16_t renderOffsetMin; /**< Texture Y axis bearing minimum value. */
|
||||
|
||||
uint32_t* glyphDataTexture; /**< Glyph texture bitmap data buffer. */
|
||||
} ftgxCharData;
|
||||
|
||||
/*! \struct ftgxDataOffset_
|
||||
*
|
||||
* Offset structure which hold both a maximum and minimum value.
|
||||
*/
|
||||
typedef struct ftgxDataOffset_ {
|
||||
int16_t ascender; /**< Maximum data offset. */
|
||||
int16_t descender; /**< Minimum data offset. */
|
||||
int16_t max; /**< Maximum data offset. */
|
||||
int16_t min; /**< Minimum data offset. */
|
||||
} ftgxDataOffset;
|
||||
|
||||
|
||||
/**
|
||||
* Default constructor for the FreeTypeGX class.
|
||||
*
|
||||
* @param textureFormat Optional format (GX_TF_*) of the texture as defined by the libogc gx.h header file. If not specified default value is GX_TF_RGBA8.
|
||||
* @param vertexIndex Optional vertex format index (GX_VTXFMT*) of the glyph textures as defined by the libogc gx.h header file. If not specified default value is GX_VTXFMT1.
|
||||
*/
|
||||
FreeTypeGX::FreeTypeGX(uint8_t textureFormat, uint8_t vertexIndex) {
|
||||
FT_Init_FreeType(&this->ftLibrary);
|
||||
|
||||
this->textureFormat = textureFormat;
|
||||
this->setVertexFormat(vertexIndex);
|
||||
this->setCompatibilityMode(FTGX_COMPATIBILITY_NONE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Default destructor for the FreeTypeGX class.
|
||||
*/
|
||||
FreeTypeGX::~FreeTypeGX() {
|
||||
this->unloadFont();
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert a short char sctring to a wide char string.
|
||||
*
|
||||
* This routine converts a supplied shot character string into a wide character string.
|
||||
* Note that it is the user's responsibility to clear the returned buffer once it is no longer needed.
|
||||
*
|
||||
* @param strChar Character string to be converted.
|
||||
* @return Wide character representation of supplied character string.
|
||||
*/
|
||||
wchar_t* FreeTypeGX::charToWideChar(char* strChar) {
|
||||
wchar_t *strWChar;
|
||||
strWChar = new wchar_t[strlen(strChar) + 1];
|
||||
|
||||
if(Settings.unicodefix == 1) {
|
||||
CH2Unicode(strChar, strWChar);
|
||||
} else if(Settings.unicodefix == 2) {
|
||||
ConverGB2Unicode(strChar, strWChar);
|
||||
} else {
|
||||
char *tempSrc = strChar;
|
||||
wchar_t *tempDest = strWChar;
|
||||
while((*tempDest++ = *tempSrc++));
|
||||
}
|
||||
|
||||
|
||||
return strWChar;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* \overload
|
||||
*/
|
||||
wchar_t* FreeTypeGX::charToWideChar(const char* strChar) {
|
||||
return FreeTypeGX::charToWideChar((char*) strChar);
|
||||
}
|
||||
|
||||
/**
|
||||
* Setup the vertex attribute formats for the glyph textures.
|
||||
*
|
||||
* This function sets up the vertex format for the glyph texture on the specified vertex format index.
|
||||
* Note that this function should not need to be called except if the vertex formats are cleared or the specified
|
||||
* vertex format index is modified.
|
||||
*
|
||||
* @param vertexIndex Vertex format index (GX_VTXFMT*) of the glyph textures as defined by the libogc gx.h header file.
|
||||
*/
|
||||
void FreeTypeGX::setVertexFormat(uint8_t vertexIndex) {
|
||||
this->vertexIndex = vertexIndex;
|
||||
|
||||
GX_SetVtxAttrFmt(this->vertexIndex, GX_VA_POS, GX_POS_XY, GX_S16, 0);
|
||||
GX_SetVtxAttrFmt(this->vertexIndex, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0);
|
||||
GX_SetVtxAttrFmt(this->vertexIndex, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the TEV and VTX rendering compatibility requirements for the class.
|
||||
*
|
||||
* This sets up the default TEV opertion and VTX descriptions rendering values for the class. This ensures that FreeTypeGX
|
||||
* can remain compatible with external liraries or project code. Certain external libraries or code by design or lack of
|
||||
* foresight assume that the TEV opertion and VTX descriptions values will remain constant or are always returned to a
|
||||
* certain value. This will enable compatibility with those libraries and any other code which cannot or will not be changed.
|
||||
*
|
||||
* @param compatibilityMode Compatibility descritor (FTGX_COMPATIBILITY_*) as defined in FreeTypeGX.h
|
||||
*/
|
||||
void FreeTypeGX::setCompatibilityMode(uint32_t compatibilityMode) {
|
||||
this->compatibilityMode = compatibilityMode;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the TEV operation and VTX descriptor values after texture rendering it complete.
|
||||
*
|
||||
* This function calls the GX_SetTevOp and GX_SetVtxDesc functions with the compatibility parameters specified
|
||||
* in setCompatibilityMode.
|
||||
*/
|
||||
void FreeTypeGX::setDefaultMode() {
|
||||
if(this->compatibilityMode) {
|
||||
switch(this->compatibilityMode & 0x00FF) {
|
||||
case FTGX_COMPATIBILITY_DEFAULT_TEVOP_GX_MODULATE:
|
||||
GX_SetTevOp(GX_TEVSTAGE0, GX_MODULATE);
|
||||
break;
|
||||
case FTGX_COMPATIBILITY_DEFAULT_TEVOP_GX_DECAL:
|
||||
GX_SetTevOp(GX_TEVSTAGE0, GX_DECAL);
|
||||
break;
|
||||
case FTGX_COMPATIBILITY_DEFAULT_TEVOP_GX_BLEND:
|
||||
GX_SetTevOp(GX_TEVSTAGE0, GX_BLEND);
|
||||
break;
|
||||
case FTGX_COMPATIBILITY_DEFAULT_TEVOP_GX_REPLACE:
|
||||
GX_SetTevOp(GX_TEVSTAGE0, GX_REPLACE);
|
||||
break;
|
||||
case FTGX_COMPATIBILITY_DEFAULT_TEVOP_GX_PASSCLR:
|
||||
GX_SetTevOp(GX_TEVSTAGE0, GX_PASSCLR);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
switch(this->compatibilityMode & 0xFF00) {
|
||||
case FTGX_COMPATIBILITY_DEFAULT_VTXDESC_GX_NONE:
|
||||
GX_SetVtxDesc(GX_VA_TEX0, GX_NONE);
|
||||
break;
|
||||
case FTGX_COMPATIBILITY_DEFAULT_VTXDESC_GX_DIRECT:
|
||||
GX_SetVtxDesc(GX_VA_TEX0, GX_DIRECT);
|
||||
break;
|
||||
case FTGX_COMPATIBILITY_DEFAULT_VTXDESC_GX_INDEX8:
|
||||
GX_SetVtxDesc(GX_VA_TEX0, GX_INDEX8);
|
||||
break;
|
||||
case FTGX_COMPATIBILITY_DEFAULT_VTXDESC_GX_INDEX16:
|
||||
GX_SetVtxDesc(GX_VA_TEX0, GX_INDEX16);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads and processes a specified true type font buffer to a specific point size.
|
||||
*
|
||||
* This routine takes a precompiled true type font buffer and loads the necessary processed data into memory. This routine should be called before drawText will succeed.
|
||||
*
|
||||
* @param fontBuffer A pointer in memory to a precompiled true type font buffer.
|
||||
* @param bufferSize Size of the true type font buffer in bytes.
|
||||
* @param pointSize The desired point size this wrapper's configured font face.
|
||||
* @param cacheAll Optional flag to specify if all font characters should be cached when the class object is created. If specified as false the characters only become cached the first time they are used. If not specified default value is false.
|
||||
*/
|
||||
uint16_t FreeTypeGX::loadFont(uint8_t* fontBuffer, FT_Long bufferSize, FT_UInt pointSize, bool cacheAll) {
|
||||
this->unloadFont();
|
||||
this->ftPointSize = pointSize;
|
||||
|
||||
FT_New_Memory_Face(this->ftLibrary, (FT_Byte *)fontBuffer, bufferSize, 0, &this->ftFace);
|
||||
|
||||
if(this->ftPointSize > 0)
|
||||
FT_Set_Pixel_Sizes(this->ftFace, 0, this->ftPointSize);
|
||||
|
||||
this->ftSlot = this->ftFace->glyph;
|
||||
this->ftKerningEnabled = FT_HAS_KERNING(this->ftFace);
|
||||
|
||||
if (cacheAll) {
|
||||
return this->cacheGlyphDataComplete();
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* \overload
|
||||
*/
|
||||
uint16_t FreeTypeGX::loadFont(const uint8_t* fontBuffer, FT_Long bufferSize, FT_UInt pointSize, bool cacheAll) {
|
||||
return this->loadFont((uint8_t *)fontBuffer, bufferSize, pointSize, cacheAll);
|
||||
}
|
||||
|
||||
/**
|
||||
* Clears all loaded font glyph data.
|
||||
*
|
||||
* This routine clears all members of the font map structure and frees all allocated memory back to the system.
|
||||
*/
|
||||
void FreeTypeGX::unloadFont() {
|
||||
if(this->fontData.size() == 0)
|
||||
return;
|
||||
|
||||
GX_DrawDone();
|
||||
GX_Flush();
|
||||
|
||||
for( std::map<wchar_t, ftgxCharData>::iterator i = this->fontData.begin(); i != this->fontData.end(); i++) {
|
||||
free(i->second.glyphDataTexture);
|
||||
}
|
||||
|
||||
this->fontData.clear();
|
||||
}
|
||||
|
||||
void FreeTypeGX::changeSize(FT_UInt vPointSize, FT_UInt hPointSize/*=0*/) {
|
||||
this->unloadFont();
|
||||
this->ftPointSize = vPointSize;
|
||||
FT_Set_Pixel_Sizes(this->ftFace, hPointSize, this->ftPointSize);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adjusts the texture data buffer to necessary width for a given texture format.
|
||||
*
|
||||
* This routine determines adjusts the given texture width into the required width to hold the necessary texture data for proper alignment.
|
||||
*
|
||||
* @param textureWidth The initial guess for the texture width.
|
||||
* @param textureFormat The texture format to which the data is to be converted.
|
||||
* @return The correctly adjusted texture width.
|
||||
*/
|
||||
uint16_t FreeTypeGX::adjustTextureWidth(uint16_t textureWidth, uint8_t textureFormat) {
|
||||
uint16_t alignment;
|
||||
|
||||
switch(textureFormat) {
|
||||
case GX_TF_I4: /* 8x8 Tiles - 4-bit Intensity */
|
||||
case GX_TF_I8: /* 8x4 Tiles - 8-bit Intensity */
|
||||
case GX_TF_IA4: /* 8x4 Tiles - 4-bit Intensity, , 4-bit Alpha */
|
||||
alignment = 8;
|
||||
break;
|
||||
|
||||
case GX_TF_IA8: /* 4x4 Tiles - 8-bit Intensity, 8-bit Alpha */
|
||||
case GX_TF_RGB565: /* 4x4 Tiles - RGB565 Format */
|
||||
case GX_TF_RGB5A3: /* 4x4 Tiles - RGB5A3 Format */
|
||||
case GX_TF_RGBA8: /* 4x4 Tiles - RGBA8 Dual Cache Line Format */
|
||||
default:
|
||||
alignment = 4;
|
||||
break;
|
||||
}
|
||||
return textureWidth % alignment == 0 ? textureWidth : alignment + textureWidth - (textureWidth % alignment);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Adjusts the texture data buffer to necessary height for a given texture format.
|
||||
*
|
||||
* This routine determines adjusts the given texture height into the required height to hold the necessary texture data for proper alignment.
|
||||
*
|
||||
* @param textureHeight The initial guess for the texture height.
|
||||
* @param textureFormat The texture format to which the data is to be converted.
|
||||
* @return The correctly adjusted texture height.
|
||||
*/
|
||||
uint16_t FreeTypeGX::adjustTextureHeight(uint16_t textureHeight, uint8_t textureFormat) {
|
||||
uint16_t alignment;
|
||||
|
||||
switch(textureFormat) {
|
||||
case GX_TF_I4: /* 8x8 Tiles - 4-bit Intensity */
|
||||
alignment = 8;
|
||||
break;
|
||||
|
||||
case GX_TF_I8: /* 8x4 Tiles - 8-bit Intensity */
|
||||
case GX_TF_IA4: /* 8x4 Tiles - 4-bit Intensity, , 4-bit Alpha */
|
||||
case GX_TF_IA8: /* 4x4 Tiles - 8-bit Intensity, 8-bit Alpha */
|
||||
case GX_TF_RGB565: /* 4x4 Tiles - RGB565 Format */
|
||||
case GX_TF_RGB5A3: /* 4x4 Tiles - RGB5A3 Format */
|
||||
case GX_TF_RGBA8: /* 4x4 Tiles - RGBA8 Dual Cache Line Format */
|
||||
default:
|
||||
alignment = 4;
|
||||
break;
|
||||
}
|
||||
return textureHeight % alignment == 0 ? textureHeight : alignment + textureHeight - (textureHeight % alignment);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Caches the given font glyph in the instance font texture buffer.
|
||||
*
|
||||
* This routine renders and stores the requested glyph's bitmap and relevant information into its own quickly addressible
|
||||
* structure within an instance-specific map.
|
||||
*
|
||||
* @param charCode The requested glyph's character code.
|
||||
* @return A pointer to the allocated font structure.
|
||||
*/
|
||||
ftgxCharData *FreeTypeGX::cacheGlyphData(wchar_t charCode) {
|
||||
FT_UInt gIndex;
|
||||
uint16_t textureWidth = 0, textureHeight = 0;
|
||||
|
||||
gIndex = FT_Get_Char_Index( this->ftFace, charCode );
|
||||
if (!FT_Load_Glyph(this->ftFace, gIndex, FT_LOAD_DEFAULT )) {
|
||||
FT_Render_Glyph( this->ftSlot, FT_RENDER_MODE_NORMAL );
|
||||
|
||||
if(this->ftSlot->format == FT_GLYPH_FORMAT_BITMAP) {
|
||||
FT_Bitmap *glyphBitmap = &this->ftSlot->bitmap;
|
||||
|
||||
textureWidth = adjustTextureWidth(glyphBitmap->width, this->textureFormat);
|
||||
textureHeight = adjustTextureHeight(glyphBitmap->rows, this->textureFormat);
|
||||
|
||||
this->fontData[charCode] = (ftgxCharData){
|
||||
this->ftSlot->bitmap_left,
|
||||
this->ftSlot->advance.x >> 6,
|
||||
gIndex,
|
||||
textureWidth,
|
||||
textureHeight,
|
||||
this->ftSlot->bitmap_top,
|
||||
this->ftSlot->bitmap_top,
|
||||
glyphBitmap->rows - this->ftSlot->bitmap_top,
|
||||
NULL
|
||||
};
|
||||
this->loadGlyphData(glyphBitmap, &this->fontData[charCode]);
|
||||
|
||||
return &this->fontData[charCode];
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* Locates each character in this wrapper's configured font face and proccess them.
|
||||
*
|
||||
* This routine locates each character in the configured font face and renders the glyph's bitmap.
|
||||
* Each bitmap and relevant information is loaded into its own quickly addressible structure within an instance-specific map.
|
||||
*/
|
||||
uint16_t FreeTypeGX::cacheGlyphDataComplete() {
|
||||
uint16_t i = 0;
|
||||
FT_UInt gIndex;
|
||||
FT_ULong charCode = FT_Get_First_Char( this->ftFace, &gIndex );
|
||||
while ( gIndex != 0 ) {
|
||||
|
||||
if(this->cacheGlyphData(charCode) != NULL) {
|
||||
i++;
|
||||
}
|
||||
|
||||
charCode = FT_Get_Next_Char( this->ftFace, charCode, &gIndex );
|
||||
}
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads the rendered bitmap into the relevant structure's data buffer.
|
||||
*
|
||||
* This routine does a simple byte-wise copy of the glyph's rendered 8-bit grayscale bitmap into the structure's buffer.
|
||||
* Each byte is converted from the bitmap's intensity value into the a uint32_t RGBA value.
|
||||
*
|
||||
* @param bmp A pointer to the most recently rendered glyph's bitmap.
|
||||
* @param charData A pointer to an allocated ftgxCharData structure whose data represent that of the last rendered glyph.
|
||||
*/
|
||||
void FreeTypeGX::loadGlyphData(FT_Bitmap *bmp, ftgxCharData *charData) {
|
||||
|
||||
uint32_t *glyphData = (uint32_t *)memalign(32, charData->textureWidth * charData->textureHeight * 4);
|
||||
memset(glyphData, 0x00, charData->textureWidth * charData->textureHeight * 4);
|
||||
|
||||
for (uint16_t imagePosY = 0; imagePosY < bmp->rows; imagePosY++) {
|
||||
for (uint16_t imagePosX = 0; imagePosX < bmp->width; imagePosX++) {
|
||||
uint32_t pixel = (uint32_t) bmp->buffer[imagePosY * bmp->width + imagePosX];
|
||||
glyphData[imagePosY * charData->textureWidth + imagePosX] = 0x00000000 | (pixel << 24) | (pixel << 16) | (pixel << 8) | pixel;
|
||||
}
|
||||
}
|
||||
|
||||
switch(this->textureFormat) {
|
||||
case GX_TF_I4:
|
||||
charData->glyphDataTexture = Metaphrasis::convertBufferToI4(glyphData, charData->textureWidth, charData->textureHeight);
|
||||
break;
|
||||
case GX_TF_I8:
|
||||
charData->glyphDataTexture = Metaphrasis::convertBufferToI8(glyphData, charData->textureWidth, charData->textureHeight);
|
||||
break;
|
||||
case GX_TF_IA4:
|
||||
charData->glyphDataTexture = Metaphrasis::convertBufferToIA4(glyphData, charData->textureWidth, charData->textureHeight);
|
||||
break;
|
||||
case GX_TF_IA8:
|
||||
charData->glyphDataTexture = Metaphrasis::convertBufferToIA8(glyphData, charData->textureWidth, charData->textureHeight);
|
||||
break;
|
||||
case GX_TF_RGB565:
|
||||
charData->glyphDataTexture = Metaphrasis::convertBufferToRGB565(glyphData, charData->textureWidth, charData->textureHeight);
|
||||
break;
|
||||
case GX_TF_RGB5A3:
|
||||
charData->glyphDataTexture = Metaphrasis::convertBufferToRGB5A3(glyphData, charData->textureWidth, charData->textureHeight);
|
||||
break;
|
||||
case GX_TF_RGBA8:
|
||||
default:
|
||||
charData->glyphDataTexture = Metaphrasis::convertBufferToRGBA8(glyphData, charData->textureWidth, charData->textureHeight);
|
||||
break;
|
||||
}
|
||||
|
||||
free(glyphData);
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines the x offset of the rendered string.
|
||||
*
|
||||
* This routine calculates the x offset of the rendered string based off of a supplied positional format parameter.
|
||||
*
|
||||
* @param width Current pixel width of the string.
|
||||
* @param format Positional format of the string.
|
||||
*/
|
||||
int16_t FreeTypeGX::getStyleOffsetWidth(uint16_t width, uint16_t format) {
|
||||
|
||||
switch(format & FTGX_JUSTIFY_MASK)
|
||||
{
|
||||
case FTGX_JUSTIFY_LEFT:
|
||||
return 0;
|
||||
|
||||
default:
|
||||
case FTGX_JUSTIFY_CENTER:
|
||||
return -(width >> 1);
|
||||
|
||||
case FTGX_JUSTIFY_RIGHT:
|
||||
return -width;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines the y offset of the rendered string.
|
||||
*
|
||||
* This routine calculates the y offset of the rendered string based off of a supplied positional format parameter.
|
||||
*
|
||||
* @param offset Current pixel offset data of the string.
|
||||
* @param format Positional format of the string.
|
||||
*/
|
||||
int16_t FreeTypeGX::getStyleOffsetHeight(ftgxDataOffset *offset, uint16_t format)
|
||||
{
|
||||
switch(format & FTGX_ALIGN_MASK)
|
||||
{
|
||||
case FTGX_ALIGN_TOP:
|
||||
return offset->ascender;
|
||||
|
||||
default:
|
||||
case FTGX_ALIGN_MIDDLE:
|
||||
return (offset->ascender + offset->descender + 1) >> 1;
|
||||
|
||||
case FTGX_ALIGN_BOTTOM:
|
||||
return offset->descender;
|
||||
|
||||
case FTGX_ALIGN_BASELINE:
|
||||
return 0;
|
||||
|
||||
case FTGX_ALIGN_GLYPH_TOP:
|
||||
return offset->max;
|
||||
|
||||
case FTGX_ALIGN_GLYPH_MIDDLE:
|
||||
return (offset->max + offset->min + 1) >> 1;
|
||||
|
||||
case FTGX_ALIGN_GLYPH_BOTTOM:
|
||||
return offset->min;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Processes the supplied text string and prints the results at the specified coordinates.
|
||||
*
|
||||
* This routine processes each character of the supplied text string, loads the relevant preprocessed bitmap buffer,
|
||||
* a texture from said buffer, and loads the resultant texture into the EFB.
|
||||
*
|
||||
* @param x Screen X coordinate at which to output the text.
|
||||
* @param y Screen Y coordinate at which to output the text. Note that this value corresponds to the text string origin and not the top or bottom of the glyphs.
|
||||
* @param text NULL terminated string to output.
|
||||
* @param color Optional color to apply to the text characters. If not specified default value is ftgxWhite: (GXColor){0xff, 0xff, 0xff, 0xff}
|
||||
* @param textStyle Flags which specify any styling which should be applied to the rendered string.
|
||||
* @return The number of characters printed.
|
||||
*/
|
||||
uint16_t FreeTypeGX::drawText(int16_t x, int16_t y, wchar_t *text, GXColor color, uint16_t textStyle) {
|
||||
uint16_t strLength = wcslen(text);
|
||||
uint16_t x_pos = x, printed = 0;
|
||||
uint16_t x_offset = 0, y_offset = 0;
|
||||
GXTexObj glyphTexture;
|
||||
FT_Vector pairDelta;
|
||||
ftgxDataOffset offset;
|
||||
|
||||
if(textStyle & FTGX_JUSTIFY_MASK) {
|
||||
x_offset = this->getStyleOffsetWidth(this->getWidth(text), textStyle);
|
||||
}
|
||||
if(textStyle & FTGX_ALIGN_MASK) {
|
||||
y_offset = this->getStyleOffsetHeight(this->getOffset(text, &offset), textStyle);
|
||||
}
|
||||
|
||||
for (uint16_t i = 0; i < strLength; i++) {
|
||||
|
||||
ftgxCharData* glyphData = NULL;
|
||||
if( this->fontData.find(text[i]) != this->fontData.end() ) {
|
||||
glyphData = &this->fontData[text[i]];
|
||||
}
|
||||
else {
|
||||
glyphData = this->cacheGlyphData(text[i]);
|
||||
}
|
||||
|
||||
if(glyphData != NULL) {
|
||||
|
||||
if(this->ftKerningEnabled && i) {
|
||||
FT_Get_Kerning( this->ftFace, this->fontData[text[i - 1]].glyphIndex, glyphData->glyphIndex, FT_KERNING_DEFAULT, &pairDelta );
|
||||
x_pos += pairDelta.x >> 6;
|
||||
}
|
||||
|
||||
GX_InitTexObj(&glyphTexture, glyphData->glyphDataTexture, glyphData->textureWidth, glyphData->textureHeight, this->textureFormat, GX_CLAMP, GX_CLAMP, GX_FALSE);
|
||||
this->copyTextureToFramebuffer(&glyphTexture, glyphData->textureWidth, glyphData->textureHeight, x_pos + glyphData->renderOffsetX + x_offset, y - glyphData->renderOffsetY + y_offset, color);
|
||||
|
||||
x_pos += glyphData->glyphAdvanceX;
|
||||
printed++;
|
||||
}
|
||||
}
|
||||
|
||||
if(textStyle & FTGX_STYLE_MASK) {
|
||||
this->drawTextFeature(x + x_offset, y + y_offset, this->getWidth(text), this->getOffset(text, &offset), textStyle, color);
|
||||
}
|
||||
|
||||
return printed;
|
||||
}
|
||||
|
||||
/**
|
||||
* \overload
|
||||
*/
|
||||
uint16_t FreeTypeGX::drawText(int16_t x, int16_t y, wchar_t const *text, GXColor color, uint16_t textStyle) {
|
||||
return this->drawText(x, y, (wchar_t *)text, color, textStyle);
|
||||
}
|
||||
|
||||
void FreeTypeGX::drawTextFeature(int16_t x, int16_t y, uint16_t width, ftgxDataOffset *offsetData, uint16_t format, GXColor color) {
|
||||
uint16_t featureHeight = this->ftPointSize >> 4 > 0 ? this->ftPointSize >> 4 : 1;
|
||||
|
||||
if (format & FTGX_STYLE_UNDERLINE ) {
|
||||
switch(format & FTGX_ALIGN_MASK) {
|
||||
/*
|
||||
case FTGX_ALIGN_TOP:
|
||||
this->copyFeatureToFramebuffer(width, featureHeight, x, y + offsetData->max + 1, color);
|
||||
break;
|
||||
case FTGX_ALIGN_MIDDLE:
|
||||
this->copyFeatureToFramebuffer(width, featureHeight, x, y + ((offsetData->max - offsetData->min + 1) >> 1), color);
|
||||
break;
|
||||
case FTGX_ALIGN_BOTTOM:
|
||||
this->copyFeatureToFramebuffer(width, featureHeight, x, y - offsetData->min, color);
|
||||
break;
|
||||
*/
|
||||
default:
|
||||
this->copyFeatureToFramebuffer(width, featureHeight, x, y + 1, color);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (format & FTGX_STYLE_STRIKE ) {
|
||||
switch(format & FTGX_ALIGN_MASK) {
|
||||
/*
|
||||
case FTGX_ALIGN_TOP:
|
||||
this->copyFeatureToFramebuffer(width, featureHeight, x, y + ((offsetData->max - offsetData->min + 1) >> 1), color);
|
||||
break;
|
||||
case FTGX_ALIGN_MIDDLE:
|
||||
this->copyFeatureToFramebuffer(width, featureHeight, x, y, color);
|
||||
break;
|
||||
case FTGX_ALIGN_BOTTOM:
|
||||
this->copyFeatureToFramebuffer(width, featureHeight, x, y - ((offsetData->max + offsetData->min) >> 1), color);
|
||||
break;
|
||||
*/
|
||||
default:
|
||||
// this->copyFeatureToFramebuffer(width, featureHeight, x, y - ((offsetData->max - offsetData->min) >> 1), color);
|
||||
this->copyFeatureToFramebuffer(width, featureHeight, x, y - ((offsetData->max) >> 1), color);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Processes the supplied string and return the width of the string in pixels.
|
||||
*
|
||||
* This routine processes each character of the supplied text string and calculates the width of the entire string.
|
||||
* Note that if precaching of the entire font set is not enabled any uncached glyph will be cached after the call to this function.
|
||||
*
|
||||
* @param text NULL terminated string to calculate.
|
||||
* @return The width of the text string in pixels.
|
||||
*/
|
||||
uint16_t FreeTypeGX::getWidth(wchar_t *text) {
|
||||
uint16_t strLength = wcslen(text);
|
||||
uint16_t strWidth = 0;
|
||||
FT_Vector pairDelta;
|
||||
|
||||
for (uint16_t i = 0; i < strLength; i++) {
|
||||
|
||||
ftgxCharData* glyphData = NULL;
|
||||
if( this->fontData.find(text[i]) != this->fontData.end() ) {
|
||||
glyphData = &this->fontData[text[i]];
|
||||
}
|
||||
else {
|
||||
glyphData = this->cacheGlyphData(text[i]);
|
||||
}
|
||||
|
||||
if(glyphData != NULL) {
|
||||
if(this->ftKerningEnabled && (i > 0)) {
|
||||
FT_Get_Kerning( this->ftFace, this->fontData[text[i - 1]].glyphIndex, glyphData->glyphIndex, FT_KERNING_DEFAULT, &pairDelta );
|
||||
strWidth += pairDelta.x >> 6;
|
||||
}
|
||||
|
||||
strWidth += glyphData->glyphAdvanceX;
|
||||
}
|
||||
}
|
||||
|
||||
return strWidth;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* \overload
|
||||
*/
|
||||
uint16_t FreeTypeGX::getWidth(wchar_t const *text) {
|
||||
return this->getWidth((wchar_t *)text);
|
||||
}
|
||||
|
||||
/**
|
||||
* Processes the supplied string and return the height of the string in pixels.
|
||||
*
|
||||
* This routine processes each character of the supplied text string and calculates the height of the entire string.
|
||||
* Note that if precaching of the entire font set is not enabled any uncached glyph will be cached after the call to this function.
|
||||
*
|
||||
* @param text NULL terminated string to calculate.
|
||||
* @return The height of the text string in pixels.
|
||||
*/
|
||||
uint16_t FreeTypeGX::getHeight(wchar_t *text) {
|
||||
ftgxDataOffset offset;
|
||||
this->getOffset(text, &offset);
|
||||
|
||||
return offset.max - offset.min;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* \overload
|
||||
*/
|
||||
uint16_t FreeTypeGX::getHeight(wchar_t const *text) {
|
||||
return this->getHeight((wchar_t *)text);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the maximum offset above and minimum offset below the font origin line.
|
||||
*
|
||||
* This function calculates the maximum pixel height above the font origin line and the minimum
|
||||
* pixel height below the font origin line and returns the values in an addressible structure.
|
||||
*
|
||||
* @param text NULL terminated string to calculate.
|
||||
* @param offset returns the max and min values above and below the font origin line
|
||||
*
|
||||
*/
|
||||
ftgxDataOffset* FreeTypeGX::getOffset(wchar_t *text, ftgxDataOffset* offset) {
|
||||
uint16_t strLength = wcslen(text);
|
||||
int16_t strMax = 0, strMin = 9999;
|
||||
|
||||
for (uint16_t i = 0; i < strLength; i++) {
|
||||
|
||||
ftgxCharData* glyphData = NULL;
|
||||
if( this->fontData.find(text[i]) != this->fontData.end() ) {
|
||||
glyphData = &this->fontData[text[i]];
|
||||
}
|
||||
else {
|
||||
glyphData = this->cacheGlyphData(text[i]);
|
||||
}
|
||||
|
||||
if(glyphData != NULL) {
|
||||
strMax = glyphData->renderOffsetMax > strMax ? glyphData->renderOffsetMax : strMax;
|
||||
strMin = glyphData->renderOffsetMin < strMin ? glyphData->renderOffsetMin : strMin;
|
||||
}
|
||||
}
|
||||
offset->ascender = this->ftFace->size->metrics.ascender>>6;
|
||||
offset->descender = this->ftFace->size->metrics.descender>>6;
|
||||
offset->max = strMax;
|
||||
offset->min = strMin;
|
||||
return offset;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* \overload
|
||||
*/
|
||||
ftgxDataOffset* FreeTypeGX::getOffset(wchar_t const *text, ftgxDataOffset* offset) {
|
||||
return this->getOffset(text, offset);
|
||||
}
|
||||
|
||||
/**
|
||||
* Copies the supplied texture quad to the EFB.
|
||||
*
|
||||
* This routine uses the in-built GX quad builder functions to define the texture bounds and location on the EFB target.
|
||||
*
|
||||
* @param texObj A pointer to the glyph's initialized texture object.
|
||||
* @param texWidth The pixel width of the texture object.
|
||||
* @param texHeight The pixel height of the texture object.
|
||||
* @param screenX The screen X coordinate at which to output the rendered texture.
|
||||
* @param screenY The screen Y coordinate at which to output the rendered texture.
|
||||
* @param color Color to apply to the texture.
|
||||
*/
|
||||
void FreeTypeGX::copyTextureToFramebuffer(GXTexObj *texObj, f32 texWidth, f32 texHeight, int16_t screenX, int16_t screenY, GXColor color) {
|
||||
|
||||
GX_LoadTexObj(texObj, GX_TEXMAP0);
|
||||
GX_InvalidateTexAll();
|
||||
|
||||
GX_SetTevOp (GX_TEVSTAGE0, GX_MODULATE);
|
||||
GX_SetVtxDesc (GX_VA_TEX0, GX_DIRECT);
|
||||
|
||||
GX_Begin(GX_QUADS, this->vertexIndex, 4);
|
||||
GX_Position2s16(screenX, screenY);
|
||||
GX_Color4u8(color.r, color.g, color.b, color.a);
|
||||
GX_TexCoord2f32(0.0f, 0.0f);
|
||||
|
||||
GX_Position2s16(texWidth + screenX, screenY);
|
||||
GX_Color4u8(color.r, color.g, color.b, color.a);
|
||||
GX_TexCoord2f32(1.0f, 0.0f);
|
||||
|
||||
GX_Position2s16(texWidth + screenX, texHeight + screenY);
|
||||
GX_Color4u8(color.r, color.g, color.b, color.a);
|
||||
GX_TexCoord2f32(1.0f, 1.0f);
|
||||
|
||||
GX_Position2s16(screenX, texHeight + screenY);
|
||||
GX_Color4u8(color.r, color.g, color.b, color.a);
|
||||
GX_TexCoord2f32(0.0f, 1.0f);
|
||||
GX_End();
|
||||
|
||||
this->setDefaultMode();
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a feature quad to the EFB.
|
||||
*
|
||||
* This function creates a simple quad for displaying underline or strikeout text styling.
|
||||
*
|
||||
* @param featureWidth The pixel width of the quad.
|
||||
* @param featureHeight The pixel height of the quad.
|
||||
* @param screenX The screen X coordinate at which to output the quad.
|
||||
* @param screenY The screen Y coordinate at which to output the quad.
|
||||
* @param color Color to apply to the texture.
|
||||
*/
|
||||
void FreeTypeGX::copyFeatureToFramebuffer(f32 featureWidth, f32 featureHeight, int16_t screenX, int16_t screenY, GXColor color) {
|
||||
|
||||
GX_SetTevOp (GX_TEVSTAGE0, GX_PASSCLR);
|
||||
GX_SetVtxDesc (GX_VA_TEX0, GX_NONE);
|
||||
|
||||
GX_Begin(GX_QUADS, this->vertexIndex, 4);
|
||||
GX_Position2s16(screenX, screenY);
|
||||
GX_Color4u8(color.r, color.g, color.b, color.a);
|
||||
|
||||
GX_Position2s16(featureWidth + screenX, screenY);
|
||||
GX_Color4u8(color.r, color.g, color.b, color.a);
|
||||
|
||||
GX_Position2s16(featureWidth + screenX, featureHeight + screenY);
|
||||
GX_Color4u8(color.r, color.g, color.b, color.a);
|
||||
|
||||
GX_Position2s16(screenX, featureHeight + screenY);
|
||||
GX_Color4u8(color.r, color.g, color.b, color.a);
|
||||
GX_End();
|
||||
|
||||
this->setDefaultMode();
|
||||
}
|
@ -1,272 +0,0 @@
|
||||
/*
|
||||
* FreeTypeGX is a wrapper class for libFreeType which renders a compiled
|
||||
* FreeType parsable font into a GX texture for Wii homebrew development.
|
||||
* Copyright (C) 2008 Armin Tamzarian
|
||||
* Modified by Tantric, 2009
|
||||
*
|
||||
* This file is part of FreeTypeGX.
|
||||
*
|
||||
* FreeTypeGX is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* FreeTypeGX is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with FreeTypeGX. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/** \mainpage FreeTypeGX
|
||||
*
|
||||
* \section sec_intro Introduction
|
||||
*
|
||||
* FreeTypeGX is a wrapper class for libFreeType which renders a compiled FreeType parsable font into a GX texture for Wii homebrew development.
|
||||
* <br>
|
||||
* FreeTypeGX is written in C++ and makes use of a selectable pre-buffered or buffer-on-demand methodology to allow fast and efficient printing of text to the EFB.
|
||||
* <p>
|
||||
* This library was developed in-full by Armin Tamzarian with the support of developers in \#wiibrew on EFnet.
|
||||
*
|
||||
* \section sec_installation_source Installation (Source Code)
|
||||
*
|
||||
* -# Ensure that you have the <a href = "http://www.tehskeen.com/forums/showthread.php?t=9404">libFreeType</a> Wii library installed in your development environment with the library added to your Makefile where appropriate.
|
||||
* -# Ensure that you have the <a href = "http://code.google.com/p/metaphrasis">Metaphrasis</a> library installed in your development environment with the library added to your Makefile where appropriate.
|
||||
* -# Extract the FreeTypeGX archive.
|
||||
* -# Copy the contents of the <i>src</i> directory into your project's development path.
|
||||
* -# Include the FreeTypeGX header file in your code using syntax such as the following:
|
||||
* \code
|
||||
* #include "FreeTypeGX.h"
|
||||
* \endcode
|
||||
*
|
||||
* \section sec_installation_library Installation (Library)
|
||||
*
|
||||
* -# Ensure that you have the <a href = "http://www.tehskeen.com/forums/showthread.php?t=9404">libFreeType</a> Wii library installed in your development environment with the library added to your Makefile where appropriate.
|
||||
* -# Ensure that you have the <a href = "http://code.google.com/p/metaphrasis">Metaphrasis</a> library installed in your development environment with the library added to your Makefile where appropriate.
|
||||
* -# Extract the FreeTypeGX archive.
|
||||
* -# Copy the contents of the <i>lib</i> directory into your <i>devKitPro/libogc</i> directory.
|
||||
* -# Include the FreeTypeGX header file in your code using syntax such as the following:
|
||||
* \code
|
||||
* #include "FreeTypeGX.h"
|
||||
* \endcode
|
||||
*
|
||||
* \section sec_freetypegx_prerequisites FreeTypeGX Prerequisites
|
||||
*
|
||||
* Before you begin using FreeTypeGX in your project you must ensure that the desired font in compiled into your project. For this example I will assume you are building your project with a Makefile using devKitPro evironment and are attempting to include a font whose filename is rursus_compact_mono.ttf.
|
||||
*
|
||||
* -# Copy the font into a directory which will be processed by the project's Makefile. If you are unsure about where you should place your font just copy the it into your project's source directory.
|
||||
* \n\n
|
||||
* -# Modify the Makefile to convert the font into an object file:
|
||||
* \code
|
||||
* %.ttf.o : %.ttf
|
||||
* @echo $(notdir $<)
|
||||
* $(bin2o)
|
||||
* \endcode
|
||||
* \n
|
||||
* -# Include the font object's generated header file in your source code:
|
||||
* \code
|
||||
* #include "rursus_compact_mono_ttf.h"
|
||||
* \endcode
|
||||
* This header file defines the two variables that you will need for use within your project:
|
||||
* \code
|
||||
* extern const u8 rursus_compact_mono_ttf[]; A pointer to the font buffer within the compiled project.
|
||||
* extern const u32 rursus_compact_mono_ttf_size; The size of the font's buffer in bytes.
|
||||
* \endcode
|
||||
*
|
||||
* \section sec_freetypegx_usage FreeTypeGX Usage
|
||||
*
|
||||
* -# Within the file you included the FreeTypeGX.h header create an instance object of the FreeTypeGX class:
|
||||
* \code
|
||||
* FreeTypeGX *freeTypeGX = new FreeTypeGX();
|
||||
* \endcode
|
||||
* Alternately you can specify a texture format to which you would like to render the font characters. Note that the default value for this parameter is GX_TF_RGBA8.
|
||||
* \code
|
||||
* FreeTypeGX *freeTypeGX = new FreeTypeGX(GX_TF_RGB565);
|
||||
* \endcode
|
||||
* Furthermore, you can also specify a vertex format index to avoid conflicts with concurrent libraries or other systems. Note that the default value for this parameter is GX_VTXFMT1.
|
||||
* \code
|
||||
* FreeTypeGX *freeTypeGX = new FreeTypeGX(GX_TF_RGB565, GX_VTXFMT1);
|
||||
* \endcode
|
||||
* \n
|
||||
* Currently supported textures are:
|
||||
* \li <i>GX_TF_I4</i>
|
||||
* \li <i>GX_TF_I8</i>
|
||||
* \li <i>GX_TF_IA4</i>
|
||||
* \li <i>GX_TF_IA8</i>
|
||||
* \li <i>GX_TF_RGB565</i>
|
||||
* \li <i>GX_TF_RGB5A3</i>
|
||||
* \li <i>GX_TF_RGBA8</i>
|
||||
*
|
||||
* \n
|
||||
* -# Using the allocated FreeTypeGX instance object call the loadFont function to load the font from the compiled buffer and specify the desired point size. Note that this function can be called multiple times to load a new:
|
||||
* \code
|
||||
* freeTypeGX->loadFont(rursus_compact_mono_ttf, rursus_compact_mono_ttf_size, 64);
|
||||
* \endcode
|
||||
* Alternately you can specify a flag which will load and cache all available font glyphs immidiately. Note that on large font sets enabling this feature could take a significant amount of time.
|
||||
* \code
|
||||
* freeTypeGX->loadFont(rursus_compact_mono_ttf, rursus_compact_mono_ttf_size, 64, true);
|
||||
* \endcode
|
||||
* \n
|
||||
* -# If necessary you can enable compatibility modes with concurrent libraries or systems. For more information on this feature see the documentation for setCompatibilityMode:
|
||||
* \code
|
||||
* freeTypeGX->setCompatibilityMode(FTGX_COMPATIBILITY_GRRLIB);
|
||||
* \endcode
|
||||
* -# Using the allocated FreeTypeGX instance object call the drawText function to print a string at the specified screen X and Y coordinates to the current EFB:
|
||||
* \code
|
||||
* freeTypeGX->drawText(10, 25, _TEXT("FreeTypeGX Rocks!"));
|
||||
* \endcode
|
||||
* Alternately you can specify a <i>GXColor</i> object you would like to apply to the printed characters:
|
||||
* \code
|
||||
* freeTypeGX->drawText(10, 25, _TEXT("FreeTypeGX Rocks!"),
|
||||
* (GXColor){0xff, 0xee, 0xaa, 0xff});
|
||||
* \endcode
|
||||
* Furthermore you can also specify a group of styling parameters which will modify the positioning or style of the text:
|
||||
* \code
|
||||
* freeTypeGX->drawText(10, 25, _TEXT("FreeTypeGX Rocks!"),
|
||||
* (GXColor){0xff, 0xee, 0xaa, 0xff},
|
||||
* FTGX_JUSTIFY_CENTER | FTGX_ALIGN_BOTTOM | FTGX_STYLE_UNDERLINE);
|
||||
* \endcode
|
||||
* \n
|
||||
* Currently style parameters are:
|
||||
* \li <i>FTGX_JUSTIFY_LEFT</i>
|
||||
* \li <i>FTGX_JUSTIFY_CENTER</i>
|
||||
* \li <i>FTGX_JUSTIFY_RIGHT</i>
|
||||
* \li <i>FTGX_ALIGN_TOP</i>
|
||||
* \li <i>FTGX_ALIGN_MIDDLE</i>
|
||||
* \li <i>FTGX_ALIGN_BOTTOM</i>
|
||||
* \li <i>FTGX_STYLE_UNDERLINE</i>
|
||||
* \li <i>FTGX_STYLE_STRIKE</i>
|
||||
*
|
||||
* \section sec_license License
|
||||
*
|
||||
* FreeTypeGX is distributed under the GNU Lesser General Public License.
|
||||
*
|
||||
* \section sec_contact Contact
|
||||
*
|
||||
* If you have any suggestions, questions, or comments regarding this library feel free to e-mail me at tamzarian1989 [at] gmail [dawt] com.
|
||||
*/
|
||||
|
||||
#ifndef FREETYPEGX_H_
|
||||
#define FREETYPEGX_H_
|
||||
|
||||
#include <gccore.h>
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include FT_BITMAP_H
|
||||
#include <Metaphrasis.h>
|
||||
|
||||
#include <malloc.h>
|
||||
#include <string.h>
|
||||
#include <map>
|
||||
|
||||
/*! forward deklaration of private structures
|
||||
*
|
||||
*/
|
||||
typedef struct ftgxCharData_ ftgxCharData;
|
||||
typedef struct ftgxDataOffset_ ftgxDataOffset;
|
||||
|
||||
#define _TEXT(t) L ## t /**< Unicode helper macro. */
|
||||
|
||||
#define FTGX_NULL 0x0000
|
||||
#define FTGX_JUSTIFY_LEFT 0x0001
|
||||
#define FTGX_JUSTIFY_CENTER 0x0002
|
||||
#define FTGX_JUSTIFY_RIGHT 0x0003
|
||||
#define FTGX_JUSTIFY_MASK 0x000f
|
||||
|
||||
#define FTGX_ALIGN_TOP 0x0010
|
||||
#define FTGX_ALIGN_MIDDLE 0x0020
|
||||
#define FTGX_ALIGN_BOTTOM 0x0030
|
||||
#define FTGX_ALIGN_BASELINE 0x0040
|
||||
#define FTGX_ALIGN_GLYPH_TOP 0x0050
|
||||
#define FTGX_ALIGN_GLYPH_MIDDLE 0x0060
|
||||
#define FTGX_ALIGN_GLYPH_BOTTOM 0x0070
|
||||
#define FTGX_ALIGN_MASK 0x00f0
|
||||
|
||||
#define FTGX_STYLE_UNDERLINE 0x0100
|
||||
#define FTGX_STYLE_STRIKE 0x0200
|
||||
#define FTGX_STYLE_MASK 0x0f00
|
||||
|
||||
#define FTGX_COMPATIBILITY_DEFAULT_TEVOP_GX_MODULATE 0X0001
|
||||
#define FTGX_COMPATIBILITY_DEFAULT_TEVOP_GX_DECAL 0X0002
|
||||
#define FTGX_COMPATIBILITY_DEFAULT_TEVOP_GX_BLEND 0X0004
|
||||
#define FTGX_COMPATIBILITY_DEFAULT_TEVOP_GX_REPLACE 0X0008
|
||||
#define FTGX_COMPATIBILITY_DEFAULT_TEVOP_GX_PASSCLR 0X0010
|
||||
|
||||
#define FTGX_COMPATIBILITY_DEFAULT_VTXDESC_GX_NONE 0X0100
|
||||
#define FTGX_COMPATIBILITY_DEFAULT_VTXDESC_GX_DIRECT 0X0200
|
||||
#define FTGX_COMPATIBILITY_DEFAULT_VTXDESC_GX_INDEX8 0X0400
|
||||
#define FTGX_COMPATIBILITY_DEFAULT_VTXDESC_GX_INDEX16 0X0800
|
||||
|
||||
#define FTGX_COMPATIBILITY_NONE 0x0000
|
||||
#define FTGX_COMPATIBILITY_GRRLIB FTGX_COMPATIBILITY_DEFAULT_TEVOP_GX_PASSCLR | FTGX_COMPATIBILITY_DEFAULT_VTXDESC_GX_NONE
|
||||
#define FTGX_COMPATIBILITY_LIBWIISPRITE FTGX_COMPATIBILITY_DEFAULT_TEVOP_GX_MODULATE | FTGX_COMPATIBILITY_DEFAULT_VTXDESC_GX_DIRECT
|
||||
|
||||
const GXColor ftgxWhite = (GXColor){0xff, 0xff, 0xff, 0xff}; /**< Constant color value used only to sanitize Doxygen documentation. */
|
||||
|
||||
/*! \class FreeTypeGX
|
||||
* \brief Wrapper class for the libFreeType library with GX rendering.
|
||||
* \author Armin Tamzarian
|
||||
* \version 0.2.4
|
||||
*
|
||||
* FreeTypeGX acts as a wrapper class for the libFreeType library. It supports precaching of transformed glyph data into
|
||||
* a specified texture format. Rendering of the data to the EFB is accomplished through the application of high performance
|
||||
* GX texture functions resulting in high throughput of string rendering.
|
||||
*/
|
||||
class FreeTypeGX {
|
||||
|
||||
private:
|
||||
FT_Library ftLibrary; /**< FreeType FT_Library instance. */
|
||||
FT_Face ftFace; /**< FreeType reusable FT_Face typographic object. */
|
||||
FT_GlyphSlot ftSlot; /**< FreeType reusable FT_GlyphSlot glyph container object. */
|
||||
FT_UInt ftPointSize; /**< Requested size of the rendered font. */
|
||||
bool ftKerningEnabled; /**< Flag indicating the availability of font kerning data. */
|
||||
|
||||
uint8_t textureFormat; /**< Defined texture format of the target EFB. */
|
||||
uint8_t vertexIndex; /**< Vertex format descriptor index. */
|
||||
uint32_t compatibilityMode; /**< Compatibility mode for default tev operations and vertex descriptors. */
|
||||
std::map<wchar_t, ftgxCharData> fontData; /**< Map which holds the glyph data structures for the corresponding characters. */
|
||||
|
||||
static uint16_t adjustTextureWidth(uint16_t textureWidth, uint8_t textureFormat);
|
||||
static uint16_t adjustTextureHeight(uint16_t textureHeight, uint8_t textureFormat);
|
||||
|
||||
static int16_t getStyleOffsetWidth(uint16_t width, uint16_t format);
|
||||
static int16_t getStyleOffsetHeight(ftgxDataOffset *offset, uint16_t format);
|
||||
|
||||
void unloadFont();
|
||||
ftgxCharData *cacheGlyphData(wchar_t charCode);
|
||||
uint16_t cacheGlyphDataComplete();
|
||||
void loadGlyphData(FT_Bitmap *bmp, ftgxCharData *charData);
|
||||
|
||||
void setDefaultMode();
|
||||
|
||||
void drawTextFeature(int16_t x, int16_t y, uint16_t width, ftgxDataOffset *offsetData, uint16_t format, GXColor color);
|
||||
void copyTextureToFramebuffer(GXTexObj *texObj, f32 texWidth, f32 texHeight, int16_t screenX, int16_t screenY, GXColor color);
|
||||
void copyFeatureToFramebuffer(f32 featureWidth, f32 featureHeight, int16_t screenX, int16_t screenY, GXColor color);
|
||||
|
||||
public:
|
||||
FreeTypeGX(uint8_t textureFormat = GX_TF_RGBA8, uint8_t vertexIndex = GX_VTXFMT1);
|
||||
~FreeTypeGX();
|
||||
|
||||
static wchar_t* charToWideChar(char* p);
|
||||
static wchar_t* charToWideChar(const char* p);
|
||||
void setVertexFormat(uint8_t vertexIndex);
|
||||
void setCompatibilityMode(uint32_t compatibilityMode);
|
||||
|
||||
uint16_t loadFont(uint8_t* fontBuffer, FT_Long bufferSize, FT_UInt pointSize, bool cacheAll = false);
|
||||
uint16_t loadFont(const uint8_t* fontBuffer, FT_Long bufferSize, FT_UInt pointSize, bool cacheAll = false);
|
||||
void changeSize(FT_UInt vPointSize, FT_UInt hPointSize=0);
|
||||
|
||||
uint16_t drawText(int16_t x, int16_t y, wchar_t *text, GXColor color = ftgxWhite, uint16_t textStyling = FTGX_NULL);
|
||||
uint16_t drawText(int16_t x, int16_t y, wchar_t const *text, GXColor color = ftgxWhite, uint16_t textStyling = FTGX_NULL);
|
||||
|
||||
uint16_t getWidth(wchar_t *text);
|
||||
uint16_t getWidth(wchar_t const *text);
|
||||
uint16_t getHeight(wchar_t *text);
|
||||
uint16_t getHeight(wchar_t const *text);
|
||||
ftgxDataOffset* getOffset(wchar_t *text, ftgxDataOffset* offset);
|
||||
ftgxDataOffset* getOffset(wchar_t const *text, ftgxDataOffset* offset);
|
||||
};
|
||||
|
||||
#endif /* FREETYPEGX_H_ */
|
@ -1,997 +0,0 @@
|
||||
//GB2Unicode.c
|
||||
|
||||
|
||||
#include "GB2Unicode.h"
|
||||
|
||||
|
||||
|
||||
|
||||
unsigned short bGbUnicodedat1[]={
|
||||
0x3000,0x3001,0x3002,0x00B7,0x02C9,0x02C7,0x00A8,0x3003,
|
||||
0x3005,0x2014,0xFF5E,0x2016,0x2026,0x2018,0x2019,0x201C,
|
||||
0x201D,0x3014,0x3015,0x3008,0x3009,0x300A,0x300B,0x300C,
|
||||
0x300D,0x300E,0x300F,0x3016,0x3017,0x3010,0x3011,0x00B1,
|
||||
0x00D7,0x00F7,0x2236,0x2227,0x2228,0x2211,0x220F,0x222A,
|
||||
0x2229,0x2208,0x2237,0x221A,0x22A5,0x2225,0x2220,0x2312,
|
||||
0x2299,0x222B,0x222E,0x2261,0x224C,0x2248,0x223D,0x221D,
|
||||
0x2260,0x226E,0x226F,0x2264,0x2265,0x221E,0x2235,0x2234,
|
||||
0x2642,0x2640,0x00B0,0x2032,0x2033,0x2103,0xFF04,0x00A4,
|
||||
0xFFE0,0xFFE1,0x2030,0x00A7,0x2116,0x2606,0x2605,0x25CB,
|
||||
0x25CF,0x25CE,0x25C7,0x25C6,0x25A1,0x25A0,0x25B3,0x25B2,
|
||||
0x203B,0x2192,0x2190,0x2191,0x2193,0x3013,0x2170,0x2171,
|
||||
0x2172,0x2173,0x2174,0x2175,0x2176,0x2177,0x2178,0x2179,
|
||||
0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x2488,0x2489,
|
||||
0x248A,0x248B,0x248C,0x248D,0x248E,0x248F,0x2490,0x2491,
|
||||
0x2492,0x2493,0x2494,0x2495,0x2496,0x2497,0x2498,0x2499,
|
||||
0x249A,0x249B,0x2474,0x2475,0x2476,0x2477,0x2478,0x2479,
|
||||
0x247A,0x247B,0x247C,0x247D,0x247E,0x247F,0x2480,0x2481,
|
||||
0x2482,0x2483,0x2484,0x2485,0x2486,0x2487,0x2460,0x2461,
|
||||
0x2462,0x2463,0x2464,0x2465,0x2466,0x2467,0x2468,0x2469,
|
||||
0x2000,0x2000,0x3220,0x3221,0x3222,0x3223,0x3224,0x3225,
|
||||
0x3226,0x3227,0x3228,0x3229,0x2000,0x2000,0x2160,0x2161,
|
||||
0x2162,0x2163,0x2164,0x2165,0x2166,0x2167,0x2168,0x2169,
|
||||
0x216A,0x216B,0x2000,0x2000,0xFF01,0xFF02,0xFF03,0xFFE5,
|
||||
0xFF05,0xFF06,0xFF07,0xFF08,0xFF09,0xFF0A,0xFF0B,0xFF0C,
|
||||
0xFF0D,0xFF0E,0xFF0F,0xFF10,0xFF11,0xFF12,0xFF13,0xFF14,
|
||||
0xFF15,0xFF16,0xFF17,0xFF18,0xFF19,0xFF1A,0xFF1B,0xFF1C,
|
||||
0xFF1D,0xFF1E,0xFF1F,0xFF20,0xFF21,0xFF22,0xFF23,0xFF24,
|
||||
0xFF25,0xFF26,0xFF27,0xFF28,0xFF29,0xFF2A,0xFF2B,0xFF2C,
|
||||
0xFF2D,0xFF2E,0xFF2F,0xFF30,0xFF31,0xFF32,0xFF33,0xFF34,
|
||||
0xFF35,0xFF36,0xFF37,0xFF38,0xFF39,0xFF3A,0xFF3B,0xFF3C,
|
||||
0xFF3D,0xFF3E,0xFF3F,0xFF40,0xFF41,0xFF42,0xFF43,0xFF44,
|
||||
0xFF45,0xFF46,0xFF47,0xFF48,0xFF49,0xFF4A,0xFF4B,0xFF4C,
|
||||
0xFF4D,0xFF4E,0xFF4F,0xFF50,0xFF51,0xFF52,0xFF53,0xFF54,
|
||||
0xFF55,0xFF56,0xFF57,0xFF58,0xFF59,0xFF5A,0xFF5B,0xFF5C,
|
||||
0xFF5D,0xFFE3,0x3041,0x3042,0x3043,0x3044,0x3045,0x3046,
|
||||
0x3047,0x3048,0x3049,0x304A,0x304B,0x304C,0x304D,0x304E,
|
||||
0x304F,0x3050,0x3051,0x3052,0x3053,0x3054,0x3055,0x3056,
|
||||
0x3057,0x3058,0x3059,0x305A,0x305B,0x305C,0x305D,0x305E,
|
||||
0x305F,0x3060,0x3061,0x3062,0x3063,0x3064,0x3065,0x3066,
|
||||
0x3067,0x3068,0x3069,0x306A,0x306B,0x306C,0x306D,0x306E,
|
||||
0x306F,0x3070,0x3071,0x3072,0x3073,0x3074,0x3075,0x3076,
|
||||
0x3077,0x3078,0x3079,0x307A,0x307B,0x307C,0x307D,0x307E,
|
||||
0x307F,0x3080,0x3081,0x3082,0x3083,0x3084,0x3085,0x3086,
|
||||
0x3087,0x3088,0x3089,0x308A,0x308B,0x308C,0x308D,0x308E,
|
||||
0x308F,0x3090,0x3091,0x3092,0x3093,0x2000,0x2000,0x2000,
|
||||
0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,
|
||||
0x30A1,0x30A2,0x30A3,0x30A4,0x30A5,0x30A6,0x30A7,0x30A8,
|
||||
0x30A9,0x30AA,0x30AB,0x30AC,0x30AD,0x30AE,0x30AF,0x30B0,
|
||||
0x30B1,0x30B2,0x30B3,0x30B4,0x30B5,0x30B6,0x30B7,0x30B8,
|
||||
0x30B9,0x30BA,0x30BB,0x30BC,0x30BD,0x30BE,0x30BF,0x30C0,
|
||||
0x30C1,0x30C2,0x30C3,0x30C4,0x30C5,0x30C6,0x30C7,0x30C8,
|
||||
0x30C9,0x30CA,0x30CB,0x30CC,0x30CD,0x30CE,0x30CF,0x30D0,
|
||||
0x30D1,0x30D2,0x30D3,0x30D4,0x30D5,0x30D6,0x30D7,0x30D8,
|
||||
0x30D9,0x30DA,0x30DB,0x30DC,0x30DD,0x30DE,0x30DF,0x30E0,
|
||||
0x30E1,0x30E2,0x30E3,0x30E4,0x30E5,0x30E6,0x30E7,0x30E8,
|
||||
0x30E9,0x30EA,0x30EB,0x30EC,0x30ED,0x30EE,0x30EF,0x30F0,
|
||||
0x30F1,0x30F2,0x30F3,0x30F4,0x30F5,0x30F6,0x2000,0x2000,
|
||||
0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x0391,0x0392,
|
||||
0x0393,0x0394,0x0395,0x0396,0x0397,0x0398,0x0399,0x039A,
|
||||
0x039B,0x039C,0x039D,0x039E,0x039F,0x03A0,0x03A1,0x03A3,
|
||||
0x03A4,0x03A5,0x03A6,0x03A7,0x03A8,0x03A9,0x2000,0x2000,
|
||||
0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x03B1,0x03B2,
|
||||
0x03B3,0x03B4,0x03B5,0x03B6,0x03B7,0x03B8,0x03B9,0x03BA,
|
||||
0x03BB,0x03BC,0x03BD,0x03BE,0x03BF,0x03C0,0x03C1,0x03C3,
|
||||
0x03C4,0x03C5,0x03C6,0x03C7,0x03C8,0x03C9,0x2000,0x2000,
|
||||
0x2000,0x2000,0x2000,0x2000,0x2000,0xFE35,0xFE36,0xFE39,
|
||||
0xFE3A,0xFE3F,0xFE40,0xFE3D,0xFE3E,0xFE41,0xFE42,0xFE43,
|
||||
0xFE44,0x2000,0x2000,0xFE3B,0xFE3C,0xFE37,0xFE38,0xFE31,
|
||||
0x2000,0xFE33,0xFE34,0x2000,0x2000,0x2000,0x2000,0x2000,
|
||||
0x2000,0x2000,0x2000,0x2000,0x0410,0x0411,0x0412,0x0413,
|
||||
0x0414,0x0415,0x0401,0x0416,0x0417,0x0418,0x0419,0x041A,
|
||||
0x041B,0x041C,0x041D,0x041E,0x041F,0x0420,0x0421,0x0422,
|
||||
0x0423,0x0424,0x0425,0x0426,0x0427,0x0428,0x0429,0x042A,
|
||||
0x042B,0x042C,0x042D,0x042E,0x042F,0x2000,0x2000,0x2000,
|
||||
0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,
|
||||
0x2000,0x2000,0x2000,0x2000,0x0430,0x0431,0x0432,0x0433,
|
||||
0x0434,0x0435,0x0451,0x0436,0x0437,0x0438,0x0439,0x043A,
|
||||
0x043B,0x043C,0x043D,0x043E,0x043F,0x0440,0x0441,0x0442,
|
||||
0x0443,0x0444,0x0445,0x0446,0x0447,0x0448,0x0449,0x044A,
|
||||
0x044B,0x044C,0x044D,0x044E,0x044F,0x2000,0x2000,0x2000,
|
||||
0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,
|
||||
0x2000,0x2000,0x0101,0x00E1,0x01CE,0x00E0,0x0113,0x00E9,
|
||||
0x011B,0x00E8,0x012B,0x00ED,0x01D0,0x00EC,0x014D,0x00F3,
|
||||
0x01D2,0x00F2,0x016B,0x00FA,0x01D4,0x00F9,0x01D6,0x01D8,
|
||||
0x01DA,0x01DC,0x00FC,0x00EA,0x0251,0xE7C7,0x0144,0x0148,
|
||||
0xE7C8,0x0261,0x2000,0x2000,0x2000,0x2000,0x3105,0x3106,
|
||||
0x3107,0x3108,0x3109,0x310A,0x310B,0x310C,0x310D,0x310E,
|
||||
0x310F,0x3110,0x3111,0x3112,0x3113,0x3114,0x3115,0x3116,
|
||||
0x3117,0x3118,0x3119,0x311A,0x311B,0x311C,0x311D,0x311E,
|
||||
0x311F,0x3120,0x3121,0x3122,0x3123,0x3124,0x3125,0x3126,
|
||||
0x3127,0x3128,0x3129,0x2000,0x2000,0x2000,0x2000,0x2000,
|
||||
0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,
|
||||
0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,
|
||||
0x2000,0x2000,0x2000,0x2500,0x2501,0x2502,0x2503,0x2504,
|
||||
0x2505,0x2506,0x2507,0x2508,0x2509,0x250A,0x250B,0x250C,
|
||||
0x250D,0x250E,0x250F,0x2510,0x2511,0x2512,0x2513,0x2514,
|
||||
0x2515,0x2516,0x2517,0x2518,0x2519,0x251A,0x251B,0x251C,
|
||||
0x251D,0x251E,0x251F,0x2520,0x2521,0x2522,0x2523,0x2524,
|
||||
0x2525,0x2526,0x2527,0x2528,0x2529,0x252A,0x252B,0x252C,
|
||||
0x252D,0x252E,0x252F,0x2530,0x2531,0x2532,0x2533,0x2534,
|
||||
0x2535,0x2536,0x2537,0x2538,0x2539,0x253A,0x253B,0x253C,
|
||||
0x253D,0x253E,0x253F,0x2540,0x2541,0x2542,0x2543,0x2544,
|
||||
0x2545,0x2546,0x2547,0x2548,0x2549,0x254A,0x254B,0x2000,
|
||||
0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,
|
||||
0x2000,0x2000,0x2000,0x2000,0x2000,0x2000
|
||||
};
|
||||
unsigned short bGbUnicodedat2[]={
|
||||
0x554A,0x963F,0x57C3,0x6328,0x54CE,0x5509,0x54C0,0x7691,
|
||||
0x764C,0x853C,0x77EE,0x827E,0x788D,0x7231,0x9698,0x978D,
|
||||
0x6C28,0x5B89,0x4FFA,0x6309,0x6697,0x5CB8,0x80FA,0x6848,
|
||||
0x80AE,0x6602,0x76CE,0x51F9,0x6556,0x71AC,0x7FF1,0x8884,
|
||||
0x50B2,0x5965,0x61CA,0x6FB3,0x82AD,0x634C,0x6252,0x53ED,
|
||||
0x5427,0x7B06,0x516B,0x75A4,0x5DF4,0x62D4,0x8DCB,0x9776,
|
||||
0x628A,0x8019,0x575D,0x9738,0x7F62,0x7238,0x767D,0x67CF,
|
||||
0x767E,0x6446,0x4F70,0x8D25,0x62DC,0x7A17,0x6591,0x73ED,
|
||||
0x642C,0x6273,0x822C,0x9881,0x677F,0x7248,0x626E,0x62CC,
|
||||
0x4F34,0x74E3,0x534A,0x529E,0x7ECA,0x90A6,0x5E2E,0x6886,
|
||||
0x699C,0x8180,0x7ED1,0x68D2,0x78C5,0x868C,0x9551,0x508D,
|
||||
0x8C24,0x82DE,0x80DE,0x5305,0x8912,0x5265,0x8584,0x96F9,
|
||||
0x4FDD,0x5821,0x9971,0x5B9D,0x62B1,0x62A5,0x66B4,0x8C79,
|
||||
0x9C8D,0x7206,0x676F,0x7891,0x60B2,0x5351,0x5317,0x8F88,
|
||||
0x80CC,0x8D1D,0x94A1,0x500D,0x72C8,0x5907,0x60EB,0x7119,
|
||||
0x88AB,0x5954,0x82EF,0x672C,0x7B28,0x5D29,0x7EF7,0x752D,
|
||||
0x6CF5,0x8E66,0x8FF8,0x903C,0x9F3B,0x6BD4,0x9119,0x7B14,
|
||||
0x5F7C,0x78A7,0x84D6,0x853D,0x6BD5,0x6BD9,0x6BD6,0x5E01,
|
||||
0x5E87,0x75F9,0x95ED,0x655D,0x5F0A,0x5FC5,0x8F9F,0x58C1,
|
||||
0x81C2,0x907F,0x965B,0x97AD,0x8FB9,0x7F16,0x8D2C,0x6241,
|
||||
0x4FBF,0x53D8,0x535E,0x8FA8,0x8FA9,0x8FAB,0x904D,0x6807,
|
||||
0x5F6A,0x8198,0x8868,0x9CD6,0x618B,0x522B,0x762A,0x5F6C,
|
||||
0x658C,0x6FD2,0x6EE8,0x5BBE,0x6448,0x5175,0x51B0,0x67C4,
|
||||
0x4E19,0x79C9,0x997C,0x70B3,0x75C5,0x5E76,0x73BB,0x83E0,
|
||||
0x64AD,0x62E8,0x94B5,0x6CE2,0x535A,0x52C3,0x640F,0x94C2,
|
||||
0x7B94,0x4F2F,0x5E1B,0x8236,0x8116,0x818A,0x6E24,0x6CCA,
|
||||
0x9A73,0x6355,0x535C,0x54FA,0x8865,0x57E0,0x4E0D,0x5E03,
|
||||
0x6B65,0x7C3F,0x90E8,0x6016,0x64E6,0x731C,0x88C1,0x6750,
|
||||
0x624D,0x8D22,0x776C,0x8E29,0x91C7,0x5F69,0x83DC,0x8521,
|
||||
0x9910,0x53C2,0x8695,0x6B8B,0x60ED,0x60E8,0x707F,0x82CD,
|
||||
0x8231,0x4ED3,0x6CA7,0x85CF,0x64CD,0x7CD9,0x69FD,0x66F9,
|
||||
0x8349,0x5395,0x7B56,0x4FA7,0x518C,0x6D4B,0x5C42,0x8E6D,
|
||||
0x63D2,0x53C9,0x832C,0x8336,0x67E5,0x78B4,0x643D,0x5BDF,
|
||||
0x5C94,0x5DEE,0x8BE7,0x62C6,0x67F4,0x8C7A,0x6400,0x63BA,
|
||||
0x8749,0x998B,0x8C17,0x7F20,0x94F2,0x4EA7,0x9610,0x98A4,
|
||||
0x660C,0x7316,0x573A,0x5C1D,0x5E38,0x957F,0x507F,0x80A0,
|
||||
0x5382,0x655E,0x7545,0x5531,0x5021,0x8D85,0x6284,0x949E,
|
||||
0x671D,0x5632,0x6F6E,0x5DE2,0x5435,0x7092,0x8F66,0x626F,
|
||||
0x64A4,0x63A3,0x5F7B,0x6F88,0x90F4,0x81E3,0x8FB0,0x5C18,
|
||||
0x6668,0x5FF1,0x6C89,0x9648,0x8D81,0x886C,0x6491,0x79F0,
|
||||
0x57CE,0x6A59,0x6210,0x5448,0x4E58,0x7A0B,0x60E9,0x6F84,
|
||||
0x8BDA,0x627F,0x901E,0x9A8B,0x79E4,0x5403,0x75F4,0x6301,
|
||||
0x5319,0x6C60,0x8FDF,0x5F1B,0x9A70,0x803B,0x9F7F,0x4F88,
|
||||
0x5C3A,0x8D64,0x7FC5,0x65A5,0x70BD,0x5145,0x51B2,0x866B,
|
||||
0x5D07,0x5BA0,0x62BD,0x916C,0x7574,0x8E0C,0x7A20,0x6101,
|
||||
0x7B79,0x4EC7,0x7EF8,0x7785,0x4E11,0x81ED,0x521D,0x51FA,
|
||||
0x6A71,0x53A8,0x8E87,0x9504,0x96CF,0x6EC1,0x9664,0x695A,
|
||||
0x7840,0x50A8,0x77D7,0x6410,0x89E6,0x5904,0x63E3,0x5DDD,
|
||||
0x7A7F,0x693D,0x4F20,0x8239,0x5598,0x4E32,0x75AE,0x7A97,
|
||||
0x5E62,0x5E8A,0x95EF,0x521B,0x5439,0x708A,0x6376,0x9524,
|
||||
0x5782,0x6625,0x693F,0x9187,0x5507,0x6DF3,0x7EAF,0x8822,
|
||||
0x6233,0x7EF0,0x75B5,0x8328,0x78C1,0x96CC,0x8F9E,0x6148,
|
||||
0x74F7,0x8BCD,0x6B64,0x523A,0x8D50,0x6B21,0x806A,0x8471,
|
||||
0x56F1,0x5306,0x4ECE,0x4E1B,0x51D1,0x7C97,0x918B,0x7C07,
|
||||
0x4FC3,0x8E7F,0x7BE1,0x7A9C,0x6467,0x5D14,0x50AC,0x8106,
|
||||
0x7601,0x7CB9,0x6DEC,0x7FE0,0x6751,0x5B58,0x5BF8,0x78CB,
|
||||
0x64AE,0x6413,0x63AA,0x632B,0x9519,0x642D,0x8FBE,0x7B54,
|
||||
0x7629,0x6253,0x5927,0x5446,0x6B79,0x50A3,0x6234,0x5E26,
|
||||
0x6B86,0x4EE3,0x8D37,0x888B,0x5F85,0x902E,0x6020,0x803D,
|
||||
0x62C5,0x4E39,0x5355,0x90F8,0x63B8,0x80C6,0x65E6,0x6C2E,
|
||||
0x4F46,0x60EE,0x6DE1,0x8BDE,0x5F39,0x86CB,0x5F53,0x6321,
|
||||
0x515A,0x8361,0x6863,0x5200,0x6363,0x8E48,0x5012,0x5C9B,
|
||||
0x7977,0x5BFC,0x5230,0x7A3B,0x60BC,0x9053,0x76D7,0x5FB7,
|
||||
0x5F97,0x7684,0x8E6C,0x706F,0x767B,0x7B49,0x77AA,0x51F3,
|
||||
0x9093,0x5824,0x4F4E,0x6EF4,0x8FEA,0x654C,0x7B1B,0x72C4,
|
||||
0x6DA4,0x7FDF,0x5AE1,0x62B5,0x5E95,0x5730,0x8482,0x7B2C,
|
||||
0x5E1D,0x5F1F,0x9012,0x7F14,0x98A0,0x6382,0x6EC7,0x7898,
|
||||
0x70B9,0x5178,0x975B,0x57AB,0x7535,0x4F43,0x7538,0x5E97,
|
||||
0x60E6,0x5960,0x6DC0,0x6BBF,0x7889,0x53FC,0x96D5,0x51CB,
|
||||
0x5201,0x6389,0x540A,0x9493,0x8C03,0x8DCC,0x7239,0x789F,
|
||||
0x8776,0x8FED,0x8C0D,0x53E0,0x4E01,0x76EF,0x53EE,0x9489,
|
||||
0x9876,0x9F0E,0x952D,0x5B9A,0x8BA2,0x4E22,0x4E1C,0x51AC,
|
||||
0x8463,0x61C2,0x52A8,0x680B,0x4F97,0x606B,0x51BB,0x6D1E,
|
||||
0x515C,0x6296,0x6597,0x9661,0x8C46,0x9017,0x75D8,0x90FD,
|
||||
0x7763,0x6BD2,0x728A,0x72EC,0x8BFB,0x5835,0x7779,0x8D4C,
|
||||
0x675C,0x9540,0x809A,0x5EA6,0x6E21,0x5992,0x7AEF,0x77ED,
|
||||
0x953B,0x6BB5,0x65AD,0x7F0E,0x5806,0x5151,0x961F,0x5BF9,
|
||||
0x58A9,0x5428,0x8E72,0x6566,0x987F,0x56E4,0x949D,0x76FE,
|
||||
0x9041,0x6387,0x54C6,0x591A,0x593A,0x579B,0x8EB2,0x6735,
|
||||
0x8DFA,0x8235,0x5241,0x60F0,0x5815,0x86FE,0x5CE8,0x9E45,
|
||||
0x4FC4,0x989D,0x8BB9,0x5A25,0x6076,0x5384,0x627C,0x904F,
|
||||
0x9102,0x997F,0x6069,0x800C,0x513F,0x8033,0x5C14,0x9975,
|
||||
0x6D31,0x4E8C,0x8D30,0x53D1,0x7F5A,0x7B4F,0x4F10,0x4E4F,
|
||||
0x9600,0x6CD5,0x73D0,0x85E9,0x5E06,0x756A,0x7FFB,0x6A0A,
|
||||
0x77FE,0x9492,0x7E41,0x51E1,0x70E6,0x53CD,0x8FD4,0x8303,
|
||||
0x8D29,0x72AF,0x996D,0x6CDB,0x574A,0x82B3,0x65B9,0x80AA,
|
||||
0x623F,0x9632,0x59A8,0x4EFF,0x8BBF,0x7EBA,0x653E,0x83F2,
|
||||
0x975E,0x5561,0x98DE,0x80A5,0x532A,0x8BFD,0x5420,0x80BA,
|
||||
0x5E9F,0x6CB8,0x8D39,0x82AC,0x915A,0x5429,0x6C1B,0x5206,
|
||||
0x7EB7,0x575F,0x711A,0x6C7E,0x7C89,0x594B,0x4EFD,0x5FFF,
|
||||
0x6124,0x7CAA,0x4E30,0x5C01,0x67AB,0x8702,0x5CF0,0x950B,
|
||||
0x98CE,0x75AF,0x70FD,0x9022,0x51AF,0x7F1D,0x8BBD,0x5949,
|
||||
0x51E4,0x4F5B,0x5426,0x592B,0x6577,0x80A4,0x5B75,0x6276,
|
||||
0x62C2,0x8F90,0x5E45,0x6C1F,0x7B26,0x4F0F,0x4FD8,0x670D,
|
||||
0x6D6E,0x6DAA,0x798F,0x88B1,0x5F17,0x752B,0x629A,0x8F85,
|
||||
0x4FEF,0x91DC,0x65A7,0x812F,0x8151,0x5E9C,0x8150,0x8D74,
|
||||
0x526F,0x8986,0x8D4B,0x590D,0x5085,0x4ED8,0x961C,0x7236,
|
||||
0x8179,0x8D1F,0x5BCC,0x8BA3,0x9644,0x5987,0x7F1A,0x5490,
|
||||
0x5676,0x560E,0x8BE5,0x6539,0x6982,0x9499,0x76D6,0x6E89,
|
||||
0x5E72,0x7518,0x6746,0x67D1,0x7AFF,0x809D,0x8D76,0x611F,
|
||||
0x79C6,0x6562,0x8D63,0x5188,0x521A,0x94A2,0x7F38,0x809B,
|
||||
0x7EB2,0x5C97,0x6E2F,0x6760,0x7BD9,0x768B,0x9AD8,0x818F,
|
||||
0x7F94,0x7CD5,0x641E,0x9550,0x7A3F,0x544A,0x54E5,0x6B4C,
|
||||
0x6401,0x6208,0x9E3D,0x80F3,0x7599,0x5272,0x9769,0x845B,
|
||||
0x683C,0x86E4,0x9601,0x9694,0x94EC,0x4E2A,0x5404,0x7ED9,
|
||||
0x6839,0x8DDF,0x8015,0x66F4,0x5E9A,0x7FB9,0x57C2,0x803F,
|
||||
0x6897,0x5DE5,0x653B,0x529F,0x606D,0x9F9A,0x4F9B,0x8EAC,
|
||||
0x516C,0x5BAB,0x5F13,0x5DE9,0x6C5E,0x62F1,0x8D21,0x5171,
|
||||
0x94A9,0x52FE,0x6C9F,0x82DF,0x72D7,0x57A2,0x6784,0x8D2D,
|
||||
0x591F,0x8F9C,0x83C7,0x5495,0x7B8D,0x4F30,0x6CBD,0x5B64,
|
||||
0x59D1,0x9F13,0x53E4,0x86CA,0x9AA8,0x8C37,0x80A1,0x6545,
|
||||
0x987E,0x56FA,0x96C7,0x522E,0x74DC,0x5250,0x5BE1,0x6302,
|
||||
0x8902,0x4E56,0x62D0,0x602A,0x68FA,0x5173,0x5B98,0x51A0,
|
||||
0x89C2,0x7BA1,0x9986,0x7F50,0x60EF,0x704C,0x8D2F,0x5149,
|
||||
0x5E7F,0x901B,0x7470,0x89C4,0x572D,0x7845,0x5F52,0x9F9F,
|
||||
0x95FA,0x8F68,0x9B3C,0x8BE1,0x7678,0x6842,0x67DC,0x8DEA,
|
||||
0x8D35,0x523D,0x8F8A,0x6EDA,0x68CD,0x9505,0x90ED,0x56FD,
|
||||
0x679C,0x88F9,0x8FC7,0x54C8,0x9AB8,0x5B69,0x6D77,0x6C26,
|
||||
0x4EA5,0x5BB3,0x9A87,0x9163,0x61A8,0x90AF,0x97E9,0x542B,
|
||||
0x6DB5,0x5BD2,0x51FD,0x558A,0x7F55,0x7FF0,0x64BC,0x634D,
|
||||
0x65F1,0x61BE,0x608D,0x710A,0x6C57,0x6C49,0x592F,0x676D,
|
||||
0x822A,0x58D5,0x568E,0x8C6A,0x6BEB,0x90DD,0x597D,0x8017,
|
||||
0x53F7,0x6D69,0x5475,0x559D,0x8377,0x83CF,0x6838,0x79BE,
|
||||
0x548C,0x4F55,0x5408,0x76D2,0x8C89,0x9602,0x6CB3,0x6DB8,
|
||||
0x8D6B,0x8910,0x9E64,0x8D3A,0x563F,0x9ED1,0x75D5,0x5F88,
|
||||
0x72E0,0x6068,0x54FC,0x4EA8,0x6A2A,0x8861,0x6052,0x8F70,
|
||||
0x54C4,0x70D8,0x8679,0x9E3F,0x6D2A,0x5B8F,0x5F18,0x7EA2,
|
||||
0x5589,0x4FAF,0x7334,0x543C,0x539A,0x5019,0x540E,0x547C,
|
||||
0x4E4E,0x5FFD,0x745A,0x58F6,0x846B,0x80E1,0x8774,0x72D0,
|
||||
0x7CCA,0x6E56,0x5F27,0x864E,0x552C,0x62A4,0x4E92,0x6CAA,
|
||||
0x6237,0x82B1,0x54D7,0x534E,0x733E,0x6ED1,0x753B,0x5212,
|
||||
0x5316,0x8BDD,0x69D0,0x5F8A,0x6000,0x6DEE,0x574F,0x6B22,
|
||||
0x73AF,0x6853,0x8FD8,0x7F13,0x6362,0x60A3,0x5524,0x75EA,
|
||||
0x8C62,0x7115,0x6DA3,0x5BA6,0x5E7B,0x8352,0x614C,0x9EC4,
|
||||
0x78FA,0x8757,0x7C27,0x7687,0x51F0,0x60F6,0x714C,0x6643,
|
||||
0x5E4C,0x604D,0x8C0E,0x7070,0x6325,0x8F89,0x5FBD,0x6062,
|
||||
0x86D4,0x56DE,0x6BC1,0x6094,0x6167,0x5349,0x60E0,0x6666,
|
||||
0x8D3F,0x79FD,0x4F1A,0x70E9,0x6C47,0x8BB3,0x8BF2,0x7ED8,
|
||||
0x8364,0x660F,0x5A5A,0x9B42,0x6D51,0x6DF7,0x8C41,0x6D3B,
|
||||
0x4F19,0x706B,0x83B7,0x6216,0x60D1,0x970D,0x8D27,0x7978,
|
||||
0x51FB,0x573E,0x57FA,0x673A,0x7578,0x7A3D,0x79EF,0x7B95,
|
||||
0x808C,0x9965,0x8FF9,0x6FC0,0x8BA5,0x9E21,0x59EC,0x7EE9,
|
||||
0x7F09,0x5409,0x6781,0x68D8,0x8F91,0x7C4D,0x96C6,0x53CA,
|
||||
0x6025,0x75BE,0x6C72,0x5373,0x5AC9,0x7EA7,0x6324,0x51E0,
|
||||
0x810A,0x5DF1,0x84DF,0x6280,0x5180,0x5B63,0x4F0E,0x796D,
|
||||
0x5242,0x60B8,0x6D4E,0x5BC4,0x5BC2,0x8BA1,0x8BB0,0x65E2,
|
||||
0x5FCC,0x9645,0x5993,0x7EE7,0x7EAA,0x5609,0x67B7,0x5939,
|
||||
0x4F73,0x5BB6,0x52A0,0x835A,0x988A,0x8D3E,0x7532,0x94BE,
|
||||
0x5047,0x7A3C,0x4EF7,0x67B6,0x9A7E,0x5AC1,0x6B7C,0x76D1,
|
||||
0x575A,0x5C16,0x7B3A,0x95F4,0x714E,0x517C,0x80A9,0x8270,
|
||||
0x5978,0x7F04,0x8327,0x68C0,0x67EC,0x78B1,0x7877,0x62E3,
|
||||
0x6361,0x7B80,0x4FED,0x526A,0x51CF,0x8350,0x69DB,0x9274,
|
||||
0x8DF5,0x8D31,0x89C1,0x952E,0x7BAD,0x4EF6,0x5065,0x8230,
|
||||
0x5251,0x996F,0x6E10,0x6E85,0x6DA7,0x5EFA,0x50F5,0x59DC,
|
||||
0x5C06,0x6D46,0x6C5F,0x7586,0x848B,0x6868,0x5956,0x8BB2,
|
||||
0x5320,0x9171,0x964D,0x8549,0x6912,0x7901,0x7126,0x80F6,
|
||||
0x4EA4,0x90CA,0x6D47,0x9A84,0x5A07,0x56BC,0x6405,0x94F0,
|
||||
0x77EB,0x4FA5,0x811A,0x72E1,0x89D2,0x997A,0x7F34,0x7EDE,
|
||||
0x527F,0x6559,0x9175,0x8F7F,0x8F83,0x53EB,0x7A96,0x63ED,
|
||||
0x63A5,0x7686,0x79F8,0x8857,0x9636,0x622A,0x52AB,0x8282,
|
||||
0x6854,0x6770,0x6377,0x776B,0x7AED,0x6D01,0x7ED3,0x89E3,
|
||||
0x59D0,0x6212,0x85C9,0x82A5,0x754C,0x501F,0x4ECB,0x75A5,
|
||||
0x8BEB,0x5C4A,0x5DFE,0x7B4B,0x65A4,0x91D1,0x4ECA,0x6D25,
|
||||
0x895F,0x7D27,0x9526,0x4EC5,0x8C28,0x8FDB,0x9773,0x664B,
|
||||
0x7981,0x8FD1,0x70EC,0x6D78,0x5C3D,0x52B2,0x8346,0x5162,
|
||||
0x830E,0x775B,0x6676,0x9CB8,0x4EAC,0x60CA,0x7CBE,0x7CB3,
|
||||
0x7ECF,0x4E95,0x8B66,0x666F,0x9888,0x9759,0x5883,0x656C,
|
||||
0x955C,0x5F84,0x75C9,0x9756,0x7ADF,0x7ADE,0x51C0,0x70AF,
|
||||
0x7A98,0x63EA,0x7A76,0x7EA0,0x7396,0x97ED,0x4E45,0x7078,
|
||||
0x4E5D,0x9152,0x53A9,0x6551,0x65E7,0x81FC,0x8205,0x548E,
|
||||
0x5C31,0x759A,0x97A0,0x62D8,0x72D9,0x75BD,0x5C45,0x9A79,
|
||||
0x83CA,0x5C40,0x5480,0x77E9,0x4E3E,0x6CAE,0x805A,0x62D2,
|
||||
0x636E,0x5DE8,0x5177,0x8DDD,0x8E1E,0x952F,0x4FF1,0x53E5,
|
||||
0x60E7,0x70AC,0x5267,0x6350,0x9E43,0x5A1F,0x5026,0x7737,
|
||||
0x5377,0x7EE2,0x6485,0x652B,0x6289,0x6398,0x5014,0x7235,
|
||||
0x89C9,0x51B3,0x8BC0,0x7EDD,0x5747,0x83CC,0x94A7,0x519B,
|
||||
0x541B,0x5CFB,0x4FCA,0x7AE3,0x6D5A,0x90E1,0x9A8F,0x5580,
|
||||
0x5496,0x5361,0x54AF,0x5F00,0x63E9,0x6977,0x51EF,0x6168,
|
||||
0x520A,0x582A,0x52D8,0x574E,0x780D,0x770B,0x5EB7,0x6177,
|
||||
0x7CE0,0x625B,0x6297,0x4EA2,0x7095,0x8003,0x62F7,0x70E4,
|
||||
0x9760,0x5777,0x82DB,0x67EF,0x68F5,0x78D5,0x9897,0x79D1,
|
||||
0x58F3,0x54B3,0x53EF,0x6E34,0x514B,0x523B,0x5BA2,0x8BFE,
|
||||
0x80AF,0x5543,0x57A6,0x6073,0x5751,0x542D,0x7A7A,0x6050,
|
||||
0x5B54,0x63A7,0x62A0,0x53E3,0x6263,0x5BC7,0x67AF,0x54ED,
|
||||
0x7A9F,0x82E6,0x9177,0x5E93,0x88E4,0x5938,0x57AE,0x630E,
|
||||
0x8DE8,0x80EF,0x5757,0x7B77,0x4FA9,0x5FEB,0x5BBD,0x6B3E,
|
||||
0x5321,0x7B50,0x72C2,0x6846,0x77FF,0x7736,0x65F7,0x51B5,
|
||||
0x4E8F,0x76D4,0x5CBF,0x7AA5,0x8475,0x594E,0x9B41,0x5080,
|
||||
0x9988,0x6127,0x6E83,0x5764,0x6606,0x6346,0x56F0,0x62EC,
|
||||
0x6269,0x5ED3,0x9614,0x5783,0x62C9,0x5587,0x8721,0x814A,
|
||||
0x8FA3,0x5566,0x83B1,0x6765,0x8D56,0x84DD,0x5A6A,0x680F,
|
||||
0x62E6,0x7BEE,0x9611,0x5170,0x6F9C,0x8C30,0x63FD,0x89C8,
|
||||
0x61D2,0x7F06,0x70C2,0x6EE5,0x7405,0x6994,0x72FC,0x5ECA,
|
||||
0x90CE,0x6717,0x6D6A,0x635E,0x52B3,0x7262,0x8001,0x4F6C,
|
||||
0x59E5,0x916A,0x70D9,0x6D9D,0x52D2,0x4E50,0x96F7,0x956D,
|
||||
0x857E,0x78CA,0x7D2F,0x5121,0x5792,0x64C2,0x808B,0x7C7B,
|
||||
0x6CEA,0x68F1,0x695E,0x51B7,0x5398,0x68A8,0x7281,0x9ECE,
|
||||
0x7BF1,0x72F8,0x79BB,0x6F13,0x7406,0x674E,0x91CC,0x9CA4,
|
||||
0x793C,0x8389,0x8354,0x540F,0x6817,0x4E3D,0x5389,0x52B1,
|
||||
0x783E,0x5386,0x5229,0x5088,0x4F8B,0x4FD0,0x75E2,0x7ACB,
|
||||
0x7C92,0x6CA5,0x96B6,0x529B,0x7483,0x54E9,0x4FE9,0x8054,
|
||||
0x83B2,0x8FDE,0x9570,0x5EC9,0x601C,0x6D9F,0x5E18,0x655B,
|
||||
0x8138,0x94FE,0x604B,0x70BC,0x7EC3,0x7CAE,0x51C9,0x6881,
|
||||
0x7CB1,0x826F,0x4E24,0x8F86,0x91CF,0x667E,0x4EAE,0x8C05,
|
||||
0x64A9,0x804A,0x50DA,0x7597,0x71CE,0x5BE5,0x8FBD,0x6F66,
|
||||
0x4E86,0x6482,0x9563,0x5ED6,0x6599,0x5217,0x88C2,0x70C8,
|
||||
0x52A3,0x730E,0x7433,0x6797,0x78F7,0x9716,0x4E34,0x90BB,
|
||||
0x9CDE,0x6DCB,0x51DB,0x8D41,0x541D,0x62CE,0x73B2,0x83F1,
|
||||
0x96F6,0x9F84,0x94C3,0x4F36,0x7F9A,0x51CC,0x7075,0x9675,
|
||||
0x5CAD,0x9886,0x53E6,0x4EE4,0x6E9C,0x7409,0x69B4,0x786B,
|
||||
0x998F,0x7559,0x5218,0x7624,0x6D41,0x67F3,0x516D,0x9F99,
|
||||
0x804B,0x5499,0x7B3C,0x7ABF,0x9686,0x5784,0x62E2,0x9647,
|
||||
0x697C,0x5A04,0x6402,0x7BD3,0x6F0F,0x964B,0x82A6,0x5362,
|
||||
0x9885,0x5E90,0x7089,0x63B3,0x5364,0x864F,0x9C81,0x9E93,
|
||||
0x788C,0x9732,0x8DEF,0x8D42,0x9E7F,0x6F5E,0x7984,0x5F55,
|
||||
0x9646,0x622E,0x9A74,0x5415,0x94DD,0x4FA3,0x65C5,0x5C65,
|
||||
0x5C61,0x7F15,0x8651,0x6C2F,0x5F8B,0x7387,0x6EE4,0x7EFF,
|
||||
0x5CE6,0x631B,0x5B6A,0x6EE6,0x5375,0x4E71,0x63A0,0x7565,
|
||||
0x62A1,0x8F6E,0x4F26,0x4ED1,0x6CA6,0x7EB6,0x8BBA,0x841D,
|
||||
0x87BA,0x7F57,0x903B,0x9523,0x7BA9,0x9AA1,0x88F8,0x843D,
|
||||
0x6D1B,0x9A86,0x7EDC,0x5988,0x9EBB,0x739B,0x7801,0x8682,
|
||||
0x9A6C,0x9A82,0x561B,0x5417,0x57CB,0x4E70,0x9EA6,0x5356,
|
||||
0x8FC8,0x8109,0x7792,0x9992,0x86EE,0x6EE1,0x8513,0x66FC,
|
||||
0x6162,0x6F2B,0x8C29,0x8292,0x832B,0x76F2,0x6C13,0x5FD9,
|
||||
0x83BD,0x732B,0x8305,0x951A,0x6BDB,0x77DB,0x94C6,0x536F,
|
||||
0x8302,0x5192,0x5E3D,0x8C8C,0x8D38,0x4E48,0x73AB,0x679A,
|
||||
0x6885,0x9176,0x9709,0x7164,0x6CA1,0x7709,0x5A92,0x9541,
|
||||
0x6BCF,0x7F8E,0x6627,0x5BD0,0x59B9,0x5A9A,0x95E8,0x95F7,
|
||||
0x4EEC,0x840C,0x8499,0x6AAC,0x76DF,0x9530,0x731B,0x68A6,
|
||||
0x5B5F,0x772F,0x919A,0x9761,0x7CDC,0x8FF7,0x8C1C,0x5F25,
|
||||
0x7C73,0x79D8,0x89C5,0x6CCC,0x871C,0x5BC6,0x5E42,0x68C9,
|
||||
0x7720,0x7EF5,0x5195,0x514D,0x52C9,0x5A29,0x7F05,0x9762,
|
||||
0x82D7,0x63CF,0x7784,0x85D0,0x79D2,0x6E3A,0x5E99,0x5999,
|
||||
0x8511,0x706D,0x6C11,0x62BF,0x76BF,0x654F,0x60AF,0x95FD,
|
||||
0x660E,0x879F,0x9E23,0x94ED,0x540D,0x547D,0x8C2C,0x6478,
|
||||
0x6479,0x8611,0x6A21,0x819C,0x78E8,0x6469,0x9B54,0x62B9,
|
||||
0x672B,0x83AB,0x58A8,0x9ED8,0x6CAB,0x6F20,0x5BDE,0x964C,
|
||||
0x8C0B,0x725F,0x67D0,0x62C7,0x7261,0x4EA9,0x59C6,0x6BCD,
|
||||
0x5893,0x66AE,0x5E55,0x52DF,0x6155,0x6728,0x76EE,0x7766,
|
||||
0x7267,0x7A46,0x62FF,0x54EA,0x5450,0x94A0,0x90A3,0x5A1C,
|
||||
0x7EB3,0x6C16,0x4E43,0x5976,0x8010,0x5948,0x5357,0x7537,
|
||||
0x96BE,0x56CA,0x6320,0x8111,0x607C,0x95F9,0x6DD6,0x5462,
|
||||
0x9981,0x5185,0x5AE9,0x80FD,0x59AE,0x9713,0x502A,0x6CE5,
|
||||
0x5C3C,0x62DF,0x4F60,0x533F,0x817B,0x9006,0x6EBA,0x852B,
|
||||
0x62C8,0x5E74,0x78BE,0x64B5,0x637B,0x5FF5,0x5A18,0x917F,
|
||||
0x9E1F,0x5C3F,0x634F,0x8042,0x5B7D,0x556E,0x954A,0x954D,
|
||||
0x6D85,0x60A8,0x67E0,0x72DE,0x51DD,0x5B81,0x62E7,0x6CDE,
|
||||
0x725B,0x626D,0x94AE,0x7EBD,0x8113,0x6D53,0x519C,0x5F04,
|
||||
0x5974,0x52AA,0x6012,0x5973,0x6696,0x8650,0x759F,0x632A,
|
||||
0x61E6,0x7CEF,0x8BFA,0x54E6,0x6B27,0x9E25,0x6BB4,0x85D5,
|
||||
0x5455,0x5076,0x6CA4,0x556A,0x8DB4,0x722C,0x5E15,0x6015,
|
||||
0x7436,0x62CD,0x6392,0x724C,0x5F98,0x6E43,0x6D3E,0x6500,
|
||||
0x6F58,0x76D8,0x78D0,0x76FC,0x7554,0x5224,0x53DB,0x4E53,
|
||||
0x5E9E,0x65C1,0x802A,0x80D6,0x629B,0x5486,0x5228,0x70AE,
|
||||
0x888D,0x8DD1,0x6CE1,0x5478,0x80DA,0x57F9,0x88F4,0x8D54,
|
||||
0x966A,0x914D,0x4F69,0x6C9B,0x55B7,0x76C6,0x7830,0x62A8,
|
||||
0x70F9,0x6F8E,0x5F6D,0x84EC,0x68DA,0x787C,0x7BF7,0x81A8,
|
||||
0x670B,0x9E4F,0x6367,0x78B0,0x576F,0x7812,0x9739,0x6279,
|
||||
0x62AB,0x5288,0x7435,0x6BD7,0x5564,0x813E,0x75B2,0x76AE,
|
||||
0x5339,0x75DE,0x50FB,0x5C41,0x8B6C,0x7BC7,0x504F,0x7247,
|
||||
0x9A97,0x98D8,0x6F02,0x74E2,0x7968,0x6487,0x77A5,0x62FC,
|
||||
0x9891,0x8D2B,0x54C1,0x8058,0x4E52,0x576A,0x82F9,0x840D,
|
||||
0x5E73,0x51ED,0x74F6,0x8BC4,0x5C4F,0x5761,0x6CFC,0x9887,
|
||||
0x5A46,0x7834,0x9B44,0x8FEB,0x7C95,0x5256,0x6251,0x94FA,
|
||||
0x4EC6,0x8386,0x8461,0x83E9,0x84B2,0x57D4,0x6734,0x5703,
|
||||
0x666E,0x6D66,0x8C31,0x66DD,0x7011,0x671F,0x6B3A,0x6816,
|
||||
0x621A,0x59BB,0x4E03,0x51C4,0x6F06,0x67D2,0x6C8F,0x5176,
|
||||
0x68CB,0x5947,0x6B67,0x7566,0x5D0E,0x8110,0x9F50,0x65D7,
|
||||
0x7948,0x7941,0x9A91,0x8D77,0x5C82,0x4E5E,0x4F01,0x542F,
|
||||
0x5951,0x780C,0x5668,0x6C14,0x8FC4,0x5F03,0x6C7D,0x6CE3,
|
||||
0x8BAB,0x6390,0x6070,0x6D3D,0x7275,0x6266,0x948E,0x94C5,
|
||||
0x5343,0x8FC1,0x7B7E,0x4EDF,0x8C26,0x4E7E,0x9ED4,0x94B1,
|
||||
0x94B3,0x524D,0x6F5C,0x9063,0x6D45,0x8C34,0x5811,0x5D4C,
|
||||
0x6B20,0x6B49,0x67AA,0x545B,0x8154,0x7F8C,0x5899,0x8537,
|
||||
0x5F3A,0x62A2,0x6A47,0x9539,0x6572,0x6084,0x6865,0x77A7,
|
||||
0x4E54,0x4FA8,0x5DE7,0x9798,0x64AC,0x7FD8,0x5CED,0x4FCF,
|
||||
0x7A8D,0x5207,0x8304,0x4E14,0x602F,0x7A83,0x94A6,0x4FB5,
|
||||
0x4EB2,0x79E6,0x7434,0x52E4,0x82B9,0x64D2,0x79BD,0x5BDD,
|
||||
0x6C81,0x9752,0x8F7B,0x6C22,0x503E,0x537F,0x6E05,0x64CE,
|
||||
0x6674,0x6C30,0x60C5,0x9877,0x8BF7,0x5E86,0x743C,0x7A77,
|
||||
0x79CB,0x4E18,0x90B1,0x7403,0x6C42,0x56DA,0x914B,0x6CC5,
|
||||
0x8D8B,0x533A,0x86C6,0x66F2,0x8EAF,0x5C48,0x9A71,0x6E20,
|
||||
0x53D6,0x5A36,0x9F8B,0x8DA3,0x53BB,0x5708,0x98A7,0x6743,
|
||||
0x919B,0x6CC9,0x5168,0x75CA,0x62F3,0x72AC,0x5238,0x529D,
|
||||
0x7F3A,0x7094,0x7638,0x5374,0x9E4A,0x69B7,0x786E,0x96C0,
|
||||
0x88D9,0x7FA4,0x7136,0x71C3,0x5189,0x67D3,0x74E4,0x58E4,
|
||||
0x6518,0x56B7,0x8BA9,0x9976,0x6270,0x7ED5,0x60F9,0x70ED,
|
||||
0x58EC,0x4EC1,0x4EBA,0x5FCD,0x97E7,0x4EFB,0x8BA4,0x5203,
|
||||
0x598A,0x7EAB,0x6254,0x4ECD,0x65E5,0x620E,0x8338,0x84C9,
|
||||
0x8363,0x878D,0x7194,0x6EB6,0x5BB9,0x7ED2,0x5197,0x63C9,
|
||||
0x67D4,0x8089,0x8339,0x8815,0x5112,0x5B7A,0x5982,0x8FB1,
|
||||
0x4E73,0x6C5D,0x5165,0x8925,0x8F6F,0x962E,0x854A,0x745E,
|
||||
0x9510,0x95F0,0x6DA6,0x82E5,0x5F31,0x6492,0x6D12,0x8428,
|
||||
0x816E,0x9CC3,0x585E,0x8D5B,0x4E09,0x53C1,0x4F1E,0x6563,
|
||||
0x6851,0x55D3,0x4E27,0x6414,0x9A9A,0x626B,0x5AC2,0x745F,
|
||||
0x8272,0x6DA9,0x68EE,0x50E7,0x838E,0x7802,0x6740,0x5239,
|
||||
0x6C99,0x7EB1,0x50BB,0x5565,0x715E,0x7B5B,0x6652,0x73CA,
|
||||
0x82EB,0x6749,0x5C71,0x5220,0x717D,0x886B,0x95EA,0x9655,
|
||||
0x64C5,0x8D61,0x81B3,0x5584,0x6C55,0x6247,0x7F2E,0x5892,
|
||||
0x4F24,0x5546,0x8D4F,0x664C,0x4E0A,0x5C1A,0x88F3,0x68A2,
|
||||
0x634E,0x7A0D,0x70E7,0x828D,0x52FA,0x97F6,0x5C11,0x54E8,
|
||||
0x90B5,0x7ECD,0x5962,0x8D4A,0x86C7,0x820C,0x820D,0x8D66,
|
||||
0x6444,0x5C04,0x6151,0x6D89,0x793E,0x8BBE,0x7837,0x7533,
|
||||
0x547B,0x4F38,0x8EAB,0x6DF1,0x5A20,0x7EC5,0x795E,0x6C88,
|
||||
0x5BA1,0x5A76,0x751A,0x80BE,0x614E,0x6E17,0x58F0,0x751F,
|
||||
0x7525,0x7272,0x5347,0x7EF3,0x7701,0x76DB,0x5269,0x80DC,
|
||||
0x5723,0x5E08,0x5931,0x72EE,0x65BD,0x6E7F,0x8BD7,0x5C38,
|
||||
0x8671,0x5341,0x77F3,0x62FE,0x65F6,0x4EC0,0x98DF,0x8680,
|
||||
0x5B9E,0x8BC6,0x53F2,0x77E2,0x4F7F,0x5C4E,0x9A76,0x59CB,
|
||||
0x5F0F,0x793A,0x58EB,0x4E16,0x67FF,0x4E8B,0x62ED,0x8A93,
|
||||
0x901D,0x52BF,0x662F,0x55DC,0x566C,0x9002,0x4ED5,0x4F8D,
|
||||
0x91CA,0x9970,0x6C0F,0x5E02,0x6043,0x5BA4,0x89C6,0x8BD5,
|
||||
0x6536,0x624B,0x9996,0x5B88,0x5BFF,0x6388,0x552E,0x53D7,
|
||||
0x7626,0x517D,0x852C,0x67A2,0x68B3,0x6B8A,0x6292,0x8F93,
|
||||
0x53D4,0x8212,0x6DD1,0x758F,0x4E66,0x8D4E,0x5B70,0x719F,
|
||||
0x85AF,0x6691,0x66D9,0x7F72,0x8700,0x9ECD,0x9F20,0x5C5E,
|
||||
0x672F,0x8FF0,0x6811,0x675F,0x620D,0x7AD6,0x5885,0x5EB6,
|
||||
0x6570,0x6F31,0x6055,0x5237,0x800D,0x6454,0x8870,0x7529,
|
||||
0x5E05,0x6813,0x62F4,0x971C,0x53CC,0x723D,0x8C01,0x6C34,
|
||||
0x7761,0x7A0E,0x542E,0x77AC,0x987A,0x821C,0x8BF4,0x7855,
|
||||
0x6714,0x70C1,0x65AF,0x6495,0x5636,0x601D,0x79C1,0x53F8,
|
||||
0x4E1D,0x6B7B,0x8086,0x5BFA,0x55E3,0x56DB,0x4F3A,0x4F3C,
|
||||
0x9972,0x5DF3,0x677E,0x8038,0x6002,0x9882,0x9001,0x5B8B,
|
||||
0x8BBC,0x8BF5,0x641C,0x8258,0x64DE,0x55FD,0x82CF,0x9165,
|
||||
0x4FD7,0x7D20,0x901F,0x7C9F,0x50F3,0x5851,0x6EAF,0x5BBF,
|
||||
0x8BC9,0x8083,0x9178,0x849C,0x7B97,0x867D,0x968B,0x968F,
|
||||
0x7EE5,0x9AD3,0x788E,0x5C81,0x7A57,0x9042,0x96A7,0x795F,
|
||||
0x5B59,0x635F,0x7B0B,0x84D1,0x68AD,0x5506,0x7F29,0x7410,
|
||||
0x7D22,0x9501,0x6240,0x584C,0x4ED6,0x5B83,0x5979,0x5854,
|
||||
0x736D,0x631E,0x8E4B,0x8E0F,0x80CE,0x82D4,0x62AC,0x53F0,
|
||||
0x6CF0,0x915E,0x592A,0x6001,0x6C70,0x574D,0x644A,0x8D2A,
|
||||
0x762B,0x6EE9,0x575B,0x6A80,0x75F0,0x6F6D,0x8C2D,0x8C08,
|
||||
0x5766,0x6BEF,0x8892,0x78B3,0x63A2,0x53F9,0x70AD,0x6C64,
|
||||
0x5858,0x642A,0x5802,0x68E0,0x819B,0x5510,0x7CD6,0x5018,
|
||||
0x8EBA,0x6DCC,0x8D9F,0x70EB,0x638F,0x6D9B,0x6ED4,0x7EE6,
|
||||
0x8404,0x6843,0x9003,0x6DD8,0x9676,0x8BA8,0x5957,0x7279,
|
||||
0x85E4,0x817E,0x75BC,0x8A8A,0x68AF,0x5254,0x8E22,0x9511,
|
||||
0x63D0,0x9898,0x8E44,0x557C,0x4F53,0x66FF,0x568F,0x60D5,
|
||||
0x6D95,0x5243,0x5C49,0x5929,0x6DFB,0x586B,0x7530,0x751C,
|
||||
0x606C,0x8214,0x8146,0x6311,0x6761,0x8FE2,0x773A,0x8DF3,
|
||||
0x8D34,0x94C1,0x5E16,0x5385,0x542C,0x70C3,0x6C40,0x5EF7,
|
||||
0x505C,0x4EAD,0x5EAD,0x633A,0x8247,0x901A,0x6850,0x916E,
|
||||
0x77B3,0x540C,0x94DC,0x5F64,0x7AE5,0x6876,0x6345,0x7B52,
|
||||
0x7EDF,0x75DB,0x5077,0x6295,0x5934,0x900F,0x51F8,0x79C3,
|
||||
0x7A81,0x56FE,0x5F92,0x9014,0x6D82,0x5C60,0x571F,0x5410,
|
||||
0x5154,0x6E4D,0x56E2,0x63A8,0x9893,0x817F,0x8715,0x892A,
|
||||
0x9000,0x541E,0x5C6F,0x81C0,0x62D6,0x6258,0x8131,0x9E35,
|
||||
0x9640,0x9A6E,0x9A7C,0x692D,0x59A5,0x62D3,0x553E,0x6316,
|
||||
0x54C7,0x86D9,0x6D3C,0x5A03,0x74E6,0x889C,0x6B6A,0x5916,
|
||||
0x8C4C,0x5F2F,0x6E7E,0x73A9,0x987D,0x4E38,0x70F7,0x5B8C,
|
||||
0x7897,0x633D,0x665A,0x7696,0x60CB,0x5B9B,0x5A49,0x4E07,
|
||||
0x8155,0x6C6A,0x738B,0x4EA1,0x6789,0x7F51,0x5F80,0x65FA,
|
||||
0x671B,0x5FD8,0x5984,0x5A01,0x5DCD,0x5FAE,0x5371,0x97E6,
|
||||
0x8FDD,0x6845,0x56F4,0x552F,0x60DF,0x4E3A,0x6F4D,0x7EF4,
|
||||
0x82C7,0x840E,0x59D4,0x4F1F,0x4F2A,0x5C3E,0x7EAC,0x672A,
|
||||
0x851A,0x5473,0x754F,0x80C3,0x5582,0x9B4F,0x4F4D,0x6E2D,
|
||||
0x8C13,0x5C09,0x6170,0x536B,0x761F,0x6E29,0x868A,0x6587,
|
||||
0x95FB,0x7EB9,0x543B,0x7A33,0x7D0A,0x95EE,0x55E1,0x7FC1,
|
||||
0x74EE,0x631D,0x8717,0x6DA1,0x7A9D,0x6211,0x65A1,0x5367,
|
||||
0x63E1,0x6C83,0x5DEB,0x545C,0x94A8,0x4E4C,0x6C61,0x8BEC,
|
||||
0x5C4B,0x65E0,0x829C,0x68A7,0x543E,0x5434,0x6BCB,0x6B66,
|
||||
0x4E94,0x6342,0x5348,0x821E,0x4F0D,0x4FAE,0x575E,0x620A,
|
||||
0x96FE,0x6664,0x7269,0x52FF,0x52A1,0x609F,0x8BEF,0x6614,
|
||||
0x7199,0x6790,0x897F,0x7852,0x77FD,0x6670,0x563B,0x5438,
|
||||
0x9521,0x727A,0x7A00,0x606F,0x5E0C,0x6089,0x819D,0x5915,
|
||||
0x60DC,0x7184,0x70EF,0x6EAA,0x6C50,0x7280,0x6A84,0x88AD,
|
||||
0x5E2D,0x4E60,0x5AB3,0x559C,0x94E3,0x6D17,0x7CFB,0x9699,
|
||||
0x620F,0x7EC6,0x778E,0x867E,0x5323,0x971E,0x8F96,0x6687,
|
||||
0x5CE1,0x4FA0,0x72ED,0x4E0B,0x53A6,0x590F,0x5413,0x6380,
|
||||
0x9528,0x5148,0x4ED9,0x9C9C,0x7EA4,0x54B8,0x8D24,0x8854,
|
||||
0x8237,0x95F2,0x6D8E,0x5F26,0x5ACC,0x663E,0x9669,0x73B0,
|
||||
0x732E,0x53BF,0x817A,0x9985,0x7FA1,0x5BAA,0x9677,0x9650,
|
||||
0x7EBF,0x76F8,0x53A2,0x9576,0x9999,0x7BB1,0x8944,0x6E58,
|
||||
0x4E61,0x7FD4,0x7965,0x8BE6,0x60F3,0x54CD,0x4EAB,0x9879,
|
||||
0x5DF7,0x6A61,0x50CF,0x5411,0x8C61,0x8427,0x785D,0x9704,
|
||||
0x524A,0x54EE,0x56A3,0x9500,0x6D88,0x5BB5,0x6DC6,0x6653,
|
||||
0x5C0F,0x5B5D,0x6821,0x8096,0x5578,0x7B11,0x6548,0x6954,
|
||||
0x4E9B,0x6B47,0x874E,0x978B,0x534F,0x631F,0x643A,0x90AA,
|
||||
0x659C,0x80C1,0x8C10,0x5199,0x68B0,0x5378,0x87F9,0x61C8,
|
||||
0x6CC4,0x6CFB,0x8C22,0x5C51,0x85AA,0x82AF,0x950C,0x6B23,
|
||||
0x8F9B,0x65B0,0x5FFB,0x5FC3,0x4FE1,0x8845,0x661F,0x8165,
|
||||
0x7329,0x60FA,0x5174,0x5211,0x578B,0x5F62,0x90A2,0x884C,
|
||||
0x9192,0x5E78,0x674F,0x6027,0x59D3,0x5144,0x51F6,0x80F8,
|
||||
0x5308,0x6C79,0x96C4,0x718A,0x4F11,0x4FEE,0x7F9E,0x673D,
|
||||
0x55C5,0x9508,0x79C0,0x8896,0x7EE3,0x589F,0x620C,0x9700,
|
||||
0x865A,0x5618,0x987B,0x5F90,0x8BB8,0x84C4,0x9157,0x53D9,
|
||||
0x65ED,0x5E8F,0x755C,0x6064,0x7D6E,0x5A7F,0x7EEA,0x7EED,
|
||||
0x8F69,0x55A7,0x5BA3,0x60AC,0x65CB,0x7384,0x9009,0x7663,
|
||||
0x7729,0x7EDA,0x9774,0x859B,0x5B66,0x7A74,0x96EA,0x8840,
|
||||
0x52CB,0x718F,0x5FAA,0x65EC,0x8BE2,0x5BFB,0x9A6F,0x5DE1,
|
||||
0x6B89,0x6C5B,0x8BAD,0x8BAF,0x900A,0x8FC5,0x538B,0x62BC,
|
||||
0x9E26,0x9E2D,0x5440,0x4E2B,0x82BD,0x7259,0x869C,0x5D16,
|
||||
0x8859,0x6DAF,0x96C5,0x54D1,0x4E9A,0x8BB6,0x7109,0x54BD,
|
||||
0x9609,0x70DF,0x6DF9,0x76D0,0x4E25,0x7814,0x8712,0x5CA9,
|
||||
0x5EF6,0x8A00,0x989C,0x960E,0x708E,0x6CBF,0x5944,0x63A9,
|
||||
0x773C,0x884D,0x6F14,0x8273,0x5830,0x71D5,0x538C,0x781A,
|
||||
0x96C1,0x5501,0x5F66,0x7130,0x5BB4,0x8C1A,0x9A8C,0x6B83,
|
||||
0x592E,0x9E2F,0x79E7,0x6768,0x626C,0x4F6F,0x75A1,0x7F8A,
|
||||
0x6D0B,0x9633,0x6C27,0x4EF0,0x75D2,0x517B,0x6837,0x6F3E,
|
||||
0x9080,0x8170,0x5996,0x7476,0x6447,0x5C27,0x9065,0x7A91,
|
||||
0x8C23,0x59DA,0x54AC,0x8200,0x836F,0x8981,0x8000,0x6930,
|
||||
0x564E,0x8036,0x7237,0x91CE,0x51B6,0x4E5F,0x9875,0x6396,
|
||||
0x4E1A,0x53F6,0x66F3,0x814B,0x591C,0x6DB2,0x4E00,0x58F9,
|
||||
0x533B,0x63D6,0x94F1,0x4F9D,0x4F0A,0x8863,0x9890,0x5937,
|
||||
0x9057,0x79FB,0x4EEA,0x80F0,0x7591,0x6C82,0x5B9C,0x59E8,
|
||||
0x5F5D,0x6905,0x8681,0x501A,0x5DF2,0x4E59,0x77E3,0x4EE5,
|
||||
0x827A,0x6291,0x6613,0x9091,0x5C79,0x4EBF,0x5F79,0x81C6,
|
||||
0x9038,0x8084,0x75AB,0x4EA6,0x88D4,0x610F,0x6BC5,0x5FC6,
|
||||
0x4E49,0x76CA,0x6EA2,0x8BE3,0x8BAE,0x8C0A,0x8BD1,0x5F02,
|
||||
0x7FFC,0x7FCC,0x7ECE,0x8335,0x836B,0x56E0,0x6BB7,0x97F3,
|
||||
0x9634,0x59FB,0x541F,0x94F6,0x6DEB,0x5BC5,0x996E,0x5C39,
|
||||
0x5F15,0x9690,0x5370,0x82F1,0x6A31,0x5A74,0x9E70,0x5E94,
|
||||
0x7F28,0x83B9,0x8424,0x8425,0x8367,0x8747,0x8FCE,0x8D62,
|
||||
0x76C8,0x5F71,0x9896,0x786C,0x6620,0x54DF,0x62E5,0x4F63,
|
||||
0x81C3,0x75C8,0x5EB8,0x96CD,0x8E0A,0x86F9,0x548F,0x6CF3,
|
||||
0x6D8C,0x6C38,0x607F,0x52C7,0x7528,0x5E7D,0x4F18,0x60A0,
|
||||
0x5FE7,0x5C24,0x7531,0x90AE,0x94C0,0x72B9,0x6CB9,0x6E38,
|
||||
0x9149,0x6709,0x53CB,0x53F3,0x4F51,0x91C9,0x8BF1,0x53C8,
|
||||
0x5E7C,0x8FC2,0x6DE4,0x4E8E,0x76C2,0x6986,0x865E,0x611A,
|
||||
0x8206,0x4F59,0x4FDE,0x903E,0x9C7C,0x6109,0x6E1D,0x6E14,
|
||||
0x9685,0x4E88,0x5A31,0x96E8,0x4E0E,0x5C7F,0x79B9,0x5B87,
|
||||
0x8BED,0x7FBD,0x7389,0x57DF,0x828B,0x90C1,0x5401,0x9047,
|
||||
0x55BB,0x5CEA,0x5FA1,0x6108,0x6B32,0x72F1,0x80B2,0x8A89,
|
||||
0x6D74,0x5BD3,0x88D5,0x9884,0x8C6B,0x9A6D,0x9E33,0x6E0A,
|
||||
0x51A4,0x5143,0x57A3,0x8881,0x539F,0x63F4,0x8F95,0x56ED,
|
||||
0x5458,0x5706,0x733F,0x6E90,0x7F18,0x8FDC,0x82D1,0x613F,
|
||||
0x6028,0x9662,0x66F0,0x7EA6,0x8D8A,0x8DC3,0x94A5,0x5CB3,
|
||||
0x7CA4,0x6708,0x60A6,0x9605,0x8018,0x4E91,0x90E7,0x5300,
|
||||
0x9668,0x5141,0x8FD0,0x8574,0x915D,0x6655,0x97F5,0x5B55,
|
||||
0x531D,0x7838,0x6742,0x683D,0x54C9,0x707E,0x5BB0,0x8F7D,
|
||||
0x518D,0x5728,0x54B1,0x6512,0x6682,0x8D5E,0x8D43,0x810F,
|
||||
0x846C,0x906D,0x7CDF,0x51FF,0x85FB,0x67A3,0x65E9,0x6FA1,
|
||||
0x86A4,0x8E81,0x566A,0x9020,0x7682,0x7076,0x71E5,0x8D23,
|
||||
0x62E9,0x5219,0x6CFD,0x8D3C,0x600E,0x589E,0x618E,0x66FE,
|
||||
0x8D60,0x624E,0x55B3,0x6E23,0x672D,0x8F67,0x94E1,0x95F8,
|
||||
0x7728,0x6805,0x69A8,0x548B,0x4E4D,0x70B8,0x8BC8,0x6458,
|
||||
0x658B,0x5B85,0x7A84,0x503A,0x5BE8,0x77BB,0x6BE1,0x8A79,
|
||||
0x7C98,0x6CBE,0x76CF,0x65A9,0x8F97,0x5D2D,0x5C55,0x8638,
|
||||
0x6808,0x5360,0x6218,0x7AD9,0x6E5B,0x7EFD,0x6A1F,0x7AE0,
|
||||
0x5F70,0x6F33,0x5F20,0x638C,0x6DA8,0x6756,0x4E08,0x5E10,
|
||||
0x8D26,0x4ED7,0x80C0,0x7634,0x969C,0x62DB,0x662D,0x627E,
|
||||
0x6CBC,0x8D75,0x7167,0x7F69,0x5146,0x8087,0x53EC,0x906E,
|
||||
0x6298,0x54F2,0x86F0,0x8F99,0x8005,0x9517,0x8517,0x8FD9,
|
||||
0x6D59,0x73CD,0x659F,0x771F,0x7504,0x7827,0x81FB,0x8D1E,
|
||||
0x9488,0x4FA6,0x6795,0x75B9,0x8BCA,0x9707,0x632F,0x9547,
|
||||
0x9635,0x84B8,0x6323,0x7741,0x5F81,0x72F0,0x4E89,0x6014,
|
||||
0x6574,0x62EF,0x6B63,0x653F,0x5E27,0x75C7,0x90D1,0x8BC1,
|
||||
0x829D,0x679D,0x652F,0x5431,0x8718,0x77E5,0x80A2,0x8102,
|
||||
0x6C41,0x4E4B,0x7EC7,0x804C,0x76F4,0x690D,0x6B96,0x6267,
|
||||
0x503C,0x4F84,0x5740,0x6307,0x6B62,0x8DBE,0x53EA,0x65E8,
|
||||
0x7EB8,0x5FD7,0x631A,0x63B7,0x81F3,0x81F4,0x7F6E,0x5E1C,
|
||||
0x5CD9,0x5236,0x667A,0x79E9,0x7A1A,0x8D28,0x7099,0x75D4,
|
||||
0x6EDE,0x6CBB,0x7A92,0x4E2D,0x76C5,0x5FE0,0x949F,0x8877,
|
||||
0x7EC8,0x79CD,0x80BF,0x91CD,0x4EF2,0x4F17,0x821F,0x5468,
|
||||
0x5DDE,0x6D32,0x8BCC,0x7CA5,0x8F74,0x8098,0x5E1A,0x5492,
|
||||
0x76B1,0x5B99,0x663C,0x9AA4,0x73E0,0x682A,0x86DB,0x6731,
|
||||
0x732A,0x8BF8,0x8BDB,0x9010,0x7AF9,0x70DB,0x716E,0x62C4,
|
||||
0x77A9,0x5631,0x4E3B,0x8457,0x67F1,0x52A9,0x86C0,0x8D2E,
|
||||
0x94F8,0x7B51,0x4F4F,0x6CE8,0x795D,0x9A7B,0x6293,0x722A,
|
||||
0x62FD,0x4E13,0x7816,0x8F6C,0x64B0,0x8D5A,0x7BC6,0x6869,
|
||||
0x5E84,0x88C5,0x5986,0x649E,0x58EE,0x72B6,0x690E,0x9525,
|
||||
0x8FFD,0x8D58,0x5760,0x7F00,0x8C06,0x51C6,0x6349,0x62D9,
|
||||
0x5353,0x684C,0x7422,0x8301,0x914C,0x5544,0x7740,0x707C,
|
||||
0x6D4A,0x5179,0x54A8,0x8D44,0x59FF,0x6ECB,0x6DC4,0x5B5C,
|
||||
0x7D2B,0x4ED4,0x7C7D,0x6ED3,0x5B50,0x81EA,0x6E0D,0x5B57,
|
||||
0x9B03,0x68D5,0x8E2A,0x5B97,0x7EFC,0x603B,0x7EB5,0x90B9,
|
||||
0x8D70,0x594F,0x63CD,0x79DF,0x8DB3,0x5352,0x65CF,0x7956,
|
||||
0x8BC5,0x963B,0x7EC4,0x94BB,0x7E82,0x5634,0x9189,0x6700,
|
||||
0x7F6A,0x5C0A,0x9075,0x6628,0x5DE6,0x4F50,0x67DE,0x505A,
|
||||
0x4F5C,0x5750,0x5EA7,0x2000,0x2000,0x2000,0x2000,0x2000,
|
||||
0x4E8D,0x4E0C,0x5140,0x4E10,0x5EFF,0x5345,0x4E15,0x4E98,
|
||||
0x4E1E,0x9B32,0x5B6C,0x5669,0x4E28,0x79BA,0x4E3F,0x5315,
|
||||
0x4E47,0x592D,0x723B,0x536E,0x6C10,0x56DF,0x80E4,0x9997,
|
||||
0x6BD3,0x777E,0x9F17,0x4E36,0x4E9F,0x9F10,0x4E5C,0x4E69,
|
||||
0x4E93,0x8288,0x5B5B,0x556C,0x560F,0x4EC4,0x538D,0x539D,
|
||||
0x53A3,0x53A5,0x53AE,0x9765,0x8D5D,0x531A,0x53F5,0x5326,
|
||||
0x532E,0x533E,0x8D5C,0x5366,0x5363,0x5202,0x5208,0x520E,
|
||||
0x522D,0x5233,0x523F,0x5240,0x524C,0x525E,0x5261,0x525C,
|
||||
0x84AF,0x527D,0x5282,0x5281,0x5290,0x5293,0x5182,0x7F54,
|
||||
0x4EBB,0x4EC3,0x4EC9,0x4EC2,0x4EE8,0x4EE1,0x4EEB,0x4EDE,
|
||||
0x4F1B,0x4EF3,0x4F22,0x4F64,0x4EF5,0x4F25,0x4F27,0x4F09,
|
||||
0x4F2B,0x4F5E,0x4F67,0x6538,0x4F5A,0x4F5D,0x4F5F,0x4F57,
|
||||
0x4F32,0x4F3D,0x4F76,0x4F74,0x4F91,0x4F89,0x4F83,0x4F8F,
|
||||
0x4F7E,0x4F7B,0x4FAA,0x4F7C,0x4FAC,0x4F94,0x4FE6,0x4FE8,
|
||||
0x4FEA,0x4FC5,0x4FDA,0x4FE3,0x4FDC,0x4FD1,0x4FDF,0x4FF8,
|
||||
0x5029,0x504C,0x4FF3,0x502C,0x500F,0x502E,0x502D,0x4FFE,
|
||||
0x501C,0x500C,0x5025,0x5028,0x507E,0x5043,0x5055,0x5048,
|
||||
0x504E,0x506C,0x507B,0x50A5,0x50A7,0x50A9,0x50BA,0x50D6,
|
||||
0x5106,0x50ED,0x50EC,0x50E6,0x50EE,0x5107,0x510B,0x4EDD,
|
||||
0x6C3D,0x4F58,0x4F65,0x4FCE,0x9FA0,0x6C46,0x7C74,0x516E,
|
||||
0x5DFD,0x9EC9,0x9998,0x5181,0x5914,0x52F9,0x530D,0x8A07,
|
||||
0x5310,0x51EB,0x5919,0x5155,0x4EA0,0x5156,0x4EB3,0x886E,
|
||||
0x88A4,0x4EB5,0x8114,0x88D2,0x7980,0x5B34,0x8803,0x7FB8,
|
||||
0x51AB,0x51B1,0x51BD,0x51BC,0x51C7,0x5196,0x51A2,0x51A5,
|
||||
0x8BA0,0x8BA6,0x8BA7,0x8BAA,0x8BB4,0x8BB5,0x8BB7,0x8BC2,
|
||||
0x8BC3,0x8BCB,0x8BCF,0x8BCE,0x8BD2,0x8BD3,0x8BD4,0x8BD6,
|
||||
0x8BD8,0x8BD9,0x8BDC,0x8BDF,0x8BE0,0x8BE4,0x8BE8,0x8BE9,
|
||||
0x8BEE,0x8BF0,0x8BF3,0x8BF6,0x8BF9,0x8BFC,0x8BFF,0x8C00,
|
||||
0x8C02,0x8C04,0x8C07,0x8C0C,0x8C0F,0x8C11,0x8C12,0x8C14,
|
||||
0x8C15,0x8C16,0x8C19,0x8C1B,0x8C18,0x8C1D,0x8C1F,0x8C20,
|
||||
0x8C21,0x8C25,0x8C27,0x8C2A,0x8C2B,0x8C2E,0x8C2F,0x8C32,
|
||||
0x8C33,0x8C35,0x8C36,0x5369,0x537A,0x961D,0x9622,0x9621,
|
||||
0x9631,0x962A,0x963D,0x963C,0x9642,0x9649,0x9654,0x965F,
|
||||
0x9667,0x966C,0x9672,0x9674,0x9688,0x968D,0x9697,0x96B0,
|
||||
0x9097,0x909B,0x909D,0x9099,0x90AC,0x90A1,0x90B4,0x90B3,
|
||||
0x90B6,0x90BA,0x90B8,0x90B0,0x90CF,0x90C5,0x90BE,0x90D0,
|
||||
0x90C4,0x90C7,0x90D3,0x90E6,0x90E2,0x90DC,0x90D7,0x90DB,
|
||||
0x90EB,0x90EF,0x90FE,0x9104,0x9122,0x911E,0x9123,0x9131,
|
||||
0x912F,0x9139,0x9143,0x9146,0x520D,0x5942,0x52A2,0x52AC,
|
||||
0x52AD,0x52BE,0x54FF,0x52D0,0x52D6,0x52F0,0x53DF,0x71EE,
|
||||
0x77CD,0x5EF4,0x51F5,0x51FC,0x9B2F,0x53B6,0x5F01,0x755A,
|
||||
0x5DEF,0x574C,0x57A9,0x57A1,0x587E,0x58BC,0x58C5,0x58D1,
|
||||
0x5729,0x572C,0x572A,0x5733,0x5739,0x572E,0x572F,0x575C,
|
||||
0x573B,0x5742,0x5769,0x5785,0x576B,0x5786,0x577C,0x577B,
|
||||
0x5768,0x576D,0x5776,0x5773,0x57AD,0x57A4,0x578C,0x57B2,
|
||||
0x57CF,0x57A7,0x57B4,0x5793,0x57A0,0x57D5,0x57D8,0x57DA,
|
||||
0x57D9,0x57D2,0x57B8,0x57F4,0x57EF,0x57F8,0x57E4,0x57DD,
|
||||
0x580B,0x580D,0x57FD,0x57ED,0x5800,0x581E,0x5819,0x5844,
|
||||
0x5820,0x5865,0x586C,0x5881,0x5889,0x589A,0x5880,0x99A8,
|
||||
0x9F19,0x61FF,0x8279,0x827D,0x827F,0x828F,0x828A,0x82A8,
|
||||
0x8284,0x828E,0x8291,0x8297,0x8299,0x82AB,0x82B8,0x82BE,
|
||||
0x82B0,0x82C8,0x82CA,0x82E3,0x8298,0x82B7,0x82AE,0x82CB,
|
||||
0x82CC,0x82C1,0x82A9,0x82B4,0x82A1,0x82AA,0x829F,0x82C4,
|
||||
0x82CE,0x82A4,0x82E1,0x8309,0x82F7,0x82E4,0x830F,0x8307,
|
||||
0x82DC,0x82F4,0x82D2,0x82D8,0x830C,0x82FB,0x82D3,0x8311,
|
||||
0x831A,0x8306,0x8314,0x8315,0x82E0,0x82D5,0x831C,0x8351,
|
||||
0x835B,0x835C,0x8308,0x8392,0x833C,0x8334,0x8331,0x839B,
|
||||
0x835E,0x832F,0x834F,0x8347,0x8343,0x835F,0x8340,0x8317,
|
||||
0x8360,0x832D,0x833A,0x8333,0x8366,0x8365,0x8368,0x831B,
|
||||
0x8369,0x836C,0x836A,0x836D,0x836E,0x83B0,0x8378,0x83B3,
|
||||
0x83B4,0x83A0,0x83AA,0x8393,0x839C,0x8385,0x837C,0x83B6,
|
||||
0x83A9,0x837D,0x83B8,0x837B,0x8398,0x839E,0x83A8,0x83BA,
|
||||
0x83BC,0x83C1,0x8401,0x83E5,0x83D8,0x5807,0x8418,0x840B,
|
||||
0x83DD,0x83FD,0x83D6,0x841C,0x8438,0x8411,0x8406,0x83D4,
|
||||
0x83DF,0x840F,0x8403,0x83F8,0x83F9,0x83EA,0x83C5,0x83C0,
|
||||
0x8426,0x83F0,0x83E1,0x845C,0x8451,0x845A,0x8459,0x8473,
|
||||
0x8487,0x8488,0x847A,0x8489,0x8478,0x843C,0x8446,0x8469,
|
||||
0x8476,0x848C,0x848E,0x8431,0x846D,0x84C1,0x84CD,0x84D0,
|
||||
0x84E6,0x84BD,0x84D3,0x84CA,0x84BF,0x84BA,0x84E0,0x84A1,
|
||||
0x84B9,0x84B4,0x8497,0x84E5,0x84E3,0x850C,0x750D,0x8538,
|
||||
0x84F0,0x8539,0x851F,0x853A,0x8556,0x853B,0x84FF,0x84FC,
|
||||
0x8559,0x8548,0x8568,0x8564,0x855E,0x857A,0x77A2,0x8543,
|
||||
0x8572,0x857B,0x85A4,0x85A8,0x8587,0x858F,0x8579,0x85AE,
|
||||
0x859C,0x8585,0x85B9,0x85B7,0x85B0,0x85D3,0x85C1,0x85DC,
|
||||
0x85FF,0x8627,0x8605,0x8629,0x8616,0x863C,0x5EFE,0x5F08,
|
||||
0x593C,0x5941,0x8037,0x5955,0x595A,0x5958,0x530F,0x5C22,
|
||||
0x5C25,0x5C2C,0x5C34,0x624C,0x626A,0x629F,0x62BB,0x62CA,
|
||||
0x62DA,0x62D7,0x62EE,0x6322,0x62F6,0x6339,0x634B,0x6343,
|
||||
0x63AD,0x63F6,0x6371,0x637A,0x638E,0x63B4,0x636D,0x63AC,
|
||||
0x638A,0x6369,0x63AE,0x63BC,0x63F2,0x63F8,0x63E0,0x63FF,
|
||||
0x63C4,0x63DE,0x63CE,0x6452,0x63C6,0x63BE,0x6445,0x6441,
|
||||
0x640B,0x641B,0x6420,0x640C,0x6426,0x6421,0x645E,0x6484,
|
||||
0x646D,0x6496,0x647A,0x64B7,0x64B8,0x6499,0x64BA,0x64C0,
|
||||
0x64D0,0x64D7,0x64E4,0x64E2,0x6509,0x6525,0x652E,0x5F0B,
|
||||
0x5FD2,0x7519,0x5F11,0x535F,0x53F1,0x53FD,0x53E9,0x53E8,
|
||||
0x53FB,0x5412,0x5416,0x5406,0x544B,0x5452,0x5453,0x5454,
|
||||
0x5456,0x5443,0x5421,0x5457,0x5459,0x5423,0x5432,0x5482,
|
||||
0x5494,0x5477,0x5471,0x5464,0x549A,0x549B,0x5484,0x5476,
|
||||
0x5466,0x549D,0x54D0,0x54AD,0x54C2,0x54B4,0x54D2,0x54A7,
|
||||
0x54A6,0x54D3,0x54D4,0x5472,0x54A3,0x54D5,0x54BB,0x54BF,
|
||||
0x54CC,0x54D9,0x54DA,0x54DC,0x54A9,0x54AA,0x54A4,0x54DD,
|
||||
0x54CF,0x54DE,0x551B,0x54E7,0x5520,0x54FD,0x5514,0x54F3,
|
||||
0x5522,0x5523,0x550F,0x5511,0x5527,0x552A,0x5567,0x558F,
|
||||
0x55B5,0x5549,0x556D,0x5541,0x5555,0x553F,0x5550,0x553C,
|
||||
0x5537,0x5556,0x5575,0x5576,0x5577,0x5533,0x5530,0x555C,
|
||||
0x558B,0x55D2,0x5583,0x55B1,0x55B9,0x5588,0x5581,0x559F,
|
||||
0x557E,0x55D6,0x5591,0x557B,0x55DF,0x55BD,0x55BE,0x5594,
|
||||
0x5599,0x55EA,0x55F7,0x55C9,0x561F,0x55D1,0x55EB,0x55EC,
|
||||
0x55D4,0x55E6,0x55DD,0x55C4,0x55EF,0x55E5,0x55F2,0x55F3,
|
||||
0x55CC,0x55CD,0x55E8,0x55F5,0x55E4,0x8F94,0x561E,0x5608,
|
||||
0x560C,0x5601,0x5624,0x5623,0x55FE,0x5600,0x5627,0x562D,
|
||||
0x5658,0x5639,0x5657,0x562C,0x564D,0x5662,0x5659,0x565C,
|
||||
0x564C,0x5654,0x5686,0x5664,0x5671,0x566B,0x567B,0x567C,
|
||||
0x5685,0x5693,0x56AF,0x56D4,0x56D7,0x56DD,0x56E1,0x56F5,
|
||||
0x56EB,0x56F9,0x56FF,0x5704,0x570A,0x5709,0x571C,0x5E0F,
|
||||
0x5E19,0x5E14,0x5E11,0x5E31,0x5E3B,0x5E3C,0x5E37,0x5E44,
|
||||
0x5E54,0x5E5B,0x5E5E,0x5E61,0x5C8C,0x5C7A,0x5C8D,0x5C90,
|
||||
0x5C96,0x5C88,0x5C98,0x5C99,0x5C91,0x5C9A,0x5C9C,0x5CB5,
|
||||
0x5CA2,0x5CBD,0x5CAC,0x5CAB,0x5CB1,0x5CA3,0x5CC1,0x5CB7,
|
||||
0x5CC4,0x5CD2,0x5CE4,0x5CCB,0x5CE5,0x5D02,0x5D03,0x5D27,
|
||||
0x5D26,0x5D2E,0x5D24,0x5D1E,0x5D06,0x5D1B,0x5D58,0x5D3E,
|
||||
0x5D34,0x5D3D,0x5D6C,0x5D5B,0x5D6F,0x5D5D,0x5D6B,0x5D4B,
|
||||
0x5D4A,0x5D69,0x5D74,0x5D82,0x5D99,0x5D9D,0x8C73,0x5DB7,
|
||||
0x5DC5,0x5F73,0x5F77,0x5F82,0x5F87,0x5F89,0x5F8C,0x5F95,
|
||||
0x5F99,0x5F9C,0x5FA8,0x5FAD,0x5FB5,0x5FBC,0x8862,0x5F61,
|
||||
0x72AD,0x72B0,0x72B4,0x72B7,0x72B8,0x72C3,0x72C1,0x72CE,
|
||||
0x72CD,0x72D2,0x72E8,0x72EF,0x72E9,0x72F2,0x72F4,0x72F7,
|
||||
0x7301,0x72F3,0x7303,0x72FA,0x72FB,0x7317,0x7313,0x7321,
|
||||
0x730A,0x731E,0x731D,0x7315,0x7322,0x7339,0x7325,0x732C,
|
||||
0x7338,0x7331,0x7350,0x734D,0x7357,0x7360,0x736C,0x736F,
|
||||
0x737E,0x821B,0x5925,0x98E7,0x5924,0x5902,0x9963,0x9967,
|
||||
0x9968,0x9969,0x996A,0x996B,0x996C,0x9974,0x9977,0x997D,
|
||||
0x9980,0x9984,0x9987,0x998A,0x998D,0x9990,0x9991,0x9993,
|
||||
0x9994,0x9995,0x5E80,0x5E91,0x5E8B,0x5E96,0x5EA5,0x5EA0,
|
||||
0x5EB9,0x5EB5,0x5EBE,0x5EB3,0x8D53,0x5ED2,0x5ED1,0x5EDB,
|
||||
0x5EE8,0x5EEA,0x81BA,0x5FC4,0x5FC9,0x5FD6,0x5FCF,0x6003,
|
||||
0x5FEE,0x6004,0x5FE1,0x5FE4,0x5FFE,0x6005,0x6006,0x5FEA,
|
||||
0x5FED,0x5FF8,0x6019,0x6035,0x6026,0x601B,0x600F,0x600D,
|
||||
0x6029,0x602B,0x600A,0x603F,0x6021,0x6078,0x6079,0x607B,
|
||||
0x607A,0x6042,0x606A,0x607D,0x6096,0x609A,0x60AD,0x609D,
|
||||
0x6083,0x6092,0x608C,0x609B,0x60EC,0x60BB,0x60B1,0x60DD,
|
||||
0x60D8,0x60C6,0x60DA,0x60B4,0x6120,0x6126,0x6115,0x6123,
|
||||
0x60F4,0x6100,0x610E,0x612B,0x614A,0x6175,0x61AC,0x6194,
|
||||
0x61A7,0x61B7,0x61D4,0x61F5,0x5FDD,0x96B3,0x95E9,0x95EB,
|
||||
0x95F1,0x95F3,0x95F5,0x95F6,0x95FC,0x95FE,0x9603,0x9604,
|
||||
0x9606,0x9608,0x960A,0x960B,0x960C,0x960D,0x960F,0x9612,
|
||||
0x9615,0x9616,0x9617,0x9619,0x961A,0x4E2C,0x723F,0x6215,
|
||||
0x6C35,0x6C54,0x6C5C,0x6C4A,0x6CA3,0x6C85,0x6C90,0x6C94,
|
||||
0x6C8C,0x6C68,0x6C69,0x6C74,0x6C76,0x6C86,0x6CA9,0x6CD0,
|
||||
0x6CD4,0x6CAD,0x6CF7,0x6CF8,0x6CF1,0x6CD7,0x6CB2,0x6CE0,
|
||||
0x6CD6,0x6CFA,0x6CEB,0x6CEE,0x6CB1,0x6CD3,0x6CEF,0x6CFE,
|
||||
0x6D39,0x6D27,0x6D0C,0x6D43,0x6D48,0x6D07,0x6D04,0x6D19,
|
||||
0x6D0E,0x6D2B,0x6D4D,0x6D2E,0x6D35,0x6D1A,0x6D4F,0x6D52,
|
||||
0x6D54,0x6D33,0x6D91,0x6D6F,0x6D9E,0x6DA0,0x6D5E,0x6D93,
|
||||
0x6D94,0x6D5C,0x6D60,0x6D7C,0x6D63,0x6E1A,0x6DC7,0x6DC5,
|
||||
0x6DDE,0x6E0E,0x6DBF,0x6DE0,0x6E11,0x6DE6,0x6DDD,0x6DD9,
|
||||
0x6E16,0x6DAB,0x6E0C,0x6DAE,0x6E2B,0x6E6E,0x6E4E,0x6E6B,
|
||||
0x6EB2,0x6E5F,0x6E86,0x6E53,0x6E54,0x6E32,0x6E25,0x6E44,
|
||||
0x6EDF,0x6EB1,0x6E98,0x6EE0,0x6F2D,0x6EE2,0x6EA5,0x6EA7,
|
||||
0x6EBD,0x6EBB,0x6EB7,0x6ED7,0x6EB4,0x6ECF,0x6E8F,0x6EC2,
|
||||
0x6E9F,0x6F62,0x6F46,0x6F47,0x6F24,0x6F15,0x6EF9,0x6F2F,
|
||||
0x6F36,0x6F4B,0x6F74,0x6F2A,0x6F09,0x6F29,0x6F89,0x6F8D,
|
||||
0x6F8C,0x6F78,0x6F72,0x6F7C,0x6F7A,0x6FD1,0x6FC9,0x6FA7,
|
||||
0x6FB9,0x6FB6,0x6FC2,0x6FE1,0x6FEE,0x6FDE,0x6FE0,0x6FEF,
|
||||
0x701A,0x7023,0x701B,0x7039,0x7035,0x704F,0x705E,0x5B80,
|
||||
0x5B84,0x5B95,0x5B93,0x5BA5,0x5BB8,0x752F,0x9A9E,0x6434,
|
||||
0x5BE4,0x5BEE,0x8930,0x5BF0,0x8E47,0x8B07,0x8FB6,0x8FD3,
|
||||
0x8FD5,0x8FE5,0x8FEE,0x8FE4,0x8FE9,0x8FE6,0x8FF3,0x8FE8,
|
||||
0x9005,0x9004,0x900B,0x9026,0x9011,0x900D,0x9016,0x9021,
|
||||
0x9035,0x9036,0x902D,0x902F,0x9044,0x9051,0x9052,0x9050,
|
||||
0x9068,0x9058,0x9062,0x905B,0x66B9,0x9074,0x907D,0x9082,
|
||||
0x9088,0x9083,0x908B,0x5F50,0x5F57,0x5F56,0x5F58,0x5C3B,
|
||||
0x54AB,0x5C50,0x5C59,0x5B71,0x5C63,0x5C66,0x7FBC,0x5F2A,
|
||||
0x5F29,0x5F2D,0x8274,0x5F3C,0x9B3B,0x5C6E,0x5981,0x5983,
|
||||
0x598D,0x59A9,0x59AA,0x59A3,0x5997,0x59CA,0x59AB,0x599E,
|
||||
0x59A4,0x59D2,0x59B2,0x59AF,0x59D7,0x59BE,0x5A05,0x5A06,
|
||||
0x59DD,0x5A08,0x59E3,0x59D8,0x59F9,0x5A0C,0x5A09,0x5A32,
|
||||
0x5A34,0x5A11,0x5A23,0x5A13,0x5A40,0x5A67,0x5A4A,0x5A55,
|
||||
0x5A3C,0x5A62,0x5A75,0x80EC,0x5AAA,0x5A9B,0x5A77,0x5A7A,
|
||||
0x5ABE,0x5AEB,0x5AB2,0x5AD2,0x5AD4,0x5AB8,0x5AE0,0x5AE3,
|
||||
0x5AF1,0x5AD6,0x5AE6,0x5AD8,0x5ADC,0x5B09,0x5B17,0x5B16,
|
||||
0x5B32,0x5B37,0x5B40,0x5C15,0x5C1C,0x5B5A,0x5B65,0x5B73,
|
||||
0x5B51,0x5B53,0x5B62,0x9A75,0x9A77,0x9A78,0x9A7A,0x9A7F,
|
||||
0x9A7D,0x9A80,0x9A81,0x9A85,0x9A88,0x9A8A,0x9A90,0x9A92,
|
||||
0x9A93,0x9A96,0x9A98,0x9A9B,0x9A9C,0x9A9D,0x9A9F,0x9AA0,
|
||||
0x9AA2,0x9AA3,0x9AA5,0x9AA7,0x7E9F,0x7EA1,0x7EA3,0x7EA5,
|
||||
0x7EA8,0x7EA9,0x7EAD,0x7EB0,0x7EBE,0x7EC0,0x7EC1,0x7EC2,
|
||||
0x7EC9,0x7ECB,0x7ECC,0x7ED0,0x7ED4,0x7ED7,0x7EDB,0x7EE0,
|
||||
0x7EE1,0x7EE8,0x7EEB,0x7EEE,0x7EEF,0x7EF1,0x7EF2,0x7F0D,
|
||||
0x7EF6,0x7EFA,0x7EFB,0x7EFE,0x7F01,0x7F02,0x7F03,0x7F07,
|
||||
0x7F08,0x7F0B,0x7F0C,0x7F0F,0x7F11,0x7F12,0x7F17,0x7F19,
|
||||
0x7F1C,0x7F1B,0x7F1F,0x7F21,0x7F22,0x7F23,0x7F24,0x7F25,
|
||||
0x7F26,0x7F27,0x7F2A,0x7F2B,0x7F2C,0x7F2D,0x7F2F,0x7F30,
|
||||
0x7F31,0x7F32,0x7F33,0x7F35,0x5E7A,0x757F,0x5DDB,0x753E,
|
||||
0x9095,0x738E,0x7391,0x73AE,0x73A2,0x739F,0x73CF,0x73C2,
|
||||
0x73D1,0x73B7,0x73B3,0x73C0,0x73C9,0x73C8,0x73E5,0x73D9,
|
||||
0x987C,0x740A,0x73E9,0x73E7,0x73DE,0x73BA,0x73F2,0x740F,
|
||||
0x742A,0x745B,0x7426,0x7425,0x7428,0x7430,0x742E,0x742C,
|
||||
0x741B,0x741A,0x7441,0x745C,0x7457,0x7455,0x7459,0x7477,
|
||||
0x746D,0x747E,0x749C,0x748E,0x7480,0x7481,0x7487,0x748B,
|
||||
0x749E,0x74A8,0x74A9,0x7490,0x74A7,0x74D2,0x74BA,0x97EA,
|
||||
0x97EB,0x97EC,0x674C,0x6753,0x675E,0x6748,0x6769,0x67A5,
|
||||
0x6787,0x676A,0x6773,0x6798,0x67A7,0x6775,0x67A8,0x679E,
|
||||
0x67AD,0x678B,0x6777,0x677C,0x67F0,0x6809,0x67D8,0x680A,
|
||||
0x67E9,0x67B0,0x680C,0x67D9,0x67B5,0x67DA,0x67B3,0x67DD,
|
||||
0x6800,0x67C3,0x67B8,0x67E2,0x680E,0x67C1,0x67FD,0x6832,
|
||||
0x6833,0x6860,0x6861,0x684E,0x6862,0x6844,0x6864,0x6883,
|
||||
0x681D,0x6855,0x6866,0x6841,0x6867,0x6840,0x683E,0x684A,
|
||||
0x6849,0x6829,0x68B5,0x688F,0x6874,0x6877,0x6893,0x686B,
|
||||
0x68C2,0x696E,0x68FC,0x691F,0x6920,0x68F9,0x6924,0x68F0,
|
||||
0x690B,0x6901,0x6957,0x68E3,0x6910,0x6971,0x6939,0x6960,
|
||||
0x6942,0x695D,0x6984,0x696B,0x6980,0x6998,0x6978,0x6934,
|
||||
0x69CC,0x6987,0x6988,0x69CE,0x6989,0x6966,0x6963,0x6979,
|
||||
0x699B,0x69A7,0x69BB,0x69AB,0x69AD,0x69D4,0x69B1,0x69C1,
|
||||
0x69CA,0x69DF,0x6995,0x69E0,0x698D,0x69FF,0x6A2F,0x69ED,
|
||||
0x6A17,0x6A18,0x6A65,0x69F2,0x6A44,0x6A3E,0x6AA0,0x6A50,
|
||||
0x6A5B,0x6A35,0x6A8E,0x6A79,0x6A3D,0x6A28,0x6A58,0x6A7C,
|
||||
0x6A91,0x6A90,0x6AA9,0x6A97,0x6AAB,0x7337,0x7352,0x6B81,
|
||||
0x6B82,0x6B87,0x6B84,0x6B92,0x6B93,0x6B8D,0x6B9A,0x6B9B,
|
||||
0x6BA1,0x6BAA,0x8F6B,0x8F6D,0x8F71,0x8F72,0x8F73,0x8F75,
|
||||
0x8F76,0x8F78,0x8F77,0x8F79,0x8F7A,0x8F7C,0x8F7E,0x8F81,
|
||||
0x8F82,0x8F84,0x8F87,0x8F8B,0x8F8D,0x8F8E,0x8F8F,0x8F98,
|
||||
0x8F9A,0x8ECE,0x620B,0x6217,0x621B,0x621F,0x6222,0x6221,
|
||||
0x6225,0x6224,0x622C,0x81E7,0x74EF,0x74F4,0x74FF,0x750F,
|
||||
0x7511,0x7513,0x6534,0x65EE,0x65EF,0x65F0,0x660A,0x6619,
|
||||
0x6772,0x6603,0x6615,0x6600,0x7085,0x66F7,0x661D,0x6634,
|
||||
0x6631,0x6636,0x6635,0x8006,0x665F,0x6654,0x6641,0x664F,
|
||||
0x6656,0x6661,0x6657,0x6677,0x6684,0x668C,0x66A7,0x669D,
|
||||
0x66BE,0x66DB,0x66DC,0x66E6,0x66E9,0x8D32,0x8D33,0x8D36,
|
||||
0x8D3B,0x8D3D,0x8D40,0x8D45,0x8D46,0x8D48,0x8D49,0x8D47,
|
||||
0x8D4D,0x8D55,0x8D59,0x89C7,0x89CA,0x89CB,0x89CC,0x89CE,
|
||||
0x89CF,0x89D0,0x89D1,0x726E,0x729F,0x725D,0x7266,0x726F,
|
||||
0x727E,0x727F,0x7284,0x728B,0x728D,0x728F,0x7292,0x6308,
|
||||
0x6332,0x63B0,0x643F,0x64D8,0x8004,0x6BEA,0x6BF3,0x6BFD,
|
||||
0x6BF5,0x6BF9,0x6C05,0x6C07,0x6C06,0x6C0D,0x6C15,0x6C18,
|
||||
0x6C19,0x6C1A,0x6C21,0x6C29,0x6C24,0x6C2A,0x6C32,0x6535,
|
||||
0x6555,0x656B,0x724D,0x7252,0x7256,0x7230,0x8662,0x5216,
|
||||
0x809F,0x809C,0x8093,0x80BC,0x670A,0x80BD,0x80B1,0x80AB,
|
||||
0x80AD,0x80B4,0x80B7,0x80E7,0x80E8,0x80E9,0x80EA,0x80DB,
|
||||
0x80C2,0x80C4,0x80D9,0x80CD,0x80D7,0x6710,0x80DD,0x80EB,
|
||||
0x80F1,0x80F4,0x80ED,0x810D,0x810E,0x80F2,0x80FC,0x6715,
|
||||
0x8112,0x8C5A,0x8136,0x811E,0x812C,0x8118,0x8132,0x8148,
|
||||
0x814C,0x8153,0x8174,0x8159,0x815A,0x8171,0x8160,0x8169,
|
||||
0x817C,0x817D,0x816D,0x8167,0x584D,0x5AB5,0x8188,0x8182,
|
||||
0x8191,0x6ED5,0x81A3,0x81AA,0x81CC,0x6726,0x81CA,0x81BB,
|
||||
0x81C1,0x81A6,0x6B24,0x6B37,0x6B39,0x6B43,0x6B46,0x6B59,
|
||||
0x98D1,0x98D2,0x98D3,0x98D5,0x98D9,0x98DA,0x6BB3,0x5F40,
|
||||
0x6BC2,0x89F3,0x6590,0x9F51,0x6593,0x65BC,0x65C6,0x65C4,
|
||||
0x65C3,0x65CC,0x65CE,0x65D2,0x65D6,0x7080,0x709C,0x7096,
|
||||
0x709D,0x70BB,0x70C0,0x70B7,0x70AB,0x70B1,0x70E8,0x70CA,
|
||||
0x7110,0x7113,0x7116,0x712F,0x7131,0x7173,0x715C,0x7168,
|
||||
0x7145,0x7172,0x714A,0x7178,0x717A,0x7198,0x71B3,0x71B5,
|
||||
0x71A8,0x71A0,0x71E0,0x71D4,0x71E7,0x71F9,0x721D,0x7228,
|
||||
0x706C,0x7118,0x7166,0x71B9,0x623E,0x623D,0x6243,0x6248,
|
||||
0x6249,0x793B,0x7940,0x7946,0x7949,0x795B,0x795C,0x7953,
|
||||
0x795A,0x7962,0x7957,0x7960,0x796F,0x7967,0x797A,0x7985,
|
||||
0x798A,0x799A,0x79A7,0x79B3,0x5FD1,0x5FD0,0x603C,0x605D,
|
||||
0x605A,0x6067,0x6041,0x6059,0x6063,0x60AB,0x6106,0x610D,
|
||||
0x615D,0x61A9,0x619D,0x61CB,0x61D1,0x6206,0x8080,0x807F,
|
||||
0x6C93,0x6CF6,0x6DFC,0x77F6,0x77F8,0x7800,0x7809,0x7817,
|
||||
0x7818,0x7811,0x65AB,0x782D,0x781C,0x781D,0x7839,0x783A,
|
||||
0x783B,0x781F,0x783C,0x7825,0x782C,0x7823,0x7829,0x784E,
|
||||
0x786D,0x7856,0x7857,0x7826,0x7850,0x7847,0x784C,0x786A,
|
||||
0x789B,0x7893,0x789A,0x7887,0x789C,0x78A1,0x78A3,0x78B2,
|
||||
0x78B9,0x78A5,0x78D4,0x78D9,0x78C9,0x78EC,0x78F2,0x7905,
|
||||
0x78F4,0x7913,0x7924,0x791E,0x7934,0x9F9B,0x9EF9,0x9EFB,
|
||||
0x9EFC,0x76F1,0x7704,0x770D,0x76F9,0x7707,0x7708,0x771A,
|
||||
0x7722,0x7719,0x772D,0x7726,0x7735,0x7738,0x7750,0x7751,
|
||||
0x7747,0x7743,0x775A,0x7768,0x7762,0x7765,0x777F,0x778D,
|
||||
0x777D,0x7780,0x778C,0x7791,0x779F,0x77A0,0x77B0,0x77B5,
|
||||
0x77BD,0x753A,0x7540,0x754E,0x754B,0x7548,0x755B,0x7572,
|
||||
0x7579,0x7583,0x7F58,0x7F61,0x7F5F,0x8A48,0x7F68,0x7F74,
|
||||
0x7F71,0x7F79,0x7F81,0x7F7E,0x76CD,0x76E5,0x8832,0x9485,
|
||||
0x9486,0x9487,0x948B,0x948A,0x948C,0x948D,0x948F,0x9490,
|
||||
0x9494,0x9497,0x9495,0x949A,0x949B,0x949C,0x94A3,0x94A4,
|
||||
0x94AB,0x94AA,0x94AD,0x94AC,0x94AF,0x94B0,0x94B2,0x94B4,
|
||||
0x94B6,0x94B7,0x94B8,0x94B9,0x94BA,0x94BC,0x94BD,0x94BF,
|
||||
0x94C4,0x94C8,0x94C9,0x94CA,0x94CB,0x94CC,0x94CD,0x94CE,
|
||||
0x94D0,0x94D1,0x94D2,0x94D5,0x94D6,0x94D7,0x94D9,0x94D8,
|
||||
0x94DB,0x94DE,0x94DF,0x94E0,0x94E2,0x94E4,0x94E5,0x94E7,
|
||||
0x94E8,0x94EA,0x94E9,0x94EB,0x94EE,0x94EF,0x94F3,0x94F4,
|
||||
0x94F5,0x94F7,0x94F9,0x94FC,0x94FD,0x94FF,0x9503,0x9502,
|
||||
0x9506,0x9507,0x9509,0x950A,0x950D,0x950E,0x950F,0x9512,
|
||||
0x9513,0x9514,0x9515,0x9516,0x9518,0x951B,0x951D,0x951E,
|
||||
0x951F,0x9522,0x952A,0x952B,0x9529,0x952C,0x9531,0x9532,
|
||||
0x9534,0x9536,0x9537,0x9538,0x953C,0x953E,0x953F,0x9542,
|
||||
0x9535,0x9544,0x9545,0x9546,0x9549,0x954C,0x954E,0x954F,
|
||||
0x9552,0x9553,0x9554,0x9556,0x9557,0x9558,0x9559,0x955B,
|
||||
0x955E,0x955F,0x955D,0x9561,0x9562,0x9564,0x9565,0x9566,
|
||||
0x9567,0x9568,0x9569,0x956A,0x956B,0x956C,0x956F,0x9571,
|
||||
0x9572,0x9573,0x953A,0x77E7,0x77EC,0x96C9,0x79D5,0x79ED,
|
||||
0x79E3,0x79EB,0x7A06,0x5D47,0x7A03,0x7A02,0x7A1E,0x7A14,
|
||||
0x7A39,0x7A37,0x7A51,0x9ECF,0x99A5,0x7A70,0x7688,0x768E,
|
||||
0x7693,0x7699,0x76A4,0x74DE,0x74E0,0x752C,0x9E20,0x9E22,
|
||||
0x9E28,0x9E29,0x9E2A,0x9E2B,0x9E2C,0x9E32,0x9E31,0x9E36,
|
||||
0x9E38,0x9E37,0x9E39,0x9E3A,0x9E3E,0x9E41,0x9E42,0x9E44,
|
||||
0x9E46,0x9E47,0x9E48,0x9E49,0x9E4B,0x9E4C,0x9E4E,0x9E51,
|
||||
0x9E55,0x9E57,0x9E5A,0x9E5B,0x9E5C,0x9E5E,0x9E63,0x9E66,
|
||||
0x9E67,0x9E68,0x9E69,0x9E6A,0x9E6B,0x9E6C,0x9E71,0x9E6D,
|
||||
0x9E73,0x7592,0x7594,0x7596,0x75A0,0x759D,0x75AC,0x75A3,
|
||||
0x75B3,0x75B4,0x75B8,0x75C4,0x75B1,0x75B0,0x75C3,0x75C2,
|
||||
0x75D6,0x75CD,0x75E3,0x75E8,0x75E6,0x75E4,0x75EB,0x75E7,
|
||||
0x7603,0x75F1,0x75FC,0x75FF,0x7610,0x7600,0x7605,0x760C,
|
||||
0x7617,0x760A,0x7625,0x7618,0x7615,0x7619,0x761B,0x763C,
|
||||
0x7622,0x7620,0x7640,0x762D,0x7630,0x763F,0x7635,0x7643,
|
||||
0x763E,0x7633,0x764D,0x765E,0x7654,0x765C,0x7656,0x766B,
|
||||
0x766F,0x7FCA,0x7AE6,0x7A78,0x7A79,0x7A80,0x7A86,0x7A88,
|
||||
0x7A95,0x7AA6,0x7AA0,0x7AAC,0x7AA8,0x7AAD,0x7AB3,0x8864,
|
||||
0x8869,0x8872,0x887D,0x887F,0x8882,0x88A2,0x88C6,0x88B7,
|
||||
0x88BC,0x88C9,0x88E2,0x88CE,0x88E3,0x88E5,0x88F1,0x891A,
|
||||
0x88FC,0x88E8,0x88FE,0x88F0,0x8921,0x8919,0x8913,0x891B,
|
||||
0x890A,0x8934,0x892B,0x8936,0x8941,0x8966,0x897B,0x758B,
|
||||
0x80E5,0x76B2,0x76B4,0x77DC,0x8012,0x8014,0x8016,0x801C,
|
||||
0x8020,0x8022,0x8025,0x8026,0x8027,0x8029,0x8028,0x8031,
|
||||
0x800B,0x8035,0x8043,0x8046,0x804D,0x8052,0x8069,0x8071,
|
||||
0x8983,0x9878,0x9880,0x9883,0x9889,0x988C,0x988D,0x988F,
|
||||
0x9894,0x989A,0x989B,0x989E,0x989F,0x98A1,0x98A2,0x98A5,
|
||||
0x98A6,0x864D,0x8654,0x866C,0x866E,0x867F,0x867A,0x867C,
|
||||
0x867B,0x86A8,0x868D,0x868B,0x86AC,0x869D,0x86A7,0x86A3,
|
||||
0x86AA,0x8693,0x86A9,0x86B6,0x86C4,0x86B5,0x86CE,0x86B0,
|
||||
0x86BA,0x86B1,0x86AF,0x86C9,0x86CF,0x86B4,0x86E9,0x86F1,
|
||||
0x86F2,0x86ED,0x86F3,0x86D0,0x8713,0x86DE,0x86F4,0x86DF,
|
||||
0x86D8,0x86D1,0x8703,0x8707,0x86F8,0x8708,0x870A,0x870D,
|
||||
0x8709,0x8723,0x873B,0x871E,0x8725,0x872E,0x871A,0x873E,
|
||||
0x8748,0x8734,0x8731,0x8729,0x8737,0x873F,0x8782,0x8722,
|
||||
0x877D,0x877E,0x877B,0x8760,0x8770,0x874C,0x876E,0x878B,
|
||||
0x8753,0x8763,0x877C,0x8764,0x8759,0x8765,0x8793,0x87AF,
|
||||
0x87A8,0x87D2,0x87C6,0x8788,0x8785,0x87AD,0x8797,0x8783,
|
||||
0x87AB,0x87E5,0x87AC,0x87B5,0x87B3,0x87CB,0x87D3,0x87BD,
|
||||
0x87D1,0x87C0,0x87CA,0x87DB,0x87EA,0x87E0,0x87EE,0x8816,
|
||||
0x8813,0x87FE,0x880A,0x881B,0x8821,0x8839,0x883C,0x7F36,
|
||||
0x7F42,0x7F44,0x7F45,0x8210,0x7AFA,0x7AFD,0x7B08,0x7B03,
|
||||
0x7B04,0x7B15,0x7B0A,0x7B2B,0x7B0F,0x7B47,0x7B38,0x7B2A,
|
||||
0x7B19,0x7B2E,0x7B31,0x7B20,0x7B25,0x7B24,0x7B33,0x7B3E,
|
||||
0x7B1E,0x7B58,0x7B5A,0x7B45,0x7B75,0x7B4C,0x7B5D,0x7B60,
|
||||
0x7B6E,0x7B7B,0x7B62,0x7B72,0x7B71,0x7B90,0x7BA6,0x7BA7,
|
||||
0x7BB8,0x7BAC,0x7B9D,0x7BA8,0x7B85,0x7BAA,0x7B9C,0x7BA2,
|
||||
0x7BAB,0x7BB4,0x7BD1,0x7BC1,0x7BCC,0x7BDD,0x7BDA,0x7BE5,
|
||||
0x7BE6,0x7BEA,0x7C0C,0x7BFE,0x7BFC,0x7C0F,0x7C16,0x7C0B,
|
||||
0x7C1F,0x7C2A,0x7C26,0x7C38,0x7C41,0x7C40,0x81FE,0x8201,
|
||||
0x8202,0x8204,0x81EC,0x8844,0x8221,0x8222,0x8223,0x822D,
|
||||
0x822F,0x8228,0x822B,0x8238,0x823B,0x8233,0x8234,0x823E,
|
||||
0x8244,0x8249,0x824B,0x824F,0x825A,0x825F,0x8268,0x887E,
|
||||
0x8885,0x8888,0x88D8,0x88DF,0x895E,0x7F9D,0x7F9F,0x7FA7,
|
||||
0x7FAF,0x7FB0,0x7FB2,0x7C7C,0x6549,0x7C91,0x7C9D,0x7C9C,
|
||||
0x7C9E,0x7CA2,0x7CB2,0x7CBC,0x7CBD,0x7CC1,0x7CC7,0x7CCC,
|
||||
0x7CCD,0x7CC8,0x7CC5,0x7CD7,0x7CE8,0x826E,0x66A8,0x7FBF,
|
||||
0x7FCE,0x7FD5,0x7FE5,0x7FE1,0x7FE6,0x7FE9,0x7FEE,0x7FF3,
|
||||
0x7CF8,0x7D77,0x7DA6,0x7DAE,0x7E47,0x7E9B,0x9EB8,0x9EB4,
|
||||
0x8D73,0x8D84,0x8D94,0x8D91,0x8DB1,0x8D67,0x8D6D,0x8C47,
|
||||
0x8C49,0x914A,0x9150,0x914E,0x914F,0x9164,0x9162,0x9161,
|
||||
0x9170,0x9169,0x916F,0x917D,0x917E,0x9172,0x9174,0x9179,
|
||||
0x918C,0x9185,0x9190,0x918D,0x9191,0x91A2,0x91A3,0x91AA,
|
||||
0x91AD,0x91AE,0x91AF,0x91B5,0x91B4,0x91BA,0x8C55,0x9E7E,
|
||||
0x8DB8,0x8DEB,0x8E05,0x8E59,0x8E69,0x8DB5,0x8DBF,0x8DBC,
|
||||
0x8DBA,0x8DC4,0x8DD6,0x8DD7,0x8DDA,0x8DDE,0x8DCE,0x8DCF,
|
||||
0x8DDB,0x8DC6,0x8DEC,0x8DF7,0x8DF8,0x8DE3,0x8DF9,0x8DFB,
|
||||
0x8DE4,0x8E09,0x8DFD,0x8E14,0x8E1D,0x8E1F,0x8E2C,0x8E2E,
|
||||
0x8E23,0x8E2F,0x8E3A,0x8E40,0x8E39,0x8E35,0x8E3D,0x8E31,
|
||||
0x8E49,0x8E41,0x8E42,0x8E51,0x8E52,0x8E4A,0x8E70,0x8E76,
|
||||
0x8E7C,0x8E6F,0x8E74,0x8E85,0x8E8F,0x8E94,0x8E90,0x8E9C,
|
||||
0x8E9E,0x8C78,0x8C82,0x8C8A,0x8C85,0x8C98,0x8C94,0x659B,
|
||||
0x89D6,0x89DE,0x89DA,0x89DC,0x89E5,0x89EB,0x89EF,0x8A3E,
|
||||
0x8B26,0x9753,0x96E9,0x96F3,0x96EF,0x9706,0x9701,0x9708,
|
||||
0x970F,0x970E,0x972A,0x972D,0x9730,0x973E,0x9F80,0x9F83,
|
||||
0x9F85,0x9F86,0x9F87,0x9F88,0x9F89,0x9F8A,0x9F8C,0x9EFE,
|
||||
0x9F0B,0x9F0D,0x96B9,0x96BC,0x96BD,0x96CE,0x96D2,0x77BF,
|
||||
0x96E0,0x928E,0x92AE,0x92C8,0x933E,0x936A,0x93CA,0x938F,
|
||||
0x943E,0x946B,0x9C7F,0x9C82,0x9C85,0x9C86,0x9C87,0x9C88,
|
||||
0x7A23,0x9C8B,0x9C8E,0x9C90,0x9C91,0x9C92,0x9C94,0x9C95,
|
||||
0x9C9A,0x9C9B,0x9C9E,0x9C9F,0x9CA0,0x9CA1,0x9CA2,0x9CA3,
|
||||
0x9CA5,0x9CA6,0x9CA7,0x9CA8,0x9CA9,0x9CAB,0x9CAD,0x9CAE,
|
||||
0x9CB0,0x9CB1,0x9CB2,0x9CB3,0x9CB4,0x9CB5,0x9CB6,0x9CB7,
|
||||
0x9CBA,0x9CBB,0x9CBC,0x9CBD,0x9CC4,0x9CC5,0x9CC6,0x9CC7,
|
||||
0x9CCA,0x9CCB,0x9CCC,0x9CCD,0x9CCE,0x9CCF,0x9CD0,0x9CD3,
|
||||
0x9CD4,0x9CD5,0x9CD7,0x9CD8,0x9CD9,0x9CDC,0x9CDD,0x9CDF,
|
||||
0x9CE2,0x977C,0x9785,0x9791,0x9792,0x9794,0x97AF,0x97AB,
|
||||
0x97A3,0x97B2,0x97B4,0x9AB1,0x9AB0,0x9AB7,0x9E58,0x9AB6,
|
||||
0x9ABA,0x9ABC,0x9AC1,0x9AC0,0x9AC5,0x9AC2,0x9ACB,0x9ACC,
|
||||
0x9AD1,0x9B45,0x9B43,0x9B47,0x9B49,0x9B48,0x9B4D,0x9B51,
|
||||
0x98E8,0x990D,0x992E,0x9955,0x9954,0x9ADF,0x9AE1,0x9AE6,
|
||||
0x9AEF,0x9AEB,0x9AFB,0x9AED,0x9AF9,0x9B08,0x9B0F,0x9B13,
|
||||
0x9B1F,0x9B23,0x9EBD,0x9EBE,0x7E3B,0x9E82,0x9E87,0x9E88,
|
||||
0x9E8B,0x9E92,0x93D6,0x9E9D,0x9E9F,0x9EDB,0x9EDC,0x9EDD,
|
||||
0x9EE0,0x9EDF,0x9EE2,0x9EE9,0x9EE7,0x9EE5,0x9EEA,0x9EEF,
|
||||
0x9F22,0x9F2C,0x9F2F,0x9F39,0x9F37,0x9F3D,0x9F3E,0x9F44
|
||||
};
|
||||
|
||||
//#define B_DEBUG
|
||||
int ConverGB2Unicode(char *szFrom,wchar_t *wszTo)
|
||||
{
|
||||
int i=0;
|
||||
int j=0;
|
||||
int k=0;
|
||||
int size=strlen(szFrom);
|
||||
unsigned char utemp=0;
|
||||
|
||||
for(i=0;i<size;i++)
|
||||
{
|
||||
utemp=(unsigned char)szFrom[i];
|
||||
if(utemp<128)
|
||||
{
|
||||
wszTo[k]=szFrom[i];
|
||||
k++;
|
||||
}
|
||||
else
|
||||
{ j=szFrom[i]*0x100+(unsigned char)szFrom[i+1];
|
||||
wszTo[k]=0x2000;
|
||||
if (j>=0xA1A1 && j<=0xA9FE)
|
||||
wszTo[k]=bGbUnicodedat1[(szFrom[i]-0xA1)*94+ (unsigned char)szFrom[i+1]-0xA1];
|
||||
if (j>=0xB0A1 && j<=0xF7FE)
|
||||
wszTo[k]=bGbUnicodedat2[(szFrom[i]-0xB0)*94+ (unsigned char)szFrom[i+1]-0xA1];
|
||||
i++;
|
||||
k++;
|
||||
}
|
||||
}
|
||||
wszTo[k]=0;
|
||||
return k;
|
||||
}
|
||||
|
@ -1,24 +0,0 @@
|
||||
//GB2Unicode.h
|
||||
|
||||
|
||||
#ifndef GB2UNICODE_H_
|
||||
#define GB2UNICODE_H_
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
int ConverGB2Unicode(char *szFrom,wchar_t *wszTo);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif //GB2UNICODE_H_
|
||||
|
@ -1,331 +0,0 @@
|
||||
#include <stdio.h>
|
||||
#include <ogcsys.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "apploader.h"
|
||||
#include "wdvd.h"
|
||||
#include "wpad.h"
|
||||
#include "patchcode.h"
|
||||
#include "kenobiwii.h" /*FISHEARS*/
|
||||
|
||||
/*KENOBI! - FISHEARS*/
|
||||
extern const unsigned char kenobiwii[];
|
||||
extern const int kenobiwii_size;
|
||||
/*KENOBI! - FISHEARS*/
|
||||
|
||||
/* Apploader function pointers */
|
||||
typedef int (*app_main)(void **dst, int *size, int *offset);
|
||||
typedef void (*app_init)(void (*report)(const char *fmt, ...));
|
||||
typedef void *(*app_final)();
|
||||
typedef void (*app_entry)(void (**init)(void (*report)(const char *fmt, ...)), int (**main)(), void *(**final)());
|
||||
|
||||
/* Apploader pointers */
|
||||
static u8 *appldr = (u8 *)0x81200000;
|
||||
|
||||
|
||||
/* Constants */
|
||||
#define APPLDR_OFFSET 0x2440
|
||||
|
||||
/* Variables */
|
||||
static u32 buffer[0x20] ATTRIBUTE_ALIGN(32);
|
||||
|
||||
|
||||
static void __noprint(const char *fmt, ...)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
bool compare_videomodes(GXRModeObj* mode1, GXRModeObj* mode2)
|
||||
{
|
||||
if (mode1->viTVMode != mode2->viTVMode || mode1->fbWidth != mode2->fbWidth || mode1->efbHeight != mode2->efbHeight || mode1->xfbHeight != mode2->xfbHeight ||
|
||||
mode1->viXOrigin != mode2->viXOrigin || mode1->viYOrigin != mode2->viYOrigin || mode1->viWidth != mode2->viWidth || mode1->viHeight != mode2->viHeight ||
|
||||
mode1->xfbMode != mode2->xfbMode || mode1->field_rendering != mode2->field_rendering || mode1->aa != mode2->aa || mode1->sample_pattern[0][0] != mode2->sample_pattern[0][0] ||
|
||||
mode1->sample_pattern[1][0] != mode2->sample_pattern[1][0] || mode1->sample_pattern[2][0] != mode2->sample_pattern[2][0] ||
|
||||
mode1->sample_pattern[3][0] != mode2->sample_pattern[3][0] || mode1->sample_pattern[4][0] != mode2->sample_pattern[4][0] ||
|
||||
mode1->sample_pattern[5][0] != mode2->sample_pattern[5][0] || mode1->sample_pattern[6][0] != mode2->sample_pattern[6][0] ||
|
||||
mode1->sample_pattern[7][0] != mode2->sample_pattern[7][0] || mode1->sample_pattern[8][0] != mode2->sample_pattern[8][0] ||
|
||||
mode1->sample_pattern[9][0] != mode2->sample_pattern[9][0] || mode1->sample_pattern[10][0] != mode2->sample_pattern[10][0] ||
|
||||
mode1->sample_pattern[11][0] != mode2->sample_pattern[11][0] || mode1->sample_pattern[0][1] != mode2->sample_pattern[0][1] ||
|
||||
mode1->sample_pattern[1][1] != mode2->sample_pattern[1][1] || mode1->sample_pattern[2][1] != mode2->sample_pattern[2][1] ||
|
||||
mode1->sample_pattern[3][1] != mode2->sample_pattern[3][1] || mode1->sample_pattern[4][1] != mode2->sample_pattern[4][1] ||
|
||||
mode1->sample_pattern[5][1] != mode2->sample_pattern[5][1] || mode1->sample_pattern[6][1] != mode2->sample_pattern[6][1] ||
|
||||
mode1->sample_pattern[7][1] != mode2->sample_pattern[7][1] || mode1->sample_pattern[8][1] != mode2->sample_pattern[8][1] ||
|
||||
mode1->sample_pattern[9][1] != mode2->sample_pattern[9][1] || mode1->sample_pattern[10][1] != mode2->sample_pattern[10][1] ||
|
||||
mode1->sample_pattern[11][1] != mode2->sample_pattern[11][1] || mode1->vfilter[0] != mode2->vfilter[0] ||
|
||||
mode1->vfilter[1] != mode2->vfilter[1] || mode1->vfilter[2] != mode2->vfilter[2] || mode1->vfilter[3] != mode2->vfilter[3] || mode1->vfilter[4] != mode2->vfilter[4] ||
|
||||
mode1->vfilter[5] != mode2->vfilter[5] || mode1->vfilter[6] != mode2->vfilter[6] )
|
||||
{
|
||||
return false;
|
||||
} else
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void patch_videomode(GXRModeObj* mode1, GXRModeObj* mode2)
|
||||
{
|
||||
mode1->viTVMode = mode2->viTVMode;
|
||||
mode1->fbWidth = mode2->fbWidth;
|
||||
mode1->efbHeight = mode2->efbHeight;
|
||||
mode1->xfbHeight = mode2->xfbHeight;
|
||||
mode1->viXOrigin = mode2->viXOrigin;
|
||||
mode1->viYOrigin = mode2->viYOrigin;
|
||||
mode1->viWidth = mode2->viWidth;
|
||||
mode1->viHeight = mode2->viHeight;
|
||||
mode1->xfbMode = mode2->xfbMode;
|
||||
mode1->field_rendering = mode2->field_rendering;
|
||||
mode1->aa = mode2->aa;
|
||||
mode1->sample_pattern[0][0] = mode2->sample_pattern[0][0];
|
||||
mode1->sample_pattern[1][0] = mode2->sample_pattern[1][0];
|
||||
mode1->sample_pattern[2][0] = mode2->sample_pattern[2][0];
|
||||
mode1->sample_pattern[3][0] = mode2->sample_pattern[3][0];
|
||||
mode1->sample_pattern[4][0] = mode2->sample_pattern[4][0];
|
||||
mode1->sample_pattern[5][0] = mode2->sample_pattern[5][0];
|
||||
mode1->sample_pattern[6][0] = mode2->sample_pattern[6][0];
|
||||
mode1->sample_pattern[7][0] = mode2->sample_pattern[7][0];
|
||||
mode1->sample_pattern[8][0] = mode2->sample_pattern[8][0];
|
||||
mode1->sample_pattern[9][0] = mode2->sample_pattern[9][0];
|
||||
mode1->sample_pattern[10][0] = mode2->sample_pattern[10][0];
|
||||
mode1->sample_pattern[11][0] = mode2->sample_pattern[11][0];
|
||||
mode1->sample_pattern[0][1] = mode2->sample_pattern[0][1];
|
||||
mode1->sample_pattern[1][1] = mode2->sample_pattern[1][1];
|
||||
mode1->sample_pattern[2][1] = mode2->sample_pattern[2][1];
|
||||
mode1->sample_pattern[3][1] = mode2->sample_pattern[3][1];
|
||||
mode1->sample_pattern[4][1] = mode2->sample_pattern[4][1];
|
||||
mode1->sample_pattern[5][1] = mode2->sample_pattern[5][1];
|
||||
mode1->sample_pattern[6][1] = mode2->sample_pattern[6][1];
|
||||
mode1->sample_pattern[7][1] = mode2->sample_pattern[7][1];
|
||||
mode1->sample_pattern[8][1] = mode2->sample_pattern[8][1];
|
||||
mode1->sample_pattern[9][1] = mode2->sample_pattern[9][1];
|
||||
mode1->sample_pattern[10][1] = mode2->sample_pattern[10][1];
|
||||
mode1->sample_pattern[11][1] = mode2->sample_pattern[11][1];
|
||||
mode1->vfilter[0] = mode2->vfilter[0];
|
||||
mode1->vfilter[1] = mode2->vfilter[1];
|
||||
mode1->vfilter[2] = mode2->vfilter[2];
|
||||
mode1->vfilter[3] = mode2->vfilter[3];
|
||||
mode1->vfilter[4] = mode2->vfilter[4];
|
||||
mode1->vfilter[5] = mode2->vfilter[5];
|
||||
mode1->vfilter[6] = mode2->vfilter[6];
|
||||
}
|
||||
|
||||
GXRModeObj* vmodes[] = {
|
||||
&TVNtsc240Ds,
|
||||
&TVNtsc240DsAa,
|
||||
&TVNtsc240Int,
|
||||
&TVNtsc240IntAa,
|
||||
&TVNtsc480IntDf,
|
||||
&TVNtsc480IntAa,
|
||||
&TVNtsc480Prog,
|
||||
&TVMpal480IntDf,
|
||||
&TVPal264Ds,
|
||||
&TVPal264DsAa,
|
||||
&TVPal264Int,
|
||||
&TVPal264IntAa,
|
||||
&TVPal524IntAa,
|
||||
&TVPal528Int,
|
||||
&TVPal528IntDf,
|
||||
&TVPal574IntDfScale,
|
||||
&TVEurgb60Hz240Ds,
|
||||
&TVEurgb60Hz240DsAa,
|
||||
&TVEurgb60Hz240Int,
|
||||
&TVEurgb60Hz240IntAa,
|
||||
&TVEurgb60Hz480Int,
|
||||
&TVEurgb60Hz480IntDf,
|
||||
&TVEurgb60Hz480IntAa,
|
||||
&TVEurgb60Hz480Prog,
|
||||
&TVEurgb60Hz480ProgSoft,
|
||||
&TVEurgb60Hz480ProgAa
|
||||
};
|
||||
|
||||
GXRModeObj* PAL2NTSC[]={
|
||||
&TVMpal480IntDf, &TVNtsc480IntDf,
|
||||
&TVPal264Ds, &TVNtsc240Ds,
|
||||
&TVPal264DsAa, &TVNtsc240DsAa,
|
||||
&TVPal264Int, &TVNtsc240Int,
|
||||
&TVPal264IntAa, &TVNtsc240IntAa,
|
||||
&TVPal524IntAa, &TVNtsc480IntAa,
|
||||
&TVPal528Int, &TVNtsc480IntAa,
|
||||
&TVPal528IntDf, &TVNtsc480IntDf,
|
||||
&TVPal574IntDfScale, &TVNtsc480IntDf,
|
||||
&TVEurgb60Hz240Ds, &TVNtsc240Ds,
|
||||
&TVEurgb60Hz240DsAa, &TVNtsc240DsAa,
|
||||
&TVEurgb60Hz240Int, &TVNtsc240Int,
|
||||
&TVEurgb60Hz240IntAa, &TVNtsc240IntAa,
|
||||
&TVEurgb60Hz480Int, &TVNtsc480IntAa,
|
||||
&TVEurgb60Hz480IntDf, &TVNtsc480IntDf,
|
||||
&TVEurgb60Hz480IntAa, &TVNtsc480IntAa,
|
||||
&TVEurgb60Hz480Prog, &TVNtsc480Prog,
|
||||
&TVEurgb60Hz480ProgSoft,&TVNtsc480Prog,
|
||||
&TVEurgb60Hz480ProgAa, &TVNtsc480Prog,
|
||||
0,0
|
||||
};
|
||||
|
||||
GXRModeObj* NTSC2PAL[]={
|
||||
&TVNtsc240Ds, &TVPal264Ds,
|
||||
&TVNtsc240DsAa, &TVPal264DsAa,
|
||||
&TVNtsc240Int, &TVPal264Int,
|
||||
&TVNtsc240IntAa, &TVPal264IntAa,
|
||||
&TVNtsc480IntDf, &TVPal528IntDf,
|
||||
&TVNtsc480IntAa, &TVPal524IntAa,
|
||||
&TVNtsc480Prog, &TVPal528IntDf,
|
||||
0,0
|
||||
};
|
||||
|
||||
GXRModeObj* NTSC2PAL60[]={
|
||||
&TVNtsc240Ds, &TVEurgb60Hz240Ds,
|
||||
&TVNtsc240DsAa, &TVEurgb60Hz240DsAa,
|
||||
&TVNtsc240Int, &TVEurgb60Hz240Int,
|
||||
&TVNtsc240IntAa, &TVEurgb60Hz240IntAa,
|
||||
&TVNtsc480IntDf, &TVEurgb60Hz480IntDf,
|
||||
&TVNtsc480IntAa, &TVEurgb60Hz480IntAa,
|
||||
&TVNtsc480Prog, &TVEurgb60Hz480Prog,
|
||||
0,0
|
||||
};
|
||||
bool Search_and_patch_Video_Modes(void *Address, u32 Size, GXRModeObj* Table[])
|
||||
{
|
||||
u8 *Addr = (u8 *)Address;
|
||||
bool found = 0;
|
||||
u32 i;
|
||||
|
||||
while(Size >= sizeof(GXRModeObj))
|
||||
{
|
||||
|
||||
|
||||
|
||||
for(i = 0; Table[i]; i+=2)
|
||||
{
|
||||
|
||||
|
||||
if(compare_videomodes(Table[i], (GXRModeObj*)Addr))
|
||||
|
||||
{
|
||||
found = 1;
|
||||
patch_videomode((GXRModeObj*)Addr, Table[i+1]);
|
||||
Addr += (sizeof(GXRModeObj)-4);
|
||||
Size -= (sizeof(GXRModeObj)-4);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Addr += 4;
|
||||
Size -= 4;
|
||||
}
|
||||
|
||||
|
||||
return found;
|
||||
}
|
||||
|
||||
s32 Apploader_Run(entry_point *entry, u8 cheat, u8 videoSelected, u8 vipatch, u8 patchcountrystring)
|
||||
{
|
||||
app_entry appldr_entry;
|
||||
app_init appldr_init;
|
||||
app_main appldr_main;
|
||||
app_final appldr_final;
|
||||
|
||||
u32 appldr_len;
|
||||
s32 ret;
|
||||
|
||||
/* Read apploader header */
|
||||
ret = WDVD_Read(buffer, 0x20, APPLDR_OFFSET);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
/* Calculate apploader length */
|
||||
appldr_len = buffer[5] + buffer[6];
|
||||
|
||||
/* Read apploader code */
|
||||
ret = WDVD_Read(appldr, appldr_len, APPLDR_OFFSET + 0x20);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
/* Set apploader entry function */
|
||||
appldr_entry = (app_entry)buffer[4];
|
||||
|
||||
/* Call apploader entry */
|
||||
appldr_entry(&appldr_init, &appldr_main, &appldr_final);
|
||||
|
||||
/* Initialize apploader */
|
||||
appldr_init(__noprint);
|
||||
|
||||
if (cheat)
|
||||
{
|
||||
/*HOOKS STUFF - FISHEARS*/
|
||||
memset((void*)0x80001800,0,kenobiwii_size);
|
||||
memcpy((void*)0x80001800,kenobiwii,kenobiwii_size);
|
||||
DCFlushRange((void*)0x80001800,kenobiwii_size);
|
||||
hooktype = 1;
|
||||
memcpy((void*)0x80001800, (char*)0x80000000, 6); // For WiiRD
|
||||
/*HOOKS STUFF - FISHEARS*/
|
||||
}
|
||||
|
||||
for (;;) {
|
||||
void *dst = NULL;
|
||||
int len = 0, offset = 0;
|
||||
GXRModeObj** table = NULL;
|
||||
|
||||
/* Run apploader main function */
|
||||
ret = appldr_main(&dst, &len, &offset);
|
||||
if (!ret)
|
||||
break;
|
||||
|
||||
/* Read data from DVD */
|
||||
WDVD_Read(dst, len, (u64)(offset << 2));
|
||||
|
||||
|
||||
if (videoSelected == 5) // patch
|
||||
|
||||
{
|
||||
switch(CONF_GetVideo())
|
||||
{
|
||||
case CONF_VIDEO_PAL:
|
||||
if(CONF_GetEuRGB60() > 0)
|
||||
{
|
||||
table = NTSC2PAL60;
|
||||
}
|
||||
else
|
||||
{
|
||||
table = NTSC2PAL;
|
||||
}
|
||||
break;
|
||||
|
||||
case CONF_VIDEO_MPAL:
|
||||
|
||||
|
||||
|
||||
table = NTSC2PAL;
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
table = PAL2NTSC;
|
||||
break;
|
||||
}
|
||||
Search_and_patch_Video_Modes(dst, len, table);
|
||||
}
|
||||
|
||||
/*GAME HOOK - FISHEARS*/
|
||||
dogamehooks(dst,len);
|
||||
|
||||
if (vipatch)
|
||||
vidolpatcher(dst,len);
|
||||
|
||||
|
||||
/*LANGUAGE PATCH - FISHEARS*/
|
||||
langpatcher(dst,len);
|
||||
|
||||
/*Thanks to WiiPower*/
|
||||
if(patchcountrystring == 1)
|
||||
PatchCountryStrings(dst, len);
|
||||
|
||||
DCFlushRange(dst, len);
|
||||
}
|
||||
/* Set entry point from apploader */
|
||||
*entry = appldr_final();
|
||||
|
||||
return 0;
|
||||
}
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
@ -1,10 +0,0 @@
|
||||
#ifndef _APPLOADER_H_
|
||||
#define _APPLOADER_H_
|
||||
|
||||
/* Entry point */
|
||||
typedef void (*entry_point)(void);
|
||||
|
||||
/* Prototypes */
|
||||
s32 Apploader_Run(entry_point *, u8, u8, u8, u8);
|
||||
|
||||
#endif
|
@ -1,35 +0,0 @@
|
||||
/****************************************************************************
|
||||
* libwiigui Template
|
||||
* Tantric 2009
|
||||
*
|
||||
* audio.cpp
|
||||
* Audio support
|
||||
***************************************************************************/
|
||||
|
||||
#include <gccore.h>
|
||||
#include <ogcsys.h>
|
||||
#include <asndlib.h>
|
||||
|
||||
/****************************************************************************
|
||||
* InitAudio
|
||||
*
|
||||
* Initializes the Wii's audio subsystem
|
||||
***************************************************************************/
|
||||
void InitAudio()
|
||||
{
|
||||
AUDIO_Init(NULL);
|
||||
ASND_Init();
|
||||
ASND_Pause(0);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* ShutdownAudio
|
||||
*
|
||||
* Shuts down audio subsystem. Useful to avoid unpleasant sounds if a
|
||||
* crash occurs during shutdown.
|
||||
***************************************************************************/
|
||||
void ShutdownAudio()
|
||||
{
|
||||
ASND_Pause(1);
|
||||
ASND_End();
|
||||
}
|
@ -1,15 +0,0 @@
|
||||
/****************************************************************************
|
||||
* libwiigui Template
|
||||
* Tantric 2009
|
||||
*
|
||||
* audio.h
|
||||
* Audio support
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef _AUDIO_H_
|
||||
#define _AUDIO_H_
|
||||
|
||||
void InitAudio();
|
||||
void ShutdownAudio();
|
||||
|
||||
#endif
|
1523
source/cfg.c
359
source/cfg.h
@ -1,359 +0,0 @@
|
||||
#ifndef _CFG_H_
|
||||
#define _CFG_H_
|
||||
|
||||
#include <gctypes.h>
|
||||
#include "disc.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
#define CFG_HOME_REBOOT 0
|
||||
#define CFG_HOME_EXIT 1
|
||||
|
||||
#define CFG_VIDEO_SYS 0 // system default
|
||||
#define CFG_VIDEO_DEFAULT 1
|
||||
#define CFG_VIDEO_GAME 1 // game default
|
||||
#define CFG_VIDEO_PATCH 2 // patch mode
|
||||
#define CFG_VIDEO_PAL50 3 // force PAL
|
||||
#define CFG_VIDEO_PAL60 4 // force PAL60
|
||||
#define CFG_VIDEO_NTSC 5 // force NTSC
|
||||
#define CFG_VIDEO_COUNT 6
|
||||
|
||||
#define CFG_LANG_CONSOLE 0
|
||||
#define CFG_LANG_JAPANESE 1
|
||||
#define CFG_LANG_ENGLISH 2
|
||||
#define CFG_LANG_GERMAN 3
|
||||
#define CFG_LANG_FRENCH 4
|
||||
#define CFG_LANG_SPANISH 5
|
||||
#define CFG_LANG_ITALIAN 6
|
||||
#define CFG_LANG_DUTCH 7
|
||||
#define CFG_LANG_S_CHINESE 8
|
||||
#define CFG_LANG_T_CHINESE 9
|
||||
#define CFG_LANG_KOREAN 10
|
||||
#define CFG_LANG_COUNT 11
|
||||
|
||||
#define CFG_ALIGN_LEFT 0
|
||||
#define CFG_ALIGN_RIGHT 1
|
||||
#define CFG_ALIGN_CENTRE 2
|
||||
#define CFG_ALIGN_TOP 3
|
||||
#define CFG_ALIGN_BOTTOM 4
|
||||
#define CFG_ALIGN_MIDDLE 5
|
||||
|
||||
extern char *cfg_path;
|
||||
//extern char *cfg_images_path;
|
||||
|
||||
struct CFG
|
||||
{
|
||||
// char *background;
|
||||
// short covers;
|
||||
// short simple;
|
||||
// short video;
|
||||
// short language;
|
||||
// short ocarina;
|
||||
// short vipatch;
|
||||
// short home;
|
||||
// short download;
|
||||
// short installdownload;
|
||||
// short hidesettingmenu;
|
||||
// short savesettings;
|
||||
short widescreen;
|
||||
short parentalcontrol;
|
||||
// short maxcharacters;
|
||||
short godmode;
|
||||
short xflip;
|
||||
short wsprompt;
|
||||
char unlockCode[20];
|
||||
char covers_path[100];
|
||||
char theme_path[100];
|
||||
char disc_path[100];
|
||||
char titlestxt_path[100];
|
||||
char language_path[100];
|
||||
char oggload_path[100];
|
||||
char ogg_path[150];
|
||||
char update_path[150];
|
||||
short keyset;
|
||||
};
|
||||
|
||||
|
||||
struct THEME
|
||||
{
|
||||
int selection_x;
|
||||
int selection_y;
|
||||
int selection_w;
|
||||
int selection_h;
|
||||
short cover_x;
|
||||
short cover_y;
|
||||
short showID;
|
||||
// short maxcharacters;
|
||||
short batteryUnused;
|
||||
short id_x;
|
||||
short id_y;
|
||||
short region_x;
|
||||
short region_y;
|
||||
short power_x;
|
||||
short power_y;
|
||||
short home_x;
|
||||
short home_y;
|
||||
short battery1_x;
|
||||
short battery2_x;
|
||||
short battery3_x;
|
||||
short battery4_x;
|
||||
short battery1_y;
|
||||
short battery2_y;
|
||||
short battery3_y;
|
||||
short battery4_y;
|
||||
short favorite_x;
|
||||
short favorite_y;
|
||||
short abc_x;
|
||||
short abc_y;
|
||||
short list_x;
|
||||
short list_y;
|
||||
short grid_x;
|
||||
short grid_y;
|
||||
short carousel_x;
|
||||
short carousel_y;
|
||||
short count_x;
|
||||
short count_y;
|
||||
short sortBarOffset;
|
||||
// short showPower;
|
||||
// short showHome;
|
||||
short setting_x;
|
||||
short setting_y;
|
||||
short install_x;
|
||||
short install_y;
|
||||
short showHDD;
|
||||
short hddInfoAlign;
|
||||
short hddInfo_x;
|
||||
short hddInfo_y;
|
||||
short showGameCnt;
|
||||
short gameCntAlign;
|
||||
short gameCnt_x;
|
||||
short gameCnt_y;
|
||||
short showRegion;
|
||||
short showBattery;
|
||||
short showToolTip;
|
||||
//color
|
||||
short info_r;
|
||||
short info_g;
|
||||
short info_b;
|
||||
short prompttxt_r;
|
||||
short prompttxt_g;
|
||||
short prompttxt_b;
|
||||
short clock_x;
|
||||
short clock_y;
|
||||
short clockAlign;
|
||||
short sdcard_x;
|
||||
short sdcard_y;
|
||||
short gameText_r;
|
||||
short gameText_g;
|
||||
short gameText_b;
|
||||
short pagesize;
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
extern struct CFG CFG;
|
||||
extern struct THEME THEME;
|
||||
extern u8 ocarinaChoice;
|
||||
extern u16 playcnt;
|
||||
extern u8 videoChoice;
|
||||
extern u8 languageChoice;
|
||||
extern u8 viChoice;
|
||||
extern u8 iosChoice;
|
||||
extern u8 faveChoice;
|
||||
extern u8 parentalcontrolChoice;
|
||||
extern u8 xflip;
|
||||
extern u8 qboot;
|
||||
extern u8 sort;
|
||||
extern u8 fave;
|
||||
extern u8 wsprompt;
|
||||
extern u8 keyset;
|
||||
extern u8 gameDisplay;
|
||||
|
||||
struct Game_CFG
|
||||
{
|
||||
u8 id[8];
|
||||
u8 video;
|
||||
u8 language;
|
||||
u8 ocarina;
|
||||
u8 vipatch;
|
||||
u8 ios;
|
||||
u8 parentalcontrol;
|
||||
};
|
||||
struct Game_NUM
|
||||
{
|
||||
u8 id[8];
|
||||
u8 favorite;
|
||||
u16 count;
|
||||
};
|
||||
|
||||
|
||||
void CFG_Default(int widescreen); // -1 = non forced mode
|
||||
void CFG_Load(void);
|
||||
void lang_defualt();
|
||||
struct Game_CFG* CFG_get_game_opt(u8 *id);
|
||||
struct Game_NUM* CFG_get_game_num(u8 *id);
|
||||
bool CFG_save_game_opt(u8 *id);
|
||||
bool CFG_save_game_num(u8 *id);
|
||||
bool CFG_forget_game_opt(u8 *id);
|
||||
int subfoldercheck(char * directory);
|
||||
|
||||
//Astidof - Begin of modification
|
||||
enum {
|
||||
ConsoleLangDefault=0,
|
||||
jap,
|
||||
eng,
|
||||
ger,
|
||||
fren,
|
||||
esp,
|
||||
it,
|
||||
dut,
|
||||
schin,
|
||||
tchin,
|
||||
kor,
|
||||
|
||||
settings_language_max // always the last entry
|
||||
};
|
||||
|
||||
enum {
|
||||
systemdefault=0,
|
||||
discdefault,
|
||||
patch,
|
||||
pal50,
|
||||
pal60,
|
||||
ntsc,
|
||||
settings_video_max // always the last entry
|
||||
};
|
||||
|
||||
enum {
|
||||
off=0,
|
||||
on,
|
||||
settings_off_on_max // always the last entry
|
||||
};
|
||||
|
||||
enum {
|
||||
GameID,
|
||||
GameRegion,
|
||||
Both,
|
||||
Neither,
|
||||
settings_sinfo_max // always the last entry
|
||||
};
|
||||
|
||||
enum {
|
||||
i249=0,
|
||||
i222,
|
||||
};
|
||||
|
||||
enum {
|
||||
ios249=0,
|
||||
ios222,
|
||||
settings_cios_max // always the last entry
|
||||
};
|
||||
|
||||
enum {
|
||||
hr12=0,
|
||||
hr24,
|
||||
Off,
|
||||
settings_clock_max // always the last entry
|
||||
};
|
||||
enum {
|
||||
all=0,
|
||||
pcount,
|
||||
};
|
||||
|
||||
enum {
|
||||
RumbleOff=0,
|
||||
RumbleOn,
|
||||
settings_rumble_max // always the last entry
|
||||
};
|
||||
|
||||
enum {
|
||||
TooltipsOff=0,
|
||||
TooltipsOn,
|
||||
settings_tooltips_max // always the last entry
|
||||
};
|
||||
|
||||
enum {
|
||||
v10=0,
|
||||
v20,
|
||||
v30,
|
||||
v40,
|
||||
v50,
|
||||
v60,
|
||||
v70,
|
||||
v80,
|
||||
v90,
|
||||
v100,
|
||||
v0,
|
||||
settings_volume_max // always the last entry
|
||||
};
|
||||
|
||||
enum {
|
||||
no=0,
|
||||
yes,
|
||||
sysmenu,
|
||||
wtf,
|
||||
disk3d,
|
||||
settings_xflip_max // always the last entry
|
||||
};
|
||||
enum {
|
||||
us=0,
|
||||
dvorak,
|
||||
euro,
|
||||
azerty,
|
||||
settings_keyset_max // always the last entry
|
||||
};
|
||||
enum {
|
||||
list,
|
||||
grid,
|
||||
carousel,
|
||||
};
|
||||
enum {
|
||||
scrollDefault,
|
||||
scrollMarquee,
|
||||
|
||||
settings_scrolleffect_max // always the last entry
|
||||
};
|
||||
struct SSettings {
|
||||
int video;
|
||||
int language;
|
||||
int ocarina;
|
||||
int vpatch;
|
||||
int ios;
|
||||
int sinfo;
|
||||
int hddinfo;
|
||||
int rumble;
|
||||
int xflip;
|
||||
int volume;
|
||||
int tooltips;
|
||||
char unlockCode[20];
|
||||
int parentalcontrol;
|
||||
int cios;
|
||||
int qboot;
|
||||
int wsprompt;
|
||||
int keyset;
|
||||
int unicodefix;
|
||||
int sort;
|
||||
int fave;
|
||||
int wiilight;
|
||||
int gameDisplay;
|
||||
int patchcountrystrings;
|
||||
};
|
||||
|
||||
void CFG_LoadGlobal(void);
|
||||
bool cfg_save_global(void);
|
||||
//Astidof - End of modification
|
||||
|
||||
char *get_title(struct discHdr *header);
|
||||
u8 get_block(struct discHdr *header);
|
||||
|
||||
void CFG_Cleanup(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
BIN
source/data1
Before Width: | Height: | Size: 22 KiB |
390
source/disc.c
@ -1,390 +0,0 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <ogcsys.h>
|
||||
#include <ogc/lwp_watchdog.h>
|
||||
#include <wiiuse/wpad.h>
|
||||
|
||||
|
||||
#include "apploader.h"
|
||||
#include "disc.h"
|
||||
#include "video.h"
|
||||
#include "wdvd.h"
|
||||
#include "fst.h"
|
||||
|
||||
/* Constants */
|
||||
#define PTABLE_OFFSET 0x40000
|
||||
#define WII_MAGIC 0x5D1C9EA3
|
||||
|
||||
/* Disc pointers */
|
||||
static u32 *buffer = (u32 *)0x93000000;
|
||||
static u8 *diskid = (u8 *)0x80000000;
|
||||
static char gameid[8];
|
||||
|
||||
|
||||
void __Disc_SetLowMem(void)
|
||||
{
|
||||
/* Setup low memory */
|
||||
*(vu32 *)0x80000030 = 0x00000000;
|
||||
*(vu32 *)0x80000060 = 0x38A00040;
|
||||
*(vu32 *)0x800000E4 = 0x80431A80;
|
||||
*(vu32 *)0x800000EC = 0x81800000;
|
||||
*(vu32 *)0x800000F4 = 0x817E5480;
|
||||
*(vu32 *)0x800000F8 = 0x0E7BE2C0;
|
||||
*(vu32 *)0x800000FC = 0x2B73A840;
|
||||
|
||||
/* Copy disc ID */
|
||||
memcpy((void *)0x80003180, (void *)0x80000000, 4);
|
||||
|
||||
/* Flush cache */
|
||||
DCFlushRange((void *)0x80000000, 0x3F00);
|
||||
}
|
||||
|
||||
void __Disc_SetVMode(u8 videoselected)
|
||||
{
|
||||
GXRModeObj *vmode = NULL;
|
||||
|
||||
u32 progressive, tvmode, vmode_reg = 0;
|
||||
|
||||
/* Get video mode configuration */
|
||||
progressive = (CONF_GetProgressiveScan() > 0) && VIDEO_HaveComponentCable();
|
||||
tvmode = CONF_GetVideo();
|
||||
|
||||
/* Select video mode register */
|
||||
switch (tvmode) {
|
||||
case CONF_VIDEO_PAL:
|
||||
vmode_reg = (CONF_GetEuRGB60() > 0) ? 5 : 1;
|
||||
break;
|
||||
|
||||
case CONF_VIDEO_MPAL:
|
||||
vmode_reg = 4;
|
||||
break;
|
||||
|
||||
case CONF_VIDEO_NTSC:
|
||||
vmode_reg = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
switch (videoselected) {
|
||||
case 0:
|
||||
|
||||
/* Select video mode */
|
||||
switch(diskid[3]) {
|
||||
/* PAL */
|
||||
case 'D':
|
||||
case 'F':
|
||||
case 'P':
|
||||
case 'X':
|
||||
case 'Y':
|
||||
if (tvmode != CONF_VIDEO_PAL) {
|
||||
vmode_reg = 5;
|
||||
vmode = (progressive) ? &TVNtsc480Prog : &TVEurgb60Hz480IntDf;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
/* NTSC or unknown */
|
||||
case 'E':
|
||||
case 'J':
|
||||
if (tvmode != CONF_VIDEO_NTSC) {
|
||||
vmode_reg = 0;
|
||||
vmode = (progressive) ? &TVNtsc480Prog : &TVNtsc480IntDf;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
vmode_reg = 1;
|
||||
progressive = (CONF_GetProgressiveScan() > 0) && VIDEO_HaveComponentCable();
|
||||
vmode = (progressive) ? &TVEurgb60Hz480Prog : &TVPal528IntDf;
|
||||
break;
|
||||
case 2:
|
||||
vmode_reg = 5;
|
||||
progressive = (CONF_GetProgressiveScan() > 0) && VIDEO_HaveComponentCable();
|
||||
vmode = (progressive) ? &TVEurgb60Hz480Prog : &TVEurgb60Hz480IntDf;
|
||||
break;
|
||||
case 3:
|
||||
vmode_reg = 0;
|
||||
progressive = (CONF_GetProgressiveScan() > 0) && VIDEO_HaveComponentCable();
|
||||
vmode = (progressive) ? &TVNtsc480Prog : &TVNtsc480IntDf;
|
||||
break;
|
||||
case 4:
|
||||
// vmode = VIDEO_GetPreferredMode(NULL);
|
||||
break;
|
||||
}
|
||||
|
||||
/* Set video mode register */
|
||||
*(vu32 *)0x800000CC = vmode_reg;
|
||||
|
||||
/* Set video mode */
|
||||
if (vmode) {
|
||||
|
||||
VIDEO_Configure(vmode);
|
||||
|
||||
/* Setup video */
|
||||
VIDEO_SetBlack(FALSE);
|
||||
VIDEO_Flush();
|
||||
VIDEO_WaitVSync();
|
||||
|
||||
if (vmode->viTVMode & VI_NON_INTERLACE)
|
||||
VIDEO_WaitVSync();
|
||||
}
|
||||
}
|
||||
|
||||
void __Disc_SetTime(void)
|
||||
{
|
||||
/* Extern */
|
||||
extern void settime(u64);
|
||||
|
||||
/* Set proper time */
|
||||
settime(secs_to_ticks(time(NULL) - 946684800));
|
||||
}
|
||||
|
||||
s32 __Disc_FindPartition(u64 *outbuf)
|
||||
{
|
||||
u64 offset = 0, table_offset = 0;
|
||||
|
||||
u32 cnt, nb_partitions;
|
||||
s32 ret;
|
||||
|
||||
/* Read partition info */
|
||||
ret = WDVD_UnencryptedRead(buffer, 0x20, PTABLE_OFFSET);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
/* Get data */
|
||||
nb_partitions = buffer[0];
|
||||
table_offset = buffer[1] << 2;
|
||||
|
||||
/* Read partition table */
|
||||
ret = WDVD_UnencryptedRead(buffer, 0x20, table_offset);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
/* Find game partition */
|
||||
for (cnt = 0; cnt < nb_partitions; cnt++) {
|
||||
u32 type = buffer[cnt * 2 + 1];
|
||||
|
||||
/* Game partition */
|
||||
if(!type)
|
||||
offset = buffer[cnt * 2] << 2;
|
||||
}
|
||||
|
||||
/* No game partition found */
|
||||
if (!offset)
|
||||
return -1;
|
||||
|
||||
/* Set output buffer */
|
||||
*outbuf = offset;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
s32 Disc_Init(void)
|
||||
{
|
||||
/* Init DVD subsystem */
|
||||
return WDVD_Init();
|
||||
}
|
||||
|
||||
s32 Disc_Open(void)
|
||||
{
|
||||
s32 ret;
|
||||
|
||||
/* Reset drive */
|
||||
ret = WDVD_Reset();
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
/* Read disc ID */
|
||||
return WDVD_ReadDiskId(diskid);
|
||||
}
|
||||
|
||||
s32 Disc_Wait(void)
|
||||
{
|
||||
u32 cover = 0;
|
||||
s32 ret;
|
||||
|
||||
/* Wait for disc */
|
||||
while (!(cover & 0x2)) {
|
||||
/* Get cover status */
|
||||
ret = WDVD_GetCoverStatus(&cover);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
s32 Disc_SetUSB(u8 *id, int ios222)
|
||||
{
|
||||
/* Set USB mode */
|
||||
return WDVD_SetUSBMode(id, ios222);
|
||||
}
|
||||
|
||||
s32 Disc_ReadHeader(void *outbuf)
|
||||
{
|
||||
/* Read disc header */
|
||||
return WDVD_UnencryptedRead(outbuf, sizeof(struct discHdr), 0);
|
||||
}
|
||||
|
||||
s32 Disc_IsWii(void)
|
||||
{
|
||||
struct discHdr *header = (struct discHdr *)buffer;
|
||||
|
||||
s32 ret;
|
||||
|
||||
/* Read disc header */
|
||||
ret = Disc_ReadHeader(header);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
/* Check magic word */
|
||||
if (header->magic != WII_MAGIC)
|
||||
return -1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
s32 Disc_BootPartition(u64 offset, u8 videoselected, u8 cheat, u8 vipatch, u8 patchcountrystring)
|
||||
{
|
||||
entry_point p_entry;
|
||||
|
||||
s32 ret;
|
||||
|
||||
/* Open specified partition */
|
||||
ret = WDVD_OpenPartition(offset);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
/* Run apploader */
|
||||
ret = Apploader_Run(&p_entry, cheat, videoselected, vipatch, patchcountrystring);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
/* Setup low memory */
|
||||
__Disc_SetLowMem();
|
||||
|
||||
/* Set an appropiate video mode */
|
||||
__Disc_SetVMode(videoselected);
|
||||
|
||||
/* Set time */
|
||||
__Disc_SetTime();
|
||||
|
||||
if (cheat == 1) {
|
||||
/* OCARINA STUFF - FISHEARS*/
|
||||
memset(gameid, 0, 8);
|
||||
memcpy(gameid, (char*)0x80000000, 6);
|
||||
do_sd_code(gameid);
|
||||
/* OCARINA STUFF - FISHEARS*/
|
||||
}
|
||||
|
||||
/* Disconnect Wiimote */
|
||||
WPAD_Flush(0);
|
||||
WPAD_Disconnect(0);
|
||||
WPAD_Shutdown();
|
||||
|
||||
/* Shutdown IOS subsystems */
|
||||
SYS_ResetSystem(SYS_SHUTDOWN, 0, 0);
|
||||
|
||||
/* Jump to entry point */
|
||||
p_entry();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
s32 Disc_WiiBoot(u8 videoselected, u8 cheat, u8 vipatch, u8 patchcountrystring)
|
||||
{
|
||||
u64 offset;
|
||||
s32 ret;
|
||||
|
||||
/* Find game partition offset */
|
||||
ret = __Disc_FindPartition(&offset);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
/* Boot partition */
|
||||
return Disc_BootPartition(offset, videoselected, cheat, vipatch, patchcountrystring);
|
||||
}
|
||||
|
||||
void PatchCountryStrings(void *Address, int Size)
|
||||
{
|
||||
u8 SearchPattern[4] = { 0x00, 0x00, 0x00, 0x00 };
|
||||
u8 PatchData[4] = { 0x00, 0x00, 0x00, 0x00 };
|
||||
u8 *Addr = (u8*)Address;
|
||||
|
||||
int wiiregion = CONF_GetRegion();
|
||||
|
||||
switch (wiiregion)
|
||||
{
|
||||
case CONF_REGION_JP:
|
||||
SearchPattern[0] = 0x00;
|
||||
SearchPattern[1] = 0x4A; // J
|
||||
SearchPattern[2] = 0x50; // P
|
||||
break;
|
||||
case CONF_REGION_EU:
|
||||
SearchPattern[0] = 0x02;
|
||||
SearchPattern[1] = 0x45; // E
|
||||
SearchPattern[2] = 0x55; // U
|
||||
break;
|
||||
case CONF_REGION_KR:
|
||||
SearchPattern[0] = 0x04;
|
||||
SearchPattern[1] = 0x4B; // K
|
||||
SearchPattern[2] = 0x52; // R
|
||||
break;
|
||||
case CONF_REGION_CN:
|
||||
SearchPattern[0] = 0x05;
|
||||
SearchPattern[1] = 0x43; // C
|
||||
SearchPattern[2] = 0x4E; // N
|
||||
break;
|
||||
case CONF_REGION_US:
|
||||
default:
|
||||
SearchPattern[0] = 0x01;
|
||||
SearchPattern[1] = 0x55; // U
|
||||
SearchPattern[2] = 0x53; // S
|
||||
}
|
||||
|
||||
switch (diskid[3])
|
||||
{
|
||||
case 'J':
|
||||
PatchData[1] = 0x4A; // J
|
||||
PatchData[2] = 0x50; // P
|
||||
break;
|
||||
|
||||
case 'D':
|
||||
case 'F':
|
||||
case 'P':
|
||||
case 'X':
|
||||
case 'Y':
|
||||
PatchData[1] = 0x45; // E
|
||||
PatchData[2] = 0x55; // U
|
||||
break;
|
||||
|
||||
case 'E':
|
||||
default:
|
||||
PatchData[1] = 0x55; // U
|
||||
PatchData[2] = 0x53; // S
|
||||
}
|
||||
|
||||
while (Size >= 4)
|
||||
{
|
||||
if (Addr[0] == SearchPattern[0] && Addr[1] == SearchPattern[1] && Addr[2] == SearchPattern[2] && Addr[3] == SearchPattern[3])
|
||||
{
|
||||
//*Addr = PatchData[0];
|
||||
Addr += 1;
|
||||
*Addr = PatchData[1];
|
||||
Addr += 1;
|
||||
*Addr = PatchData[2];
|
||||
Addr += 1;
|
||||
//*Addr = PatchData[3];
|
||||
Addr += 1;
|
||||
Size -= 4;
|
||||
} else
|
||||
{
|
||||
Addr += 4;
|
||||
Size -= 4;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,57 +0,0 @@
|
||||
#ifndef _DISC_H_
|
||||
#define _DISC_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
/* Disc header structure */
|
||||
struct discHdr
|
||||
{
|
||||
/* Game ID */
|
||||
u8 id[6];
|
||||
|
||||
/* Game version */
|
||||
u16 version;
|
||||
|
||||
/* Audio streaming */
|
||||
u8 streaming;
|
||||
u8 bufsize;
|
||||
|
||||
/* Padding */
|
||||
u8 unused1[14];
|
||||
|
||||
/* Magic word */
|
||||
u32 magic;
|
||||
|
||||
/* Padding */
|
||||
u8 unused2[4];
|
||||
|
||||
/* Game title */
|
||||
char title[64];
|
||||
|
||||
/* Encryption/Hashing */
|
||||
u8 encryption;
|
||||
u8 h3_verify;
|
||||
|
||||
/* Padding */
|
||||
u8 unused3[30];
|
||||
} ATTRIBUTE_PACKED;
|
||||
|
||||
/* Prototypes */
|
||||
s32 Disc_Init(void);
|
||||
s32 Disc_Open(void);
|
||||
s32 Disc_Wait(void);
|
||||
void __Disc_SetLowMem(void);
|
||||
s32 Disc_SetUSB(u8 *, int ios222);
|
||||
s32 Disc_ReadHeader(void *);
|
||||
s32 Disc_IsWii(void);
|
||||
s32 Disc_BootPartition(u64, u8, u8, u8, u8);
|
||||
s32 Disc_WiiBoot(u8, u8, u8, u8);
|
||||
void PatchCountryStrings(void *Address, int Size);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
122
source/dns.c
@ -1,122 +0,0 @@
|
||||
#include "dns.h"
|
||||
|
||||
/**
|
||||
* Resolves a domainname to an ip address
|
||||
* It makes use of net_gethostbyname from libogc, which in turn makes use of a Wii BIOS function
|
||||
* Just like the net_gethostbyname function this function is NOT threadsafe!
|
||||
*
|
||||
* @param char* The domain name to resolve
|
||||
* @return u32 The ipaddress represented by four bytes inside an u32 (in network order)
|
||||
*/
|
||||
u32 getipbyname(char *domain)
|
||||
{
|
||||
//Care should be taken when using net_gethostbyname,
|
||||
//it returns a static buffer which makes it not threadsafe
|
||||
//TODO: implement some locking mechanism to make below code atomic
|
||||
struct hostent *host = net_gethostbyname(domain);
|
||||
|
||||
if(host == NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
u32 *ip = (u32*)host->h_addr_list[0];
|
||||
return *ip;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//Defines how many DNS entries should be cached by getipbynamecached()
|
||||
#define MAX_DNS_CACHE_ENTRIES 20
|
||||
|
||||
//The cache is defined as a linked list,
|
||||
//The last resolved domain name will always be at the front
|
||||
//This will allow heavily used domainnames to always stay cached
|
||||
struct dnsentry {
|
||||
char *domain;
|
||||
u32 ip;
|
||||
struct dnsentry *nextnode;
|
||||
} ;
|
||||
|
||||
static struct dnsentry *firstdnsentry = NULL;
|
||||
static int dnsentrycount = 0;
|
||||
|
||||
/**
|
||||
* Performs the same function as getipbyname(),
|
||||
* except that it will prevent extremely expensive net_gethostbyname() calls by caching the result
|
||||
*/
|
||||
u32 getipbynamecached(char *domain)
|
||||
{
|
||||
//Search if this domainname is already cached
|
||||
struct dnsentry *node = firstdnsentry;
|
||||
struct dnsentry *previousnode = NULL;
|
||||
|
||||
while(node != NULL)
|
||||
{
|
||||
if(strcmp(node->domain, domain) == 0)
|
||||
{
|
||||
//DNS node found in the cache, move it to the front of the list
|
||||
if(previousnode != NULL)
|
||||
previousnode->nextnode = node->nextnode;
|
||||
|
||||
if(node != firstdnsentry)
|
||||
node->nextnode = firstdnsentry;
|
||||
firstdnsentry = node;
|
||||
|
||||
return node->ip;
|
||||
}
|
||||
//Go to the next element in the list
|
||||
previousnode = node;
|
||||
node = node->nextnode;
|
||||
}
|
||||
u32 ip = getipbyname(domain);
|
||||
|
||||
//No cache of this domain could be found, create a cache node and add it to the front of the cache
|
||||
struct dnsentry *newnode = malloc(sizeof(struct dnsentry));
|
||||
if(newnode == NULL) {
|
||||
return ip;
|
||||
}
|
||||
|
||||
newnode->ip = ip;
|
||||
newnode->domain = malloc(strlen(domain)+1);
|
||||
if(newnode->domain == NULL)
|
||||
{
|
||||
free(newnode);
|
||||
return ip;
|
||||
}
|
||||
strcpy(newnode->domain, domain);
|
||||
|
||||
newnode->nextnode = firstdnsentry;
|
||||
firstdnsentry = newnode;
|
||||
dnsentrycount++;
|
||||
|
||||
//If the cache grows too big delete the last (and probably least important) node of the list
|
||||
if(dnsentrycount > MAX_DNS_CACHE_ENTRIES)
|
||||
{
|
||||
struct dnsentry *node = firstdnsentry;
|
||||
struct dnsentry *previousnode = NULL;
|
||||
|
||||
//Fetch the last two elements of the list
|
||||
while(node->nextnode != NULL)
|
||||
{
|
||||
previousnode = node;
|
||||
node = node->nextnode;
|
||||
}
|
||||
|
||||
if(node == NULL)
|
||||
{
|
||||
printf("Configuration error, MAX_DNS_ENTRIES reached while the list is empty\n");
|
||||
exit(1);
|
||||
} else if(previousnode == NULL)
|
||||
{
|
||||
firstdnsentry = NULL;
|
||||
} else {
|
||||
previousnode->nextnode = NULL;
|
||||
}
|
||||
|
||||
free(node->domain);
|
||||
free(node);
|
||||
dnsentrycount--;
|
||||
}
|
||||
|
||||
return newnode->ip;
|
||||
}
|
23
source/dns.h
@ -1,23 +0,0 @@
|
||||
#ifndef _DNS_H_
|
||||
#define _DNS_H_
|
||||
|
||||
#include <network.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <unistd.h> //usleep
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
u32 getipbyname(char *domain);
|
||||
u32 getipbynamecached(char *domain);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _DNS_H_ */
|
42
source/dolloader.c
Normal file
@ -0,0 +1,42 @@
|
||||
#include <malloc.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <ogc/machine/processor.h>
|
||||
#include <gccore.h>
|
||||
#include <dirent.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "dolloader.h"
|
||||
|
||||
u32 load_dol_image (void *dolstart, struct __argv *argv) {
|
||||
u32 i;
|
||||
dolheader *dolfile;
|
||||
|
||||
if (dolstart) {
|
||||
dolfile = (dolheader *) dolstart;
|
||||
for (i = 0; i < 7; i++) {
|
||||
if ((!dolfile->text_size[i]) || (dolfile->text_start[i] < 0x100)) continue;
|
||||
VIDEO_WaitVSync();
|
||||
ICInvalidateRange ((void *) dolfile->text_start[i],dolfile->text_size[i]);
|
||||
memmove ((void *) dolfile->text_start[i],dolstart+dolfile->text_pos[i],dolfile->text_size[i]);
|
||||
}
|
||||
|
||||
for(i = 0; i < 11; i++) {
|
||||
if ((!dolfile->data_size[i]) || (dolfile->data_start[i] < 0x100)) continue;
|
||||
VIDEO_WaitVSync();
|
||||
memmove ((void *) dolfile->data_start[i],dolstart+dolfile->data_pos[i],dolfile->data_size[i]);
|
||||
DCFlushRangeNoSync ((void *) dolfile->data_start[i],dolfile->data_size[i]);
|
||||
}
|
||||
|
||||
memset ((void *) dolfile->bss_start, 0, dolfile->bss_size);
|
||||
DCFlushRange((void *) dolfile->bss_start, dolfile->bss_size);
|
||||
|
||||
if (argv && argv->argvMagic == ARGV_MAGIC) {
|
||||
void *new_argv = (void *)(dolfile->entry_point + 8);
|
||||
memmove(new_argv, argv, sizeof(*argv));
|
||||
DCFlushRange(new_argv, sizeof(*argv));
|
||||
}
|
||||
return dolfile->entry_point;
|
||||
}
|
||||
return 0;
|
||||
}
|
39
source/dolloader.h
Normal file
@ -0,0 +1,39 @@
|
||||
#ifndef _DOLLOADER_H_
|
||||
#define _DOLLOADER_H_
|
||||
|
||||
#include <wiiuse/wpad.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
// Apps goes here
|
||||
#define EXECUTABLE_MEM_ADDR 0x92000000
|
||||
/* dol header */
|
||||
|
||||
|
||||
extern void __exception_closeall();
|
||||
typedef void (*entrypoint) (void);
|
||||
|
||||
|
||||
typedef struct _dolheader {
|
||||
u32 text_pos[7];
|
||||
u32 data_pos[11];
|
||||
u32 text_start[7];
|
||||
u32 data_start[11];
|
||||
u32 text_size[7];
|
||||
u32 data_size[11];
|
||||
u32 bss_start;
|
||||
u32 bss_size;
|
||||
u32 entry_point;
|
||||
} dolheader;
|
||||
|
||||
u32 load_dol_image (void *dolstart, struct __argv *argv);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
@ -1,612 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2008 Nuke (wiinuke@gmail.com)
|
||||
*
|
||||
* this file is part of GeckoOS for USB Gecko
|
||||
* http://www.usbgecko.com
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <malloc.h>
|
||||
#include <time.h>
|
||||
#include <gcutil.h>
|
||||
#include <ogc/lwp_queue.h>
|
||||
#include <gccore.h>
|
||||
|
||||
#include "dvd_broadway.h"
|
||||
|
||||
#define DI_CMDCTX_CNT 4
|
||||
|
||||
#define DVD_DISKIDSIZE 0x20
|
||||
#define DVD_DRVINFSIZE 0x20
|
||||
|
||||
#define IOCTL_DI_INQUIRY 0x12
|
||||
#define IOCTL_DI_READID 0x70
|
||||
#define IOCTL_DI_READ 0x71
|
||||
#define IOCTL_DI_WAITCVRCLOSE 0x79
|
||||
#define IOCTL_DI_COVER 0x7A
|
||||
#define IOCTL_DI_RESETNOTIFY 0x7E
|
||||
#define IOCTL_DI_RESET 0x8A
|
||||
#define IOCTL_DI_OPENPART 0x8B
|
||||
#define IOCTL_DI_CLOSEPART 0x8C
|
||||
#define IOCTL_DI_UNENCREAD 0x8D
|
||||
#define IOCTL_DI_ENABLE_DVD 0x8E
|
||||
#define IOCTL_DI_SEEK 0xAB
|
||||
#define IOCTL_DI_READ_DVDVIDEO 0xD0
|
||||
#define IOCTL_DI_STOPLASER 0xD2
|
||||
#define IOCTL_DI_OFFSET 0xD9
|
||||
#define IOCTL_DI_REQERROR 0xE0
|
||||
#define IOCTL_DI_STOPMOTOR 0xE3
|
||||
#define IOCTL_DI_SETOFFBASE 0xF0
|
||||
#define IOCTL_DI_GETOFFBASE 0xF1
|
||||
#define IOCTL_DI_SETCRYPTMODE 0xF2
|
||||
#define IOCTL_DI_GETCRYPTMODE 0xF3
|
||||
#define IOCTL_DI_SETDVDROMMODE 0xF4
|
||||
#define IOCTL_DI_GETDVDROMMODE 0xF5
|
||||
|
||||
#define _SHIFTL(v, s, w) \
|
||||
((u32) (((u32)(v) & ((0x01 << (w)) - 1)) << (s)))
|
||||
#define _SHIFTR(v, s, w) \
|
||||
((u32)(((u32)(v) >> (s)) & ((0x01 << (w)) - 1)))
|
||||
|
||||
struct dicommand
|
||||
{
|
||||
u32 diReg[8];
|
||||
};
|
||||
|
||||
struct dicontext
|
||||
{
|
||||
lwp_node node;
|
||||
dvdcallbacklow cb;
|
||||
struct dicommand *cmd;
|
||||
};
|
||||
|
||||
static s32 __dvd_fd = -1;
|
||||
static u32 __dvd_spinupval = 1;
|
||||
static lwp_queue __di_contextq;
|
||||
static u32 __dvd_readlength = 0;
|
||||
static u32 __dvd_cbinprogress = 0;
|
||||
static u32 __dvd_reqinprogress = 0;
|
||||
static u32 __dvd_lowinitcalled = 0;
|
||||
static struct dicommand *__di_commands = NULL;
|
||||
static struct dicontext __di_contexts[DI_CMDCTX_CNT];
|
||||
static u32 __di_regbuffer[0x08] ATTRIBUTE_ALIGN(32);
|
||||
static u32 __di_regvalcache[0x08] ATTRIBUTE_ALIGN(32);
|
||||
static u32 __di_lastticketerror[0x08] ATTRIBUTE_ALIGN(32);
|
||||
static ioctlv __di_iovector[0x08] ATTRIBUTE_ALIGN(32);
|
||||
static char __di_fs[] ATTRIBUTE_ALIGN(32) = "/dev/di";
|
||||
|
||||
extern u32 __IPC_ClntInit();
|
||||
|
||||
static __inline__ lwp_node* __lwp_queue_head(lwp_queue *queue)
|
||||
{
|
||||
return (lwp_node*)queue;
|
||||
}
|
||||
|
||||
static __inline__ lwp_node* __lwp_queue_tail(lwp_queue *queue)
|
||||
{
|
||||
return (lwp_node*)&queue->perm_null;
|
||||
}
|
||||
|
||||
|
||||
static __inline__ void __lwp_queue_init_empty(lwp_queue *queue)
|
||||
{
|
||||
queue->first = __lwp_queue_tail(queue);
|
||||
queue->perm_null = NULL;
|
||||
queue->last = __lwp_queue_head(queue);
|
||||
}
|
||||
|
||||
static struct dicontext* __dvd_getcontext(dvdcallbacklow cb)
|
||||
{
|
||||
struct dicontext *ctx;
|
||||
|
||||
ctx = (struct dicontext*)__lwp_queue_get(&__di_contextq);
|
||||
if(ctx!=NULL) ctx->cb = cb;
|
||||
|
||||
return ctx;
|
||||
}
|
||||
|
||||
static s32 __dvd_iostransactionCB(s32 result,void *usrdata)
|
||||
{
|
||||
struct dicontext *ctx = (struct dicontext*)usrdata;
|
||||
|
||||
__dvd_reqinprogress = 0;
|
||||
|
||||
if(ctx->cb!=NULL) {
|
||||
__dvd_cbinprogress = 1;
|
||||
if(result!=0) __dvd_readlength = 0;
|
||||
ctx->cb(result);
|
||||
__dvd_cbinprogress = 0;
|
||||
}
|
||||
__lwp_queue_append(&__di_contextq,&ctx->node);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static s32 __dvd_ioscoverregisterCB(s32 result,void *usrdata)
|
||||
{
|
||||
struct dicontext *ctx = (struct dicontext*)usrdata;
|
||||
|
||||
__dvd_reqinprogress = 0;
|
||||
__di_regvalcache[1] = __di_regbuffer[0];
|
||||
|
||||
if(ctx->cb!=NULL) {
|
||||
__dvd_cbinprogress = 1;
|
||||
ctx->cb(result);
|
||||
__dvd_cbinprogress = 0;
|
||||
}
|
||||
__lwp_queue_append(&__di_contextq,&ctx->node);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static s32 __dvd_ioscovercloseCB(s32 result,void *usrdata)
|
||||
{
|
||||
struct dicontext *ctx = (struct dicontext*)usrdata;
|
||||
|
||||
__dvd_reqinprogress = 0;
|
||||
|
||||
if(ctx->cb!=NULL) {
|
||||
__dvd_cbinprogress = 1;
|
||||
ctx->cb(result);
|
||||
__dvd_cbinprogress = 0;
|
||||
}
|
||||
__lwp_queue_append(&__di_contextq,&ctx->node);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
s32 bwDVD_LowInit()
|
||||
{
|
||||
s32 i,ret = 0;
|
||||
u32 ipclo,ipchi;
|
||||
lwp_queue inactives;
|
||||
struct dicontext *ctx;
|
||||
|
||||
if(__dvd_lowinitcalled==0) {
|
||||
ret = __IPC_ClntInit();
|
||||
if(ret<0) return ret;
|
||||
|
||||
ipclo = (((u32)IPC_GetBufferLo()+0x1f)&~0x1f);
|
||||
ipchi = (u32)IPC_GetBufferHi();
|
||||
if(ipchi>=(ipclo+(sizeof(struct dicommand)*DI_CMDCTX_CNT))) {
|
||||
__di_commands = (struct dicommand*)ipclo;
|
||||
IPC_SetBufferLo((void*)(ipclo+(sizeof(struct dicommand)*DI_CMDCTX_CNT)));
|
||||
|
||||
memset(__di_commands,0,(sizeof(struct dicommand)*DI_CMDCTX_CNT));
|
||||
|
||||
i = 0;
|
||||
__lwp_queue_init_empty(&__di_contextq);
|
||||
__lwp_queue_initialize(&inactives,__di_contexts,DI_CMDCTX_CNT,sizeof(struct dicontext));
|
||||
while((ctx=(struct dicontext*)__lwp_queue_get(&inactives))!=NULL) {
|
||||
ctx->cmd = &__di_commands[i];
|
||||
ctx->cb = NULL;
|
||||
__lwp_queue_append(&__di_contextq,&ctx->node);
|
||||
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
ret = IOS_Open(__di_fs,0);
|
||||
if(ret<0) return ret;
|
||||
|
||||
__dvd_fd = ret;
|
||||
// __dvd_lowinitcalled = 1;
|
||||
|
||||
// printf("DVD_LowInit(%d)\n",ret);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
s32 bwDVD_LowInquiry(dvddrvinfo *info,dvdcallbacklow cb)
|
||||
{
|
||||
s32 ret;
|
||||
struct dicontext *ctx;
|
||||
struct dicommand *cmd;
|
||||
|
||||
__dvd_reqinprogress = 1;
|
||||
|
||||
ctx = __dvd_getcontext(cb);
|
||||
if(ctx==NULL) return IPC_ENOMEM;
|
||||
|
||||
cmd = ctx->cmd;
|
||||
cmd->diReg[0] = (IOCTL_DI_INQUIRY<<24);
|
||||
ret = IOS_IoctlAsync(__dvd_fd,IOCTL_DI_INQUIRY,cmd->diReg,sizeof(struct dicommand),info,DVD_DRVINFSIZE,__dvd_iostransactionCB,ctx);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
s32 bwDVD_LowReadID(dvddiskid *diskID,dvdcallbacklow cb)
|
||||
{
|
||||
s32 ret = 0;
|
||||
struct dicontext *ctx;
|
||||
struct dicommand *cmd;
|
||||
|
||||
// printf("DVD_LowReadID()\n");
|
||||
|
||||
__dvd_reqinprogress = 1;
|
||||
|
||||
ctx = __dvd_getcontext(cb);
|
||||
if(ctx==NULL) return IPC_ENOMEM;
|
||||
|
||||
cmd = ctx->cmd;
|
||||
cmd->diReg[0] = (IOCTL_DI_READID<<24);
|
||||
ret = IOS_IoctlAsync(__dvd_fd,IOCTL_DI_READID,cmd->diReg,sizeof(struct dicommand),diskID,DVD_DISKIDSIZE,__dvd_iostransactionCB,ctx);
|
||||
|
||||
// printf("DVD_LowReadID(%d)\n",ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
s32 bwDVD_LowRead(void *buf,u32 len,u32 offset,dvdcallbacklow cb)
|
||||
{
|
||||
s32 ret;
|
||||
struct dicontext *ctx;
|
||||
struct dicommand *cmd;
|
||||
|
||||
if(buf==NULL || ((u32)buf%32)!=0) return -1;
|
||||
|
||||
__dvd_reqinprogress = 1;
|
||||
__dvd_readlength = len;
|
||||
|
||||
ctx = __dvd_getcontext(cb);
|
||||
if(ctx==NULL) return IPC_ENOMEM;
|
||||
|
||||
cmd = ctx->cmd;
|
||||
cmd->diReg[0] = (IOCTL_DI_READ<<24);
|
||||
cmd->diReg[1] = len;
|
||||
cmd->diReg[2] = offset;
|
||||
ret = IOS_IoctlAsync(__dvd_fd,IOCTL_DI_READ,cmd->diReg,sizeof(struct dicommand),buf,len,__dvd_iostransactionCB,ctx);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
// never got this function working, probably removed from wii
|
||||
s32 bwDVD_LowReadVideo(void *buf,u32 len,u32 offset,dvdcallbacklow cb)
|
||||
{
|
||||
s32 ret;
|
||||
struct dicontext *ctx;
|
||||
struct dicommand *cmd;
|
||||
|
||||
__dvd_reqinprogress = 1;
|
||||
__dvd_readlength = len;
|
||||
|
||||
ctx = __dvd_getcontext(cb);
|
||||
if(ctx==NULL) return IPC_ENOMEM;
|
||||
|
||||
cmd = ctx->cmd;
|
||||
cmd->diReg[0] = (IOCTL_DI_READ_DVDVIDEO<<24);
|
||||
cmd->diReg[1] = len;
|
||||
cmd->diReg[2] = offset;
|
||||
ret = IOS_IoctlAsync(__dvd_fd,IOCTL_DI_READ_DVDVIDEO,cmd->diReg,sizeof(struct dicommand),buf,len,__dvd_iostransactionCB,ctx);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
||||
s32 bwDVD_LowStopLaser(dvdcallbacklow cb)
|
||||
{
|
||||
s32 ret;
|
||||
struct dicontext *ctx;
|
||||
struct dicommand *cmd;
|
||||
|
||||
__dvd_reqinprogress = 1;
|
||||
|
||||
ctx = __dvd_getcontext(cb);
|
||||
if(ctx==NULL) return IPC_ENOMEM;
|
||||
|
||||
cmd = ctx->cmd;
|
||||
cmd->diReg[0] = (IOCTL_DI_STOPLASER<<24);
|
||||
ret = IOS_IoctlAsync(__dvd_fd,IOCTL_DI_STOPLASER,cmd->diReg,sizeof(struct dicommand),__di_regvalcache,0x20,__dvd_iostransactionCB,ctx);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
// never got this function working, probably removed from wii
|
||||
s32 bwDVD_EnableVideo(dvdcallbacklow cb)
|
||||
{
|
||||
s32 ret;
|
||||
struct dicontext *ctx;
|
||||
struct dicommand *cmd;
|
||||
|
||||
__dvd_reqinprogress = 1;
|
||||
|
||||
ctx = __dvd_getcontext(cb);
|
||||
if(ctx==NULL) return IPC_ENOMEM;
|
||||
|
||||
cmd = ctx->cmd;
|
||||
cmd->diReg[0] = (IOCTL_DI_ENABLE_DVD<<24);
|
||||
ret = IOS_IoctlAsync(__dvd_fd,IOCTL_DI_ENABLE_DVD,cmd->diReg,sizeof(struct dicommand),__di_regvalcache,0x20,__dvd_iostransactionCB,ctx);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
s32 bwDVD_LowSeek(u32 offset,dvdcallbacklow cb)
|
||||
{
|
||||
s32 ret;
|
||||
struct dicontext *ctx;
|
||||
struct dicommand *cmd;
|
||||
|
||||
__dvd_reqinprogress = 1;
|
||||
|
||||
ctx = __dvd_getcontext(cb);
|
||||
if(ctx==NULL) return IPC_ENOMEM;
|
||||
|
||||
cmd = ctx->cmd;
|
||||
cmd->diReg[0] = (IOCTL_DI_SEEK<<24);
|
||||
cmd->diReg[1] = offset;
|
||||
ret = IOS_IoctlAsync(__dvd_fd,IOCTL_DI_SEEK,cmd->diReg,sizeof(struct dicommand),NULL,0,__dvd_iostransactionCB,ctx);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
s32 bwDVD_LowOffset(u64 offset,dvdcallbacklow cb)
|
||||
{
|
||||
s32 ret;
|
||||
u32 *off = (u32*)(void*)(&offset);
|
||||
struct dicontext *ctx;
|
||||
struct dicommand *cmd;
|
||||
|
||||
__dvd_reqinprogress = 1;
|
||||
|
||||
ctx = __dvd_getcontext(cb);
|
||||
if(ctx==NULL) return IPC_ENOMEM;
|
||||
|
||||
cmd = ctx->cmd;
|
||||
cmd->diReg[0] = (IOCTL_DI_OFFSET<<24);
|
||||
cmd->diReg[1] = 0;
|
||||
if(off[0]) cmd->diReg[1] = 1;
|
||||
cmd->diReg[2] = off[1];
|
||||
ret = IOS_IoctlAsync(__dvd_fd,IOCTL_DI_OFFSET,cmd->diReg,sizeof(struct dicommand),__di_regvalcache,0x20,__dvd_iostransactionCB,ctx);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
s32 bwDVD_LowPrepareCoverRegister(dvdcallbacklow cb)
|
||||
{
|
||||
s32 ret;
|
||||
struct dicontext *ctx;
|
||||
struct dicommand *cmd;
|
||||
|
||||
__dvd_reqinprogress = 1;
|
||||
|
||||
ctx = __dvd_getcontext(cb);
|
||||
if(ctx==NULL) return IPC_ENOMEM;
|
||||
|
||||
cmd = ctx->cmd;
|
||||
cmd->diReg[0] = (IOCTL_DI_COVER<<24);
|
||||
ret = IOS_IoctlAsync(__dvd_fd,IOCTL_DI_COVER,cmd->diReg,sizeof(struct dicommand),__di_regbuffer,0x20,__dvd_ioscoverregisterCB,ctx);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
s32 bwDVD_LowOpenPartition(u32 offset,void *eticket,u32 certin_len,void *certificate_in,void *certificate_out,dvdcallbacklow cb)
|
||||
{
|
||||
s32 ret;
|
||||
struct dicontext *ctx;
|
||||
struct dicommand *cmd;
|
||||
|
||||
if(eticket!=NULL && ((u32)eticket%32)!=0) return -1;
|
||||
if(certificate_in!=NULL && ((u32)certificate_in%32)!=0) return -1;
|
||||
if(certificate_out!=NULL && ((u32)certificate_out%32)!=0) return -1;
|
||||
|
||||
__dvd_reqinprogress = 1;
|
||||
|
||||
ctx = __dvd_getcontext(cb);
|
||||
if(ctx==NULL) return IPC_ENOMEM;
|
||||
|
||||
cmd = ctx->cmd;
|
||||
cmd->diReg[0] = (IOCTL_DI_OPENPART<<24);
|
||||
cmd->diReg[1] = offset;
|
||||
|
||||
__di_iovector[0].data = cmd;
|
||||
__di_iovector[0].len = sizeof(struct dicommand);
|
||||
|
||||
__di_iovector[1].data = eticket;
|
||||
if(eticket==NULL) __di_iovector[1].len = 0;
|
||||
else __di_iovector[1].len = 676;
|
||||
|
||||
__di_iovector[2].data = certificate_in;
|
||||
if(certificate_in==NULL) __di_iovector[2].len = 0;
|
||||
else __di_iovector[2].len = certin_len;
|
||||
|
||||
__di_iovector[3].data = certificate_out;
|
||||
__di_iovector[3].len = 18916;
|
||||
__di_iovector[4].data = __di_lastticketerror;
|
||||
__di_iovector[4].len = 0x20;
|
||||
ret = IOS_IoctlvAsync(__dvd_fd,IOCTL_DI_OPENPART,3,2,__di_iovector,__dvd_iostransactionCB,ctx);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
s32 bwDVD_LowClosePartition(dvdcallbacklow cb)
|
||||
{
|
||||
s32 ret;
|
||||
struct dicontext *ctx;
|
||||
struct dicommand *cmd;
|
||||
|
||||
__dvd_reqinprogress = 1;
|
||||
|
||||
ctx = __dvd_getcontext(cb);
|
||||
if(ctx==NULL) return IPC_ENOMEM;
|
||||
|
||||
cmd = ctx->cmd;
|
||||
cmd->diReg[0] = (IOCTL_DI_CLOSEPART<<24);
|
||||
ret = IOS_IoctlAsync(__dvd_fd,IOCTL_DI_CLOSEPART,cmd->diReg,sizeof(struct dicommand),NULL,0,__dvd_iostransactionCB,ctx);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
s32 bwDVD_LowUnencryptedRead(void *buf,u32 len,u32 offset,dvdcallbacklow cb)
|
||||
{
|
||||
s32 ret;
|
||||
struct dicontext *ctx;
|
||||
struct dicommand *cmd;
|
||||
|
||||
__dvd_reqinprogress = 1;
|
||||
__dvd_readlength = len;
|
||||
|
||||
ctx = __dvd_getcontext(cb);
|
||||
if(ctx==NULL) return IPC_ENOMEM;
|
||||
|
||||
cmd = ctx->cmd;
|
||||
cmd->diReg[0] = (IOCTL_DI_UNENCREAD<<24);
|
||||
cmd->diReg[1] = len;
|
||||
cmd->diReg[2] = offset;
|
||||
ret = IOS_IoctlAsync(__dvd_fd,IOCTL_DI_UNENCREAD,cmd->diReg,sizeof(struct dicommand),buf,len,__dvd_iostransactionCB,ctx);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
s32 bwDVD_LowWaitCoverClose(dvdcallbacklow cb)
|
||||
{
|
||||
s32 ret;
|
||||
struct dicontext *ctx;
|
||||
struct dicommand *cmd;
|
||||
|
||||
__dvd_reqinprogress = 1;
|
||||
|
||||
ctx = __dvd_getcontext(cb);
|
||||
if(ctx==NULL) return IPC_ENOMEM;
|
||||
|
||||
cmd = ctx->cmd;
|
||||
cmd->diReg[0] = (IOCTL_DI_WAITCVRCLOSE<<24);
|
||||
ret = IOS_IoctlAsync(__dvd_fd,IOCTL_DI_WAITCVRCLOSE,cmd->diReg,sizeof(struct dicommand),NULL,0,__dvd_ioscovercloseCB,ctx);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
s32 bwDVD_LowResetNotify()
|
||||
{
|
||||
s32 ret;
|
||||
struct dicontext *ctx;
|
||||
struct dicommand *cmd;
|
||||
|
||||
if(__dvd_cbinprogress==1) return -1;
|
||||
|
||||
ctx = __dvd_getcontext(NULL);
|
||||
if(ctx==NULL) return IPC_ENOMEM;
|
||||
|
||||
cmd = ctx->cmd;
|
||||
cmd->diReg[0] = (IOCTL_DI_RESETNOTIFY<<24);
|
||||
ret = IOS_Ioctl(__dvd_fd,IOCTL_DI_RESETNOTIFY,cmd->diReg,sizeof(struct dicommand),NULL,0);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
s32 bwDVD_LowReset(dvdcallbacklow cb)
|
||||
{
|
||||
s32 ret;
|
||||
struct dicontext *ctx;
|
||||
struct dicommand *cmd;
|
||||
|
||||
// printf("DVD_LowReset()\n");
|
||||
__dvd_reqinprogress = 1;
|
||||
|
||||
ctx = __dvd_getcontext(cb);
|
||||
if(ctx==NULL) return IPC_ENOMEM;
|
||||
|
||||
cmd = ctx->cmd;
|
||||
cmd->diReg[0] = (IOCTL_DI_RESET<<24);
|
||||
cmd->diReg[1] = __dvd_spinupval;
|
||||
ret = IOS_IoctlAsync(__dvd_fd,IOCTL_DI_RESET,cmd->diReg,sizeof(struct dicommand),NULL,0,__dvd_iostransactionCB,ctx);
|
||||
|
||||
// printf("DVD_LowReset(%d)\n",ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
s32 bwDVD_LowStopMotor(u8 stop1,u8 stop2,dvdcallbacklow cb)
|
||||
{
|
||||
s32 ret;
|
||||
struct dicontext *ctx;
|
||||
struct dicommand *cmd;
|
||||
|
||||
__dvd_reqinprogress = 1;
|
||||
|
||||
ctx = __dvd_getcontext(cb);
|
||||
if(ctx==NULL) return IPC_ENOMEM;
|
||||
|
||||
cmd = ctx->cmd;
|
||||
cmd->diReg[0] = (IOCTL_DI_STOPMOTOR<<24);
|
||||
cmd->diReg[1] = (stop1<<24);
|
||||
cmd->diReg[2] = (stop2<<24);
|
||||
ret = IOS_IoctlAsync(__dvd_fd,IOCTL_DI_STOPMOTOR,cmd->diReg,sizeof(struct dicommand),__di_regvalcache,0x20,__dvd_iostransactionCB,ctx);
|
||||
|
||||
return ret;
|
||||
|
||||
}
|
||||
|
||||
s32 bwDVD_LowRequestError(dvdcallbacklow cb)
|
||||
{
|
||||
s32 ret;
|
||||
struct dicontext *ctx;
|
||||
struct dicommand *cmd;
|
||||
|
||||
__dvd_reqinprogress = 1;
|
||||
|
||||
ctx = __dvd_getcontext(cb);
|
||||
if(ctx==NULL) return IPC_ENOMEM;
|
||||
|
||||
cmd = ctx->cmd;
|
||||
cmd->diReg[0] = (IOCTL_DI_REQERROR<<24);
|
||||
ret = IOS_IoctlAsync(__dvd_fd,IOCTL_DI_REQERROR,cmd->diReg,sizeof(struct dicommand),__di_regvalcache,0x20,__dvd_iostransactionCB,ctx);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
s32 bwDVD_SetDecryption(s32 mode, dvdcallbacklow cb)
|
||||
{
|
||||
s32 ret;
|
||||
struct dicontext *ctx;
|
||||
struct dicommand *cmd;
|
||||
|
||||
__dvd_reqinprogress = 1;
|
||||
|
||||
ctx = __dvd_getcontext(cb);
|
||||
if(ctx==NULL) return IPC_ENOMEM;
|
||||
|
||||
cmd = ctx->cmd;
|
||||
cmd->diReg[0] = (IOCTL_DI_SETCRYPTMODE<<24);
|
||||
cmd->diReg[1] = mode;
|
||||
ret = IOS_IoctlAsync(__dvd_fd,IOCTL_DI_SETCRYPTMODE,cmd->diReg,sizeof(struct dicommand),__di_regvalcache,0x20,__dvd_iostransactionCB,ctx);
|
||||
|
||||
return ret;
|
||||
|
||||
}
|
||||
|
||||
s32 bwDVD_SetOffset(u32 offset, dvdcallbacklow cb)
|
||||
{
|
||||
s32 ret;
|
||||
struct dicontext *ctx;
|
||||
struct dicommand *cmd;
|
||||
|
||||
__dvd_reqinprogress = 1;
|
||||
|
||||
ctx = __dvd_getcontext(cb);
|
||||
if(ctx==NULL) return IPC_ENOMEM;
|
||||
|
||||
cmd = ctx->cmd;
|
||||
cmd->diReg[0] = (IOCTL_DI_SETOFFBASE<<24);
|
||||
cmd->diReg[1] = offset;
|
||||
ret = IOS_IoctlAsync(__dvd_fd,IOCTL_DI_SETOFFBASE,cmd->diReg,sizeof(struct dicommand),__di_regvalcache,0x20,__dvd_iostransactionCB,ctx);
|
||||
|
||||
return ret;
|
||||
|
||||
}
|
@ -1,53 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2008 Nuke (wiinuke@gmail.com)
|
||||
*
|
||||
* this file is part of GeckoOS for USB Gecko
|
||||
* http://www.usbgecko.com
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#ifndef __DVD_BROADWAY_H__
|
||||
#define __DVD_BROADWAY_H__
|
||||
|
||||
#include <gctypes.h>
|
||||
#include <ogc/ipc.h>
|
||||
#include <ogc/dvd.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
typedef void (*dvdcallbacklow)(s32 result);
|
||||
|
||||
s32 bwDVD_LowInit();
|
||||
s32 bwDVD_LowInquiry(dvddrvinfo *info,dvdcallbacklow cb);
|
||||
s32 bwDVD_LowReadID(dvddiskid *diskID,dvdcallbacklow cb);
|
||||
s32 bwDVD_LowClosePartition(dvdcallbacklow cb);
|
||||
s32 bwDVD_LowOpenPartition(u32 offset,void *eticket,u32 certin_len,void *certificate_in,void *certificate_out,dvdcallbacklow cb);
|
||||
s32 bwDVD_LowUnencryptedRead(void *buf,u32 len,u32 offset,dvdcallbacklow cb);
|
||||
s32 bwDVD_LowReset(dvdcallbacklow cb);
|
||||
s32 bwDVD_LowWaitCoverClose(dvdcallbacklow cb);
|
||||
s32 bwDVD_LowRead(void *buf,u32 len,u32 offset,dvdcallbacklow cb);
|
||||
s32 bwDVD_EnableVideo(dvdcallbacklow cb);
|
||||
s32 bwDVD_LowReadVideo(void *buf,u32 len,u32 offset,dvdcallbacklow cb);
|
||||
s32 bwDVD_SetDecryption(s32 mode, dvdcallbacklow cb);
|
||||
s32 bwDVD_SetOffset(u32 offset, dvdcallbacklow cb);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif
|
594
source/elf_abi.h
Normal file
@ -0,0 +1,594 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 1996, 2001, 2002
|
||||
* Erik Theisen. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/*
|
||||
* This is the ELF ABI header file
|
||||
* formerly known as "elf_abi.h".
|
||||
*/
|
||||
|
||||
#ifndef _ELF_ABI_H
|
||||
#define _ELF_ABI_H
|
||||
|
||||
#include <gctypes.h>
|
||||
|
||||
/*
|
||||
* This version doesn't work for 64-bit ABIs - Erik.
|
||||
*/
|
||||
|
||||
/*
|
||||
* These typedefs need to be handled better.
|
||||
*/
|
||||
typedef u32 Elf32_Addr; /* Unsigned program address */
|
||||
typedef u32 Elf32_Off; /* Unsigned file offset */
|
||||
typedef s32 Elf32_Sword; /* Signed large integer */
|
||||
typedef u32 Elf32_Word; /* Unsigned large integer */
|
||||
typedef u16 Elf32_Half; /* Unsigned medium integer */
|
||||
|
||||
/* e_ident[] identification indexes */
|
||||
#define EI_MAG0 0 /* file ID */
|
||||
#define EI_MAG1 1 /* file ID */
|
||||
#define EI_MAG2 2 /* file ID */
|
||||
#define EI_MAG3 3 /* file ID */
|
||||
#define EI_CLASS 4 /* file class */
|
||||
#define EI_DATA 5 /* data encoding */
|
||||
#define EI_VERSION 6 /* ELF header version */
|
||||
#define EI_OSABI 7 /* OS/ABI specific ELF extensions */
|
||||
#define EI_ABIVERSION 8 /* ABI target version */
|
||||
#define EI_PAD 9 /* start of pad bytes */
|
||||
#define EI_NIDENT 16 /* Size of e_ident[] */
|
||||
|
||||
/* e_ident[] magic number */
|
||||
#define ELFMAG0 0x7f /* e_ident[EI_MAG0] */
|
||||
#define ELFMAG1 'E' /* e_ident[EI_MAG1] */
|
||||
#define ELFMAG2 'L' /* e_ident[EI_MAG2] */
|
||||
#define ELFMAG3 'F' /* e_ident[EI_MAG3] */
|
||||
#define ELFMAG "\177ELF" /* magic */
|
||||
#define SELFMAG 4 /* size of magic */
|
||||
|
||||
/* e_ident[] file class */
|
||||
#define ELFCLASSNONE 0 /* invalid */
|
||||
#define ELFCLASS32 1 /* 32-bit objs */
|
||||
#define ELFCLASS64 2 /* 64-bit objs */
|
||||
#define ELFCLASSNUM 3 /* number of classes */
|
||||
|
||||
/* e_ident[] data encoding */
|
||||
#define ELFDATANONE 0 /* invalid */
|
||||
#define ELFDATA2LSB 1 /* Little-Endian */
|
||||
#define ELFDATA2MSB 2 /* Big-Endian */
|
||||
#define ELFDATANUM 3 /* number of data encode defines */
|
||||
|
||||
/* e_ident[] OS/ABI specific ELF extensions */
|
||||
#define ELFOSABI_NONE 0 /* No extension specified */
|
||||
#define ELFOSABI_HPUX 1 /* Hewlett-Packard HP-UX */
|
||||
#define ELFOSABI_NETBSD 2 /* NetBSD */
|
||||
#define ELFOSABI_LINUX 3 /* Linux */
|
||||
#define ELFOSABI_SOLARIS 6 /* Sun Solaris */
|
||||
#define ELFOSABI_AIX 7 /* AIX */
|
||||
#define ELFOSABI_IRIX 8 /* IRIX */
|
||||
#define ELFOSABI_FREEBSD 9 /* FreeBSD */
|
||||
#define ELFOSABI_TRU64 10 /* Compaq TRU64 UNIX */
|
||||
#define ELFOSABI_MODESTO 11 /* Novell Modesto */
|
||||
#define ELFOSABI_OPENBSD 12 /* OpenBSD */
|
||||
/* 64-255 Architecture-specific value range */
|
||||
|
||||
/* e_ident[] ABI Version */
|
||||
#define ELFABIVERSION 0
|
||||
|
||||
/* e_ident */
|
||||
#define IS_ELF(ehdr) ((ehdr).e_ident[EI_MAG0] == ELFMAG0 && \
|
||||
(ehdr).e_ident[EI_MAG1] == ELFMAG1 && \
|
||||
(ehdr).e_ident[EI_MAG2] == ELFMAG2 && \
|
||||
(ehdr).e_ident[EI_MAG3] == ELFMAG3)
|
||||
|
||||
/* ELF Header */
|
||||
typedef struct elfhdr{
|
||||
unsigned char e_ident[EI_NIDENT]; /* ELF Identification */
|
||||
Elf32_Half e_type; /* object file type */
|
||||
Elf32_Half e_machine; /* machine */
|
||||
Elf32_Word e_version; /* object file version */
|
||||
Elf32_Addr e_entry; /* virtual entry point */
|
||||
Elf32_Off e_phoff; /* program header table offset */
|
||||
Elf32_Off e_shoff; /* section header table offset */
|
||||
Elf32_Word e_flags; /* processor-specific flags */
|
||||
Elf32_Half e_ehsize; /* ELF header size */
|
||||
Elf32_Half e_phentsize; /* program header entry size */
|
||||
Elf32_Half e_phnum; /* number of program header entries */
|
||||
Elf32_Half e_shentsize; /* section header entry size */
|
||||
Elf32_Half e_shnum; /* number of section header entries */
|
||||
Elf32_Half e_shstrndx; /* section header table's "section
|
||||
header string table" entry offset */
|
||||
} Elf32_Ehdr;
|
||||
|
||||
/* e_type */
|
||||
#define ET_NONE 0 /* No file type */
|
||||
#define ET_REL 1 /* relocatable file */
|
||||
#define ET_EXEC 2 /* executable file */
|
||||
#define ET_DYN 3 /* shared object file */
|
||||
#define ET_CORE 4 /* core file */
|
||||
#define ET_NUM 5 /* number of types */
|
||||
#define ET_LOOS 0xfe00 /* reserved range for operating */
|
||||
#define ET_HIOS 0xfeff /* system specific e_type */
|
||||
#define ET_LOPROC 0xff00 /* reserved range for processor */
|
||||
#define ET_HIPROC 0xffff /* specific e_type */
|
||||
|
||||
/* e_machine */
|
||||
#define EM_NONE 0 /* No Machine */
|
||||
#define EM_M32 1 /* AT&T WE 32100 */
|
||||
#define EM_SPARC 2 /* SPARC */
|
||||
#define EM_386 3 /* Intel 80386 */
|
||||
#define EM_68K 4 /* Motorola 68000 */
|
||||
#define EM_88K 5 /* Motorola 88000 */
|
||||
#if 0
|
||||
#define EM_486 6 /* RESERVED - was Intel 80486 */
|
||||
#endif
|
||||
#define EM_860 7 /* Intel 80860 */
|
||||
#define EM_MIPS 8 /* MIPS R3000 Big-Endian only */
|
||||
#define EM_S370 9 /* IBM System/370 Processor */
|
||||
#define EM_MIPS_RS4_BE 10 /* MIPS R4000 Big-Endian */
|
||||
#if 0
|
||||
#define EM_SPARC64 11 /* RESERVED - was SPARC v9
|
||||
64-bit unoffical */
|
||||
#endif
|
||||
/* RESERVED 11-14 for future use */
|
||||
#define EM_PARISC 15 /* HPPA */
|
||||
/* RESERVED 16 for future use */
|
||||
#define EM_VPP500 17 /* Fujitsu VPP500 */
|
||||
#define EM_SPARC32PLUS 18 /* Enhanced instruction set SPARC */
|
||||
#define EM_960 19 /* Intel 80960 */
|
||||
#define EM_PPC 20 /* PowerPC */
|
||||
#define EM_PPC64 21 /* 64-bit PowerPC */
|
||||
#define EM_S390 22 /* IBM System/390 Processor */
|
||||
/* RESERVED 23-35 for future use */
|
||||
#define EM_V800 36 /* NEC V800 */
|
||||
#define EM_FR20 37 /* Fujitsu FR20 */
|
||||
#define EM_RH32 38 /* TRW RH-32 */
|
||||
#define EM_RCE 39 /* Motorola RCE */
|
||||
#define EM_ARM 40 /* Advanced Risc Machines ARM */
|
||||
#define EM_ALPHA 41 /* Digital Alpha */
|
||||
#define EM_SH 42 /* Hitachi SH */
|
||||
#define EM_SPARCV9 43 /* SPARC Version 9 */
|
||||
#define EM_TRICORE 44 /* Siemens TriCore embedded processor */
|
||||
#define EM_ARC 45 /* Argonaut RISC Core */
|
||||
#define EM_H8_300 46 /* Hitachi H8/300 */
|
||||
#define EM_H8_300H 47 /* Hitachi H8/300H */
|
||||
#define EM_H8S 48 /* Hitachi H8S */
|
||||
#define EM_H8_500 49 /* Hitachi H8/500 */
|
||||
#define EM_IA_64 50 /* Intel Merced */
|
||||
#define EM_MIPS_X 51 /* Stanford MIPS-X */
|
||||
#define EM_COLDFIRE 52 /* Motorola Coldfire */
|
||||
#define EM_68HC12 53 /* Motorola M68HC12 */
|
||||
#define EM_MMA 54 /* Fujitsu MMA Multimedia Accelerator*/
|
||||
#define EM_PCP 55 /* Siemens PCP */
|
||||
#define EM_NCPU 56 /* Sony nCPU embeeded RISC */
|
||||
#define EM_NDR1 57 /* Denso NDR1 microprocessor */
|
||||
#define EM_STARCORE 58 /* Motorola Start*Core processor */
|
||||
#define EM_ME16 59 /* Toyota ME16 processor */
|
||||
#define EM_ST100 60 /* STMicroelectronic ST100 processor */
|
||||
#define EM_TINYJ 61 /* Advanced Logic Corp. Tinyj emb.fam*/
|
||||
#define EM_X86_64 62 /* AMD x86-64 */
|
||||
#define EM_PDSP 63 /* Sony DSP Processor */
|
||||
/* RESERVED 64,65 for future use */
|
||||
#define EM_FX66 66 /* Siemens FX66 microcontroller */
|
||||
#define EM_ST9PLUS 67 /* STMicroelectronics ST9+ 8/16 mc */
|
||||
#define EM_ST7 68 /* STmicroelectronics ST7 8 bit mc */
|
||||
#define EM_68HC16 69 /* Motorola MC68HC16 microcontroller */
|
||||
#define EM_68HC11 70 /* Motorola MC68HC11 microcontroller */
|
||||
#define EM_68HC08 71 /* Motorola MC68HC08 microcontroller */
|
||||
#define EM_68HC05 72 /* Motorola MC68HC05 microcontroller */
|
||||
#define EM_SVX 73 /* Silicon Graphics SVx */
|
||||
#define EM_ST19 74 /* STMicroelectronics ST19 8 bit mc */
|
||||
#define EM_VAX 75 /* Digital VAX */
|
||||
#define EM_CHRIS 76 /* Axis Communications embedded proc. */
|
||||
#define EM_JAVELIN 77 /* Infineon Technologies emb. proc. */
|
||||
#define EM_FIREPATH 78 /* Element 14 64-bit DSP Processor */
|
||||
#define EM_ZSP 79 /* LSI Logic 16-bit DSP Processor */
|
||||
#define EM_MMIX 80 /* Donald Knuth's edu 64-bit proc. */
|
||||
#define EM_HUANY 81 /* Harvard University mach-indep objs */
|
||||
#define EM_PRISM 82 /* SiTera Prism */
|
||||
#define EM_AVR 83 /* Atmel AVR 8-bit microcontroller */
|
||||
#define EM_FR30 84 /* Fujitsu FR30 */
|
||||
#define EM_D10V 85 /* Mitsubishi DV10V */
|
||||
#define EM_D30V 86 /* Mitsubishi DV30V */
|
||||
#define EM_V850 87 /* NEC v850 */
|
||||
#define EM_M32R 88 /* Mitsubishi M32R */
|
||||
#define EM_MN10300 89 /* Matsushita MN10200 */
|
||||
#define EM_MN10200 90 /* Matsushita MN10200 */
|
||||
#define EM_PJ 91 /* picoJava */
|
||||
#define EM_NUM 92 /* number of machine types */
|
||||
|
||||
/* Version */
|
||||
#define EV_NONE 0 /* Invalid */
|
||||
#define EV_CURRENT 1 /* Current */
|
||||
#define EV_NUM 2 /* number of versions */
|
||||
|
||||
/* Section Header */
|
||||
typedef struct {
|
||||
Elf32_Word sh_name; /* name - index into section header
|
||||
string table section */
|
||||
Elf32_Word sh_type; /* type */
|
||||
Elf32_Word sh_flags; /* flags */
|
||||
Elf32_Addr sh_addr; /* address */
|
||||
Elf32_Off sh_offset; /* file offset */
|
||||
Elf32_Word sh_size; /* section size */
|
||||
Elf32_Word sh_link; /* section header table index link */
|
||||
Elf32_Word sh_info; /* extra information */
|
||||
Elf32_Word sh_addralign; /* address alignment */
|
||||
Elf32_Word sh_entsize; /* section entry size */
|
||||
} Elf32_Shdr;
|
||||
|
||||
/* Special Section Indexes */
|
||||
#define SHN_UNDEF 0 /* undefined */
|
||||
#define SHN_LORESERVE 0xff00 /* lower bounds of reserved indexes */
|
||||
#define SHN_LOPROC 0xff00 /* reserved range for processor */
|
||||
#define SHN_HIPROC 0xff1f /* specific section indexes */
|
||||
#define SHN_LOOS 0xff20 /* reserved range for operating */
|
||||
#define SHN_HIOS 0xff3f /* specific semantics */
|
||||
#define SHN_ABS 0xfff1 /* absolute value */
|
||||
#define SHN_COMMON 0xfff2 /* common symbol */
|
||||
#define SHN_XINDEX 0xffff /* Index is an extra table */
|
||||
#define SHN_HIRESERVE 0xffff /* upper bounds of reserved indexes */
|
||||
|
||||
/* sh_type */
|
||||
#define SHT_NULL 0 /* inactive */
|
||||
#define SHT_PROGBITS 1 /* program defined information */
|
||||
#define SHT_SYMTAB 2 /* symbol table section */
|
||||
#define SHT_STRTAB 3 /* string table section */
|
||||
#define SHT_RELA 4 /* relocation section with addends*/
|
||||
#define SHT_HASH 5 /* symbol hash table section */
|
||||
#define SHT_DYNAMIC 6 /* dynamic section */
|
||||
#define SHT_NOTE 7 /* note section */
|
||||
#define SHT_NOBITS 8 /* no space section */
|
||||
#define SHT_REL 9 /* relation section without addends */
|
||||
#define SHT_SHLIB 10 /* reserved - purpose unknown */
|
||||
#define SHT_DYNSYM 11 /* dynamic symbol table section */
|
||||
#define SHT_INIT_ARRAY 14 /* Array of constructors */
|
||||
#define SHT_FINI_ARRAY 15 /* Array of destructors */
|
||||
#define SHT_PREINIT_ARRAY 16 /* Array of pre-constructors */
|
||||
#define SHT_GROUP 17 /* Section group */
|
||||
#define SHT_SYMTAB_SHNDX 18 /* Extended section indeces */
|
||||
#define SHT_NUM 19 /* number of section types */
|
||||
#define SHT_LOOS 0x60000000 /* Start OS-specific */
|
||||
#define SHT_HIOS 0x6fffffff /* End OS-specific */
|
||||
#define SHT_LOPROC 0x70000000 /* reserved range for processor */
|
||||
#define SHT_HIPROC 0x7fffffff /* specific section header types */
|
||||
#define SHT_LOUSER 0x80000000 /* reserved range for application */
|
||||
#define SHT_HIUSER 0xffffffff /* specific indexes */
|
||||
|
||||
/* Section names */
|
||||
#define ELF_BSS ".bss" /* uninitialized data */
|
||||
#define ELF_COMMENT ".comment" /* version control information */
|
||||
#define ELF_DATA ".data" /* initialized data */
|
||||
#define ELF_DATA1 ".data1" /* initialized data */
|
||||
#define ELF_DEBUG ".debug" /* debug */
|
||||
#define ELF_DYNAMIC ".dynamic" /* dynamic linking information */
|
||||
#define ELF_DYNSTR ".dynstr" /* dynamic string table */
|
||||
#define ELF_DYNSYM ".dynsym" /* dynamic symbol table */
|
||||
#define ELF_FINI ".fini" /* termination code */
|
||||
#define ELF_FINI_ARRAY ".fini_array" /* Array of destructors */
|
||||
#define ELF_GOT ".got" /* global offset table */
|
||||
#define ELF_HASH ".hash" /* symbol hash table */
|
||||
#define ELF_INIT ".init" /* initialization code */
|
||||
#define ELF_INIT_ARRAY ".init_array" /* Array of constuctors */
|
||||
#define ELF_INTERP ".interp" /* Pathname of program interpreter */
|
||||
#define ELF_LINE ".line" /* Symbolic line numnber information */
|
||||
#define ELF_NOTE ".note" /* Contains note section */
|
||||
#define ELF_PLT ".plt" /* Procedure linkage table */
|
||||
#define ELF_PREINIT_ARRAY ".preinit_array" /* Array of pre-constructors */
|
||||
#define ELF_REL_DATA ".rel.data" /* relocation data */
|
||||
#define ELF_REL_FINI ".rel.fini" /* relocation termination code */
|
||||
#define ELF_REL_INIT ".rel.init" /* relocation initialization code */
|
||||
#define ELF_REL_DYN ".rel.dyn" /* relocaltion dynamic link info */
|
||||
#define ELF_REL_RODATA ".rel.rodata" /* relocation read-only data */
|
||||
#define ELF_REL_TEXT ".rel.text" /* relocation code */
|
||||
#define ELF_RODATA ".rodata" /* read-only data */
|
||||
#define ELF_RODATA1 ".rodata1" /* read-only data */
|
||||
#define ELF_SHSTRTAB ".shstrtab" /* section header string table */
|
||||
#define ELF_STRTAB ".strtab" /* string table */
|
||||
#define ELF_SYMTAB ".symtab" /* symbol table */
|
||||
#define ELF_SYMTAB_SHNDX ".symtab_shndx"/* symbol table section index */
|
||||
#define ELF_TBSS ".tbss" /* thread local uninit data */
|
||||
#define ELF_TDATA ".tdata" /* thread local init data */
|
||||
#define ELF_TDATA1 ".tdata1" /* thread local init data */
|
||||
#define ELF_TEXT ".text" /* code */
|
||||
|
||||
/* Section Attribute Flags - sh_flags */
|
||||
#define SHF_WRITE 0x1 /* Writable */
|
||||
#define SHF_ALLOC 0x2 /* occupies memory */
|
||||
#define SHF_EXECINSTR 0x4 /* executable */
|
||||
#define SHF_MERGE 0x10 /* Might be merged */
|
||||
#define SHF_STRINGS 0x20 /* Contains NULL terminated strings */
|
||||
#define SHF_INFO_LINK 0x40 /* sh_info contains SHT index */
|
||||
#define SHF_LINK_ORDER 0x80 /* Preserve order after combining*/
|
||||
#define SHF_OS_NONCONFORMING 0x100 /* Non-standard OS specific handling */
|
||||
#define SHF_GROUP 0x200 /* Member of section group */
|
||||
#define SHF_TLS 0x400 /* Thread local storage */
|
||||
#define SHF_MASKOS 0x0ff00000 /* OS specific */
|
||||
#define SHF_MASKPROC 0xf0000000 /* reserved bits for processor */
|
||||
/* specific section attributes */
|
||||
|
||||
/* Section Group Flags */
|
||||
#define GRP_COMDAT 0x1 /* COMDAT group */
|
||||
#define GRP_MASKOS 0x0ff00000 /* Mask OS specific flags */
|
||||
#define GRP_MASKPROC 0xf0000000 /* Mask processor specific flags */
|
||||
|
||||
/* Symbol Table Entry */
|
||||
typedef struct elf32_sym {
|
||||
Elf32_Word st_name; /* name - index into string table */
|
||||
Elf32_Addr st_value; /* symbol value */
|
||||
Elf32_Word st_size; /* symbol size */
|
||||
unsigned char st_info; /* type and binding */
|
||||
unsigned char st_other; /* 0 - no defined meaning */
|
||||
Elf32_Half st_shndx; /* section header index */
|
||||
} Elf32_Sym;
|
||||
|
||||
/* Symbol table index */
|
||||
#define STN_UNDEF 0 /* undefined */
|
||||
|
||||
/* Extract symbol info - st_info */
|
||||
#define ELF32_ST_BIND(x) ((x) >> 4)
|
||||
#define ELF32_ST_TYPE(x) (((unsigned int) x) & 0xf)
|
||||
#define ELF32_ST_INFO(b,t) (((b) << 4) + ((t) & 0xf))
|
||||
#define ELF32_ST_VISIBILITY(x) ((x) & 0x3)
|
||||
|
||||
/* Symbol Binding - ELF32_ST_BIND - st_info */
|
||||
#define STB_LOCAL 0 /* Local symbol */
|
||||
#define STB_GLOBAL 1 /* Global symbol */
|
||||
#define STB_WEAK 2 /* like global - lower precedence */
|
||||
#define STB_NUM 3 /* number of symbol bindings */
|
||||
#define STB_LOOS 10 /* reserved range for operating */
|
||||
#define STB_HIOS 12 /* system specific symbol bindings */
|
||||
#define STB_LOPROC 13 /* reserved range for processor */
|
||||
#define STB_HIPROC 15 /* specific symbol bindings */
|
||||
|
||||
/* Symbol type - ELF32_ST_TYPE - st_info */
|
||||
#define STT_NOTYPE 0 /* not specified */
|
||||
#define STT_OBJECT 1 /* data object */
|
||||
#define STT_FUNC 2 /* function */
|
||||
#define STT_SECTION 3 /* section */
|
||||
#define STT_FILE 4 /* file */
|
||||
#define STT_NUM 5 /* number of symbol types */
|
||||
#define STT_TLS 6 /* Thread local storage symbol */
|
||||
#define STT_LOOS 10 /* reserved range for operating */
|
||||
#define STT_HIOS 12 /* system specific symbol types */
|
||||
#define STT_LOPROC 13 /* reserved range for processor */
|
||||
#define STT_HIPROC 15 /* specific symbol types */
|
||||
|
||||
/* Symbol visibility - ELF32_ST_VISIBILITY - st_other */
|
||||
#define STV_DEFAULT 0 /* Normal visibility rules */
|
||||
#define STV_INTERNAL 1 /* Processor specific hidden class */
|
||||
#define STV_HIDDEN 2 /* Symbol unavailable in other mods */
|
||||
#define STV_PROTECTED 3 /* Not preemptible, not exported */
|
||||
|
||||
|
||||
/* Relocation entry with implicit addend */
|
||||
typedef struct
|
||||
{
|
||||
Elf32_Addr r_offset; /* offset of relocation */
|
||||
Elf32_Word r_info; /* symbol table index and type */
|
||||
} Elf32_Rel;
|
||||
|
||||
/* Relocation entry with explicit addend */
|
||||
typedef struct
|
||||
{
|
||||
Elf32_Addr r_offset; /* offset of relocation */
|
||||
Elf32_Word r_info; /* symbol table index and type */
|
||||
Elf32_Sword r_addend;
|
||||
} Elf32_Rela;
|
||||
|
||||
/* Extract relocation info - r_info */
|
||||
#define ELF32_R_SYM(i) ((i) >> 8)
|
||||
#define ELF32_R_TYPE(i) ((unsigned char) (i))
|
||||
#define ELF32_R_INFO(s,t) (((s) << 8) + (unsigned char)(t))
|
||||
|
||||
/* Program Header */
|
||||
typedef struct {
|
||||
Elf32_Word p_type; /* segment type */
|
||||
Elf32_Off p_offset; /* segment offset */
|
||||
Elf32_Addr p_vaddr; /* virtual address of segment */
|
||||
Elf32_Addr p_paddr; /* physical address - ignored? */
|
||||
Elf32_Word p_filesz; /* number of bytes in file for seg. */
|
||||
Elf32_Word p_memsz; /* number of bytes in mem. for seg. */
|
||||
Elf32_Word p_flags; /* flags */
|
||||
Elf32_Word p_align; /* memory alignment */
|
||||
} Elf32_Phdr;
|
||||
|
||||
/* Segment types - p_type */
|
||||
#define PT_NULL 0 /* unused */
|
||||
#define PT_LOAD 1 /* loadable segment */
|
||||
#define PT_DYNAMIC 2 /* dynamic linking section */
|
||||
#define PT_INTERP 3 /* the RTLD */
|
||||
#define PT_NOTE 4 /* auxiliary information */
|
||||
#define PT_SHLIB 5 /* reserved - purpose undefined */
|
||||
#define PT_PHDR 6 /* program header */
|
||||
#define PT_TLS 7 /* Thread local storage template */
|
||||
#define PT_NUM 8 /* Number of segment types */
|
||||
#define PT_LOOS 0x60000000 /* reserved range for operating */
|
||||
#define PT_HIOS 0x6fffffff /* system specific segment types */
|
||||
#define PT_LOPROC 0x70000000 /* reserved range for processor */
|
||||
#define PT_HIPROC 0x7fffffff /* specific segment types */
|
||||
|
||||
/* Segment flags - p_flags */
|
||||
#define PF_X 0x1 /* Executable */
|
||||
#define PF_W 0x2 /* Writable */
|
||||
#define PF_R 0x4 /* Readable */
|
||||
#define PF_MASKOS 0x0ff00000 /* OS specific segment flags */
|
||||
#define PF_MASKPROC 0xf0000000 /* reserved bits for processor */
|
||||
/* specific segment flags */
|
||||
/* Dynamic structure */
|
||||
typedef struct
|
||||
{
|
||||
Elf32_Sword d_tag; /* controls meaning of d_val */
|
||||
union
|
||||
{
|
||||
Elf32_Word d_val; /* Multiple meanings - see d_tag */
|
||||
Elf32_Addr d_ptr; /* program virtual address */
|
||||
} d_un;
|
||||
} Elf32_Dyn;
|
||||
|
||||
extern Elf32_Dyn _DYNAMIC[];
|
||||
|
||||
/* Dynamic Array Tags - d_tag */
|
||||
#define DT_NULL 0 /* marks end of _DYNAMIC array */
|
||||
#define DT_NEEDED 1 /* string table offset of needed lib */
|
||||
#define DT_PLTRELSZ 2 /* size of relocation entries in PLT */
|
||||
#define DT_PLTGOT 3 /* address PLT/GOT */
|
||||
#define DT_HASH 4 /* address of symbol hash table */
|
||||
#define DT_STRTAB 5 /* address of string table */
|
||||
#define DT_SYMTAB 6 /* address of symbol table */
|
||||
#define DT_RELA 7 /* address of relocation table */
|
||||
#define DT_RELASZ 8 /* size of relocation table */
|
||||
#define DT_RELAENT 9 /* size of relocation entry */
|
||||
#define DT_STRSZ 10 /* size of string table */
|
||||
#define DT_SYMENT 11 /* size of symbol table entry */
|
||||
#define DT_INIT 12 /* address of initialization func. */
|
||||
#define DT_FINI 13 /* address of termination function */
|
||||
#define DT_SONAME 14 /* string table offset of shared obj */
|
||||
#define DT_RPATH 15 /* string table offset of library
|
||||
search path */
|
||||
#define DT_SYMBOLIC 16 /* start sym search in shared obj. */
|
||||
#define DT_REL 17 /* address of rel. tbl. w addends */
|
||||
#define DT_RELSZ 18 /* size of DT_REL relocation table */
|
||||
#define DT_RELENT 19 /* size of DT_REL relocation entry */
|
||||
#define DT_PLTREL 20 /* PLT referenced relocation entry */
|
||||
#define DT_DEBUG 21 /* bugger */
|
||||
#define DT_TEXTREL 22 /* Allow rel. mod. to unwritable seg */
|
||||
#define DT_JMPREL 23 /* add. of PLT's relocation entries */
|
||||
#define DT_BIND_NOW 24 /* Process relocations of object */
|
||||
#define DT_INIT_ARRAY 25 /* Array with addresses of init fct */
|
||||
#define DT_FINI_ARRAY 26 /* Array with addresses of fini fct */
|
||||
#define DT_INIT_ARRAYSZ 27 /* Size in bytes of DT_INIT_ARRAY */
|
||||
#define DT_FINI_ARRAYSZ 28 /* Size in bytes of DT_FINI_ARRAY */
|
||||
#define DT_RUNPATH 29 /* Library search path */
|
||||
#define DT_FLAGS 30 /* Flags for the object being loaded */
|
||||
#define DT_ENCODING 32 /* Start of encoded range */
|
||||
#define DT_PREINIT_ARRAY 32 /* Array with addresses of preinit fct*/
|
||||
#define DT_PREINIT_ARRAYSZ 33 /* size in bytes of DT_PREINIT_ARRAY */
|
||||
#define DT_NUM 34 /* Number used. */
|
||||
#define DT_LOOS 0x60000000 /* reserved range for OS */
|
||||
#define DT_HIOS 0x6fffffff /* specific dynamic array tags */
|
||||
#define DT_LOPROC 0x70000000 /* reserved range for processor */
|
||||
#define DT_HIPROC 0x7fffffff /* specific dynamic array tags */
|
||||
|
||||
/* Dynamic Tag Flags - d_un.d_val */
|
||||
#define DF_ORIGIN 0x01 /* Object may use DF_ORIGIN */
|
||||
#define DF_SYMBOLIC 0x02 /* Symbol resolutions starts here */
|
||||
#define DF_TEXTREL 0x04 /* Object contains text relocations */
|
||||
#define DF_BIND_NOW 0x08 /* No lazy binding for this object */
|
||||
#define DF_STATIC_TLS 0x10 /* Static thread local storage */
|
||||
|
||||
/* Standard ELF hashing function */
|
||||
unsigned long elf_hash(const unsigned char *name);
|
||||
|
||||
#define ELF_TARG_VER 1 /* The ver for which this code is intended */
|
||||
|
||||
/*
|
||||
* XXX - PowerPC defines really don't belong in here,
|
||||
* but we'll put them in for simplicity.
|
||||
*/
|
||||
|
||||
/* Values for Elf32/64_Ehdr.e_flags. */
|
||||
#define EF_PPC_EMB 0x80000000 /* PowerPC embedded flag */
|
||||
|
||||
/* Cygnus local bits below */
|
||||
#define EF_PPC_RELOCATABLE 0x00010000 /* PowerPC -mrelocatable flag*/
|
||||
#define EF_PPC_RELOCATABLE_LIB 0x00008000 /* PowerPC -mrelocatable-lib
|
||||
flag */
|
||||
|
||||
/* PowerPC relocations defined by the ABIs */
|
||||
#define R_PPC_NONE 0
|
||||
#define R_PPC_ADDR32 1 /* 32bit absolute address */
|
||||
#define R_PPC_ADDR24 2 /* 26bit address, 2 bits ignored. */
|
||||
#define R_PPC_ADDR16 3 /* 16bit absolute address */
|
||||
#define R_PPC_ADDR16_LO 4 /* lower 16bit of absolute address */
|
||||
#define R_PPC_ADDR16_HI 5 /* high 16bit of absolute address */
|
||||
#define R_PPC_ADDR16_HA 6 /* adjusted high 16bit */
|
||||
#define R_PPC_ADDR14 7 /* 16bit address, 2 bits ignored */
|
||||
#define R_PPC_ADDR14_BRTAKEN 8
|
||||
#define R_PPC_ADDR14_BRNTAKEN 9
|
||||
#define R_PPC_REL24 10 /* PC relative 26 bit */
|
||||
#define R_PPC_REL14 11 /* PC relative 16 bit */
|
||||
#define R_PPC_REL14_BRTAKEN 12
|
||||
#define R_PPC_REL14_BRNTAKEN 13
|
||||
#define R_PPC_GOT16 14
|
||||
#define R_PPC_GOT16_LO 15
|
||||
#define R_PPC_GOT16_HI 16
|
||||
#define R_PPC_GOT16_HA 17
|
||||
#define R_PPC_PLTREL24 18
|
||||
#define R_PPC_COPY 19
|
||||
#define R_PPC_GLOB_DAT 20
|
||||
#define R_PPC_JMP_SLOT 21
|
||||
#define R_PPC_RELATIVE 22
|
||||
#define R_PPC_LOCAL24PC 23
|
||||
#define R_PPC_UADDR32 24
|
||||
#define R_PPC_UADDR16 25
|
||||
#define R_PPC_REL32 26
|
||||
#define R_PPC_PLT32 27
|
||||
#define R_PPC_PLTREL32 28
|
||||
#define R_PPC_PLT16_LO 29
|
||||
#define R_PPC_PLT16_HI 30
|
||||
#define R_PPC_PLT16_HA 31
|
||||
#define R_PPC_SDAREL16 32
|
||||
#define R_PPC_SECTOFF 33
|
||||
#define R_PPC_SECTOFF_LO 34
|
||||
#define R_PPC_SECTOFF_HI 35
|
||||
#define R_PPC_SECTOFF_HA 36
|
||||
/* Keep this the last entry. */
|
||||
#define R_PPC_NUM 37
|
||||
|
||||
/* The remaining relocs are from the Embedded ELF ABI, and are not
|
||||
in the SVR4 ELF ABI. */
|
||||
#define R_PPC_EMB_NADDR32 101
|
||||
#define R_PPC_EMB_NADDR16 102
|
||||
#define R_PPC_EMB_NADDR16_LO 103
|
||||
#define R_PPC_EMB_NADDR16_HI 104
|
||||
#define R_PPC_EMB_NADDR16_HA 105
|
||||
#define R_PPC_EMB_SDAI16 106
|
||||
#define R_PPC_EMB_SDA2I16 107
|
||||
#define R_PPC_EMB_SDA2REL 108
|
||||
#define R_PPC_EMB_SDA21 109 /* 16 bit offset in SDA */
|
||||
#define R_PPC_EMB_MRKREF 110
|
||||
#define R_PPC_EMB_RELSEC16 111
|
||||
#define R_PPC_EMB_RELST_LO 112
|
||||
#define R_PPC_EMB_RELST_HI 113
|
||||
#define R_PPC_EMB_RELST_HA 114
|
||||
#define R_PPC_EMB_BIT_FLD 115
|
||||
#define R_PPC_EMB_RELSDA 116 /* 16 bit relative offset in SDA */
|
||||
|
||||
/* Diab tool relocations. */
|
||||
#define R_PPC_DIAB_SDA21_LO 180 /* like EMB_SDA21, but lower 16 bit */
|
||||
#define R_PPC_DIAB_SDA21_HI 181 /* like EMB_SDA21, but high 16 bit */
|
||||
#define R_PPC_DIAB_SDA21_HA 182 /* like EMB_SDA21, adjusted high 16 */
|
||||
#define R_PPC_DIAB_RELSDA_LO 183 /* like EMB_RELSDA, but lower 16 bit */
|
||||
#define R_PPC_DIAB_RELSDA_HI 184 /* like EMB_RELSDA, but high 16 bit */
|
||||
#define R_PPC_DIAB_RELSDA_HA 185 /* like EMB_RELSDA, adjusted high 16 */
|
||||
|
||||
/* This is a phony reloc to handle any old fashioned TOC16 references
|
||||
that may still be in object files. */
|
||||
#define R_PPC_TOC16 255
|
||||
|
||||
#endif /* _ELF_H */
|
||||
|
103
source/elfloader.c
Normal file
@ -0,0 +1,103 @@
|
||||
/*
|
||||
* Copyright (c) 2001 William L. Pitts
|
||||
* Modifications (c) 2004 Felix Domke
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms are freely
|
||||
* permitted provided that the above copyright notice and this
|
||||
* paragraph and the following disclaimer are duplicated in all
|
||||
* such forms.
|
||||
*
|
||||
* This software is provided "AS IS" and without any express or
|
||||
* implied warranties, including, without limitation, the implied
|
||||
* warranties of merchantability and fitness for a particular
|
||||
* purpose.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <gccore.h>
|
||||
|
||||
#include "elf_abi.h"
|
||||
|
||||
/* ======================================================================
|
||||
* Determine if a valid ELF image exists at the given memory location.
|
||||
* First looks at the ELF header magic field, the makes sure that it is
|
||||
* executable and makes sure that it is for a PowerPC.
|
||||
* ====================================================================== */
|
||||
s32 valid_elf_image (void *addr)
|
||||
{
|
||||
Elf32_Ehdr *ehdr; /* Elf header structure pointer */
|
||||
|
||||
ehdr = (Elf32_Ehdr *) addr;
|
||||
|
||||
if (!IS_ELF (*ehdr))
|
||||
return 0;
|
||||
|
||||
if (ehdr->e_type != ET_EXEC)
|
||||
return -1;
|
||||
|
||||
if (ehdr->e_machine != EM_PPC)
|
||||
return -1;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
/* ======================================================================
|
||||
* A very simple elf loader, assumes the image is valid, returns the
|
||||
* entry point address.
|
||||
* ====================================================================== */
|
||||
u32 load_elf_image (void *addr)
|
||||
{
|
||||
Elf32_Ehdr *ehdr;
|
||||
Elf32_Shdr *shdr;
|
||||
u8 *strtab = 0;
|
||||
u8 *image;
|
||||
int i;
|
||||
|
||||
ehdr = (Elf32_Ehdr *) addr;
|
||||
/* Find the section header string table for output info */
|
||||
shdr = (Elf32_Shdr *) (addr + ehdr->e_shoff +
|
||||
(ehdr->e_shstrndx * sizeof (Elf32_Shdr)));
|
||||
|
||||
if (shdr->sh_type == SHT_STRTAB)
|
||||
strtab = (u8 *) (addr + shdr->sh_offset);
|
||||
|
||||
/* Load each appropriate section */
|
||||
for (i = 0; i < ehdr->e_shnum; ++i) {
|
||||
shdr = (Elf32_Shdr *) (addr + ehdr->e_shoff +
|
||||
(i * sizeof (Elf32_Shdr)));
|
||||
|
||||
if (!(shdr->sh_flags & SHF_ALLOC)
|
||||
|| shdr->sh_addr == 0 || shdr->sh_size == 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
shdr->sh_addr &= 0x3FFFFFFF;
|
||||
shdr->sh_addr |= 0x80000000;
|
||||
|
||||
if (strtab) {
|
||||
/*printf ("%sing section %s @ 0x%08x (0x%08x bytes)\n",
|
||||
(shdr->sh_type == SHT_NOBITS) ?
|
||||
"clear" : "load",
|
||||
&strtab[shdr->sh_name],
|
||||
(u32) shdr->sh_addr,
|
||||
(u32) shdr->sh_size);*/
|
||||
}
|
||||
|
||||
if (shdr->sh_type == SHT_NOBITS) {
|
||||
memset ((void *) shdr->sh_addr, 0, shdr->sh_size);
|
||||
} else {
|
||||
image = (u8 *) addr + shdr->sh_offset;
|
||||
memcpy ((void *) shdr->sh_addr,
|
||||
(const void *) image,
|
||||
shdr->sh_size);
|
||||
}
|
||||
DCFlushRangeNoSync ((void *) shdr->sh_addr, shdr->sh_size);
|
||||
}
|
||||
|
||||
return (ehdr->e_entry & 0x3FFFFFFF) | 0x80000000;
|
||||
}
|
||||
|
18
source/elfloader.h
Normal file
@ -0,0 +1,18 @@
|
||||
#ifndef _ELFLOADER_H_
|
||||
#define _ELFLOADER_H_
|
||||
|
||||
#include <wiiuse/wpad.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
s32 valid_elf_image (void *addr);
|
||||
u32 load_elf_image (void *addr);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
@ -1,57 +0,0 @@
|
||||
#include <fat.h>
|
||||
#include <sys/dir.h>
|
||||
#include <ogc/lwp_watchdog.h>
|
||||
#include <ogc/mutex.h>
|
||||
#include <ogc/system.h>
|
||||
#include <ogc/usbstorage.h>
|
||||
#include <sdcard/wiisd_io.h>
|
||||
|
||||
#define CACHE 1
|
||||
#define SECTORS 64
|
||||
|
||||
|
||||
int USBDevice_Init()
|
||||
{
|
||||
//right now only mounts first partition and only under IOS36
|
||||
__io_usbstorage.startup();
|
||||
|
||||
if (fatMount("USB", &__io_usbstorage, 0, CACHE, SECTORS)) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
void USBDevice_deInit()
|
||||
{
|
||||
//First unmount all the devs...
|
||||
fatUnmount("USB");
|
||||
//...and then shutdown em!
|
||||
__io_usbstorage.shutdown();
|
||||
}
|
||||
|
||||
int isSdInserted()
|
||||
{
|
||||
return __io_wiisd.isInserted();
|
||||
}
|
||||
|
||||
int SDCard_Init()
|
||||
{
|
||||
//mount SD if inserted
|
||||
__io_wiisd.startup();
|
||||
if (!isSdInserted()){
|
||||
return -1;
|
||||
}
|
||||
if (fatMount("SD", &__io_wiisd, 0, CACHE, SECTORS)) {
|
||||
return 1;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
void SDCard_deInit()
|
||||
{
|
||||
//First unmount all the devs...
|
||||
fatUnmount("SD:/");
|
||||
//...and then shutdown em!
|
||||
__io_wiisd.shutdown();
|
||||
}
|
@ -1,19 +0,0 @@
|
||||
#ifndef _FATMOUNTER_H_
|
||||
#define _FATMOUNTER_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
int USBDevice_Init();
|
||||
void USBDevice_deInit();
|
||||
int isSdInserted();
|
||||
int SDCard_Init();
|
||||
void SDCard_deInit();
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
@ -11,286 +11,7 @@
|
||||
|
||||
#include <gccore.h>
|
||||
|
||||
extern const u8 font_ttf[];
|
||||
extern const u32 font_ttf_size;
|
||||
|
||||
extern const u8 clock_ttf[];
|
||||
extern const u32 clock_ttf_size;
|
||||
|
||||
extern const u8 closebutton_png[];
|
||||
extern const u32 closebutton_png_size;
|
||||
|
||||
extern const u8 sdcard_png[];
|
||||
extern const u32 sdcard_png_size;
|
||||
|
||||
extern const u8 wiimote_png[];
|
||||
extern const u32 wiimote_png_size;
|
||||
|
||||
extern const u8 bg_music_ogg[];
|
||||
extern const u32 bg_music_ogg_size;
|
||||
|
||||
extern const u8 credits_music_ogg[];
|
||||
extern const u32 credits_music_ogg_size;
|
||||
|
||||
extern const u8 menuin_ogg[];
|
||||
extern const u32 menuin_ogg_size;
|
||||
|
||||
extern const u8 menuout_ogg[];
|
||||
extern const u32 menuout_ogg_size;
|
||||
|
||||
extern const u8 tab_bg1_png[];
|
||||
extern const u32 tab_bg1_png_size;
|
||||
|
||||
extern const u8 tab_bg2_png[];
|
||||
extern const u32 tab_bg2_png_size;
|
||||
|
||||
extern const u8 tab_bg3_png[];
|
||||
extern const u32 tab_bg3_png_size;
|
||||
|
||||
extern const u8 credits_button_png[];
|
||||
extern const u32 credits_button_png_size;
|
||||
|
||||
extern const u8 credits_button_over_png[];
|
||||
extern const u32 credits_button_over_png_size;
|
||||
|
||||
extern const u8 button_over_pcm[];
|
||||
extern const u32 button_over_pcm_size;
|
||||
|
||||
extern const u8 button_click_pcm[];
|
||||
extern const u32 button_click_pcm_size;
|
||||
|
||||
extern const u8 button_click2_pcm[];
|
||||
extern const u32 button_click2_pcm_size;
|
||||
|
||||
extern const u8 tooltip_left_png[];
|
||||
extern const u32 tooltip_left_png_size;
|
||||
|
||||
extern const u8 tooltip_tile_png[];
|
||||
extern const u32 tooltip_tile_png_size;
|
||||
|
||||
extern const u8 tooltip_right_png[];
|
||||
extern const u32 tooltip_right_png_size;
|
||||
|
||||
extern const u8 startgame_arrow_left_png[];
|
||||
extern const u32 startgame_arrow_left_png_size;
|
||||
|
||||
extern const u8 startgame_arrow_right_png[];
|
||||
extern const u32 startgame_arrow_right_png_size;
|
||||
|
||||
extern const u8 credits_bg_png[];
|
||||
extern const u32 credits_bg_png_size;
|
||||
|
||||
extern const u8 little_star_png[];
|
||||
extern const u32 little_star_png_size;
|
||||
|
||||
extern const u8 background_png[];
|
||||
extern const u32 background_png_size;
|
||||
|
||||
extern const u8 wbackground_png[];
|
||||
extern const u32 wbackground_png_size;
|
||||
|
||||
extern const u8 bg_options_settings_png[];
|
||||
extern const u32 bg_options_settings_png_size;
|
||||
|
||||
extern const u8 settings_background_png[];
|
||||
extern const u32 settings_background_png_size;
|
||||
|
||||
extern const u8 nocover_png[];
|
||||
extern const u32 nocover_png_size;
|
||||
|
||||
extern const u8 nodisc_png[];
|
||||
extern const u32 nodisc_png_size;
|
||||
|
||||
extern const u8 button_install_png[];
|
||||
extern const u32 button_install_png_size;
|
||||
|
||||
extern const u8 button_install_over_png[];
|
||||
extern const u32 button_install_over_png_size;
|
||||
|
||||
extern const u8 dialogue_box_startgame_png[];
|
||||
extern const u32 dialogue_box_startgame_png_size;
|
||||
|
||||
extern const u8 wdialogue_box_startgame_png[];
|
||||
extern const u32 wdialogue_box_startgame_png_size;
|
||||
|
||||
extern const u8 button_dialogue_box_startgame_png[];
|
||||
extern const u32 button_dialogue_box_startgame_size;
|
||||
|
||||
extern const u8 button_dialogue_box_png[];
|
||||
extern const u32 button_dialogue_box_size;
|
||||
|
||||
extern const u8 keyboard_textbox_png[];
|
||||
extern const u32 keyboard_textbox_png_size;
|
||||
|
||||
extern const u8 keyboard_key_png[];
|
||||
extern const u32 keyboard_key_png_size;
|
||||
|
||||
extern const u8 keyboard_key_over_png[];
|
||||
extern const u32 keyboard_key_over_png_size;
|
||||
|
||||
extern const u8 keyboard_mediumkey_over_png[];
|
||||
extern const u32 keyboard_mediumkey_over_png_size;
|
||||
|
||||
extern const u8 keyboard_largekey_over_png[];
|
||||
extern const u32 keyboard_largekey_over_png_size;
|
||||
|
||||
extern const u8 menu_button_png[];
|
||||
extern const u32 menu_button_size;
|
||||
|
||||
extern const u8 menu_button_over_png[];
|
||||
extern const u32 menu_button_over_size;
|
||||
|
||||
extern const u8 settings_button_png[];
|
||||
extern const u32 settings_button_size;
|
||||
|
||||
extern const u8 settings_button_over_png[];
|
||||
extern const u32 settings_button_over_size;
|
||||
|
||||
extern const u8 settings_menu_button_png[];
|
||||
extern const u32 settings_menu_button_size;
|
||||
|
||||
extern const u8 wiimote_poweroff_png[];
|
||||
extern const u32 wiimote_poweroff_png_size;
|
||||
|
||||
extern const u8 dialogue_box_png[];
|
||||
extern const u32 dialogue_box_png_size;
|
||||
|
||||
extern const u8 wiimote_poweroff_over_png[];
|
||||
extern const u32 wiimote_poweroff_over_png_size;
|
||||
|
||||
extern const u8 bg_options_png[];
|
||||
extern const u32 bg_options_png_size;
|
||||
|
||||
extern const u8 bg_options_entry_png[];
|
||||
extern const u32 bg_options_entry_png_size;
|
||||
|
||||
extern const u8 scrollbar_png[];
|
||||
extern const u32 scrollbar_png_size;
|
||||
|
||||
extern const u8 scrollbar_arrowup_png[];
|
||||
extern const u32 scrollbar_arrowup_png_size;
|
||||
|
||||
extern const u8 scrollbar_arrowup_over_png[];
|
||||
extern const u32 scrollbar_arrowup_over_png_size;
|
||||
|
||||
extern const u8 scrollbar_arrowdown_png[];
|
||||
extern const u32 scrollbar_arrowdown_png_size;
|
||||
|
||||
extern const u8 scrollbar_arrowdown_over_png[];
|
||||
extern const u32 scrollbar_arrowdown_over_png_size;
|
||||
|
||||
extern const u8 scrollbar_box_png[];
|
||||
extern const u32 scrollbar_box_png_size;
|
||||
|
||||
extern const u8 scrollbar_box_over_png[];
|
||||
extern const u32 scrollbar_box_over_png_size;
|
||||
|
||||
extern const u8 progressbar_png[];
|
||||
extern const u32 progressbar_png_size;
|
||||
|
||||
extern const u8 progressbar_empty_png[];
|
||||
extern const u32 progressbar_empty_png_size;
|
||||
|
||||
extern const u8 progressbar_outline_png[];
|
||||
extern const u32 progressbar_outline_png_size;
|
||||
|
||||
extern const u8 player1_point_png[];
|
||||
extern const u32 player1_point_png_size;
|
||||
|
||||
extern const u8 player2_point_png[];
|
||||
extern const u32 player2_point_png_size;
|
||||
|
||||
extern const u8 player3_point_png[];
|
||||
extern const u32 player3_point_png_size;
|
||||
|
||||
extern const u8 player4_point_png[];
|
||||
extern const u32 player4_point_png_size;
|
||||
|
||||
extern const u8 battery_png[];
|
||||
extern const u32 battery_png_size;
|
||||
|
||||
extern const u8 battery_bar_png[];
|
||||
extern const u32 battery_bar_png_size;
|
||||
|
||||
extern const u8 battery_white_png[];
|
||||
extern const u32 battery_white_png_size;
|
||||
|
||||
extern const u8 battery_bar_white_png[];
|
||||
extern const u32 battery_bar_white_png_size;
|
||||
|
||||
extern const u8 battery_red_png[];
|
||||
extern const u32 battery_red_png_size;
|
||||
|
||||
extern const u8 arrow_next_png[];
|
||||
extern const u32 arrow_next_png_size;
|
||||
|
||||
extern const u8 arrow_previous_png[];
|
||||
extern const u32 arrow_previous_png_size;
|
||||
|
||||
extern const u8 mp3_pause_png[];
|
||||
extern const u32 mp3_pause_png_size;
|
||||
|
||||
extern const u8 exit_top_png[];
|
||||
extern const u32 exit_top_png_size;
|
||||
|
||||
extern const u8 exit_top_over_png[];
|
||||
extern const u32 exit_top_over_png_size;
|
||||
|
||||
extern const u8 exit_bottom_png[];
|
||||
extern const u32 exit_bottom_png_size;
|
||||
|
||||
extern const u8 exit_bottom_over_png[];
|
||||
extern const u32 exit_bottom_over_png_size;
|
||||
|
||||
extern const u8 exit_button_png[];
|
||||
extern const u32 exit_button_png_size;
|
||||
|
||||
extern const u8 mp3_stop_png[];
|
||||
extern const u32 mp3_stop_png_size;
|
||||
|
||||
extern const u8 favorite_png[];
|
||||
extern const u32 favorite_png_size;
|
||||
|
||||
extern const u8 not_favorite_png[];
|
||||
extern const u32 not_favorite_png_size;
|
||||
|
||||
extern const u8 favIcon_png[];
|
||||
extern const u32 favIcon_png_size;
|
||||
|
||||
extern const u8 abcIcon_png[];
|
||||
extern const u32 abcIcon_png_size;
|
||||
|
||||
extern const u8 playCountIcon_png[];
|
||||
extern const u32 playCountIcon_png_size;
|
||||
|
||||
extern const u8 arrangeList_png[];
|
||||
extern const u32 arrangeList_png_size;
|
||||
|
||||
extern const u8 arrangeGrid_png[];
|
||||
extern const u32 arrangeGrid_png_size;
|
||||
|
||||
extern const u8 arrangeCarousel_png[];
|
||||
extern const u32 arrangeCarousel_png_size;
|
||||
|
||||
extern const u8 favIcon_gray_png[];
|
||||
extern const u32 favIcon_gray_png_size;
|
||||
|
||||
extern const u8 abcIcon_gray_png[];
|
||||
extern const u32 abcIcon_gray_png_size;
|
||||
|
||||
extern const u8 playCountIcon_gray_png[];
|
||||
extern const u32 playCountIcon_gray_png_size;
|
||||
|
||||
extern const u8 arrangeGrid_gray_png[];
|
||||
extern const u32 arrangeGrid_gray_png_size;
|
||||
|
||||
extern const u8 arrangeList_gray_png[];
|
||||
extern const u32 arrangeList_gray_png_size;
|
||||
|
||||
extern const u8 arrangeCarousel_gray_png[];
|
||||
extern const u32 arrangeCarousel_gray_png_size;
|
||||
|
||||
extern const u8 updateRev_png[];
|
||||
extern const u32 updateRev_png_size;
|
||||
extern const u8 background_png[];
|
||||
extern const u32 background_png_size;
|
||||
|
||||
#endif
|
||||
|
115
source/fst.c
@ -1,115 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2008 Nuke (wiinuke@gmail.com)
|
||||
*
|
||||
* this file is part of GeckoOS for USB Gecko
|
||||
* http://www.usbgecko.com
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <gccore.h>
|
||||
#include <malloc.h>
|
||||
#include <sys/unistd.h>
|
||||
#include <fat.h>
|
||||
#include <sdcard/wiisd_io.h>
|
||||
#include "ogc/ipc.h"
|
||||
#include "fst.h"
|
||||
#include "dvd_broadway.h"
|
||||
#include "wpad.h"
|
||||
|
||||
|
||||
#define FSTDIRTYPE 1
|
||||
#define FSTFILETYPE 0
|
||||
#define ENTRYSIZE 0xC
|
||||
#define FILEDIR "SD:/codes"
|
||||
|
||||
#define MAX_FILENAME_LEN 128
|
||||
|
||||
|
||||
static vu32 dvddone = 0;
|
||||
|
||||
|
||||
// Real basic
|
||||
u32 do_sd_code(char *filename)
|
||||
{
|
||||
FILE *fp;
|
||||
u8 *filebuff;
|
||||
u32 filesize;
|
||||
u32 ret;
|
||||
char filepath[128];
|
||||
|
||||
__io_wiisd.startup();
|
||||
ret = fatMountSimple("SD", &__io_wiisd);
|
||||
|
||||
if (!ret) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
fflush(stdout);
|
||||
|
||||
sprintf(filepath, FILEDIR "/%s", filename);
|
||||
filepath[16] = 0x2E;
|
||||
filepath[17] = 0x67;
|
||||
filepath[18] = 0x63;
|
||||
filepath[19] = 0x74;
|
||||
filepath[20] = 0;
|
||||
//printf("filename %s\n",filepath);
|
||||
|
||||
fp = fopen(filepath, "rb");
|
||||
if (!fp) {
|
||||
fatUnmount("SD");
|
||||
__io_wiisd.shutdown();
|
||||
return 0;
|
||||
}
|
||||
|
||||
fseek(fp, 0, SEEK_END);
|
||||
filesize = ftell(fp);
|
||||
fseek(fp, 0, SEEK_SET);
|
||||
|
||||
filebuff = (u8*) malloc (filesize);
|
||||
if(filebuff == 0){
|
||||
fclose(fp);
|
||||
sleep(2);
|
||||
return 0;
|
||||
}
|
||||
|
||||
ret = fread(filebuff, 1, filesize, fp);
|
||||
if(ret != filesize){
|
||||
free(filebuff);
|
||||
fclose(fp);
|
||||
fatUnmount("SD");
|
||||
__io_wiisd.shutdown();
|
||||
return 0;
|
||||
}
|
||||
|
||||
memcpy((void*)0x800027E8,filebuff,filesize);
|
||||
*(vu8*)0x80001807 = 0x01;
|
||||
|
||||
|
||||
|
||||
free(filebuff);
|
||||
fclose(fp);
|
||||
|
||||
fatUnmount("SD");
|
||||
__io_wiisd.shutdown();
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
38
source/fst.h
@ -1,38 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2008 Nuke (wiinuke@gmail.com)
|
||||
*
|
||||
* this file is part of GeckoOS for USB Gecko
|
||||
* http://www.usbgecko.com
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#ifndef __FST_H__
|
||||
#define __FST_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
//u32 do_fst(u32 fstlocation);
|
||||
u32 do_sd_code(char *filename);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@ -1,15 +0,0 @@
|
||||
unsigned char fwrite_patch_bin[] = {
|
||||
0x7c, 0x84, 0x29, 0xd6, 0x39, 0x40, 0x00, 0x00, 0x94, 0x21, 0xff, 0xf0,
|
||||
0x93, 0xe1, 0x00, 0x0c, 0x7f, 0x8a, 0x20, 0x00, 0x40, 0x9c, 0x00, 0x64,
|
||||
0x3d, 0x00, 0xcd, 0x00, 0x3d, 0x60, 0xcd, 0x00, 0x3d, 0x20, 0xcd, 0x00,
|
||||
0x61, 0x08, 0x68, 0x14, 0x61, 0x6b, 0x68, 0x24, 0x61, 0x29, 0x68, 0x20,
|
||||
0x39, 0x80, 0x00, 0xd0, 0x38, 0xc0, 0x00, 0x19, 0x38, 0xe0, 0x00, 0x00,
|
||||
0x91, 0x88, 0x00, 0x00, 0x7c, 0x03, 0x50, 0xae, 0x54, 0x00, 0xa0, 0x16,
|
||||
0x64, 0x00, 0xb0, 0x00, 0x90, 0x0b, 0x00, 0x00, 0x90, 0xc9, 0x00, 0x00,
|
||||
0x80, 0x09, 0x00, 0x00, 0x70, 0x1f, 0x00, 0x01, 0x40, 0x82, 0xff, 0xf8,
|
||||
0x80, 0x0b, 0x00, 0x00, 0x90, 0xe8, 0x00, 0x00, 0x54, 0x00, 0x37, 0xfe,
|
||||
0x7d, 0x4a, 0x02, 0x14, 0x7f, 0x8a, 0x20, 0x00, 0x41, 0x9c, 0xff, 0xc8,
|
||||
0x7c, 0xa3, 0x2b, 0x78, 0x83, 0xe1, 0x00, 0x0c, 0x38, 0x21, 0x00, 0x10,
|
||||
0x4e, 0x80, 0x00, 0x20
|
||||
};
|
||||
unsigned int fwrite_patch_bin_len = 136;
|
@ -1,60 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2008 Nuke (wiinuke@gmail.com)
|
||||
*
|
||||
* this file is part of GeckoOS for USB Gecko
|
||||
* http://www.usbgecko.com
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#ifndef __GECKOMENU_H__
|
||||
#define __GECKOMENU_H__
|
||||
|
||||
|
||||
#define ROOTMENU 0
|
||||
#define ABOUTMENU 1
|
||||
#define CONFIGMENU 2
|
||||
#define REBOOTMENU 3
|
||||
#define root_itemcount 7
|
||||
#define about_itemcount 4
|
||||
#define config_itemcount 9
|
||||
#define rebooter_itemcount 6
|
||||
|
||||
u32 currentmenu; // 0 ROOT
|
||||
u32 rootmenu_item;
|
||||
u32 menufreeze;
|
||||
u32 langselect;
|
||||
u32 langsaved;
|
||||
u32 pal60select;
|
||||
u32 pal50select;
|
||||
u32 viselect;
|
||||
u32 ntscselect;
|
||||
u32 hookselect;
|
||||
u32 ocarinaselect;
|
||||
u32 recoveryselect;
|
||||
u32 regionfreeselect;
|
||||
u32 nocopyselect;
|
||||
u32 buttonskipselect;
|
||||
|
||||
u32 doprogress(u32 progstate, u32 noelements);
|
||||
void drawmenu(u32 menuid);
|
||||
void drawselected(u32 menuidpos);
|
||||
void processwpad();
|
||||
void clearscreen(u32 *framebuffer, u16 xscreen, u16 yscreen, u16 width, u16 height, u32 color);
|
||||
void drawicon(u32 *framebuffer, u16 xscreen, u16 yscreen, u16 width, u16 height, u32 gicon);
|
||||
u32 CvtRGB (u8 r1, u8 g1, u8 b1, u8 r2, u8 g2, u8 b2);
|
||||
|
||||
|
||||
#endif // __GECKOLOAD_H__
|
245
source/http.c
@ -1,245 +0,0 @@
|
||||
#include "http.h"
|
||||
|
||||
/**
|
||||
* Emptyblock is a statically defined variable for functions to return if they are unable
|
||||
* to complete a request
|
||||
*/
|
||||
const struct block emptyblock = {0, NULL};
|
||||
|
||||
//The maximum amount of bytes to send per net_write() call
|
||||
#define NET_BUFFER_SIZE 1024
|
||||
|
||||
// Write our message to the server
|
||||
static s32 send_message(s32 server, char *msg) {
|
||||
s32 bytes_transferred = 0;
|
||||
s32 remaining = strlen(msg);
|
||||
while (remaining) {
|
||||
if ((bytes_transferred = net_write(server, msg, remaining > NET_BUFFER_SIZE ? NET_BUFFER_SIZE : remaining)) > 0) {
|
||||
remaining -= bytes_transferred;
|
||||
usleep (20 * 1000);
|
||||
} else if (bytes_transferred < 0) {
|
||||
return bytes_transferred;
|
||||
} else {
|
||||
return -ENODATA;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Connect to a remote server via TCP on a specified port
|
||||
*
|
||||
* @param u32 ip address of the server to connect to
|
||||
* @param u32 the port to connect to on the server
|
||||
* @return s32 The connection to the server (negative number if connection could not be established)
|
||||
*/
|
||||
static s32 server_connect(u32 ipaddress, u32 socket_port) {
|
||||
//Initialize socket
|
||||
s32 connection = net_socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
|
||||
if (connection < 0) return connection;
|
||||
|
||||
struct sockaddr_in connect_addr;
|
||||
memset(&connect_addr, 0, sizeof(connect_addr));
|
||||
connect_addr.sin_family = AF_INET;
|
||||
connect_addr.sin_port = socket_port;
|
||||
connect_addr.sin_addr.s_addr= ipaddress;
|
||||
|
||||
//Attemt to open the socket
|
||||
if (net_connect(connection, (struct sockaddr*)&connect_addr, sizeof(connect_addr)) == -1) {
|
||||
net_close(connection);
|
||||
return -1;
|
||||
}
|
||||
return connection;
|
||||
}
|
||||
|
||||
//The amount of memory in bytes reserved initially to store the HTTP response in
|
||||
//Be careful in increasing this number, reading from a socket on the Wii
|
||||
//will fail if you request more than 20k or so
|
||||
#define HTTP_BUFFER_SIZE 1024 * 5
|
||||
|
||||
//The amount of memory the buffer should expanded with if the buffer is full
|
||||
#define HTTP_BUFFER_GROWTH 1024 * 5
|
||||
|
||||
/**
|
||||
* This function reads all the data from a connection into a buffer which it returns.
|
||||
* It will return an empty buffer if something doesn't go as planned
|
||||
*
|
||||
* @param s32 connection The connection identifier to suck the response out of
|
||||
* @return block A 'block' struct (see http.h) in which the buffer is located
|
||||
*/
|
||||
struct block read_message(s32 connection)
|
||||
{
|
||||
//Create a block of memory to put in the response
|
||||
struct block buffer;
|
||||
buffer.data = malloc(HTTP_BUFFER_SIZE);
|
||||
buffer.size = HTTP_BUFFER_SIZE;
|
||||
|
||||
if(buffer.data == NULL) {
|
||||
return emptyblock;
|
||||
}
|
||||
|
||||
//The offset variable always points to the first byte of memory that is free in the buffer
|
||||
u32 offset = 0;
|
||||
|
||||
while(1)
|
||||
{
|
||||
//Fill the buffer with a new batch of bytes from the connection,
|
||||
//starting from where we left of in the buffer till the end of the buffer
|
||||
s32 bytes_read = net_read(connection, buffer.data + offset, buffer.size - offset);
|
||||
|
||||
//Anything below 0 is an error in the connection
|
||||
if(bytes_read < 0)
|
||||
{
|
||||
//printf("Connection error from net_read() Errorcode: %i\n", bytes_read);
|
||||
return emptyblock;
|
||||
}
|
||||
|
||||
//No more bytes were read into the buffer,
|
||||
//we assume this means the HTTP response is done
|
||||
if(bytes_read == 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
offset += bytes_read;
|
||||
|
||||
//Check if we have enough buffer left over,
|
||||
//if not expand it with an additional HTTP_BUFFER_GROWTH worth of bytes
|
||||
if(offset >= buffer.size)
|
||||
{
|
||||
buffer.size += HTTP_BUFFER_GROWTH;
|
||||
buffer.data = realloc(buffer.data, buffer.size);
|
||||
|
||||
if(buffer.data == NULL)
|
||||
{
|
||||
return emptyblock;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//At the end of above loop offset should be precisely the amount of bytes that were read from the connection
|
||||
buffer.size = offset;
|
||||
|
||||
//Shrink the size of the buffer so the data fits exactly in it
|
||||
realloc(buffer.data, buffer.size);
|
||||
|
||||
return buffer;
|
||||
}
|
||||
|
||||
/**
|
||||
* Downloads the contents of a URL to memory
|
||||
* This method is not threadsafe (because networking is not threadsafe on the Wii)
|
||||
*/
|
||||
struct block downloadfile(const char *url)
|
||||
{
|
||||
//Check if the url starts with "http://", if not it is not considered a valid url
|
||||
if(strncmp(url, "http://", strlen("http://")) != 0)
|
||||
{
|
||||
//printf("URL '%s' doesn't start with 'http://'\n", url);
|
||||
return emptyblock;
|
||||
}
|
||||
|
||||
//Locate the path part of the url by searching for '/' past "http://"
|
||||
char *path = strchr(url + strlen("http://"), '/');
|
||||
|
||||
//At the very least the url has to end with '/', ending with just a domain is invalid
|
||||
if(path == NULL)
|
||||
{
|
||||
//printf("URL '%s' has no PATH part\n", url);
|
||||
return emptyblock;
|
||||
}
|
||||
|
||||
//Extract the domain part out of the url
|
||||
int domainlength = path - url - strlen("http://");
|
||||
|
||||
if(domainlength == 0)
|
||||
{
|
||||
//printf("No domain part in URL '%s'\n", url);
|
||||
return emptyblock;
|
||||
}
|
||||
|
||||
char domain[domainlength + 1];
|
||||
strncpy(domain, url + strlen("http://"), domainlength);
|
||||
domain[domainlength] = '\0';
|
||||
|
||||
//Parsing of the URL is done, start making an actual connection
|
||||
u32 ipaddress = getipbynamecached(domain);
|
||||
|
||||
if(ipaddress == 0)
|
||||
{
|
||||
//printf("\ndomain %s could not be resolved", domain);
|
||||
return emptyblock;
|
||||
}
|
||||
|
||||
|
||||
s32 connection = server_connect(ipaddress, 80);
|
||||
|
||||
if(connection < 0) {
|
||||
//printf("Error establishing connection");
|
||||
return emptyblock;
|
||||
}
|
||||
|
||||
//Form a nice request header to send to the webserver
|
||||
char* headerformat = "GET %s HTTP/1.0\r\nHost: %s\r\nUser-Agent: WiiEarthh 1.0\r\n\r\n";;
|
||||
char header[strlen(headerformat) + strlen(domain) + strlen(path)];
|
||||
sprintf(header, headerformat, path, domain);
|
||||
|
||||
//Do the request and get the response
|
||||
send_message(connection, header);
|
||||
struct block response = read_message(connection);
|
||||
net_close(connection);
|
||||
|
||||
//Search for the 4-character sequence \r\n\r\n in the response which signals the start of the http payload (file)
|
||||
unsigned char *filestart = NULL;
|
||||
u32 filesize = 0;
|
||||
int i;
|
||||
for(i = 3; i < response.size; i++)
|
||||
{
|
||||
if(response.data[i] == '\n' &&
|
||||
response.data[i-1] == '\r' &&
|
||||
response.data[i-2] == '\n' &&
|
||||
response.data[i-3] == '\r')
|
||||
{
|
||||
filestart = response.data + i + 1;
|
||||
filesize = response.size - i - 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(filestart == NULL)
|
||||
{
|
||||
//printf("HTTP Response was without a file\n");
|
||||
free(response.data);
|
||||
return emptyblock;
|
||||
}
|
||||
|
||||
//Copy the file part of the response into a new memoryblock to return
|
||||
struct block file;
|
||||
file.data = malloc(filesize);
|
||||
file.size = filesize;
|
||||
|
||||
if(file.data == NULL)
|
||||
{
|
||||
//printf("No more memory to copy file from HTTP response\n");
|
||||
free(response.data);
|
||||
return emptyblock;
|
||||
}
|
||||
|
||||
memcpy(file.data, filestart, filesize);
|
||||
|
||||
//Dispose of the original response
|
||||
free(response.data);
|
||||
|
||||
return file;
|
||||
}
|
||||
|
||||
s32 GetConnection(char * domain) {
|
||||
|
||||
u32 ipaddress = getipbynamecached(domain);
|
||||
if(ipaddress == 0) {
|
||||
return -1;
|
||||
}
|
||||
s32 connection = server_connect(ipaddress, 80);
|
||||
return connection;
|
||||
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
#ifndef _HTTP_H_
|
||||
#define _HTTP_H_
|
||||
|
||||
#include <errno.h>
|
||||
#include <network.h>
|
||||
#include <ogcsys.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
#include "dns.h"
|
||||
|
||||
/**
|
||||
* A simple structure to keep track of the size of a malloc()ated block of memory
|
||||
*/
|
||||
struct block
|
||||
{
|
||||
u32 size;
|
||||
unsigned char *data;
|
||||
};
|
||||
|
||||
extern const struct block emptyblock;
|
||||
|
||||
struct block downloadfile(const char *url);
|
||||
s32 GetConnection(char * domain);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _HTTP_H_ */
|
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 813 B |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1016 B |
Before Width: | Height: | Size: 910 B |
Before Width: | Height: | Size: 760 B |
Before Width: | Height: | Size: 913 B |
Before Width: | Height: | Size: 709 B |
Before Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 114 KiB |
Before Width: | Height: | Size: 118 B |
Before Width: | Height: | Size: 225 B |
Before Width: | Height: | Size: 142 B |
Before Width: | Height: | Size: 138 B |
Before Width: | Height: | Size: 86 B |
Before Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 7.6 KiB |
Before Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 4.7 KiB |
Before Width: | Height: | Size: 59 KiB |
Before Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 4.9 KiB |
Before Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 4.7 KiB |
Before Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 5.4 KiB |
Before Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 3.4 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 983 B |
Before Width: | Height: | Size: 4.0 KiB |
Before Width: | Height: | Size: 609 B |
Before Width: | Height: | Size: 909 B |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 992 B |
Before Width: | Height: | Size: 823 B |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 5.3 KiB |
Before Width: | Height: | Size: 6.9 KiB |