KINGx - Das inoffizielle PlayStation Forum & News Portal
C: Plugin - 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)
+---- Thema: C: Plugin (/showthread.php?tid=38211)


C: Plugin - D3lta - 19.03.2011 14:34

Ich möchte zu Übungszwecken einmal ein simples plugin Programmieren. Das Programm laüft als "Spiel" einwandfrei und ich wollte es in einplugin portieren. Was muss man dabei beachten? Und wie stelle es an, dass der Compiler mir ein plugin erstellt und keine Eboot? Noidea

mfg D3lta


RE: C: Plugin - ToXXiN - 19.03.2011 16:06

naja, bei der makefile darf bestimmt nicht eboot stehen...

außerdem kommt am anfang eines programmcodes ja immer die befehle, dass man es mit der home/ps taste verlassen kann, das muss auch weg, stadtdessen wahrscheinlich eine andere tastenkombi


RE: C: Plugin - HacKmaN - 19.03.2011 16:12

BUILD_PRX = 1
in die Makefile einfügen, die EBOOT sachen wegmachen.
Außerdem nicht build.mak benutzen, sondern build_prx.mak.


RE: C: Plugin - D3lta - 19.03.2011 16:16

Wenn man eine Tastencombi einprogrammiert... Google liefert bei mir auch nichts vernünftiges Sad . Ich weiß, wie man in de makefile einstellt, sodass eine prx herauskommt, aber viel mehr auch nicht... Noidea

mfg D3lta


RE: C: Plugin - HacKmaN - 19.03.2011 16:20

D3lta :
Wenn man eine Tastencombi einprogrammiert... Google liefert bei mir auch nichts vernünftiges Sad . Ich weiß, wie man in de makefile einstellt, sodass eine prx herauskommt, aber viel mehr auch nicht... Noidea

mfg D3lta


Du solltest dir das "Module Imports/Exports Tutorial" von pspdev.org durchlesen, da wird vieles über Plugins erklärt.
Außerdem brauchst du für Plugins MIPS Kentnisse und du musst dich gut mit dem PSP Kernel allgemein auskennen.


RE: C: Plugin - D3lta - 19.03.2011 16:25

Die Seite ist down... Sad Sad
Ein paar MIPS-Kenntnisse besitze ich, aber ich kenne mich nicht besonders gut mit dem Kernel aus.

mfg D3lta

EDIT: Es soll ja erst einmal nichts großes sein, braucht man für simple plugins auch MIPS- und Kernel-Kenntnisse?


RE: C: Plugin - HacKmaN - 19.03.2011 17:33

D3lta :
Die Seite ist down... Sad Sad
Ein paar MIPS-Kenntnisse besitze ich, aber ich kenne mich nicht besonders gut mit dem Kernel aus.

mfg D3lta

EDIT: Es soll ja erst einmal nichts großes sein, braucht man für simple plugins auch MIPS- und Kernel-Kenntnisse?


Link zur PDF

Nunja, Plugins sind lang nicht so einfach wie normale Homebrews. Du kannst z.B. nicht ohne weiteres Tasten abfragen, oder Text ausgeben.


RE: C: Plugin - D3lta - 19.03.2011 17:43

Vielen Dank, das kommt sofort nach dem beenden von dem MIPS-Kurs (ist ja nicht meh viel Big Grin). Hat sich erst einmal erledigt, kann geLock werden!

mfg D3lta


RE: C: Plugin - HacKmaN - 19.03.2011 17:44

D3lta :
Vielen Dank, das kommt sofort nach dem beenden von dem MIPS-Kurs (ist ja nicht meh viel Big Grin). Hat sich erst einmal erledigt, kann ge:closed: werden!

mfg D3lta


Wo lernst du MIPS?

Und wieso closen? Wenn du weitere Fragen hast, frag einfach in diesem Thread...


RE: C: Plugin - D3lta - 19.03.2011 17:46

Stimmt, ich nutze den Kurs den du irgendwo mal empfohlen hast: Linkhier, sehr gut und einfach beschrieben. Danke deswegen noch einmal...

mfg D3lta

EDIT: schon komisch: es gibt so viel zu lesen und es lohnt sich vll. wegen der NGP doch nicht mehr alles...


RE: C: Plugin - HacKmaN - 19.03.2011 17:52

D3lta :
Stimmt, ich nutze den Kurs den du irgendwo mal empfohlen hast: Linkhier, sehr gut und einfach beschrieben. Danke deswegen noch einmal...

mfg D3lta

EDIT: schon komisch: es gibt so viel zu lesen und es lohnt sich vll. wegen der NGP doch nicht mehr alles...


Jup, der Kurs ist super Wink
Und doch, es lohnt sich immer. MIPS ist warscheinlich die beste Assembler Sprache zum Anfangen. Außerdem gelten viele Themen, die in diesem Kurs beschrieben werden (Zahlensysteme, Grundaufbau von PCs, etc.) für alle Computer (Konsolen sind auch Computer, falls es jemand nicht weiß).


RE: C: Plugin - D3lta - 19.03.2011 17:56

Ja es ist einmal etwas anderes, sich direkt mit dem Prozessor zu beschäftigen, als mit dem System bei C usw, dadurch wird einam vieles klar. Es hilft enorm, die unterste Ebene eines Computers zu vertehen. Hat die PS3 eig auch einen MIPS? Die NGP wird doch einen AMD haben oder?

mfg D3lta


RE: C: Plugin - HacKmaN - 19.03.2011 18:02

Die PS3 hat einen Cell Prozessor. PS2 und PS1 dagegen haben wie die PSP einen MIPS Prozessor Wink


RE: C: Plugin - D3lta - 19.03.2011 18:09

HacKman :
Und wieso closen? Wenn du weitere Fragen hast, frag einfach in diesem Thread...

Bis zur nächsten Frage zu dem Thema wird eine laaaaaaange Zeit vergehen Big Grin
Wie viele Kerne hat die PS3 eig? Ich weiß, dass sie 8Threads hat (von denen 1 reserviert ist), aber was sagt das über die Kerne aus?
mfg D3lta


RE: C: Plugin - PSP_Lord - 19.03.2011 18:10

Die NGP wird einen ARM Cortex-A9 Prozessor haben. Du kannst ja, wenn du dich vorbereiten möchtest, ja schonmal die ARM Assembly language durchlesen. MIPS Kenntnisse sind hilfreich, wenn du mit ARM Assembly anfangen willst.


RE: C: Plugin - D3lta - 19.03.2011 18:14

PSP_Lord :
Die NGP wird einen ARM Cortex-A9 Prozessor haben. Du kannst ja, wenn du dich vorbereiten möchtest, ja schonmal die ARM Assembly language durchlesen. MIPS Kenntnisse sind hilfreich, wenn du mit ARM Assembly anfangen willst.


Erstmal steht bei mir PS3 auf dem Plan, aber ohne CFW Wink
Daher hat das mit dem Assembler noch Zeit.

mfg D3lta

EDIT: Wie viele Nachkommastellen hat der Typ double in C eig, denn bei einem PI-Berechner, den ich einmal zu rÜbung gecodet habe, wurde sowohl mit cout, als auch mit printf nur 5 ausgegeben... Noidea


RE: C: Plugin - PSP_Lord - 19.03.2011 19:02

Nun, double ist ja 64 Bit double precision, also doppelte Genauigkeit, insofern müsstest du mehr als nur 5 Kommastellen bekommen.

64 Bit = 52 Bit übrig, um 15 Dezimalzahlen darzustellen.


RE: C: Plugin - pspbricker - 19.03.2011 19:06

Zitat:
EDIT: Wie viele Nachkommastellen hat der Typ double in C eig, denn bei einem PI-Berechner, den ich einmal zu rÜbung gecodet habe, wurde sowohl mit cout, als auch mit printf nur 5 ausgegeben...

Wahrscheinlich gibt die Funktion nur float Zahlen zurück.
Double würde ich auf der PSP nicht benutzen, da es sie es Hardwareseitig nicht unterstützt und sie nur durch Tricks mit dieser umgehen kann.
In der der <limits.h> kannst du die Maximalen Größen der Zahlen anschauen.


RE: C: Plugin - D3lta - 19.03.2011 19:32

Hat jemand eine Idee wie man alle 15 mit cout bzw printf ausgibt?

mfg D3lta

EDIT: @pspbricker: Ich habe wohl vergessen zu sagen, dass es auf dem PC war. Ich rechne in der Formel nur mit Doubles und Konstanten(zB 1;234). Die Variable ist auch eine Double, also wird wohl eher es nicht daran liegen.


RE: C: Plugin - D3lta - 20.03.2011 15:27

Beim kompieren bekomme ich immer folgende Fehler:

Zitat:
In function '_sbrk':
../../../../../../../newlib-1.17.0/newlib/libc/sys/psp/libglue.c:539: unfined reference to `sceKernelMaxFreeMemSize'


Woran könnte das liegen?

mfg D3lta


RE: C: Plugin - PSP_Lord - 20.03.2011 17:16

Adde mal in deinem makefile in der Zeile LIBS folgendes: -lpspuser

"undefined reference" bedeutet, dass du noch gegen eine library im makefile linken musst. Und zwar gegen die library, die die angegebene Methode enthält.


RE: C: Plugin - D3lta - 20.03.2011 17:52

Das hatte ich schon einmal, nur das Problem ist: welche LIB? -lpspuser ist es nicht, schade Sad

mfg D3lta


RE: C: Plugin - PSP_Lord - 21.03.2011 18:13

Adde mal LIBS = -lpsplibc, ....


RE: C: Plugin - D3lta - 21.03.2011 18:27

Hat auch nicht geholfen...


RE: C: Plugin - HacKmaN - 21.03.2011 18:32

Ohne Code können wir schlecht helfen.


RE: C: Plugin - D3lta - 21.03.2011 19:54

OK, ich habe einen Keylogger geschrieben, der die Tasteneingaben in eine log.txt protokolliert. Als Anwendung funktioniert das Programm. Aber als plugin kriege ich immer den oben gennanten Error

keylogger.c (anzeigen)
Makefile (anzeigen)
keylogger_exp.exp (anzeigen)
Die makefile ist noch nicht besonders gut, ist aber auch mein 1.plugin.
ich hoffe das hilft beim helfen Cool

mfg D3lta


RE: C: Plugin - HacKmaN - 21.03.2011 20:27

Versuch mal, nicht libc sondern sceIo für die Logs zu verwenden.


RE: C: Plugin - D3lta - 22.03.2011 15:40

Wie meinst du das?

mfg D3lta

P.S.:Lustig: Alle, die in diesem Thread gepostet haben haben ps4dev in ihrer sig setehen Big Grin


RE: C: Plugin - anmabagima - 22.03.2011 15:58

Hi,

anstelle fopen, fread usw. aus der standard lib zu nutzen, mit den PSP "built-in" funtkionen für files zu arbeiten also sceIoOpen, sceIoRead etc...

neben USE_KERNEL_LIBS=1 solltest du im Kernel-Mode Plugin auch USE_KERNEL_LIBC=1 nutzen...das sollte dein undefined reference problem lösen....


RE: C: Plugin - D3lta - 22.03.2011 16:17

Ich habe es kompiliert bekommen... Es scheint doch die -lpspuser gewesen zu sein, aber das letzte Mal hatte es nicht funktioniert... Ich werde mir mal sceIoOpen, sceIoRead etc... ansehen, doch da es noch nie meine Stärke war, Files zu benutzen habe ich lieber erst einmal die Standarts benutzt. Ich werde mein 1. Plugin jetzt testen!

mfg D3lta

EDIT: Es passiert nichts... -.-


RE: C: Plugin - D3lta - 01.04.2011 19:28

*push*
Mein plugin funktioniert immer noch nicht -.- Noidea
hier der Source:

keylogger.c (anzeigen)
makefile (anzeigen)
keylogger_exp.exp (anzeigen)
Hoffe mir kann einer helfen...

mfg D3lta


RE: C: Plugin - HacKmaN - 01.04.2011 19:33

Wie gesagt, benutze SceIo statt libc.

Code:
#define filemode PSP_O_RDWR | PSP_O_CREAT | PSP_O_TRUNC
...
SceUID fd = -1;
...

void writelog(char *string)
{
    sceIoWrite(fd, string, strlen(string));
    sceIoWrite(fd, "; ", strlen("; "));    
}

...

fd = sceIoOpen(logfile, filemode, 0777);
if(fd &lt; 0)
    // error

...

    sceIoWrite(fd, "--ENDE--\n", strlen("--ENDE--\n"));
    sceIoClose(log);

...




RE: C: Plugin - D3lta - 01.04.2011 19:38

Ich habe sie erstmal noch nicht verwendet, weil ich dachte, dass es erstmal noch keinen Unterschied macht. Ich wollte sie erst einführen, wenn das plugin funktioniert...

mfg D3lta


RE: C: Plugin - HacKmaN - 01.04.2011 19:42

D3lta :
Ich habe sie erstmal noch nicht verwendet, weil ich dachte, dass es erstmal noch keinen Unterschied macht. Ich wollte sie erst einführen, wenn das plugin funktioniert...

mfg D3lta


Verwende möglichst immer die Funktionen, die vom System direkt bereitgestellt werden (z.B. von SceIoFilemgr oder Sysmem).
Es kann sonst oft zu Problemen kommen. Soweit ich weiß, kann man zum Beispiel in Kernel PRXs kein malloc verwenden. Man kann aber stattdessen die Sysmem Funktionen (sceKernelAllocPartitionMemory/sceKernelGetBlockHeadAddr/sceKernelFreePartitionMemory) benutzen.
Wenn du also dein Plugin schnell mal von einem User zu nem Kernel Modul machen möchtest (oder umgekehrt), solltest du die systeminternen Funktionen benutzen. Ansonsten kannes sehr viel unnötige Arbeit schaffen Wink
Und ehrlich, man gewöhnt sich dran. Ich benutze inzwischen (auf der PSP) nur noch systeminterne Funktionen, keine libc mehr.


RE: C: Plugin - D3lta - 01.04.2011 19:51

Ich bin halt noch kein pro Wink
Ok, dann tausche ich mal die Funtionen aus...

mfg D3lta

EDIT: Kann man, wenn man eine eigene makefile einbindet, mit Dev-C++ für die PSP kompilieren?


RE: C: Plugin - D3lta - 01.04.2011 20:13

Ich bin halt noch kein pro Wink
Ok, dann tausche ich mal die Funtionen aus...

mfg D3lta

EDIT: Kann man, wenn man eine eigene makefile einbindet, mit Dev-C++ für die PSP kompilieren?
EDIT2: Der log ist immer noch leer... Sad Sad
@HacKmaN:

HacKmaN :
Wie gesagt, benutze SceIo statt libc.

Code:
...
    sceIoClose(fd);
...

muss es heißen Tongue


RE: C: Plugin - HacKmaN - 01.04.2011 20:16

Wird die Funktion von einem anderen Modul aus aufgerufen? Ansonsten kann es gar nicht funktionieren, weil keylog nicht aufgerufen wird^^

Die Frage von Dev-C++ kann ich nicht beantworten, ich weiß es nicht. Ich finde die Kombination Notepad++ und Minpspw sowieso besser. Falls du umbedingt n' IDE willst, kannst du auch Microsoft Visual Studeo C++ verwenden.


RE: C: Plugin - D3lta - 01.04.2011 20:25

Ich verwende Dev-C++ und MinPSP...
Ich habe das Modul in die vsh.txt eingetragen und der log füllt sich nicht...
Gibt es zwischen den in Programmen geladenen Modulen und plugins unterschiede??

mfg D3lta


RE: C: Plugin - HacKmaN - 01.04.2011 20:34

D3lta :
Ich verwende Dev-C++ und MinPSP...
Ich habe das Modul in die vsh.txt eingetragen und der log füllt sich nicht...
Gibt es zwischen den in Programmen geladenen Modulen und plugins unterschiede??

mfg D3lta


Logisch, dass sich der Log nicht füllt, wenn deine Hauptfunktion nicht aufgerufen wird^^
Ruf die Funktion von module_start aus auf, dann wirds funktionieren Wink


RE: C: Plugin - D3lta - 01.04.2011 20:44

Er tut es immer ncoh nicht -.-

mfg D3lta