В данной ветке форума часто всплывает один и тот же, по сути, вопрос: "Существует ли нормальный эмулятор спектрума под моб. телефон, написанный на мобильной яве?". Ответ очевиден и очень печален: "Нет не существует, ибо моб. телефон имеет ограниченные ресурсы и очень тормознутую виртуальную машину Java!". Данное утверждение трудно опровергнуть, но попытаться создать некий экспериментальный проект Мобильного Спектрума, на мой взгляд, можно.
На данный момент я встречал две реализации подобия эмулятора спектрума на моб. телефоне - MobileZX и ReadPlayZX. Первый явно не доделан и не оптимизирован по скорости, второй построен, по сути, на основе первого и имеет несколько расширенную функциональность. Они явно далеки от совершенства, поэтому их трудно назвать эмуляторами, способными обеспечить хотя бы возможность играть в любимые спектрумовские игры. Данные обстоятельства а так же простой человеческий интерес толкнули меня на создание нового проекта Мобильного Спектрума. Я считаю, что имею необходимый опыт для подобной затеи, так как уже писал эмуляторы.
Однажды я скачал себе эмелятор nes, написанный на Visual Basic. Он имел страшный вид и целый букет глюков. Набравшись терпения и целой кучи документации + исходников других эмулей на C++, я начал писать на VB свой эмуль. Прошло время и я разобрался во всех вопросах, написал хороший эмулятор на VB, но в свет его не пустил, так как он врятли мог конкурировать с монстрами, написанными на C++. Тем не менее, он прекрасно работает и служит мне надежным испытательным полигоном для другого моего проекта - эмулятора приставки nes на мобильном телефоне.
На данный момент я написал эмулятор nes для мобильника (можно сказать, портировал его с VB, использовал некоторые хитрости из vNes в плане эмуляции CPU), который, хоть и медленно (даже на моем Sony Ericsson K700) но работает. Сейчас интенсивно занимаюсь оптимизацией его кода.
Что же касается эмуляции спектрума, то по сравнению с nes, zx-spectrum имеет во много раз более простой видеоконтроллер, который можно (и я даже знаю как) эмулировать с гораздо меньшими временными затратами чем PPU nes, нет множества т.н. мапперов (схем управления памятью), которые иногда бывают очень сложные. Но, zx имеет более сложный процессор - Z80, хотя и здесь есть интересный момент - по количеству тактов комманды Z80 гораздо длиннее, чем комманды 6502 (процессор nes) и, соответственно, за один кадр их будет выполняться меньшее количество, но это не факт - нужен более глубокий анализ.
В качестве рабочей платформы я выбрал моб. телефон Sony Ericsson K700 (который есть у меня). Он обладает типичными для большинства телефонов ограничениями ресурсов но в то же время имеет более-мение быструю виртуальную машину Java (быстрее, чем на тех же семёнах). Первоначально я планирую обеспечить в эмуляторе следующую функциональность:
- поддержка систем 48/128K;
- загрузка SNA файлов для конфигураций 48/128K;
- отсутствие звука;
- отсутствие TR-DOS;
- масштабируемость экрана Speccy до размеров экрана телефона;
- поддержка управления CURSOR, QAOPSp, SINCLAIR2, KEMPSTON.
Приглашаю всех заинтересованных людей к сотрудничеству. Мне нужна помощь в следующих вопросах:
- концепция проекта, новые идеи;
- железо спектрума, особенности его работы;
- процессор Z80, особенности его работы;
- оптимизация по скорости алгоритмов работы эмулятора;
- написание отладочного кода для Z80 и другого железа Speccy;
- тестирование на разных реальных мобильных телефонах;
- популяризация проекта на просторах интернет.
На данный момент проектом занимается только один человек из нашей группы RSM - это я. Поэтому, жду с нетерпением ваших откликов и предложений! Мои контакты: ICQ - 347279524, МЫЛО - [email protected] (общаюсь так же через mail.ru agent). Чаще всего я на связи в понедельник/вторник с утра до вечера или в другие дни вечером.