PDA

Просмотр полной версии : Нестандартные методы загрузки с ленты



Sabrewulf
15.03.2009, 19:30
Существует масса нестандартных загрузчиков, но чем они всё-таки друг от друга отличаются?

Вот к примеру http://tzxvault.retrogames.com выделяет такие виды загрузки:

Speedlock - тут всё вроде понятно - загрузка на нестандартной скорости
Alkatraz - на повышеной скорости. При этом заставка грузится нестандартно. Физически (на ленте) насколько я понял ничем не отличается от Speedlock
Injectaload - опять же физически от Speedlock ничем не отличается. Характерная черта - очень длинный блок, порядка 54 кбайт.
Bleepload - загрузка короткими блоками порядка 270 байт. Короткие блоки идут последовательно без пауз. Насколько я понял, если привести эти блоки к стандартному виду (сделать с паузами) игра успешно загрузится:)
Softlock - иногда бывает на нестандандартной скорости, часто на стандартной, чем примечателен этот метод я так и не понял:(
Power Load - аналогично предыдущему пункту. Но тут я поизголялся. Взял Boulder Dash с WoS. Увидел в tzx блок на нестаднартной скорости, хотя на слух скорость ничем не отличается. Преобразовал это дело в wav и обратно в tzx - оказалось этот turbo блок - есть обычный стандартный блок, а "турбированным" после преобразования оказался блок, который в оригинальном tzx был стандартным :eek_std: В общем подправил я в редакторе tzx этот блок, сделав его нормальным и преобразовал это всё в tap (т.к. все блоки теперь стандартные), и о чудо - после всех издевательств всё ГРУЗИТСЯ. Единственное, редактор tap/tzx файлов говорит, что в последнем блоке (который по версии WoS на нестандартной скорости, хотя это не так) последний байт (контрольная сумма) не верен. Взял ради эксперимента ручками поставил верное значение - игра перестала грузится. Выходит этот метод заключается в том, что контрольная сумма рассчитывается нестандартным методом?

Насколько я понял физически загрузчики отличаются:
1. Скоростью загрузки
2. Длительностью пилоттона (толстые полосы при стандартной ззагрузке)
И всё!?? Логически может настандартно рисоваться экранная заставка, вычисляться контрольная сумма, могут быть сверхдлинные блоки, счётчики и т.п. Это всё? Где можно было бы почитать про методы загрузки желательно на русском?

goodboy
15.03.2009, 22:06
В общем подправил я в редакторе tzx этот блок, сделав его нормальным и преобразовал это всё в tap (т.к. все блоки теперь стандартные)

TAP формат подразумевает не только стандартную скорость, но и ПЗУшный лоадер 1366. если игра использует свой загрузчик то это одназначно TZX.

Sabrewulf
16.03.2009, 05:17
TAP формат подразумевает не только стандартную скорость, но и ПЗУшный лоадер 1366. если игра использует свой загрузчик то это одназначно TZX.
Что за чушь! Это почему вдруг? TAP подразумевает стандартную загрузку на физическом уровне и совершенно не важно используется ли загрузчик по 1366 или свой. Если физически загрузка ничем не отличается, то это спокойно может быть и TAP.

Для примера в архиве тот же Boulder Dash 2 и Brave Starr. Оба в формате TAP, но ни одна из игр не грузится стандартным загрузчиком по 1366 ибо:
1) Boulder Dash 2: заставка грузится снизу вверх + несовпадает CRC в последнем байте. Как указано на WoS используется некий Power-Load.
2) Brave Starr: испльзуется Alkatraz, т.е. экранная заставка грузится совершенно произвольным образом.

Собственно поэтому меня и заинтересовала классификация загрузчиков, и чем они отличаются между собой прежде всего физически, но естесвенно не только физика интересна:)

PS. http://newton.sunderland.ac.uk/~specfreak/Schemes/schemes.html - вот ещё одна классификация загрузчиков. Здесь их ещё больше. К перечисленным в первом сообщении добавляются Zeta Loader, Movieload и др.

jerri
16.03.2009, 08:58
для того чтобы понять чем Турбо отличается от обычной стоит проанализировать
загрузчик
а фишка в том что
имеем сигнал

___ _
____| |_| |______
1 0
ноль от единицы отличается тем что фронт меняется в 2 раза реже
и при загрузке стандартный ПЗУшный загрузчик позволял ускорить загрузку гдето процентов на 20 (вместо 5 мин около 4х) просто подкрутив какой-то болтик в мафоне :)

если ты при записи сократишь задержки опять же процентов на 20-30
игра загрузится немного быстрее а загрузчик пусть даже с сокращенными задержками опять же позволит загрузит замедленную запись

Power Load кстати еще та штучка
там вначале 1 пилотон и дальше игра грузится самыми разнообразными способами
в самых разных направлениях
и заставка задом наперед - это еще детский лепет.
в Алкатразе кроме красивой подгрузки заставки в основном блоке присутствует еще несколько блоков загружающихся в самые разные места
в том числе поверх загрузчика
а если игра для 128 кб то еще и в верхнюю память загрузит

все это делалось чтобы затруднить нелегальное копирование игр

goodboy
16.03.2009, 11:11
2) Brave Starr: испльзуется Alkatraz, т.е. экранная заставка грузится совершенно произвольным образом.


в приведённом тобой примере взломанный alkatraz и соответственно переделанный блок данных который спокойно копируется утилитами типа TF-COPY. оригинальную версию с фирменным алькатрасом ты в TAP не переведёшь. формат TZX появился позже самых первых эмуляторов, которые делали перехват данных о загружаемом блоке по 1378 и не эмулировали сам процесс загрузки, а просто подставляли в память нужные данные.

Sabrewulf
16.03.2009, 11:43
и при загрузке стандартный ПЗУшный загрузчик позволял ускорить загрузку гдето процентов на 20 (вместо 5 мин около 4х) просто подкрутив какой-то болтик в мафоне
Ну это уже чит :) Такое не рассматриваем. Понятно, что у стандартного загрузчика есть некоторый допуск по скорости.


Power Load кстати еще та штучка
...
Да, но это на логическом уровне. Физически (на ленте) это могут быть такие же стандартные блоки, записанные по call 1218. А реально если считать такой блок по 1316 то в памяти будет такая каша :)


в приведённом тобой примере взломанный alkatraz и соответственно переделанный блок данных который спокойно копируется утилитами типа TF-COPY.
Да, он копируется TF-COPY, но он ни разу не взломаный. Это был оригинальный TZX взятый из http://www.worldofspectrum.org/infoseekid.cgi?id=0000683 просто я его сконвертил в TAP.


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

goodboy
16.03.2009, 12:29
Да, он копируется TF-COPY, но он ни разу не взломаный.

ещё как взломанный. посмотри версию от KIXX - это и есть оригинал. не стоит верить всему написанному на WoS.

Sabrewulf
16.03.2009, 13:02
ещё как взломанный. посмотри версию от KIXX - это и есть оригинал. не стоит верить всему написанному на WoS.

Не надо говорить ерунду. Это и есть оригинальное издание. Kixx уже потом переиздал игру, добавив нестандартную скорость загрузки. Kixx (http://www.worldofspectrum.org/infoseekpub.cgi?regexp=^Kixx$&loadpics=1), как можно видеть, самостоятельно почти ничего не издавал. 95% это переиздания (re-release). А утверждать, что издатель что-то там взламывал - это уже вообще ни в какие рамки не вписывается.

Я вообще не пойму, что ты пытаешься доказать? Что в TAP не может быть того, что читается не по 1316? Ну не так это! И вложение выше это как раз подтверждает! Даже будь игра 20 раз взломана:
1. Алькатраз присутствует - факт
2. Игра грузится не по 1316 - тоже факт
3. Игра грузится из формата TAP - и это факт
Точка.

jerri
16.03.2009, 14:34
Ну это уже чит :) Такое не рассматриваем. Понятно, что у стандартного загрузчика есть некоторый допуск по скорости.


ну да это делалось с учетом того что магнитная лента в разных условиях ведет себя по разному :) +- по скоростям



Да, но это на логическом уровне. Физически (на ленте) это могут быть такие же стандартные блоки, записанные по call 1218. А реально если считать такой блок по 1316 то в памяти будет такая каша :)


с учетом длины блока - он у тебя в память не лезет :)
а 128 машин тогда не было
кроме того даже ТФ копи - который слегка ужимает данные - не всегда может их ужать

насчет записаных по 1218 - не знаю :) те алькатразы которые я смотрел
(kayleth, Laser Tag, etc)
имели именно нестандартную скорость
за счет чего картинка загружалась намного быстрее:v2_conf2:

goodboy
16.03.2009, 19:48
1. Алькатраз присутствует - факт
2. Игра грузится не по 1316 - тоже факт
3. Игра грузится из формата TAP - и это факт

1 из чего это следует ?
2 согласен
3 у меня на эмуле CBspeccy не грузится и на ZXam тоже.

Sabrewulf
17.03.2009, 06:56
1 из чего это следует ?
2 согласен
3 у меня на эмуле CBspeccy не грузится и на ZXam тоже.

1. хотя бы из того, что картинка грузится типичным для алькатраса способом, который НЯЗ только ему и присущ
2. отлично, теперь пора самому себе признаться, что слова "если игра использует свой загрузчик то это одназначно TZX" полная чушь
3. это проблемы исключительно этих эмуляторов, которые плохо поддерживают загрузку с ленты. Удивляюсь, это ж надо было найти какие-то древние эмули 90-ых годов, да ещё и под Амигу, чтобы предоставить как довод:mad: Они и tzx бы не загрузили если бы поддерживали его (НЯЗ они даже tzx не поддерживают)

transman
17.03.2009, 23:05
TAP формат не предусматривает использование только ПЗУшного loadera. Он ограничен только стандартной скоростью. Если нестандартный загрузчик использует стандартную скорость, то оно может без проблем хранится в TAP.
хотя и тут есть куча ограничений - нельзя ставить временные задержки между блоками и прочуюю ерунду, которую любили пихать в загрузчики.

jerri
18.03.2009, 11:38
Просто тапы обычно грузят перехватывая 1378
а тзх посложнее

Sabrewulf
18.03.2009, 12:19
Просто тапы обычно грузят перехватывая 1378
а тзх посложнее
В подавляющем большинстве случаев в tzx данные хранятся аналогично tap'у, так что сложностей никаких не возникает. Даже turbo блок от стандартного отличается только нестандартными параметрами типа "Zero Pulse" "Pilot Pulse" и др., а сами данные хранятся так же как в tap. Сложнее когда грузят не по процедуре из ROM, но тогда и tap быстро грузить сложнее, как и tzx.

Sabrewulf
23.03.2009, 17:35
Не совсем по теме, но тоже касается загрузчика...

Сел ради интереса изучил защищённый бейсик-загрузчик Knight Lore. В нём использован очень оригинальный подход. После загрузки отключается BREAK, загрузка по MERGE естественно виснет. В тексте бейсик части нет ни одного LOAD (хотя он тут бесполезен, т.к. загрузка на нестандартной скорости) и даже USR (для запуска кода). Пару часов потратил пока понял как оно всё-таки запускается. А сделали действительно хитро, тем более для 1984 года:) Кому интересно - покопайтесь. Хинт: т.к. MERGE не работает остановить программу можно просто нажав BREAK пока звучит мелодия типичная для многих загрузчиков Ultimate. Этой мелодией разработчики "оставили" для вломщиков окно в полсекунды пока программу можно прервать.;)

Если интересно, но понять не получилось - я расскажу как оно всё-таки работает:)

goodboy
23.03.2009, 18:42
ради интереса изучил защищённый бейсик-загрузчик Knight Lore

ты бы приложил версию игры о которой идёт речь, а то вариантов много. хотя скорее всего речь идёт о подмене переменной в которой содержится адрес подпрограммы обработки ошибок в бейсик строке.

Sabrewulf
23.03.2009, 19:53
ты бы приложил версию игры о которой идёт речь, а то вариантов много. хотя скорее всего речь идёт о подмене переменной в которой содержится адрес подпрограммы обработки ошибок в бейсик строке.

Версия, естественно, оригинальная:) В общем запуск именно к подмене ERR SP и сводится, хотя это не единственный "фокус". Самое интересное, что сам ассемблерный код зашифровали, что он на себя не похож - масса недокументированных инструкций с половинками и никаких переходов наружу:

DI
DEC IYH
LD A,IYH
XOR IYL
LD IYH,F3
LD IYL,A6
DEC SP
DEC SP
LD BC,FE54
EX (SP),IY ; вот он закумуфлированный метод перехода на пока ещё несформированный загрузчик
LD HL,F230
ADD IY,BC
LD BC,01AC
LD E,IYL
LD D,IYH
EX DE,HL
Loop: XOR (HL) ; раскодирование
LD (DE),A ; и построение загрузчика
LD A,(HL)
INC HL
INC DE
DEC BC
LD IYL,A
LD A,B
OR C
LD A,IYL
JR NZ,Loop
RET ; запуск сфорированного загрузчика

Ну а сам загрузчик уже человеческий и интереса не представляет :)

goodboy
23.03.2009, 20:33
остаётся добавить что частенько первым декодируемым числом является смещение для команд типа JR NZ,xxxx в конце `ксорки`

Sabrewulf
06.04.2009, 04:46
Просмотрел ещё один бейсик-загрузчик. Игра Super Pipeline II. Так там в области переменных такой текст: "SPEEDLOCK Protection System  DJL Software & D. Aubrey Jones 1984 - Tel:0793 724317 * Government Health Warning - Attempting to crack SPEEDLOCK can damage your sanity!" :)

Министерство Образования Предупреждает - Попытка взломать СПИДЛОК может повредить вашу психику :v2_clap2:

Добавлено через 17 минут
А ещё главный блок длиной почти в 48 килобайт (любили так раньше от копирования защищать), так там в конце здоровенный кусок ассемблерного кода прямо в ASCII :) Потёрли бы уже, раз так хочется защитится ;)

rasmer
08.04.2009, 19:27
собсно сабж...

Sabrewulf
08.04.2009, 21:02
rasmer, спасибо. Оригинально. Я таких загрузчиков не видел ещё. Жаль лишь на оригинальных машинах не работает. Зато на наших клонах типа Пентагона/Скорпиона на ура идёт. Причём в 48К режиме полосы бегут в квадратике, а в 128К - на весь экран. Тоже удивила эта фича. Видимо, аппаратная особенность 128-ых машин. Я с ней не знаком, т.к. у самого испокон веков 48 машинка :)

В самой Бейсик части всего одна строчка:
1 RANDOMIZE USR VAL "23769" и сразу код, даже без каких-либо двоеточий. Это и понятно. Ничего другого в таком загрузчике просто быть не может :) Да и если убрать VAL с кавычками, такой загрузчик уже бы не работал :) Особенно ценно то, что такие чудеса очень хорошо ложаться в формат tap - никаких пауз, всё в реальном времени. Ещё раз спасибо, пойду в код загляну:v2_clap2:

rasmer
08.04.2009, 22:05
кстати - в тапке один МОНОБЛОКОВЫЙ бейсик файл
мопед не мой - робуса...

Sabrewulf
08.04.2009, 23:24
кстати - в тапке один МОНОБЛОКОВЫЙ бейсик файл
Так в том то и прелесть, хотя реально Бейсиковский файл всего 274 (!) байта (включая байт заголовка/данных и байт чётности). После загрузки Бейсика фактически идёт загрузка дальше без пилот-тона и других пауз, т.е. физически на ленте действительно только один сплошной файл данных.

psb
09.04.2009, 12:38
Жаль лишь на оригинальных машинах не работает.
а почему на оригинальном спеке не идет?

Robus
09.04.2009, 14:55
Так ... Сразу хочу сказать !!! Что нет никаких проблем с ORIGINAL Speccy !!! Я лично проверял на двух разных моделях ORIGINAL Speccy, и всё работает на ура !!! У меня два ORIGINAL Speccy:
1 Spectrum 48k, английская сборка.
2 Spectrum 128k +3, польская сборка.
Я наоборот в коде специально сделал поддержку всяких левых пентагонов, что бы работало !!! То, что код лежит в тормозящей памяти так же учтено !!! Все задержки подогнаны и не привышают стандартов !!! Загрузчик чувствителен к ошибкам данных, так же как и стандартный бейсик. Тут я не делал особую защиту. Для чистоты эксперемента я записал на кассету всю игру и проверил загрузку !!! Вплоть до того, что руками притормаживал кассету. Всё загрузилось как положенно !!! Загрузчику так же всё равно какова полярность 0/1, синхронизация делается автоматом по старту самого лоадера !!! Так же проверен теневой экран на реальном спекки !!! Срабатывание которого происходит после каждого отрисованного ULA'ой папера. Не знаю, почему зашёл разговор за нераьотоспособность под ORIGINAL Speccy ???

Добавлено через 7 минут

274 (!) байта (включая байт заголовка/данных и байт чётности)
Хочу поправить, 273 байта !!! И к сожалению 273 лишь потому что нужно было поддержать пентагон !!! Реально, можно меньше !!!

Я понимаю, что 1 байт не важен, но такова натура, сражаться за каждый бит !!!

Добавлено через 27 минут
Кстати ... Можно спокойно сделать так, что бы параллельно игралась музыка на AY !!! Только это не будет слушаться, поскольку писк(загрузка) будет мешать !!!

Sabrewulf
09.04.2009, 17:42
Так ... Сразу хочу сказать !!! Что нет никаких проблем с ORIGINAL Speccy !!! Я лично проверял на двух разных моделях ORIGINAL Speccy, и всё работает на ура !!!
Хм, интересно. Мне остаётся только извиниться за дезинформацию.


Хочу поправить, 273 байта !!!
Разве? В заголовке указано 272 байта. Если добавить 2 служебных получится как раз 274 :)


Я понимаю, что 1 байт не важен, но такова натура, сражаться за каждый бит !!!Сам такой был когда кодил (правда это было уже на PC и под DOS) :v2_clapp:

Robus
09.04.2009, 18:56
В заголовке указано 272 байта. Если добавить 2 служебных получится как раз 274
В загаловке 272 ... И ВАСИК загрузит 272 байта, и будет ждать молчания ... Но молчания нет, поскольку продолжаются передаваться данные ... Таким образом он считывает 273-ий байт, который является контрольной суммой всего блока ! После, ВАСИК видит что загрузка была с ошибкой и пытается проверить контрольную сумму и сравнивает её с 273-ои байтиком ... Если бы 273-ий байт был НЕверен, то мы бы увидили самую любимую и самую ненавистную фразу ВАСИКа "R-TYPE loading error". А что за "служебный байт" ??? Могу предположить, что это то-то в ТАРе ??? Наверное речь идёт о 255 !!! О коде который перед всеми стандартными блоками ВАСИКа !!!

По настоящему, 273 байта это ещё не весь лоадер !!! Это только основа его ... Далее стирается экран и ловится кодовые биты с заголовком. Как только происходит захват(восстановление несущей), идёт загрузка всех управляющих функций. Вообще-то, я хотел сделать депакер, но не успел ... Нет времени !!! Уродская работа всё забирает !!!

А вообще-то ТАР - гадость !!! Он поддерживает стандарт !!! А стандарт совершенно глупый !!! ПЗУ(1366) считывает 0 и 1, и меряет их длтельность и в зависимости от этого делает вывод был бит 0 или 1 !!! Но на каждый бит идёт двойная проверка !!! Всё что даёт в данном случае это защиту от ошибок а не восстановление ошибки. И можно было бы прекрасно обойтись просто одним измерением между 0 и 1 !!! В итоге получается скорость минимум в два раза больше !!! Не говоря уже о других примочках, которые можно было бы использовать !!! Атари мне в этом плане всегда нравился !!! Там столько было разновидностей загрузчиков, что в итоге эмуляторщикам пришлось честно мерять скважность между 0 и 1 и делать образы.

По

Sabrewulf
09.04.2009, 20:27
В загаловке 272 ... И ВАСИК загрузит 272 байта, и будет ждать молчания ... Но молчания нет, поскольку продолжаются передаваться данные ... Таким образом он считывает 273-ий байт, который является контрольной суммой всего блока
Да, но перед 272 байтами идёт ещё один байт, который как раз и указывает загрузчику из ПЗУ, что это блок с кодом, а не заголовок. Далее, 274-ый байт чётности - без него мы имели бы R - Tape loading error.


А что за "служебный байт" ??? Могу предположить, что это то-то в ТАРе ??? Наверное речь идёт о 255 !!! О коде который перед всеми стандартными блоками ВАСИКа !!!
Он самый, только он идёт не только в ТАПе, а и на ленте. А идёт этот байт не только перед стандартными блоками Васика, а перед любым блоком не являющемся заголовком.


По настоящему, 273 байта это ещё не весь лоадер !!! Это только основа его ... Далее стирается экран и ловится кодовые биты с заголовком.
Это понятно - здорово сделано!:v2_thumb:


И можно было бы прекрасно обойтись просто одним измерением между 0 и 1 !!!
Да, я сам об этом думал, и, если бы писал свой загрузчик то так бы и поступил - при стандартных таймингах скорость в 2 раза выше, а можно ж ведь ещё ускорить :)

psb
09.04.2009, 23:05
Робус, респект! :)


И можно было бы прекрасно обойтись просто одним измерением между 0 и 1 !!!
думаю, это сделано, чтоб в сигнале не было постоянной составляющей. иначе хз как бы повел себя мафон.

Robus
09.04.2009, 23:42
Далее, 274-ый байт чётности - без него мы имели бы
Не чётности, а именно контрольная сумма !!! Если бы в заголовке было бы 272, и при этом сам блок был бы 273 байта, то есть 1х(255)+272х(n) байт, то небыло бы никаких ошибок !!! Васик принял бы 272 байта данных и распознал бы их как тело васик программы. Но за счёт того, что передача данных не остановилась, васик вынужден убедиться, что переданные данные верны !!! Для этого передаётся последний 274-ый байт контрольной суммы !!! Это очень важно !!! Поскольку это гипер редкость !!! Я вообще удивлён, что васик такое поддерживает !!!
Вообще, когда я начал писать лоадер, я в первую очередь проверил, а запускается ли прога, если в заголовке указать N-байт, но в реальности передать больше !!! И в итоге я с первого раза написал что-то, сигнализирующее мне, что таки васик запустил мой код. И я не думая об этом супер байте контроьльной суммы, вижу, что всё запустилось и всё работает !!! Хотя в реальности мне просто повезло !!! 1 из 256 случаев, когда мой тестовый код совпал с контрольной суммой и составлял значение "0" ... Чистая визуха ... Уже дальше, методом эксперементов я вычислил, что при не соответствии длины нужна контрольная сумма !!! Так я и пришёл к тому, что можно оборвать на ходу загрузку, запустить лоадер и синхронизироваться снова !!!



перед любым блоком не являющемся заголовком
Просто перед любым блоком. не имея значения данные это или заголовок !!! Напрмер данные для LET'ов, имеет кодж 254 !!! То есть можно сделать SAVE "BLABLABLA" DATA ... И срхранятся все значения LET'ов !!! Ну типа А=ХХХ, В=YYY !!! Но вообще-то любой блок имеет этот код !!! Есть много загрузчиков, которые используют для распознания уровня этот байт !!! Например ACADEMY(TAU-CETI), первый уровень 128, второй 129 и т.д.


то так бы и поступил
ОООоооочень хотел поступить по-своему !!! Но к сожалению был стандарт ТАР и нет других направлений !!! На эту тему идеально сказано:

иначе хз как бы повел себя мафон
Думаю. что и вправде не известно как себя повела бы запись на мафоне !!! Но с другой стороны мафон такое же тупое устройство, и оно сохраняет значения 0 или 1(макс или мин) !!! Но самое верное - проверить ... Вообще очень интересный вопрос ... Если вс

Добавлено через 7 минут

Далее, 274-ый байт чётности - без него мы имели бы
Не чётности, а именно контрольная сумма !!! Если бы в заголовке было бы 272, и при этом сам блок был бы 273 байта, то есть 1х(255)+272х(n) байт, то небыло бы никаких ошибок !!! Васик принял бы 272 байта данных и распознал бы их как тело васик программы. Но за счёт того, что передача данных не остановилась, васик вынужден убедиться, что переданные данные верны !!! Для этого передаётся последний 274-ый байт контрольной суммы !!! Это очень важно !!! Поскольку это гипер редкость !!! Я вообще удивлён, что васик такое поддерживает !!!
Вообще, когда я начал писать лоадер, я в первую очередь проверил, а запускается ли прога, если в заголовке указать N-байт, но в реальности передать больше !!! И в итоге я с первого раза написал что-то, сигнализирующее мне, что таки васик запустил мой код. И я не думая об этом супер байте контроьльной суммы, вижу, что всё запустилось и всё работает !!! Хотя в реальности мне просто повезло !!! 1 из 256 случаев, когда мой тестовый код совпал с контрольной суммой и составлял значение "0" ... Чистая визуха ... Уже дальше, методом эксперементов я вычислил, что при не соответствии длиных нужна контрольная сумма !!! Так я и пришёл к тому, что можно оборвать на ходу загрузку, запустить лоадер и синхронизироваться снова !!!



перед любым блоком не являющемся заголовком
Просто перед любым блоком, не имея значения данные это или заголовок !!! Напрмер данные для LET'ов, имеет код 254 !!! То есть можно сделать SAVE "BLABLABLA" DATA ... И срхранятся все значения LET'ов !!! Ну типа А=ХХХ, В=YYY !!! Но вообще-то любой блок имеет этот код !!! Есть много загрузчиков, которые используют для распознания уровня(игры) этот байт !!! Например ACADEMY(TAU-CETI), первый уровень 128, второй 129 и т.д.


то так бы и поступил
ОООоооочень хотел поступить по-своему !!! Но к сожалению был стандарт ТАР и нет других направлений !!! На эту тему идеально сказано:

иначе хз как бы повел себя мафон
Думаю. что и вправде не известно как себя повела бы запись на мафоне !!! Но с другой стороны мафон такое же тупое устройство, и оно сохраняет значения 0 или 1(макс или мин) !!! Но самое верное - проверить ... Вообще очень интересный вопрос ... Если мафон сохраняет в точностит с действием OUT'ов, однозначно, стандартный SAVE не рационален !!!

psb
10.04.2009, 11:54
Если мафон сохраняет в точностит с действием OUT'ов,
в общем случае мафон не может сохранять 0 и 1 по той простой причине, что постоянка фильтруется. при определенном наборе данных запись испортится... вроде, даже в езернете применен точно такой же метод (в плане уничтожения постоянной составляющей).

Sabrewulf
19.04.2009, 01:07
http://www.youtube.com/watch?v=rByIgi65xZk

Sabrewulf
20.04.2009, 05:00
Robus,

Не чётности, а именно контрольная сумма
Если быть занудой, то именно чётности, т.к. этот байт равен XORу всех байтов в блоке, включая флаговый байт.


Если бы в заголовке было бы 272, и при этом сам блок был бы 273 байта, то есть 1х(255)+272х(n) байт, то небыло бы никаких ошибок !!!
Да нет же, без контрольной суммы мы имели бы ошибку R - Tape loading error


Но за счёт того, что передача данных не остановилась, васик вынужден убедиться, что переданные данные верны !!!
Васик загрузил те данные которые дожден был (флаг+данные+CRC) и ему пофиг остановилась загрузка или нет. Контрольная сумма проверяется, на основании чего делается вывод, что загрузка прошла успешно.


Для этого передаётся последний 274-ый байт контрольной суммы !!! Это очень важно !!! Поскольку это гипер редкость !!! Я вообще удивлён, что васик такое поддерживает !!!
Именно о нём и речь.


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

BYTEMAN
22.04.2009, 09:42
http://www.youtube.com/watch?v=rByIgi65xZk

На реале из динамика спека музыка не идёт...

Sabrewulf
22.08.2009, 10:35
Натолкнулся на небезынтересный топик, посвящённый методам защит от копирования. Жаль на английском. Перевести бы...

http://invisionfree.com/forums/worldofstuart/ar/t594.htm

Vadim
24.11.2009, 06:24
Вот дема с нестандартным загрузчиком. взял я ее с диска "эмуляторы", который попал мне в 1998г, тогдашние эмули не очень понимали TZX и я енту дему записывал на кассету и смотрел на реале. Через несколько лет забыл напрочь как она называется.Потом долго искал и вот, о чудо (!), вчера разбирая в который раз завалы нашёл её. У меня есть сборник софта с wos на данный момент, а та коллекция с диска представляет собой тоже архив взятый с wos, но в 1997г. В теперешнем архиве она есть только в виде .z80, т.е. все эффекты загрузки потеряны. Не понимаю я wos - как же так?

Sabrewulf
24.11.2009, 10:46
Vadim, проскакивала где-то на форуме эта дема. Самое интересное - несмотря на "хитрый" загрузчик загрузка физически вполне стандартна и тзх можно смело конвертить в тап ничего при этом не потеряв!

Меня вот что волнует - а точно что 10 лет назад на восе лежал тапок? Вроде за ними не замечал такой ерунды. Если да, то становится очень печально :( Может всё-таки он не с воса?

goodboy
24.11.2009, 11:06
раньше на WoSe было полно игр с надписью cracked by, позже начали менять на фирменные tzx`ы.

Vadim
24.11.2009, 11:42
несмотря на "хитрый" загрузчик загрузка физически вполне стандартна

Я считаю нестандартной загрузкой не исключительно такую, когда применяется другая скорость или изменены пилоттоны. Т.е. если физически блоки загрузятся в TF-Copy или Turbocomp - это не значит, что всё в загрузчике стандартно имхо. Загрузка со счетчиком, заставки знакоместами и прочее по-моему мнению тоже нестандартна.

Кстати, уже вроде бы писал, что я как-то видел демку Мираж-2, там грузилось очень интересно. Картинка и все остальное было одним блоком на ленте, но грузилось порциями. Сначала картинка в 40000. Потом не прерывая загрузки грузились коды с 23296 но несколько измененным загрузчиком, т.е. вызов идет не в начало загрузчика который ждет пилоттон, а далее. Так вот коды грузятся и в этот момент идет переброска картинки в экран. По несколько байт между битами. Я опытным путем обнаружил, что не более 11 байт за раз можно перебросить. Ставим больше - лоадинг еррор. Потом картинка перебрасывается на глаз - почти мгновенно и грузятся коды далее уже опять просто без переброски. Несмотря на то, что блок был един, грузился он кусками, с разными значениями XOR. Вот так.... Никак не могу найти ту демку. Загрузчик я тогда разломал и применил в своей программке, добавив там ещё эффектов в виде убывающего заполнителя. Програмка моя тоже где-то на кассетах затерялась:(



Если да, то становится очень печально Может всё-таки он не с воса?

Думаю с wos'а. Вся коллекция оттуда. Я сейчас сортирую, убираю эту коллекцию оставляя wos. И вот такие сюрпризы. Часто даты файлов совпадают, но год на единицу отличается.

SoftLight
25.11.2009, 10:30
а Street Hawk от Николая Родинова 91 года считается нестандартной? Там где счетчик + имитация загрузка картинки по четвертям экрана + звук загрузки какой то жестокий?

Vadim
25.11.2009, 12:50
а Street Hawk от Николая Родинова 91 года считается нестандартной

именно этот релиз не видел, но видел от Родионова Slapfight - там реальная загрузка по четвертям+звуковой и граф. обработчик ошибки загрузки. Эффектно. Считаю нестандартным. Стандарт это использование процедуры ПЗУ, даже с измененным цветом полос (запуск не с 1366 а чуть далее) и отключенным опросом space.

А вот, кстати, игра Locomotion - там действительно имитация загрузки с ленты при собирании как в игре "15" экрана (двигание квадратами). Полоски есть, но ленту надо остановить, пока картинка не соберется.

SoftLight
25.11.2009, 12:58
именно этот релиз не видел...

приду домой выложу здесь Steet Hawk. А давайте тогда тут соберем такие нестандартные ленточные релизы ну или будем ссылку давать где можно скачать?! А то в смежной теме про Билли все грозились выложить все его релизы а в итоге как то далеко не все собрали.

Vadim
25.11.2009, 14:21
Можно сделать в виде линков на архив wos. Т.е. лежат локально коллекция, а способов группировки для просмотра несколько. По фирмам, по авторам, по жанрам или вот по нестандартным загрузчикам. Я просто некоторые по памяти помню.

jerri
25.11.2009, 15:07
именно этот релиз не видел, но видел от Родионова Slapfight - там реальная загрузка по четвертям+звуковой и граф. обработчик ошибки загрузки. Эффектно. Считаю нестандартным. Стандарт это использование процедуры ПЗУ, даже с измененным цветом полос (запуск не с 1366 а чуть далее) и отключенным опросом space.

А вот, кстати, игра Locomotion - там действительно имитация загрузки с ленты при собирании как в игре "15" экрана (двигание квадратами). Полоски есть, но ленту надо остановить, пока картинка не соберется.

а в Techician Ted человечки бегают по экрану - очень стильно

^m00h^
25.11.2009, 15:19
Такой Slap Fight от Родионова у кого-нить осталась на кассетах ?

ps У меня собрана куча кассетных версий, но все разбросано по dvd дискам с бекапами, надо собирать.

Sabrewulf
25.11.2009, 18:53
Я считаю нестандартной загрузкой не исключительно такую, когда применяется другая скорость или изменены пилоттоны.
Это так. Но я имел в виду вот что:

тогдашние эмули не очень понимали TZX
ТЗХ можно было спокойно сконвертить в стандартный ТАП, а этот формат даже в то время понимали практически все эмули.

SoftLight
25.11.2009, 20:53
Обещанный Street Hawk от Николоса :)

upd: справедливости ради: в следующем сообщении читата Sabrewulf а не моя :)

Vadim
26.11.2009, 10:54
ТЗХ можно было спокойно сконвертить в стандартный ТАП, а этот формат даже в то время понимали практически все эмули.

Конверторы у меня были и тогда. Из эмулей на тот момент был самый лучший Z80 Гентора Люнтера без поддержки TR-DOS, с поддержкой тырдоса тоже был, кто-то из наших дорабатывал, но у меня его не было, а Инфорком слишком много хотел денег. Хватит и того, что я безтырдосный у них купил. Так вот. Неважно TZX у нас или TAP (я согласен что в данном, конкретном случае между ними нет разницы, блоки то выписаны стандартным методом) - эмуль не эмулировал бит магнитофона. Он просто перехватывал процедуру ПЗУ. И многие программы, которые имели свой собственный загрузчик, даже те, которые просто делали копию при старте с ПЗУ и потом чуть чуть его модифицировали (адреса и ещё кое что) - в этом эмуле не загружались, по понятным причинам. Эмуль просто стоял и ждал данные которые не приходили. По-этому я и выписывал такие программы на кассету и потом загружал на спектруме.

goodboy
26.11.2009, 14:27
вот-вот. я тоже считаю что ТАР это загрузка ПЗУшным лоадером, а если своя процедура - TZX. и дело тут не в скорости.

Sabrewulf
26.11.2009, 16:20
эмуль не эмулировал бит магнитофона. Он просто перехватывал процедуру ПЗУ.
Само собой, если не отключить в опциях различные бустеры загрузки, то такие файлы не загрузятся, даже из ТЗХ! А Люнтеровский эмулятор отлично работал с лентой, и, действительно, на то время был лучшим! Правда жутко платным :(


я тоже считаю что ТАР это загрузка ПЗУшным лоадером, а если своя процедура - TZX. и дело тут не в скорости.
Это какой-то глупый стереотип! ТАП и ТЗХ - лишь форматы для хранения спектрумовских магнитофонных данных. ТАП, в отличие от ТЗХ, позволяет хранить лишь блоки со стандартными временными характеристиками, и совершенно не важно каким лоадером они грузятся! Для примера, ТАП может хранить блоки с неверной CRC, которые при загрузке ПЗУ-шным лодером просто высветят всем известную ошибку :)

Vadim
27.11.2009, 06:26
Само собой, если не отключить в опциях различные бустеры загрузки, то такие файлы не загрузятся, даже из ТЗХ!


Так-с. Берём эмуль Люнтера. Он версии 4.0 последный был, так? И пробуем грузить из tap или tzx которая имеет свой собственный загрузчик. Никаких бустеров или подобного в эмуле люнетра я не наблюдал! Если я неправ, то настройки в студию!)))

Читаем доку к эмулю: "-Полная поддержка загрузки с ленты. Загружаются как обычные, так и турбированные файлы. Загрузка может происходить через порт LPT, Soundblaster, через аналого-цифровой преобразователь или через файлы оцифрованного звука - .VOC-файлы. Имитируется загрузка с ленты через .ТАР-файлы (эмулятор ленты). Это происходит путем перехвата обращений к процедурам ввода/вывода в ПЗУ Спектрума."

Sabrewulf
27.11.2009, 08:49
Vadim, под рукой нету этого эмулятора - посмотреть не могу. Может что-то и "приврал" по короткой памяти. В наше время есть масса современных эмуляторов, возвращаться на 5-10 лет назад уже неохота:v2_rolley Но из описания ясно, что Люнтеровский эмулятор бустит загрузку "путем перехвата обращений к процедурам ввода/вывода в ПЗУ", но в то же время поддерживает загрузку турбированных файлов! Опиция отключения бустера в нём просто обязана быть! Не может же память так нагло врать:)

Vadim
27.11.2009, 11:26
Полная поддержка загрузки с ленты. Загружаются как обычные, так и турбированные файлы.

Это означает всего лишь, что он читает данные с физического источника звука (ака магнитофона). Обычные и турбо. Турбо если ключ задали, задержки вдвое уменьшит и все как в ПЗУ 1990г. И русским по белому указано что тапки он понимает искл. через перехват ПЗУ. Эмуль есть на вирт.ТРДОС. Я оттуда и скачал утром, т.к. под рукой не было. Эмуль _НЕ_ поддерживал полноценно эмуляцию загрузки из образов ленты. Для полноценной поддержки надо считывать данные из файла, и подсовывать в эмуль в порт FE в бит магнитофона верные данные во времени. т.е. так же как бы это было при воспроизведении кассеты. Эмулятор Z80 это _не_ поддерживал. Всего лишь перехватывал вызов в области 1366-..... (забыл где там процедура заканчивается) и читал файл с диска, подсовывал в эмуль, в ОЗУ эмулируемого спектрума, что типа все загрузилось...

>Обычные и турбо
Подозреваю даже, что это наши, переводя фирменную инструкцию так перевели слово означающее фирменные загрузчики, многие из которых были как бы "турбо", т.е. скорость загрузки выше. Реально эмуль просто может опрашивать LPT порт или линейный вход звуковухи. На LPT вешалась схема компаратора, на которую подавался звуковой выход магнитофона.