Black Crow
#02
01 ноября 1998 |
|
Программистам - Заначка: как делать догрузку уровней в ТR-DОS.
МЕТОД ЗАГРУЗКИ УРОВНЕЙ ПРИ АДАПТАЦИИ ИГР К 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"
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября