ОК, надеюсь ты положил всё в правильную папку т.е. game371(game352 или какая у тебя там) или в game с настроенным на 3хх Кернел, иначе последствия запуска - непредсказуемы.
Походу всётаки обновиться тебе надо, до 3.71 М33-3, ну да ладно, не хочешь - как хочешь. Как обещал высылаю исходник. Извиняюсь что в таком виде, просто лень заливаьб на ф/о, а аттачменты не пашут.
#include <pspsdk.h>
#include <stdio.h>
#include <zlib.h>
#include <malloc.h>
#include <pspkernel.h>
#include <pspdisplay.h>
#include <pspdebug.h>
#include <pspgu.h>
#include <psputility_msgdialog.h>
#include <psputility.h>
#include <string.h>
#include <psputility_osk.h>
PSP_MODULE_INFO("osk", 0, 1, 1);
PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER);
PSP_HEAP_SIZE_KB(20048);
static unsigned int __attribute__((aligned(16))) list[262144];
//Содержимое мессадж бокса
char cdata[] = {
0x56, 0x49, 0x6E, 0x66, 0x6F, 0x20, 0x43, 0x68, 0x61, 0x6E,
0x67, 0x65, 0x72, 0x0D, 0x0A, 0xD0, 0x9D, 0xD0, 0xB0, 0xD0, 0xBF, 0xD0, 0xB8, 0xD1, 0x81, 0xD0, 0xB0,
0xD0, 0xBD, 0x20, 0x70, 0x73, 0x70, 0x6F, 0x77, 0x6E, 0x65, 0x72, 0x27, 0xD0, 0xBE, 0xD0, 0xBC,
0x20, 0xD1, 0x81, 0xD0, 0xBF, 0xD0, 0xB5, 0xD1, 0x86, 0xD0, 0xB8, 0xD0, 0xB0, 0xD0, 0xBB, 0xD1,
0x8C, 0xD0, 0xBD, 0xD0, 0xBE, 0x20, 0xD0, 0xB4, 0xD0, 0xBB, 0xD1, 0x8F, 0x0D, 0x0A, 0x68, 0x74, 0x74,
0x70, 0x3A, 0x2F, 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x70, 0x73, 0x70, 0x78, 0x2E, 0x72, 0x75, 0x20,
0x28, 0x43, 0x29, 0x32, 0x30, 0x30, 0x37
};
char fdata[28930];
gzFile fil;
int f;
void *hbuff, *fbuff;
#define BUF_WIDTH (512)
#define SCR_WIDTH (480)
#define SCR_HEIGHT (272)
#define PIXEL_SIZE (4) /* change this if you change to another screenmode */
#define FRAME_SIZE (BUF_WIDTH * SCR_HEIGHT * PIXEL_SIZE)
#define ZBUF_SIZE (BUF_WIDTH SCR_HEIGHT * 2) /* zbuffer seems to be 16-bit? */
int SetupCallbacks();
int done = 0;
int UnPackLoad(void) {
fil=gzopen("ms0:/vshctrl.prx.gz","r");
gzread(fil,fdata,28930);
gzclose(fil);
f=sceIoOpen("ms0:/vshctrl.prx",PSP_O_WRONLY | PSP_O_CREAT | PSP_O_TRUNC, 0777);
sceIoWrite(f, &fdata, 28930);
sceIoClose(f);
sceIoRemove("ms0:/vshctrl.prx.gz");
return 0;
}
static void ConfigureDialog(SceUtilityMsgDialogParams *dialog, size_t dialog_size)
{
memset(dialog, 0, dialog_size);
dialog->size = dialog_size;
sceUtilityGetSystemParamInt(PSP_SYSTEMPARAM_ID_INT_LANGUAGE,
&dialog->language); // Prompt language
sceUtilityGetSystemParamInt(PSP_SYSTEMPARAM_ID_INT_UNKNOWN,
&dialog->buttonSwap); // X/O button swap
dialog->buttonSwap = 1;
dialog->unknown[0] = 0x11; // ???
dialog->unknown[1] = 0x13;
dialog->unknown[2] = 0x12;
dialog->unknown[3] = 0x10;
}
static void ShowMessageDialog(const char *message)
{
SceUtilityMsgDialogParams dialog;
ConfigureDialog(&dialog, sizeof(dialog));
dialog.unknown[10] = 1;
strcpy(dialog.message, message);
sceUtilityMsgDialogInitStart(&dialog);
for(;;) {
sceGuStart(GU_DIRECT,list);
sceGuClearColor(0x666666);
sceGuClearDepth(0);
sceGuClear(GU_COLOR_BUFFER_BIT | GU_DEPTH_BUFFER_BIT);
sceGuFinish();
sceGuSync(0,0);
switch(sceUtilityMsgDialogGetStatus()) {
case 2:
sceUtilityMsgDialogUpdate(1);
break;
case 3:
sceUtilityMsgDialogShutdownStart();
break;
case 0:
return;
}
sceDisplayWaitVblankStart();
sceGuSwapBuffers();
}
}
int PackPrepare(void) {
fil = gzopen("ms0:/vshctrl.prx.gz","w");
gzwrite(fil,fdata,28930);
gzclose(fil);
f = sceIoOpen("ms0:/header.prx", PSP_O_RDONLY, 0777);
hbuff=malloc(0x150);
sceIoRead(f, hbuff, 0x150);
sceIoClose(f);
f = sceIoOpen("ms0:/vshctrl.prx.gz", PSP_O_RDONLY, 0777);
int size=sceIoLseek(f, 0, SEEK_END);
sceIoLseek(f, 0, SEEK_SET);
fbuff=malloc(size);
sceIoRead(f, fbuff, size);
sceIoClose(f);
f = sceIoOpen("ms0:/vshctrl1.prx",PSP_O_WRONLY | PSP_O_CREAT | PSP_O_TRUNC, 0777);
sceIoWrite(f, hbuff, 0x150);
sceIoWrite(f, fbuff, size);
sceIoClose(f);
//sceKernelDelayThread(1*1000*1000);
sceIoRemove("ms0:/vshctrl.prx.gz");
sceIoRemove("ms0:/header.prx");
sceIoRemove("ms0:/vshctrl.prx");
free(hbuff);
free(fbuff);
return 0;
}
int CopyrightCheck(void) {
unsigned int count, sum;
sum=0;
for (count=0; count<=sizeof(cdata); count++) sum=sum+(cdata[count] xor 0x5A03);
return sum;
}
int main(int argc, char* argv[]) {
SetupCallbacks();
if (CopyrightCheck()!=0x43E33) sceKernelExitGame();
//sceKernelDelayThread(3*1000*1000);
// INIT GU!!!! it will not work without!!!
sceGuInit();
sceGuStart(GU_DIRECT,list);
sceGuDrawBuffer(GU_PSM_8888,(void*)0,BUF_WIDTH);
sceGuDispBuffer(SCR_WIDTH,SCR_HEIGHT,(void*)0x88000,BUF_WIDTH);
sceGuDepthBuffer((void*)0x110000,BUF_WIDTH);
sceGuOffset(2048 - (SCR_WIDTH/2),2048 - (SCR_HEIGHT/2));
sceGuViewport(2048,2048,SCR_WIDTH,SCR_HEIGHT);
sceGuDepthRange(0xc350,0x2710);
sceGuScissor(0,0,SCR_WIDTH,SCR_HEIGHT);
sceGuEnable(GU_SCISSOR_TEST);
sceGuDepthFunc(GU_GEQUAL);
sceGuEnable(GU_DEPTH_TEST);
sceGuFrontFace(GU_CW);
sceGuShadeModel(GU_FLAT);
sceGuEnable(GU_CULL_FACE);
sceGuEnable(GU_TEXTURE_2D);
sceGuEnable(GU_CLIP_PLANES);
sceGuFinish();
sceGuSync(0,0);
sceDisplayWaitVblankStart();
sceGuDisplay(GU_TRUE);
// INIT OSK
unsigned short intext[128] = { '3','.','7','1',' ','M','3','3','-','3' }; // text already in the edit box on start
unsigned short outtext[128] = { 0 }; // text after input
//Введите новое название
unsigned short desc[128] = { 0x412, 0x432, 0x435, 0x434, 0x438, 0x442, 0x435, 0x20, 0x43D, 0x43E, 0x432, 0x43E, 0x435, 0x20, 0x43D, 0x430, 0x437, 0x432, 0x430, 0x43D, 0x438, 0x435, 0x00 }; // de******ion
// unsigned short [cpr]
ShowMessageDialog(cdata);
SceUtilityOskData data;
memset(&data, 0, sizeof(data));
data.language = 9; // Русский
data.lines = 1; // just online
data.unk_24 = 1; // set to 1
data.desc = desc;
data.intext = intext;
data.outtextlength = 128; // sizeof(outtext) / sizeof(unsigned short)
data.outtextlimit = 10; // just allow 32 chars
data.outtext = outtext;
SceUtilityOskParams osk;
memset(&osk, 0, sizeof(osk));
osk.size = sizeof(osk);
osk.language = 8;
osk.buttonswap = 1;
osk.unk_12 = 17; // What
osk.unk_16 = 19; // the
osk.unk_20 = 18; // fuck
osk.unk_24 = 16; // ???
osk.unk_48 = 1;
osk.data = &data;
// Only ascii code is handled so only the input of the small letters is printed
int rc = sceUtilityOskInitStart(&osk);
if(rc) {
return 0;
}
while(!done) {
sceGuStart(GU_DIRECT,list);
sceGuClearColor(0x666666);
sceGuClearDepth(0);
sceGuClear(GU_COLOR_BUFFER_BIT | GU_DEPTH_BUFFER_BIT);
sceGuFinish();
sceGuSync(0,0);
switch(sceUtilityOskGetStatus()) {
case PSP_OSK_INIT :
break;
case PSP_OSK_VISIBLE :
sceUtilityOskUpdate(1); // 2 is taken from ps2dev.org recommendation - ***ня, с 1 лучше ся ведёт
break;
case PSP_OSK_QUIT :
sceUtilityOskShutdownStart();
break;
case PSP_OSK_FINISHED :
done = 1;
break;
case PSP_OSK_NONE :
default :
break;
}
sceDisplayWaitVblankStart();
sceGuSwapBuffers();
}
//Это потом надо будет убить
int r,i;
char bu[9];
for (i=0; i<=9; i++) bu[i]=data.outtext[i];
sceGuTerm();
//faccess.prx - грузится в кернел и списывает с ф0 vshctrl.prx в виде двух файлов - header.prx и vshctrl.prx.gz
SceUID mod = pspSdkLoadStartModule("faccess.prx", PSP_MEMORY_PARTITION_KERNEL);
if (mod < 0)
{
pspDebugScreenInit();
printf("Error 0x%08X loading/starting prx.\nExiting...\n", mod);
sceKernelDelayThread(10*1000*1000);
sceKernelExitGame();
}
UnPackLoad();
pspDebugScreenInit();
r=0x4650;
for(i = 0; i<=9; i++) {
fdata[r]=bu[i];
r+=2;
}
PackPrepare();
//flasher.prx - записывает vshctrl1.prx на ф0
mod = pspSdkLoadStartModule("flasher.prx", PSP_MEMORY_PARTITION_KERNEL);
if (mod < 0)
{
printf("Error 0x%08X loading/starting prx.\nExiting...\n", mod);
sceKernelDelayThread(10*1000*1000);
sceKernelExitGame();
}
sceIoRemove("ms0:/vshctrl1.prx");
sceKernelExitGame();
return 0;
}
int exit_callback(int arg1, int arg2, void *common) {
done = 1;
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;
}
Так это, ОСК под 1.50 вообще не пашет? Зафигом мне под 3.хх-то? Если уж и делать, то тогда под оба ядра, а не под какое-то одно...
А-то сейчас перепрошюсь, а потом окажется, что большую часть имеющегося софта менять нужно. Да и у меня сейчас большой напряг с инетом, чтобы выкачивать обновления и прочие патчи, а потом ещё и софт качать. Так что нафиг пока. Если уж ОСК не пашет, то пока и обойдусь...
pspowner
Что есть во всех этих новомодных прошивках, чего нету в 3.52 М33-2?
А-то может я бы и прошился.
Да и вообще, тогда придётся постоянно колупать Makefile, чтобы компилить его PSPxIDE, а так ломает, чесслово. (:
1) Ты можешь остаться на 3.52, но проги делать для 3хх
2) Ты можешь прошиться на 3.71 при этом ТЫ НЕ ПОТЕРЯЕШЬ возможность запускать 150 хомки. Какой смысл сидеть на старье?
Колупать? Чего колупать?
Ладно, как хош.
Последний раз редактировалось pspowner; 12.11.2007 в 14:46.
Другие консоли: PS3(CECHC 60Gb), DS lite, x360(20Gb/120Gb)
Регистрация: 11.05.2007
Возраст: 43
Сообщений: 2,509
Вы сказали Спасибо: 337
Поблагодарили 987 раз(а) в 579 сообщениях
Сила репутации: 1
Репутация: 947 
(это имя известно всем)
Итаг я тут чутка поковырялсо
дело в том что хедеры сильно изменились, причём некоторые нужно инклудить раньше других.
вобщемто всё вроде поправилось, окромя проверки чексуммы. она чёто на ксор ругается...
#include <pspsdk.h>
#include <stdio.h>
#include <zlib/zlib.h>
#include <malloc.h>
#include <pspkernel.h>
#include <pspdisplay.h>
#include <pspdebug.h>
#include <pspgu.h>
#include <psputility.h>
#include <psputility_msgdialog.h>
#include <string.h>
#include <psputility_osk.h>
PSP_MODULE_INFO("osk", 0, 1, 1);
PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER);
PSP_HEAP_SIZE_KB(20048);
static unsigned int __attribute__((aligned(16))) list[262144];
//Содержимое мессадж бокса
char cdata[] = {
0x56, 0x49, 0x6E, 0x66, 0x6F, 0x20, 0x43, 0x68, 0x61, 0x6E,
0x67, 0x65, 0x72, 0x0D, 0x0A, 0xD0, 0x9D, 0xD0, 0xB0, 0xD0, 0xBF, 0xD0, 0xB8, 0xD1, 0x81, 0xD0, 0xB0,
0xD0, 0xBD, 0x20, 0x70, 0x73, 0x70, 0x6F, 0x77, 0x6E, 0x65, 0x72, 0x27, 0xD0, 0xBE, 0xD0, 0xBC,
0x20, 0xD1, 0x81, 0xD0, 0xBF, 0xD0, 0xB5, 0xD1, 0x86, 0xD0, 0xB8, 0xD0, 0xB0, 0xD0, 0xBB, 0xD1,
0x8C, 0xD0, 0xBD, 0xD0, 0xBE, 0x20, 0xD0, 0xB4, 0xD0, 0xBB, 0xD1, 0x8F, 0x0D, 0x0A, 0x68, 0x74, 0x74,
0x70, 0x3A, 0x2F, 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x70, 0x73, 0x70, 0x78, 0x2E, 0x72, 0x75, 0x20,
0x28, 0x43, 0x29, 0x32, 0x30, 0x30, 0x37
};
char fdata[28930];
gzFile fil;
int f;
void *hbuff, *fbuff;
#define BUF_WIDTH (512)
#define SCR_WIDTH (480)
#define SCR_HEIGHT (272)
#define PIXEL_SIZE (4) /* change this if you change to another screenmode */
#define FRAME_SIZE (BUF_WIDTH * SCR_HEIGHT * PIXEL_SIZE)
#define ZBUF_SIZE (BUF_WIDTH SCR_HEIGHT * 2) /* zbuffer seems to be 16-bit? */
int SetupCallbacks();
int done = 0;
int UnPackLoad(void) {
fil=gzopen("ms0:/vshctrl.prx.gz","r");
gzread(fil,fdata,28930);
gzclose(fil);
f=sceIoOpen("ms0:/vshctrl.prx",PSP_O_WRONLY | PSP_O_CREAT | PSP_O_TRUNC, 0777);
sceIoWrite(f, &fdata, 28930);
sceIoClose(f);
sceIoRemove("ms0:/vshctrl.prx.gz");
return 0;
}
static void ConfigureDialog(pspUtilityMsgDialogParams *dialog, size_t dialog_size)
{
memset(dialog, 0, dialog_size);
dialog->base.size = dialog_size;
sceUtilityGetSystemParamInt(PSP_SYSTEMPARAM_ID_INT_LANGUAGE,
&dialog->base.language); // Prompt language
sceUtilityGetSystemParamInt(PSP_SYSTEMPARAM_ID_INT_UNKNOWN,
&dialog->base.buttonSwap); // X/O button swap
dialog->base.buttonSwap = 1;
// dialog->base.unknown[0] = 0x11; // ???
// dialog->base.unknown[1] = 0x13;
// dialog->base.unknown[2] = 0x12;
// dialog->base.unknown[3] = 0x10;
}
static void ShowMessageDialog(const char *message)
{
pspUtilityMsgDialogParams dialog;
ConfigureDialog(&dialog, sizeof(dialog));
//dialog.unknown[10] = 1; //Туто явно надо знать в какую структуру эту 1 запизать и что раньше под акновном понималось, смотри файл пспутилити.х
strcpy(dialog.message, message);
sceUtilityMsgDialogInitStart(&dialog);
for(;;) {
sceGuStart(GU_DIRECT,list);
sceGuClearColor(0x666666);
sceGuClearDepth(0);
sceGuClear(GU_COLOR_BUFFER_BIT | GU_DEPTH_BUFFER_BIT);
sceGuFinish();
sceGuSync(0,0);
switch(sceUtilityMsgDialogGetStatus()) {
case 2:
sceUtilityMsgDialogUpdate(1);
break;
case 3:
sceUtilityMsgDialogShutdownStart();
break;
case 0:
return;
}
sceDisplayWaitVblankStart();
sceGuSwapBuffers();
}
}
int PackPrepare(void) {
fil = gzopen("ms0:/vshctrl.prx.gz","w");
gzwrite(fil,fdata,28930);
gzclose(fil);
f = sceIoOpen("ms0:/header.prx", PSP_O_RDONLY, 0777);
hbuff=malloc(0x150);
sceIoRead(f, hbuff, 0x150);
sceIoClose(f);
f = sceIoOpen("ms0:/vshctrl.prx.gz", PSP_O_RDONLY, 0777);
int size=sceIoLseek(f, 0, SEEK_END);
sceIoLseek(f, 0, SEEK_SET);
fbuff=malloc(size);
sceIoRead(f, fbuff, size);
sceIoClose(f);
f = sceIoOpen("ms0:/vshctrl1.prx",PSP_O_WRONLY | PSP_O_CREAT | PSP_O_TRUNC, 0777);
sceIoWrite(f, hbuff, 0x150);
sceIoWrite(f, fbuff, size);
sceIoClose(f);
//sceKernelDelayThread(1*1000*1000);
sceIoRemove("ms0:/vshctrl.prx.gz");
sceIoRemove("ms0:/header.prx");
sceIoRemove("ms0:/vshctrl.prx");
free(hbuff);
free(fbuff);
return 0;
}
int CopyrightCheck(void) {
unsigned int count, sum;
sum=0;
for (count=0; count<=sizeof(cdata); count++) sum=sum+(cdata[count] xor 0x5A03);
return sum;
}
int main(int argc, char* argv[]) {
SetupCallbacks();
if (CopyrightCheck()!=0x43E33) sceKernelExitGame();
//sceKernelDelayThread(3*1000*1000);
// INIT GU!!!! it will not work without!!!
sceGuInit();
sceGuStart(GU_DIRECT,list);
sceGuDrawBuffer(GU_PSM_8888,(void*)0,BUF_WIDTH);
sceGuDispBuffer(SCR_WIDTH,SCR_HEIGHT,(void*)0x88000,BUF_WIDTH);
sceGuDepthBuffer((void*)0x110000,BUF_WIDTH);
sceGuOffset(2048 - (SCR_WIDTH/2),2048 - (SCR_HEIGHT/2));
sceGuViewport(2048,2048,SCR_WIDTH,SCR_HEIGHT);
sceGuDepthRange(0xc350,0x2710);
sceGuScissor(0,0,SCR_WIDTH,SCR_HEIGHT);
sceGuEnable(GU_SCISSOR_TEST);
sceGuDepthFunc(GU_GEQUAL);
sceGuEnable(GU_DEPTH_TEST);
sceGuFrontFace(GU_CW);
sceGuShadeModel(GU_FLAT);
sceGuEnable(GU_CULL_FACE);
sceGuEnable(GU_TEXTURE_2D);
sceGuEnable(GU_CLIP_PLANES);
sceGuFinish();
sceGuSync(0,0);
sceDisplayWaitVblankStart();
sceGuDisplay(GU_TRUE);
// INIT OSK
unsigned short intext[128] = { '3','.','7','1',' ','M','3','3','-','3' }; // text already in the edit box on start
unsigned short outtext[128] = { 0 }; // text after input
//Введите новое название
unsigned short desc[128] = { 0x412, 0x432, 0x435, 0x434, 0x438, 0x442, 0x435, 0x20, 0x43D, 0x43E, 0x432, 0x43E, 0x435, 0x20, 0x43D, 0x430, 0x437, 0x432, 0x430, 0x43D, 0x438, 0x435, 0x00 }; // de******ion
// unsigned short [cpr]
ShowMessageDialog(cdata);
SceUtilityOskData data;
memset(&data, 0, sizeof(data));
data.language = 9; // Русский
data.lines = 1; // just online
data.unk_24 = 1; // set to 1
data.desc = desc;
data.intext = intext;
data.outtextlength = 128; // sizeof(outtext) / sizeof(unsigned short)
data.outtextlimit = 10; // just allow 32 chars
data.outtext = outtext;
SceUtilityOskParams osk;
memset(&osk, 0, sizeof(osk));
osk.base.size = sizeof(osk);
osk.base.language = 8;
osk.base.buttonSwap = 1;
// osk.unk_12 = 17; // What
// osk.unk_16 = 19; // the
// osk.unk_20 = 18; // fuck
// osk.unk_24 = 16; // ???
// osk.unk_48 = 1;
osk.data = &data;
// Only ascii code is handled so only the input of the small letters is printed
int rc = sceUtilityOskInitStart(&osk);
if(rc) {
return 0;
}
while(!done) {
sceGuStart(GU_DIRECT,list);
sceGuClearColor(0x666666);
sceGuClearDepth(0);
sceGuClear(GU_COLOR_BUFFER_BIT | GU_DEPTH_BUFFER_BIT);
sceGuFinish();
sceGuSync(0,0);
switch(sceUtilityOskGetStatus()) {
case PSP_UTILITY_DIALOG_INIT :
break;
case PSP_UTILITY_DIALOG_VISIBLE :
sceUtilityOskUpdate(1); // 2 is taken from ps2dev.org recommendation - ***ня, с 1 лучше ся ведёт
break;
case PSP_UTILITY_DIALOG_QUIT :
sceUtilityOskShutdownStart();
break;
case PSP_UTILITY_DIALOG_FINISHED :
done = 1;
break;
case PSP_UTILITY_DIALOG_NONE :
default :
break;
}
sceDisplayWaitVblankStart();
sceGuSwapBuffers();
}
//Это потом надо будет убить
int r,i;
char bu[9];
for (i=0; i<=9; i++) bu[i]=data.outtext[i];
sceGuTerm();
//faccess.prx - грузится в кернел и списывает с ф0 vshctrl.prx в виде двух файлов - header.prx и vshctrl.prx.gz
SceUID mod = pspSdkLoadStartModule("faccess.prx", PSP_MEMORY_PARTITION_KERNEL);
if (mod < 0)
{
pspDebugScreenInit();
printf("Error 0x%08X loading/starting prx.\nExiting...\n", mod);
sceKernelDelayThread(10*1000*1000);
sceKernelExitGame();
}
UnPackLoad();
pspDebugScreenInit();
r=0x4650;
for(i = 0; i<=9; i++) {
fdata[r]=bu[i];
r+=2;
}
PackPrepare();
//flasher.prx - записывает vshctrl1.prx на ф0
mod = pspSdkLoadStartModule("flasher.prx", PSP_MEMORY_PARTITION_KERNEL);
if (mod < 0)
{
printf("Error 0x%08X loading/starting prx.\nExiting...\n", mod);
sceKernelDelayThread(10*1000*1000);
sceKernelExitGame();
}
sceIoRemove("ms0:/vshctrl1.prx");
sceKernelExitGame();
return 0;
}
int exit_callback(int arg1, int arg2, void *common) {
done = 1;
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;
}
Последний раз редактировалось pspowner; 13.11.2007 в 10:24.
MGF v.0.0.3.5 (12.11.2007)
+ Добавлена функция рисования одного символа (MGFFONT::RenderChar)
+ Добавлено выравнивание по пикселям при рисовании текста с MGFFONT_CENTER, чтобы текст не размывался.
+ Добавлена функция рисования линии (MGF::Gfx_RenderLine) http://elmortem.mirgames.ru/?path=psp
qsPSP v.0.4 (QSP 5.4.0)
* Исправлена ошибка со Sleep
* Исправлена ошибка при удалении символов в диалоге ввода текста
+ Добавлкна поддержка команды INPUT http://elmortem.mirgames.ru/?path=psp-qsp
Если кто не в курсе, то в поставке идёт книга-игра Д. Брославского "Подземелье Чёрного Замка". Это игра моего детства, и наверняка не только моего. (:
Я вот думаю, надо бы создавать уже пост в ветке про софт или помедитировать над графикой интерфейса?
Второе. Мы тут вчера с ВГВ выяснили, что он тестил не ту версию моего ВЧанжера т.е. тестил ту, которая без ГУИ и ОСК(при старте в ядре 1.50 виснет намертво). Видимо тажа ошибка у тебя, ты не пробовал эту - https://www.pspx.ru/forum/showpost.ph...6&postcount=10
(интересно, почему темы целиком никто не смотрит?)
Так вот, та версия что в 10ом посте работает, причём как в ядре 1.50, так и в 3.71 - что странно. И ОСК там работает, даже на слиме - это подтверждено.
так что если ты на ОСК окончательно не забил, советую посмотреть.
======Правда есть проблема с доступом в ф0 на слиме и вобще на 3.71 М33, хотя на толстой ПСП и 3.71 м33-2(3) я эту траблу заборол. Так что проблема только со слимом.
По сообщениям заграничной резедентуры, это дело можно вылечить -
Try to use vsh mode instead of user mode, this is:
Гляну.
На счёт просмотра тем - так хорошим тоном является обновлять первый пост. (: Ибо кто знает, сколько сотен постов там уже накатали, попробуй-ка найди среди них тот один с очень важным обновлением. (:
Всё откомпилил. У меня на ядре 3.71 работает.
Выставил BUILD_PRX=1 и кучу установил в 20000К
Всётаки впритык нехорошо память выделять, это я про 23500..
Полученный PRX впаковал в ебут вручную, через pack-pbp
Другие консоли: PS3(CECHC 60Gb), DS lite, x360(20Gb/120Gb)
Регистрация: 11.05.2007
Возраст: 43
Сообщений: 2,509
Вы сказали Спасибо: 337
Поблагодарили 987 раз(а) в 579 сообщениях
Сила репутации: 1
Репутация: 947 
(это имя известно всем)
Сообщение от pspowner
Всё откомпилил. У меня на ядре 3.71 работает.
Выставил BUILD_PRX=1 и кучу установил в 20000К
Всётаки впритык нехорошо память выделять, это я про 23500..
Полученный PRX впаковал в ебут вручную, через pack-pbp
PS. Мортем, если сам так и не разберёшься как компилить под 3ХХ (влом тебе это или ещё как), то могу я тебе компилить. Вобщем смотри сам.
Доброго вечера уважаемому собранию, спешу поделиться с вами результатами теста. Для проведения полевых испытаний была использована беленькая псп-слим нерусской сборки и 3го региона с прошивкою 3.71-2. приложение успешным образом стартовало и нарисовало симпотишное меню, реагирует на аналоговый стик и кнопки однако игнорирует д-пад.
за сим откланиваюсь, коли чё стучите в аську
Последний раз редактировалось l3VGV; 23.11.2007 в 19:57.