|
Verfasser |
Nachricht |
Pac:Man
Experte
Beiträge: 866
Gruppe: User
Registriert seit: Oct 2009
Status:
Offline
Danke erhalten: 451
|
Sammelthread Source Codes
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
|
|
09.09.2010 21:01 |
|
Folgende User bedanken sich: |
|
_Kai_
be linux
Beiträge: 2.680
Gruppe: Programmierung
Registriert seit: Nov 2009
Status:
Abwesend
Danke erhalten: 2809
|
RE: Sammelthread Source Codes
Dann hast du hier gleich mal einen SourceCode für ein einfaches Menü in C:
#include <pspkernel.h>
#include <pspdebug.h>
#include <pspctrl.h>
PSP_MODULE_INFO("test", 0, 1, 1);
static int running = 1;
int exit_callback(int arg1, int arg2, void *common)
{
running = 0;
sceKernelExitGame();
return 0;
}
int CallbackThread(SceSize args, void *argp)
{
int cbid;
cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL);
sceKernelRegisterExitCallback(cbid);
sceKernelSleepThreadCB();
return 0;
}
int SetupCallbacks(void)
{
int thid = 0;
thid = sceKernelCreateThread("update_thread", CallbackThread, 0×11, 0xFA0, THREAD_ATTR_USER, 0);
if(thid >= 0) {
sceKernelStartThread(thid, 0, 0);
}
return thid;
}
int aktivmenu = 0;
int maxmenu = 2;
char menu[3][15] = {"Spiel starten","Spiel laden","Spiel beenden"};
void printmenu(){
int i;
for(i=0;i<maxmenu+1;i++)
{
if(aktivmenu == i)
{
pspDebugScreenPrintf("-> %s\n",menu[i]);
}
else
{
pspDebugScreenPrintf(" %s\n",menu[i]);
}
}
}
int main()
{
pspDebugScreenInit();
SetupCallbacks();
SceCtrlData pad;
int button = 0;
printmenu();
while(running)
{
sceCtrlReadBufferPositive(&pad, 1);
if((pad.Buttons & PSP_CTRL_DOWN) && (aktivmenu != maxmenu) && (button == 0))
{
aktivmenu++;
pspDebugScreenClear();
printmenu();
}
if((pad.Buttons & PSP_CTRL_UP) && (aktivmenu != 0) && (button == 0))
{
aktivmenu-=1;
pspDebugScreenClear();
printmenu();
}
if((pad.Buttons & PSP_CTRL_DOWN) || (pad.Buttons & PSP_CTRL_UP))
{
button = 1;
}
else
{
button = 0;
}
if((aktivmenu == 2) && (pad.Buttons & PSP_CTRL_CROSS))
{
sceKernelExitGame();
}
}
return 0;
}
Beschreibung dazu HIER
PSVita mit 16gb Memorystick und PlayStation+
+ Uncharted + Army Corps of Hell + Assassins Creed
+ NFS Most Wanted + COD Black Ops + Resistance
+ Everybodys Golf + Modnation Racers
Für PSN ID => PN
Dieser Beitrag wurde zuletzt bearbeitet: 09.09.2010 21:09 von _Kai_.
|
|
09.09.2010 21:08 |
|
|
|
pspbricker
Mod a.D.
Beiträge: 3.428
Gruppe: User
Registriert seit: May 2008
Status:
Offline
Danke erhalten: 1641
|
RE: Sammelthread Source Codes
Um das ding ein wenig in Pfad zu bringen eine Funktion um ein Bild mit Transparenz zu malen, für die OSLib.
void DrawImageAlpha(OSL_IMAGE *img,int alpha) {
if(alpha != 255)
{
sceGuTexFunc(GU_TFX_MODULATE, GU_TCC_RGBA);
sceGuColor(RGBA(255, 255, 255, alpha));
}
oslDrawImage(img);
if(alpha != 255)
sceGuTexFunc(GU_TFX_REPLACE, GU_TCC_RGBA);
sceGuColor(RGBA(255,255,255,255));
}
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
char** stream2array(int lines, int lenght, char *source, int *line_i) {
int i,counter = -1;
FILE *txt;
//buffer initialisieren
char *buffer;
buffer = malloc( sizeof(char*)* lenght);
//linien initialisieren
char **array;
array = (char **) malloc(sizeof(char*) * lines);
//Speicher für jede Linie intilialisieren
for ( i = 0; i < lenght; ++i)
*(array+i) = (char*)malloc(sizeof(int)*lenght);
txt = fopen(source,"r");
while(fgets(buffer, lenght, txt) != NULL && counter < lines) {
counter++;
strncpy (array[counter],buffer,lenght);
}
*line_i = counter;
//free
free(buffer);
return array;
}
Meine PS3 Games : Warhawk , NFS: Pro Street, Motorstorm ,Midnight Club LA, LittleBigPlanet, GTA4, Uncharted 2, Overlord, Killzone2, PES10, Battlefield ´43, Socom: Confrontation,
Forum Regeln Beachten! KEIN ISO Talk! KEINE Beleidigungen! KEINE illegalen Links!
Dieser Beitrag wurde zuletzt bearbeitet: 09.09.2010 21:29 von pspbricker.
|
|
09.09.2010 21:24 |
|
Folgende User bedanken sich: |
|
anmabagima
Ex-Developer
Beiträge: 348
Gruppe: User
Registriert seit: Dec 2009
Status:
Offline
Danke erhalten: 530
|
RE: Sammelthread Source Codes
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....
|
|
10.09.2010 14:01 |
|
Folgende User bedanken sich: |
|
knopper
Halbprofi
Beiträge: 135
Gruppe: User
Registriert seit: Apr 2010
Status:
Offline
Danke erhalten: 58
|
RE: Sammelthread Source Codes
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.
#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;
}
PSP 3004, FW 6.6
|
|
23.09.2010 11:55 |
|
Folgende User bedanken sich: |
|
knopper
Halbprofi
Beiträge: 135
Gruppe: User
Registriert seit: Apr 2010
Status:
Offline
Danke erhalten: 58
|
RE: Sammelthread Source Codes
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!
.
#include "graphics.h"
#include "example.h" // Hex-Code der PNG-Datei
Image * iexample ;
int main() {
iexample = loadImageMemory(example, sizeof(example));
blitImageToScreen(0, 0, 480, 272, iexample, 0, 0);
flipScreen();
free(iexample);
sceKernelExitGame();
return 0;
}
PSP 3004, FW 6.6
|
|
06.07.2011 11:31 |
|
|
|
-blue7
/dev/null/
Beiträge: 1.926
Gruppe: Mod a.D.
Registriert seit: May 2009
Status:
Abwesend
Danke erhalten: 1768
|
RE: Sammelthread Source Codes
Dann poste ich hier auch mal ein paar Codes
// Eine andere Wave in Vlf laden (muss *omg Datei sein)
LoadWave("ms0:/wave.omg");
/** * 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.x = scale.y = scale.z = 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"));
/** * 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 *str, int length) { int i;
/* remove the null terminator */ for ( i = 0; i < length; ++i ) { 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");
/** * 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(d < 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);
/** * 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(msg, fmt, list); va_end(list);
sceKernelVolatileMemUnlock(0);
vlfGuiMessageDialog(msg, VLF_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(msg, fmt, list); va_end(list);
sceKernelVolatileMemUnlock(0);
vlfGuiMessageDialog(msg, VLF_MD_TYPE_ERROR|VLF_MD_BUTTONS_NONE); }
[Ex-Moderator] ; [Ubuntu-User] ; [Designer] ; [Coder] ;
running out of bugs`.
___________________________________________
#define TRUE FALSE // Happy debugging suckers
// sometimes I believe gcc ignores all my comments
|
|
07.07.2011 11:25 |
|
|
|
Neutrosider
Developer
Beiträge: 2.442
Gruppe: Developer
Registriert seit: Feb 2010
Status:
Offline
Danke erhalten: 2325
|
RE: Sammelthread Source Codes
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:
Hier der Fortschritt in Videos:
EDIT: weiter fortgeschrittenen code und mehr videos und bilder eingefügt.
GEGEN ACTA, SOPA UND PIPA!
was sind ACTA, SOPA und PIPA?
Infos dazu hier (video), hier (video) und hier (website)
Dieser Beitrag wurde zuletzt bearbeitet: 09.07.2011 19:51 von Neutrosider.
|
|
07.07.2011 23:50 |
|
Folgende User bedanken sich: |
|
-blue7
/dev/null/
Beiträge: 1.926
Gruppe: Mod a.D.
Registriert seit: May 2009
Status:
Abwesend
Danke erhalten: 1768
|
RE: Sammelthread Source Codes
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!!
[Ex-Moderator] ; [Ubuntu-User] ; [Designer] ; [Coder] ;
running out of bugs`.
___________________________________________
#define TRUE FALSE // Happy debugging suckers
// sometimes I believe gcc ignores all my comments
|
|
18.07.2011 23:14 |
|
Folgende User bedanken sich: |
|
davdda
Captain Morgan
Beiträge: 2.482
Gruppe: User
Registriert seit: Dec 2010
Status:
Abwesend
Danke erhalten: 1220
|
RE: Sammelthread Source Codes
Sind auch Pc Sources erlaubt?
|
|
19.07.2011 14:54 |
|
|
|
knopper
Halbprofi
Beiträge: 135
Gruppe: User
Registriert seit: Apr 2010
Status:
Offline
Danke erhalten: 58
|
RE: Sammelthread Source Codes
@-blue7: Der Source Code für den ZIP-Entpacker wäre hier gut aufgehoben!!!
PSP 3004, FW 6.6
|
|
19.07.2011 15:08 |
|
|
|
pandoraboy
Team kryschen
Beiträge: 1.012
Gruppe: User
Registriert seit: Apr 2010
Status:
Abwesend
Danke erhalten: 510
|
RE: Sammelthread Source Codes
@blue7: Ja, bin sehr interesiert .
Du meinst denn den du auch bei CX verwendest, oder?
|
|
19.07.2011 15:08 |
|
|
|
-blue7
/dev/null/
Beiträge: 1.926
Gruppe: Mod a.D.
Registriert seit: May 2009
Status:
Abwesend
Danke erhalten: 1768
|
RE: Sammelthread Source Codes
@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/
[Ex-Moderator] ; [Ubuntu-User] ; [Designer] ; [Coder] ;
running out of bugs`.
___________________________________________
#define TRUE FALSE // Happy debugging suckers
// sometimes I believe gcc ignores all my comments
Dieser Beitrag wurde zuletzt bearbeitet: 19.07.2011 19:06 von -blue7.
|
|
19.07.2011 15:30 |
|
Folgende User bedanken sich: |
|
knopper
Halbprofi
Beiträge: 135
Gruppe: User
Registriert seit: Apr 2010
Status:
Offline
Danke erhalten: 58
|
RE: Sammelthread Source Codes
@-blue7: Anpassen ist kein Problem. Proof of Concept funzt!!!
PSP 3004, FW 6.6
|
|
20.07.2011 09:40 |
|
|
|