Danke, danke, danke, dass ich der erste sein darf, der etwas in diesen Thread schreibt (naja, bis auf liQuii, aber der zählt nicht

).
"Hello World!" - A Journey into your Wii!" hört sich viel versprechend an, ist es auch: Ein kleiner Einblick in das tägliche Leben von bushing, marcan und
Waninkoko soll euch gewährt sein, und eure Gier nach Wissen, wie die 3 "verrückten" Typen, komplexeste Dinge (wie ganz aktuell den Backuploader) programmiert haben. Die meisten von ihnen, wie z.B. Bushing studierten Programmierung und Software Engineering for Micorprocessors (ARM). Oder programmierten bevor sie laufen konnten in C (= ihre Muttersprache). Ein kleiner Einstieg. Folgende Literatur wäre sehr empfehlenswert, bevor man sich an Dinge wie ein devKitPPC und libogc heran wagt:
http://hitmen.c02.at/files/yagcd/yagcd/index.html (=Yet Another Game Cube Documentation); GC ist von Processor Technik FAST dasselbe wie die Wii.
http://wiibrew.org Documents and Secrets (d.h. diverse Dokumente und Erkenntnisse von Team Twiizer u.a.);
teilweise sehr schwer zu verstehendes Material für Anfänger; eher für Fortgeschrittene als Lexikon gedacht.
http://codemii.com
Erstklassiges Englischsprachiger Blog mit bislang leider nur 8 Tutorials in den Einstieg in die Programmierung mit C. Tutorial covert die Installation und Konfiguration von devkitPPC unter WIn32 XP. Bei Fragen könnt ihr mich per PM fragen. Mario2323, ein user aus diesem Board, hat auch gute Erfahrungen mit mir auf diesem Gebiet gemacht, und kann so manche Fehlerquellen beseitigen
http://highscore.de
C - Für Anfänger und andere, die keine Ahnung von Programmierung hatten.
Hier ein kleines Tutorial zum Aufsetzen von devkitPPC auf Win32 (by mir

):
devkitPPC release 16 
Wer sich mit Konsolen beschäftigt wird dieses Wort öfter gehört haben: devKit. Ja ein devkit! Ein devKit (Abk. engl. development – Entwicklung, Kit – Set, “Baukasten”) ist eine Sammlungen von Werkzeugen, die bei der Entwicklung von spezifischen Programmen, Tools etc. für Nintendo Consoles u.a. (z.B.: PPC – PowerPC: der Prozessor der Wii, PSP – Sony's PSP). lib, sog. Libraries, “Bücherein”, enthalten die nötigen Funktionen, um Programme zu entwickeln.
Mehr Informationen und die Installation für Mac OSX und Linux Based System:
http://www.devkitpro.org/
devkitARM – Microprocessor Programming of ARM cores
devkitPSP – PSP Programming
devkitPPC – PowerPC Programming in context of Programming Wii Applications
Kurze Erwähnung der Installation des devkitPPC und libOGC auf einem Win32 XP Rechner
(Quelle:
http://www.tehskeen.com/forums/showthread.php?t=2968)
Zutaten:
*devKitPPC (=”Sachen, um eine ELF bzw. DOL Datei zumachen”)
*libogc (=”Wiifunktionen”)
*Programmer's Notepad (=”wo man C und H Dateien tippt”)
1.) devKit Automated Installer downloaden:
http://sourceforge.net/project/showfiles.php?group_id=114505
-> Auswählen -> Download!
ACHTUNG!!! Um über diesen Insatller installieren zu können benötigt ihr eine Internetverbindung! Er lädt die Sachen aus, die ihr auswählt.
2.) Wählt folgendes aus:
*libOGC: die library mit den von der Wii genutzen Funktionen
*devKitPPC (sofern ihr nur für eure Wii Programmieren wollt!): Binary Utilities, also Interpreter und Compiler sind dort enthalten
*Programmer's Notepad (v.2?): Programmierungsumgebung (ihr werdet in C Programmieren)
*MinGWsys (Msys, MINGW, Minimal System): der "Emulator, um zu kompilieren"
3.) In Verzeichniss eurer Wahl installieren.
4.) Gehe zu msys und editiere die fstab Datei (hier wurde nach C:devkitPromsys installiert; kann abweichen von euren Angaben!:
C:devkitPromsysetcfstab
Öffne die datei am besten mit Programmer's Notepad und passe sie SO an:
c:/devkitPro/devkitPPC /ppc
Es MUSS der "Weg" (Path) zu eurem devKitPPC sein! Groß- und Kleinschreibung bitte beachten! und das Leerzeichen und den / (Slash!) nach devkitPPC: /ppc
5.) Und noch eine Datei editieren! msysetcprofile wieder mit Programmer's Notepad öffnen und diese Zeilen ergänzen:
�33[32m]u@h [�33[33mw�33[0m]
$ '
alias clear=clsb
export PATH=$PATH:/ppc/bin
export DEVKITPPC=/ppc
cd "$HOME"
Jetzt haben wir die Entwicklungsumgebung Variablen gesetzt (setting of environmental variables devkitPPC requires).
6.) Holt euch am besten eine vorkompilierte libOGC version von sourceforge! Kopiert den Inhalt des lib Ordners in den lib Ordner vom devkitPpc und von msys (hat bei mir ansonsten Schwierigkeiten verursacht!). Den Include Ordner mit den H Files kopiert ihr jeweils wieder in die include Ordner von msys und devkitPPC.
Fertig! Euer devkitPPC ist nun vorkonfiguriert.
Lest die Tutroials auf
http://codemii.com, um zu erfahren wie man fertige C Projects kompiliiert. es empfiehlt sich eine Weile mit libOGC un dessen Funktionen auseinanderzusetzen.
Danke an Drack, der die englische Fassung von “Drack's Documentation – How to set up the environent” auf tehskeen.com geschrieben hat! Danke an shagkur und Wintermute und allen Arbeitern, die geholfen haben, devkitPro und libOGC zu entwerfen!!!
Changelog
Release 16
- upgraded binutils to 2.19
- upgraded gcc to 4.2.4
- additional extensions in newlib for (f)truncate, fsync, dirent.h support and 64bit file IO.
- extensions to the gcdspsuite by Hermes.
- gxtexconv by shagkur, a tool to convert images to GX textures.
II. ES_ Functions
Um auf
NAND & Co. zugreifen zu können, den Trucha Bug zu nutzen, eigene Tickets und TMD zu installieren, ... Ging das zu schnell?! Neu in C? Macht nix! Hier die Tabelle von Profis für Profis (und Anfänger!); sie hilft ungemein beim Programmieren und Nutzen der Funktionen (man kann ja nicht alles auswändig wissen =P):
ios_ioctlv( fd, 0x01, 4, 0, vec); // ES_AddTicket(const signed_blob *stik, u32 stik_size, const signed_blob *certificates, u32 certificates_size, const signed_blob *crl, u32 crl_size)
ios_ioctlv( fd, 0x02, 4, 0, vec); // ES_AddTitleStart(const signed_blob *stmd, u32 tmd_size, const signed_blob *certificates, u32 certificates_size, const signed_blob *crl, u32 crl_size)
ios_ioctlv( fd, 0x03, 2, 0, vec); // ES_AddContentStart(u64 titleID, u32 cid)
ios_ioctlv( fd, 0x04, 2, 0, vec); // ES_AddContentData(s32 cfd, u8 *data, u32 data_size)
ios_ioctlv( fd, 0x05, 1, 0, vec); // ES_AddContentFinish(u32 cid)
ios_ioctlv( fd, 0x06, 0, 0, vec); // ES_AddTitleFinish(void)
ios_ioctlv( fd, 0x07, 0, 1, vec); // ES_GetDeviceID
ios_ioctlvReboot(fd, 8, 2, 0, vec); // ES_LaunchTitle(u64 titleID, const tikview *view)
ios_ioctlv( fd, 0x09, 1, 0, vec); // ES_OpenContent(u16 index)
ios_ioctlv( fd, 0x0A, 1, 1, vec); // ES_ReadContent(s32 cfd, u8 *data, u32 data_size)
ios_ioctlv( fd, 0x0B, 1, 0, vec); // ES_CloseContent(s32 cfd)
ios_ioctlv( fd, 0x0C, 0, 1, vec); // ES_GetOwnedTitlesCount
ios_ioctlv( fd, 0x0D, 1, 1, vec); // ES_GetOwnedTitles
ios_ioctlv( fd, 0x0E, 0, 1, vec); // ES_GetTitlesCount
ios_ioctlv( fd, 0x0F, 1, 1, vec); // ES_GetTitles
ios_ioctlv( fd, 0x17, 1, 2, vec); // ES_DeleteTitle
ios_ioctlv( fd, 0x18, 1, 2, vec); // ES_DeleteTicket
ios_ioctlv( fd, 0x19, 1, 1, vec); // ES_DiGetTmdViewCount
ios_ioctlv( fd, 0x1A, 2, 1, vec); // ES_DiGetTmdView
ios_ioctlv( fd, 0x1B, 1, 1, vec); // ES_DiGetTicketView
ios_ioctlv( fd, 0x1c, 1, 1, vec); // ES_DiVerify
ios_ioctlv( fd, 0x1d, 1, 1, vec); // ES_GetDataDir
ios_ioctlv( fd, 0x1e, 0, 1, vec); // ES_GetDeviceCert(u8 *outbuf)
ios_ioctlv( fd, 0x1f, 6, 0, vec); // ES_ImportBoot( const signed_blob *tik, u32 tik_size, const signed_blob *tik_certs, u32 tik_certs_size, const signed_blob *tmd, u32 tmd_size, const signed_blob *tmd_certs, u32 tmd_certs_size, const u8 *content, u32 content_size )
ios_ioctlv( fd, 0x24, 3, 0, vec); // ES_OpenTitleContent
ios_ioctlv( fd, 0x25, 0, 0, vec); // ES_LaunchBC(void)
ios_ioctlv( fd, 0x26, 1, 0, vec); // ES_ExportTitleInit
ios_ioctlv( fd, 0x27, 2, 0, vec); // ES_ExportContentBegin
ios_ioctlv( fd, 0x28, 1, 1, vec); // ES_ExportContentData
ios_ioctlv( fd, 0x29, 1, 0, vec); // ES_ExportContentEnd
ios_ioctlv( fd, 0x2A, 0, 0, vec); // ES_ExportTitleDone(void)
ios_ioctlv( fd, 0x2B, 1, 0, vec); // ES_AddTmd
ios_ioctlv( fd, 0x2C, 3, 2, vec); // ES_Encrypt(u32 keynum, u8 *iv, u8 *source, u32 size, u8 *dest)
ios_ioctlv( fd, 0x2D, 3, 2, vec); // ES_Decrypt(u32 keynum, u8 *iv, u8 *source, u32 size, u8 *dest)
ios_ioctlv( fd, 0x2E, 0, 1, vec); // ES_GetBoot2Version(u32 *version)
ios_ioctlv( fd, 0x2F, 0, 0, vec); // ES_AddTitleCancel(void)
ios_ioctlv( fd, 0x30, 1, 2, vec); // ES_Sign(u8 *source, u32 size, u8 *sig, u8 *certs)
[to be continued...]
Das sind die "bekannten" ES_ Funktionen; ob es mehr gibt, weiß man nicht. Die Quelle mit Error Code:
http://wiibrew.org/wiki//dev/es
Ansonsten... Pm an mich!
EDIT: Das folgende Programm wurde noch niocht getestet! Es enthält aber keine Funktionen die auf IOSs oder sonstige System Menu lebensnotwendige Files zugreift. Es soll nur die Wimmote getestet werden (kleines Programm...). ICH ÜBERNEHME KEINERLEI HAFTUNG! Einfach in boot.dol umbenennen!
index.php?page=Attachment&attachmentID=90
"Happy Hackin'!"
-st0rax