Power #05
27 октября 1996

Программирование - как в игровых программах делать запись рекордов,статусов на диск.

<b>Программирование</b> - как в игровых программах делать запись рекордов,статусов на диск.
╒══════════════════════════════════════════════════════════════╕
│                 СОВЕТЫ НАЧИНАЮЩЕМУ ХАККЕРУ                   │
╘══════════════════════════════════════════════════════════════╛

(C) T.A.W./JUPITER 77

   Привет юные хаккеры !!! Это снова я T.A.W. и на этот раз я
расскажу вам (на живом примере) как в игровых программах делать
запись рекордов,статусов (но только никогда не делайте таким об-
разом отгрузку состояния в играх жанра ADVENTURE) на диск.
   В качестве примера возьмем игру ACE сделанную фирмой CASCADE
GAMES в 1986 году.
   В ней процедура отгрузки рекордов находится с адресса 35501,
а загрузки с адреса 30963. Длина выгружаемого блока 160 байт.

   Ну а теперь я привожу ассемблерный текст новых процедур save/
load работающих без системных переменных.
   Под меткой DRIVER будет сам драйвер работы с диском который и
можно использовать для любых целей.

        ORG 65319
        LD  HL,35000
        LD  B,1   
        CALL DRIVER
        LD  IX,23296
        JP  30716
                    
DRIVER  DI
        LD DE,0
        LD IX,#2F65
        CALL DOS
L_06    PUSH BC
        LD C,D
        SRL C
DRV     LD A,0
        JR NC,L_01
        OR #2C
        JR L_02
L_01    OR #3C
L_02    LD IX,#2F4D
        CALL DOS
        POP BC
L_05    PUSH DE
        PUSH BC
        LD IX,#2F1B
        BIT O,C
        JR NZ,L_03
        LD IX,#2D73
L_03    CALL DOS
        POP BC
        POP DE
        INC H
        INC E
        BIT 4,E
        JR NZ,L_04
        DJNZ L_05
        JR EXIT
L_04    LD E,0
        INC D
        DJNZ L_06
EXIT    EI
        RET
DOS     PUSH IX
        JP #3D2F
        DEFM "THIS DISK DRIVER WRITTEN BY CHAOS A.D."

   В основном блоке игры с помощью STS поставьте по адресу SAVE
/35501/ :

   LD C,6
   JP 65319

 а по  адрессу LOAD /30963/ :

   LD C,5
   JP 65319

   По адресу (DRIVER+2) занесите переменные из 23796/97 ,а по
адресу (DRV+1) занесите переменную из 23798. Но это делается
после загрузки всей программы, которая будет иметь вид

BASIC - ???
CODES1- acec1,23296,256
CODES2- acec2,25000,40535
CODES3- record,35000,256 /выпишите из игры в STS'е/

После загрузки CODES2 выполните вышенаписанную инструкцию.

   Я надеюсь что теперь вы сами сможете свободно делать такие
вещи в программах.
   В приложение будут включены :

1) Ассемблерный текст DRIVER для ассемблера ALASM.
2) Игра NIGEL MANSEL'S GRAND PRIX (сделаную с этим драйвером).
3) Кассетная версия игры ACE 1.
   По всем вопросам обращаться в редакцию газеты POWER.
  



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

Вступление - Как и было обещано, сменилась оболочка, а значит и у газеты появилось свое лицо.

Программирование - как в игровых программах делать запись рекордов,статусов на диск.

Мысли по поводу - Программистская сказка от дяди Коли.

Разыскивабтся - игры.

Музыка - BEST POP MUSIC.

Реклама - ИЩЕМ: дилеров, для распространения журнала ZX-PLATINUM.


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

Похожие статьи:
Железяка - Чудо-сканер.
Вступление - Как и было обещано, сменилась оболочка, а значит и у газеты появилось свое лицо.
Жизьтянка - Жизненные проблемы SPY.
TOP TEN - Десятка игр по результатам продаж.
СС'99 - интервью: Digital Reality (о прошлых и будущих проектах).

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