KINGx - Das inoffizielle PlayStation Forum & News Portal
[TUT] VLF Hallo Welt. - Druckversion

+- KINGx - Das inoffizielle PlayStation Forum & News Portal (http://www.kingx.de/forum)
+-- Forum:    PS Vita / PSP (/forumdisplay.php?fid=1)
+--- Forum: Homebrew (/forumdisplay.php?fid=8)
+---- Forum: Development (/forumdisplay.php?fid=34)
+----- Forum: Dev-Tutorials (/forumdisplay.php?fid=59)
+----- Thema: [TUT] VLF Hallo Welt. (/showthread.php?tid=4818)


[TUT] VLF Hallo Welt. - Ceikor - 16.05.2009 13:42

Hier will ich euch ein kurzen einblick geben wie ihr VSH ähnliche Homebrew erstellt mit dem Beispiel "Hallo Welt (Text ausgabe)".

Ich setze für diese TUT grundkenntnisse im C++ für die PSP vorraus, da ich hier nicht erkläre was "include", "return" usw. bedeutet.





Das hier ist die "crt0.c" sie bereitet soweit alles vor was dazu benötigt wird eine VSH oberfläche zu erstellen. Sie sollte auch nicht geändert werden wenn ihr keine zusätzlichen Module laden wollt!

PHP-Code:
#include <pspsdk.h>
#include <pspkernel.h>
#include <stdio.h>

#include <vlf.h>

extern int Title();     //hier wird die externe sprungmarke für "vlfGuiInit" deklariert

int start_thread(SceSize argsvoid *argp)
{
    
SceUID mod;
    
char *path = (char *)argp;
    
int last_trail = -1;
    
int i;

    if (
path)
    {
        for (
0path[i]; i++)
        {
            if (
path[i] == '/')
                
last_trail i;
        }
    }

    if (
last_trail >= 0)
        
path[last_trail] = 0;

    
sceIoChdir(path);
    
path[last_trail] = '/';

[
align=center]//**Ab hier werden die Module geladen, mehr brauch man am anfang nicht wissen :D**[/align]

    
mod sceKernelLoadModule("iop.prx"0NULL);
    
mod sceKernelStartModule(modargsargpNULLNULL);
    
mod sceKernelLoadModule("intraFont.prx"0NULL);
    
mod sceKernelStartModule(modargsargpNULLNULL);
    
mod sceKernelLoadModule("vlf.prx"0NULL);
    
mod sceKernelStartModule(modargsargpNULLNULL);
    
vlfGuiInit(-1Title);
    
    return 
sceKernelExitDeleteThread(0);
}

int module_start(SceSize argsvoid *argp)
{
    
SceUID thid sceKernelCreateThread("start_thread"start_thread0x100x40000NULL);
    if (
thid 0)
        return 
thid;

    
sceKernelStartThread(thidargsargp);
    
    return 
0;


PHP-Code:
vlfGuiInit(-1Title); 

der 1. wert gibt die Speichergröße an, die wird in KB berechnet zB: 15000 macht dann 15MB. Wenn dort ein Negativer Wert steht ist der
Speicher nicht begrenzt.
der 2. wert gibt an wo er in der main.c anfangen soll.


Das hier ist jetzt die "main.c" hier wird ganz normal euere programm gecodet.

PHP-Code:
#include <pspsdk.h>
#include <pspkernel.h>
#include <pspdebug.h>
#include <pspctrl.h>
#include <psprtc.h>
#include <pspgu.h>
#include <pspgum.h>
#include <stdlib.h>
#include <stdio.h>
#include <vlf.h>



PSP_MODULE_INFO("Hallo_Welt"110);    
//PSP_MODULE_INFO(TITLE, MODE, VERSION, VERSION); 
// wenn MODE den wert 1 hat bedeutet das es ist der USER-Mode
// "kein Kernel zugriff möglich".

PSP_MAIN_THREAD_ATTR(0);

int Exit()    // Exit funktion
{
    
sceKernelExitGame();    //Gibt an das das Programm verlassen werden soll.
    
return VLF_EV_RET_NOTHING;  //es soll nichts weiter geschehen.
}


int Title()
{
 
// Hier wird das Datum, Hintergrund und die Batterie generiert
 //<<< vlfGuiSystemSetup(int battery, int clock, int notuserwp);>>>>>
 //wenn int notuserwp den wert 0 hat wird der aktuelle hintergrund dargestellt.
    
vlfGuiSystemSetup(111);        

         
//Hier wird eine Titelleiste generiert.    
    
vlfGuiSetTitleBar(vlfGuiAddText0,"Hallo Welt Titel"), 010);   

              
//Text ausgabe auf dem Bildschirm
    
vlfGuiAddText100110 ,"Hallo Welt!\n\nMeine erste VSH ähnliche EBOOT.");     

// weißt drauf hin das er zu "Exit" springen soll und die funktion soll erst mit dem drücken des Buttons erfolgen
    
    
vlfGuiCustomBottomDialog("Exit"NULL10VLF_DEFAULT, Exit);  
    
    while (
1)
    {
        
vlfGuiDrawFrame();    //Gibt an das der nächste Frame geladen werden soll von der Wave.
    
}
    
    return 
0;

Hier sollten eigentlich fast alle befehle bekannt sein.

Hier die "Makefile"

PHP-Code:
TARGET Hallo_welt_source
OBJS 
crt0.o main.o

INCDIR 
= ../../include
CFLAGS = -O2 -G0 -Wall -fshort-wchar -fno-pic -mno-check-zero-division 
CXXFLAGS 
= $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS 
= $(CFLAGS) -c

LIBDIR 
= ../../lib
LDFLAGS 
= -mno-crt0 -nostdlib -nodefaultlibs
LIBS 
= -lpsprtc -lvlfgui -lvlfgu -lvlflibc -lpspsystemctrl_user

PSP_FW_VERSION 
150

EXTRA_TARGETS 
EBOOT.PBP
PSP_EBOOT_TITLE 
Hallo Welt
PSP_EBOOT_ICON 
=

BUILD_PRX 1
PSP_LARGE_MEMORY 
1

PSPSDK
=$(shell psp-config --pspsdk-path)
include ./
build.mak 

sollte soweit eigentlich auch alles klar sein.

PS: Wenn Interesse hab kann ich auch gern noch ein leines TUT für ein Menü erstellen.

Die copilierte EBOOT und source daten sind im anhang.


RE: [TUT] VLF Hallo Welt. - DasFragezeichen - 16.05.2009 14:02

Ähm, ne, nix ist klar. Soviel Code, für so wenig Programminahlt? Was machen den die einzelnen Zeilen? Warum kann man einige nicht einfach weglassen? Also ich wäre schon für eine genauere -Erklärung dankbar.

Wenn man auf dem Computer ein "Hallo Welt" ausgeben will, sind das mit Einbindung der diversen Bibliotheken vielleicht drei, vier Zeilen oder so.


RE: [TUT] VLF Hallo Welt. - Ceikor - 16.05.2009 14:10

Eine PSP ist kein Computer (PC^^). Auf dieser etwas darzustellen und dann noch mit VFL ist nichts mit dem man anfangen sollte. Da schlage ich dir eher vor fang hiermit an, das ist dann auch nur eine stink normale text ausgabe auf der PSP.


RE: [TUT] VLF Hallo Welt. - PSP_Joker - 16.05.2009 14:16

Das Tutorial ist echt nicht schlecht, aber darin was zu proggen ist echt hart o.O Ich bleib glaub ich doch erstmal bei Lua, 3 Zeichen für Hallo Welt und nicht eine halbe Seite, aber ansonsten Top Wink


RE: [TUT] VLF Hallo Welt. - pleet - 16.05.2009 16:36

Kinnlade offen.....Gut daß unsere Jugend sowas heut zu Tage schon in der Schule mit auf'm Weg bekommt!! Raff' gar nix... trotzdem...danke!? Respekt


RE: [TUT] VLF Hallo Welt. - -blue7 - 14.08.2009 03:39

Hm, mit PSP Programmierung sollte man als C Neuling wohl eher nicht anfangen Big Grin


RE: [TUT] VLF Hallo Welt. - Tobs!as - 22.02.2010 21:06

sry, wenn ich das jetzt aufwühle: warum hat der des so komplizert gemacht ??


RE: [TUT] VLF Hallo Welt. - HacKmaN - 22.02.2010 21:14

Wie willste es anders machen?
Er hat alles perfekt erklährt!


RE: [TUT] VLF Hallo Welt. - Tobs!as - 22.02.2010 21:22

oder verwechsle ich da was? . was is eig vlf


RE: [TUT] VLF Hallo Welt. - Dan-PSP - 22.02.2010 21:27

in vlf ist, wenn man zb ein menü will, das aussieht wie zb die Updater Programme von sony(zb Go!Store von suleman hat VLF) .


RE: [TUT] VLF Hallo Welt. - HellcatX - 03.07.2010 20:31

Ich hab ne Frage: Also bei mir (ich verwende PSPSDK v0.9.2) Kommt so ein komischer Error raus:



Was isch mein Fehler?? Ich benutze auch den Source den du als DW gegeben hast funzt immer noch nicht!!

Hab ich etwas falsch gemacht??


RE: [TUT] VLF Hallo Welt. - HacKmaN - 03.07.2010 21:08

HellcatX :
Ich hab ne Frage: Also bei mir (ich verwende PSPSDK v0.9.2) Kommt so ein komischer Error raus:



Was isch mein Fehler?? Ich benutze auch den Source den du als DW gegeben hast funzt immer noch nicht!!

Hab ich etwas falsch gemacht??


Die systemctrl_user Libary fehlt, google danach Wink


RE: [TUT] VLF Hallo Welt. - pspkilled - 03.07.2010 21:31

ja schönes tut. ich hab es übrigens auf eigene faust gelernt und hab mich direkt der lieben psp gewidmet, in der abendschule hab ich grundkenntnisse gelernt und dann an der psp alles getestet und viel im www gelesen. es ist möglich direkt auf der psp anzufangen aber sau schwer.


RE: [TUT] VLF Hallo Welt. - Namenloser - 12.07.2010 17:13

@HellcatX
Oder einfach Updaten auf PSP SDK 1.0 Wink
Da ist die lib schon dabei Wink


RE: [TUT] VLF Hallo Welt. - HellcatX - 20.07.2010 19:02

Ok THX!!!

-- -- -- CFW i come to you -- -- --

MfG

HellcatX


RE: [TUT] VLF Hallo Welt. - philleb - 07.11.2010 17:22

Wisst ihr ob es möglich ist die VLF-Library auf einen Rechner zu portieren bzw. wisst ihr ob es eine Reverend Engeneered Version davon gibt? Greets


RE: [TUT] VLF Hallo Welt. - Dark_Monkey - 07.11.2010 20:45

du meinst die Library für eine PC-Programm. Falls du das meinst NEIN.


RE: [TUT] VLF Hallo Welt. - m33 - 07.11.2010 20:48

Ich will ja keinen neuen Thread erstellen, deshalb frage ich hier mal:
Was ist einfacher c oder c++ und mit was kann man mehr machen?
Wenn ich das so sehe, denke ich, dass die Codes nicht so schwer wie bei c sind.
Lasse mich gerne korrigieren.


RE: [TUT] VLF Hallo Welt. - HacKmaN - 07.11.2010 21:07

m33 :
Ich will ja keinen neuen Thread erstellen, deshalb frage ich hier mal:
Was ist einfacher c oder c++ und mit was kann man mehr machen?
Wenn ich das so sehe, denke ich, dass die Codes nicht so schwer wie bei c sind.
Lasse mich gerne korrigieren.


Der gesamte Code oben ist in C Wink
C ist wesentlich einfacher als C++, weil es lang nicht so viel Umfang hat. Für normale Programme (oder wenn du Sachen machen willst die mehr mit dem System zu tun haben) solltest du normales C lernen, wenn du aber Spiele programmieren willst solltest du C++ lernen.


RE: [TUT] VLF Hallo Welt. - m33 - 07.11.2010 21:09

Ok, danke.
Dann guck ich mir mal das Open Book von C von A-Z an.


RE: [TUT] VLF Hallo Welt. - philleb - 08.11.2010 16:22

Warum kann man die VLF-Lib nicht Portieren?