Порт FCE Ultra - NES (Dendy)

...
  • в общем теперь так... что с твоей версией(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..

    Code: Select all

    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...
    залез туда... вижу:

    Code: Select all

    ...
    #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 вместо выше написанного...

    Code: Select all

    ...
    #define PSS "/"
    #define PS '/'
    ...
    либо
    вставить в первую строчку в файл Makefile.base строчку:

    Code: Select all

    TFLAGS  = -O2 -fomit-frame-pointer -DC80x86 -DLSB_FIRST -DVGA -DPSS_STYLE=1 -DDRIVER_DIR="\"menuet\""
    строчку взял из Makefile.menuet... кстати.. этот файл нигде не участвует.. ну и ладно.. =))..
    я рекомендую второй вариант... =)... благо с первым вариантов fce будет компилироваться и собираться... но работать не будет.. =)..
    ...
    чтож... пытаюсь снова скомпилировать.. получаю

    Code: Select all

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

    Code: Select all

    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 и выдает вроде(пишу так, ибо я с майком крайне мало работал.. и плохо разбираюсь в ошибках) ошибку:

    Code: Select all

    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... вижу

    Code: Select all

    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... добавляю гденить сверху строчку

    Code: Select all

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

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

    з.ы. компилировал и собирал программу три дня.. =)... не полные конечно.... первое с чем столкнулся - это найти средство сборки.. =).. потом помучался с version.h... и сильно и долго мучался с готовой но не рабочей программой.. =)... благо из двух вариантов(описанныйх выше) с version.h, я выбрал первый.. =)... а вот про нехватку нужных флагов для компилятора - я не догадывался.. поэтому и не мог собрать рабочую программу... решил написать опус о своих старанию сюда.. и о нерабочей программе(т.е. явно неправильной сборки)... но пока писал - проверял разные варианты.. и нарвался на правильный.. =)...
    надеюсь комунить сей рассказ понравиться.... а может и не понравиться... я получил опыт пока собирал проект... благо привык нажать одну кнопку.. и получить готовую прогу.. конечно для меня многое не понятно.... но все равно... =)... спасибо...
  • Молодец! Сам догадался, значит не так уж ты и не очень в Си. А я вот тут http://asper.ucoz.ru/load/0-0-0-2-20 уже исходник с исправленным Makefile.base и MK.bat закачал с намерением написать какие надо внести изменения в эти файлы в FCEU_v0.1a_src.7z.
    s1n wrote:получаю fce(размер 252352)... хм.. проверяю... рабочий.. =)...

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

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


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

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

    верно.

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

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

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


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

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

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

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

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

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

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

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

    Вообще я бы хотел добавить ещё звук к эмулятору, но т.к. на мою аудиокарту пока нет драйвера, то и тестировать мне неначём. Поэтому если у кого-нибудь возникнет такое же желание и будет поддерживаемая Колибри аудиокарта...
  • решил поковырять FCEUv0.2src.7z.....
    в MK.bat прописал полный путь к libmSDL.a...

    Code: Select all

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

    Code: Select all

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

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

    з.ы.2. добавил страничку на wiki (http://wiki.kolibrios.org/Applications/ru/FCEU)...
  • Исправил MK.bat. Выкинул всё лишнее. Ссылка та же.
    changelog не ведешь???

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

    на
    4. Заходишь в папку menuetos из пункта 3.
  • fix it.. =)...
    за сорсы обновленые спасибо.. буду вникать...
  • Недели через две будет новая версия, а пока Just for fun, пара старых версий с глючным выводом графики.
    http://narod.ru/disk/9897453000/FCEU_GluVers.7z.html
  • Версия порта 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
    Attachments
    FCEU_v0.3.7z (141.86 KiB)
    Downloaded 571 times
  • hidnplayr
    Duck hunt, Ski Or die! games would work now. :)