|
Verfasser |
Nachricht |
Littlefighter19
Profi
Beiträge: 441
Gruppe: User
Registriert seit: May 2010
Status:
Offline
Danke erhalten: 89
|
VLF Port von PSCrypter
Ich wollte zum lernen von C und zum coden, PSCrypter im VLF-Style machen, also habe ich ein wenig herum gespielt.
Wenn ich es kompilieren will, kommt aber:
main.o: In function `main_fix_realocations':
main.c:(.text+0x370): undefined reference to `pspDebugScreenPrintf'
main.c:(.text+0x4a8): undefined reference to `pspDebugScreenPrintf'
main.c:(.text+0x4d8): undefined reference to `pspDebugScreenPrintf'
main.o: In function `main_pack_pbp':
main.c:(.text+0x578): undefined reference to `pspDebugScreenPrintf'
main.c:(.text+0x608): undefined reference to `pspDebugScreenPrintf'
main.o:main.c:(.text+0x650): more undefined references to `pspDebugScreenPrintf'
follow
kirk_engine.o: In function `kirk_init':
kirk_engine.c:(.text+0x7f4): undefined reference to `time'
collect2: ld returned 1 exit status
make: *** [sample.elf] Error 1
Kann mir jemand helfen, ich habe bereits alle include dateien verglichen genauso wie die Makefiles.
Die Makefile von dem Port
TARGET = sample
OBJS = crt0.o main.o crypto.o kirk_engine.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 = -lvlfgui -lvlfgu -lvlfutils -lvlflibc -lpsppower
PSP_FW_VERSION = 150
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = PSCRYPTER V3.0
PSP_EBOOT_ICON = icon0.png
BUILD_PRX = 1
PSP_LARGE_MEMORY = 1
PSPSDK=$(shell psp-config --pspsdk-path)
include ./build.mak
In meiner main.c steht folgendes:
#include <pspsdk.h>
#include <psputility.h>
#include <pspkernel.h>
#include <pspdebug.h>
#include <pspctrl.h>
#include <pspsuspend.h>
#include <psppower.h>
#include <pspreg.h>
#include <psprtc.h>
#include <psputils.h>
#include <pspgu.h>
#include <pspgum.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <stdarg.h>
#include <time.h>
#include <malloc.h>
#include <sys/unistd.h>
#include <vlf.h>
PSP_MODULE_INFO("PSCRYPTERv3.0", 0, 1, 0);
PSP_MAIN_THREAD_ATTR(0);
int err = 0;
#define MAX_BUFFER_SIZE 1024*1024*5+1024*512
#define MAX_ORIGIN_FILE_SIZE 1024*1024*4
#define printf pspDebugScreenPrintf
#include "main_crypter.h"
#include "unpack-pbp.h"
#include "pack-pbp.h"
#include "fix-realocations.h"
typedef struct _SampleConfiguration
{
u16 username[32];
u16 password[32];
} SampleConfiguration;
int exit_callback(int arg1, int arg2, void *common)
{
sceKernelExitGame();
return 0;
}
int CallbackThread(SceSize args, void *argp)
{
int cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL);
sceKernelRegisterExitCallback(cbid);
sceKernelSleepThreadCB();
return 0;
}
int SetupCallbacks(void)
{
int thid = sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, 0, 0);
if (thid >= 0)
sceKernelStartThread(thid, 0, 0);
return thid;
}
char *filename_list[10] = {
"name","EBOOT_signed.PBP", "param.sfo", "icon0.png", "icon1.pmf", "pic0.png", "pic1.png", "snd0.at3", "data.psp", "data.psar"
};
// ENDE
char *license_text =
"PSCRYPTER v2.0 by Carlosgs.\n\n"
"Encrypt EBOOT.PBP files directly\n"
"from the PSP\n\n"
"Uses the code made by 'bbtgp'\n"
"and parts of the PSPSDK\n\n"
"2.0 added realocation fixing by JJS\n"
"THANK YOU!";
//SampleConfiguration config;
VlfPicture logo;
VlfText license, do_you_agree;
int focus;
VlfText username_label, password_label, crypter, signin;
VlfInputBox username, password;
VlfCheckBox rp;
int OnExit(int enter)
{
if (enter)
sceKernelExitGame();
return VLF_EV_RET_NOTHING;
}
/*
void OnSaveConfig(void *param)
{
int savepassword = (int)param;
if (!savepassword)
memset(config.password, 0, 32);
SceUID fd = sceIoOpen("config.bin", PSP_O_WRONLY | PSP_O_TRUNC | PSP_O_CREAT, 0777);
sceIoWrite(fd, &config, sizeof(SampleConfiguration));
sceIoClose(fd);
}
*/
/*
void OnLoginFadeOutComplete(void *param)
{
// Destruct old items
vlfGuiCancelBottomDialog();
vlfGuiRemoveText(username_label);
vlfGuiRemoveText(password_label);
vlfGuiRemoveText(rp_label);
vlfGuiRemoveText(signin);
vlfGuiRemoveInputBox(username);
vlfGuiRemoveInputBox(password);
vlfGuiRemoveCheckBox(rp);
// Construct new items
VlfText done = vlfGuiAddText(240, 110, "Sign in successfull!\nConfiguration saved.");
vlfGuiSetTextAlignment(done, VLF_ALIGNMENT_CENTER);
vlfGuiCustomBottomDialog(NULL, "Exit", 1, 0, VLF_DEFAULT, OnExit);
vlfGuiSetRectangleFade(0, VLF_TITLEBAR_HEIGHT, 480, 272-VLF_TITLEBAR_HEIGHT, VLF_FADE_MODE_IN, VLF_FADE_SPEED_SUPER_FAST, 0, OnSaveConfig, param, 0);
}
*/
/*
int OnLoginScreenUp(void *param)
{
switch (focus)
{
case 1:
focus = 0;
vlfGuiSetInputBoxFocus(password, 0);
vlfGuiSetInputBoxFocus(username, 1);
break;
case 2:
focus = 1;
vlfGuiSetCheckBoxFocus(rp, 0);
vlfGuiSetInputBoxFocus(password, 1);
break;
case 3:
focus = 2;
vlfGuiRemoveTextFocus(signin, 1);
vlfGuiSetCheckBoxFocus(rp, 1);
break;
}
return VLF_EV_RET_NOTHING;
}
int OnLoginScreenDown(void *param)
{
switch (focus)
{
case 0:
focus = 1;
vlfGuiSetInputBoxFocus(username, 0);
vlfGuiSetInputBoxFocus(password, 1);
break;
case 1:
focus = 2;
vlfGuiSetInputBoxFocus(password, 0);
vlfGuiSetCheckBoxFocus(rp, 1);
break;
case 2:
focus = 3;
vlfGuiSetCheckBoxFocus(rp, 0);
vlfGuiSetTextFocus(signin);
break;
}
return VLF_EV_RET_NOTHING;
}
int OnLogin(int enter)
{
if (enter)
{
if (focus == 3)
{
vlfGuiGetInputBoxText(username, config.username);
if (config.username[0] == 0)
{
vlfGuiMessageDialog("Username is empty!", VLF_MD_TYPE_ERROR | VLF_MD_BUTTONS_NONE);
return VLF_EV_RET_NOTHING;
}
vlfGuiGetInputBoxText(password, config.password);
if (config.password[0] == 0)
{
vlfGuiMessageDialog("Password is empty!", VLF_MD_TYPE_ERROR | VLF_MD_BUTTONS_NONE);
return VLF_EV_RET_NOTHING;
}
vlfGuiRemoveEventHandler(OnLoginScreenUp);
vlfGuiRemoveEventHandler(OnLoginScreenDown);
vlfGuiSetRectangleFade(0, VLF_TITLEBAR_HEIGHT, 480, 272-VLF_TITLEBAR_HEIGHT, VLF_FADE_MODE_OUT, VLF_FADE_SPEED_SUPER_FAST, 0, OnLoginFadeOutComplete, (void *)vlfGuiIsCheckBoxChecked(rp), 0);
return VLF_EV_RET_REMOVE_HANDLERS;
}
}
else
{
sceKernelExitGame();
}
return VLF_EV_RET_NOTHING;
}
*/
void OnLicenseAgreementFadeOutComplete(void *param)
{
// Destruct old items
vlfGuiRemoveText(license);
vlfGuiRemoveText(do_you_agree);
vlfGuiCancelBottomDialog();
// Construct new items
//vlfGuiBottomDialog(VLF_DI_CANCEL, VLF_DI_ENTER, 1, 0, VLF_DEFAULT, OnLogin);
vlfGuiCustomBottomDialog(NULL, "Exit", 1, 0, VLF_DEFAULT, OnExit);
sceIoMkdir("sign", 0777);
sceIoChdir("sign");
sceIoRemove("EBOOT_signed.PBP");
sceIoRemove("param.sfo");
sceIoRemove("icon0.png");
sceIoRemove("icon1.pmf");
sceIoRemove("pic0.png");
sceIoRemove("pic1.png");
sceIoRemove("snd0.at3");
sceIoRemove("data.psp");
sceIoRemove("data_unsigned.psp");
sceIoRemove("data.psar");
// printf("Unpacking EBOOT file...\n");
// username = vlfGuiAddInputBox("Username", 64, 65);
// password = vlfGuiAddInputBox("Password", 64, 115);
// username_label = vlfGuiAddText(87, 45, "Username");
// password_label = vlfGuiAddText(87, 95, "Password");
// rp = vlfGuiAddCheckBox(70, 150);
crypter = vlfGuiAddText(64, 65, "Unpacking EBOOT file...\n");
// signin = vlfGuiAddText(240, 195, "Sign In");
err = main_unpack_pbp();
if(err != 0)
{
crypter = vlfGuiAddText(64, 120, "Error while unpacking: %d\n");
// myexit();
}
// vlfGuiSetTextFontSize(username_label, 0.75f);
// vlfGuiSetTextFontSize(password_label, 0.75f);
// vlfGuiSetTextAlignment(signin, VLF_ALIGNMENT_CENTER);
// vlfGuiSetInputBoxType(password, VLF_INPUTBOX_TYPE_PASSWORD);
// vlfGuiSetInputBoxTextW(username, config.username);
// vlfGuiSetInputBoxTextW(password, config.password);
/*
if (config.username[0] == 0)
{
vlfGuiSetInputBoxFocus(password, 0);
focus = 0;
}
else if (config.password[0] == 0)
{
vlfGuiSetInputBoxFocus(username, 0);
focus = 1;
}
else
{
vlfGuiSetInputBoxFocus(username, 0);
vlfGuiSetInputBoxFocus(password, 0);
vlfGuiSetCheckBoxCheck(rp, 1);
vlfGuiSetTextFocus(signin);
focus = 3;
}
vlfGuiAddEventHandler(PSP_CTRL_UP, 0, OnLoginScreenUp, NULL);
vlfGuiAddEventHandler(PSP_CTRL_DOWN, 0, OnLoginScreenDown, NULL);
*/
vlfGuiSetRectangleFade(0, VLF_TITLEBAR_HEIGHT, 480, 272-VLF_TITLEBAR_HEIGHT, VLF_FADE_MODE_IN, VLF_FADE_SPEED_SUPER_FAST, 0, NULL, NULL, 0);
}
int OnLicenseAgreement(int enter)
{
if (enter)
{
vlfGuiSetRectangleFade(0, VLF_TITLEBAR_HEIGHT, 480, 272-VLF_TITLEBAR_HEIGHT, VLF_FADE_MODE_OUT, VLF_FADE_SPEED_SUPER_FAST, 0, OnLicenseAgreementFadeOutComplete, NULL, 0);
return VLF_EV_RET_REMOVE_HANDLERS;
}
sceKernelExitGame();
return VLF_EV_RET_NOTHING;
}
void StartSample()
{
license = vlfGuiAddText(100, 40, license_text);
vlfGuiSetTextScrollBar(license, 90);
do_you_agree = vlfGuiAddText(120, 210, "Are you ready?");
vlfGuiBottomDialog(VLF_DI_CANCEL, VLF_DI_ENTER, 1, 0, VLF_DEFAULT, OnLicenseAgreement);
//vlfGuiCustomBottomDialog(NULL, "Exit", 1, 0, VLF_DEFAULT, OnLicenseAgreement);
vlfGuiSetRectangleFade(0, VLF_TITLEBAR_HEIGHT, 480, 272-VLF_TITLEBAR_HEIGHT, VLF_FADE_MODE_IN, VLF_FADE_SPEED_SUPER_FAST, 0, NULL, NULL, 0);
}
int menu_sel(int sel)
{
switch (sel)
{
case 0:
StartSample();
vlfGuiRemovePicture(logo);
return VLF_EV_RET_REMOVE_HANDLERS | VLF_EV_RET_REMOVE_OBJECTS;
case 1:
sceKernelExitGame();
case 2:
sceKernelExitGame();
break;
}
return VLF_EV_RET_NOTHING;
}
int app_main(int argc, char *argv[])
{
// pspDebugScreenInit();
char *items[] = { "Start Crypter", "Exit", "Exit2" };
vlfGuiSystemSetup(1, 1, 1);
vlfGuiLateralMenu(3, items, 0, menu_sel, 100);
logo = vlfGuiAddPictureFile("logo.png", 95, 80); // png's are now supported
// SceUID fd = sceIoOpen("config.bin", PSP_O_RDONLY, 0);
// if (fd >= 0)
// {
// sceIoRead(fd, &config, sizeof(SampleConfiguration));
// sceIoClose(fd);
// }
while (1)
{
vlfGuiDrawFrame();
}
return 0;
}
Verlorene PSP 2000 R.I.P Hoffentlich hat sie einen würdigen Besitzer gefunden.
CFW 5.00 m33-6 mit den Spielen Tony Hawks und Tekken: Dark Resurrection und n Haufen voll HBs PCs are machines which never move but are always crashing
|
|
06.02.2011 21:09 |
|
|
|
Cha0z
Banned
Beiträge: 1.501
Gruppe: Banned
Registriert seit: Oct 2010
Status:
Abwesend
Danke erhalten: 436
|
RE: VLF Port von PSCrypter
main.c:(.text+0x370): undefined reference to `pspDebugScreenPrintf'
main.c:(.text+0x4a8): undefined reference to `pspDebugScreenPrintf'
main.c:(.text+0x4d8): undefined reference to `pspDebugScreenPrintf'
main.o: In function `main_pack_pbp':
main.c:(.text+0x578): undefined reference to `pspDebugScreenPrintf'
main.c:(.text+0x608): undefined reference to `pspDebugScreenPrintf'
Diese FUNKTION gibt es in VLF NICHT! da musst du vlfGuiAddText(1,1, "text"); benutzen
du kannst nihct so einfach portieren da musch du vlf gut kennen
Nun,da keiner von diesem Therad VLF kann (außer PSP_Lord und ich und Ceikor ) hier mal DL is NICHT mit source code da sich sonst jeder depp der nix kann des kutz c&p machen kann -.-:
mom ich upps grad
Alter Nick: Co$m0
Was für ein Lügner! Der Bearbeitet ein Bild mit schönen Paint -.-
Dieser Beitrag wurde zuletzt bearbeitet: 08.02.2011 16:13 von Cha0z.
|
|
06.02.2011 21:14 |
|
|
|
dark-awesome
stehn
Beiträge: 3.204
Gruppe: Banned
Registriert seit: Jul 2010
Status:
Offline
Danke erhalten: 2192
|
RE: VLF Port von PSCrypter
Das ganze mit dem Login brauchst du ja nicht oder den dann wäre der Code viel kleiner also so:
#include <pspsdk.h> #include <psputility.h> #include <pspkernel.h> #include <pspdebug.h> #include <pspctrl.h> #include <pspsuspend.h> #include <psppower.h> #include <pspreg.h> #include <psprtc.h> #include <psputils.h> #include <pspgu.h> #include <pspgum.h> #include <stdlib.h> #include <string.h> #include <stdio.h> #include <stdarg.h> #include <time.h> #include <malloc.h> #include <sys/unistd.h> #include <vlf.h>
PSP_MODULE_INFO("PSCRYPTERv3.0", 0, 1, 0); PSP_MAIN_THREAD_ATTR(0); int err = 0;
#define MAX_BUFFER_SIZE 1024*1024*5+1024*512 #define MAX_ORIGIN_FILE_SIZE 1024*1024*4
#define printf pspDebugScreenPrintf
#include "main_crypter.h" #include "unpack-pbp.h" #include "pack-pbp.h"
#include "fix-realocations.h"
int exit_callback(int arg1, int arg2, void *common) { sceKernelExitGame(); return 0; }
int CallbackThread(SceSize args, void *argp) { int cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL); sceKernelRegisterExitCallback(cbid); sceKernelSleepThreadCB(); return 0; }
int SetupCallbacks(void) { int thid = sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, 0, 0); if (thid >= 0) sceKernelStartThread(thid, 0, 0); return thid; }
char *filename_list[10] = { "name","EBOOT_signed.PBP", "param.sfo", "icon0.png", "icon1.pmf", "pic0.png", "pic1.png", "snd0.at3", "data.psp", "data.psar" };
char *license_text = "PSCRYPTER v2.0 by Carlosgs.\n\n" "Encrypt EBOOT.PBP files directly\n" "from the PSP\n\n" "Uses the code made by 'bbtgp'\n" "and parts of the PSPSDK\n\n" "2.0 added realocation fixing by JJS\n" "THANK YOU!";
VlfPicture logo; VlfText license, do_you_agree;
int OnExit(int enter) { if (enter) sceKernelExitGame(); return VLF_EV_RET_NOTHING; }
void OnLicenseAgreementFadeOutComplete(void *param) { // Destruct old items vlfGuiRemoveText(license); vlfGuiRemoveText(do_you_agree); vlfGuiCancelBottomDialog(); vlfGuiCustomBottomDialog(NULL, "Exit", 1, 0, VLF_DEFAULT, OnExit); sceIoMkdir("sign", 0777); sceIoChdir("sign");
sceIoRemove("EBOOT_signed.PBP"); sceIoRemove("param.sfo"); sceIoRemove("icon0.png"); sceIoRemove("icon1.pmf"); sceIoRemove("pic0.png"); sceIoRemove("pic1.png"); sceIoRemove("snd0.at3"); sceIoRemove("data.psp"); sceIoRemove("data_unsigned.psp"); sceIoRemove("data.psar"); crypter = vlfGuiAddText(64, 65, "Unpacking EBOOT file...\n");
err = main_unpack_pbp(); if(err != 0) { crypter = vlfGuiAddText(64, 120, "Error while unpacking: %d\n");
} vlfGuiSetRectangleFade(0, VLF_TITLEBAR_HEIGHT, 480, 272-VLF_TITLEBAR_HEIGHT, VLF_FADE_MODE_IN, VLF_FADE_SPEED_SUPER_FAST, 0, NULL, NULL, 0); }
int OnLicenseAgreement(int enter) { if (enter) { vlfGuiSetRectangleFade(0, VLF_TITLEBAR_HEIGHT, 480, 272-VLF_TITLEBAR_HEIGHT, VLF_FADE_MODE_OUT, VLF_FADE_SPEED_SUPER_FAST, 0, OnLicenseAgreementFadeOutComplete, NULL, 0); return VLF_EV_RET_REMOVE_HANDLERS; } sceKernelExitGame(); return VLF_EV_RET_NOTHING; } void StartSample() { license = vlfGuiAddText(100, 40, license_text); vlfGuiSetTextScrollBar(license, 90); do_you_agree = vlfGuiAddText(120, 210, "Are you ready?"); vlfGuiBottomDialog(VLF_DI_CANCEL, VLF_DI_ENTER, 1, 0, VLF_DEFAULT, OnLicenseAgreement); vlfGuiSetRectangleFade(0, VLF_TITLEBAR_HEIGHT, 480, 272-VLF_TITLEBAR_HEIGHT, VLF_FADE_MODE_IN, VLF_FADE_SPEED_SUPER_FAST, 0, NULL, NULL, 0); }
int menu_sel(int sel) { switch (sel) { case 0: StartSample(); vlfGuiRemovePicture(logo); return VLF_EV_RET_REMOVE_HANDLERS | VLF_EV_RET_REMOVE_OBJECTS; case 1: sceKernelExitGame(); case 2: sceKernelExitGame(); break; } return VLF_EV_RET_NOTHING; }
int app_main(int argc, char *argv[]) {
char *items[] = { "Start Crypter", "Exit", "Exit2" }; vlfGuiSystemSetup(1, 1, 1); vlfGuiLateralMenu(3, items, 0, menu_sel, 100); logo = vlfGuiAddPictureFile("logo.png", 95, 80); // png's are now supported while (1) { vlfGuiDrawFrame(); } return 0; }
Dieser Beitrag wurde zuletzt bearbeitet: 06.02.2011 21:30 von dark-awesome.
|
|
06.02.2011 21:24 |
|
|
|
PSP_Lord
Durchstarter
Beiträge: 87
Gruppe: User
Registriert seit: Sep 2010
Status:
Abwesend
Danke erhalten: 133
|
RE: VLF Port von PSCrypter
Richtig, Cha0z, bei vlfGuiAddText musst du aber in zweierler Hinsicht aufpassen. 1.) Der PSP scheint es nicht zu gefallen, wenn du zwei vlfGuiAddText Objekte hast (wenn du also zwei Funktionen diesen Types aufrufst).
Außerdem musst du aufpassen, wenn du eine Remove Metode in eine Fubktion packst, die öfters aufgerufen wird. Wenn das VlfText Objekt gar nicht mehr vorhanden ist und du es dann versucht zu löschen, wird die PSP freezen.
Warum erzähl ich dir das? Ganz einfach, dieser Fehler ist nicht leicht zu finden und stellt eine Präventionsmaßnahme dar.
Beispiel code:
//variables
VlfText welcome_message
//functions
int homebrew_main(int argc, char *argv[]) {
//35: position of our text on the x-axis
//20: positon of our text on the y-axis
//"hey, welcome to my program": the text to display (can also be a pointer to a char)
welcome_message = vlfGuiAddText(35, 20, "Hey, welcome to my program =)");
....
}
/* make sure to call this function ONLY with an existing welcome_message object...
...otherwise freeze */
void finish() {
vlfGuiRemoveText(welcome_message);
...
}
-end of code
So, dieser code ist nur zu Demo Zwecken gedacht, der Aufruf der Methode "vlfGuiAddText" liefert ein Objekt vom Typ "VlfText" zurück, wir speichern diesen Rückgabewert also in eine Variable von diesem Typ (welcome_message). Mit diesem Objekt können wir nun eine ganze Menge weiterer Funktionen aufrufen, z.B. vlfGuiSetTextScrollBar(welcome_message, 180). Diese Funktion erstellt eine Scrollbar um unser VlfText Objekt, also um unseren Text.
In der vlf Sample von Dark-Alex sind viele Funktionen aufgeführt, für eine echte Dokumentation empfehle ich dir aber die vlf header Datei (vlf.h) durchzulesen.
|
|
06.02.2011 21:42 |
|
Folgende User bedanken sich: |
|
PSP_Lord
Durchstarter
Beiträge: 87
Gruppe: User
Registriert seit: Sep 2010
Status:
Abwesend
Danke erhalten: 133
|
RE: VLF Port von PSCrypter
Der code ist zwar schon etwas kleiner, dennoch könnetst du noch weitere Sachen verändern.
Ein paar dieser include files sind überflüssig, hier die wichtigsten, die du haben solltest:
#include <pspkernel.h>
#include <stdio.h>
#include <vlf.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <pspdebug.h>
Eine zweite Sache, dei den code übersichtlicher machen würde ist, du packst den home-button callback in eine main.h und auch die includes:
#ifndef _MAIN_H
#define _MAIN_H
//includes
#include <pspkernel.h>
#include <stdio.h>
#include <vlf.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <pspdebug.h>
/* Exit callback */
int exit_callback(int arg1, int arg2, void *common) {
sceKernelExitGame();
return 0;
}
/* Callback thread */
int CallbackThread(SceSize args, void *argp) {
int cbid;
cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL);
sceKernelRegisterExitCallback(cbid);
sceKernelSleepThreadCB();
return 0;
}
/* Sets up the callback thread and returns its thread id */
int SetupCallbacks(void) {
int thid = 0;
thid = sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, 0, 0);
if(thid >= 0) {
sceKernelStartThread(thid, 0, 0);
}
return thid;
}
#endif
/* vim: set cin et sw=4 ts=4: */
deine main.c wäre dann so:
#include "main.h"
//module attributes
PSP_MODULE_INFO("PSCRYPTERv3.0", 0, 1, 0);
PSP_MAIN_THREAD_ATTR(0);
int err = 0;
#define MAX_BUFFER_SIZE 1024*1024*5+1024*512
#define MAX_ORIGIN_FILE_SIZE 1024*1024*4
#define printf pspDebugScreenPrintf
#include "main_crypter.h"
#include "unpack-pbp.h"
#include "pack-pbp.h"
#include "fix-realocations.h"
char *filename_list[10] = {
"name","EBOOT_signed.PBP", "param.sfo", "icon0.png", "icon1.pmf", "pic0.png", "pic1.png", "snd0.at3", "data.psp", "data.psar"
};
char *license_text =
"PSCRYPTER v2.0 by Carlosgs.\n\n"
"Encrypt EBOOT.PBP files directly\n"
"from the PSP\n\n"
"Uses the code made by 'bbtgp'\n"
"and parts of the PSPSDK\n\n"
"2.0 added realocation fixing by JJS\n"
"THANK YOU!";
VlfPicture logo;
VlfText license, do_you_agree;
int OnExit(int enter)
{
if (enter)
sceKernelExitGame();
return VLF_EV_RET_NOTHING;
}
void OnLicenseAgreementFadeOutComplete(void *param)
{
// Destruct old items
vlfGuiRemoveText(license);
vlfGuiRemoveText(do_you_agree);
vlfGuiCancelBottomDialog();
vlfGuiCustomBottomDialog(NULL, "Exit", 1, 0, VLF_DEFAULT, OnExit);
sceIoMkdir("sign", 0777);
sceIoChdir("sign");
sceIoRemove("EBOOT_signed.PBP");
sceIoRemove("param.sfo");
sceIoRemove("icon0.png");
sceIoRemove("icon1.pmf");
sceIoRemove("pic0.png");
sceIoRemove("pic1.png");
sceIoRemove("snd0.at3");
sceIoRemove("data.psp");
sceIoRemove("data_unsigned.psp");
sceIoRemove("data.psar");
crypter = vlfGuiAddText(64, 65, "Unpacking EBOOT file...\n");
err = main_unpack_pbp();
if(err != 0)
{
crypter = vlfGuiAddText(64, 120, "Error while unpacking: %d\n");
}
vlfGuiSetRectangleFade(0, VLF_TITLEBAR_HEIGHT, 480, 272-VLF_TITLEBAR_HEIGHT, VLF_FADE_MODE_IN, VLF_FADE_SPEED_SUPER_FAST, 0, NULL, NULL, 0);
}
int OnLicenseAgreement(int enter)
{
if (enter)
{
vlfGuiSetRectangleFade(0, VLF_TITLEBAR_HEIGHT, 480, 272-VLF_TITLEBAR_HEIGHT, VLF_FADE_MODE_OUT, VLF_FADE_SPEED_SUPER_FAST, 0, OnLicenseAgreementFadeOutComplete, NULL, 0);
return VLF_EV_RET_REMOVE_HANDLERS;
}
sceKernelExitGame();
return VLF_EV_RET_NOTHING;
}
void StartSample()
{
license = vlfGuiAddText(100, 40, license_text);
vlfGuiSetTextScrollBar(license, 90);
do_you_agree = vlfGuiAddText(120, 210, "Are you ready?");
vlfGuiBottomDialog(VLF_DI_CANCEL, VLF_DI_ENTER, 1, 0, VLF_DEFAULT, OnLicenseAgreement);
vlfGuiSetRectangleFade(0, VLF_TITLEBAR_HEIGHT, 480, 272-VLF_TITLEBAR_HEIGHT, VLF_FADE_MODE_IN, VLF_FADE_SPEED_SUPER_FAST, 0, NULL, NULL, 0);
}
int menu_sel(int sel)
{
switch (sel)
{
case 0:
StartSample();
vlfGuiRemovePicture(logo);
return VLF_EV_RET_REMOVE_HANDLERS | VLF_EV_RET_REMOVE_OBJECTS;
case 1:
sceKernelExitGame();
case 2:
sceKernelExitGame();
break;
}
return VLF_EV_RET_NOTHING;
}
int app_main(int argc, char *argv[])
{
char *items[] = { "Start Crypter", "Exit", "Exit2" };
vlfGuiSystemSetup(1, 1, 1);
vlfGuiLateralMenu(3, items, 0, menu_sel, 100);
logo = vlfGuiAddPictureFile("logo.png", 95, 80); // png's are now supported
while (1)
{
vlfGuiDrawFrame();
}
return 0;
}
|
|
06.02.2011 22:15 |
|
|
|
Littlefighter19
Profi
Beiträge: 441
Gruppe: User
Registriert seit: May 2010
Status:
Offline
Danke erhalten: 89
|
RE: VLF Port von PSCrypter
?? Wieso kommt jetzt eigentlich undefined reference, wie kann man das beheben?
Verlorene PSP 2000 R.I.P Hoffentlich hat sie einen würdigen Besitzer gefunden.
CFW 5.00 m33-6 mit den Spielen Tony Hawks und Tekken: Dark Resurrection und n Haufen voll HBs PCs are machines which never move but are always crashing
Dieser Beitrag wurde zuletzt bearbeitet: 08.02.2011 14:56 von Littlefighter19.
|
|
08.02.2011 14:49 |
|
|
|
Ceikor
Ex-Developer
Beiträge: 581
Gruppe: User
Registriert seit: Dec 2008
Status:
Abwesend
Danke erhalten: 701
|
RE: VLF Port von PSCrypter
Mal ehrlich leute, warum lernt ihr nicht zuerst richtig C/C++? Faulheit?!
Und nun zum Topic, wozu das ganze. Du wirst es eh nicht auf eine OFW zum laufen bingen weil du dort noch keine Module laden kannst.
Hierrüber könnt ich mich stunden lang kaput lachen:
char *items[] = { "Start Crypter", "Exit", "Exit2" };
Zu guter letzt drücke dich bitter etwas klarer aus.
Wenn das eine frage im bezug auf deinem ersten Post ist, lese. Cha0z hat dir die antwort gegeben und wenn du damit nichts anfangen kannst bist du falsch hier.
Dieser Beitrag wurde zuletzt bearbeitet: 08.02.2011 15:26 von Ceikor.
|
|
08.02.2011 15:17 |
|
Folgende User bedanken sich: |
|
Cha0z
Banned
Beiträge: 1.501
Gruppe: Banned
Registriert seit: Oct 2010
Status:
Abwesend
Danke erhalten: 436
|
RE: VLF Port von PSCrypter
Mal ehrlich leute, warum lernt ihr nicht zuerst richtig C/C++? Faulheit?!
Und nun zum Topic, wozu das ganze. Du wirst es eh nicht auf eine OFW zum laufen bingen weil du dort noch keine Module laden kannst.
Hierrüber könnt ich mich stunden lang kaput lachen:
char *items[] = { "Start Crypter", "Exit", "Exit2" };
Zu guter letzt drücke dich bitter etwas klarer aus.
Wenn das eine frage im bezug auf deinem ersten Post ist, lese. Cha0z hat dir die antwort gegeben und wenn du damit nichts anfangen kannst bist du falsch hier.
Gut gesagt! Exit 2 des eine spiel ^^
@LF: LoL, einfach nur LoL...
Ey lest mal mein ersten Post da ich upps grad muss noch was anderes machen
Alter Nick: Co$m0
Was für ein Lügner! Der Bearbeitet ein Bild mit schönen Paint -.-
|
|
08.02.2011 16:14 |
|
|
|
Littlefighter19
Profi
Beiträge: 441
Gruppe: User
Registriert seit: May 2010
Status:
Offline
Danke erhalten: 89
|
RE: VLF Port von PSCrypter
Der Witz daran ist nur, ich wusste bereits, das es mit printf nicht funktioniert. Aber was es mit time auf sich hat verstehe ich nicht. Ceikor, ich bin Anfänger, mir ist klar, das du mehr kannst, aber anstatt zu fluchen und dich über "Exit2" totzulachen, was ich gar nicht verstehe, da ich nur getestet habe, ob ein neuer Eintrag funktioniert, könntest du dich mal ein wenig netter Verhalten, und nicht versuchen alle Anfänger zu verjagen und danach fragt man sich, wieso es so wenig Coder gibt. Du bist so gesehen auch keine große Hilfe, außerdem hab ich auch nicht gesagt, dass ich es auf der OFW zulaufen bringen will, ich wollte es nur machen, um ein wenig "weiter" zu lernen, wie man auch im ersten Post entnehmen kann.
Ausserdem, tut mir Leid, anscheinend hatte ich nicht genügend analysiert, bevor ich geschrieben hab. Ich weiß jetzt, dass ich in den Includes, alle printf funktionen passend mit ersetzen muss.
Kann geclosed werden.
Verlorene PSP 2000 R.I.P Hoffentlich hat sie einen würdigen Besitzer gefunden.
CFW 5.00 m33-6 mit den Spielen Tony Hawks und Tekken: Dark Resurrection und n Haufen voll HBs PCs are machines which never move but are always crashing
Dieser Beitrag wurde zuletzt bearbeitet: 08.02.2011 16:41 von Littlefighter19.
|
|
08.02.2011 16:19 |
|
|
|
Fixie
Hungrig und Stur
Beiträge: 3.740
Gruppe: Banned
Registriert seit: Feb 2009
Status:
Offline
Danke erhalten: 1558
|
RE: VLF Port von PSCrypter
Mal ehrlich leute, warum lernt ihr nicht zuerst richtig C/C++? Faulheit?!
Und nun zum Topic, wozu das ganze. Du wirst es eh nicht auf eine OFW zum laufen bingen weil du dort noch keine Module laden kannst.
Hierrüber könnt ich mich stunden lang kaput lachen:
char *items[] = { "Start Crypter", "Exit", "Exit2" };
Zu guter letzt drücke dich bitter etwas klarer aus.
Wenn das eine frage im bezug auf deinem ersten Post ist, lese. Cha0z hat dir die antwort gegeben und wenn du damit nichts anfangen kannst bist du falsch hier.
Fühlst dich jetzt obercool weil du ihm in C-Sprache fertig gemacht hast?
Statt einfach die Finger von der Tastatur zu lassen.
|
|
08.02.2011 16:41 |
|
Folgende User bedanken sich: |
|
Littlefighter19
Profi
Beiträge: 441
Gruppe: User
Registriert seit: May 2010
Status:
Offline
Danke erhalten: 89
|
RE: VLF Port von PSCrypter
Gut gesagt godzilla, leider hatte er zwar Recht gehabt, dass Co$mo Recht hatte (wie peinlich), ich hatte es nur bereits probiert gehabt. Anscheinend hatte ich make clean vergessen.
Verlorene PSP 2000 R.I.P Hoffentlich hat sie einen würdigen Besitzer gefunden.
CFW 5.00 m33-6 mit den Spielen Tony Hawks und Tekken: Dark Resurrection und n Haufen voll HBs PCs are machines which never move but are always crashing
Dieser Beitrag wurde zuletzt bearbeitet: 08.02.2011 16:48 von Littlefighter19.
|
|
08.02.2011 16:44 |
|
|
|
Cha0z
Banned
Beiträge: 1.501
Gruppe: Banned
Registriert seit: Oct 2010
Status:
Abwesend
Danke erhalten: 436
|
RE: VLF Port von PSCrypter
Noch NICHT closen!
Erst uppe ich dann...
BIN FERTIG! muss nur noch ein sample hinzufügen
Alter Nick: Co$m0
Was für ein Lügner! Der Bearbeitet ein Bild mit schönen Paint -.-
Dieser Beitrag wurde zuletzt bearbeitet: 08.02.2011 17:10 von Cha0z.
|
|
08.02.2011 17:01 |
|
|
|
Ceikor
Ex-Developer
Beiträge: 581
Gruppe: User
Registriert seit: Dec 2008
Status:
Abwesend
Danke erhalten: 701
|
RE: VLF Port von PSCrypter
Dieser Beitrag wurde zuletzt bearbeitet: 08.02.2011 17:13 von Ceikor.
|
|
08.02.2011 17:07 |
|
Folgende User bedanken sich: |
|
Cha0z
Banned
Beiträge: 1.501
Gruppe: Banned
Registriert seit: Oct 2010
Status:
Abwesend
Danke erhalten: 436
|
RE: VLF Port von PSCrypter
@killagodzilla: Dir gehst gut ja? Geh zu Mutti heulen^^ Ich habe hier niemanden fertig gemacht, ich habe nur klip und klar gesagt was los ist, wenn ihr damit nicht zurecht kommt heult los, ich werd euch nicht daran hindern^^ und noch was das war OT und auf mir immer rumhacken wenn ich OT werde *lol* Kinder Kinder^^
@Littlefighter19: Ja ok dennoch fand ich diesen eintrag lustig^^ hab halt mein eigenen Humor^^
Nächstes mal erst aktualisieren und dann Posten
@Cha0z: Was willst du uppen??
PSCrypter v2.0 VLF Port by Cha0z
Alter Nick: Co$m0
Was für ein Lügner! Der Bearbeitet ein Bild mit schönen Paint -.-
|
|
08.02.2011 17:11 |
|
|
|
Littlefighter19
Profi
Beiträge: 441
Gruppe: User
Registriert seit: May 2010
Status:
Offline
Danke erhalten: 89
|
RE: VLF Port von PSCrypter
Ich bin schon fertig
Ich kann auch den source uppen.
Verlorene PSP 2000 R.I.P Hoffentlich hat sie einen würdigen Besitzer gefunden.
CFW 5.00 m33-6 mit den Spielen Tony Hawks und Tekken: Dark Resurrection und n Haufen voll HBs PCs are machines which never move but are always crashing
|
|
08.02.2011 17:14 |
|
|
|
|