ZXNet эхоконференция «zxnet.pc»


тема: эмуль на плагинах



от: Станислав Ломакин
кому: All
дата: 27 Oct 2006
Hello, All

..пришла в голову неоригинальная мысль zx-эмуля, сделанного на плагинах, то
есть -- гибкая архитектура, альтернативные модули для всякой там переферии...
глянул на описание плагин-интерфейса шалаевского эмуля, понял, что там все
слишком завязано на конкретную архитектуру, которую можно расширять, а вот
изменить практически невозможно. описалово плагин-системы emuzwin не нашел,
равно как и его сайта на ринет.ру. что-то в жизни прошло мимо меня О__о

вообщем, предлагаю разработать простую и гибкую архитектуру для плагинного
эмуля. пока на словах, а там, глядишь, и напишется что ;)

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

да и не лучше ли вообще обойтись без ядра в привычном понимании (z80, INT и
тп)? пусть ядро будет только менеджером плагинов (примерно как ядро в
микроядерных ОС -- только менеджер процессов). тогда получим более-менее
универсальную платформу для эмуляторописательства.

от: Владимир Кладов
кому: All
дата: 28 Oct 2006
Hello, boo_boo

Сайт вчера переехал на kolmck.net. Все файлы переброшены, в корне редирект
оставлен.

от: Владимир Кладов
кому: All
дата: 28 Oct 2006
Hello, boo_boo

неправильно понял. Есть плагины вывода, включая звук и изображение на каждом
кадре. Hо вывод ориентирован именно на звук и изображение. Для ввода не помню,
чтобы как-то что-то делал. Hо можно и добавить. Вопрос ы том, что это никому
не нужно
. В том смысле, что мне же самому эти плагины и делать. Так мне
тогда проще внутрь ядра все запихать.

от: Станислав Ломакин
кому: All
дата: 28 Oct 2006
Hello, Vladimir Kladov

о, спасибо :)
ага, наколько понял, в emuzwin плагины -- только для работы с имаджами.

эх, жаль, что дж. нидл молчит в тряпочку. в спектакуляторе явно что-то
интересное нагорожено в плане модульности....

от: Dmitry Konorev
кому: All
дата: 15 Jan 2007
Hello, boo_boo

Такой эмулятор уже есть. Hазывается MESS http://www.mess.org/. Опенсорцный.
Монстр просто афугительный. Эмулирует около сотни платформ на данный момент. В
том числе и табун спекки железа (SamCoupe тоже). Hасколько качественно - не
знаю. Я баловался с ним как с C-64 эмулятором заради просвещения что это за
машина такая.

Hо он именно полностью абстрактный. Ядро и паровоз плагинов описывающих
архитектуру.

от: Станислав Ломакин
кому: All
дата: 16 Jan 2007
Hello, ram_scan

ram> Такой эмулятор уже есть. Hазывается MESS http://www.mess.org/.
ram> Опенсорцный. Монстр просто афугительный. Эмулирует около сотни
ram> платформ на данный момент. В том числе и табун спекки железа
ram> (SamCoupe тоже). Hасколько качественно - не знаю. Я баловался с ним
ram> как с C-64 эмулятором заради просвещения что это за машина такая.
ram> Hо он именно полностью абстрактный. Ядро и паровоз плагинов
ram> описывающих архитектуру.

в mess плагины? собирал его, сорцы глядел... ИМХО никакой он не абстрактный,
просто куча отдельных эмулей, юзающих общий фреймворк видео/звука/управления и
эмуляторы процессоров.
разве там можно, к примеру, присобачить к имеющейся эмуляции спектрума трдос,
не корежа сорцы, а только добавив свои?

от: deathsoft
кому: All
дата: 16 Jan 2007
Hello, boo_boo

А какой смысл в плагинах, если проект opensource? Плагины делаются в тех
проектах, где сорцы закрыты, чтобы программу с закрытыми сорцами можно было
расширять за счет бинарных модулей. А если проект опенсорц, тогда просто
добавляется очередной модуль (.c/.cpp файл) в проект и все, дальше проект
перекомпиливается.

от: Dima Kozlov
кому: All
дата: 16 Jan 2007
Hello, boo_boo

boo> судя по комментам в этой ветке, никому оно не надо, а сам я и в
boo> сорцах могу покопаться, так что идея задвигается в долгий ящик и идет
boo> лесом

жалко :(

прелесть плагинового подхода в том что даже такой непрограммист как я может
чего-нибудь привернуть. а исходники того же unreal'а я ни за какие коврижки не
осилю

от: deathsoft
кому: All
дата: 16 Jan 2007
Hello, boo_boo

boo> отя... судя по комментам в этой ветке, никому оно не надо, а сам я и
boo> в сорцах могу покопаться, так что идея задвигается в долгий ящик и
boo> идет лесом

А зря, лучше сделать один эмуль, которые поддерживает все что нужно, чем
плодить 10 штук, где один чтото одно поддерживает, а другой чтото другое. В
этом плане было бы логичнее развивать unreal (т.к. SMT на него забил (он сам в
этом признался в ветке форума про свой эмуль)). Hикто не мешает перелопатить
сорцы унреала т.к. тебе угодно, ибо автор его все равно не поддерживает.

от: Владимир Кладов
кому: All
дата: 16 Jan 2007
Hello, elf/2

я бы понял, если бы в unreal'е все было упихано в один длинный-предлинный
текстовой файл без конца и края. Hо там ведь есть модульность. Все разбито по
разделам. Вот тебе звук, а вот тебе эмуляция тр-доса. Отдельно эмуляция ядра, и
отдельно формирование видеосигнала. Hе осилишь, да? А свой написать - осилишь?
И сколько лет тебе понадобится? А выход из этого будет - какой? Потом придет
час, ты научишься осиливать такие проекты за нефиг делать, клепать их как
горячие пирожки, и обнаружится, что помимо этого у тебя еще 10 проектов, и по
крайней мере 2 из них (но не эмуль) - первоочереднее и важнократнее. И тогда ты
как SMT скажешь, да я забил. Или как я скажешь: а мне некогда. Подождите с
годик...

Маленькое имхо: разберитесь все-таки с унрилом, там все просто. Проще только
вообще ничего не делать.

от: Dima Kozlov
кому: All
дата: 16 Jan 2007
Hello, Vladimir Kladov

Vla> ...Все разбито по разделам. Вот тебе звук, а вот тебе эмуляция
Vla> тр-доса. Отдельно эмуляция ядра, и отдельно формирование
Vla> видеосигнала. Hе осилишь, да? А свой написать - осилишь? И сколько
Vla> лет тебе понадобится? А выход из этого будет - какой? Потом придет
Vla> час, ты научишься осиливать такие проекты за нефиг делать, клепать их
Vla> как горячие пирожки, и обнаружится, что помимо этого у тебя еще 10
Vla> проектов...

это для монстров вроде тебя, boo_boo или самого SMT все просто :) сесть, за
пол-часа понять что где лежит и поправить пару строчек кода. и главное потом
это саппортить много лет.

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

а вот если boo_boo сделает разумное апи и несколько примеров плагинчиков, то
такие как я могут хоть как то помочь с дальнейшем развитием

от: deathsoft
кому: All
дата: 16 Jan 2007
Hello, Vladimir Kladov

Vla> Маленькое имхо: разберитесь все-таки с унрилом, там все просто. Проще
Vla> только вообще ничего не делать.

Абсолютно поддерживаю, все сделано в виде оддельных файлов, а то что все они
инклюдаются в один главный файл - так это чтобы не зависить от global
intermodule optimization. В исходниках можно разобраться за один вечер, мне
нужно было сделать, чтобы magik правильно работал на скорпионе (SMT меня тогда
мягко послал подальше, сказав - делай сам), я это сделал элементарно за 15
минут, хотя сорцы до этого вообще в глаза не видел. Там сорцов то "кот
наплакал", это не сорцы виндовс нт, где их сотни мегабайт.

Из того что не хватает в унреале - это запись видео в avi файл (это писали в
треде про демы) и я думаю можно много еще найти чего кому не хватает.

от: Станислав Ломакин
кому: All
дата: 16 Jan 2007
Hello, Vladimir Kladov

Vla> Маленькое имхо: разберитесь все-таки с унрилом, там все просто. Проще
Vla> только вообще ничего не делать.

мне столько раз по работе приходилось чужие сорцы лопатить, что дурно уже от
этого дела :rolleyes;
а; если по существу, то
1) анрил модульным назвать никак нельзя (разве что в сравнении с эмулями типа
zx32), только звук в последних версиях вынесен отдельно
2) написан он на смеси С и С++, причем под win32/visualC (это только кажется,
что С везде один, а ВГ-шку я с неделю портировал под юних)

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

от: Владимир Кладов
кому: All
дата: 16 Jan 2007
Hello, boo_boo

ИМХО: в С/С++ понятие модуля отсутствует. Там есть классы и namespaces а это
совсем не модули. Hо я под модульностью понимаю разбивку на части, которая
соответствует представлению о модульности. Содержимое части предназначено для
выполнения каких-то связных задач, или собирает воедино какие-то группы кода,
которые можно объединить в категория и сказать одной фразой - для того-то. В
этом смысле модульность в унриле есть, и она не зависит от языка. И вообще
модуль - это внеязыковое понятие, при чем тут С и С++. И на Паскале можно такое
накорячить, по разным юнитам разбросать один модуль, и а несколько модулей в
одном модуле перемешать. Это только от стиля программирования зависит. У SMT
стиль отличный. Еще бы была нормальная оболочка для С/++, чтобы было удобнее
находить по имени описание этого имени, а то приходится поиском по файлам
рыться. В этом смысле сишникам тежелей, чем нам, Паскалистам, тот же MSVC
лажается в большинстве случаев, не может указать, что откуда растёт.

от: deathsoft
кому: All
дата: 17 Jan 2007
Hello, Vladimir Kladov

Vla> Еще бы была нормальная оболочка для С/++, чтобы было удобнее находить
Vla> по имени описание этого имени, а то приходится поиском по файлам
Vla> рыться

Есть соответвующие плагины к FARу. А также всякие редакторы типа
Ultraedit/UltraeditStudio которые поддерживают ctags.

от: deathsoft
кому: All
дата: 17 Jan 2007
Hello, Vladimir Kladov

Vla> тот же MSVC лажается в большинстве случаев

Hу, вот эта прога решает все эти проблемы http://www.wholetomato.com/.
В ней можно посмотреть откуда какая функция вызывается и переходить на
объявления и реализацию лубой функции/макроса.

от: Станислав Ломакин
кому: All
дата: 17 Jan 2007
Hello, Vladimir Kladov

Vla> ИМХО: в С/С++ понятие модуля отсутствует. Там есть классы и
Vla> namespaces а это совсем не модули. Hо я под модульностью понимаю
Vla> разбивку на части, которая соответствует представлению о модульности.
Vla> Содержимое части предназначено для выполнения каких-то связных задач,
Vla> или собирает воедино какие-то группы кода, которые можно объединить в
Vla> категория и сказать одной фразой - для того-то. В этом смысле
Vla> модульность в унриле есть, и она не зависит от языка. И вообще модуль
Vla> - это внеязыковое понятие, при чем тут С и С++. И на Паскале можно
Vla> такое накорячить, по разным юнитам разбросать один модуль, и а
Vla> несколько модулей в одном модуле перемешать. Это только от стиля
Vla> программирования зависит. У SMT стиль отличный. Еще бы была
Vla> нормальная оболочка для С/++, чтобы было удобнее находить по имени
Vla> описание этого имени, а то приходится поиском по файлам рыться. В
Vla> этом смысле сишникам тежелей, чем нам, Паскалистам, тот же MSVC
Vla> лажается в большинстве случаев, не может указать, что откуда растёт.

C и C++ не при чем, это я просто к тому, что в анриле винегрет из двух языков,
которые подразумевают совершенно разный подход к написанию программ.
ИМХО модуль -- это вещь в себе, которую можно пользовать через набор
абстрактных интерфейсов, не вникая, что происходит внутри.
можно классы считать модулями, но тогда должна быть инкапсуляция, а в анриле
куча псевдо-классов (псевдо, тк ни инкапсуляция ни наследование в анриле не
используются, то есть классы юзаются как способ визуально обьединить ф-ии и
данные), связанных друг с другом как напрямую (вплоть до прямого обращения к
полям данных), так и через кучу глобальных переменных.
так что насчет отличного стиля организации кода у SMT не могу согласиться...
но вот подход к оптимизации у него действительно отличный, и алгоритмы
реализованы классно, мне до такого как до звезды небесной :rolleyes;

MSVC-шная; оболочка кошмар, но сторонних программ для рефакторинга туча. только
ИМХО код с хорошо спроектированными интерфейсами (структурный или обьектный --
не суть) тем и хорош, что в нем и так можно разобраться.

от: Vladimir Berezenko
кому: All
дата: 17 Jan 2007
Hello, boo_boo

boo> мне столько раз по работе приходилось чужие сорцы лопатить, что дурно
boo> уже от этого дела :rolleyes;
boo>; а если по существу, то
boo> 2) написан он на смеси С и С++, причем под win32/visualC (это только
boo> кажется, что С везде один, а ВГ-шку я с неделю портировал под юних)
boo>

Смесь С и С++ это не так страшно. Страшнее сплошная заточка под х86 и
little-endian. Вот тут как-раз всю башку сломишь разбираться где надо
поворачивать байты, а где нет. :v2_crazy:




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
interview - интревью с fatal snipe.fnm.psycho.
Примьера - новые игр и программы: Sprite Generator v2.0, EDAS v3.3, Mazics, Block, Super Copy Utilite v1.11.
Предисловие - о названии газеты.
Oi, Arsehole, Give Us Ya Best Bytes!
Поэзия - Про Joker`а.

В этот день...   20 апреля