Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Пт июн 23, 2017 11:30 am

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 76 сообщений ]  На страницу Пред. 1 2 3 4 5 6 След.
Автор Сообщение
 Заголовок сообщения: Re: Порт FCE Ultra
СообщениеДобавлено: Сб дек 13, 2008 10:10 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пт июн 27, 2008 3:22 pm
Сообщения: 971
barsuk прав.
Целым архив залить всё равно не удалось, но это видимо связано с политикой провайдера или клуба, где я сижу (хотя скачивать "большие" файлы могу без проблем).
Закачал и DJGPP и menuetlibc.

http://ftp.kolibrios.org/users/Asper/


Вернуться к началу
 Заголовок сообщения: Re: Порт FCE Ultra
СообщениеДобавлено: Вс дек 14, 2008 10:47 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Вт янв 24, 2006 8:50 am
Сообщения: 249
в общем теперь так... что с твоей версией(c местного ftp).. что с моей(с зеркала официального ftp), как я понял разницы нету(всмысле итог один и тот же, но размер файлов разный)...
распоковал djgpp и menuetlibc....
прописал все переменные среды(DJGPP, MENUETDEV - поставил c:\DJGPP\menuetos\ и в Path добавил пути к menuetos\include\, menuetos\linuxtools\, DJGPP\bin\)...
распоковал FCEU_v0.1a_src.7z...
получил кучу *.c, *.h, *.o и других файлов...
у тебя там лежит уже скомпилированный fce(размер 263104)... рабочий...
и fce.kex(размер 74292, сжатый kpack)... тоже рабочий...
проверяю через KlbrInWin.exe, на "Matrix v0.06, The by Wojciech Andralojc (PD).nes" и "Tetramino v0.30 by Damian Yerrick (PD).nes"....

Опыт 1:
снес откомпилированные(но оставил *.o файлы)...
сразу попытался собрать fce через MK.bat...
получаю fce(размер 252352)... хм.. проверяю... рабочий.. =)...

Опыт 2:
снес fce и все *.o файлы... даже в подпапках.. =)...
запускаю MKBase.bat... fce.o, m6502.o, mapper.o компилируються нормально.... вываливается ошибка на компиляции video.c..
Код:
gcc -Wall    -c -o video.o video.c
video.c: In function 'InitVirtualVideo':
video.c:39: warning: assignment makes pointer from integer without a cast
video.c: In function 'writepcx':
video.c:65: error: expected ')' before 'PSS'
video.c:65: warning: too few arguments for format
video.c:73: warning: pointer targets in passing argument 1 of 'sprintf' differ i
n signedness
video.c:111: warning: pointer targets in passing argument 1 of 'sprintf' differ
in signedness
make.exe: *** [video.o] Error 1

варнинги я как понял совсем не причер.. смотрю причину ерроров.. =)..
так... чтото с переменной PSS... она определяется в version.h...
залез туда... вижу:
Код:
...
#if PSS_STYLE==2
#define PSS "\\"
#define PS '\\'
#elif PSS_STYLE==1
#define PSS "/"
#define PS '/'
#elif PSS_STYLE==3
#define PSS "\\"
#define PS '\\'
#endif
...

хм... видимо pss не определяеться.... т.е. PSS_STYLE не проходит...
тут два вариант придумал... либо изменить в version.h вместо выше написанного...
Код:
...
#define PSS "/"
#define PS '/'
...

либо
вставить в первую строчку в файл Makefile.base строчку:
Код:
TFLAGS  = -O2 -fomit-frame-pointer -DC80x86 -DLSB_FIRST -DVGA -DPSS_STYLE=1 -DDRIVER_DIR="\"menuet\""

строчку взял из Makefile.menuet... кстати.. этот файл нигде не участвует.. ну и ладно.. =))..
я рекомендую второй вариант... =)... благо с первым вариантов fce будет компилироваться и собираться... но работать не будет.. =)..
...
чтож... пытаюсь снова скомпилировать.. получаю
Код:
c:\DJGPP\bin\ld.exe: nest.o: No such file: No such file or directory (ENOENT)

видимо не хватает файлика nest.o... иду в drivers\menuet\...
выполняю команду make.... получаю ошибки(пока пишу две главные.. остальные может изчезнут)...
Код:
nest.c:1:70: error: D:/OS/menuetos/include/menuet/os.h: No such file or directory (ENOENT)
vgavblank.h:2:50: error: D:/OS/menuetos/include/SDL/SDL_timer.h: No such file or directory (ENOENT)

хм... вижу что видимо стоят жесткие пути... иду исправлять.. =)...
как не страно.. правильные(т.е. относительные пути для настроеной системы) были закоментированы... убираю полные пути... убираю коментарии.. опять make...
nest.o собирается... хоть make и выдает вроде(пишу так, ибо я с майком крайне мало работал.. и плохо разбираюсь в ошибках) ошибку:
Код:
nest.o:nest.c:(.text+0x40f): undefined reference to `_DriverInterface'
nest.o:nest.c:(.text+0x7b1): undefined reference to `_LoadGame'
nest.o:nest.c:(.text+0x7bd): undefined reference to `_InitMachine'
nest.o:nest.c:(.text+0x7c6): undefined reference to `_TrashMachine'
nest.o:nest.c:(.text+0x7d6): undefined reference to `_Run6502'
nest.o:nest.c:(.text+0x7db): undefined reference to `_TrashFCE'
nest.o:nest.c:(.text+0x7e0): undefined reference to `_TrashMachine'
nest.o:nest.c:(.text+0x837): undefined reference to `_fceumain'
nest.o:nest.c:(.text+0x986): undefined reference to `_SDL_Delay'
make.exe: *** [nest] Error 1


теперь MKBase.bat проходит нормально.. =).. буду запускать MK.bat..
новая ошибка... не находит m.о... хотя он нормально собирается еще в MKBase.bat... это как я понял mapper'ы...
смотрю в MK.bat... вижу
Код:
mld fce fce.o mapper.o m6502.o video.o general.o endian.o svga.o sound.o nsf.o fds.o gg.o ines.o state.o nest.o m.o LibmSDL.a

строчка сборки запускаемого файла... как я понял.. =)... чтож... нужный файл m.o лежит в папке mappers\.. чтоже.. исправляю MK.bat... добавляю гденить сверху строчку
Код:
copy mappers\m.o m.o
...
и о чудо... файл полностью собирается... получается fce размером 252352 байт... не верю глазам.. =)... такой же как и у тебя.. =)... контрольная сумма не совпадает только...
запускаю KlbrInWin.exe... вбиваю путь... нажимаю enter... и УРА... работает.. =)...

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

з.ы. компилировал и собирал программу три дня.. =)... не полные конечно.... первое с чем столкнулся - это найти средство сборки.. =).. потом помучался с version.h... и сильно и долго мучался с готовой но не рабочей программой.. =)... благо из двух вариантов(описанныйх выше) с version.h, я выбрал первый.. =)... а вот про нехватку нужных флагов для компилятора - я не догадывался.. поэтому и не мог собрать рабочую программу... решил написать опус о своих старанию сюда.. и о нерабочей программе(т.е. явно неправильной сборки)... но пока писал - проверял разные варианты.. и нарвался на правильный.. =)...
надеюсь комунить сей рассказ понравиться.... а может и не понравиться... я получил опыт пока собирал проект... благо привык нажать одну кнопку.. и получить готовую прогу.. конечно для меня многое не понятно.... но все равно... =)... спасибо...


Вернуться к началу
 Заголовок сообщения: Re: Порт FCE Ultra
СообщениеДобавлено: Пн дек 15, 2008 7:20 am 
Не в сети
Аватара пользователя

Зарегистрирован: Пт июн 27, 2008 3:22 pm
Сообщения: 971
Молодец! Сам догадался, значит не так уж ты и не очень в Си. А я вот тут http://asper.ucoz.ru/load/0-0-0-2-20 уже исходник с исправленным Makefile.base и MK.bat закачал с намерением написать какие надо внести изменения в эти файлы в FCEU_v0.1a_src.7z.

s1n писал(а):
получаю fce(размер 252352)... хм.. проверяю... рабочий.. =)...

Размеры fce разные, потому что в архиве вариант скомпилированный с libc от Ярека, ты же скомпилировал с libc от Diamond'а.

s1n писал(а):
Makefile.menuet... кстати.. этот файл нигде не участвует.. ну и ладно.. =))..


поначалу я его использовал когда компилировал всё строчкой make -f Makefile.base, но потом решил, что лучше отдельно собирать базовый код и отдельно код относящийся к Колибри.

s1n писал(а):
благо с первым вариантов fce будет компилироваться и собираться... но работать не будет.. =)..

верно.

s1n писал(а):
хм... вижу что видимо стоят жесткие пути... иду исправлять.. =)...
как не страно.. правильные(т.е. относительные пути для настроеной системы) были закоментированы...

У меня почему-то с относительными путями эти файлы не находятся, но на всякий случай (и для общего понимания дела) я их оставил в комментарии.

s1n писал(а):
nest.o собирается... хоть make и выдает вроде(пишу так, ибо я с майком крайне мало работал.. и плохо разбираюсь в ошибках) ошибку:


Эти undefined reference это функции определенные в других частях программы и не видимые в этом модуле.
Мне было лень писать extern'ы и я просто забил на них, т.к. программа все равно собирается. Я подумал, что если у кого-то лени поменьше и есть желание то он всегда сможет исправить это самостоятельно.

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

А я вот ещё вчера вечером самостоятельно исправил и надеялся тебе помочь :)

s1n писал(а):
з.ы. компилировал и собирал программу три дня.. =)...

это ещё ничего у меня ушло на это около месяца, учитывая то, что я до этого писал на Си (и С++) только для компиляторов фирмы Borland и ничего не знал о мэйкфайлах и встроенном ассемблере gcc, поэтому
s1n писал(а):
благо привык нажать одну кнопку

мне понятно :) .

s1n писал(а):
конечно для меня многое не понятно.... но все равно... =)... спасибо...

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

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


Вернуться к началу
 Заголовок сообщения: Re: Порт FCE Ultra
СообщениеДобавлено: Пн дек 15, 2008 9:53 am 
Не в сети
Аватара пользователя

Зарегистрирован: Вт янв 24, 2006 8:50 am
Сообщения: 249
решил поковырять FCEUv0.2src.7z.....
в MK.bat прописал полный путь к libmSDL.a...
Код:
mld nest drivers/menuet/nest.o D:/OS/menuetos/lib/libmSDL.a

но у тебя в папке уже есть он... так что можно либо грохнуть libmSDL.a, либо изменить путь... примерно так..
Код:
mld nest drivers/menuet/nest.o libmSDL.a

и Makefile.win не собирается.. =).. но там не стал заморачиваться... мне он не очень нужен...
и еще... зачем ты оставляешь в архиве с сорсами *.o и fce???

з.ы. а ты changelog не ведешь??? просто интеерсно что ты добавил в новой версии... что убрал... readme твоего не видно в сорсах.. =)

з.ы.2. добавил страничку на wiki (http://wiki.kolibrios.org/Applications/ru/FCEU)...


Вернуться к началу
 Заголовок сообщения: Re: Порт FCE Ultra
СообщениеДобавлено: Вт дек 16, 2008 12:52 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пт июн 27, 2008 3:22 pm
Сообщения: 971
Исправил MK.bat. Выкинул всё лишнее. Ссылка та же.
Цитата:
changelog не ведешь???

Он идет вместе с бинарником, там же и readme.
За страничку на wiki спасибо.
Я там немножко ошибся. Можешь исправить:
Цитата:
4. Заходишь в папку menuetos из пункта 2.

на
4. Заходишь в папку menuetos из пункта 3.


Вернуться к началу
 Заголовок сообщения: Re: Порт FCE Ultra
СообщениеДобавлено: Вт дек 16, 2008 1:13 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Вт янв 24, 2006 8:50 am
Сообщения: 249
fix it.. =)...
за сорсы обновленые спасибо.. буду вникать...


Вернуться к началу
 Заголовок сообщения: Re: Порт FCE Ultra
СообщениеДобавлено: Пн июн 15, 2009 9:44 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пт июн 27, 2008 3:22 pm
Сообщения: 971
Недели через две будет новая версия, а пока Just for fun, пара старых версий с глючным выводом графики.
http://narod.ru/disk/9897453000/FCEU_GluVers.7z.html


Вернуться к началу
 Заголовок сообщения: Re: Порт FCE Ultra
СообщениеДобавлено: Чт июл 09, 2009 5:07 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пт июн 27, 2008 3:22 pm
Сообщения: 971
Версия порта 0.3.
Версия эмулятора 0.96.

- добавлено 33 новых маппера( 48, 51, 52, 57, 61, 72, 74, 77, 82, 83, 88, 92, 96, 114, 115-117, 140, 144, 152-156, 189, 227, 232, 234, 235, 242, 248-250 )
- добавлены новые эмулируемые устройства ( power pads, game pads, zapper, arkanoid, shadow, Family BASIC Keyboard )
- выбор виртуального джойстика
- ускоренный вывод графики
- вывод fps
- сообщения теперь выводятся на доску отладки
- см. файл "ChangeLog.txt" чтобы просмотреть весь список изменений

_____________________________________________________________________________________________________________________________________________

Port version 0.3.
Emulator version 0.96.

- 33 new mappers were add ( 48, 51, 52, 57, 61, 72, 74, 77, 82, 83, 88, 92, 96, 114, 115-117, 140, 144, 152-156, 189, 227, 232, 234, 235, 242, 248-250 )
- new emulated devices were add ( power pads, game pads, zapper, arkanoid, shadow, Family BASIC Keyboard )
- select virtual joysticks
- faster graphics output
- fps output
- messages now output to the debug board
- see file "ChangeLog.txt" for full list of changes


Вложения:
FCEU_v0.3.7z [141.86 КБ]
228 скачиваний
Вернуться к началу
 Заголовок сообщения: Re: Порт FCE Ultra
СообщениеДобавлено: Чт июл 09, 2009 5:11 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пт июн 27, 2008 3:22 pm
Сообщения: 971
hidnplayr
Duck hunt, Ski Or die! games would work now. :)


Вернуться к началу
 Заголовок сообщения: Re: Порт FCE Ultra
СообщениеДобавлено: Пт июл 10, 2009 9:56 am 
Не в сети
Аватара пользователя

Зарегистрирован: Вт янв 24, 2006 8:50 am
Сообщения: 249
спасибо за обновления..


Вернуться к началу
 Заголовок сообщения: Re: Порт FCE Ultra
СообщениеДобавлено: Пт июл 10, 2009 10:44 am 
Не в сети
Аватара пользователя

Зарегистрирован: Пт июн 27, 2008 3:22 pm
Сообщения: 971
Пожалуйста. :)
Работаю сейчас над звуком, тестирую в Qemu на SoundBlaster. Плохо, что нет статьи по работе со звуковыми драйверами (Infinity, Sound, SB16), из-за этого много времени уходит на копание в коде драйверов и понимание логики работы звуковой подсистемы Колибри. :(
Может быть кто-нибудь мог бы взяться за написание такой статьи, а то кроме ac97snd и doom написанных Serge до сих пор не одно приложение не работает со звуком.


Вернуться к началу
 Заголовок сообщения: Re: Порт FCE Ultra
СообщениеДобавлено: Пт июл 10, 2009 3:26 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пн ноя 28, 2005 8:00 pm
Сообщения: 1601
dosbox тоже работает со звуком.
API для работы со звуком с интерфейсом для Си и реализацией на Fasm есть на svn в папке programs/develop/sdk/trunk/sound и в SDK. Копаться в драйверах необязательно.

_________________
Ушёл к умным, знающим и культурным людям.


Вернуться к началу
 Заголовок сообщения: Re: Порт FCE Ultra
СообщениеДобавлено: Ср июл 15, 2009 9:10 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пт июн 27, 2008 3:22 pm
Сообщения: 971
Действительно работает, хотя в Qemu насладиться звуком dosbox и не получается.
SDK я конечно же смотрел, sound.lib с DJGPP не работает (видимо писалась под какой-то другой компилятор языка C с другим количеством подчеркиваний, не стал разбираться), но это не проблема все эти функции я переписал в отдельный модуль FCEU. Дело в том, что в эти функции мы передаем хэндлер буфера типа указатель на STREAM, как я понял, а у меня уже есть заполненный буфер в FCEU, содержимое которого мне просто нужно скопировать в буфер из которого и читаются сэмплы. Со звуком я раньше никогда не работал, так что может где-то что-то и напутал, но имеющийся, например, порт FCE Ultra под DOS, именно так и поступает выводя звук на SB16 аудиокарту.

Цитата из файла porting.txt (документация по портированию FCE Ultra, поставляется вместе с исходниками):

void FCEUD_Update(uint8 *XBuf, int32 *Buffer, int Count);
Called by FCE Ultra on every emulated frame. This function should
perform the following three things(in any order):

1.
Update the data pointed to by the pointers passed to
FCEUI_SetInput() and FCEUI_SetInputFC().
2.
Copy contents of XBuf over to video memory(or whatever needs to be
done to make the contents of XBuf visible on screen).
Each line is 256 pixels(and bytes) in width, and there can be 240
lines. The pitch for each line is 272 bytes.
XBuf will be 0 if the symbol FRAMESKIP is defined and this frame
was skipped.
3.
Write the contents of "Buffer" to the sound device. "Count" is the
number of samples to write. Only the lower 16-bits of each
sample are used, so each 32-bit sample in "Buffer" can be converted to
signed 16-bit by dropping the upper 16 bits.
When sound was disabled for the frame, "Count" will be 0.


Конец цитаты.

Если работать напрямую с драйвером SB16, то другие аудиокарты конечно же не станут выводить звук, а то и что похуже случится. Если же работать с Infinity (что и в принципе и необходимо), то не вполне понятно как состыковать буфер, предоставляемый FCEUD_Update и STREAM.


Вернуться к началу
 Заголовок сообщения: Re: Порт FCE Ultra
СообщениеДобавлено: Чт авг 20, 2009 11:31 am 
Не в сети
Аватара пользователя

Зарегистрирован: Пт июн 27, 2008 3:22 pm
Сообщения: 971
Со звуком более - менее разобрался. Как оказалось создавать STREAM вручную не надо. Первым делом необходимо создать буфер через функцию CreateBuffer, которая создает буфер нужного формата и самостоятельно заполняет поля STREAM, после чего возвращает на него указатель через параметр. Существует несколько видов буферов: PCM_STATIC, PCM_RING, PCM_OUT и т.д. Некоторые функции драйвера Infinity предназначены для работы только с определенными видами буферов.
Вобщем создаю буфер так:
Код:
   if (CreateBuffer(PCM_1_8_44, 0, &SndBuf)) //Create stream buffer
   {
     __kolibri__debug_str("create buffer return error\n\r");
     return 0;
   }

звук вывожу в функции FCEUD_Update(uint8 *XBuf, int32 *Buffer, int Count); через WaveOut(SndBuf,Buf,Count);
Звук есть, но пока что лишь отдаленно напоминает то, что должно быть на самом деле. Продолжаю работать над этим.


Вернуться к началу
 Заголовок сообщения: Re: Порт FCE Ultra
СообщениеДобавлено: Чт авг 20, 2009 2:14 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3927
Asper

WaveOut() ,блокирует поток пока не прокачает все данные во внутренний буфер. И там большой лаг от вызова функции до вывода на чип (макс. 0.17с). лучше выводить звук через кольцевой буфер PCM_RING. Посмотри в исходниках Doom svn/programs/games/doom/trunk/s_sound.c S_Init() запускает в отдельном процессе sound_proc() и та выполняет всю работу по микшированию и выводу звука.


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 76 сообщений ]  На страницу Пред. 1 2 3 4 5 6 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB