Абзац
:: Поиск
:: ПоддерЖка ПрОекта
Webmoney:
  • Z610389805629
  • R427996570517
  • E023541002978
  • :: №23 (24.02.2005) ПрОсмотрОв: 4344

    Автор: Станислав Юдин.

    Рубрика: Читатель читателю.

    Номер: №23 (24.02.2005).



    ZX-Pilot

    Все началось несколько лет назад с того, что я решил помечтать на тему мобильного Спектрума. Я изложил свои фантазии в эхоконференции ZX.SPECTRUM. После этого поднялась небольшая дискуссия. На тот момент я имел лишь самое приблизительное представление о наладонных компьютерах. И вот, один из участников той самой дискуссии упомянул о КПК. Тогда я более плотно заинтересовался КПК, а именно теми устройствами, которые работали под управлением Palm OS. Эти устройства были более или менее доступны по цене и, как мне казалось, при своих параметрах (32-х разрядный процессор, работающий на частоте 16-32 Mhz и экран 160х160 при 16-ти градациях серого) они были способны эмулировать Спектрум. Далее последовала покупка моего первого КПК и бесплодные поиски человека, который напишет эмулятор Спектрума под Palm OS. Я даже выпросил у Дмитрия Живилова (автора ZX-Live) исходники его эмулятора для компьютера Amiga, чтобы чуть-чуть упростить задачу тому, кто сможет портировать этот эмулятор под Palm OS.

    Однако мое желание иметь нормальный эмулятор на КПК было настолько сильным, что мне пришлось начать писать свой собственный эмулятор с нуля. При этом для меня не стало преградой даже то, что до этого я не имел никакого представления о том, как эмуляторы работают и пишутся, а из языков программирования я знал только Sinclair Basic и ассемблер Z80.

    Что касается названия эмулятора - «ZX-Pilot», то оно родилось само собой и никакой связи с одноименной электронной газетой на Спектруме здесь нет. Дело в том, что КПК работающие под управлением Palm OS, изначально назывались Palm Pilot и часто сами устройства именовали просто Pilot’ами.

    Надеюсь, если не всем, то многим будет интересно прочитать о том, как создавался эмулятор. История его создания представлена в виде дневника, который я вел в процессе написания ZX-Pilot’а. А сам эмулятор можно найти в Интернете по адресу http://www.zxpilot.vladivostok.ru.

    Что ж, приступим.


    8.12.2002

    Я окончательно понял, что придется писать все только самому и только с самого начала - иначе бесполезно. Все последние дни я только и думаю о концепции эмуляции, изучаю работу существующих эмуляторов ZX Spectrum и GameBoy для PalmOS.

    15.12.2002

    Прежде чем написать первый байт моего эмулятора у меня ушло очень много времени на сбор информации об эмуляции Spectrum’а. Я изучал эмуляцию Speccy на Amiga - там стоит аналогичный процессор; изучал эмуляторы GameBoy на Палме - в GameBoy стоит урезанный Z80. Также мне все-таки удалось отыскать два эмулятора Спектрума под Palm OS и я также изучал их работу. Кроме того, я переписывался с авторами эмуляторов под другие платформы. И только после этого я начал что-то писать! Однако, как я понял, вся беда заключается в том, что скорости процессора DragonBall, установленного в Palm’е, вряд ли хватит, чтобы эмулировать со 100%-ной скоростью Z80. Но я к этому стремлюсь! Во всяком случае, я гарантирую, что если я напишу эмулятор, то он будет быстрее, чем два существующих.

    21.12.2002

    Споткнулся с проблемой при эмуляции регистра флагов, а так же команды SBC HL,BC.

    22.12.2002

    Обнаружил баг в southDebugger’е.

    Вопрос по команде DAA. Эта команда для меня всегда была таинственной, а тут нужно ее эмулировать. Для того чтобы сильно не забивать себе голову и чтобы достичь необходимой скорости, я просто пересчитал значение всех 256 байт и соответствующие им значения после команды DAA, то есть решил выбирать значения по таблице. Но оказалось, что не все так просто и на результат влияет еще и флаговый регистр. Я нигде не могу найти детальное описание этой команды и алгоритм ее эмуляции. Нигде не указано, что на результат влияет еще и флаговый регистр.

    26.12.2002

    Во имя скорости эмуляции пришлось отказаться от точной эмуляции флагового регистра F, а приводить его к более или менее нужному виду только при использовании команд, которые пишут его в память - POP AF и PUSH AF.

    30.12.2002

    Впервые запустил зачаток своего эмулятора. Результат удручил… Я написал небольшую программку, которая использует только те команды, которые уже сэмулированы. Программка последовательно заполняет экран разными цветами. Так вот, во время того, как на Палме экран обновляется один раз, на реальном Спектруме он успевает обновиться аж 11 раз! То есть мой эмулятор работает медленнее реального Спектрума в 11 раз. Но я пока сильно не отчаиваюсь, ибо у меня есть еще что оптимизировать. И самое главное моя процедура вывода экрана Спектрума, ну, очень тормозная - она не использует ни единой таблицы, а все значения вычисляются на ходу.

    5.01.2003

    Я сделал эмуляцию всего 250 команд Z80. Впереди еще очень и очень много...

    6.01.2003

    Еще один баг обнаружен в southDebugger’е: команда BTST отображается и трассируется как команда BSET, однако если поставить breakpoint сразу после команды BTST, то видно, что она выполняется корректно, то есть именно как BTST.

    7.01.2003

    Сегодня случайно обнаружил одну ошибку в эмуляции команд. Представления не имею как их все выуживать… Уже сделал почти 768 команд - это более 6000 строк моей программы.

    10.01.2003

    Я писал-писал эмуляцию команд, а результата-то не вижу! И тут меня осенила гениальная мысль. Напротив всех не сэмулированных команд я поставил выход в отладчик и сделал запуск спектрумовской игрушки для того, чтобы делать эмуляцию не всех подряд команд, а только тех, которые запрашивает игра. И здесь я столкнулся с той проблемой, которой я боялся с самого начала и которую пока решить не могу - ошибки в эмуляции команд. У меня портится память, то есть я где-то допустил ошибку, а как ее найти? Сделал так: запустил эмулятор Спектрума на ПЦ (ZX-Emul) и сделал выход своего в southDebugger после выполнения каждой команды. Вот так трассирую программу (Batty) пошагово там и тут, и смотрю, как меняются регистры и память. Одну ошибку нашел сразу (7.01.2003), но ошибка возникла не по моей вине, а по причине ошибки в таблице команд, которой я пользовался. Вторая ошибка возникла уже по моей вине. Исправил.

    21.01.2003

    С этого дня начинаю регулярно вести дневник и записывать все сделанное за день.

    Преодолел еще один барьер - сделал переход на таблички #DDCB и #FDCB. Первый результат! В Batty шарик пару раз отскакивает от стен и кирпичей. Далее эмулятор требует еще не эмулированные команды. Но уже поздно и я иду спать. Завтра продолжу.

    22.01.2003

    Сделал несколько команд. Ура! Шарик скачет и выбивает кирпичи. Но есть глюк: выбитые кирпичи не закрашиваются, новый этап не появляется и т.д. Выявил и исправил ошибку в LDIR. Теперь выбиваются кирпичи и появляется следующий раунд. Но скорость удручает. На реальном устройстве все слишком медленно (под эмулятором несколько быстрее). Не помогает даже вывод каждого второго кадра, то есть 25 fps. Кроме того есть еще ошибки: портятся цифры в счетчике очков и шарик не становится бронебойным, хотя соответствующий приз ловится. Как выявлять эти ошибки пока не имею представления... Опробовал обновлять экран если на нем есть изменения. Ускорение есть, но это заметно только под эмулятором...

    23.01.2003

    Безуспешные попытки отыскать баг. Случайно нашел ошибку в эмуляции LDI.

    24.01.2003

    Кажется нашел почему у меня портится счет - виновата команда DAA, эмуляцию которой я отложил на потом.

    25.01.2003

    Нагло слизал эмуляцию DAA с эмулятора Phoinix. Так до конца не разобрался как она там эмулируется. Теперь счет отображается корректно, но проблема с бронебойным шаром осталась. Сэмулировал еще одну команду и теперь Batty проходит полный цикл игры. Попытки сделать IM1 и управление от клавиатуры. Подчистил основной блок программы.

    26.01.2003

    Начал рисовать клавиатуру, но много не успел, так как свободного времени в этот день было очень мало...

    27.01.2003

    Batty начала управляться от клавиатуры, но имеет место «залипание» клавиш, которое побороть пока не смог. Сделана эмуляция ряда команд, которые попросила программа во время выполнения. Во втором раунде обнаружен глюк на спрайте «магнита» и ракета летит не там где положено.

    28.01.2003

    Поиск ошибок отнимает очень много времени. Сегодня просидел весь вечер, но так и не сдвинулся с места...

    29.01.2003

    Еще один «убитый» день... Бесплодные поиски ошибки... Одну ошибку таки нашел перед самым сном! И опять виноват не я, а таблица, где вместо LD (NN),IX/IY были указаны команды LD (IX/IY+S),A. Пока еще до конца не отладил - в час ночи очень сильно хочу спать...

    30.01.2003

    Ура! Нашел и обезвредил еще один баг в эмуляции команды NEG - при выполнении этой команды обнулялась регистровая пара IY. Теперь Batty визуально работает правильно. Подправил кое-что в опросе клавиатуры и еще кое-какие мелочи. Удручают постоянные FATAL EXEPTION на реальном устройстве, хотя под эмулятором все работает «на ура». Выяснено, что все проблемы возникают из-за обращений к Palm OS.

    31.01.2003

    Сделал монохромную версию эмулятора. Захотелось жить! Скорость Batty стремится к 100%. Так что все тормоза эмуляции главным образом связаны с выводом на экран.

    1.02.2003

    Решил заняться поиском причины Fatal Alert’а на реальном КПК. Вроде нашел причину, но опять же она меня не порадовала. Вся проблема в выделении памяти под нужды эмулятора... Похоже, что в Palm OS не реально выделить непрерывных 128 килобайт для свободного доступа на запись и чтение. Проблема в очередной раз кажется мне непреодолимой, но, тем не менее, буду надеяться, что решение все же найдется.

    2.02.2003

    Долго читал документацию по Palm OS. Понял, что проблему с памятью своими силами мне решить не удастся. Буду ждать помощи со стороны... Пытался запустить под своим эмулятором Switch Balde и Dizzy 5, попутно сэмулировав несколько команд, которые просили игры. Switch Blade в режиме DEMO работает, а при старте игры виснет. Dizzy виснет в самом начале. Есть вероятность, что проблема кроется в не эмулированном IM 2. Зато Jack The Nipper 2 заработал после того, как я сделал две или три запрошенных команды.

    3.02.2003

    Подсказали как решить проблему с памятью. С этого дня эмулятор можно гонять на реальном КПК. Пребывал в эйфории и гонял Batty и Jack The Nipper 2. Хотя Jack тормозит весьма конкретно, а в цвете так это просто slideshow... Больше ничего полезного за день не сделал.

    4.02.2003

    Смотрел эмулятор на предмет оптимизации ядра. Не могу сократить ни единого такта. Разбирался с альтернативным методом выделения памяти через создание BMP. Пытался сделать эмуляцию прерываний IM2, вроде сделал, но пока не проверял. За последние дни работа продвигается слишком медленно.

    5.02.2003

    Исправил ошибку в эмуляции команды LDDR - визуально нормально заработал Exolon. Но теперь Switch Blade перезапускает Спектрум. Зато наконец-то увидел надпись (C) 1982 Sinclair Research Ltd. Сделал эмуляцию нескольких сложных команд (RRD, RLD, LDI и др.) - их запросила игра Frost Byte. В результате игра запустилась, но визуально видны глючки - враги проходят сквозь препятствия. При эмуляции одной из команд смог сократить на 12 тактов одну из часто используемых в инструкциях процедур - перевод регистров в регистровую пару.

    6.02.2003

    Исправил ошибку в эмуляции IM2 - в результате заработали Dizzy 5, Switch Blade и Joe Blade 3. Попутно сэмулировал кое-какие, нужные играм, команды. Запустил HATE - игра запросила много новых команд - враги спокойно пролетают мимо и пули их не берут. Очередной баг!

    7.02.2003

    Ничего полезного не сделал, зато выяснил, что Frost Byte все-таки работает корректно, а вот HATE как-то странно глючит - проблема с неуязвимостью. Запустил Quazatron - он ничего не запросил, а запустился сразу и без проблем.

    8.02.2003

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

    9.02.2003

    Ура! Придумал и воплотил в жизнь алгоритм обновления цветного экрана. Суть: обновляются только те знакоместные строки, в которых были изменения. В результате скорость эмуляции значительно ускорилась. Можно развить идею и обновлять только знакоместа, но в этом случае очень сильно замедлится обновление целого экрана. Хотя попробовать, наверное, стоит.

    10.02.2003

    Перевел образ ПЗУ Спектрума из отдельной базы в тело ZX-Pilot’а.

    11.02.2003

    Занимался составлением документации для бета-тестеров, набирал бета-тестеров, рассылал свою программу и т.д.

    14.02.2003

    Последние дни как-то не клеится дело. Споткнулся о Palm OS. Сегодня был некий прорыв - научился загружать библиотеки Sony и еще кое-что. Пока продвигаюсь к цели микроскопическими шагами.

    15.02.2003

    Продолжаю взаимодействие с PalmOS. ZX-Pilot теперь ругается на отсутствующую команду путем вывода нужного окна, а не как раньше, через Debugger. Обнаружил грубые ошибки в эмуляции Rick Dangerous и Action Force 2.

    16.02.2003

    На сегодня те игры, в которых были глюки, работают нормально. Добавил учет перехода стека с #FFFF на #0000 - заработали Rick Dangerous и Action Force 2. Исправил ошибку в команде LD LY,A - заработала HATE. С поиском последней ошибки бился дольше всего.

    18.02.2003

    Сделал эмуляцию бордюра. И вроде как все данные из SNA теперь задействованы.

    23.02.2003

    За последние дни выяснилось, что при малейшей попытке что-нибудь добавить на реальном КПК происходит Fatal Exeption. После длительного анализа выяснилось, что виной всему переменные, которые я неправильно задавал и использовал. В результате эмулятор был реорганизован так, что регистры A5 и A6 были, как и положено, отданы под нужды переменных, а сами переменные перезаданы по правилам. Кроме того, сделал выделение памяти как посоветовал Тимур Ташпулатов - через создание BMP. После этих переделок эмулятор заработал под PalmOS 5 и я пока не видел Fatal Exeption. Все это отняло очень много времени и нервов. Убрал дребезг клавиши ToDo при переключении цветного режима эмулятора.

    24.02.2003

    Написал небольшую документацию на английском языке, закачал эмулятор на PalmGear и раструбил всюду о его существовании. Жду результатов. Вот только денег, видимо, заработать на этом поприще не получится.

    3.03.2003

    В последние дни лишь исправлял ошибки и ничего более. Хотя как-то попробовал включить звук, но результат неудовлетворителен. А сегодня сделал поддержку 160х160. Хорошо, конечно, что оно есть, но практическая ценность в таком разрешении стремится к нулю, ибо ничего не видно... Посмотрим, что народ на это скажет.

    4.03.2003

    Вчера выяснилось, что эмулятор работоспособен только под Palm OS 4 и выше. Сегодня я выяснил, что проблема неработоспособности кроется в выделении памяти через BMP. Переделал все иначе. Эмулятор пошел и на m100. Кроме того, сделал поддержку высокого разрешения HandEra 330. Уж не знаю кому это нужно, но я сделал это. Сделал также эмуляцию нескольких инструкций. Игра Ghosts’N’Goblins конкретно вылетает, уводя с собой и сам Palm. Завтра буду искать этот баг.

    5.03.2003

    Сделал наконец-то режим с градациями серого под режим 320х320. Кроме того, почти закончил табличку #DDxx - осталась всего одна команда.

    6.03.2003

    Закончил таблички #DDxx и #FDxx. Исправил описание эмулятора и выложил в сеть обновленную версию под все разрешения.

    9.03.2003

    В течение последних дней искал причину неработоспособности Ghost’N Goblins. Сегодня мои поиски увенчались успехом. Причина заключалась в том, что игра использует недокументированные флаги, формируя адрес возврата из подпрограммы в регистровой паре AF. Это первая игра, которой не суждено работать под моим эмулятором. Кроме того, удалось сократить на 12 тактов каждую команду, сделав отсчет тактов Z80 в обратную сторону. Посидев еще немного, смог сократить еще 2 такта в команде.

    10.03.2003

    Чуть ускорил вывод цветного экрана за счет того, что атрибуты рассчитываются только один раз на знаколинию.

    11.03.2003

    Сделал возможность отгрузить snapshot при выходе из эмулятора.

    12.03.2003

    Нарисовал и вывел на экран клавиатуру.

    13.03.2003

    Оптимизировал ядро и некоторые команды. Сделал опрос экранной клавиатуры, осталось только прикрутить ее к самому Спектруму. Подкорректировал эмуляцию регистра R. Почему-то вылетает Atic Atac. В Barbarian 3 также обнаружен баг - курсор не перемещается вправо.

    14.03.2003

    Дошло, что в Barbarian 3 курсор все-таки перемещается, но экран не обновляется.

    15.03.2003

    Выяснил причину и исправил вылетание Atic Atac. Игра требовала новую команду, а ошибочно вводила диалог выхода. Доделал экранную клавиатуру, правда, еще нужно сделать залипание шифтов до нажатия следующей клавиши.

    16.03.2003

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

    17.03.2003

    Сделал работоспособным режим 4bpp и сделал под него же клавиатуру. Исправил ошибку в отображении клавиатуры: когда стилус не отрываясь от экрана уезжал за пределы клавиатуры, то клавиша оставалась инвертированной. Сделал старт эмулятора с цветного режима.

    20.03.2003

    Наконец-то решена проблема с выделением памяти в Palm OS 3.5!

    23.03.2003

    За предыдущие дни поэкспериментировал с масштабированием в режиме LoHes (160х160). Оптимизировал все режимы с градациями серого. Перенес все переменные в соответствующую область. Почистил исходники. Нарисовал все иконки. Вроде бы сделал версию 0.3b для HE330 - с ней пришлось повозиться. Осталось разобраться с версиями для HiRes и LoRes и выложить свежую версию в Интернет.

    7.04.2003

    Все прошлые дни пытался делать сайт. Так что сильно дело не движется. Но сегодня по совету fyrex’а оптимизировал обновление цветного экрана в масштабе 1:1. Результат впечатлил. Оптимизировал подобным образом все остальные версии.

    8.04.2003

    Выложил свежую версию эмулятора в Интернет.

    11.04.2003

    Отыскал в ПЗУ Палма подозрительный код, который может отвечать за вывод звука.

    13.04.2003

    После всевозможных изысков и экспериментов я, наконец, сделал эмуляцию звука. Он оказался даже лучше чем я ожидал.

    16.04.2003

    Из-за превышения трафика прикрыли мой сайт. Поисправлял разные ошибки в процедурах IN и OUT, в результате заработали мои Реверси и Mermaid Madness.

    17.04.2003

    Пытался прикрутить Kempston-джойстик. Сделал одно направление - работает. Сделал все остальные - все рушится. В довесок пришлось решать проблему с длинными переходами. Завтра продолжу.

    18.04.2003

    С горем пополам прикрутил эмуляцию Kempston-джойстика.

    19.04.2003

    Воспользовался советом Дмитрия Пальчевского и сократил каждую команду на 4 или 8 тактов, за счет счетчика тактов. По ходу исправил ошибку в команде HALT, из-за которой мерцали спрайты в некоторых играх.

    20.04.2003

    Пытался разобраться как в Palm OS вывести форму с необходимыми элементами. Как вывести разобрался, а как управлять элементами - нет...

    27.04.2003

    Сделал flash для HiRes color - тормозит, судя по звуку.

    30.04.2003

    Исправил ошибку в команде DEC XH и по аналогии DEC YH - не правильно устанавливался флаг Z. Выявлено в игре Chuckie Egg.

    1.05.2003

    Довел до ума версию для HandEra 330. Сделал для всех режимов полноценный, нетормозящий FLASH. Исправил обновление экрана, теперь он корректно обновляется в Barbarian 3 (курсор), Dizzy (список предметов), BallBreaker 2 (название раунда) и др. Сделал возможность убирать с экрана клавиатуру в LoRes версии в масштабе 1:1.

    2.05.2003

    Добрался до интерфейса. Сделал титульный экран и меню «About». Поместил все элементы куда положено, по ним даже можно пощелкать, только отдачи пока нет. Нужно будет еще подумать над дизайном.

    3.05.2003

    Продолжил разбираться с интерфейсом. Не такая уж это легкая задача.

    4.05.2003

    Весь вечер пытался скрестить интерфейс с самим эмулятором. Это требует серьезной реорганизации всей программы. Пока результат отрицательный: сначала просто не работало и вылетало с нелепыми ошибками, а теперь вообще перестало компилироваться. Устал. Отложил работу до лучших времен. Видимо нужно будет делать все c самого начала...

    16.05.2003

    Объединил на аппаратных клавишах одновременную эмуляцию Kempston и Sinclair джойстиков. Параллельно оптимизировал эту вещь.

    22.05.2003

    Сделал обработку последовательности #FD #FD и команду #FD #00. В результате заработала игра Ping-Pong.

    28.07.2003

    По просьбе пользователя из Италии я проверил работоспособность игры Lords of Midnigt. Оказалось, что игра пыталась печатать на ZX-Printer’е. Пришлось обучать эмулятор еще одному порту - #FB.

    18.08.2003

    Прикрутил клавиатуру высокого разрешения. Не понравилась инверсия клавиш и размер BMP-файла. Нужно придумать что-то другое.

    6.09.2003

    Безуспешно пытался изловить баг в игре Movie. Разбирался с тем, как опрашивать события, а конкретно нажатие на иконки «Меню», «Калькулятор» и т.д. Я на верном пути, но пока у меня плохо получается... Многое забыл...

    15.09.2003

    «Вылечил» The Rocky Horror Show. Причина была в неправильной эмуляции команды LD C,LY. Баг нашел относительно быстро.

    14.12.2003

    Взялся за вывод клавиатуры. Нарисовал HiRes клавиатуру и сделал ее вывод в 1bpp и 8bpp режимах.

    10.01.2004

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

    11.01.2004

    Доделал полноценный возврат в старый режим. Сделал выезд цветной клавиатуры. Начал делать переключение между двумя режимами.

    16.01.2004

    Нашел и обезвредил баг в команде LD HL,(NN). В результате заработала игра Dizzy 7.

    17.01.2004

    Нашел и обезвредил баг в команде LD C,HX - очень много времени ушло на его поиски. В результате запустилась Movie. Попутно нашел аналогичный баг в команде LD C,LX. Movie потребовала доселе ненужную команду CPDR. Ура! Попутно заработал и Green Beret как раз из-за исправления бага в команде LD C,LX. На данный момент мне пока не известны игры, которые не работают под эмуляторм. Будем искать...

    18.01.2004

    Сделал эмуляцию инструкции CPDR. Однако Movie не хочет работать. Где-то есть еще баги. Случайно нашел и исправил баг в инструкции LD C,HY. Нашел таки почему не работала игра Movie - причиной была команда SBC HL,BC. Пришлось чуть доработать ее эмуляцию.

    19.01.2004

    Сделал вывод HiRes клавиатуры в 4bbp режиме.

    20.01.2004

    Теперь, если в память не загружен snapshot, то эмулятор не выходит обратно в Palm OS, а запускается в BASIC, то есть просто происходит RESET эмулятора.

    22.01.2004

    В очередной раз вступил в неравную схватку с Palm OS. Элементарную вещь - вызов меню сделать не получается.

    25.01.2004

    Сформировал и выложил в Интернет версию 0.5b

    26.01.2004

    Реакция на новую версию нулевая. Зря делал? Пытался опять разбираться с событиями Palm OS. Ничего не выходит. Нервы на пределе. Благо теперь есть хоть у кого спрашивать.


    * * *

    На этом дневник заканчивается... И хотя эмулятор так и не был доведен до ума, моя цель была достигнута - я написал эмулятор, который я хотел видеть на платформе Palm OS. К сожалению, процессор DragonBall оказался слишком слабым. Мне пришлось отказаться от точной эмуляции флагового регистра F, эмуляции регистра R, правильного обновления экрана и т.д. и т.п. - все во имя скорости. Не хватило быстродействия, чтобы эмулировать страничную организацию памяти и, как следствие, не получилось эмулировать ZX Spectrum со 128 Кб памяти и TR-DOS. Одна из причин, по которой я прекратил развитие эмулятора - появление новых машин, построенных на ARM-совместимых процессорах. Под такие устройства уже вполне реально написать эмулятор, отвечающий всем современным требованиям. И хотя ZX-Pilot работает на таких устройствах, его работа происходит в режиме эмуляции, то есть исполняемый код процессора DragonBall эмулируется на процессоре ARM, так что ни о каком быстродействии речи не идет.

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

    © 2004-2013 Perspective group