Demul - начало пути (интервью с Wind)



Думаю всем было бы интересно узнать как начал свой путь один из лучших эмуляторов Dreamcast - Demul. Недавно я попросил изложить вкратце историю создания и рождения русской команды сего эмулятора. Wind является одним из первых разработчиков, если кто не знал. Цитирую его слова:

"В далеком году (уже не помню каком), увидел я gens и выпал. У меня была настоящая sega megadrive и я не мог поверить своим глазам, что мой любимый UMK3 можно играть на PC! Ну с этого момента меня эмуляция забрала всего, мне было дико интересно узнать как же все это работает, но жил я в то время в глухой деревни, где не то что интернета, даже телефона не было, так что приходилось бегать к знакомым с карточкой на модем и сидеть в интернете в поисках информации программировать на тот момент я не умел совсем, но под руку удачно попались учебники некоего Калашникова - вот человек супер учитель скажу). По его учебникам я начал изучать тогда еще assembler x86-16. Процесс обучения пошел на удивление быстро, к тому времени у меня уже под накопилось сорцов разных эмуляторов и я начал изучать. По началу конечно же, ничего не получалось, но потом замаячила на горизонте эмуляция PS2.


Тогда его писал linuzappz, человек умел воистину понятный код создавать, его читаешь как обычную книгу и все понимаешь. Ну я и начал изучать первые сорцы, которые ничего кроме демок-то и не пускали, но они дали мне понять суть, что куда и откуда. Овладев начальными знаниями, я захотел сделать что-то, долго не мог выбрать, какая консоль меня привлекает. Потом решил попробовать sega saturn. Где-то месяца за два с горем пополам я написал на чистом assembler x86 эмулятор, который все что и мог - это пускать биос, без задних планов, просто самый минимум.

Даже не предоставляешь какую эйфорию испытывал от вида того, что у меня хоть что-то получилось создать самому! Но в следствии молодости я довольно быстро остыл и забросил, считая что, что-либо серьезное мне все равно не создать, а доказать себе что я что-то могу уже вроде и доказал. Спустя не такой уж и большой промежуток времени, в руки мне попался Resident Evil - эта игра меня захватила. Довольно быстро пройдя все доступные на  PC части, я пошел в разведку, в смысле в поисках еще каких-либо частей этой игры. Тут я узнал, что оказывается на Sega Dreamcast существует еще одна часть называется Resident Evil Code Veronica. Поиск эмулятора этой системы конечно же ни к чему не привел и я понял, что "напишу ка я для себя эмулятор этой консоли пройду и успокоюсь". Релизить на все общее обозрение его даже близко в планы не входило, ну я и взялся писать. Плохое умение программировать меня тормозило и тут внезапно выходит Chankast.



Я сразу конечно же бросил все свои попытки, которые на тот момент в принципе-то мало к чему привели и взялся играть в долгожданную RECV. На удивление игра шла шикарно, конечно вечно пропадал звук, но мне это не сильно мешало, пока я не дошел до второго диска, а если точно до злополучной головы тигра, которая ну ни в какую не хотела поворачиваться. Почитав форумы я выяснил, что проблему решить никак нельзя кроме как взять сэйвку уже за этим местом. Меня такой вариант развития событий не сильно радовал и подождав еще с пол года после того как Chankast приказала долго жить, я понял что нужно возвращаться к разработке эмулятора и я вернулся.

К этому времени я уже освоился с Visual Studio C++, дело стало двигаться быстрей, уж не помню сколько мне еще понадобилось времени, но я таки запустил сначала биос, а потом и RECV. И какое-же было разочарование когда я загрузил сэйвку и выяснил, что голова у меня тоже не поворачивается, а план был просто повернуть эту голову и продолжить играть на Chunkast. Полный разочарования, я решил зайти на канал #emu-russia и поискать людей которые мне бы помогли. Как полагается меня там не хотели воспринимать всерьез, и уж тем более никто не поверил в то, что никому не известный парнишка чего-то там записал, но с надеждой чтобы меня разоблачить, ajax16384 взял текущий билд. Он был шокирован тем, что оно правда как минимум пускало bios и он решил помочь. В отличии от меня он был очень хорошим программистом и он реализовал первую версию звукового плагина.



Поняв что у нас что-то получается, но графика все же чудовищна даже на фоне Chunka, CaH4e3 тоже решил поучаствовать. Он довольно быстро привел к более менее терпимому виду графику (на тот момент у меня все еще не было опять же широкополосного интернета и это тормозило развитие). Все тесты эмулятора проводились на трех играх RECV, DOA2 и для меня очень круто запаковал Ikaruga Ledzep, что позволило мне ее скачать. На трех играх далеко не уедешь и тут на нас обратил внимания Eevon. Он совершено бескорыстно мне выслал, с десяток игр почтой. С этого момента дело пошло значительно лучше и быстрей, но тут, как гром среди ясного неба, меня позвали в армию, понимая что без энтузиаста вроде меня все встанет на весь срок службы, я решил зарелизить то, что есть. Я прекрасно понимал, что по многим параметрам мы не дотягивали еще и до Chunka, но выхода особого не было, ибо что ждало меня впереди мне было не ведомо.

Быстро слепив то, что было, создав сайтик, за полдня выпросив через org хостинг на emulation64.com, мы зарелизили версию 0.1, но увидеть первый отзыв мне было суждено уже только через год. Когда началось хоть какое-то обсуждение, я уже был в армии. Спустя год (я был после высшего образования) вернувшись, я увидел, что релиз 0.1 прошел не заметно, так что особого желания развивать что-либо не было, да и уже нужно было думать о жизни. Началась в общем жизнь, поиск работы и все такое. С работой получилось довольно быстро, благо на гос. службу после армии попасть вдвойне проще. Ну я все же захаживал на канал #emu-russia и потихоньку все же снова начал открывать сырцы проекта и писать. К этому времени уже все получалось по мановению руки, в смысле я научился очень хорошо программировать на чистом Си, в результате был с начала зарелизен 0.41. Почему именно такой номер версии... а просто мы хотели пошутить, число нам понравилось. Ну а дальше пошло-поехало, а тут еще в mame начали добавлять naomi1 и нам тоже захотелось железо тоже самое, просто памяти больше, ну и добавили, а тут мы еще прознали что atomiswave на том же железе, причем отличий еще меньше чем даже в случае с naomi1.



И тут я загорелся что-то заэмулить раньше других, ведь до этого мы лишь повторяли успехи других. Вся проблема в эмуляции этой системы была лишь в том как правильно читать данные с картриджа. На входе всегда идут не понятные смещения и я методом тупого поиска смог выяснить первые 3 или 4 правильных чтения, но на этом и спекся, но CaH4e3 подхватил и, о чудо, он это сделал! Он выяснил что да как и довольно скоро мы ошарашили мир эмуляцией atomiswave. У этой аркады довольно много фанатов, но увы, существовал всего один живой дамп и мы не могли ничего с этим поделать. Сами картриджи все тот же CaH4e3 приобрел довольно быстро (они не очень дорогие) и даже сдампил их частично (благо CaH4e3 дампер). Но вот сдампить все микрохемы мы не могли, ибо нужны были не малые финансовые вложения для получения нужного оборудования и мы впервые в своей истории решили связатся с авторами mame.

Мы им рассказываем алгоритм работы atomiswave, они ускоряют GURU на предмет получения дампов. Этим временем мне не давала покоя naomi2, ведь atomiswave заэмулил не я, а все же CaH4e3, а мне дико хотелось самому. И к моему удивлению я покопавшись, быстро понял, как там все устроено. Нужно было лишь понять как он передает графику, а там довольно веселая система, к слову сказать отдалено запоминающая VDP1 sega saturn. Довольно быстро получилось получить ingame vf4evo, но графика сама по себе была значительно сложней обычного sega dreamcast и нас это тормозило. И тут появился DreamZzz, которого, конечно же, мы как всегда послали, типа и без тебя знаем, но он не шибко-то испугался и как итог оказался в команде. У него, ну очень быстро (!), получилось допилить графику в naomi2, а заодно сильно улучшить обычную sega dreamcast. И совсем недавно мы сами предложили MetalliC присоединится к нам по совету все того же DreamZzz. Вот так вот сформировалась наша на сегодняшний день команда, что будет дальше, не знаю, но будем верить в хорошее лучшее.
"



Напомню, что исходный код эмулятора закрыт, поэтому нам нужно ждать релизной версии. Уже сейчас исправлено множество проблем в играх, заэмулирован практически идеально звук и добавлена эмуляция Sega Saturn.
0
Добавить комментарий

Оставить комментарий