PDA

Просмотр полной версии : Чем создать TZX файлы в режиме ТУРБО для прошивки 48turbo.rom?



alex8418
20.10.2019, 21:09
Доброго времени суток товарищи форумчане! Нашёл как-то случаем на просторах интернета прошивку 48turbo.rom, заменил её в Unreal-е на прошивку 48.rom, и на тебе получилось - эмуляция Ленинграда 48 Килобайт Турбо, такой как раз у меня и был в далёком детстве, проверил функционал: набираю * - появляется монитор, набираю -:LOAD"" - включается режим турбозагрузки! Но вот незадача - пытаюсь найти программу для создания тех самых турбо образов которые понимала прошивка турбо, никак найти не могу найти? Нашёл на сайте https://www.worldofspectrum.org старую программу копировщик для создания копий турбо называется она - Turbo Compress Copy (для кассет её использовал очень давно), только толку от неё ноль - Unreal записывать не tap, не tzx не умеет, а Spectaculator вроде как записывает, но только программы по командам из бейсика!

Вообщем товарищи форумчане прошу оказать посильную помощь в создании TZX файлов TURBO-90, если это в принципе возможно? (ниже прикрепляю файлы турбопрошивки и турбокопировщика)

Spectramine
21.10.2019, 01:13
Это ПЗУ автоматически подстраивается под нормальную/турбо скорость загрузки. То есть на нем без проблем открываются обычные tzx.

- - - Добавлено - - -

Офтопиком - у нас ходил первоначальный вариант этой прошивки, Turbo87, в нем скорость надо было переключать вручную из бейсика, вводя + / - Enter. И в нём был шрифт с засечками. Версия Турбо90 также имела шрифт с засечками, и надпись (с) 1990 Sinclair Research Ltd. А в приведенной версии этой прошивки надпись изменена, зато вернули обычный шрифт) В остальном отличий от нормального Турбо90 нет.

- - - Добавлено - - -

(кстати, в этом ПЗУ команды +/- управляют скоростью записи на ленту, но записать tzx это не поможет).

JeRrS
21.10.2019, 17:03
alex8418, А сами то кассеты с турбо записью остались? если да то перепишите их в wav в 96Khz 16bit stereo попробую поэкспериментирую.

alex8418
27.10.2019, 18:37
Это ПЗУ автоматически подстраивается под нормальную/турбо скорость загрузки. То есть на нем без проблем открываются обычные tzx.

- - - Добавлено - - -

Офтопиком - у нас ходил первоначальный вариант этой прошивки, Turbo87, в нем скорость надо было переключать вручную из бейсика, вводя + / - Enter. И в нём был шрифт с засечками. Версия Турбо90 также имела шрифт с засечками, и надпись (с) 1990 Sinclair Research Ltd. А в приведенной версии этой прошивки надпись изменена, зато вернули обычный шрифт) В остальном отличий от нормального Турбо90 нет.

- - - Добавлено - - -

(кстати, в этом ПЗУ команды +/- управляют скоростью записи на ленту, но записать tzx это не поможет).

Доброго времени суток weiv! Спасибо за познавательную информацию, возможно у меня и была эта сама Турбо90 - уже не вспомню детали! Если есть в формате *.rom, прошивки Turbo87, Турбо90 выкладывайте здесь архивом, посмотрим в Unreal-е - оценим! Мой вопрос в другом - есть ли утилита на PC, которая для данных прошивок может создать турбо TZX файл или есть человек который может написать эту программу на PС?

- - - Добавлено - - -


alex8418, А сами то кассеты с турбо записью остались? если да то перепишите их в wav в 96Khz 16bit stereo попробую поэкспериментирую.

Доброго времени суток JeRrS! Физического наличия кассет вообщем-то не требуется! Если есть на что записать например с эмулятора программой Turbo Compress Copy на какой-нибудь носитель - вот тебе и игра в турбо режиме! (главные условия - игра без разного рода защит, без нестандартной загрузки, без счетчиков, с наличием всех заголовков - иначе тупо грузиться не будет!)

- - - Добавлено - - -


у нас ходил первоначальный вариант этой прошивки, Turbo87

Значит вот почему программа Turbo Compress Copy такая древняя, турбо прошивка вышла ещё 1987 году!

alex8418
03.11.2019, 10:08
Доброго времени суток weiv! Спасибо за познавательную информацию, возможно у меня и была эта сама Турбо90 - уже не вспомню детали! Если есть в формате *.rom, прошивки Turbo87, Турбо90 выкладывайте здесь архивом, посмотрим в Unreal-е - оценим! Мой вопрос в другом - есть ли утилита на PC, которая для данных прошивок может создать турбо TZX файл или есть человек который может написать эту программу на PС?

- - - Добавлено - - -



Доброго времени суток JeRrS! Физического наличия кассет вообщем-то не требуется! Если есть на что записать например с эмулятора программой Turbo Compress Copy на какой-нибудь носитель - вот тебе и игра в турбо режиме! (главные условия - игра без разного рода защит, без нестандартной загрузки, без счетчиков, с наличием всех заголовков - иначе тупо грузиться не будет!)

- - - Добавлено - - -



Значит вот почему программа Turbo Compress Copy такая древняя, турбо прошивка вышла ещё 1987 году!

Вообщем тема заглохла! Нет вариантов создать tzx с удвоенной скоростью?

goodboy
03.11.2019, 11:45
Нет вариантов создать tzx с удвоенной скоростью?
изменяй тип блоков на turbo в программе Tapir http://www.alessandrogrussu.it/tapir/index.html

alex8418
03.11.2019, 12:10
изменяй тип блоков на turbo в программе Tapir http://www.alessandrogrussu.it/tapir/index.html

Спасибо goodboy, программа всё-таки есть! Попробуем на досуге! Там есть режим удвоения скорости подобный программе Turbo Compress Copy?

goodboy
03.11.2019, 12:37
Там есть режим удвоения скорости подобный программе Turbo Compress Copy?
в изменяемой программе надо самому прописать длительность импульсов.
загрузи в неё допустим https://www.worldofspectrum.org/pub/sinclair/games/c/CobraForce.tzx.zip
и посмотри параметры блоков

alex8418
10.11.2019, 23:28
в изменяемой программе надо самому прописать длительность импульсов.
загрузи в неё допустим https://www.worldofspectrum.org/pub/sinclair/games/c/CobraForce.tzx.zip
и посмотри параметры блоков

Ой блин, посмотрел внимательно программу TAPIR ver 1.0, ну и умудрённая эта программа однако - чрезмерно увлеченные люди написали её, правда можно посмотреть весь tap или tzx файл, если разбираться, что там нужно смотреть!!!

Вот TurboCompressCopy всё было просто - нажал буковку T и выбрал режим который надо для считывания или для записи (фото в прикреплении ниже), а в TAPIR-е не понятно ничего, задаёшь режим Turbo Speed - вылетает шесть параметров: Pilot pulse, Pilot lenght, Sync 1 pulse, Sync 2 pulse, Zero Pulse, One Pulse - как их задавать непонятно??? Поменяв параметры Pilot pulse и One Pulse получил что-то похожее, но опять таки не знаю какие параметры должны быть точно???

Спасибо за ответ goodboy, в игре CobraForce блоки Turbo без заголовков, поэтому невозможно задать параметры для блоков с заголовками!!!

alex8418
12.11.2019, 23:19
По ходу не получиться сделать турбо TZX файл для Ленинграда ТУРБО-90!!!

goodboy
12.11.2019, 23:20
почему ?

alex8418
04.11.2021, 01:05
почему ?

Вообщем получилось сделать полную эмуляцию прошивки 48turbo.rom в программе Spectaculator вместе с режимом турбозагрузки в режиме реального времени! Значит переводим записи из программы TurboCompressCopy в формат WAV 8-bit Mono и при установленной прошивке 48turbo.rom в программе Spectaculator спокойно загружаем игры в турборежиме! Если будем интересно, могу пояснить как я делал записи турбо! Сейчас постараюсь выложить записи турбо (они в WAV не мало весят)! Пытался их перевести с помощью программы MAKETZX в формат tzx, но у меня ничего не получилось (может я не знаю правильных настроек для перевода турбозаписей?)! Если кто знает как переводятся турбозаписи в программе, напишите?

alex8418
04.11.2021, 14:56
И все таки как перевести турбо варианты: 1. Into the eagles nest; 2. Exolon; 3. Spy hunter в файлы TZX которые поддерживаю турбо-загрузку??? The Island of Doctor Destructo битая, так игра оказалась достаточно большая (до конца всей памяти спектрума 48 Килобайт)!!!

alex8418
04.11.2021, 16:29
https://tzxvault.org/tools.htm - команд-лайн утилита mtzx233w <имяWAVфайла> переведет WAV в TZX.

- - - Добавлено - - -

Правда, результирующий tzx чет не грузится даже в ПЗУ, поддерживающем турбо-загрузку(

- - - Добавлено - - -

Тулза выставляет неправильную длину синхро-импульсов.

Ок, weiv! Найдёте рабочую программу, пишите, достаточно интересная тема, т.к. у меня есть рабочий комп с турбо-прошивкой! TZX файлы могли бы существенно сэкономить место на диске!

morozov
05.11.2021, 04:52
Тут скорее не программу надо искать, а правильные настройки для турбо-блоков. Как я понимаю, турбо-загрузчик турбо-загрузчику рознь, поэтому Tapir позволяет выставлять конкретные параметры под конкретный случай. Нужно разбираться с турбо-прошивкой и выставлять параметры под неё.

Вот, к примеру, есть турбо-загрузчик с открытым исходным кодом (https://github.com/mcleod-ideafix/turboloader), под него автор генерирует tzx с помощью PZX Tools (http://zxds.raxoft.cz/pzx.html) по спецификации (pzx_turboblock_spec.txt):


# Leader tone: 1000 pulses of 1500 T each one (500 cycles). Loader needs
# at least 256 continuous cycles to detect a valid leader tone.
# Sync pulses follow inmediately, one 400 T pulse, followed by one 800 T pulse.
# Actual polarity of pulses is not important. Loader routine is polarity agnostic.
PULSES
PULSE 1500 1000
PULSE 400
PULSE 800

# Data block: a 0 bit is a cycle with a 500 T pulse, followed by a 500 T pulse.
# a 1 bit is a cycle with a 1000 T pulse, followed by a 1000 T pulse.
# There is no flag byte, nor checksum.
DATA
BIT0 500 500
BIT1 1000 1000


К слову, я попробовал турбо-прошивку на Fuse — не работает. Копирайт выводится вроде 1992, а при загрузке бордюр мигает, причём довольно быстро, но на сигнал не реагирует. Неужели только в Spectaculator работает,

alex8418
06.11.2021, 12:32
Тут скорее не программу надо искать, а правильные настройки для турбо-блоков. Как я понимаю, турбо-загрузчик турбо-загрузчику рознь, поэтому Tapir позволяет выставлять конкретные параметры под конкретный случай. Нужно разбираться с турбо-прошивкой и выставлять параметры под неё.

Вот, к примеру, есть турбо-загрузчик с открытым исходным кодом (https://github.com/mcleod-ideafix/turboloader), под него автор генерирует tzx с помощью PZX Tools (http://zxds.raxoft.cz/pzx.html) по спецификации (pzx_turboblock_spec.txt):


# Leader tone: 1000 pulses of 1500 T each one (500 cycles). Loader needs
# at least 256 continuous cycles to detect a valid leader tone.
# Sync pulses follow inmediately, one 400 T pulse, followed by one 800 T pulse.
# Actual polarity of pulses is not important. Loader routine is polarity agnostic.
PULSES
PULSE 1500 1000
PULSE 400
PULSE 800

# Data block: a 0 bit is a cycle with a 500 T pulse, followed by a 500 T pulse.
# a 1 bit is a cycle with a 1000 T pulse, followed by a 1000 T pulse.
# There is no flag byte, nor checksum.
DATA
BIT0 500 500
BIT1 1000 1000


К слову, я попробовал турбо-прошивку на Fuse — не работает. Копирайт выводится вроде 1992, а при загрузке бордюр мигает, причём довольно быстро, но на сигнал не реагирует. Неужели только в Spectaculator работает,

Доброго времени суток morozov! Спасибо за ответ и за всякую разнообразную софтинку (с которой надо ещё разбираться как работать!), которую Вы выкладываете в топиках! Но Я думаю, что тема турбо-загрузчика для стандартной прошивки спектрума без турбо-режима - это отдельная тема в разделе Программирование (т.к. Я честно не знаю как написать этот загрузчик и в журнале ZX Ревю этот загрузчик не упоминался - т.е. упоминался, но только используя функционал прошивки турбо-90 и на стандартной прошивке этот загрузчик просто виснет!)!

По поводу того, в каком эмуляторе будут работать представленные в топике турбо-записи, могу сказать следующее, что запись производилась с помощью эмулятора Unreal на прошивке турбо-90 с загруженной программой TurboCompressCopy (с максимальными настройками звука на выход), после записи WAV файл с помощью бесплатной программы переводился формат 8-bit mono и тестировался в эмуляторе Spectaculator! Возможно эти записи могли бы работать в эмуляторе Unreal, если бы он поддерживал загрузку WAV файлов, но данной поддержки увы нет или же представлялась возможно перевести вышеуказанные записи в формат TZX!

goodboy
06.11.2021, 12:51
Физического наличия кассет вообщем-то не требуется
так если грузить на реал с "цифры" то скорость можно поднять в разы
https://zx-pk.ru/threads/19193-igry-s-turbo-zagruzkoj-dlya-quot-leningrad-2012-quot.html

alex8418
06.11.2021, 13:15
так если грузить на реал с "цифры" то скорость можно поднять в разы
https://zx-pk.ru/threads/19193-igry-s-turbo-zagruzkoj-dlya-quot-leningrad-2012-quot.html

А у Вас с указанной темы игры грузились, я вроде пробовал на реальном спектруме (не LENINGRAD 2012), не получается!

goodboy
06.11.2021, 13:27
А у Вас с указанной темы игры грузились ?
конечно. для того и делал

alex8418
07.11.2021, 10:52
конечно. для того и делал

А...а...а... так это Ваше творчество! Понятно! Но на обычном спектруме они грузятся, я потом в конце загрузки сброс! Если сможете мои записи в TZX сжать, огромное Вам спасибо!

morozov
26.12.2022, 23:30
А есть ли ещё какие-то программы кроме Tapir для генерации TZX? Хочется повозиться, а ни Windows ни Wine под рукой нет. Желательно вообще что-нибудь без GUI, чтобы работать прямо из командной строки.

Пытался разобраться с турбо-загрузчиком из своего же поста выше, вроде там чего-то не хватает. С одной стороны, с помощью PZX Tools можно сгенерировать PZX, а с другой стороны, у автора в репозитории лежат примеры и в PZX, и в TZX. Как он сгенерировал TZX для своего загрузчика, не понятно. Вроде как PZX Tools умеют только конвертировать из TZX, но не в него.

Такое чувство, что я что-то очевидное не замечаю.

Djoni
27.12.2022, 20:47
А есть ли ещё какие-то программы кроме Tapir для генерации TZX? Хочется повозиться, а ни Windows ни Wine под рукой нет. Желательно вообще что-нибудь без GUI, чтобы работать прямо из командной строки.

Пытался разобраться с турбо-загрузчиком из своего же поста выше, вроде там чего-то не хватает. С одной стороны, с помощью PZX Tools можно сгенерировать PZX, а с другой стороны, у автора в репозитории лежат примеры и в PZX, и в TZX. Как он сгенерировал TZX для своего загрузчика, не понятно. Вроде как PZX Tools умеют только конвертировать из TZX, но не в него.

Такое чувство, что я что-то очевидное не замечаю.

https://zx-pk.ru/threads/23348-mozhno-li-quot-multiface-3-quot-nauchit-rabotat-s-quot-beta-disk-interface-quot.html?p=1167441&viewfull=1#post1167441

morozov
03.06.2025, 00:14
Если вдруг кому ещё понадобится, я наткнулся на библиотеку PyTzx (https://web.archive.org/web/20240616121512/https://software.amiga-hardware.com/pytzx.cgi), с помощью которой можно создавать TZX-файлы с разными параметрами.
Последний релиз был в 2008-м году, поэтому с Python 3 библиотека из коробки не работала, так что я её обработал напильником (https://github.com/morozov/pytzx) и выложил в качестве пакета (https://pypi.org/project/pytzx/).

ZXMAK
04.06.2025, 01:25
питон для этого не нужен, любые блоки TZX можно прямо в асме делать и потом компилить прямо в TZX с помощью ZASM (https://github.com/Megatokio/zasm). Сам ассемблер можно даже не устанавливать, а воспользоваться web-версией (https://k1.spdns.de/cgi-bin/zasm.cgi) и скомплиить прямо через браузер. Могу скинуть еще bash скрипт, который компилит через веб версию и скачивает результат, как будто ассемблер локально работает. :)

Чтобы посмотреть пример - возьмите любой TZX и отдекомпильте его в ASM с помощью моей утилиты TZX2TAP:
https://zx-pk.ru/threads/36141-tzx2tap-konvertatsiya-tzx-v-tap-i-obratno-a-takzhe-damp-tzx-v-kompiliruemyj-asm-fajl.html

если указать на выходе ASM, то она читает TZX блоки и форматирует их в виде ASM файла для компиляции, если нужно - можно подправить что нужно текстовым редактором, как в обычном ASM файле и скомпилить обратно в TZX. Аналогично можно отдекомпилить TAP файл в ASM и обратно.


Что касается турбозаписей можно любой TZX или TAP сконвертить в WAV с завышенной частотой Z80 используя мою утилиту TZX2WAV:
https://zx-pk.ru/threads/36059-chem-v-2k25-proigrat-tap-tzx-na-sovremennom-android.html?p=1210999&viewfull=1#post1210999

Есть чуть новее версия, с более оптимизированным кодом (примерно на 30% быстрее фильтр) и поправленными некоторыми ошибками, если нужно - пишите

cardimax
05.06.2025, 11:43
Очень нужна, попробую...

morozov
06.06.2025, 01:45
ZXMAK, спасибо. Я пользуюсь Pasmo в качестве ассемблера и Skoolkit в качестве дизассемблера, мне их пока хватает. В чём мне интересно разобраться, так это в таймингах и различных параметрах загрузчиков.

Я поисследовал загрузчики в релизах от Элекс, Андрея Данилова, QuickSave v1.3 и Turbo Maker и вижу, что код процедуры LD_LOAD практически идентичный, но во всех из них разные значения временных констант. При этом у соответствующих TZX-файлов отличается длина импульса нуля, единицы и т.д. Как результат, разная скорость загрузки (от 1.7x до 4.2x). Вот хотелось бы понять, как одно из другого вычисляется.


можно [...] скомпилить обратно в TZX

Вот тут я не совсем понимаю. TZX после редактирования скомпилится с оригинальными таймингами? Я на программу пока не смотрел — ей нужен mono-runtime, а у меня пока есть только Python (шучу).

ZXMAK
06.06.2025, 03:41
Вот тут я не совсем понимаю. TZX после редактирования скомпилится с оригинальными таймингами?

да, после комплияции asm файла получите точно такой-же TZX со всеми деталями. Если сравнить по байтам отличаться может только поле с версией самого TZX формата, т.к. ассемблер пишет фиксированную версию TZX формата, которая может отличаться от версии исходного файла TZX. Если подправить текстовым редактором в ASM файле к примеру длительность какого-то импульса в каком-то блоке или байт с данными, то получите TZX с внесенными модификациями.

Что касается ассемблера, если не хотите устанавливать - можно на веб (https://k1.spdns.de/cgi-bin/zasm.cgi) странице загрузить asm файл, она скомпилит и выдаст ссылки на скачивание результата компиляции.

Вот пример как выглядит результат декомпиляции TZX с защищенным загрузчиком speedlock в ASM (полный код не привожу, только первые блоки для примера):


; https://k1.spdns.de/cgi-bin/zasm.cgi
#target tzx

; TZX v1.12

#tzx ARCHIVE-INFO
defb 0,"Zorro" ; Full title
defb 1,"Datasoft/U.S. Gold" ; Publisher
defb 2,"James Garon" ; Author
defb 3,"1985" ; Year
defb 4,"English" ; Language
defb 5,"Game/Strategy/Beat 'Em Up" ; Type
defb 6,"Full Price" ; Price
defb 7,"Speedlock 1" ; Protection
defb 8,"Original Release" ; Origin
defb 255,"TZXed by Andrew Barker 04-08-1999" ; Comment

#tzx STANDARD, BLOCK2_HEADER, 0, 17, flag=$00, pause=1003
defb 0 ; type
defb "Zorro " ; name
defw 1562 ; length of block = length of basic program plus variables
defw 0 ; line number for auto-start, 0x8000 if none
defw 1154 ; length of the basic program without variables

#tzx STANDARD, BLOCK3_DATA, 0, *, flag=$ff, pause=4571
defm $0000800020202020202020202020202020202020202020202 020202020202020
defm $2020202020202020202020202020202020202020202020202 020202020202020
defm $2020202020202020202020202020202020202020202020202 020202020202020
defm $10071107ea1107100050726f7465637465642062792053504 545444c4f434b10
defm $0711070d00003f0011071007e7300e00000000003ada300e0 0000000003ad930
defm $0e00000000003adc310e00000100003afb3af432333632340 e0000485c002c30
defm $0e00000000000d0000800011071007f428be1007323336343 10e8f38b233332b
defm $3235360e00000001002abe100732333634320e8f38b4999a2 92cbe1007323336
defm $34390e8f38c266663af428be100732333634310e8f38b2333 32b3235360e0000
defm $0001002abe100732333634320e8f38b4999a292b310e00000 100002cbe100732
defm $333635300e8f38c466660d0000800011071007f428be10073 2333633330e8f38
defm $7a33332b3235360e00000001002abe100732333633340e8f3 87c6666292cbe10
defm $0732333634370e8f3896999a3af428be100732333633330e8 f387a33332b3235
defm $360e00000001002abe100732333633340e8f387c6666292b3 10e00000100002c
defm $be100732333634380e8f3898999a0d00005e0011071007f41 00732333636320e
defm $8f38dc33332cbe100732333631380e8f388433333af410073 2333636330e8f38
defm $de66662cbe100732333631390e8f388633333af4100732333 636340e8f38e033
defm $332cbe100732333632310e8f388a33330d9c89809897bcbbc 1aaa05889423ee3
defm $661c08f4d1896e945aec4691a4bbe2cff56cdc7197995ee26 9a636450fc2b865
defm $f379e4ef08fb0791c5d70ca71fd534a33f7e8abc79110bd0b ae903f0cae9a761
defm $df7d33d0b48937123e03938f085cf3280d74765d07f313d0a 1e907e82cb59b20
defm $161387e9084f20db1d02ed7ac497cbcf3f7276ef384716ef5 d0aeeb2920249d0
defm $0726236a6ef7b6df1d45d6e75c46c343844838846b6039532 51cfcd223157dfb
defm $36e6228d884d924fc64ff2d63eedee51274541a8021e8b699 aeb949f50070abe
defm $bec26f08558049e6671fca7fe643fc1a4a110c4deac6586ce 708521fec1991f5
defm $5b070f118fec0a87bef3ec3ab6913e3f6d31f2f68db480db6 78402404478743c
defm $f3c05d233348c1a5c7eb9913658517eff4a47edc86c2e4aed 78e074948cd84a2
defm $8378c9e5c3d034ae69de4152075e7607aa2ba21314f15b122 27d414276c1edc4
defm $26555c5c6d433cb07d99b41b9f73adcef48b487658b375dea 37b4ad13fecbb63
defm $eb78bac2d756d0fbff3fe1e195b7d94f0d5785409e489fa64 62167ffc6e52e83
defm $1d20426586765478f3f7343cb9d46c691e601d18a3db8b328 d98a3463c1e26ea
defm $3e153d8cd6baad18dacec841a20261761b491a1ae97b1a223 c809f7775382e17
defm $f576abbcb51c46ad4e18c67af786b5d74c77e73f0e8c494a7 58c2b2db3502e42
defm $bb48db6117a06859c154b469d7b6b91a5b152182698158f18 00146afefe87bba
defm $aa5663846fd74904260a3675dd72175f576c8bbc935214a08 edfefe4b9fbb799
defm $4790c89f55b129aaaa53b962afe03f65285ebfd28aeac17ed 2227bebedb06434
defm $d11d6d45407992ed57dd626453e0151552d9dd68aaed62abf 36d7777fd84fdad
defm $39fd62dd54fdac7768fd6962fd63d9425547cb1c4f4646cb1 d59d9a9594f55a8
defm $424947a757414c4c59dd54fd4ded4fdd7dfd4468596f7f6d4 a40edb0fd26fb48
defm $4fee053b3b434d6ded52fd2e8355ed5ed9524f5dfde3414e4 4ed6afd54fd5deb
defm $427e5550ed524a7b594f5552535f7e44ed574de1527ce8e5e be40830ed5fae77
defm $eda0e03b3be83b3becc7835f40ad4f043bd1e2b0645350454 5444c4f434b2050
defm $726f74656374696f6e2053797374656d205620332e31207f2 0444a4c20536f66
defm $7477617265202620446176696420417562726579204a6f6e6 573203139383520
defm $2a20476f7665726e6d656e74204865616c7468205761726e6 96e67202d204174
defm $74656d7074696e6720746f20637261636b2053504545444c4 f434b2063616e20
defm $64616d61676520796f75722073616e69747921202af352fda c214f7b0b62e0cc
defm $8f31e9722073616e69747921202af352fdac214f7b0b62e0c c8f31e9e921202a
defm $f352fdac214f7b0b62e0cc8f31e900000a000000000000000 000

#tzx GROUP-START, name="Speedlock 1 Block 1"

#tzx LOOP-START, repetitions=7

#tzx PURE-TONE, count=216, pulse=2165

#tzx PULSES
defw 714,714

#tzx PURE-TONE, count=210, pulse=2165

#tzx PULSES
defw 714,714

#tzx PURE-TONE, count=214, pulse=2165

#tzx PULSES
defw 714,714

#tzx PURE-TONE, count=212, pulse=2165

#tzx PULSES
defw 714,714

#tzx LOOP-END

#tzx PURE-TONE, count=216, pulse=2165

#tzx PULSES
defw 714,714

#tzx PURE-TONE, count=210, pulse=2165

#tzx PULSES
defw 714,714

#tzx PURE-TONE, count=214, pulse=2165

#tzx PULSES
defw 714,714

#tzx PURE-TONE, count=212, pulse=2165

#tzx PULSES
defw 3153,3153

#tzx PURE-DATA, BLOCK23_DATA, 0, *, flag=none, checksum=none, lastbits=6, pause=0
.tzx-data-sym 0, 564,564 ; symbol#0 for bit 0
.tzx-data-sym 0, 1129,1129 ; symbol#1 for bit 1
defm $e8

#tzx PURE-DATA, BLOCK24_DATA, 0, *, flag=$ff, pause=1765
.tzx-data-sym 0, 564,564 ; symbol#0 for bit 0
.tzx-data-sym 0, 1129,1129 ; symbol#1 for bit 1
defm $ffffff2a5d5c7ecd7d00d0cd740018f7ffffff

#tzx GROUP-END
....
....
....


Как видите, в ASM файле можно легко обычным текстовым редактором добавить/удалить какой-то блок, подправить тайминги, паузы, данные, словарь символов, длительности импульсов, флаговый байт, байт контрольной суммы и т.п.

Dexus
06.06.2025, 09:53
Да, до сих пор нет нормального удобного браузер/конвертера/редактора tap/tzx. Ассемблерными блоками собирают все. И tapir советуют в котором интерфейс и возможности мягко говоря не очень. Позор же.

SoftLight
06.06.2025, 11:21
Да, до сих пор нет нормального удобного браузер/конвертера/редактора tap/tzx
Чем ZX Blockeditor (https://zx-blockeditor.software.informer.com/2.0/) плох?

cafedead
06.06.2025, 11:50
Да, до сих пор нет нормального удобного браузер/конвертера/редактора tap/tzx. Ассемблерными блоками собирают все. И tapir советуют в котором интерфейс и возможности мягко говоря не очень. Позор же.

Согласен. Позор... )) :v2_dizzy_roll: Пришлось самому себе сделать.

82378

Возня с ассемблерными (ну они даже не ассемблерные, а просто файлы дампа по сути) файлами для такой прикладной задачи, с разведением подобного мусора на диске - такое себе. Действительно, воткнули бы в свои эмуляторы нормальный редактор, в тот же ZXMAK, да и все.

- - - Добавлено - - -


код процедуры LD_LOAD практически идентичный, но во всех из них разные значения временных констант. При этом у соответствующих TZX-файлов отличается длина импульса нуля, единицы и т.д. Как результат, разная скорость загрузки (от 1.7x до 4.2x). Вот хотелось бы понять, как одно из другого вычисляется.
На константы еще может влиять всякая дополнительная логика, вроде счетчиков... Все, что запихивается в LD-EDGE, где мы типа ждем стабилизацию порта. Там автором может быть добавлена кастомная часть со счетчиком, которая будет по тактам дольше оригинального цикла стабилизации. Далее может быть улучшен в плане производительности код самого цикла, где мы считаем итерации до изменения порта. Соответственно, временные константы автору кастомного загрузчика приходится выбирать с учетом всех этих изменений, и поэтому, я боюсь, напрямую из временных констант вы ничего не вычислите.

82380


Как он сгенерировал TZX для своего загрузчика, не понятно.

Такое чувство, что я что-то очевидное не замечаю.
Видимо, да. Я свой TZX сгенерировал вообще из TAP, который мне создал sjasm. Которым я сассемблировал свой код со своим загрузчиком. Для конвертации написал свою тулзу за вечер. Ничего сложного в этом нет, те же блоки, плюс небольшое оформление с их свойствами. Не вижу причин годами искать чей-то инструментарий, умеющий это делать, раз уж вы убеждены, что у вас достаточно компетенций, чтобы разбираться с чьими-то загрузчиками на ассемблере. Опенсорс же всем нужен для быстрых решений сложных задач, "чтобы не писать свои велосипеды", а не для поиска годами решения простой задачи, не так ли?! (сарказм)

В принципе, для целей бережного ускорения загрузки игр с максимальным сохранением аутентичности их загрузки достаточно простой конвертации TAP (TZX) оригинала в TZX с изменением свойств блоков заставки и игры, и либо патчем временных констант в кастомном загрузчике при его наличии (просто несколько байтов в нем меняются, и контрольная сумма бейсика/лоадера, т.е. ксорим на нее старые значения этих байтов, и новые), или патченым ПЗУ Спектрума - при его отсутствии, но тогда меняем свойства всех блоков, даже заголовков. Можно скопировать эти байты и значения свойств из уже рабочего примера игры с турбозагрузкой. Вот и все решение. Инструментарий делается за вечер, модификация - в два клика мыши. Сложность представят сильно измененные кастомные загрузчики, где придется немного подумать, найти в коде нужную часть, посмотреть отладчиком, или защищенные зашифрованные блоки, с которых нужно будет снять защиту. И да, может хуже грузиться, если загрузчик располагается в медленной памяти, например, а константы выбраны с недостаточным запасом. Ну а как вы хотели?

Upd: Прочитал тему... Зачем-то Турбо Копи достали из небытья, WAV-файлы гоняют туда-сюда... Мощно.

Dexus
07.06.2025, 07:26
Чем ZX Blockeditor (https://zx-blockeditor.software.informer.com/2.0/) плох?

Может тем что о нем ничего неизвестно (я впервые о нем слышу)? Ни на vtrd.in ни на zxart ни на других наших ресурсах (и даже не нагугливается по словам «tap editor».
Пока возможности проверить, насколько этот софт удобен у меня нет (и умеет ли он конвертировать tap в tzx со сменой скорости на turbo). За ссылку спасибо. Обязательно позже проверю.

Наверное тут более актуальная ссылка https://worldofspectrum.net/zx-modules/2/index.html

cafedead
07.06.2025, 08:04
и умеет ли он конвертировать tap в tzx со сменой скорости на turbo). За ссылку спасибо. Обязательно позже проверю.

Наверное тут более актуальная ссылка https://worldofspectrum.net/zx-modules/2/index.html
Я посмотрел, да, умеет. Хоть немного и перегруженный не интуитивный интерфейс. И туповатый: у меня на двух мониторах все свои диалоговые окна показывает между экранами, причем старая версия справа, а новая - слева, видимо, "исправили". Ну не могут не налажать, но почему-то я всегда виноват, потому что душный... ) В целом, хорошая прога, много настроек, куча форматов. Но сразу ребяток расстрою, от заполнения параметров турбо-блока это не спасет. Это не турбо-комп-копи с тремя режимами. Формат предусматривает много чего, а значит вписать нужно много чего, уж извините, и им придется все же разбираться в предметной области. Но можно эти данные копировать туда-сюда.

82384

Ну и скачал Тапир посмотреть. В Тапире можно сделать все то же самое, но процесс очевиднее и без кучи окон между двумя мониторами. Если у человека уже в нем были какие-то сложности, если ему проще грузить все в турбо-копи, потом сохранять WAV-файл, потом его переводить обратно в TZX, чем поменять две циферки в форме, то вряд ли можно чем-то помочь.

Dexus
07.06.2025, 08:49
Если тап затурбировать только нужно - это просто как wav сохранить и запитчить (увеличить частоту и скорость) в 2 раза. А потом в tzx сконвертировать.

cafedead
07.06.2025, 09:13
Если тап затурьировать только нужно - это просто как wav сохранить и запитчить (увеличить частоту и скорость) в 2 раза. А потом в tzx сконвертировать.
Характеристики пилота и синхроимпульсов редко меняют. Я не менял. Значит, такое уже не грузилось бы. Надо подбирать в загрузчике константы еще и для этого. Не уверен, что подхватится.

Dexus
07.06.2025, 09:24
У меня несколько кассет было записано на Новосибирске с включенным 7мгц турбо режимом. После того как он умер, загружать на Ленинград уже оттуда не получалось. Но поставив пзу 1990 с турбой, эти старые записи воскресли, и нормально загружались. Так что параметры там +- соответствуют банальному х2 ускорению как при 7мгц (безвайтового).

goodboy
07.06.2025, 09:25
Ни на vtrd.in
??????
https://vtrd.in/pcutilz/ZX-BLOCK.zip

Dexus
07.06.2025, 09:37
Со страницы pc тулзов:
ZX Viewer v1.03 by Reanimator'18 - просмотрщик/редактор файлов форматов TRD и SCL (Windows)
ZX-Blockeditor v2.4.3.1 by Claus Jahn'20 - редактор различных образов файлов (Windows)
ZX-Dump v1.33 by Marcelo Lypez'99 - программа для работы с форматом OPU (DOS)
«Различные образы» написано. А я ищу по контексту редакторы tap и tzx. По этому описанию вообще ничего непонятно и разумеется не находится ни Гуглом ни чем-то ещё. Просто все подряд брать, распаковывать, и изучать? Ну нет. Как оформили так и НЕ находится.

Tapir кстати вообще неудобный. Если этот блок едитор ещё менее удобный, то тезис про «стыдно что нет нормального» остается на столе.

cafedead
07.06.2025, 11:01
«Различные образы» написано. А я ищу по контексту редакторы tap и tzx. По этому описанию вообще ничего непонятно и разумеется не находится ни Гуглом ни чем-то ещё.
Ну вот Тапир открывает конкретно кассетные форматы, и все. Интуитивно он проще, кликнул куда-то, получил ровно то, что ожидал. А этот открывает тонну форматов, но не очень понятно, зачем, что он с ними потом может делать... Но умеет что-то делать и с дисковыми образами, наверное, поэтому более функционален.

А удобство... Ну, скажем так, увеличение функционала пошло в ущерб удобству. Ну и не особо удобно, что каждое окно у меня на экране лишь наполовину, а остальное - на выключенном в данный момент мониторе. Не удобно каждое окно так вытаскивать. Ну это классический баг неоттестированного нормально приложения. Но вообще, мне конечно удобнее своей тулзой одним нажатием превратить стандартный блок в турбоблок с уже пробитыми значениями характеристик. Такого функционала я там не видел, а он как бы необходим, когда такое количество всевозможных меню и окон везде, где только можно, что даже зная, что тебе нужно, в этом теряешься. Ну в целом, приложения хорошие. Можно посмотреть, что они умеют, и сделать свое лучше. Почему бы не встроить этот функционал в эмуляторы, я не понимаю.

goodboy
07.06.2025, 12:29
Почему бы не встроить этот функционал в эмуляторы, я не понимаю.
эмули (в большинстве случаев) грузят Tap`ки практически мгновенно, а для TZX используется EdgeDetection.
`честной` загрузкой (игра ~ 4min) почти никто не пользуется.

ZXMAK
07.06.2025, 13:44
Да, до сих пор нет нормального удобного браузер/конвертера/редактора tap/tzx. Ассемблерными блоками собирают все. И tapir советуют в котором интерфейс и возможности мягко говоря не очень. Позор же.

Никакой браузер-конвертер-редактор tap/tzx не даст вам возможности легко, просто и быстро подправить любые детали в tap/tzx. Именно для того чтобы делать это легко просто и быстро я и сделал такой декомпилятор в asm, в котором затем можно легко и быстро отредактировать любимым текстовым редактором в tap/tzx и скомплить обратно в tap/tzx.

Мне важно было иметь возможность легко и быстро отредактировать что угодно в tap/tzx для отладки TZX в эмуляторе, поэтому я и сделал такую утилиту себе. А начиналась она так как вы предлагаете - вначале с hex редактора, потом со специализированного редактора для tzx, но помере роста запросов на более быстрое, простое и понятное редактирование любых деталей в tap/tzx это все трансформировалось в TAP/TZX->ASM->текстовый редактор->TAP/TZX.

Помимо этого такой подход дает также возможность легко вставлять блоки данных (например скрин или блок данных) из tap/tzx в исходник своего кода который компилится в tap/tzx - это делается простейшим копи-пастом блока текста. Можно легко комбинировать копировать, удалять, редактировать магнитофонные блоки, добавлять/менять полярность для любого, менять паузу и вообще править в tap/tzx что угодно.

Вот например, чтобы просто скопировать определенный хитрый импульс в TZX, сделав из него три-четыре таких импульса, используя конвертацию в ASM, достаточно просто открыть ASM файл в текстовом редакторе скопировать блок текста с импульсом и сделать вставку из клипбоарда нужное число раз - всё. Все блоки снабжены комментами в ASM файле для удобства навигации. Теперь попробуйте тоже самое проделать в графическом редакторе - даже если он поддерживает это, это будет намного сложнее, дольше и интуитивно непонятно.

Можно легко и быстро отредактировать таблицу словаря импульсов, можно легко и быстро из стандартного блока данных сделать любой хитрый блок с нестандартными импульсами. Все это делается простым копи-пастом в любимом текстовом редакторе - просто копируем нужный блок и вставляем его в нужное место или просто редактируем длительность нужного импульса в словаре.

Аналогично, чтобы задать полярность перед нужным блоком, просто вставляем в ASM строку перед нужным блоком:


#tzx POLARITY, polarity=0


и всё. Просто, быстро и удобно и вы сразу видите все скрытые детали TZX файла, которые вам не покажет никакой графический редактор TZX :)


Вот еще пример как вставить PURE-DATA блок состоящий из 6 бит (не кратна 8):


#tzx PURE-DATA, BLOCK23_DATA, 0, *, flag=none, checksum=none, lastbits=6, pause=0
.tzx-data-sym 0, 564,564 ; symbol#0 for bit 0
.tzx-data-sym 0, 1129,1129 ; symbol#1 for bit 1
defm $e8


Очень наглядно и просто, не так-ли? Сразу видно как исправить импульсы нужного символа в словаре, поменять данные. Все просто и очевидно. Теперь попробуйте сделать такой-же блок в графическом редакторе... :)

Единственный минус - если хотите вставить чтото новое, а не отредактировать или скопипастить то что уже есть, то прийдется разобраться в синтаксисе блоков #tzx ассемблера. Это легко сделать почитав документацию: https://k1.spdns.de/Develop/Projects/zasm/Documentation/z98.htm


Грубо говоря это из разряда идеи о том, чтобы писать программы в графическом редакторе в виде графической блок-диаграммы или в текстовом редакторе. Кому-то может показаться, что графическая диаграмма будет проще и быстрее, но это не так - на практике в текстовом редакторе писать или исправлять код легче и удобнее. :)

SoftLight
07.06.2025, 21:15
Может тем что о нем ничего неизвестно (я впервые о нем слышу)? Ни на vtrd.in ни на zxart ни на других наших ресурсах (и даже не нагугливается по словам «tap editor».
Пока возможности проверить, насколько этот софт удобен у меня нет (и умеет ли он конвертировать tap в tzx со сменой скорости на turbo). За ссылку спасибо. Обязательно позже проверю.

Наверное тут более актуальная ссылка https://worldofspectrum.net/zx-modules/2/index.html
На vtrd версия 2.4.3.1 (https://vtrd.in/pcutilz/ZX-BLOCK.zip) лежит, если что. Вкладка 'PC Utilz'. У автора (Claus Jahn) из Германии был сайт ZX Modules (https://web.archive.org/web/20121023201630/http://www.zxmodules.de/), но в один непрекрасный день 16 декабря 2017 г. автор решил закрыть проект.