Line 1:
Line 1:
=Quellcode Ausschnitte=
=Quellcode Ausschnitte=
â
==Video-System-Autoerkennungs-Routine==
+
== Video-System-Autoerkennungs-Routine ==
Die libogc von DevkitPPC r15 setzt den Video-Modus automatisch durch einen Funktionsaufruf.
Die libogc von DevkitPPC r15 setzt den Video-Modus automatisch durch einen Funktionsaufruf.
Line 19:
Line 19:
</source>
</source>
â
==ZurĂŒckspringen zum Lader==
+
== ZurĂŒckspringen zum Lader ==
Es ist immer nett, ein ZurĂŒckspringen zum "Lader" zu ermöglichen. Ansonsten mĂŒsste man die Wii jedesmal neustarten, wenn man eine Homebrew-Applikation beenden möchte.
Es ist immer nett, ein ZurĂŒckspringen zum "Lader" zu ermöglichen. Ansonsten mĂŒsste man die Wii jedesmal neustarten, wenn man eine Homebrew-Applikation beenden möchte.
Line 32:
Line 32:
Anmerkkung: Der __crtmain-Code ist fehlerhaft, da er standardmĂ€Ăig nicht exit aufruft. Kann man selbst verbessern. ZusĂ€tzlich ruft es nicht die Konstruktoren der globalen Objekte in C++ auf. Das kommt davon wenn man unsauber zusammengestrickte Einzeiler verwendet.
Anmerkkung: Der __crtmain-Code ist fehlerhaft, da er standardmĂ€Ăig nicht exit aufruft. Kann man selbst verbessern. ZusĂ€tzlich ruft es nicht die Konstruktoren der globalen Objekte in C++ auf. Das kommt davon wenn man unsauber zusammengestrickte Einzeiler verwendet.
â
==Wii Neustarten==
+
== Wii Neustarten ==
<source lang="c">
<source lang="c">
#include <gccore.h>
#include <gccore.h>
Line 41:
Line 41:
Man kann auch mit SYS_RETURNTOMENU das SystemmenĂŒ aufrufen, beziehungsweise mit SYS_POWEROFF die Wii ausschalten (je nach WC24-Einstellungen wird der Standby- oder Idlemodus aktiviert. SYS_POWEROFF_STANDBY und SYS_POWEROFF_IDLE können das gezielt erzwingen)
Man kann auch mit SYS_RETURNTOMENU das SystemmenĂŒ aufrufen, beziehungsweise mit SYS_POWEROFF die Wii ausschalten (je nach WC24-Einstellungen wird der Standby- oder Idlemodus aktiviert. SYS_POWEROFF_STANDBY und SYS_POWEROFF_IDLE können das gezielt erzwingen)
â
==Wiimote Abfragen==
+
== Wiimote Abfragen ==
[[How to use the Wiimote]] (englisch).
[[How to use the Wiimote]] (englisch).
â
=Debugging Tipp=
+
= Debugging Tipp =
Wenn du mit einem Absturz deiner Homebrew konfrontiert wirst, siehst du meist eine Adresse mit einigem Maschinen-Code auf dem Display. Hier ist mein Trick um die Stelle im C++-Code zu lokalisieren.
Wenn du mit einem Absturz deiner Homebrew konfrontiert wirst, siehst du meist eine Adresse mit einigem Maschinen-Code auf dem Display. Hier ist mein Trick um die Stelle im C++-Code zu lokalisieren.
Line 81:
Line 81:
479 02d0 9421FF00 stwu 1,-256(1)
479 02d0 9421FF00 stwu 1,-256(1)
â
Die Funktionsnamen sind hier beschnitten denn es handelt sich um C++ Code ( Siehe http://en.wikipedia.org/wiki/Name_mangling#Name_mangling_in_C.2B.2B). Die Adresse des ersten Befehls von ''Render()'' ist an der Stelle 02d0. Das ist gleichzeitig Zeile 158 in unserer Datei (".loc 1 158 0"). Um den Fehler zu finden mĂŒssen wir an Stelle 0x318 ( = 0x2d0 + 72 ) suchen. Wie hier:
+
Die Funktionsnamen sind hier beschnitten denn es handelt sich um C++ Code ( Siehe http://en.wikipedia.org/wiki/Name_mangling#Name_mangling_in_C.2B.2B). Die Adresse des ersten Befehls von ''Render()'' ist an der Stelle 02d0. Das ist gleichzeitig Zeile 158 in unserer Datei (".loc 1 158 0"). Um den Fehler zu finden mĂŒssen wir an Stelle 0x318 ( = 0x2d0 + 72 ) suchen. Wie hier:
.loc 1 168 0
.loc 1 168 0
Line 90:
Line 90:
FĂŒr mehr Informationen zu Assembler-Ausgaben, gibt es dieses Manual: http://sourceware.org/binutils/docs-2.18/as/index.html
FĂŒr mehr Informationen zu Assembler-Ausgaben, gibt es dieses Manual: http://sourceware.org/binutils/docs-2.18/as/index.html
â
==GrundsÀtzliche Tipps zum Programmieren==
+
== GrundsÀtzliche Tipps zum Programmieren ==
*Kommentierte deinen Code durchgehend, das hilft anderen Fehler zu finden.
*Kommentierte deinen Code durchgehend, das hilft anderen Fehler zu finden.
*Jeder ungenutzte Code sollte aus dem Programm verschwinden, auĂer es ist ein Programm um anderen etwas zu erklĂ€ren.
*Jeder ungenutzte Code sollte aus dem Programm verschwinden, auĂer es ist ein Programm um anderen etwas zu erklĂ€ren.