Вход

Просмотр полной версии : PSPxIDE - среда разработки хомбрю


Страницы : 1 [2] 3 4

Dark_max
24.04.2007, 23:49
у меня есть советы по улучшению
вполне реальные
если заинтересует пиши в личку

респект за тетрис люблю игруху эту

S.k.o.r.p.i.o.n
28.04.2007, 15:38
Я так понимаю, чтобы пользоваться этой прогой нужно знать С++. Правильно?

kapusta
28.04.2007, 15:56
Народ, а где можно посмотреть какой-нибудь фак по спецефическим функциям псп, которых нет в с++? sceExitGame, sceSleepMode... В хелпе есть, но там всётки сложно въехать...

pspowner
28.04.2007, 18:15
http://psp.jim.sh/pspsdk-doc/

Нет, а что сложного то?

void SceKernelExitGame ( void )

Exit game and go back to the PSP browser.

Note:You need to be in a thread in order for this function to work



int sceKernelSleepThread ( void )
Sleep thread.

Returns: < 0 on error.

)) Я конеш сам не профи, но тут как раз вроде всё понятно )

deniska_spb_812
03.05.2007, 16:42
Если постов не было 5 дней, это заглохла ? :) Сейчас со шрифтами разбираемся, тогда и доделаю полноценную игру. Еще я английскую версию PSPxIDE подготавливал, да и уже следующую версию клепаю. Так что все путем :mail: ...

P.S. Расшифруй плиз фразу "жду гейта к тетрису "

FAQ или исходник с пояснениями чё и как.
Просто мне чёто очень сложно перейти с C# на C++

Dark_max
08.05.2007, 02:14
wSlawa я очень заждался выхода тетриса и тех обновлений что я тебе говорил, надеюсь они попадут туда все

надеюсь к 9 мая уложишься :)

wSlava
08.05.2007, 19:09
Спасибо за ожидания :) Да, уже почти готово, я перевел игру на новый движок (заодно этот движок усовершенствовал). Осталось, в принципе, меню доделать и все. А так вот что есть: Рекорды (HighScores), музыка проигрывается из папки PSP/MUSIC, фон в формате PNG/JPG, звуковые эффекты (как раз сейчас доделал чтоб микшировались эффекты с фоновой музыкой), еще доделал, что падение (когда вниз жмешь) фигурки контролируемое, то есть падает (быстро конечно), но пока жмешь.
В общем уже хочу игру выдать, а до этого все полуфабрикаты были...

добавлено через 17 минут
P.S. Сейчас неплохой мини-игровой движок под PSP получился, до этого приходилось не раз об стену лбом биться по многим моментам, так как внятного описания SDK нигде нет, вот и собирали по крупицам, зато сейчас все очень неплохо получилось, так что следующий проект думаю будет поинтересней :)

S.k.o.r.p.i.o.n
09.05.2007, 18:17
Ребят, посоветуйте литературу по С++. Написать игру для ЗЫЗ хочу, а не умею. В магазин зайдёшь, книг про С++ много, но они в основном написаны плохо. Хороших авторов нужна литература. Подскажите плиз?))

wdk
09.05.2007, 23:01
Бьерн Страуструп, автор С++. Вряд ли найдёшь что-то лучше.

Mortem
09.05.2007, 23:04
Страуструп и Липпман дадут тебе основы.
Затем долгое ковыряние исходников и попытки слобать что-нибудь самому.
Далее опять Страуструп и Липпман - увидишь их под другим углом.

wSlava
10.05.2007, 16:38
В догонку к трупустрауса :) вот что еще: дело не только в знании языка, самое главное в программировании - алгоритмистика, а здесь классика: Дональд Кнут (D. Knuth) и Hиколас Вирт (Niklaus Wirth), хотя это уже пригодится гораздо позже, сначала нужно сам язык освоить, думаю, сначала нужно именно C смотреть, там хорошие книги Керниган/Ричи http://lib.ru/CTOTOR/kernigan.txt , а затем браться за C++ Страуструпа.
По графике запутанней ситуация, много технологий, движков и т.д. Да и математику нужно знать неплохо, уровня школы не хватит (хотя есть кто умеет интуитивно воспринимать и изучать без теории), нужно уже владеть знаниями в области Аналитической геометрии, то бишь матрицы, векторы и.т.д. Основное разделение сейчас - это DirectX и OpenGL, так вот к PSP ближе всего OpenGL, так что лучше начинать с него
http://opengl.org.ru/books/open_gl/

Dark_max
10.05.2007, 21:36
Можно стать первым тестером игры?

wSlava
10.05.2007, 22:23
Dark_max (http://www.pspx.ru/forum/member.php?u=33342) Конечно, и в титрах напишу :)

Be3f
17.05.2007, 15:00
wSlava
Спасибо! Очень интересная и полезная вещь, очень перспективный проэкт! Респект! Будем смотреть... [только качаю...]
[смотрит скрин в шапке]
Ого... аппаратный PSP GU рендеринг? Спекулярные и диффузные карты?? Морфинг?? :rolleyes: Двойной респект!!
Кстати, ИМХО ты зря используешь 32битный цвет (GU_COLOR_8888) - попробуй 16-ти битный (GU_COLOR_5650) - разницы в качестве на глаз не заметишь, а вот в производительности очень даже! ;) Фреймбуффер ессно оставь 32-х битным.

wSlava
17.05.2007, 18:49
Be3f (http://www.pspx.ru/forum/member.php?u=20399) Спасибо, я чесно говоря, в графике не профессионал, так что такие моменты не сразу вижу :) Насчет GU_COLOR_5650 потестю. Кстати, тут Mortem мини-движок свой MGF портирует на psp, я уже тетрис полностью на него перевел, так же чуть дополнил, игра уже практически готова. Если все это интересно подробней узнать, то вступай в группу разработчиков на сайте, появится доступ к доп. разделу, там все подробней про наши дела можно узнать. Если еще и посильная помощь будет в программировании графики, то вообще супер :)

Bl@deAP
17.05.2007, 19:01
Кто может вот эту игру сделать под формат psp.(наверно есть среди вас разработчики и програмисты)
http://www.ifolder.ru/2030152 (http://www.ifolder.ru/2030152)
Буду вечно благодарен!(и думаю не только я)

wSlava
17.05.2007, 19:22
Bl@deAP (http://www.pspx.ru/forum/member.php?u=63628): Это ж вроде как Worms ? :)
В принципе ты натолкнул на одну интересную тему. Сначала все предлагают идею игры или существующую игру в качестве примера, которая, во первых, не навороченная (чтото типа аркад) и может быть реализована нами в разумное время (это мы подскажем , Atomic Tanks точно смогу сделать, даже покрасивше чем по твоей ссылке :)) , второе, этой игры еще нет на PSP, либо есть оригинальная идея существенного улучшения. Затем проведем голосование, и вариант с наибольшим числом голосов (опять же если это будет интересно более 2-3 человек) будет реализован под лэйблом pspx.ru. Жду предложений по этому поводу...

P.S. Be3f (http://www.pspx.ru/forum/member.php?u=20399), за Serious Dungeons вообще респект, очень круто! Интересно, где ты про GU информацию находил, тоже опытным путем? так же интересно взглянуть на какие нибудь исходники :)

Mortem
19.05.2007, 02:33
Лично у меня есть несколько идей для PSP, которые по разным причинам так и не удалось реализовать на PC, так что думаю на ближайшую сотню-другую лет работёнки хватит. (:
Так что стоит подумать над совместной разработкой чего-нибудь красивого, но не особо навороченного. Интересно, нашлись бы на этом сайте художники и моделеры? (:

Be3f
19.05.2007, 12:39
Спасибо, я чесно говоря, в графике не профессионал, так что такие моменты не сразу вижу :) Насчет GU_COLOR_5650 потестю.
Не за что, попробуй ещё пиксельформаты 5551 и 4444 - они ещё шустрее, но хуже качеством (особенно разница видна между текселями при интерполяции). Но оптимальное решение - это 5650, хотя всё завит от конкретного приложения и частного случая... Например, в Сириус Данжеонс все текстуры в 5650, а спрайты мелкого GFX (фаерболы, кровь) - в 4444.

И насчёт видеопамяти - у нас её всего 2 МБ. При этом, на 32-х битный фреймбуффер в 480х272 расходуется 1088 КБ + ещё 272 КБ уходит на буффер глубины. Итого, для текстур остаётся всего 688КБ видеопамяти, что есть очень мало =( Хватит всего на 7 текстур в 128х128 с мипиэпами, или на 2 в 256х256 с мипами. Так что для более-менее сложного 3Д-движка стоит написать динамический распределитель текстур, чтобы они сначала грузились в vram, а когда она заполнится - в основную оперативку.
Кстати, тут Mortem мини-движок свой MGF портирует на psp, я уже тетрис полностью на него перевел, так же чуть дополнил, игра уже практически готова.
Супер! Интересно будет посмотреть энжин... :rolleyes:
P.S. Be3f, за Serious Dungeons вообще респект, очень круто! Интересно, где ты про GU информацию находил, тоже опытным путем? так же интересно взглянуть на какие нибудь исходники :)
Спасибо! Движок писал не я, а немец Charnold, а я делал игру на движке. Исходников движка у меня, к сожалению нет :( (эхх, сколько всего мог-бы мог уже добавить в игру, будь у меня на руках сорцы движка... :rolleyes: ...ну ничего, мы с ним активно общаемся, так что всё будет ;) ). Доспупны только недавно зарелизенные им сорцы ранней (самой первой...) версии движка 0.1. >линк на сорцы< (http://dl.qj.net/Source-code-of-Dungeons-3D-Alpha-PSP-Homebrew-Games/pg/12/fid/13687/catid/195) Она конечно серьёзно отличается от современной 0.7 (не только в по наличию чисто "игровых" модулей, но и в плане рендерера, но тем-не-менее её код посмотреть ст0ит, тем более он достаточно прост и понятен интуитивно (хотя многие камменты и на немецком =)) ;) ).
С OpenGL знаком, хотя и не на шибко профессиональном уровне (писал ненавороченные демки под либу GLUT когда-то...), но опыта работы с PSP GU у меня толком нет... Хотя GU код это на 80% OGL код, так что особых проблем с переходом на него я не вижу, осбенно если юзать твою замечательную dev-env IDE ;)
Кстати, хотелось-бы разобратся, как на ЗЫЗе реализовать аппаратный рендеринг кривых высшего порядка (Безье), ака Сплайнов, ибо PSP GU аппаратно поддерживает NURBS, но вот в хомбрюшном SDK про это по-ходу ничего нет, видимо не доросло хомбрю-комьюнити до этого, девелоперы на зы2дев.орг писали, что многие блоки GU, особенно 2-й графический блок (геометрический) ещё до конца "не изучены" :(
Вот ещё мегаинтересная вещь - порт GLQuake для ЗЫЗ! Смотрите >эту тему< (http://forums.ps2dev.org/viewtopic.php?t=8077). Автор порта заменил вызовы OpenGL PSP-GU'шными и Quake прекрасно работает на ЗЫЗ (если запускать его из-под иршелл на 333МГц, то он меня выдаёт 106 средних FPS в бенчмарке timedemo1)! Конечно, порт ещё не доработан (не поддерживается лайтмэппинг, мипмэппинг, Ad-Hock мультиплеер (хотя есть Infrastructure, и я даже шпилил в неё по-сетке (>фото, 500Kb!< (http://img291.**************/img291/4293/dsc00290jh9.jpg))), очищения текстурного буффера, виртуальной клавы и ещё пары мелочей...) - но это пока закрытая бета, и это всё для беты очень хорошо! ИМХО эти сорцы - отличный пример портирования Open-GL игры с PC на PSP с GU рендерингом. >Прямая ссылка на исходники на сабвершене сорсфорджа< (https://sourceforge.net/svn/?group_id=158726). Компилите для себя, только плизз нигде не распространяйте готовые EBOOTы, автор очень не хочет, чтобы эта закрытая версия всплыла где-нить в сети! И, если хотите шпилить по инфраструктуре, то кидайте EBOOT в папку на стике, где у вас 3.XX kernel homebrew (а не 1.50 kernel) - игра использует новые сетевые PRX от прошивок 2.XX (отличные от модулей проши 1.50).
Хотелось-бы конечно написать свой движок, но это требует очень немало времени (которого у меня сейчас совсем нет :( ), да и зачем изобретать велосипед, когда есть такие люди, как Чарнольд? =) В ваш клан девелоперов конечно мог-бы вписатся, но не уверен, что буду принимать активное участие из-за этой-самой чёртовой нехватки времени... (=
За тетрис спасибо, очень понравился, реально лучший тетрис для ЗЫЗ, да и твои новые идеи для улучшенной версии мне очень нравятся!
Atomic Tanks точно смогу сделать, даже покрасивше чем по твоей ссылке ) , второе, этой игры еще нет на PSP, либо есть оригинальная идея существенного улучшения. Затем проведем голосование, и вариант с наибольшим числом голосов (опять же если это будет интересно более 2-3 человек) будет реализован под лэйблом pspx.ru. Жду предложений по этому поводу...

За Atomic Tanks +1! Уже несколько лет под-ряд рублюсь с друзьями на КПК в Atomic Cannon Elite - ИМХО лучшая Worms-подобная игра в мире! :crazy: Но КПК таскаю с собой всё реже и реже (из-за наличия ЗЫЗы =)), так что хотель-бы иметь эту игру ещё и в PSP...

Ещё очень хочу заполучить на ЗЫЗ замечательную ДОСовскую игрушку Jump'n'Bump для игры вдвоём на одной ЗЫЗ и по вай-фаю! :rolleyes: Из-под последнего DOSbox для ЗЫЗ игра не идёт :(
Под WinXP тоже не идёт, но запускается последним ДОCбоксом v0.70:

http://img157.**************/img157/236/jumppo7.jpg

Вот архивчик с игрой, если кто не знает что это такое:
->Скачать (http://befile.ru/download/82069a413778/jumpbump.rar.html)
О доступности исходников игры понятия не имею, но ИМХО написать её клон не составило-бы особо серьёзного труда, можно было-бы даже в LUA попробовать, хотя она упирается в скрипты, так что лучше было-бы себя не оганичивать и писать на С... У самого до этого руки вряд-ли доедут, может кто-нить хочет взятся? (:
ЗЫ. А вообще я C++ терпеть не могу - синтаксис ИМХО дико неинтуитивный... Другое дело Дельфи - тот-же старичёк Паскаль, но в удобной среде!

wSlava
19.05.2007, 14:50
Mortem (http://www.pspx.ru/forum/member.php?u=62340), в этой теме художник уже отписывался:
http://www.pspx.ru/forum/showpost.php?p=371650&postcount=5
можно к нему обратиться

Bl@deAP
20.05.2007, 18:00
Вот хотелось бы еще эти танчики
http://ifolder.ru/2071394
PS.Вот бы героев 2!!!

wSlava
20.05.2007, 18:18
Bl@deAP (http://www.pspx.ru/forum/member.php?u=63628) - quake-танки супер :) оригинально, еще и сетевой режим, мне понравилось

Bl@deAP
20.05.2007, 18:40
2wSlava можешь их переделать(я в програмировании не силен но было бы очень круто!!!!)

Be3f
23.05.2007, 19:00
>>Что скажете?<< (кликабельно) (http://pspupdates.qj.net/CSP-Development-Studio-Version-1-2-1/pg/49/aid/93134) :shock:

Mortem
23.05.2007, 21:10
Качаю, посмотрим, чем буржуины там занимаются...

Mortem
24.05.2007, 17:25
Про CSP Development Studio

И так. Tо, что предлагает нам товарищь MainaсX - не Development Studio. Хотя когда-нибудь может ею и станет. Сейчас это изобилующая багами прога с не интуитивным интерфейсом. Видимо ManiaсX - извращенец, но для того, чтобы создать новый проект - нужно сначала создать на своём компе директорию, а затем выбрать эту директорию в "Open Existing Project" и нажать кнопку "Open Project". Если то же самое вы проделаете во вкладке "Create New Project", то прога сообщит об ошибке и закроется.

Файла проекта нету, прога берёт файлы из указанной директории. Это дурость по моему.
Работа с файлами сделана как у wSlava, но он обещал в новых версиях сделать нормальное управление проекта.
Есть расцветка кода, но нет никаких признаков форматирования оного. Хотя вот Tab работает как отдельно, так и в связке с Shift и с выделенным текстом.
Дальше саму прогу смотреть не стал - не моё, это точно.
Ещё один минус в том, что прога поставляется вместе с PSPSDK. Причём лежит он в директории с пафосным названием CSPcompiler. Уж не знаю, совместим ли он с релизами от wSlava, пробовать не хотелось - снёс этот позор.

Вывод: Оно того не стоит!

Скриншоты:
Старт программы.
http://elmortem.mirgames.ru/gfx/screenshot/csp/csp_shot_0.gif
Работа с Makefile.
http://elmortem.mirgames.ru/gfx/screenshot/csp/csp_shot_1.gif

***

Очень жду новой версии PSPxIDE!!!

wSlava
26.05.2007, 13:40
Конкуренция - это хорошо, больше выбора у людей, кто хочет программировать. Чуть посмотрел CSP Development Studio, название конечно сильное, но в итоге, это очередной блокнот с запуском консольных утилит в бакгроунде...
У меня даже на сегодня есть запуск хомок с компьютера, а там просто полуручной старт утилиты PSPLINK, уже сейчас есть source - level отладчик под GDB, который пока не очень стабилен, но в следующих версиях это испралю.
Вот когда реализую все задумки и новшества, которые придумали совмесно с Mortem, тогда нанесем буржуям ответный удар :)

deniska_spb_812
28.05.2007, 17:35
Я нестал смотреть прогу но пословам понял что ужас. Тож жду новых версий PSPxIDE.

ALgraFx
13.06.2007, 23:54
Существует ли компилятор и линкер для написания программ для ПСП на ассемблере. Если не понятно написал - то мне нужен аналог ml.exe link.exe как на x86. От информации по асму для ПСП тоже не откажусь.

Если оффтоп извиняйте.

Mortem
14.06.2007, 01:09
Если не ошибаюсь - как-то ведь SDK собирали? Значит, так или иначе, ассемблер там присутствует. Как минимум в виде вставок в Сишный код.
Вообще поройся на форуме http://ps2dev.org - наверняка нароешь то, что тебя интересует.
Если есть знание английского - задай вопрос там, ответят быстрее и по существу - факт.

pspowner
14.06.2007, 09:45
Есть, называется bin/psp-as.exe входит в состав SDK c xorloser.com
И дизасемблер - psp-objdump.exe типа "psp-objdump -D eboot.pbp >source.s"

Есть даже описалово к MIPSу

wSlava
17.06.2007, 02:27
Вот демка на asm,TyRaNiD жжот :)
http://ps2dev.org/psp/Demos
файл с расширением S - это и есть указание для компилятора
что тут ASM, а далее все как обычно компилится
с помощью make, также можно комбинировать c/cpp/s файлы в проекте,
в любом случае сначала создаются .o файлы а далее все линкуется (обычная практика в компиляторах)
PSPxIDE тоже компилит, нужно открыть файл с расширнием .S (правда
синтасис расцветку и открытие по умолчанию для .S я не делал),
в Проект-> Опции нужно в окшке"Сначала исполнить в cmd код " указать "make" и далее все как обычно ...

ALgraFx
17.06.2007, 16:48
Всем спасибо! Буду ковырять!

koldun2
20.06.2007, 15:13
у меня есть один вопрос, даже предложение - может возможно создание читалки наподобие HaaliReader на pocketpc? Чтобы можно было выделять слово и, нажимая кнопку, всплывал перевод слова. Очень полезная была бы программа - особенно при чтении англоязычных ресурсов, книг и т.п. Я к сожалению, не владею тем ровнем программирования и т.п. знания для создания подобной программы, но очень хотелось бы ее иметь у себя на psp. Как Вы смотрите на создание такой читалки? Было бы очень удобно направлениями влево или вправо выбирать слово из строки, а направлениями вверх и вниз выбирать строку на экране. В HaaliReader даже словари Lingvo можно подцепить.

alex-vl
21.06.2007, 14:29
Notepad for PSP http://www.pspx.ru/forum/showthread.php?t=43392 это позволяет делать, только слово не надо выделять, а просто установить курсор на него.

V1tamin
24.06.2007, 15:15
Уважаемые разработчики хочу вас попросить что бы сворганили пару игрушек, если конечно получится,я и сам сейчас пробую но вдруг кто нибудь заинтересуется и сделает это быстрей!

Вообшем я хочу попросить ИГРОВЫЕ АВТОМАТЫ ДЛЯ PSP:kalyan:
Вот примерно что должно получится:
http://xegami.com/uploads/115cef31agif.gifhttp://xegami.com/uploads/20cc94cbagif.gif
http://xegami.com/uploads/3a7e0cbd2gif.gifhttp://xegami.com/uploads/497b952b6gif.gif

Буду ждать всевозможных ответов предложений и т.д и т.п.:help:
Если надо будет картинки я всё могу скинуть

pspowner
24.06.2007, 15:51
А ты точно уверен что нет такого эмулятора.. ?

V1tamin
24.06.2007, 17:32
Нет не уверен

добавлено через 7 минут
Если уто знает киньте сылочку

KpoL
02.07.2007, 21:36
Извините меня конечно. Может я слепой, но скоко не искал я тут туториала к PSPxIDE не нашёл. Дайте ссылочку пожалуйста :)

wSlava
03.07.2007, 23:29
Подробного туториала нету, есть помощь F1 из программы :)

Mortem
04.07.2007, 21:01
KpoL
"Подведите курсор к верхнему меню "Файл" и нажмите кнопку на мышке." - в таком стиле чтоль нужно?

KpoL
05.07.2007, 10:20
Просто я хотел научится программировать под PSP. Я ж не знаю этого языка. А тут вроде туториал обещали :)

pspowner
05.07.2007, 10:26
Та не "этот" язык, это C/C++
По нему учебник можно купить в любой лавке с компьютерной литературой.
Ну а сам API и примеры смотреть в хелпе прилагающемся к PSPSDK, или тута - http://psp.jim.sh/pspsdk-doc/

Есть кое-какие инструкции для начинающих, на английском...

MaZaHacKa
24.07.2007, 19:55
Объясните мне пожалуйста, что такое PSPSDK и где его взять.
wSlava: Ты крут, облегчил труд стольким людям! :)
Есть одно пожелание... Сделай, пожалуйста, такую сборку:

1. PSPxIDE (посл. версию)
2. PSPSDK (Блин! Я попрежнему не знаю, что это такое)
3. Тутор на русском языке.
4. PSPDevWin32
5. Пару учебников по С/С++ (или какой там язык используется)
6. Все что надо для того, чтобы человек, скачая этот архив мог сразу приняться за работу.

P.S. Если ты все это оформишь в дистрибьютив, то ты вообще будешь круче всех...

Я сам хочу попытаться сделать прогу для передачи файлов по инфракраснику между: PSP<==>PSP; PSP==>КПК; КПК==>PSP; Mobile Phone==>PSP; PSP==>Mobile Phone. WSLAVA... Как думаешь... С помощью твоей утилиты можно своять подобное??? :)

P.S. Я ЗНАЮ, ЧТО ТАКАЯ ПРОГА УЖЕ ЕСТЬ, НО ОНА "СЫРАЯ", ДА ЕЩЕ С УЖАСНЫМ ИНТЕРФЕЙСОМ. АВТОР ЕЁ КИНУЛ И НОВОЙ ВЕРСИИ НЕ БУДЕТ!!! Я ХОЧУ ЗАКОНЧИТЬ НАЧАТОЕ...

Mortem
28.07.2007, 00:52
MaZaHacKa
Чудак-человек, нельзя без знаний языка имея только учебники "сразу приняться за работу". Тем более если "работа" - программирование под консоли.

PSPSDK - набор всего самого необходимого для разработки под PSP.
Стараниями wSlava в его сборку PSPSDK вошла ещё туева хуча дополнительных библиотек сильно облегчающих оную разработке.

Рекомендую посетить страничку http://elmortem.mirgames.ru, откуда есть ссылки на последнюю сборку PSPSDK от wSlava, а так же исходники простого фреймворка для быстрого старта.

Надеюсь скоро выложить там же исходники тетриса от wSlava, он вроде был не против. Но это будет где-то через неделю.

freecod
30.07.2007, 23:58
Можно ли обрабатывать нажатия клавиш на пульте по типу PSP_CTRL_* ?
Вообще, можно ли заюзать пульт в хомках?

pspowner
31.07.2007, 00:02
http://psp.jim.sh/pspsdk-doc/group__Ctrl.html

PSP_CTRL_REMOTE (http://psp.jim.sh/pspsdk-doc/group__Ctrl.html#gg2187a086f5a01f4086f113f215a18bae23d118e5aa1a279501a853fea8d9f c7c) = 0x080000 - 1 есть )

На худой конец можно замутить прогу вида -


SceCtrlData pad;

sceCtrlSetSamplingCycle(0);
sceCtrlSetSamplingMode(1);

while (!ExitGame) {
sceCtrlReadBufferPositive(&pad, 1);
printf("\nKey pressed:%x",pad.Buttons);

}
Ну далее понятно - компилишь, запускаешь и начинаешь щёлкать пультом и записывать выскакивающие на экране циферки.
потом прописываешь их себе в прогу в #define и используешь.

Ну это естестно только в том случае если пульт обрабатывается также как и остальные кнопки. А не каким-нибудь там неведомым sceReadRemote ))

freecod
31.07.2007, 00:42
Я этот Remote тоже видел, остаётся надеятся на стандартную обработку клавиш...

Кстати, wSlava (http://pspx.ru/forum/member.php?u=40168) при компиляции mp3 плагина после сборки prx вылазит аксес волейшн (00401F20\ пишем в 77207269). А до этого Invalid point operation.

freecod
31.07.2007, 22:56
###
Странное дело. Код вида:
scePowerLock(0);
if(speednum>=4)//for speeds >=222 scePowerSetClockFrequency(speed[speednum],speed[speednum],bus[speednum]);
else//for speeds <222
{
scePowerSetCpuClockFrequency(speed[speednum]);
scePowerSetBusClockFrequency(bus[speednum]);
}
scePowerUnlock(0);в PRX (выполняется сразу) вешает приставку при загрузке.
scePowerSetClockFrequency(speed[speednum],speed[speednum],bus[speednum]);
соответственно работает без проблем (ставим <= 111)
Проблема как я понял в scePowerSetCpuClockFrequency.
Код выше без проблем работает на загруженной приставке, но при выполнении при загрузке PRX вешается... Как быть?

freecod
02.08.2007, 01:48
####
Ну раз нет отдельной темы по програмированию, спрошу здесь, может кто и ответит :\
Почитал Modules.pdf с pspdev.org, как я понял, второй файл EBOOT.PBP в папке вида NAME% используется как загрузчик для приложения, требующего привелигерованный режим?
Где взять больше исходников хомок и PRX? Потому что pspsdk заставляет вспоминать MSDN как прекрасный образец поддержки програмиста... Разница между оффициальным и сторонним sdk ооочень чувствуется. "sce****** - хрен знает что эта функция делает, мы пытались её использовать, но PSP нафиг зависла". Хотя хорошо что хоть это есть... Неужели оффициальный сдк так и не просочился в сеть?

pspowner
02.08.2007, 05:21
####
Ну раз нет отдельной темы по програмированию, спрошу здесь, может кто и ответит :\

В профиле подай заявку на вступление в группу "Разработчики".
Станет виден дев. раздел.

l3VGV
02.08.2007, 09:12
###
Странное дело. Код вида:
в PRX (выполняется сразу) вешает приставку при загрузке.
scePowerSetClockFrequency(speed[speednum],speed[speednum],bus[speednum]);
соответственно работает без проблем (ставим <= 111)
Проблема как я понял в scePowerSetCpuClockFrequency.
Код выше без проблем работает на загруженной приставке, но при выполнении при загрузке PRX вешается... Как быть?
чтобы ответить на твой вопрос надо весь исходник поглядеть. на псп очень много функций которые работают тока если приложение запущено в режиме ядра, если в юзермоде то всё виснет.
вобщем сделай примерно такой заголовок у себя
PSP_MODULE_INFO("MEGO_PROGO", 0x1000, 1, 1);
PSP_MAIN_THREAD_ATTR(0);//<-Kernel mode

далее, меняние частоты процесс для псп очень интимный, и не всегда работает корректно. попробуй сбрасывать частоту не сразу а по шагам. на эту тему видел чтото в сети, гугли :)


насчёт дебуга, юзай пспИде, а там есть отличные функции для вывода дебужной инфы
fprintf(stderr,"$>хелло ворд\n");
оне помогут тебе определить гдеже всё виснет.

ну и на последок, пиши понятнее, от фразы
в PRX (выполняется сразу) вешает приставку при загрузке.
меня сильно глюкнуло.


####
Ну раз нет отдельной темы по програмированию, спрошу здесь, может кто и ответит :\
Почитал Modules.pdf с pspdev.org, как я понял, второй файл EBOOT.PBP в папке вида NAME% используется как загрузчик для приложения, требующего привелигерованный режим?
Где взять больше исходников хомок и PRX? Потому что pspsdk заставляет вспоминать MSDN как прекрасный образец поддержки програмиста... Разница между оффициальным и сторонним sdk ооочень чувствуется. "sce****** - хрен знает что эта функция делает, мы пытались её использовать, но PSP нафиг зависла". Хотя хорошо что хоть это есть... Неужели оффициальный сдк так и не просочился в сеть?
микрософт в плане поддержки сторонних разработчиков вне конкуренции в любом случае.
в сети есть официальные сдк сони не для псп, скачай и прозрей от того что не очень то и многого мы лишены...

freecod
02.08.2007, 16:43
ну и на последок, пиши понятнее, от фразы
в PRX (выполняется сразу) вешает приставку при загрузке.
меня сильно глюкнуло.
Хех), я хотел сказать, что код смены частоты находится в main_thread и выполняется сразу при загрузке prx, когда после загрузки, в обработчике нажатия клавиш тот же код выполняется без проблем.

l3VGV
02.08.2007, 17:11
Весьма любопытная засада. если возможно то код в личку или в девелоперский раздел -)
на вскидку можгно попробовать следущее
1) подвигать его, я так понимаю в main функции, те попробовать поставить до инициализации калбэков, после них и тп.
2) попробовать поставить до них и между ними sceKernelDelayThread(1); чтобы былл примерно так

sceKernelDelayThread(1);
МегаФункция1()
sceKernelDelayThread(1);
МегаФункция2()
sceKernelDelayThread(1);


второй вариант более пальцем в небо но иногда помогает...

Puella
04.08.2007, 16:19
Вообшем увидеть эту чудо-программу не удалось :(

1. все окошки (сключая стандартные диалоговые) представляют собой "пустоту":
http://img64.**************/img64/7365/stux3.th.png (http://img64.**************/my.php?image=stux3.png)
кроме одного: Project > Options

2. если прграмма не развернута на весь экран, то контекстное меню у редактора кода вываливается где-то за пределами окна программы, при полном экране - где нужно.

3. просто замечание - отсутсвует юзабилити интерфейса :(

exakt
05.08.2007, 22:48
Вообшем увидеть эту чудо-программу не удалось :(

1. все окошки (сключая стандартные диалоговые) представляют собой "пустоту":
http://img64.**************/img64/7365/stux3.th.png (http://img64.**************/my.php?image=stux3.png)
кроме одного: Project > Options


УЖОС !!! :scare:
P.S. у меня тоже самое, зрелище не для слабонервных!

freecod
06.08.2007, 02:23
Puella (http://pspx.ru/forum/member.php?u=91434): Попробуй язык интерфейса попереключать.

exakt
06.08.2007, 06:16
Puella (http://pspx.ru/forum/member.php?u=91434): Попробуй язык интерфейса попереключать.
язык интерфейса? причем здесь это?
это программа очень сырая или каких фонтов либо dll нехватает

a всё нашёл, спасибо pspowner'у
http://pspx.ru/forum/showpost.php?p=383442&postcount=39 (http://pspx.ru/forum/showpost.php?p=383442&postcount=39)

l3VGV
06.08.2007, 09:05
это в виндах у вас чевота нехватает :)

pspowner
06.08.2007, 10:19
Если брали из 1ого поста, то там ещё папка Language нужна

Puella
06.08.2007, 20:03
это в виндах у вас чевота нехватает :)
как просто все всегда свалить на винду :) а винда лицензионная-то, самая полная :Р

Если брали из 1ого поста, то там ещё папка Language нужна
эх, уже приноровила Eclipse, но всеравно спасибо :)

pspowner
21.10.2007, 11:52
Довольно много вопросов о том как и с чего начать программирование для PSP, вот решил написать
некое подобие Quick Start.


Итак, что нам понадобится

1) PSPSDK в сборке wSlava - http://elmortem.mirgames.ru/?link=18
(из архива всё распаковать, желательно в корень диска, если вы не знаете что такое "корень диска",
то советую дальше не читать, а записаться на какие-нибудь компьютерные курсы).
2) PSPxIDE от wSlava - http://pspx.ru/ide/PSPXIDEv_2_1_5.zip
http://ifolder.ru/1601332
(Качаем версию 2.1.5. и также распаковываем в корень диска, затем качаем по второй ссылке
обновление 2.1.6 и распаковываем в папку PSPxIDE, это заменит ехешник на более свежий)
Вот, собственно и всё. =) Запускаем IDE.

Идём в пункт меню Проект->Опции. Внимание, здесь вы должны в поле "Директория PSPDev" указать
куда вы распаковали PSPSDK, т.е. если как я и советывал вы распаковали его в корень диска, то путь будет
выглядеть примерно так - C:\pspdev

Поставьте галку у пункта "Параметры по умолчанию" и давите ОК.

Ну вот и всё готово. Просто, не правда ли? Однако, для того чтобы проверить всё ли мы сделали правильно,
мы попробуем откомпилировать один из примеров входящих в PSPSDK. Итак, идём в пункт меню Файл->Открыть
Идём в папку "c:\pspdev\psp\sdk\samples" (Именно там вы найдёте некоторые примеры программ для ПСП).
Входим в папку "controller\basic" и открываем файлик "main.c".

Сейчас мы не будем разбирать все строчки кода появившегося на экране. Эта программа написана
полностью правильно, так что для проверки работы нам надо просто её откомпилировать.

Идём в пункт "Проект->Компиляция". Если мы всё сделали правильно, то увидим в окошке вывода -


******************************************
Компиляция/Построение.
******************************************
Microsoft Windows XP [Версия 5.1.2600]
(С) Корпорация Майкрософт, 1985-2001.

>set PSPDEV=C:/pspdev

>set PATH=%PSPDEV%/bin;%PATH%

>C:\pspdev\bin\make.exe kxploit 2>>deberr.tmp
psp-gcc -I. -IC:/pspdev/psp/sdk/include -g -G0 -Wall -O0 -c -o main.o main.c
psp-gcc -I. -IC:/pspdev/psp/sdk/include -g -G0 -Wall -O0 -L. -LC:/pspdev/psp/sdk/lib main.o -lpspdebug -lpspdisplay -lpspge -lpspctrl -lpspsdk -lc -lpspnet -lpspnet_inet -lpspnet_apctl -lpspnet_resolver -lpsputility -lpspuser -lpspkernel -o controller_basic.elf
psp-fixup-imports controller_basic.elf
mkdir2 -p "controller_basic"
psp-strip controller_basic.elf -o controller_basic/EBOOT.PBP
mkdir2 -p "controller_basic%"
pack-pbp "controller_basic%/EBOOT.PBP" PARAM.SFO NULL \
NULL NULL NULL \
NULL NULL NULL

>echo 1 > OK.tmp"

>
******************************************
Компиляция завершена успешно !
Время компиляции: 0:00:01
Далее, идём в папку "c:\pspdev\psp\sdk\samples\controller\basic" и видим там 2 папки -

controller_basic
controller_basic%

Копируем их на мемори стик в папку psp/game150 и запускаем.
Наслаждаемся нашим первым откомпиленным хоумбрю.

Программа была откомпилена для ядра 1.50 с использованием kxploit.

TO BE CONTINUE...

pspowner
21.10.2007, 13:43
Первая программа =)

Ну прежде чем заняться непосредственно созданием прог, я советую завести папку pspdev\Projects\
где вы будете хранить всё своё хозяйство =)

Писать мы будем конечно же, следуя традиции, программу "Hello, world!".

Итак, создали папку с проектами (pspdev\Projects\), создаём там папку "HW",
запускаем PSPxIDE.

Для начала идём в пункт "Файл->Новый" и получаем чистый лист. Сохраним его (Файл->Сохранить как...).
Выбираем нашу папку для программы (pspdev\Projects\HW) Имя файла вбиваем "main"(именно так и никак иначе)
и давим кнопку сохранить.

Далее идём в пункт "Проект->Мастер Makefile" и приводим появившуюся формочку к следующему виду -

http://img81.**************/img81/2580/21914180ti4.jpg

Давайте пока не будем разбирать что там и как, просто сделайте как на картинке и всё. =)
Сделали? Давите "ОК".

Ну всё =) Начинаем писать собственно программу.


#include <pspkernel.h>
#include <pspdebug.h>
Это два необходимых нам хедера, копипастим этот код :D в свою программу.
pspkernel.h - очень нужный хедер, без него вобще ничего работать не будет.
pspdebug.h - хедер для вывода на экран отладочной инфы, именно его методы будем использовать для
вывода на экран.


PSP_MODULE_INFO("HW", 0, 1, 1);
PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER);


Это тоже вписываем в программу и не задумываемся =) Последние две цифры модульинфы - версия вашей проги, второй аргумент указывает
что прога грузится в юзермод. Вторая строчка по сути дублирует первую, но туда ещё можно вписать и другие параметры, но мы их не рассматриваем здесь.


#define printf pspDebugScreenPrintf
Для вывода текста на экран PSP мы будем использовать функцию pspDebugScreenPrintf из хедера pspdebug.h,
однако, название это слишком длинное, и для удобства набора, а также чтобы выглядело по привычней,
переопределим её как printf. Вписываем в программу.


int exit_callback(int arg1, int arg2, void *common)
{
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, 0x11, 0xFA0, 0, 0);
if(thid >= 0)
{
sceKernelStartThread(thid, 0, 0);
}

return thid;
}
Данный кусок кода мы тоже незадумываясь копипастим в нашу программу. Это обработчик колбеков,
которые нужны для правильной отработки выхода по кнопочке "HOME", а также чтобы прога правильно
прибила все свои хвосты, если вдруг пользователь вздумает выключать PSP с нашей работающей программой.



int main(void)
{

SetupCallbacks(); //Установить колбеки
pspDebugScreenInit(); //Проинициализировать экран для вывода текста
А вот собственно наш код. Функция main получит управление сразу после старта программы.
Переносим.


printf ("Hello, World!\n"); //Собственно, строчка выводящая наше "Здравствуй, мир" =)
sceKernelDelayThread (1000*1000); //Делаем 10 паузу чтобы можно было насладиться плодами наших трудов =)
sceKernelExitGame(); //Завершаем работу программы.
return 0; //Ну это так, для порядку =)
}
Тоже переносим в текст программы. Ну вот и всё, наша программа "Здравствуй, Мир!" готова. Сохраняем
её. и идём в "Проект->Компиляция".

В "pspdev\Projects\HW" обнаруживаем две папки - Hello_world и Hello_world%, копируем из на
мемори стик в psp/game150, запускаем и наслаждаемся =)

Вот так. Даю несколько полезных ссылок для дальнейшиз изысканий.

pspdev\psp\sdk\samples - Не забывайте что здесь находится ряд примеров.
pspdev\psp\sdk\doc\html - Справочник.
Онлайн версия справочника доступна зесь - http://psp.jim.sh/pspsdk-doc/modules.html
В частности по pspdebug - http://psp.jim.sh/pspsdk-doc/group__Debug.html

Если с Си/Си++ совсем плохо, сходите в лавку с компьютерной литературой и купите какой-нибудь
худо бедно учебник(типа для начинающих), или погуглите на предмет подобной литературы.
Вот что нашёл почти сразу - http://www.lib.ru/CTOTOR/

Удачи :)

(C) pspowner for pspx.ru

Возможно, TO BE CONTINUE...

SееD
23.10.2007, 14:32
а можно также кратенько и доступно, но про кернел 3хх. просто писать под 1,50 уже смысла нет.

l3VGV
23.10.2007, 14:45
и новый сдк скомпиленый :)

Lord_Maloy
23.10.2007, 19:32
Сразу хочу извиниться за оффтоп...
У меня возникла проблем, прошу помощи. Только не надо советовать читать мануал и давать прочие не относящиеся к делу советы.
Проблема такова, при попытке скомпилировать любой проект у меня возникает ошибка следующего характера:
http://nages.rxfly.net/files/pictures/er.jpg
Перепробовал всё что мог. Помогите. Заранее спасибо.

pspowner
23.10.2007, 20:17
Так, есть подозрение что у тебя левый cygwin1.dll. Потому что качал девкит другой сборки? Или у тебя ещё 1 есть?

pspowner
23.10.2007, 20:31
И ваще как и чего... по какому мануалу делалось то?

Lord_Maloy
23.10.2007, 20:37
Так, есть подозрение что у тебя левый cygwin1.dll. Потому что качал девкит другой сборки? Или у тебя ещё 1 есть?
В общем с самого начала я делал сборку сам. То есть скачал отдельно PSPDev который идёт с инсталятором, установил его. Затем распаковал архив с PSPxIDE и сделал всё по инструкции. Тогда у меня ничего не запустилось, да и как то не было времени разьираться.
Сейчас, прочитав последние сообщения скачал Вашу подборку т.е. уже подготовленный PSPDev и PSPxIDE 2.1.6. Всё установил, всё раскидал. В папке Windows проверил файлик "гугвин". его там как и должно не оказалось. Но вот при попытке запука компилятора вылазит сообщение... Чего я только уже не перепробовал...
Сечас вот на пареллельной ОСи запустить попробую.

В общем в ходе опытов, выяснилось что проблема именно в компе. Попробовал запускать не на ноутбуке, а на домашней банке, выслушал пару матов, но проект скомпилировать тем не менее смог...
Если вдруг кто-то узнает в чем состоит проблема, скажите плиз.

pspowner
23.10.2007, 21:04
В общем с самого начала я делал сборку сам. То есть скачал отдельно PSPDev который идёт с инсталятором, установил его. Затем распаковал архив с PSPxIDE и сделал всё по инструкции. Тогда у меня ничего не запустилось, да и как то не было времени разьираться.

Сейчас, прочитав последние сообщения скачал Вашу подборку т.е. уже подготовленный PSPDev и PSPxIDE 2.1.6. Всё установил, всё раскидал. В папке Windows проверил файлик "гугвин". его там как и должно не оказалось. Но вот при попытке запука компилятора вылазит сообщение... Чего я только уже не перепробовал...
Сечас вот на пареллельной ОСи запустить попробую.

В общем в ходе опытов, выяснилось что проблема именно в компе. Попробовал запускать не на ноутбуке, а на домашней банке, выслушал пару матов, но проект скомпилировать тем не менее смог...
Если вдруг кто-то узнает в чем состоит проблема, скажите плиз.

Очень странно, вот по тем сборкам которые указал, я устанавливал 3 раза - два раза дома и один раз на работе. Всё пашет на ура... матов не наблюдаю.

Сам Cygwin я ни разу не ставил, возможно дело в этом...

ALgraFx
23.10.2007, 22:09
Lord_Maloy
у меня такая=же проблема была pspowner прав - дело 100% в версии Cygwin - найди все cygwin1.dll и удали их кроме того что в ...\pspdev\bin лежит (у меня например проблема была в том что использовалась cygwin1.dll от psp video converter)

добавлено через 12 минут
Lord_Maloy

И еще ты точно переменные среды настроил?

zaero
24.10.2007, 02:02
Нужна сборка под слим. Пожалуйста выложите. А то пользоваться Eboot loader'ом надоело))

Lord_Maloy
24.10.2007, 04:57
[quote=ALgraFx;547383]Lord_Maloy
у меня такая=же проблема была pspowner прав - дело 100% в версии Cygwin - найди все cygwin1.dll и удали их кроме того что в ...\pspdev\bin лежит (у меня например проблема была в том что использовалась cygwin1.dll от psp video converter)[quote]
Спасибо, в общем подумал тут. Где обычно Windows смотрит свои dll, и вот оно... C:\Windows\System32, удалил оттуда гугвин и всё стало ОК.
Спасибо всем.:thank_you:

easy_net
24.10.2007, 15:26
Подскажите ка сделать сой загрузочный EBOOT.PBP со воей картинкой и названиием?

pspowner
24.10.2007, 15:35
Что значит "загрузочный EBOOT.PBP"?

Если речь о PSPxIDE, то в пункте Проект->Мастер Makefile надо написать "Название в XMB". Далее, в пункте Проект->XMB Media включить картинки на заставку/фон и музыку.

Ещё проще воспользоваться программой PSPBrew (http://dl.qj.net/PSPBrew-v.080-PSP-Homebrew-Applications/pg/12/fid/8816/catid/190).

easy_net
24.10.2007, 17:08
Спасибо за поощь все получилось.

zurt
25.10.2007, 14:17
попробовал сделать, как описано - все нормально компилится, но возникла проблема на 8гигстике - не запускается хоумбрюшка, черный экран, после вкл-выкл идет перезагрузка, причем и с другими хоумками такая беда, единственное идет PSPWrite. А на 4 гиг все нормально. У меня 3.40ОЕ.

SееD
26.10.2007, 11:29
у хомок под 1,50 проблемы с запуском на 8Гб карте. обновись до 371М33 (хотя может и так сойдет) и пользуйся хомками для ядра 3хх.

надеюсь, кто Оунер таки объяснит как их делать :)

pspowner
26.10.2007, 12:43
Ну хорошо, спрашивали - отвечаем =)

Итак, прошивки 3.ХХ требуют чтобы ваше хомбрю было в формате .prx

Что надо сделать -

Во-первых редактируем Makefile - хотите блокнотом/ворпадом, хотите через PSPxIDE пункт Проект->Мастер Makefile->Закладка
Advanced. Туда вписываем перед "include $(PSPSDK)/lib/build.mak" -


BUILD_PRX = 1
PSP_FW_VERSION = 371
Если у вас в Makefile уже есть строчка "BUILD_PRX = 0" - можете использовать её, заменив 0 на 1 =)

Во-вторых - Ваше хоумбрю должно работать в user - режиме. Для этого в тексте программы, в самом её начале,
приводим модульинфо к следующему виду(второй аргумент должен быть 0) -


PSP_MODULE_INFO("Homko", 0, 1, 0);
Также, сразу после модульинфо прописываем доступный размер памяти(будет доступен через malloc), а то по умолчанию нам памяти
маловато будет =) 20 метров в самый раз думаю =)


PSP_HEAP_SIZE_KB(20480);
Ну вот собстна и всё. Компилим мейком или через PSPxIDE, кстати PSPxIDE компилит всё с использованием параметра kxploit,
однако в данном случае kxploit компилятором будет проигнорирован. Компилим, копируем получившийся eboot.pbp на стик,
запускаем и радуемся.


Вот. К сожалению нет ща под рукой ПСП чтобы проверить, а до этого я не компилил по 3.ХХ.
Проверю вечером, если что поправлю. Но в теории всё должно быть именно так.

Если кому интересно, то вот тема на ps2dev.org (http://forums.ps2dev.org/viewtopic.php?t=9130)

*UPDATE по компиляции хомок для 3ХХ

Идём в папку pspdev/psp/sdk/lib
Находим там файлег build.mak, открываем его, смотрим в самом низу -

$(PACK_PBP) EBOOT.PBP $(PSP_EBOOT_SFO) $(PSP_EBOOT_ICON) \
$(PSP_EBOOT_ICON1) $(PSP_EBOOT_UNKPNG) $(PSP_EBOOT_PIC1) \
$(PSP_EBOOT_SND0) strip_$(FINAL_TARGET) $(PSP_EBOOT_PSAR)

Приставку strip_ перед $(FINAL_TARGET) удаляем и сохраняем файл.

Вот теперь ебуты будут собираться правильно, если этого не сделать, то полученные хомки будут вываливаться в XMB с формулировкой Unsupported prx type.

SееD
26.10.2007, 12:57
то есть кернел режим недоступен? только юзер? это получается что, например, во флэш0 не залезешь?

pspowner
26.10.2007, 13:08
Только в ядре 1.50 можно грузить прогу напрямую в Кернел-мод.

На 3.ХХ, если надо чо из кернела - нада подгружать внешнюю либу. Т.е. не напрямую.

CHERTS
26.10.2007, 14:11
Уважаемые! А подскажите как можно из программки проиграть flash-ролик? есть ли какие нибудь наработки на сях по этому делу?
А так же есть ли у кого исходники по воспроизведению MP3 на PSP

Заранее спасибо!

l3VGV
26.10.2007, 14:42
мр3 есть. флеша не видел. если мр3 надо то в приват давай.

pspowner
26.10.2007, 15:12
Ну хорошо, дабы подвести черту. Рассказываю как юзать кернел-мод в 3.ХХ хомках. По крайней мере как я это понял читая ps2dev.org

Фактически, на нужно сделать 2 проги.

1) Kernel mode PRX - обычная библиотека, она будет вызываться из нашей главной программы.
2) EBOOT.PBP - по сути простой PRX лоадер, загружающийся в USER-режиме.


Также, как это сделано на ps2dev разбираем на прмере Nand-дампера.

Делаем библиотеку.


main.c


#include <pspsdk.h>
#include <pspkernel.h>
#include <pspnand_driver.h>
#include <string.h>

PSP_MODULE_INFO("NandDumper", 0x1006, 1, 1);
PSP_MAIN_THREAD_ATTR(0);

int nandLocked = 0;

void LockNand()
{
if (!nandLocked)
sceNandLock(0);

nandLocked = 1;
}


void UnlockNand()
{
if (nandLocked)
sceNandUnlock();

nandLocked = 0;
}

int ReadBlock(u32 page, u8 *buffer)
{
u32 i, j;
u32 k1;

k1 = pspSdkSetK1(0);

LockNand();

if (sceNandIsBadBlock(page))
{
memset(buffer, 0xFF, 528);
UnlockNand();
pspSdkSetK1(k1);
return -1;
}

for (i = 0; i < 32; i++)
{
for (j = 0; j < 4; j++)
{
sceNandReadPagesRawAll(page, buffer, NULL, 1);
sceNandReadExtraOnly(page, buffer+512, 1);
}

page++;
buffer += 528;
}

UnlockNand();
pspSdkSetK1(k1);

return 0;
}


int module_start(SceSize args, void *argp)
{
return 0;
}

int module_stop()
{
return 0;
}
В заголовке обращаем внимание на -


PSP_MODULE_INFO("NandDumper", 0x1006, 1, 1);
PSP_MAIN_THREAD_ATTR(0);
0x1006 - Kernel mode prx
1,1 - версия нашей библиотеке (пофиг какая)

Также обратите внимание, что у нашей библиотеки есть функции module_start() и module_stop()
- они обязательны для внешних библиотек. Также важно, что в нашей библиотеке нету точки входа main().
pspSdkSetK1() - устанавливаем в 0, чтобы не дать Кернелу упасть при обращении к областям памяти юзер-режима..

Makefile делаем следущим образом -


TARGET = nanddumper
OBJS = main.o

INCDIR =
CFLAGS = -O2 -G0 -Wall
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)

BUILD_PRX = 1
PRX_EXPORTS = nanddumper.exp

USE_KERNEL_LIBC=1
USE_KERNEL_LIBS=1

LIBDIR =
LDFLAGS = -mno-crt0 -nostartfiles
LIBS = -lpspnand_driver2


PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak
Обращаем внимание на "no-crt0" и "nostartfiles". Так делается по той причине, что у нас не программа,
а просто библиотека и все это нам не надо. Также обращаем внимание на подключаемые библиотеки.
Да, и у нас появляется строчка "PRX_EXPORTS = nanddumper.exp" - в этом файлике указаны функции нашей библиотеки,
функции которые будут видимы после её загрузки.


nanddumper.exp -

# Define the exports for the prx
PSP_BEGIN_EXPORTS

# These four lines are mandatory (although you can add other functions like module_stop)
# syslib is a psynonym for the single mandatory export.
PSP_EXPORT_START(syslib, 0, 0x8000)
PSP_EXPORT_FUNC_HASH(module_start)
PSP_EXPORT_VAR_HASH(module_info)
PSP_EXPORT_END

PSP_EXPORT_START(NandDumper, 0, 0x4001)
PSP_EXPORT_FUNC(ReadBlock)
PSP_EXPORT_END

PSP_END_EXPORTS
Усё должно быть в этом файле именно так, за исключением строчек "PSP_EXPORT_FUNC()" -
именно этими строчками вы указываете ваши функции экспортируемые из вашей библиотеки.
Да, и не забываем что строчка "PSP_EXPORT_START(NandDumper, 0, 0x4001)" должна соответствовать тому,
что вы написали в модульинфе в файле main.c.

Значит этот файлег "nanddumper.exp" нам нужен для того, чтобы сгенерить .S файл, который в свою очередь
юзается нашей прогой для доступа к экспортированным функциям. Чтобы сгенерить S файл идём в Пуск->выполнить
вбиваем "cmd", заходим в папку с установленным PSPSDK и выполняем команду-


psp-build-exports -s nanddumper.exp
Не забываем, что перед этим нам надо установить правильное окружение(запустить файл pspdev.bat)
Т.е. вся процедура отображена здесь -

http://img521.**************/img521/8778/54330844wh4.jpg

Получившийся .S - файл будет выглядеть примерно так -


.set noreorder

#include "pspstub.s"

STUB_START "NandDumper",0x40090000,0x00010005
STUB_FUNC 0x9EDD6EE1,ReadBlock
STUB_END

Копируем .S файл в папку с нашей прогой. Усё, компилим нашу либу.

Ну а теперь делаем наш EBOOT.PBP - главную программу, которая грузит нашу библиотеку.


#include <pspsdk.h>
#include <pspkernel.h>
#include <stdio.h>
#include <string.h>

PSP_MODULE_INFO("NandDumperMain", 0, 1, 0);
PSP_MAIN_THREAD_ATTR(PSP_THREAD_ATTR_USER);
PSP_HEAP_SIZE_KB(20000);

u8 block[32*32*528];

int ReadBlock(u32 page, u8 *buffer);

#define printf pspDebugScreenPrintf

int main()
{
pspDebugScreenInit();

SceUID mod = pspSdkLoadStartModule("nanddumper.prx", PSP_MEMORY_PARTITION_KERNEL);

if (mod < 0)
{
printf("Error 0x%08X loading/starting naddumper.prx.\n", mod);
}

else
{

SceUID fd = sceIoOpen("ms0:/nanddump.flash", PSP_O_WRONLY | PSP_O_CREAT | PSP_O_TRUNC, 0777);

printf("Dumping...\n");

int i, j;

for (i = 0; i < (2048*32); )
{
u8 *p = block;
memset(block, 0xff, sizeof(block));

for (j = 0; j < 32; j++)
{

if (ReadBlock(i, p) < 0)
{
printf("bad block at page %d block %d\n", i, i/32);
}

i += 32;
p += (528*32);
}

sceIoWrite(fd, block, sizeof(block));
}

sceIoClose(fd);

printf("Done. Exiting in 5 seconds\n");
}

sceKernelDelayThread(5*1000*1000);
sceKernelExitGame();

return 0;
}
Обращаем внимание на заголовок. Прога должна быть в USER-режиме.


PSP_MODULE_INFO("NandDumperMain", 0, 1, 0);
PSP_MAIN_THREAD_ATTR(PSP_THREAD_ATTR_USER);
PSP_HEAP_SIZE_KB(20000);
Размер буфера тоже увеличиваем.
Внимание, необходимо задекларировать все функции которые будем юзать из внешней библиотеки


int ReadBlock(u32 page, u8 *buffer);
А вот этой строчкой -


SceUID mod = pspSdkLoadStartModule("nanddumper.prx", PSP_MEMORY_PARTITION_KERNEL);
Грузим нашу библиотеку. Она уже будет в КЕРНЕЛ-режиме. Файлег .s у нас позаботится о переходах юзер/кернел
и голова у нас об этом не болит.

Ну и makefile


TARGET = nanddumpermain
OBJS = main.o NandDumper.o

INCDIR =
CFLAGS = -O2 -G0 -Wall
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)

BUILD_PRX = 1
PSP_FW_VERSION = 371

LIBDIR =
LIBS =
LDFLAGS =

EXTRA_TARGETS = EBOOT.PBP

PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak
Ну вот собстна и всё. Откомпилив всё это, вы получаете 2 файла - nanddumper.prx и EBOOT.PBP
Закидываете на стик и всё готово.

(С)Перевод мой) Оригинал на ps2dev (http://forums.ps2dev.org/viewtopic.php?t=9022)

Писал, не проверяя на PSP, вечерком возможно проверю. Если есть каменты, пожелания/исправления - пишите.

CHERTS
29.10.2007, 12:47
Уважаемые, у кого-нибудь пробовал скомпилить плагин Mp3prx?

есть исходники но непонятно под какую SDK?
при компиляции арет что файл psputility_avmodules.h не найден

какие есть идеи?

ALgraFx
29.10.2007, 14:58
Уважаемые, у кого-нибудь пробовал скомпилить плагин Mp3prx?

есть исходники но непонятно под какую SDK?
при компиляции арет что файл psputility_avmodules.h не найден

какие есть идеи?

очевидный вариант - ищи psputility_avmodules.h - либо геморный удали строку подключающую этот файл и смотри по ошибкам компиляции чего нехватает и ищи только эти переменные, структуры...

pspowner
29.10.2007, 15:09
*UPDATE по компиляции хомок для 3ХХ

Идём в папку pspdev/psp/sdk/lib
Находим там файлег build.mak, открываем его, смотрим в самом низу -

$(PACK_PBP) EBOOT.PBP $(PSP_EBOOT_SFO) $(PSP_EBOOT_ICON) \
$(PSP_EBOOT_ICON1) $(PSP_EBOOT_UNKPNG) $(PSP_EBOOT_PIC1) \
$(PSP_EBOOT_SND0) strip_$(FINAL_TARGET) $(PSP_EBOOT_PSAR)

Приставку strip_ перед $(FINAL_TARGET) удаляем и сохраняем файл.

Вот теперь ебуты будут собираться правильно, если этого не сделать, то полученные хомки будут вываливаться в XMB с формулировкой Unsupported prx type.

CHERTS
29.10.2007, 15:50
очевидный вариант - ищи psputility_avmodules.h - либо геморный удали строку подключающую этот файл и смотри по ошибкам компиляции чего нехватает и ищи только эти переменные, структуры...

Очевидный, но с подводными камнями, даже если я и нашел psputility_avmodules.h, но он от старой SDK, и даже с ним возникают корявости.

Ладно, будем грызть кактус дальше.

SееD
29.10.2007, 17:40
что у меня получилось:

1) всё поставил
2) успешно скомпилил готовый сэмпл под 1,50
3) успешно скомпилил Превед Мир! под 1,50
4) успешно скомпилил Превед Мир! под 3,71

5) безуспешно попытался скомпилить Нанд Дампер.

ошибки при комплиляции PRX следующие:


******************************************
Ошибки/Предупреждения ...
******************************************
main.c: In function 'ReadBlock':
main.c(49) : warning: implicit declaration of function 'sceNandReadPagesRawAll'
main.c(50) : warning: implicit declaration of function 'sceNandReadExtraOnly'
/cygdrive/c/pspdev/bin/../lib/gcc/psp/4.0.2/../../../../psp/bin/ld: cannot find -lpspnand_driver2
collect2: ld returned 1 exit status
make: *** [nanddumper.elf] Error 1
Компиляция прервана !


я где-то ошибся или нужен новый SDK? и если да, то можно ссылку?

pspowner
29.10.2007, 22:29
что у меня получилось:

1) всё поставил
2) успешно скомпилил готовый сэмпл под 1,50
3) успешно скомпилил Превед Мир! под 1,50
4) успешно скомпилил Превед Мир! под 3,71

5) безуспешно попытался скомпилить Нанд Дампер.

ошибки при комплиляции PRX следующие:


******************************************
Ошибки/Предупреждения ...
******************************************
main.c: In function 'ReadBlock':
main.c(49) : warning: implicit declaration of function 'sceNandReadPagesRawAll'
main.c(50) : warning: implicit declaration of function 'sceNandReadExtraOnly'
/cygdrive/c/pspdev/bin/../lib/gcc/psp/4.0.2/../../../../psp/bin/ld: cannot find -lpspnand_driver2
collect2: ld returned 1 exit status
make: *** [nanddumper.elf] Error 1
Компиляция прервана !
я где-то ошибся или нужен новый SDK? и если да, то можно ссылку?

Это хорошо что откомпилил) Надеюсь запустилось?

Вобщем ну его к черту этот НАНДДампер. Это был лишь пример того как использовать внешние библиотеки, к тому же я скорее всего в инструкции чот не так написал(по мелочи)))). Но это не главное, главное что в ДевКите чевота нехватает, подозреваю что этого самого nand_driver2


Разбирацца было лень, такчто ща сделал простенькую пару prx/pbp - всё компилица и работает. Надеюсь там будет всё понятно ибо уж упростил до предела. Потом может и инструкцию под это перепишу.

http://www.rapidshare.ru/448787
http://www.rapidshare.ru/448790

З.Ы. Кстати, нечто похожее лежит в сэмплах в папке prx. Не совсем то что нужно, правда, но для общего развития советую посмотреть.

HRR
02.11.2007, 21:02
Люди, скажите ламеру, реально написать дебаггер под PSP (хотя бы просто окно дизасма, вьювер памяти/регистров, возможность бряков) так, чтобы на PSP скомпилить плагин, который будет обмениваться данными с софтиной на PC через USB? Или есть какие-нибудь другие рабочие дебаггеры, в которых можно дебажить UMD-шные игры?

l3VGV
03.11.2007, 09:09
psplink+usbhost+pcterm+psp-gdb. Это всё описано в мануале к псп линку.

pspowner
03.11.2007, 13:01
Есть ещё CWCheats который имеет встроенную фанукцию дизасма. Однако отладки там нет.

Ваще RISC для меня китайская грамота, скока не пытался хоть чевота понять.

HRR
03.11.2007, 13:54
psplink+usbhost+pcterm+psp-gdb. Это всё описано в мануале к псп линку.
А что нужно знать и уметь для написания подобной вещи?
И вообще реально ли мне это сделать?..

Есть ещё CWCheats который имеет встроенную фанукцию дизасма. Однако отладки там нет.
Ну, отдизасмить я и так смогу, но мне позарез нужны бряки :( От дизасма толку нет...

Ваще RISC для меня китайская грамота, скока не пытался хоть чевота понять.
Ты о R4000? Что там понимать то? Не сложнее ГБА и PSX(R3000) :)

pspowner
03.11.2007, 14:03
А что нужно знать и уметь для написания подобной вещи?
И вообще реально ли мне это сделать?..


Ну, отдизасмить я и так смогу, но мне позарез нужны бряки :( От дизасма толку нет...


Ты о R4000? Что там понимать то? Не сложнее ГБА и PSX(R3000) :)

А что такое "бряки"? Брейкпоинты? Странное произношение...

Я о RISC, упрощённом наборе инструкций для процессоров. RХХХХ в частности. CISC на х86 у меня вопросов не вызывает, я с ним работал.

Если знаешь по риску полезное чтиво, буду рад ознакомиться.

HRR
03.11.2007, 16:15
А что такое "бряки"? Брейкпоинты? Странное произношение...
Не знаю, все знакомые знатоки дебаггеров произносят именно так :)

Если знаешь по риску полезное чтиво, буду рад ознакомиться.
Мне просто приходилось дебажить пару игр на PSX. Совершенно ничего сложного, не сложней, чем дебаг GBA. В особенности процессора я не вникал, да и не изучал ничего, так что практически ничего не знаю. Справочник инструкций - и вот оно, счастье :) Хотя большинство инструкция там и так сразу понятно на интуитивном уровне.
Смотрел инструкции R4000 - не сильно отличается от 3k, но вот дебаггера нет :( С удовольствием бы написал сам, да вот нет необходимых знаний и умений :(
Насколько я понимаю, достаточно написать плагин, который будет дежурить во время игры и связываться с прогой на PC, при требовании отсылая ей данные о регистрах, памяти и т.п. А прога в свою очередь будет обладать юзверьским интерфейсом, дизасмом и т.п.
Реально ли такое сделать?...
Если всё получится - выйдет немало хороших переводов :)

L0NG
30.11.2007, 01:33
люди подскажите плиз, у меня сабж psplink - не работает!
все настроил, и никак... пишет что к псп никак не подключиться. делал всё шаг в шаг как писал камрад Pspowner. псп fat прошивка 3.71 m33 - 3
очень хотелось бы откомпилированный код запускать сразу на железяке!


psplink ставил 2.0 из набора что выкладывал Pspowner
у меня когда его запускаешь, на компе зыза определяется просто зыза, НЕ type B.
пробовал и 3.0 с ней определяется как type B но все равно не работает.
что пробовать сделать?

pspowner
01.12.2007, 11:29
Поставить драйвера PSP type b. найти пральный psplink.ini или выправить его самому.

Попробуй снять/установить галку на Запускать "USBHost в Daemon-режиме".

Вобще ща уже не помню всех этих плясок с бубном... Но кароч работает он.
А запускать на железяке - ну скомпили, перепиши да запускай.

L0NG
01.12.2007, 14:52
спасибо, ждал! сейчас попробую. я кстати раздобыл дрова для psp type B
и поставил но когда просто втыкаю её она определяется как PSP. напрочь грохнуть обычные дрова я не решаюсь ... или она как тип Б должна определяться только в psplink ?

l3VGV
01.12.2007, 15:02
только после запуска псплинк на псп.