Shutdown Hombrew mit devkitPPC Template schreiben

      Shutdown Hombrew mit devkitPPC Template schreiben

      Hey Leute, nach schwieriger Hilfesuche hier im Forum hab ich mich dazu entschlossen allen die auch mal eine mini Shutdown Homebrew schreiben wollen ein TUT zu machen Also das braucht ihr:
      1.DevkitPro
      2.Zeit :rofl:
      3.Den Quellcode :D

      Also zuerst ladet ihr euch das Devkitpro runter und installiert es natürlich :D
      So jetzt müsst ihr noch den Pfad von Devkit anpassen siehe "Hello World!" - A Journey into your Wii!

      Sooo wenn ihr das gemacht geht ihr in den Ordner C:\devkitPro\examples\wii\template (insofern ihr dort euer devkit intstalled habt, wenn nicht müsst ihr's halt anpassen) in dem ordner müssten sich 2 oder 3 files und zwei ordner befinden, geh doppelklick auf die template.pnproj so minimiert nun das Programmer's Notepad fenster geht in den ordner sources und klickt doppelt auf die template.c datei ... jetzt müsste euch die .c datei angezeigt werden geht nun bis in Reihe 65 dort müsste stehen

      Quellcode

      1. if ( pressed & WPAD_BUTTON_HOME )exit (0);
      so ersetzt dies durch if ( pressed & WPAD_BUTTON_A ) SYS_ResetSystem(SYS_POWEROFF_STANDBY, 0, 0);
      Das wars dann fast.. nur noch alt+1 drücken, dol/elf wird nun erstellt auf wii ziehn und fertig ist's

      P.s: Ihr könnt natürlich noch weiter Funktionen hinzufügen, schreibt mir gerne was ihr drauß gemacht habt
      P.s²: in Zeile 53 könnt ihr euren Hello World spruch natürlich auch ändern...
      Hier nochmal der komplette Quelltext

      C-Quellcode

      1. #include <stdio.h>
      2. #include <stdlib.h>
      3. #include <gccore.h>
      4. #include <wiiuse/wpad.h>
      5. static void *xfb = NULL;
      6. static GXRModeObj *rmode = NULL;
      7. //---------------------------------------------------------------------------------
      8. int main(int argc, char **argv) {
      9. //---------------------------------------------------------------------------------
      10. // lädt das Video System
      11. VIDEO_Init();
      12. // Diese Funktion lädt die Angschlossenen Wii Controller
      13. WPAD_Init();
      14. // Diese Funktion lädt den Angeschlossenen Gamecube Conrtoller
      15. PAD_Init();
      16. //Besorgt den bevorzugten Video Mode der Konsole
      17. // Diese wird die entsprechenden Einstellung aus dem Wii System entnehmen
      18. rmode = VIDEO_GetPreferredMode(NULL);
      19. // Allocate memory for the display in the uncached region
      20. xfb = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode));
      21. // Initialisiert die Konsole, zum anfordern von printf
      22. console_init(xfb,20,20,rmode->fbWidth,rmode->xfbHeight,rmode->fbWidth*VI_DISPLAY_PIX_SZ);
      23. // Set up the video registers with the chosen mode
      24. VIDEO_Configure(rmode);
      25. //Sagt der Video Hardware wo unser Bildschirm Speicher ist
      26. VIDEO_SetNextFramebuffer(xfb);
      27. // Macht den Bildschirm sichtbar
      28. VIDEO_SetBlack(FALSE);
      29. // Flush the video register changes to the hardware
      30. VIDEO_Flush();
      31. // Zum fertigstellen, warte auf das Videosignal
      32. VIDEO_WaitVSync();
      33. if(rmode->viTVMode&VI_NON_INTERLACE) VIDEO_WaitVSync();
      34. // Die Konsole versteht VT terminal escape codes
      35. // This positions the cursor on row 2, column 0
      36. // we can use variables for this with format codes too
      37. // e.g. printf ("\x1b[%d;%dH", row, column );
      38. printf("\x1b[2;0H");
      39. printf("Hallo Welt das ist meine erste Hombrew und ich mag sie ");
      40. while(1) {
      41. // Sagt WPAD_ScanPads jede schleife, diese liest den Controller Status
      42. WPAD_ScanPads();
      43. //Sagt Gamecube Conroller jede Schleife, diese liest den Controller Status
      44. PAD_ScanPads();
      45. // WPAD_ButtonsDown sagt uns welche Knöpfe in dieser Schleife gedrückt sind
      46. // dies ist ein "one shot" Status which will not fire again until the button has been released
      47. u32 pressed = WPAD_ButtonsDown(0);
      48. //PAD_ButtonsDown sagt uns welche Knöpfe in dieser Schleife gedrückt sind
      49. // dies ist ein "one shot" Status which will not fire again until the button has been released
      50. int buttonsDown = PAD_ButtonsDown(0);
      51. // Wir können nun die Wii mit gedrückten A Button runterfahren
      52. if ( pressed & WPAD_BUTTON_A ) SYS_ResetSystem(SYS_POWEROFF_STANDBY, 0, 0);
      53. //Das gleiche gilt für die Bedienunung mit dem Gamecube Controller, allerdings ein Klein wenig anderer Befehl
      54. if ( buttonsDown & PAD_BUTTON_A ) SYS_ResetSystem(SYS_POWEROFF_STANDBY, 0, 0);
      55. // Möchtet ihr weitere Funktionen hinzufügen gebt eine if (presses & WPAD_BUTTON_DEN iHR WOLLT Z.B B) und dann den Befehl.. hier beispiele:
      56. // Der Folgende Befehl lässt dich zum Wii Menü zurückkehren wenn du 2 drückst
      57. if ( pressed & WPAD_BUTTON_2) SYS_ResetSystem(SYS_RETURNTOMENU, 0, 0);
      58. //dieser Befehl Rebootet deine Wii
      59. if ( pressed & WPAD_BUTTON_1 ) SYS_ResetSystem(SYS_RESTART, 0, 0);
      60. // Die nächsten drei Befehle haben die gleiche Funktion zurück zum HBC (drücke entweder - Home oder +)
      61. if ( pressed & WPAD_BUTTON_PLUS )exit(0);
      62. if ( pressed & WPAD_BUTTON_HOME)exit(0);
      63. if ( pressed & WPAD_BUTTON_MINUS )exit(0);
      64. // Warte für die nächsten Bildschirminhalt
      65. VIDEO_WaitVSync();
      66. }
      67. return 0;
      68. }
      Alles anzeigen



      Thx an alle Aus meinem Dev. Thema... habt mir super geholfen ;( :rolleyes:
      Alle // frei übersetzt , Video hier youtube.com/watch?v=O58OU_SVJVc

      Dieser Beitrag wurde bereits 8 mal editiert, zuletzt von atze96 ()

      Es gibt hier auch genügend solche Apps,und ausserdem hat fraggelpower666(glaube der wars) schon einen Shutdown-Channel gemacht,eigentlich sollte das ja auch reichen!Es ist natürlich schon interessant,mal zu wissen,was man für so ein App alles programmieren muss,aber wie gesagt,man braucht hier nicht tausende von diesen Apps!
      Ja dann is der jenige er idiot :D es geht doch da drum das er den Quellcode sich durchliest und versucht ihn zu verstehen und evtl. als Vorlage für weiter Homebrews nimmt.. und die Befehle zum Shutdown lernt....
      P.s: Man weiß auch nicht umbedingt als neuling wie man kompiliert..
      Also, ich bin selbst diversen Sprachen, von einfachem BASH bis zu Obj-C, mächtig und habe von nano udn gmcs bis hin zu Xcode noch bei JEDEM Programm den Befehl zum Compilen gefunden.
      Wer zu dumm (referenziert sich auf dein idiot) ist, Google zu benutzen oder sein Hirn zu benutzen, hat in der Homebrew-Szene nichts verloren...ende
      Kommentare sind erwünscht und halten meinen Blog am Leben.
      Ja is ja gut :D Dazu lernt mans aber doch auch .. ! Ich mach dir en Vorschlag... ich arbeit weiter dran das man auch ne meta.xml und icon dazu erstellt, ne grafik einfügt, mehrere Shutdown Funktionen einbindet dann lad ich's hoch (die dol) du guckst es die an und meckerst dann weiter ok?!
      Du brauchst mir keinen Vorschlag zu machen, denn es ist mir wirklich egal.
      Gute Programmierer brauchen keine solchen Tutorials, in denen nichts erklärt wird und schlechte Programmierer werden ignoriert.
      Wie gesagt, wenn du eine richtige Demo-Applikation machst, dann schicke sie mitsamt Quellcode an Ark und der wird's auf die Homepage geben.

      Die sollte jede zeile kommentiert haben und die Verwendeten Befehle erklären
      Kommentare sind erwünscht und halten meinen Blog am Leben.
      Vorschlag von mir: Übersetz im Quellcode vll mal die Kommentare ins Deutsche, dann haben hier mehr Leute was davon. Als Programmierer sollte man zwar des Englischen mächtig, aber für die absolutn Anfänger sollten zumindest die Befehel in der eigenen Sprache erklärt werden. Zudem kann man hier ja editieren und weiter schreiben. Wenn du dich da jetzt wirklich ransetzt und das lernen willst, dann kannst du dieses TUT ja immer mal erweitern, wenn du mehr beherrschst, dann könnte da ja noch was Feines draus werden. ;)

      Ansonsten ist es bisher zugegebenermaßen nicht wirklich hilfreich, da finde ich es schon komplizierter die Umgebung ansändig einzurichten und son Zeugs.^^ Aber was nicht ist, kann ja noch werden und wir werden dieses TUT erst einmal behalten. (Sag ich jetzt, weiß nicht wie die Anderen das sehen;)) So viel Platz schluckt es nun nicht und vll kann ja wirklich der ein oder Andere was mit anfangen. ;)
      Aus, meiner Meinung nach, aktuellem Anlass wieder in die Signatur aufgenommen: Etwas Lesestoff. Ein Blick schadet auch dem erfahrensten Nutzer nicht. ;)
      @gantherfr: fraggel hat die dol aus meinem Channel genommen, die ich kompiliert habe. Er hat lediglich ein anderes Banner eingefügt!
      Ich weiß nicht, ob es sinnvoll ist, dass ich jetzt auch noch meinen Senf hinzugebe, aber irgendwie möchte ich es tun.

      @atze96:
      Aus deinem Nickname schließe ich mal, dass du Baujahr 1996 bist, das heißt du bist wahrscheinlich 14.
      Mit 14 solltest du selber merken, dass das was du gesdchrieben hast nicht einmal im entferntesten ein sinnvolles, geschweige denn überhaupt ein Tutorial ist. Vor allem, weil du auf dem Weg zu diesem Programm mehr als ein richtiges Tutorial gelesen hast.

      Im dritten Post hast du geschrieben:

      atze96 schrieb:

      ist aber für die die kein C können (wie ich) die dann halt auch mal ein Hombrew schreiben wollen
      In diesem Fall würde ich dir vorschlagen erst einmal kleine C-Programme für den PC zu schreiben und die Grundelemente der Programmiersprache und des Programmierens zu lernen. Lerne Quelltexte zu lesen, zu verstehen und nachzuvollziehen.
      Kauf dir nen Buch, lerne C und wenn du halbwegs verstanden hast, was es mit Speicherverwaltung, Zeigern, Structs, Header & Co. auf sich hat, dann kannst du dich auch ranmachen Homebrews zu schreiben.

      Programmieren ist nichts, was man eben mal so macht und dann kann, weil man sich Quelltexte aus dem Internet zusammen bastelt und wenn man Glück hat sogar noch die richtige Funktionalität erreicht.
      Das Ganze klappt vielleicht noch bei kleinen Programmen, aber was ist, wenn du mal etwas Größeres machen willst? Etwas komplexeres? Dann kommt die Frustration, weil sich nämlich nicht alles zusammen tragen lässt ... Außerdem sollte das Projekt dann modularisiert werden, es sollten Header geschrieben werden, beim Kompilieren müssen unter umständen bestimmte Bibliotheken gelinkt werden...
      Außerdem müssen Dokumentationen/ Referenzen von Bibliotheken gelesen werden, um die Funktionen richtig zu verwenden.
      Warum ist der Befehl für nen Shutdown: SYS_ResetSystem(SYS_POWEROFF_STANDBY, 0, 0); und Endet nicht auf 1, -1 oder 42, 666?

      Ich würd dir Vorschlagen:
      Lerne Programmieren von Grund auf, wenn du das wirklich willst, aber fange Klein an!
      Sei dir bewusst, dass C eine äußerst mächtige und maschinennahe Sprache ist, die unter Umständen nicht immer leicht zu handhaben ist.

      Ich wünsche dir viel Erfolg auf deinem Weg zum Programmieren lernen!
      Wii Daten
      FW 4.2E
      cIOS rev 19, Hermes 5.0
      HBC 1.0.8
      BootMii als IOS

      @t ccar danke für deine nette Hilfe
      ich hatte schon eingeplant C zu lernen und mir auch das ein odere andere C Buch zu kaufen ABER es geht mir auch dadrum das man auch wenn kein C kann schon Spaß dadran finden kann mit Quellcode zwar ausm inet ziehn aber auch drauß lernen (learning by doing) das mit 0 ,0 ; liegt (glaub) dadran das es eine Variable ist die immer mit 0 endet ...
      P.s: das "TUT" muss sich ja nicht an die Pro Programmierer richten sondern an die die einfach mal ihren Kumpels was lustiges / cooles zeigen wollen
      So...
      Naja, die nehmen dann auch wieder was fertig kompiliertes.

      Abgesehen davon: Schau in die Definition der Funktion:

      Quellcode

      1. void SYS_ResetSystem(s32 reset,u32 reset_code,s32 force_menu);

      Das mit der Variable, die auf 0 endet war, ehrlich gesagt, totaler Mist und beweist, dass du bezüglich Programmieren noch viiiiiieeeell lernen musst. ;)
      Ich hab ja auch wenig ahnung :D sach ja auch nichts andres ! Ich meine aber das ich so was in der art bei zwoten codemii tut gelesen hät... wenns nich so is dann halt nicht... außadem ihr gebt mir echt das Gefühl das man wenn man en fehler gemacht hat gleich schon als ****** abgestuft wird... bitte.. !

      atze96 schrieb:

      P.s: das "TUT" muss sich ja nicht an die Pro Programmierer richten sondern an die die einfach mal ihren Kumpels was lustiges / cooles zeigen wollen
      Also an Skriptkiddies, die keine Ahnung haben? Bringt garnichts!
      Die können sich dann das fertige Kompilat/ Programm auch runterladen und es ausführen! Ob sie den Freunden auch das Kompilieren zeigen wage ich zu bezweifeln! Und selbst wenn, glaube ich nicht, dass das Kompilieren an sich lustig oder cool ist.

      Variablen die immer auf 0 Enden? Können höchstens \0-Terminierte Char-Arrays/ Strings sein.

      Ich rate dir echt: Denk nochmal über die Vorschläge nach das Programmieren von Grund auf zu lernen. Da hast du selbst mehr von und das Wissen hält länger! ;)

      PS: Tuts sollte man erst schreiben, wenn man Ahnung davon hat, was man macht! In deinem Fall bekundest du nur deine totale Unwissenheit und stellst dich somit selbst als ****** dar.
      Deine Gründe mögen ehrenhaft sein, aber es ist totaler Mist, wenn du aufkommende Fragen (in bezug auf dein TuT: SYS_ResetSystem), nicht beantworten kannst! Da müssen ggf. wir anderen einschreiten und unnötige Fragen beantworten, nur weil einige kein Bock haben Programmieren richtig zu lernen. :(
      Wii Daten
      FW 4.2E
      cIOS rev 19, Hermes 5.0
      HBC 1.0.8
      BootMii als IOS