LINUX.ORG.RU
ФорумTalks

[Z80] Немного допилил эмулятор QAOP


0

0

Кто-то тут говорил, что эмуляторов под линаксом толковых нету. Вот, держите: http://rghost.net/1259252

Запускать примерно так:

java -jar qaop.jar load DECATHLN.TAP

Понимает tap / z80 / rom / scl, можно залить ром от глюкалки

Отличия от оригинального qaop-1.1:

1. Клавиши F3/F4 меняют скорость, если игра тормозит, то машинку можно ускорить. Местами глючит, так как пришлось править сразу 2 таймера - системные часы и звуковые.

2. Клавиша F5 открывает менюшку, а по F6 можно что-то СКОПИПАСТИТЬ ТУДА, В СПЕКТРУМ, В ЗАГРОБНЫЙ МИР!!!1 Хотел еще сделать обратную копипастилку, но стало лень. Глючит, если программа начинает работать медленно и часть опросов клавиатуры пропадает. На всякий случай оно каждый символ скармливает 10 раз, если уж не успели - увы.

3. Клавиша F12 быстренько сохраняет игру (появляется файлик tmp_snap.z80), а клавиша F9 его загружает. Вообще это не моя заслуга, механизм сохранения уже был реализован, но почему-то не использовался. Кто-то тут говорил про автосохранение - решил не делать, ибо слишком много временных файлов выходит, а лимиты я ставить не рискнул, ибо в самый неподходящий момент нужный файл будет перезаписан.

На днях думаю убрать быдлокод и положить исходники, а то стыдно.

Ссылки по теме:

http://zx-spectrum.ru/viewtopic.php?f=8&t=439 - учебник по ассемблеру

http://zx.pk.ru/showthread.php?t=11833 - а вот тут собираются делать транспьютеры на базе z80, 2010 год

По обеим сайтам можно ходить часами

Z80 не нужен, как и его унылый прототип 8080. И не менее унылый идейный наследник 8086. Есть нормальные CPU - 6502 и 68000.

svr4
()
Ответ на: комментарий от svr4

Вот у этого автора http://members.inode.at/838331/index.html нашел конвертор tzx в tap, у него были исходники на бейсике, переписал на перле. Если кому-то не лень - дайте знать автору.

use strict;
my $sig;
read(STDIN,$sig,10);
if(substr($sig,0,8)ne "ZXTape!\x1A"){
         die "wrong signature!";
}
my $len;
my $buff;
while(!eof(STDIN)){
         my $id=ord(getc());
         print STDERR "Block id: $id\n";
         if($id==0x10){
                 read(STDIN,$buff,2);
                 $len=unpack("S",getc().getc())&0xFFFF;
                 print STDERR "reading $len bytes\n";
                 read(STDIN,$buff,$len);
                 print pack("S",$len);
                 print $buff;
         }
         if($id==0x11){
                 read(STDIN,$buff,15);
                 $len=unpack("S",getc().getc())&0xFFFF+(ord(getc())<<16);
                 if($len>65535){
                         $len=65535;
                         print STDERR "size over 65535 bytes cannot be saved in TAP";
                 }
                 print STDERR "reading $len bytes\n";
                 read(STDIN,$buff,$len);
                 print pack("S",$len);
                 print $buff;
         }
         if($id==0x12||$id==0x13||($id>=0x15&&$id<=0x1f)){
                 die "Unsupported!";
         }
         if($id==0x14){
                 read(STDIN,$buff,7);
                 $len=unpack("S",getc().getc())&0xFFFF+(ord(getc())<<16);
                 if($len>65535){
                         $len=65535;
                         print STDERR "size over 65535 bytes cannot be saved in TAP";
                 }
                 print STDERR "reading $len bytes\n";
                 read(STDIN,$buff,$len);
                 print pack("S",$len);
                 print $buff;
         }
         if($id==0x20){
                 read(STDIN,$buff,2);
         }
         if($id==0x21||$id==0x30){
                 $len=ord(getc())&255;
                 print STDERR "reading $len bytes\n";
                 read(STDIN,$buff,$len);
         }
         if(($id>=0x22&&$id<=0x29)){
         }
         if($id==0x2a){
                 read(STDIN,$buff,4);
         }
         if($id==0x31){
                 read(STDIN,$buff,1);
                 $len=ord(getc())&255;
                 print STDERR "reading $len bytes\n";
                 read(STDIN,$buff,$len);
         }
         if($id==0x32){
                 $len=unpack("S",getc().getc())&0xFFFF;
                 print STDERR "reading $len bytes\n";
                 read(STDIN,$buff,$len);
         }
         if($id==0x33){
                 $len=ord(getc())&0xFF;
                 read(STDIN,$buff,$len*3);
         }
         if($id==0x35){
                 read(STDIN,$buff,10);
                 $len=unpack("S",getc().getc())&0xFFFF;
                 print STDERR "reading $len bytes\n";
                 read(STDIN,$buff,$len);
         }
         if($id==0x5a){
                 read(STDIN,$buff,9);
         }
}

simple_best_world_web_master
() автор топика
Ответ на: комментарий от svr4

>В 68k есть.
Нет. MMU появился только ЕМНИП с 68030.

GAMer ★★★★★
()

На жабе толковый эмуль написать нельзя, потому как придётся делать нормальные тайминги Ленинграда, Пентагонов, Скорпа и АТМ хотя бы. А это даже во фреймбуфере проблематично. 50 герц однако =)
Ну и плюс нужна память, 128 и выше, trdos, кэш и прочие радости, тогда эмуль может быть применён на практике.

GAMer ★★★★★
()
Ответ на: комментарий от GAMer

>Ну и плюс нужна память, 128 и выше, trdos, кэш и прочие радости, тогда эмуль может быть применён на практике.

ТС же заявил поддержку scl, значит как минимум поддержка trdos есть, только видимо rom при старте другой нужно указать

madcore ★★★★★
()
Ответ на: комментарий от GAMer

лучше unreal speccy ничего не было и, наверно, никогда не будет... к сожалению, портировать его на православную ОС проблематично :(

Binary ★★★★★
()
Ответ на: комментарий от xtron

Качественная эмуляция (работают все мультиколоры и бордюрные эффекты), поддержка огромного зоопарка спектрумовских платформ, конфигураций, переферии, расширений, форматов.

Binary ★★★★★
()
Ответ на: комментарий от Binary

Ну и всяких плюшек масса типа дебаггера, автофаера, всего и не упомнишь.

Binary ★★★★★
()
Ответ на: комментарий от Binary

Еще вспоминается встроенный дебагер с ассемблером. Некоторые полезные видофильтры, например детектор текста, отображающий его нормальными шрифтам.

madcore ★★★★★
()
Ответ на: комментарий от madcore

>отображающий его нормальными шрифтам

дада, мегофича!

насчёт дебаггера... таки лучше тёплого лампового STS повешанного на NMI ничего нет... ээээх! ностальжыыы!

Binary ★★★★★
()
Ответ на: комментарий от GAMer

> На жабе толковый эмуль написать нельзя

too fat, bro

потому как придётся делать нормальные тайминги Ленинграда, Пентагонов, Скорпа и АТМ хотя бы

которые будут нужны в 0.5% случаев нестандартных лоадеров или узоров на бордюре?

А это даже во фреймбуфере проблематично. 50 герц однако =)

А это ничего, что эмулятор по ссылке - выдает больше fps при ускорении?

Ну и плюс нужна память, 128 и выше, trdos, кэш и прочие радости, тогда эмуль может быть применён на практике.

Ну так допиши, ёпт, в качестве основы бери «ванильный» qaop и вперед!

simple_best_world_web_master
() автор топика
Ответ на: комментарий от Binary

> лучше unreal speccy ничего не было и, наверно, никогда не будет... к сожалению, портировать его на православную ОС проблематично :(

Слил, буду смотреть: http://sourceforge.net/projects/unrealspeccy/files/unreal/0.35b2/us035b2-src....

simple_best_world_web_master
() автор топика
Ответ на: комментарий от simple_best_world_web_master

Ставьте режим 48К, убедитесь, что загружены стандартные фирменные ROMы. Всяких таких тонкостей гора, я почти уверен, что unreal speccy сможет это сэмулировать :)

Binary ★★★★★
()
Ответ на: комментарий от simple_best_world_web_master

wine вполне подходит, но слегка подрочиться придётся :(

Binary ★★★★★
()
Ответ на: комментарий от Binary

> насчёт дебаггера... таки лучше тёплого лампового STS повешанного на NMI ничего нет... ээээх! ностальжыыы!

Хорош был, пока вмещался в одну страницу. После требований в две страницы я от него стал отказываться.

andreyu ★★★★★
()
Ответ на: комментарий от simple_best_world_web_master

> > потому как придётся делать нормальные тайминги Ленинграда, Пентагонов, Скорпа и АТМ хотя бы

которые будут нужны в 0.5% случаев нестандартных лоадеров или узоров на бордюре?


Мультиколор как иначе смотреть? А ведь есть и граф. редакторы, и куча демок. Да и игрушки с поддержкой мультиколора есть.

andreyu ★★★★★
()
Ответ на: комментарий от Binary

> на fuse тяжело играть даже в flying shark :( хотя, в целом, эмулятор неплох, но до unreal speccy ещё...

Да, но он под винду. Был еще какой то перспективный эмулятор под виндовс. Не могу вспомнить название.

Полез на http://zx.da.ru

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

Последний, которым я пользовался, 6.2, влазил в одну страницу. Да и при наличии метра памяти как-то пофигу.

Binary ★★★★★
()
Ответ на: комментарий от simple_best_world_web_master

>которые будут нужны в 0.5% случаев нестандартных лоадеров или узоров на бордюре?

и в 100% свежих демок :)

Binary ★★★★★
()
Ответ на: комментарий от Binary

на бордюрах не только узоры, там и буквы писали :)

Binary ★★★★★
()
Ответ на: комментарий от simple_best_world_web_master

Это очень старая версия, Алко исправлял в ней довольно много багов и многое добавлял, так что лучше искать на форуме билды от него.

GAMer ★★★★★
()
Ответ на: комментарий от Binary

> Последний, которым я пользовался, 6.2, влазил в одну страницу. Да и при наличии метра памяти как-то пофигу.

У меня тоже был Profi c мегом памяти. Но две страницы ради чего?

andreyu ★★★★★
()
Ответ на: комментарий от simple_best_world_web_master

> too fat, bro
Ну были и такие, кто доказывал, что это можно сделать только в ДОСе, перепрограммировав видеорежим. Я таким не страдаю.
Корректные тайминги нужны для многих современных игр, чтобы отрисовка экрана шла как задумывалось автором, без дёрганья и тиринга.
И кол-во фпс здесь особой роли то не играет.
Насчёт «допиши» - мне пока хватает эмулей.
Кроме US от SMT можно поглядеть на ZEmu http://zx.pk.ru/showthread.php?t=2480 http://detstwo.com/pub/zemu/
На либы и эмуль от boo_boo http://zx.pk.ru/showthread.php?t=2293
Ну и на http://zx.pk.ru/showthread.php?t=9479 - весьма перспективный имхо проект.

GAMer ★★★★★
()
Ответ на: комментарий от Binary

> а куда их девать то? :)

Под CP/M было полезно, или под ISDOS - когда много приложений запущено.

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

> Да и игрушки с поддержкой мультиколора есть.

Ну и сколько это примерно игр, например, из коллекции WOS, которые хоть как-то будут использовать его? 0.5%? 0.05%? Я вот с свое время таких припоминаю всего 2 штуки, и то эффекты там были простые, отсутствие которых никто и не заметит

simple_best_world_web_master
() автор топика
Ответ на: комментарий от GAMer

> Это очень старая версия, Алко исправлял в ней довольно много багов и многое добавлял, так что лучше искать на форуме билды от него.

гугль по фразе qaop alco ничего подходящего не дает, может есть какие-то ссылочки?

Насчёт «допиши» - мне пока хватает эмулей.

А я вот придумал алгоритм раскрашивания старых игр, где мне его реализовать, если не в своей версии эмулятора?

simple_best_world_web_master
() автор топика
Ответ на: комментарий от simple_best_world_web_master

Ну самые свежие, что видел я, это конец прошлого-начало этого века, с душой там всё в порядке.

Binary ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.