:: СОДЕРЖАНИЕ НОМЕРА
:: Газетные рубрики
:: АВТОРЫ
:: Поиск
:: Поддержка проекта
Webmoney:
|
:: №23 (24.02.2005) Просмотров: 6127
Автор: Станислав Юдин. Рубрика: Читатель читателю. Номер: №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, так что ни о каком быстродействии речи не идет. Я очень надеюсь, что когда-нибудь кто-то осмелится и создаст хороший эмулятор Спектрума под новые КПК. |