samstyle / Xpeccy

Multiplatform emulator of retro computers
MIT License
71 stars 13 forks source link

Save TAP #71

Closed ammehet closed 4 years ago

ammehet commented 4 years ago

Проблема с сохранением на ленту. Ну, то есть, во «внутреннюю» тапку оно пишет, в настройках видно новые блоки. А саму «внутреннюю» тапку при этом сохранить никак нельзя. По F9 только диски, и в интерфейсе кнопок никаких нет. И «сохранить как...» тоже нету.

Да, можно отдельный блок из TAP сохранить в TRD, затем сохранить TRD, затем из TRD перекинуть обратно в TAP. Но это как-то...

И было бы вообще шикарно, если бы крыжык «Fast loading» также умел «Fast saving». И «Autoplay» при записи.

samstyle commented 4 years ago

Отвалилось. Раньше можно было сохранять в tap записанное через стандартную процедурину. Проверю.

samstyle commented 4 years ago

Уточнение.

  1. При записи на ленту после каждого блока в консоль выдаётся сообщение вида "size: X AAA BBB CCC DDD...". Если можно, покажи его.
  2. Только что проверил. SAVE "11" CODE 0,256. F5 (rec). Any key. wait. F5 (stop). F2, там есть пункт с *.tap, указываем имя name.tap (расширение обязательно, по нему определяется тип файла), и всё проходит успешно.
ammehet commented 4 years ago

1)

Using SDL ver 1.2.15
Using ZLIB ver 1.2.5
Using Qt ver 5.3.2
SDL audio device opening...success: 44100 1764 (32784 / 32784)
Joystick not opened
size: 6
        2157    667     735     856     1710    945
size: 6
        2157    667     735     1711    852     945

2) F2 работает, спасибо! Сразу не заметил, там выпадающий список кривой какой-то, скроллить надо Screen Shot 2019-12-09 at 19 32 02

samstyle commented 4 years ago

Кривость интерфейса зависит от декорации окон. Конкретно этот список похож на GTK-шный.

ammehet commented 4 years ago

Но у меня макось, откуда GTK? Да и недавно было что-то про принудительное включение оформления в макоси. Проверил сейчас ещё в разных местах xpeccy выпадающие списки. В файловых диалогах, где есть выбор типа файла, везде так – один крайний не помещается (сверху или снизу). Да и сам диалог выглядит нестандартно, на винду похоже. image Если тип файла не выбирается, то стандартный макосьный диалог выходит.

samstyle commented 4 years ago

можешь попробовать запустить xpeccy --style. будет нативный стиль, но от этого будет не легче :)

ammehet commented 4 years ago

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

ammehet commented 4 years ago

А что «Fast saving»? Сложнааа?

samstyle commented 4 years ago

если просто перехватывать адрес в пзу, как с загрузкой, то не сложно. но пока только для спектрума не +2/+3, там другие адреса

ammehet commented 4 years ago

Странно. Через #04C2 на +2/+3e работает. Даже сообщение про «Start tape» в одном и том же месте лежит, хотя и текст отличается. Или какие-то другие адреса имеются ввиду?

Кстати, на +3e быстрая загрузка работает.

samstyle commented 4 years ago

У меня быстрая загрузка не работала на +2/+3. всё зависит от пзу. Быстрая запись и автостарт при записи на ленту сделаны. Когда докопаю выявленные попутно проблемы с мофоном - соберу.

ammehet commented 4 years ago

Турбо-читалка тапок отвалилась. xpeccy_0.6.20191214_x86_64.dmg, пробовал на конфигурациях Pentagon/Scorpion/+2A/+3. Мгновенно R Tape loading error, 0:1. Без турбы читает.

samstyle commented 4 years ago

Ясно, опять на следующий блок автоматом не переходит. Выловил.

ammehet commented 4 years ago

xpeccy_0.6.20191219_x86_64.dmg всё ок. Спасибо!

samstyle commented 4 years ago

На самом деле нет. Загрузка последнего блока без турбы приводит к tape loading error. Сижу, исправляю...

ammehet commented 4 years ago

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

Другое дело, что когда читать что-то по заданному имени, типа LOAD "lr-levels" CODE, то он пытается прочитать первый попавшийся заголовок и на этом останавливается, пока его носом не ткнёшь в нужное место тапки. Ожидаемое поведение в таком случае «пони бегают по кругу» до тех пор пока не наткнётся на нужное, либо не остановят.

level-editor.tap.zip

samstyle commented 4 years ago

поиск блока по имени - ещё более zx-специфичная штука, чем автостарт и турбо-загрузка. Тем более, данные на ленте хранятся не в виде байтов, а в виде пар "длина - амплитуда" для каждой половины волны.

ammehet commented 4 years ago

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

samstyle commented 4 years ago

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

samstyle commented 4 years ago

Проверяем-с: https://github.com/samstyle/Xpeccy/releases/tag/0.6.20191222

ammehet commented 4 years ago

Шикарно работает с турбой и без неё!