PDA

Просмотр полной версии : эмуль под линух... даа...



boo_boo
10.01.2006, 13:23
как известно, для linux нормального эмулятора с поддержкой тырдос и русских моделей zx нету... глянул на исходники fuse, все бы ничего, но слишком много надо менять то там то сям, при этом сам эмуль этот мне не особо нравится. возникла мысль -- а нету ли какого хорошего (типа z80stealth) dos-овского эмуля на Си с открытыми исходниками? US чудесен, конечно, но пересобачивать всю эту незнакомую мне виндовую муть (directx, directsound, гуйню) ломает. а в досовском проще должно быть с этим...

Vladimir Kladov
10.01.2006, 22:13
гуйни в унриле нету, не надо поклепы на SMT наводить. Могу предложить вариант: посмотреть как сделана музыка и видеовывод в фузе, и заменить это дело в унриле. Унрил вполне нормально должен бы спортироваться (вот только чуток VC++ может помешать, на линуксе больше распространен GNU C++, там все-таки какая-то разница есть небольшая).

Sinus
11.01.2006, 12:18
в анрыле менять надо очень дофига.
там много завязано на вындозные API-функции (CreateFile со всякими HANDLE и т.д.)

есть идея конечно написать обёртку, которая будет "эмулировать" необходимые API функции (не все конечно, только те что сильно много юзаются).

а с выводом видео проблем нет никаких, ибо в анриле все эти видео-фильтры вроде как легко пишутся.

вот со звуком можно подолбаться ;)

в принципе есть убрать прямое обращение к харду (в линухе это даже проще делается чем в виндах, но в эмуле очень много менять придётся), оставить один видео-фильтр (который написать под SDL), звук тоже перефигачить под SDL
а гуй (которого там всё таки есть одно окно) пока убрать нафиг то вполне себе можно портануть ;)

я как раз этим и занимаюсь ;)

но только доведённых до конца проектов у меня очень мало (5 к 100) ;)
на работе проще- там за это деньги платят, а вот для себя... быстро задалбыват.

так что если кто серьёзно будет портировать (а не так как я ;) то помогу чем смогу, благо есть опыт в программинге под всё что угодно (zx, ammy, pc-windows, windows-mobile, pc-linux, и прочее к эмулям не относящееся)

boo_boo
11.01.2006, 13:06
хм, может, и впрямь унрил... ага, гуйня там в виде диалога настройки, ну да фиг с ней. хуже, что вызовы винапи-функций раскиданы повсюду. хе, а не попробовать ли с winelib его собрать? %)))

2 sinus -- эх, дааа, была б такая работа, эмули портировать... мячта =)

*ушел думать и читать описалово winelib*

Sinus
11.01.2006, 13:39
обчитаешься доки - свистнешь

boo_boo
12.01.2006, 01:19
почитал, свистю. вроде маза... по сути та же фигня, что и wine (тот же код), однако можно переписать куски, которые глючат/не работают -- хоть под SDL, хоть подо что. завтра попробую собрать, выкинув откровенную левизну вроде bass -- интересно, хоть запустится? ,)

Sinus
12.01.2006, 11:34
ну попробуй ^_~
хотя по мне если "та же фигня что и wine" то это слишком тяжеловесно и тормознуто для порта эмуля.

Электрик
12.01.2006, 15:00
Кстати у кого есть VC++, под которым оно собирается (на моём порезанном 6.2 с диска за 70 рублей оно не компилится) поправьте хотя бы чтобы оно под Cedega работало. Там надо только убрать проверку на версию винды.

boo_boo
12.01.2006, 15:37
проблема с wine -- не общая тормознутось, а тормозная и недоделанная реализация отдельных winapi-фий и подсистем. то есть, если куски эмуля, юзающие эти самые функции, переписать, чтобы они юзали нативные линуховые интерфейсы, проблем быть не должно... типа звук, видео. а то, от чего быстродействия не требуется (создание потоков/открытие файлов/гуйня... -- то, что труднее всего портировать из-за того, что оно по всем сорцам мелкой россыпью) пусть себе тормозит всласть )

впрочем, жизнь покажет...

SMT
12.01.2006, 16:04
Кстати у кого есть VC++, под которым оно собирается (на моём порезанном 6.2 с диска за 70 рублей оно не компилится) лучше купить диск с vc7.0/7.1 ещё за 70руб. дело в том, что я начал переписывать MMX/SSE вставки на уровень повыше, через intrinsics

поправьте хотя бы чтобы оно под Cedega работало
не заработает, в Cedega не реализованы функции чтения из ini-файлов, а без них эмуль не проинициализируется

Электрик
12.01.2006, 16:25
А, то есть там всё изза ini... Ну это вполне можно исправить. Если найду правильный VC++...

boo_boo
12.01.2006, 20:15
хех, не все так просто -- при попытке собрать US с winelib вылезли следующие пакости:

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

может, проще будет довести до ума glukalka'у и прикручивать к ней помаленьку фичи из US?...

Электрик
12.01.2006, 21:55
бе) у ассемблерных вставок синтаксис -- интеловский, а нужен AT&T (или придется внешний ассемблер юзать). плюс, наверняка вылезут труднонаходимые глюки, связанные с размерностями типов данных, выравниванием полей структур и прочей такой дурью


Там асма не сильно много? Перепиши на цэ.



может, проще будет довести до ума glukalka'у и прикручивать к ней помаленьку фичи из US?...

Тогда уж лучше FUSE. Глюкалка когда я в последний раз её видел не работала вообще. Ну т.е. выдаёт серый фон, слышно как курсор по менюшке щёлкает и на этом всё.

boo_boo
13.01.2006, 00:28
Тогда уж лучше FUSE. Глюкалка когда я в последний раз её видел не работала вообще. Ну т.е. выдаёт серый фон, слышно как курсор по менюшке щёлкает и на этом всё.
у меня как раз последняя (0.90) глюкалка работает получше fuse.
может ты с левым мотифом/лесстифом ее собирал?

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

господа эмуляторописатели! а подскажите, плз, как делается автозапуск диска А, по типу как в US или пентагоне48 по кнопке reset_trdos?

SMT
13.01.2006, 09:33
господа эмуляторописатели! а подскажите, плз, как делается автозапуск диска А, по типу как в US или пентагоне48 по кнопке reset_trdos
нужно по сбросу установить переменную, отвечающую за "триггер TR-DOS"


Там асма не сильно много? Перепиши на цэв общем-то я уже много переписал. остались только CPUID, тайминг по RDTSC (если работает без звука) и пара фильтров (text64, bilinear). так что асмы можно просто удалить