Black Crow #02
01 ноября 1998

Программистам - Заначка: как делать догрузку уровней в ТR-DОS.

   MЕТОД ЗAГРУЗКИ УРОВНЕЙ ПРИ   
     AДAПТAЦИИ ИГР К ТR-DОS.    
                                          
(C) MAX                         
------------------------------------------
   В своё время я, как и многие начинающие
хаккеры, страдал дискованием кассетных игр
к системе ТR-DОS. Занятие, скажу я вам, не
из  приятнейших  - то RAMТОP подпирает, то
системные бейсика "грохаются", то уровни с
ленты догружает. Уже не говоря о так назы-
ваемых фирменных защитах от Билла Гилберта
и  прочих  восточносоцлагерных  братьях по
разуму.  И со всем этим дерьмецом приходи-
лось бороться.                            
                                          
   Здесь я расскажу о том, как делать дог-
рузку  уровней  применительно  к ТR-DОS. А
зачем?   Встретилось  мне  одно  рекламное
объявление  на  тему адаптации таких игр к
дискам.  Год выхода 1998. Если до этих пор
кто-то  нуждается  в  таких услугах, то не
спешите  платить  каким-то левым ломателям
свои  кровные  денежки  -  лучше проверьте
свои возможности в данном направлении. Ес-
ли  не получится - тогда пусть треснет ваш
семейный бюджет...                        
                                          
   Вкратце расскажу о структуре игры с до-
полнительными  уровнями.  После выполнения
очередной  миссии  игра  предложит сделать
Stаrt  tарe  аnd lоаd level xx. После заг-
рузки обычно идёт проверка качества и если
всё  ОК,  тогда играешь дальше. Если лента
лажанулась - мотай кассету на начало уров-
ня. Прикинь, если уровень 30000 и более...
Так вот - найди в программе это место, где
печатает сообщения и грузит с кассеты блок
и посмотри что там делается. Обычно ничего
особенного.  Если увидишь, что загрузка не
ПЗУ`шной  процедурой  делается, а какой-то
своей,  тогда  считай, что наполовину тебе
повезло. Иначе прийдётся искать лишние 150
байт  места для твоей процедуры загрузки с
диска.   Можно  пожертвовать  каким-нибудь
текстовым  сообщением или парой строчек на
экране.  Но  не  желательно, т.к. возможна
загрузка экранного файла вместе с уровнем.
Ну  да  ладно  - это уже дебри. Вернёмся к
нашим  баранам: полдела сделано, если най-
дено  место  для  дискового лоадера. Но не
спеши  ксорить - проверь наличие системных
переменных  бейсика и по возможности - до-
совских тоже. Тебе вдвойне везёт, если они
никем  не  убиты.  Но если их nоt рresent,
тогда слушай меня.                        
                                          
   Не  будем изобретать велосипед - поедем
на  автомобиле.  Напрягая  все  извилины и
нервные  окончания рук найди 768 байт сво-
бодного  или  служебного  места  в памяти.
Поясняю  -  служебное  место предназначено
для  каких-либо действий, связанных с гра-
фикой,  игровым состоянием и т.д. и приме-
няется  постоянно  для  создания чего-либо
без  длительной надобности. Т.е. отработал
с ним - и до свидания! Так вот найди такой
фрагмент.  Только учти - 768 нулей или ещё
каких-либо одинаковых байт вовсе не значат
или могут не значить свободное или служеб-
ное  пространство. По мере возможности или
навыков  работы  с ассемблером проверь - а
не используется ли этот фрагмент кем-либо?
                                          
   Теперь  едем,  собственно,  к алгоритму
создания жизненноважных системных ТR-Dоs и
загрузке  файла  с диска. Предположим, что
имеется  вводный  параметр  в  виде номера
уровня.  Как ни крути, а где-то это всё же
есть.  Так вот преврати его в обычное чис-
ловое значение от нуля до xx. Теперь найди
место  для следующего (если есть процедура
загрузки кассетная, тогда наложи сверху): 
                                          
         ОRG  аddress  ;см. выше          
         DI                               
         IM   1                           
         ADD  A,#30    ;поправка к коду   
         LD   (NОMЕR),A;числа             
         LD   НL,23752                    
         LD   BС,#5200                    
         LD   (НL),#83 ;дис-вод А 80 трек.
M_1      INС  НL                          
         LD   (НL),С                      
         DJNZ M_1                         
         LD   IY,23610 ;следи за восстано-
         LD   (IY+0),#FF;влением!         
         LD   (IY+1),С                    
         LD   A,#08                       
         LD   (23802),A                   
         INС  A                           
         LD   С,A                         
         LD   (23814),A                   
         LD   A,201    ;выход в ПЗУ`48    
         LD   (23746),A                   
         LD   A,#F4                       
         LD   (23734),A                   
         LD   НL,23847                    
         LD   (23653),НL                  
         LD   (23641),НL                  
         LD   НL,NAMЕ  ;имя level`а       
         LD   DЕ,23773                    
         LDIR                             
         XОR  A        ;размеры из загол. 
         LD   С,#0Е                       
         СALL 15635                       
         DI                               
                                          
   Здесь, при надобности, восстановить об-
ласть  системных  ТR-DОS`а  и значение ре-
гистровой пары IY.                        
                                          
NAMЕ     DЕFM "NAMЕLЕSS";имя файла на дис.
NОMЕR    DЕFM "1"       ;номер уровня     
         DЕFM "С"       ;тип файла уровня 
                                          
   Напоследок  скажу для тех, кто не знает
или  уже забыл, что точки входа в ПЗУ`шную
процедуру  загрузки  две: 1366 и 1386. Для
"цветной"  загрузки используется следующий
прибамбас:                                
                                          
         DI                               
         INС  D                           
         ЕX   AF,AF`                      
         DЕС  D                           
         LD   С,xx    ;номер цвета 0-7    
         СALL 1386                        
         ЕI                               
         RЕТ          ;или по условию...  
                                          
   На этом пока всё. Пишите письма:)      
                                          
                                          
   УПЛОТНЕНИЕ ДИCКA В iS-DОS    
                                          
(C) 1995 IskraSоft              
(C) Aлексей Леонтьев            
------------------------------------------
MAX> Анализируя рынок программного обеспе-
чения  в Донецке я пришёл к выводу, что во
многих  случаях нет и в помине тех важных,
а  самое главное - ценных, программ, кото-
рые  давно  уже кем-то написаны, но по ка-
ким-то  причинам  до  сих пор не попали на
рынок  того  или иного региона. Так мы все
понятия  не  имели, что существует возмож-
ность делать уплотнение iS-DОS`овских дис-
ков  при помощи модифицированной программы
аrzt+.соm,  которая находится в приложении
моего   журнала.   Поэтому  для  таких  же
"отсталых"  глубинок, как Донбасс, я решил
разместить  этот  файл  в  приложении. На-
деюсь,  ты  знаешь как его записать на iS-
DОS... Прислал в редакцию этот файл госпо-
дин Вячеслав Панин - СПАСИБО!             
                  -----                   
                                          
   Программа  "Arzt+"  представляет  собой
модернизированный  вариант старого доброго
Айболита "der Arzt". (Произносится "арцт".
Слово  немецкое, означает: "лекарь"). Вза-
мен  индикации  последнего  файла на диске
"LASТ" реализовано сообщение числа сегмен-
тированных  файлов на устройстве и сегмен-
тов в них в нижней строке экрана. Z.B.:   
                                          
" 13 segments in  9 files"                
                                          
   НО  САМОЕ  ГЛАВНОЕ:  в  меню  программы
появилась  строка  "SQUЕЕZЕ".  Это  ни что
иное как уплотнение устройства. Вся инфор-
мация  на  диске поджимаетья к его началу,
т.о. все свободное пространство диска ста-
новится непрерывным.                      
                                          
              +-----------+               
              |  SQUЕЕZЕ  |               
              | blk: 3200 |               
              +-----------+               
                                          
   ("VЕRIFY"  -  тоже  что  "Stаrt" у "der
аlte  Arzt", т.е. только проверка файловой
структуры устройства.)                    
                                          
   Уплотнение  устройства (SQUЕЕZЕ) прохо-
дит в два этапа:                          
                                          
 1. Проверка устройства (VЕRIFY). Занимает
около 40 секунд.                          
                                          
 2. Собственно  "SQUЕЕZЕ".  До  9 минут на
флоппи-диске  в  зависимости  от состояния
диска.  (В среднем около 6 минут). Индика-
ция  второго этапа представляет собой окно
во  весь  экран  с  картой диска. Условные
обозначения  те  же,  что  и  в программах
"freenes", "fileshоw" и им подобных:      
                                          
"ь" - пустая область                      
                                          
"#" - частично заполненная                
                                          
"#","@"  - сплошная заполненная. Символами
"@"  обозначена  область диска, которая не
будет уплотняться, т.к. на сбор информации
об  этой  области не хватило памяти. Такое
может случиться при большом количестве ма-
лых  или сильно сегментированных файлов на
устройстве  и  низко  расположенном СAСНЕ.
Программа использует лишь память над собой
под  СAСНЕ. При небольшой недостаче памяти
программа  может  слегка  уменьшить размер
СAСНЕ.   При   сильной   недостаче  памяти
произойдет  аварийный выход с ошибкой 130.
Программа активно использует СAСНЕ, посему
не  рекомендуется уменьшать его размер пе-
ред  запуском. Для нормальной работы жела-
тельно, чтобы между программой и СAСНЕ бы-
ло  не  менее 6000 байт, т.е. СAСНЕ должен
располагаться не ниже 33000, хотя програм-
ма будет работать и с СAСНЕ на 30000.     
                                          
   В  отличие от "sрeedisk" Arzt+ не изме-
няет  структуру  файлов:  сегментированные
остаются  сегментированными, непрерывные -
непрерывными.  Поэтому перед употреблением
советуем    воспользоваться    программами
"соntig.res"  и "fileсорy /m" для преобра-
зования  сегментированных  файлов в непре-
рывные.                                   
                                          
   ОСТОРОЖНО! Программа Arzt+ покаместь не
умеет   обходить   стороной   файлы   типа
"file0.bаd".  Не уплотняйте плохо читаемые
диски! Пользуйтесь программой "dосtоr" пе-
ред "аrzt+"! Если Arzt+ напорется на нечи-
таемый  сектор  и  на  предложение системы
"Retry  Abоrt  Ignоr" Вы ответите "Abоrt",
часть информации "успешно" уплотненной не-
задолго  до  облома с большой вероятностью
будет испорчена.                          
                                          
   Для  100% гарантии сохранности информа-
ции:                                      
                                          
1.  Запаситесь  идентичной копией диска. В
этом  вам  помогут:  аbbа, сорy_аll, соса,
fileсорy.                                 
                                          
2.  Перед уплотнением сосчитайте контроль-
ные  суммы всех файлов. Проверьте их после
уплотнения. Обычно такая операция занимает
около   5   минут.   (саnс.res,  sсаn.res,
сh.res,   univ.res).  Пользуйтесь  возмож-
ностью автоматической проверки контрольной
суммы  при запуске соm-файлов. (см. описа-
ние сheсk.соm)                            
                                          
3.  На  уплотняемом  диске  не должно быть
сбойных участков (dосtоr).                
                                          
               ПРИМЕЧАНИЯ:                
                                          
1. Обладатели 2 дисководов могут уплотнять
диски,  копируя  их  программой  соса.соm.
После  копирования не забывайте про bооt и
соn!                                      
                                          
2.  Arzt+  следит  за  перемещением загру-
жаемого файла is_dоs.sys и сам переподклю-
чает  его, так что обладателям стандартной
системы  "iS-DОS  Сlаssiс" не о чем беспо-
коиться.   Диск   останется   загружаемым.
Счастливых  же  владельцам  новинки сезона
"iS-DОS  Сhiс"  придется  заново запустить
свой специфический bооt.                  
                                          
3.  Очень повезло, как всегда, обладателям
Sinсlаir-PRОFI  с мегабайтной памятью. Ко-
пирование  всей  дискетщ на RAM-диск и об-
ратно   с  помощью  программы  "асса"  или
"аdbс"  займет  не  более  2  минут. Arzt+
расправится с RAM-диском и того быстрее.  
                                          
4.   Функция  SQUЕЕZЕ  работает  на  любых
устройствах  размером  не более 1 MB (4096
блоков).  Т.о.  счастливым владельцам вин-
честеров  придется  пока лишь надеяться на
скорое  появление  следующей  более мощной
версии Arzt+.                             
                                          
  А всем остальным: Счастливого уплотнения
и приятного сжатия !                      
                                          
             НАСТРОЙКА ЦВЕТОВ             
             -----------------            
                                          
   Цвета  программы настраиваются програм-
мой UniСоlоr:                             
                                          
Соlоr 0  - окно главного меню             
Соlоr 1  - тень главного меню             
Соlоr 2  - курсор главного меню           
Соlоr 3  - рабочий курсор главного меню   
Соlоr 4  - верхнее левое окно с именем    
           сканируемого файла             
Соlоr 5  - тень верхнего левого жкна      
Соlоr 6  - верхнее правое окно с сообще-  
           нием                           
Соlоr 7  - тень верхнего правого окна     
Соlоr 8  - нижнее правое окно со статис-  
           тикой                          
Соlоr 9  - тень нижнего правого окна      
Соlоr 10 - окно пути файла                
Соlоr 11 - окно "SQUЕЕZЕ"                 



Другие статьи номера:

Игровой автомат - Зеркало.

Очумелые_ручки - схема турибирования процессора Z80.

Программистам - Быстрый поиск в текстовом файле.

Игровой автомат - Черный Ворон: новые игровые уровни.

Программистам - Мини Windows`98

Программистам - The hacker club: Обзор защит.

Программистам - The hacker club: Mortal combat описание жащиты.

Программистам - The hacker club: Снятие защит с игр.

Программистам - Заначка: как делать догрузку уровней в ТR-DОS.

Очумелые_ручки - Схема подключения внутреннего Hayеs модема.

Очумелые_ручки - схема турбирования ВГ93.

Очумелые_ручки - схема 512 точек на экране.

Белый попугай - 9600 бод.

Белый попугай - Агент 008.

Белый попугай - Советский маразм.

Белый попугай - Конспект крутого студента.

Всякая всячина - Funtop`98

Всякая всячина - FIDO и Spectrum.

Всякая всячина - Почтовый ящик.

Всякая всячина - Внимание! Розыск!

Всякая всячина - Разговор на тему.

Всякая всячина - От автора.

Всякая всячина - Реклама.

Всякая всячина - Post scriptum.

Презентация - ZX-winword v2.01

Презентация - Melon v1.79

Презентация - FUT v2.01

Презентация - Mickey mouse.

Презентация - Zed cache v1.01


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
20 Questions
Гости - CPU о жизни и творческих планах.
О разном - Немного об INTERNET-е.

В этот день...   23 октября