KINGx - Das inoffizielle PlayStation Forum & News Portal

Normale Version: Sammelthread Source Codes
Sie sehen gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich möchte euch bitten hier die öffentlichen Sourcecodes einzutragen. Vllt findet der eine oder andere eine Inspiration für sein Homebrew. Ich werde anfangen eine Liste zu erstellen und es übersichtlich halten.

Achtung: wenn ihr ein Homebrew mithilfe eines Sourcecodes macht, dann schreibt es auch in den Credits rein
Dann hast du hier gleich mal einen SourceCode für ein einfaches Menü in C:

Spoiler: (anzeigen)

Beschreibung dazu HIER
Um das ding ein wenig in Pfad zu bringen eine Funktion um ein Bild mit Transparenz zu malen, für die OSLib.
Spoiler: (anzeigen)
Und hier noch eine Funktion um ein Text Dokument in eine char Array zu dumpen:
- lines: Maximale Anzahl der Linien
- lenght: Maximale Länge der einzelnen Linien.
- source: Pfad zur Datei.
- *line_i: Zeiger auf ein Integerer auf den die Linien Anzahl geschrieben wird.

Require:
- stdio.h
- stdlib.h
Spoiler: (anzeigen)
Hi,

also meine "openSource" Themen findet man bei code.google.com oder bei sourceforge...

Und immer daran denken: Jeder Source-Code sollte unter einer bestimmten Lizenz veröffentlicht werden. Im Rahmen dieser Lizenz kann der Code dann verwendet werden oder nicht...also einfach copy+paste und dann den Urheber in den Credits nennen reicht oft nicht aus...da solltet ihr euch etwas mehr Gedanken zu machen ;o)

Aber egal...will keinem die Stimmung vermiesen...
Also hier meine Links:

PSP Homebrew Common Lib
PSP Monzoom2GU Converter LIB
Mein HB MagicBowl

Viel Spaß und immer an die Lizenz in den Source-Codes denken....
LOGO.BMP -> BITMAP.C

Mit "Mach-One" (http://mach-one.uw.hu) lassen sich BMP-Dateien (24-Bit) in Hex-Code konvertieren und anschließend mittels include-Dateien "PG.H" und "PG.C" ganz einfach in den Programm-Code übernehmen. Die include-Dateien samt Source-Code Beispiel gibt's hier: (http://psptwist.com/download/hello-world-source-283.html).

"PG.C" enthält 10 Befehle, die mit "psp" anfangen und in "sce" umbenannt werden müssen, sonst funzt es nicht. Statt "pspDisplayWaitVblankStart" muss es dann "sceDisplayWaitVblankStart" heißen. "pspDisplaySetMode" muss in "sceDisplaySetMode" umbenannt werden, usw.

Code:
#include "pg.h"
#include "bitmap.c"

int xmain(void)
{
    unsigned long fc;
    
    pgInit();
    pgScreenFrame(2,0);

    pgFillvram(0);
    pgBitBlt(0,0,80,80,1,image_logo);
    pgScreenFlipV();
    pgWaitVn(100);
...
...
...
...
sceKernelExitGame();
return 0;
}

Noch ein Beispiel zum Einfügen von Grafiken in C-Code:

1) Bild-oder Grafikdatei im PNG-Format speichern.

2) PNG-Datei mit "BIN2C.EXE" in Hexcode konvertieren (z.B. "example.h").

3) "example.h" mit Editor öffnen. Sämtliche #-Einträge löschen, nur die static-zeile bearbeiten:

static unsigned char example [] =

4) "example.h" als include-Datei einbinden.

5) Image*, loadImageMemory und blitImageToScreen definieren. Fertig!

Spoiler: (anzeigen)
Dann poste ich hier auch mal ein paar Codes Wink

// Eine andere Wave in Vlf laden (muss *omg Datei sein)
LoadWave("ms0:/wave.omg");

PHP-Code:
/**
 * Load a custom wave from an *.omg model
 * 
 * @param path The path to an *.omg model
 * @return 0 on success
 */
int LoadWave(char *path)
{
    
vlfGuiSetModelFile(path);
    
ScePspFMatrix4 matrix;
    
ScePspFVector3 scale;

    
scale.scale.scale.8.5f;
    
gumLoadIdentity(&matrix);
    
gumScale(&matrix, &scale);
    
vlfGuiSetModelWorldMatrix(&matrix);

    return 
0;


// '\n' entfernen, welches von fgets an den String angehängt wird
correct_string("Hello", strlen("Hello"));

PHP-Code:
/**
 * Removes the '\n' in the string inserted by fgets
 * @param str The string to remove the '\n' from
 * @param length The length of str
 */
void correct_string (char *strint length)
{
    
int i;

    
/* remove the null terminator */
    
for (  0length; ++)
    {
        if ( 
str[i] == '\n' )
        {
            
str[i] = '\0';

            
/* we're done, so just exit the function by returning */
            
return;   
        }
    }


// Überprüfen, ob ein Verzeichnis existiert
int check = DirExists("ms0:/PSP/TEST");

PHP-Code:
/**
 * Check if a directory exists
 * @param dir The path to the directory to check
 * @return 1 if directory exists, 0 if not
 */
int DirExists(char *dir)
{
    
SceUID d sceIoDopen(dir);
    if(
0)
    {
        return 
0;
    }
    
sceIoClose(d);

    return 
1;


// Error und Success Message Fenster mit variabler Parameter-Übergabe in Vlf
#define WAVEFILE "ms0:/wave.omg"
Error("%s does not exist", WAVEFILE);
Success("%s does exist", WAVEFILE);

PHP-Code:
/**
 * Shows a normal message dialog
 *
 * @param fmt The string to show
 */
void Success(char *fmt, ...)
{
    
va_list list;
    
char msg[1024];    

    
va_start(list, fmt);
    
vsprintf(msgfmt, list);
    
va_end(list);

    
sceKernelVolatileMemUnlock(0);

    
vlfGuiMessageDialog(msgVLF_MD_TYPE_NORMAL|VLF_MD_BUTTONS_NONE);
}

/**
 * Shows an error message dialog
 *
 * @param fmt The string to show
 */
void Error(char *fmt, ...)
{
    
va_list list;
    
char msg[1024];    

    
va_start(list, fmt);
    
vsprintf(msgfmt, list);
    
va_end(list);

    
sceKernelVolatileMemUnlock(0);

    
vlfGuiMessageDialog(msgVLF_MD_TYPE_ERROR|VLF_MD_BUTTONS_NONE);

Ich habe ein kleines Programm geschrieben, mit dem man eine kleine figur über den Bildschirm bewegen kann (im RPG Maker 2000 Stil)
Hier ist der komplette sourcecode: Ansehen
in kommenden beispiel Videos habe ich folgende bilder benutzt:
Bilder (anzeigen)

Hier der Fortschritt in Videos:
videos (anzeigen)
EDIT: weiter fortgeschrittenen code und mehr videos und bilder eingefügt.
Frage an die Devs:
Ist jemand an einem Zip-Entpacker interessiert? Wenn ja dann würde ich den Source Code von meinem Proof of Concept noch ein wenig überarbeiten und hier hochladen.
Lg

// Open Source ftw!! siesta
Sind auch Pc Sources erlaubt? Big Grin
@-blue7: Der Source Code für den ZIP-Entpacker wäre hier gut aufgehoben!!!
@blue7: Ja, bin sehr interesiert Smile.
Du meinst denn den du auch bei CX verwendest, oder?
@knopper
Das ist nur ein Proof of Concept, kaum / gar nicht dokumentiert und muss an einigen Stellen noch angepasst werden, dass er 100% PSP-kompatibel ist.
Aber es funktioniert, wenn du programmieren kannst, dann findest du dich schon zurecht.

@pandoraboy
Ja, das ist die Grundlage dafür.

http://ubuntuone.com/p/15JU/
@-blue7: Anpassen ist kein Problem. Proof of Concept funzt!!!
Referenz-URLs