МЕТОД ЗАГРУЗКИ УРОВНЕЙ ПРИ
АДАПТАЦИИ ИГР К TR-DOS.
(C) MAX
------------------------------------------
В своё время я, как и многие начинающие
хаккеры, страдал дискованием кассетных игр
к системе TR-DOS. Занятие, скажу я вам, не
из приятнейших - то RAMTOP подпирает, то
системные бейсика "грохаются", то уровни с
ленты догружает. Уже не говоря о так назы-
ваемых фирменных защитах от Билла Гилберта
и прочих восточносоцлагерных братьях по
разуму. И со всем этим дерьмецом приходи-
лось бороться.
Здесь я расскажу о том, как делать дог-
рузку уровней применительно к TR-DOS. А
зачем? Встретилось мне одно рекламное
объявление на тему адаптации таких игр к
дискам. Год выхода 1998. Если до этих пор
кто-то нуждается в таких услугах, то не
спешите платить каким-то левым ломателям
свои кровные денежки - лучше проверьте
свои возможности в данном направлении. Ес-
ли не получится - тогда пусть треснет ваш
семейный бюджет...
Вкратце расскажу о структуре игры с до-
полнительными уровнями. После выполнения
очередной миссии игра предложит сделать
Start таре and load level xx. После заг-
рузки обычно идёт проверка качества и если
всё ОК, тогда играешь дальше. Если лента
лажанулась - мотай кассету на начало уров-
ня. Прикинь, если уровень 30000 и более...
Так вот - найди в программе это место, где
печатает сообщения и грузит с кассеты блок
и посмотри что там делается. Обычно ничего
особенного. Если увидишь, что загрузка не
ПЗУ`шной процедурой делается, а какой-то
своей, тогда считай, что наполовину тебе
повезло. Иначе прийдётся искать лишние 150
байт места для твоей процедуры загрузки с
диска. Можно пожертвовать каким-нибудь
текстовым сообщением или парой строчек на
экране. Но не желательно, т.к. возможна
загрузка экранного файла вместе с уровнем.
Ну да ладно - это уже дебри. Вернёмся к
нашим баранам: полдела сделано, если най-
дено место для дискового лоадера. Но не
спеши ксорить - проверь наличие системных
переменных бейсика и по возможности - до-
совских тоже. Тебе вдвойне везёт, если они
никем не убиты. Но если их пот present,
тогда слушай меня.
Не будем изобретать велосипед - поедем
на автомобиле. Напрягая все извилины и
нервные окончания рук найди 768 байт сво-
бодного или служебного места в памяти.
Поясняю - служебное место предназначено
для каких-либо действий, связанных с гра-
фикой, игровым состоянием и т.д. и приме-
няется постоянно для создания чего-либо
без длительной надобности. Т.е. отработал
с ним - и до свидания! Так вот найди такой
фрагмент. Только учти - 768 нулей или ещё
каких-либо одинаковых байт вовсе не значат
или могут не значить свободное или служеб-
ное пространство. По мере возможности или
навыков работы с ассемблером проверь - а
не используется ли этот фрагмент кем-либо?
Теперь едем, собственно, к алгоритму
создания жизненноважных системных TR-Dos и
загрузке файла с диска. Предположим, что
имеется вводный параметр в виде номера
уровня. Как ни крути, а где-то это всё же
есть. Так вот преврати его в обычное чис-
ловое значение от нуля до xx. Теперь найди
место для следующего (если есть процедура
загрузки кассетная, тогда наложи сверху):
ORG address ;см. выше
DI
IM 1
ADD A,#30 ;поправка к коду
LD (NOMER),A;числа
LD HL,23752
LD ВС,#5200
LD (HL),#83 ;дис-вод А 80 трек.
M_1 INC HL
LD (HL),С
DJNZ M_1
LD IY,23610 ;следи за восстано-
LD (IY+0),#FF;влением!
LD (IY+1),С
LD A,#08
LD (23802),A
INC A
LD С,A
LD (23814),A
LD A,201 ;выход в ПЗУ`48
LD (23746),A
LD A,#F4
LD (23734),A
LD HL,23847
LD (23653),HL
LD (23641),HL
LD HL,NAME ;имя level`а
LD DE,23773
LDIR
XOR A ;размеры из загол.
LD С,#0Е
CALL 15635
DI
Здесь, при надобности, восстановить об-
ласть системных TR-DOS`а и значение ре-
гистровой пары IY.
NAME DEFM "NAMELESS";имя файла на дис.
NOMER DEFM "1" ;номер уровня
DEFM "С" ;тип файла уровня
Напоследок скажу для тех, кто не знает
или уже забыл, что точки входа в ПЗУ`шную
процедуру загрузки две: 1366 и 1386. Для
"цветной" загрузки используется следующий
прибамбас:
DI
INC D
ЕХ AF,AF`
DEC D
LD С,xx ;номер цвета 0-7
CALL 1386
EI
RET ;или по условию...
На этом пока всё. Пишите письма:)
УПЛОТНЕНИЕ ДИСКА В iS-DOS
(C) 1995 IskraSoft
(C) Алексей Леонтьев
------------------------------------------
MAX> Анализируя рынок программного обеспе-
чения в Донецке я пришёл к выводу, что во
многих случаях нет и в помине тех важных,
а самое главное - ценных, программ, кото-
рые давно уже кем-то написаны, но по ка-
ким-то причинам до сих пор не попали на
рынок того или иного региона. Так мы все
понятия не имели, что существует возмож-
ность делать уплотнение iS-DOS`овских дис-
ков при помощи модифицированной программы
arzt+.сом, которая находится в приложении
моего журнала. Поэтому для таких же
"отсталых" глубинок, как Донбасс, я решил
разместить этот файл в приложении. На-
деюсь, ты знаешь как его записать на iS-
DOS... Прислал в редакцию этот файл госпо-
дин Вячеслав Панин - СПАСИБО!
-----
Программа "Arzt+" представляет собой
модернизированный вариант старого доброго
Айболита "der Arzt". (Произносится "арцт".
Слово немецкое, означает: "лекарь"). Вза-
мен индикации последнего файла на диске
"LAST" реализовано сообщение числа сегмен-
тированных файлов на устройстве и сегмен-
тов в них в нижней строке экрана. Z.B.:
" 13 segments in 9 files"
НО САМОЕ ГЛАВНОЕ: в меню программы
появилась строка "SQUEEZE". Это ни что
иное как уплотнение устройства. Вся инфор-
мация на диске поджимаетья к его началу,
т.о. все свободное пространство диска ста-
новится непрерывным.
+-----------+
| SQUEEZE |
| blk: 3200 |
+-----------+
("VERIFY" - тоже что "Start" у "der
alte Arzt", т.е. только проверка файловой
структуры устройства.)
Уплотнение устройства (SQUEEZE) прохо-
дит в два этапа:
1. Проверка устройства (VERIFY). Занимает
около 40 секунд.
2. Собственно "SQUEEZE". До 9 минут на
флоппи-диске в зависимости от состояния
диска. (В среднем около 6 минут). Индика-
ция второго этапа представляет собой окно
во весь экран с картой диска. Условные
обозначения те же, что и в программах
"freenes", "fileshow" и им подобных:
"ь" - пустая область
"#" - частично заполненная
"#","@" - сплошная заполненная. Символами
"@" обозначена область диска, которая не
будет уплотняться, т.к. на сбор информации
об этой области не хватило памяти. Такое
может случиться при большом количестве ма-
лых или сильно сегментированных файлов на
устройстве и низко расположенном CACHE.
Программа использует лишь память над собой
под CACHE. При небольшой недостаче памяти
программа может слегка уменьшить размер
CACHE. При сильной недостаче памяти
произойдет аварийный выход с ошибкой 130.
Программа активно использует CACHE, посему
не рекомендуется уменьшать его размер пе-
ред запуском. Для нормальной работы жела-
тельно, чтобы между программой и CACHE бы-
ло не менее 6000 байт, т.е. CACHE должен
располагаться не ниже 33000, хотя програм-
ма будет работать и с CACHE на 30000.
В отличие от "speedisk" Arzt+ не изме-
няет структуру файлов: сегментированные
остаются сегментированными, непрерывные -
непрерывными. Поэтому перед употреблением
советуем воспользоваться программами
"contig.res" и "filecopy /m" для преобра-
зования сегментированных файлов в непре-
рывные.
ОСТОРОЖНО! Программа Arzt+ покаместь не
умеет обходить стороной файлы типа
"fileO.bad". Не уплотняйте плохо читаемые
диски! Пользуйтесь программой "doctor" пе-
ред "arzt+"! Если Arzt+ напорется на нечи-
таемый сектор и на предложение системы
"Retry Abort Ignor" Вы ответите "Abort",
часть информации "успешно" уплотненной не-
задолго до облома с большой вероятностью
будет испорчена.
Для 100% гарантии сохранности информа-
ции:
1. Запаситесь идентичной копией диска. В
этом вам помогут: abba, copy_all, соса,
filecopy.
2. Перед уплотнением сосчитайте контроль-
ные суммы всех файлов. Проверьте их после
уплотнения. Обычно такая операция занимает
около 5 минут. (canc.res, scan.res,
ch.res, univ.res). Пользуйтесь возмож-
ностью автоматической проверки контрольной
суммы при запуске сом-файлов. (см. описа-
ние check.сом)
3. На уплотняемом диске не должно быть
сбойных участков (doctor).
ПРИМЕЧАНИЯ:
1. Обладатели 2 дисководов могут уплотнять
диски, копируя их программой соса.сом.
После копирования не забывайте про boot и
соп!
2. Arzt+ следит за перемещением загру-
жаемого файла is_dos.sys и сам переподклю-
чает его, так что обладателям стандартной
системы "iS-DOS Classic" не о чем беспо-
коиться. Диск останется загружаемым.
Счастливых же владельцам новинки сезона
"iS-DOS Chic" придется заново запустить
свой специфический boot.
3. Очень повезло, как всегда, обладателям
Sinclair-PROFI с мегабайтной памятью. Ко-
пирование всей дискетщ на RAM-диск и об-
ратно с помощью программы "асса" или
"adbc" займет не более 2 минут. Arzt+
расправится с RAM-диском и того быстрее.
4. Функция SQUEEZE работает на любых
устройствах размером не более 1 MB (4096
блоков). Т.о. счастливым владельцам вин-
честеров придется пока лишь надеяться на
скорое появление следующей более мощной
версии Arzt+.
А всем остальным: Счастливого уплотнения
и приятного сжатия !
НАСТРОЙКА ЦВЕТОВ
-----------------
Цвета программы настраиваются програм-
мой UniColor:
Color 0 - окно главного меню
Color 1 - тень главного меню
Color 2 - курсор главного меню
Color 3 - рабочий курсор главного меню
Color 4 - верхнее левое окно с именем
сканируемого файла
Color 5 - тень верхнего левого жкна
Color 6 - верхнее правое окно с сообще-
нием
Color 7 - тень верхнего правого окна
Color 8 - нижнее правое окно со статис-
тикой
Color 9 - тень нижнего правого окна
Color 10 - окно пути файла
Color 11 - окно "SQUEEZE"
Other articles: