Возраст: 54 | | Сообщений: 50 Благодарности: 1 / 2 Репутация: 2 Предупреждений: 0
Друзья Тут: 13 лет 8 месяцев
5 топиков с новостью про локализацию библиотеки? если да, то затем чтобы читатель из любой статью мог скачать библиотеку) если ты про, то почему написано 5 топиков по программированию: каждый топик-новая тема о программировании для PSP
Возраст: 54 | | Сообщений: 50 Благодарности: 1 / 2 Репутация: 2 Предупреждений: 0
Друзья Тут: 13 лет 8 месяцев
Надыбал я тут кое-какую инфу после долгих поисков.. Я хотел бы попросить пользователей PSPinfo немного помочь мне.. А сделать надо очень простую и маленькую вещь:) Всё что мне нужно для моего исследования это ID Storage Keys(точнее их дамп). Его можно легко и просто снять с помощью программы IDStorageManager. IDStorageManager(скачать) Потом полученные ключи можно забрать в папке "PSP/GAME/IdStorageManager/keys", их я попрошу запихнуть в zip-архив, и залить на iso.pspinfo.ru (для безопасности поставить пароль"www.pspinfo.ru"). Потом вставить ссылку вместе с ответом, который должен выглядеть примерно так:
(Это схема по которой писать ответ) Мат. плата: Регион: Прошивка: Цвет: Модуль консоли(например 3g): Код наклейки с нижнего торца PSP: DATE CODE: SERIAL №: Глюки(если наблюда(ются\лись): Ссылка:
Особенно интересно для исследования будут следующие модели PSP: PSP 200X(TA 088v3), PSP 300X, PSP go. Теперь, как пользоваться IDStorageManager: 1. Запустить программу из XMB 2. Дождаться её загрузки и нажать квадрат, рядом с ним написано dump keys ВНИМАНИЕ! НИ НА КАКИЕ ДРУГИЕ ПУНКТЫ НЕ НАЖИМАЙТЕ!(крест и треугольник) После dump'а выйдете из программы нажав несколько раз на круг. 3. Подключитье PSP к компьютеру найдите папку "PSP/GAME/IdStorageManager/keys"(папку keys скопировать на компьютер и запихнуть в zip-архив) 4. Залить этот архив на iso.pspinfo.ru и поставить пароль(там же при залитии файла) "www.pspinfo.ru"- пароль. 5. Написать свой ответ в эту тему по схеме, которую давал. Ну вот и всё, что бы я хотел от Вас дорогие друзья! На будущее: Спасибо всем тем, кто помогает с ключами IDStorage, предоставляя их дамп от своей PSP! P.S. Если кому-то несложно, то сделайте дамп своих ключей на разных версиях прошивки(например начать с 6.20 и по нарастающей до 6.60)
Возраст: 54 | | Сообщений: 50 Благодарности: 1 / 2 Репутация: 2 Предупреждений: 0
Друзья Тут: 13 лет 8 месяцев
Если кто-то знает что-то про Pre-IPL PSP и готов поделиться этими знаниями, кто может дать ссылки, кто может помочь по изучению Pre-IPL, большая просьба написать в эту тему. Так же можно стучать в асю или скайп(aleksandryok)! Заранее благодарен всем тем, кто поможет!
Возраст: 54 | | Сообщений: 50 Благодарности: 1 / 2 Репутация: 2 Предупреждений: 0
Друзья Тут: 13 лет 8 месяцев
Народ вы его, в Li-Ion'ом нет памяти? Вы издеваетесь что-ли? Li-Ion'ые аккуы самые взрывоопасные!!! Никогда не смотрели аккум от ноута, а? Он там именно Li-Ion'ый. Не будь в них памяти ваши ноуты давно бы уже взорвались от перегрева!!! И кто разбирал аккум от PSP видел платку приделанную к нему там стоит EEPROM-память этого аккумулятора. А вы только и знаете про метод Пандоры.
Возраст: 54 | | Сообщений: 50 Благодарности: 1 / 2 Репутация: 2 Предупреждений: 0
Друзья Тут: 13 лет 8 месяцев
Всем привет! Всех с наступающим Новым Годом! Раз сегодня Новый Год, тогда сегодня мы будем писать новогоднюю программу. Заполняем поля как на рисунке: Сегодня я Вам немного расскажу о графике. Я напишу несколько частей о работе с графикой на PSP. Мы с Вами напишем программу, в которой по экрану PSP будут летать снежинки. Далее в папку с проектом Вам надо скопировать файлы из архива. А этот архив киньте в корень карты памяти PSP. И так, нам надо написать два исходных файла это "main.c" и "pspSetup.h" Все пояснения что к чему я сразу писал в коде, чтобы было проще разбираться... pspSetup.h:
#include "pspSetup.h"
typedef struct snow//создаём структуру с именем snow для хранения данных о снежинке
{
int pX, pY;//позиции снежинки по x и y
int ofX, ofY;//смещение позиций по x и y
}snow;
int snowDraw(const char* fileName, const int num)//создаём функцию для рисования снежинок, в функции два параметра: 1. имя файла с картинкой и 2. количество снежинок
{
int i;//переменная для использования в массиве
snow snowBall[num];//объявляем переменную снежинки с массивом num
Image* snow = loadImage(fileName);//загружаем файл картинки(снежинки)
srand(unsigned)time(NULL);//для генератора случайных чисел, чтобы каждый раз у снежинок при включении программы были новые позиции
fillScreenRect(RGB(255, 255, 255),0, 0, 480, 272);//рисуем фон(белый прямоугольник) 1. цвет 2. начальный x 3. начальный y 4. конечный x 5. конечный y
for(i=0;i<num;i++)
{
snowBall[i].pX=rand()%480+1;//генерируем начальную позицию снежинки по x
snowBall[i].pY=rand()%272+1;//генерируем начальную позицию снежинки по y
blitAlphaImageToScreen(0, 0, snow->imageWidth, snow->imageHeight, snow, snowBall[i].pX, snowBall[i].pY);//рисуем снежинку 1. начало рисования из картинки по x 2. начало рисования из картинки по y 3. конец рисования из картинки по x 4. конец рисования из картинки по y 5. путь к картинке 6. рисование картинки позиция по x 7. рисование картинки позиция по y
snowBall[i].ofX=rand()%8-4;//генерируем смещение снежинки по x
snowBall[i].ofY=rand()%8+1;//генерируем смещение снежинки по y
snowBall[i].pX+=snowBall[i].ofX;//суммируем данные для новой позиции снежинки по x
snowBall[i].pY+=snowBall[i].ofY;//суммируем данные для новой позиции снежинки по y
}
while(1)
{
fillScreenRect(RGB(255, 255, 255),0, 0, 480, 272);//рисуем фон(белый прямоугольник) 1. цвет 2. начальный x 3. начальный y 4. конечный x 5. конечный y
for(i=0;i<num;i++)
{
blitAlphaImageToScreen(0, 0, snow->imageWidth, snow->imageHeight, snow, snowBall[i].pX, snowBall[i].pY);//рисуем снежинку 1. начало рисования из картинки по x 2. начало рисования из картинки по y 3. конец рисования из картинки по x 4. конец рисования из картинки по y 5. путь к картинке 6. рисование картинки позиция по x 7. рисование картинки позиция по y
sceKernelDelayThread(8000);//задержка для плавного перемещения снежинок
snowBall[i].ofX=rand()%8-4;//генерируем смещение снежинки по x
snowBall[i].ofY=rand()%8+1;//генерируем смещение снежинки по y
snowBall[i].pX+=snowBall[i].ofX;//суммируем данные для новой позиции снежинки по x
snowBall[i].pY+=snowBall[i].ofY;//суммируем данные для новой позиции снежинки по y
//далее пойдёт код для возвращения снежинок на экран если они уже его пролетели
if(snowBall[i].pY>282)
{
snowBall[i].pY=-10;
}
if(snowBall[i].pX>490)
{
snowBall[i].pX=-10;
}
if(snowBall[i].pX<-10)
{
snowBall[i].pX=490;
}
}
flipScreen();//функция рисует все изображения и фигуры, которые мы загоняли в буфер
}
return 0;
}
int main()
{
pspDebugScreenInit();
SetupCallbacks();
initGraphics();//инициализация графики
snowDraw("src/snow.png", 20);//а вот и наша функция для рисования снежинок с параметрами: 1. имя файла с картинкой и 2. количество снежинок
sceKernelSleepThread();
return 0;
}
Компилируем и получившуюся программу копируем в "PSP/GAME/NewYear" Ну вот и всё! Ещё раз Всех с Наступающим Новым Годом! Удачи Вам, счастья, радости, ну и конечно же любви! Ваш, MALEXKIY
Сообщение отредактировано 31 декабря 2012 15:59. Редактировалось 3 раз(а)
Возраст: 54 | | Сообщений: 50 Благодарности: 1 / 2 Репутация: 2 Предупреждений: 0
Друзья Тут: 13 лет 8 месяцев
ему будет проще сверху накладывать чёрную картинку с изменением альфа канала т.к. все точки картинки чёрные.. для изменения цветной картинки надо знать все 480x272px от чего будет сильно грузиться psp и как часто у него случается psp будет вырубаться от переполнение буфера..
Сообщение отредактировано 20 декабря 2012 14:03. Редактировалось 1 раз(а)
Возраст: 54 | | Сообщений: 50 Благодарности: 1 / 2 Репутация: 2 Предупреждений: 0
Друзья Тут: 13 лет 8 месяцев
Всем привет после долгой разлуки! Надеюсь, что вы уже немного осилили c++, прочитав книгу из 3 Части. Вот новый Makefile Editor Сегодня я Вам расскажу о том как выводить значения переменных и как использовать цветной текст. Создаём папку с названием "print" на диске "C:\projects\psp". С помощью Makefile Editor'а создаём makefile. Заполняем поля как на скрине: Теперь приступим к коду: main.c
#include "pspSetup.h"
int main()
{
pspDebugScreenInit();
int i=89;//определяем переменную i и даём ей значение 89
textColor(RGB(255, 0, 0);//эта строчка задаёт цвет отображаемого текста
printf("%d", i);//%d нужно, чтобы наше число выводилось в десятичном виде
sceKernelExitGame();// выход из программы
return 0;
}
#include <pspkernel.h>// это самый главный заголовочный файл без него ничего работать не будет
#include <pspdebug.h>// это заголовочный файл для вывода на экран
#include <pspdisplay.h>// это заголовочный файл для работы экрана нашеё PSP
#define printf pspDebugScreenPrintf// чтобы не тащить за собой много кода сделаем определение printf будет обладать всеми теми же свойствами как и pspDebugScreenPrintf просто имя мы укоротили...
typedef unsigned char byte;// делаем определение типа byte т.к. его нет на psp, а byte - это беззнаковый char
#define RGB(r,g,b) (u32)(byte)(r)|(byte)(g)<<8)|(byte)(b)<<16))//определяем RGB для работы с цветом
#define textColor pspDebugScreenSetTextColor //делаем define чтобы не тащить за собой хвост..
#define setXY pspDebugScreenSetXY// делаем define чтобы не тащить за собой хвост..
PSP_MODULE_INFO("Print", 1, 2, 2);//эта строчка тоже обязательна! В кавычках мы пишем название программы. В нашем случае "Print"
int ExitCallback(int Arg1, int Arg2, void *Common)
{
sceKernelExitGame();
return 0;
}
int CallbackThread(SceSize Args, void *Argp)
{
int CallbackId;
CallbackId = sceKernelCreateCallback("Exit Callback", ExitCallback, NULL);
sceKernelRegisterExitCallback(CallbackId);
sceKernelSleepThreadCB();
return 0;
}
int SetupCallbacks(void)
{
int ThreadId = 0;
ThreadId = sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, 0, 0);
if (ThreadId >= 0)
{
sceKernelStartThread(ThreadId, 0, 0);
}
return ThreadId;
//весь выше перечисленный код до PSP_MODULE_INFO нужен для выхода из программы
}
Так же числа можно выводить в 8-ой и 16-ой системе с помощью printf. Для этого вместо "%d" надо написать "%o" (для 8-ой) или "%x" (для16-ой). Добавим этот код:
#include "pspSetup.h"
int main()
{
pspDebugScreenInit();
int i=89;
textColor(RGB(255, 0, 0);//эта строчка задаёт цвет отображаемого текста
setXY(0, 0);//задаём позицию символа
printf("%d\n", i);// 10 система счисления
printf("%o\n", i);// 8 система счисления
printf("%x\n", i);// 16 система счисления
sceKernelExitGame();// выход из программы
return 0;
}
И так, немного об RGB(r, g, b): 1. r- значение красного цвета от 0 до 255 2. g- значение зелёного цвета от 0 до 255 3. b- значение синего цвета от 0 до 255 Цвет можно выбирать в стандартном Paint'е, а потом использовать в программе. На этом урок заканчивается, но это ещё не всё! Вам домашнее задание! Используя полученные знания из 2 Части и 4 Части(которую Вы читаете сейчас) написать программу для перевода числа из 10-ой системы счисления в 8-ую и 16-ую Плюс к этому надо сделать, чтобы пользователь изменял число(прибавлял или убавлял его значение) программа должна работать в цикле while. И должно получиться что-то типа такого:
Всем удачи! Ваш, MALEXKIY Кто сделает Д/з отправляйте в личку я гляну!
Сообщение отредактировано 16 декабря 2012 19:17. Редактировалось 6 раз(а)
Возраст: 54 | | Сообщений: 50 Благодарности: 1 / 2 Репутация: 2 Предупреждений: 0
Друзья Тут: 13 лет 8 месяцев
Ссори забыл про структуры в C, они там есть!! Но классов там 100% нет!!!!!!! Притом структуры и классы почти одно и тоже!! Одно только у них различие.. В структурах переменные экземпляра открытые, а у классов - частные. Т.е к открытым переменным структур можно обратиться в любом месте программы, а к частной переменной класса только в том же классе!!! Вот 10 различий между ними
Сообщение отредактировано 2 декабря 2012 15:29. Редактировалось 2 раз(а)
"" and "PlayStation" are registered trademarks of Sony Computer Entertainment Inc. "", PSP and "UMD" are trademarks of Sony Computer Entertainment Inc. "", "XMB", "Memory Stick Duo" and the "Memory Stick Duo" logotype are trademarks of Sony Corp. All product titles, publisher names, trademarks, artwork and associated imagery are trademarks, registered trademarks and/or copyright material of the respective owners. All rights reserved.