Page 1 of 4

Эмулятор ZX Spectrum

Posted: Fri Feb 08, 2008 3:36 pm
by Albom
вот решил попробовать написать свой эмуль спектрума. правда пока написал немного.

Re: Эмулятор ZX Spectrum

Posted: Sat Feb 09, 2008 3:09 am
by camper
В архиве sna файлы, 3д танк дуэль, наркопол и симсити

Re: Эмулятор ZX Spectrum

Posted: Sat Feb 09, 2008 11:41 am
by bw
Можешь в др. архив заталкать? (tgz, tbz2, zip, rar.)

..bw

Re: Эмулятор ZX Spectrum

Posted: Sat Feb 09, 2008 3:08 pm
by camper
Странно, архив почемуто поврежден, вечером перезалью.
Простите.

Re: Эмулятор ZX Spectrum

Posted: Sat Feb 09, 2008 11:04 pm
by camper
Ко всему добавил еще дандар2

Re: Эмулятор ZX Spectrum

Posted: Sun Feb 10, 2008 12:02 am
by ALLiGaToR
Ой, как хорошо то!
Спасибо за эмуль!
Albom, расскажи немного подробнее о проекте - что хочешь еще сделать, на чем делаешь и т.д. Мне интересно, т.к. сам я эмуляторщик

Re: Эмулятор ZX Spectrum

Posted: Sun Feb 10, 2008 10:10 am
by Ghost
OMGWTF, зачем пустышки выкладывать?
в будущем за такое буду закрывать тему.

Re: Эмулятор ZX Spectrum

Posted: Sun Feb 10, 2008 8:09 pm
by Albom
ALLiGaToR
Почти всё это есть в архиве, в файле readme.txt, но всё же повторюсь, ведь не все этот файл скачивают. Я хочу сделать минимальный эмулятор ZX Spectrum 48. Эмуляция процессора Z80 (опкоды в файле z80sean.txt), без поддержки звукового процессора AY, загрузка только файлов SNA (состояние регистров и образ памяти). Пишу его на fasm (писал на C, потом на С--, но потом решил, что на ассемблере будет лучше). У меня есть много исходников эмулей спектрума на С, паскале (делфи), асме, java, но просто портировать их, а тем более сдирать чужой код я не хочу. С платформой спекки я уже разобрался, составил алгоритм эмуляции, осталось лишь набрать реализацию основных команд и начать отлаживать эмуль, доводя его до работоспособного состояния. В принципе, любой может мне помочь, реализовав какие-нибудь команды. Авторство будет сохранено.

Re: Эмулятор ZX Spectrum

Posted: Sun Feb 10, 2008 10:02 pm
by Ghost
Тема интересная, есть и некоторый личный опыт (знаю у многих тут есть опыт отношений с Z80/i8080), если есть вопросы - спрашивай, чем сможем - поможем. Но не стоит выкладывать пустышки, с таким же успехом можно было выложить example.asm

Кроме того не думаю что стоит зацикливатся только на 48ом и SNA образах, если только на первых порах.

Re: Эмулятор ZX Spectrum

Posted: Mon Feb 11, 2008 9:12 am
by Albom
Ghost
Извини, что так получилось с архивом. Просто я хотел, чтобы понимающие люди могли оценить то, как я начал писать код. Будет очень обидно, если алгоритм в самом начале окажется неправильным. Дело-то для меня новое. Но если здесь принято выклатывать только 100% работающий код, то буду это правило соблюдать.

У меня есть пока три вопроса:
1) как лучше организовать триггеры (по 1 биту каждый) IFF1 и IFF2?
2) как организовать задержки, чтобы запускать на процессорах с различной частотой?
3) что это за опкоды 0x10, 0x18, 0x20, 0x28?

Re: Эмулятор ZX Spectrum

Posted: Mon Feb 11, 2008 10:22 am
by Ghost
Ну не 100% но хотябы както работающий.
1) по твоему желанию, но ИМХО байтами и быстрее и кода меньше (хотя не всегда опятьже удобно...)
3) смотри опкоды здесь а описания здесь

0x10
DJNZ e
Dec., Jump Non-Zero
B=B-1 till B=0

0x18
JR e
безусловный переход (PC=PC+e)

0x20
JR NZ,e
условный переход, если ne (не равно)

0x28
JR Z,e
условный переход, если z (ноль)

Re: Эмулятор ZX Spectrum

Posted: Mon Feb 11, 2008 10:39 am
by bw
1) Наврное быстрее все же двойными словами (32 или 64 бита :-). Сделай макросами и для работы используй только их. Если что, то не придется вносить изменения по всему коду, ограничешься 2-3 макросами (процедурами).
2) Можно попробовать использовать rdtsc.

..bw

Re: Эмулятор ZX Spectrum

Posted: Mon Feb 11, 2008 11:31 am
by Ghost
rdtsc не зависит от частоты, поэтому это не самая лучшая идея

Re: Эмулятор ZX Spectrum

Posted: Mon Feb 11, 2008 12:28 pm
by mike.dld
Ну так давайте наконец-то сделаем таймеры в ядре :-P

Re: Эмулятор ZX Spectrum

Posted: Mon Feb 11, 2008 12:56 pm
by andrew_programmer
Как-то ведь работают платформенно-независимые эмуляторы приставок. Значит есть способ решить проблему скорости эмуляции...