Обычный, пятничный, вечер... Сижу, ни кого не трогаю (с) смотрю ютюбчик, отдыхаю... Попадаю на просмотр прохождения игры Oberon 69, в процессе рассказа об игре, выясняется, что на Spectrum она была только на Испанском языке и только на кассете, была дискетная версия от Max Iwamoto, полу англифицированная... И такА меня вдруг тоска ностальгия взяла и переживание за несправедливость... Решаю, что раз никто, тогда Я! Будем а) дискетизировать, б) англифицировать, в) русифицировать.
Для начала, скачиваем все (8) разновидностей игры, для всех платформ, а это: Amiga (скорее всего не пригодится, уж очень сильно отличается, в лучшую сторону), PC DOS (очень примитивная, из неё, скорее под БК-0010 переделывать, чем под Spectrum, возможно, потом и озабочусь, но БК в железе мне сейчас не достать, да и стоят они...), Amstrad CPC (она на Английском, будет куда подглядывать), MSX (пусть будет, для коллекции) и 2 для Spectrum, кассета и переделка от Iwamoto, с бессмертием и прочими плюшками.
Дальше начинается поиск инструментов для разборки/сборки образов кассет и дисков и прочего инструментария. Для начала эмулятор Spectrum, для проверки, т.к. на живых диско-кассетах проверять будет уж слишком муторно и длительно, я старый и ленивый. Эмулятор выбрал Fuse. Далее разбираем образ кассеты, выбираем:

Первым делом, кроссим финги (fingers cross) и осматриваем Basic загрузчик на предмет сюрпризов, и они там есть, мелкие, но если не забытые воспоминания и прочитанный свежак, было бы сложно и не понятно (и таки было, но не долго). Для этого используем:

И... ура! что мы видим? Дофига нефига, так что бери, сколько надо и... сегодня о другом. Понимаю, сначала, что ни чего не понимаю, но я же на опыте? Нет, но да. Удаляемся на партию с гухлом, находим статью с похожими развлечениями, в процессе думаем, вспоминаем... в Basic можно использовать спец символы и раскрашивать текст, даже в самой программе, убираем цвета, и

Ранее, мы уже видели в ZX-Blockeditor, что образ состоит из загрузчика, и 3х data модулей, один из которых вступление, один заставка и в последнем сама игра. То есть загрузчик, вроде как, без сюрпризов (нет). Пробуем ручками ввести те же комманды (то ещё удовольствие, basic 48 весьма своеобразен) и запустить... Кино не запускается, расходимся... но нет... думаем дальше, партия в гухол, воспоминания, чтение... пункты 2 (не страшно) и 6 (чуть сложнее) - наш случай, рассматриваем внутренности загрузчика:

в более человекочитаемом виде это выглядит как-то так:
0 CLEAR 25399:\
POKE 23613,0:\
PAPER 0:\
BORDER 0:\
BRIGHT 1:\
INK 0:\
CLS :\
LOAD "pres"CODE :\ ## 36864-45458 $9000-B192
LOAD "pant"CODE 45458:\ ## 45458-52370 $B192-CC92 screen
CLS :\
RANDOMIZE USR 29151:\ ## 39571 $9A93
OVER 1:\
INK 0:\
PAPER 8:\
BRIGHT 8:\
FLASH 8:\
PRINT AT 16,0:\
LOAD "0"CODE :\ ## 25400-65024 $6338-FE00
RANDOMIZE USR 65034 ## 35074 $8902
идём в эмулятор:

смотрим вступление и, затем, заставку, отлично! Для финальной проверки:

С загрузкой разобрались на 100%, поздравляем себя, можно выпить кофе и закусить шоколадкой. Далее, быстрый трам/парам

В эмуляторе создаем новую дискету, форматируем её, сохраняем на нее Basic программу, загружаем с кассеты и сохраняем на диск файлы данных, как показанно вот здесь, а именно:
Используя эти данные, можно на основе приведенного варианта загрузчика написать специальный копировщик:
10 INK 1: PAPER 5: BORDER 5: CLEAR 25199
20 LOAD ""SCREEN$
21 RANDOMIZE USR 15619:
REM : SAVE "shaky sc"CODE 16384,6912
30 LOAD ""CODE
31 RANDOMIZE USR 15619:
REM : SAVE "shaky mn"CODE 25200,40335
40 STOP
Сохраняем образ дискеты,

Итого, но не вообще, а по этой части: с файлами разобрались, с последовательностью действий разобрались, лёгкую дисковую версию создали... переходим к стейдж2... не расходимся, кому интересно ))
и тут... мощный такой PS, пока я развлекался и писал статью... в рекоммендациях ютюбчика получаю вот это и далее, сам релиз... ччиорт... ну ладно, придётся делать с блекджеком и что там дальше
Комментарии (16)
NutsUnderline
10.08.2025 11:55как по мне автору не стоит уходить в лирику: получается не очень и читать смысл труднее. хотя идея то любопытная, хотя бы посмотреть до чего дошел прогресс от конца 198х - утилит то всяких понаделали.
Загрузчик замаскировали несколько более глубоко чем обычно. Сразу цепляет взгляд блок "pres" - он грузиться непривычно до заставки и довольно большой, - о так тут еще и вступление есть. У заставки нестандартный адрес загрузки по умолчанию, и она не пожатая никак, то есть типа грузится с черным экраном долго и скучно - это как бы намекает что тут что то не то
vitecd Автор
10.08.2025 11:55Мультик и сама заставка достаточно короткие, заставка выводится после мультика и "висит" пока грузится сама игра. Возможно, было бы логично... и наверно так сделаю )) загрузить прямо в экран, загрузить мультик, спрятать экран, показать мультик, снова показать экран, грузить игру. как вариант, чтобы было чуть менее скушно.
Возможно, не грузили в экран, т.к. при загрузке через бейсик, на экран выводится имя загружаемого файла, попортит картинку. Это надо будет обдумать, если грузить в экран.
yappari
10.08.2025 11:55Возможно, не грузили в экран, т.к. при загрузке через бейсик, на экран выводится имя загружаемого файла, попортит картинку. Это надо будет обдумать, если грузить в экран.
Парой поков можно отредиректить вывод на принтер (главное, чтобы он не был физически подключен), тогда название выводиться не будет. Значений, к сожалению, не помню. Но загрузчики с такой фичей не были редкостью.
NutsUnderline
10.08.2025 11:55там как минимум print at переводит курсор туда где может быть пусто
vitecd Автор
10.08.2025 11:55на чужих скриншотах видно текст в середине картинки, не совсем получилось
NeriaLab
10.08.2025 11:55Не вчитывался и сразу бахнул за статью + и только из-за того, что часть детских лет было посвящено Спектруму
kmatveev
10.08.2025 11:55Статью плюсанул.
Для тех, кто не понял, что сделал автор. Игры для ZX Spectrum распространялись вначале на кассетах, потом, с ростом популярности дисководов, которые нужно было покупать отдельно, игры стали распространяться и на дискетах. Редкие ранние игры писались на BASIC, но их производительность не очень, поэтому качественные игры делались на ассемблере для процессора Z80. Игра загружается так: вводится команда LOAD "", включается с нужного места магнитофон, и ждём 5 минут. При этом вначале загружается и автоматически выполняется короткая BASIC-программа загрузчик, которая уже загружает последующие блоки сырых байт в нужные места, и в конце стартует выполнение машинного кода. Поэтому анализ программ начинают именно с анализа их BASIC-загрузчика. Защиту программ от анализа, взлома и копирования также начинали с защиты загрузчика, для чего имелся ряд приёмов. Например, BASIC хранил числовые константы в теле программы два раза: сначала шло текстовое представление для листинга, потом - внутреннее представление для математической подсистемы BASIC. И аккуратными манипуляциями с байтами памяти можно было сделать так, что эти два представления отличаются друг от друга, смущая исследователя, который верил тому, что видел в текстовом представлении. Именно это и происходит в загрузчике, который подвернулся автору, и автор вернул загрузчику простой и ясный вид.
vitecd Автор
10.08.2025 11:55Спасибо за толкование )
И да, упростил загрузку для потрошения, в дальнейшем, наверное, будет всё обратно спрятано. Ибо люди пишут, что моветон что-то ломнуть и оставить на тарелочке, нужно обратно завернуть, порядок такой ))
kmatveev
10.08.2025 11:55Не слушайте их, оставьте простой и ясный вариант. А ещё можно исходники на github.
NutsUnderline
10.08.2025 11:55А ещё можно исходники на github
это вообще то варез. даже не абндонваре. и без исходников. за некоторое старье копирайтеры до сих пор предъявляют.
вот напишет автор СВОЮ игру - может выкладывать, вроде бы сейчас так с новьем делают
NutsUnderline
10.08.2025 11:55а кто пишет то :) наверное Bill Gilbert - он(и) как раз таким баловался на кассетах.
в дисковых версиях как то больше все упаковывали, в монолит и интрили - и грузится быстрее, и копировать удобно, да а внутрь лезть уже как бы и не надо, если только еще на какую хитрую не-TRDOS переделывать. Я вообще видел пару шифровальщиков каталога TRDOS (как файлы скопировать нельзя) но даже ни разу не видел чтобы его применяли на практике. Защиты ставили только на новый свеженаписанный софт
ZMile
Старый задрот. Я Вас люблю.
Jec13
когда примерно также шакалил.