PSPx форум

PSPx форум (https://www.pspx.ru/forum/index.php)
-   Программирование для PSP (https://www.pspx.ru/forum/forumdisplay.php?f=101)
-   -   Эксперименты... (https://www.pspx.ru/forum/showthread.php?t=37390)

Mortem 20.03.2007 20:35

Эксперименты...
 
Покурил это: http://www.psp-programming.com/code/...heport-lesson5
Затем поковырял вот это:
/pspdev/psp/sdk/doc/html/pspgum_8h.html

Это же практически голый OpenGL. Я в восторге! Как минимум половину своего старого движка я смогу портировать на PSP.

Так что попробую тренировки для написать что-то отдалённо похожее на Кримсонленд.

О результатах буду постить сюда. (:

добавлено через 2 часа 24 минуты
Помогите пожалуйста разобраться с функцией sceGuBlendFunc...
Её OpenGL аналог выглядит несколько примитивней, всего 2 параметра, против 5-и в sceGuBlendFunc.

Методом научного самотыка так и не удалось нащупать логику этой странной функии. ):

Помогите написать аналоги вот такого:
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // sub
glBlendFunc(GL_SRC_ALPHA, GL_ONE); // add
glBlendFunc(GL_ZERO, GL_SRC_COLOR); // mult

Заранее благодарен.

BonifacE 21.03.2007 11:12

У нас новенький ) Добро пожаловать камрад. Вот втыкай это http://forums.ps2dev.org/viewtopic.p...scegublendfunc если этого не хватит то на том форуме сделай поиск по *sceGuBlendFunc* и будет тебе счастье.

Mortem 21.03.2007 14:06

К сожалению по непонятным мне причинам у меня обрубается доступ к сему презамечательному ресурсу. Через левую проксю удалось грузануть только заглавную страничку. На форум ни в какую не пускает. ):

Хотя с блендингом всё ж разобрался. Там оказалось что ещё и параметры текстр нужно по хитрому выставлять. (:

Настроек больше чем в ОГЛ...

Mortem 23.03.2007 20:25

BonifacE
"Не пускает" - в смысле вообще страничка не грузится! ): Так что регистрация тут, думается, не при чём.

Вот, начал писать маленький framework.
http://elmortem.mirgames.ru/tools/link.php?202

Буду его развивать дальше и не_до_кримсонленд так же буду писать на нём. (:

Mortem 25.03.2007 03:37

Есть ли аналог функций glVertex3f, glVertex2f и glTexCoord2f?
А то с этими буфферами (: я уже путаться начинаю... ):

добавлено через 7 часов 17 минут
Еее! (:
Я разобрался с 2д и ортографической проекцией на PSP.
Ушёл писать класс спрайта...

Mortem 06.04.2007 20:01

Новая версия фреймворка. Добавлен класс спрайта и внесены кое-какие изменения:
Искать тут: http://elmortem.mirgames.ru/?path=psp
Теперь хватает возможности. чтобы написать обещанные "Пятнашки". Вот этим завтра и займусь.
А как только прикручу шрифты и звук - сяду писать Кримсон.

добавлено через 15 часов 21 минуту
Пятнашки готовы! (:
Тут: http://elmortem.mirgames.ru/?path=psp

Mortem 09.04.2007 03:31

Новая версия движка и полностью переработанные Пятнашки. С исходниками ессно. (:

http://elmortem.mirgames.ru/?path=psp

Планирую написать по ним туториал...

wSlava 09.04.2007 14:44

Молодец ! Главное, код очень хороший и наглядный. Движок прикольный получается, еще добавить надо форматы png,jpg и для аудио: mp3 , at3 ( это помоему сразу в SDK есть) , и шрифты. Плюс описание и тогда совсем нормально

vAST 09.04.2007 15:05

скрины бы выкладывали ))

Mortem 09.04.2007 15:16

wSlava
Да, PNG и JPG сильно не хватает, а с музыкой я как раз сейчас разбираюсь. Описание будет, как только я доделаю основную часть фреймворка.

vAST
Ну там совсем обычные пятнашки... Даже и не знаю, нафига им скриншот? ^__^
Вот когда буду Кримсон писать - вот тогда и скриншоты можно будет постить.

wSlava 09.04.2007 18:37

vAST: вот скрин с тетриса че я написал :)



а вот ссылка на форум, где выложил https://www.pspx.ru/forum/showpost.ph...0&postcount=68

Mortem 11.04.2007 00:21

Скачал исходники libpng и libmad. Я понимаю, что я непроходимо тпой, но всё же - как заюзать их в своём проекте?

wSlava 11.04.2007 15:37

Да ладно притворяться :)
В обще так:
Для libpng нужно еще выкачать zlib
далее копируешь папки libpng, zlib в каталог SDK,
потом в cmd (я обычно в FAR) выполняешь
set PATH=%PSPDEV%/bin;%PATH%
затем переходишь в каталог zlib,
там сначала в Makefile замени все mkdir на mkdir2,
далее пишешь make <Enter>,
затем make install <Enter>, все, zlib готово,
затем переходишь в libpng и то же самое ,
так же и с libmad. Затем можешь мой последний исходник
тетриса смотреть, как я все это использую.

P.S. Скоро я выложу SDK все в одном, сейчас бился
с шрифтами freetype, вот там действительно засада, чтоб
установить это в сдк, пока не помогли никакие пляски с бубнами :)

Mortem 11.04.2007 23:08

ок, я подожду пока ты выложишь новый SDK, у меня компиляция через командную строку вызывает депрессию... (:
А шрифты я всё же предпочитаю текстурные, оными пока и займусь, звуки подождут...

wSlava 13.04.2007 01:48

Запарился со шрифтами freetype, это Linux библиотека, и чтоб ее поставить, нужно эмуль линукса под винду качать и дальше из под него скомпайлить, и залить в SDK, в общем жесть, выкачал я всего этого на 200 метров и ничего не вышло, нужно копать ох как глубоко, короче плюнул я на все это. Вот думаю, что со шрифтами делать ?

Mortem, у меня такая идея, может я напишу генератор битмапов (виндовую утилиту) из любого выбранного виндовз шрифта (на основе исходника что я выкладывал), генерить битмапы в виде статических матриц в файл исходника, чтоб не таскать за собой битмап картину. Если идея нравится, то может это все в виде модуля твоего фпеймворка организовать ,чтоб была группа функций работы с такими шрифтами: загрузка, вывод строки символов, поворот на угол и т.д. ???
предложи формат, в каком виде тебе лучше во фреймворк это вставить ....

vAST 13.04.2007 10:32

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

Mortem 13.04.2007 10:55

Цитата:

Сообщение от vAST (Сообщение 398627)
спасибо за скрин, просто я не являюсь обладателем ПСП с недавних пор, а так хочется следить за вашими успехами. Молодцы, эксперементируйте дальше, судя по всему у вас не плохо получается

Ну при таком раскладе согласен. Скоро выложу скрин.

wSlava 14.04.2007 11:31

Вложений: 1
Пример работы с текстом на PSPGL, каждая буковка в виде 3D объекта, красиво. В аттачменте хомбрю и исходники



wSlava 14.04.2007 11:33

P.S. Мортем, что ты думаешь насчет:
https://www.pspx.ru/forum/showpost.ph...7&postcount=15

Mortem 14.04.2007 13:19

Я битмапные шрифты в разных шрифтах уже несколько раз делал, так что в принципе можешь не заморачиваться в следующей версии фреймворка они будут. (:
Через пару дней выложу новую версию.
Генератор тож писал, у меня даж на сайте есть утилита подобная, правда под старый двиг.
В принципе если унифицировать данные, то лучше использовать xml.
Под винду я юзаю TimyXML, качал даже вроде как версию для PSP, но пока не пробовал её.
Так что если всё же хочешь сделать генератор - лучше писатать в XML. В крайнем случае напишу потом конвертер из твоего формата в свой, если другой сделаю... Или сделаю загрузку из разных форматов.

wSlava 14.04.2007 13:48

Ок, ну тогда конечно подожду, зачем велосипед изобретать :)

Mortem 17.04.2007 14:58

Йййахууу!!! Я разобрался с PNG и JPG. Так что сейчас фреймворк держит 3 формата текстур. Написал конвертер шрифтов от HGE в свой бинарный формат. Так что сегодня выложу работу со шрифтами и HGE'шную тулзень для их генерации. (:

wSlava 17.04.2007 17:37

Отлично ! У меня прям без шрифтов депрессия, ниче делать неохота :)
Правда начал блок проекта внедрять в PSPxIDE, тоже скоро доделаю, много изменений, те что и ты предлагал и BonifacE, в общем потом расскажу

Mortem 17.04.2007 20:43

В общем ясделал шрифты, но там какая-то дурная ошибка с цветом. Цвета просто колбасит нипадецки.
Отсюда возникает вопрос: функция sceGumDrawArray сраз пихает массив вершин на обработку? Или сохраняет где-то указатели на структуру данных? А потом их скопом обрабатывает...
Просто цвет задаётся в структуре вершины...
Вот такой вот сумбурный вопрос...

wSlava 17.04.2007 22:09

да, у меня тоже подобная трабла была в тетрисе: проставляю цвет кубикам
а они потом какието недоделанные, как будто часть треугольников не прорисовались и тоже "колбасит", это в версии 1.2 было при запуске
, в общем вылечил это "плясками с бубном", из какой то хомки подсмотрел, перед главным циклом ставь:

sceKernelDcacheWritebackAll();
sceDisplayWaitVblankStart();

мне помогло...

добавлено через 5 минут
Еще момент, если есть
dList = memalign( 16, 640 );
это буфер прорисовки, чем больше предполагается выводить
объектов, тем больше он должен быть.
У меня была проблема, когда я в тетрисе положил фон,
с какого-то момента он начинал стираться по строчке и
чем больше выводилось кубиков, тем хуже, затем перерыв
все и в том числе psdev, нашел решение-именно ту строчку с dList,
увеличил и все ОК, сейчас поставил
dList = memalign( 16, 50000 ); и все замечательно пашет !

Mortem 18.04.2007 00:44

Спасибо. Попробую...

лист у меня такой, подсмотрел в каком-то движке...
static unsigned int __attribute__((aligned(16))) list[262144];

добавлено через 2 часа 22 минуты
Блин, голова не соображает уже. ):
Если кто-то хочет помочь в отладке шрифтов (и, как я догадываюсь не только их) - могу выложить последнюю сборку с примером...
Ррррр, почему всё так заморочено??? И не почитаешь ведь нигде толком. ):

wSlava 18.04.2007 11:59

Выложи,конечно помогу. Да, очень напрягает отсутствие описалова, все практически методом тыка :(

Mortem 19.04.2007 04:35

Ок, тогда я сейчас напишу описалово всех классво, методов и функций - и выложу.

добавлено через 13 часов 23 минуты
http://elmortem.mirgames.ru/download...gf_0_0_3_1.rar (340 kb)

Колдовал, колдовал, так ничего умного и не наколдовал... ):
Пробовал разные варианты инициализации, выдранные из разных примеров из PSPSDK - без толку.
Чего-то я не вижу в упор. Чего-то важного.
Ведь это очень странно, когда один пример работает, а другой нет...
Начинаю грешить на всё подряд...

добавлено через 1 час 7 минут
Да, забыл совсем:
Утилита генерации шрифтов от движка HGE
http://elmortem.mirgames.ru/download/temp/hgefonted.rar (255 kb)
Утилита, конвертирующая HGE шрифты в формат MGFONT
http://elmortem.mirgames.ru/download/temp/fnt2fb.rar (30 kb)

wSlava 19.04.2007 22:24

Смотри, че компайлит:
******************************************
../mgffont.cpp: In member function 'float MGFFONT::GetWidth(const char*, bool)':
../mgffont.cpp(129) : error: '((MGFFONT*)this)->MGFFONT::Quads[((int)c)]->MGFQUAD::Width' cannot be used as a function
../mgffont.cpp: In member function 'void MGFFONT::Render(float, float, int, const char*)':
../mgffont.cpp(194) : error: 'struct MGFQUAD' has no member named 'Vertexes'
../mgffont.cpp(196) : error: '((MGFFONT*)this)->MGFFONT::Quads[((int)n)]->MGFQUAD::Width' cannot be used as a function
make: *** [../mgffont.o] Error 1

я посмотрел, и в правду в
struct MGFQUAD {
....
объявлено float Width, Height;

а в

float MGFFONT::GetWidth(const char *text, bool scale) {

Quads[c]->Width()

вызов как функции. Походу не последнюю версию mgf выложил ?

еще 'Vertexes нету в 'struct MGFQUAD' ....

wSlava 01.05.2007 01:52

Эх, Mortem, на кого ж ты нас покинул ... придется самому доделывать. В общем поправил недочеты предыдущего поста, там скорее всего mgfgeometry.сpp нехватало, а там определены прокси-функции доступа к свойствам, в общем Width нужно без скобок указать, и в mgffont.cpp в 195 строке указать
Quads[n]->Vertexes() заменить на Quads[n]->v .
Кстати, со шрифтами вроде разобрался, скоро новая версия териса будет ...

добавлено через 1 час 41 минуту
Прогу с mgf откомпайлил, очень интересно мигают текстуры шрифта :)
Нечто подобное нашел на pspdev:

You are reusing the vertices in DisplayVertices for every character. Vertices passed into sceGuDrawArray() need to remain valid until the GE has executed the operation, otherwise you will overwrite live data. Easy way to solve this is grab memory from the running display list using sceGuGetMemory()...

В общем, как я понял, что sceGuDrawArray() помещает вершины в буфер прорисовки и затем скопом все это отрисовывает при выводе очередного кадра (видится мне, что каждая sceGuDrawArray() выполняется параллельно в своем потоке), так вот, если выводится многократно один и тот же массив, то он в буфере тот же самый, и если менять информацию в вершине, то это может затронуть как последующую, так и предыдущую sceGuDrawArray ...
Решение, как вижу, либо копать этот dList (буфер вывода) , либо каждую строку текста делать отдельным объектом (либо один объект с несколькими Quad), хотя потестить не смог, создание подряд двух шрифтов

font1 = new MGFFONT("data/font.fb");
font2 = new MGFFONT("data/font.fb");

не работает ..

P.S. Сама реализация шрифта порадовала: масштабирование, угол наклона и т.д. очень прикольно

wSlava 01.05.2007 23:36

Вложений: 2
Удалось поправить шрифты под MGF, теперь все ОК !

http://savepic.ru/21866m.png

Дело действительно в буфере вывода, я подсмотрел реализацию подобного момента в gufont из SDK и все получилось, теперь есть отличный шрифтовый движок в составе mgf.
Кому интересно, смотрите в аттачменте подправленный mgf и пример font (уже откомпайленый) на нем. Кстати, в архиве прилагается help, написанный Mortem, все довольно таки подробно описано. Сам движок очень прост и хорошо структурирован, так что с помощью него очень просто будет делать хомки !
Теперь осталось добавить в mgf работу со звуком и будет законченный мини- движок, думаю, дальше я его включу в SDK и сделаю на нем некоторое подобие шаблонов для PSPxIDE (эта идея пока вертится в голове). А пока доделаю тетрис, сначала скорей всего переведу исходникики на mgf ...

P.S. Так же проект по туториалу я сделаю на mgf, код программок будет очень легкий, так как всю рутину скроет mgf . А сейчас ,в принципе, даже небольшая хомка загромождена многими "тяжелыми" и труднообъяснимыми моментами. В общем, стремимся к совершенству :)

wSlava 06.05.2007 21:34

Поднял тему поддержки аудио форматов. Пишу
класс mgfaudio.cpp в стоставе MGF, вот такие вещи в базовом классе:
bool AutoNext;
bool Playing;
bool Paused;
int CurIndex;
int Count;
int Add(const char *filename);
int Delete(int Index);
int Play();
int Stop();
int Pause();
int Next();
int Prev();
int Clear();
void Update();
это будет работать для любого поддерживаемого формата музыки !
сейчас реализовал поддержку MP3 из libmad, так же добавлю AT3.
И еще ! в SDK добавил библиотеку mikmod (так же их привяжу к MGF), а она реализует воспроизведение WAV, MOD, XM, IT, S3M, STM, MTM, 669, FAR, DSM, MED, ULT, UNI !!! Также позже добавлю OGG.
Так что будет мощная поддержка аудио форматов, и после Tetris я наверно сделаю многоформатный аудио-плеер для PSP :neo:

Mortem 08.05.2007 19:30

wSlava
Респект! Думаю дело пойдёт быстро! (:

В конце недели вернусь из отпуска. Кримсонленд там небось заскуча... (:

Mortem 13.05.2007 18:49

Никак не получается вернутся из отпуска, но программерская ломка взяла своё - начал писать основные классы для кримсона. Думается к концу следующей недели будет работающая версия.
Очень жду обновлений от wSlava.

План игры:
Уровень игры представляет собой двумерное пространство (вид сверху) с расположенными на нём динамическими (аналог физики) и статическими препятствиями. На уровне располагаются один или несколько "генераторов монстров", которые нужно уничтожить игроку для успешного прохождения уровня.
Игра будет построена на линейном прохождении нескольких уровней.
Уровни отличаются количеством и расположением статических и динамических объектов и "генераторов монстров". Так же, возможно, для уровней будет сделана индивидуальная тайловая карта, хотя пока я склоняюсь не делать этого...
Пока планирую только один тип монстров.
Физика представляет из себя столкновения акружностей, поэтому все объекты, игрок и монстры имеют похожую форму. (:
В игре предположительно будет 3 вида оружия и несколько бонусов (обдумывается) - например ускорение игрока.
Очки в игре начисляются за количество убитых монстров и отнимаются за время, привышающее установленное для прохождения конкретного уровня.
Будет вестись таблица рекордов.
Игра по сети и глобальная таблица рекордов не планируются.

Сделаю это, а там посмотрим, задел на улучшение постараюсь заложить в структуре движка...

wSlava 14.05.2007 10:30

Прикольно. Я вчера чуть доработал MGF_AUDIO, так что вроде можно уже показать :) . Еще один баг нашел в MGF в спрайтах, там (точно не помню) есть при вычислении имени игдекс [b+1], так вот нужно [b], это и есть глюк, который в 30 посте описывал. Еще универсальное иерархическое меню в виде дерева организовал, можно потом подумать, как это в MGF вставить, выложу, посмотришь.
Сегодня вечером уже точно выложу SDK и подредактированный MGF.

Mortem 14.05.2007 17:08

Ещё в MGFFONT есть косяк с выравниванием по правому краю - что-то я там поломал, когда пытылся ошибку найти. В принципе пока не значительный баг - как только до среды разработки доберусь - поправлю.
В спрайтах гляну, может ещё что не доглядел... Т.к. частично переносил из старого движка.
В общем мне пока нравится, как всё идёт. (:
Надо бы после кримсона занятся разборками с 3д. (:

wSlava 14.05.2007 23:10

Вложений: 1
Выкладываю дополненный SDK http://www.ifolder.ru/2010023
в котором добавил библиотеку libmikmod, а это означает поддержку WAV и большинства треккерных файлов.
Так же выклыдываю свою редакцию MGF, нашел парочку глюков, поправил шрифты, и, самое главное, добавил базовый класс работы с аудио mgfaudio.
Пока реализовал поддержку MP3 и WAV, но позже добавлю треккерные файлы и OGG.
Mortem, посмотри, может чего сам добавишь.

Вот структура MakeFile, когда задействован практически весь движок (из тетриса, полную версию так же вскоре выложу)
TARGET=TETRIS
OBJS=MGF/vram.o MGF/mgfutils.o MGF/mgftexture.o MGF/tgatexture.o MGF/pngtexture.o MGF/jpgtexture.o MGF/mgfcallback.o MGF/mgf.o MGF/mgfsprite.o MGF/mgffont.o MGF/mgfaudio.o MGF/mp3player.o main.o game.o
INCDIR =MGF
CFLAGS=-g -G0 -O0
CXXFLAGS=$(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS=$(CFLAGS)
BUILD_PRX=0
LIBDIR=
LDFLAGS=
LIBS=-lstdc++ -lpspgum -lpspgu -lpng -lz -ljpeg -lpsprtc -lm -lmad -lmikmod -lpspaudiolib -lpspaudio -lpsppower
EXTRA_TARGETS=EBOOT.PBP
PSP_EBOOT_TITLE=tetris
PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak

пример использования mgfaudio:

MGFAUDIO *mp3_player,*snd;
mp3_player=new MGFAUDIO();
mp3_player->PlayFile("Music.mp3");

snd=new MGFAUDIO(10);
snd->Add(".MUSIC/Alert.wav");
snd->Add(".MUSIC/Beep.wav");
snd->Play(0);
snd->Play(1);

при этом в один момент времени можно проигрывать лишь один MP3 (в принципе есть возможность несколько каналов организовать, но MP3 очень ресурсоемкий и смысла пока в этом не вижу), а Wav
можно воспроизводить несколько одновременно (точнее я поставил 10) , так же Wav будет микширован с другими звуковыми каналами это полезно
для эффектов (например поверх фоновой музыки), правда можно использовать только MONO Wave в несжатом RIFF формате.

Ну вроде все, тетрис мой уже почти совсем готов, самому уже не терпится выложить, но хочу уже все доделать, а не выкладывать шлейф бета версий, так что все путем :)

P.S. Mortem, да, самому хочется что нибудь "навороченное" из 3D замутить, мозг размять, но пока надо имеющиеся проекты закончить :)

wSlava 15.05.2007 01:37

Вложений: 1
Ух, жесть, еще один серьезный баг.
В общем у тебя (Mortem) есть класс MGFTEXTURE, в
MGFTEXTURE *MGF::Texture_Add
идет создание по типу: tex = new TGATEXTURE(); или tex = new PNGTEXTURE(); или tex = new JPGTEXTURE();
так вот виртуальная функция Load здесь срабатывает, так как в tex
приведенный указатель к конкретному типу, а вот когда возникает
Remove в void MGF::Texture_Remove(MGFTEXTURE *tex) {
указатель уже MGFTEXTURE !!! соответсвенно вызывается пустой Remove из
MGFTEXTURE, и память через некоторое время кончается и зызы виснет...
сначала я в Texture_Remove перед delete поправил так:
((PNGTEXTURE*)t)->Remove() ...
но потом посмотрел что везде одно и тоже и удалил везде Remove
а в базовом MGFTEXTURE оставил невиртуальный базовый Remove ...

В аттачменте все поправлено и работает ОК.

Mortem 15.05.2007 04:09

Респект. Ща сяду разбираться. (:

wSlava 21.05.2007 16:14

Еще мелкое замечание, ты для таймера используешь float, особо не вдавался в анализ, но чего то странное с ним твориться стало (слабозаметные рывки при анимации), числа delta порядка 0.035, вроде должно нормально, потом посмотрел, что раньше у меня было double, поставил так же и все ОК...


Текущее время: 19:40. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, vBulletin Solutions, Inc. Перевод: zCarot
PSPx Forum - Сообщество фанатов игровых консолей.