ZX-Ревю Украина 1996 №1 1995 г.

Профессиональный подход - адаптация к системе TR-DOS игр с отгрузкой состояния.


Адаптация в систеие TR-DOS игр с отгрузкой состояния

(с) Клииус Владимир, г.Львов,199*

тттгтттттттттттттттгтттттттттттгттт

Предисловие.

Написать эту стать* иеия побудила стать* А.Десятничеико "Адаптация к систеие ТВ-DOS програии с

подгружаемыми уровнями'' ("IX Ревю

Украина" NN3.4 за этот год), а ииеиио та часть, • которой описана адаптация игр с отгрузкой состояния. Мне очень ие понравилось то, что гм. Десятничеико обдели* ной любимые адвентюры, оставив ии практически один отгрузочный файл. Теоретически все выглядит просто: на диске иожет быть сколько угодно файлов-отгрузок с одииаковыии ииеиаии и, если иы хотии загрузить какой-то определенный файл, но ои и* первый, то должны стереть или переииеновать псе предыдущие файлы. Но на практике все может дойти до абсурда. Представьте себе такую ситуацию: Вы играете в сложнейшую адяеитюру и сделали три различных отгрузки. Теперь для того, чтобы загрузить третью отгрузку Ваи нувио проделать следующие действия: нажать RESET, выйти в TR-DOS, стереть или переииеновать две первые отгрузки, загрузить свою адвентюру и только после всей этой волокиты загрузить отгрузку. А если теперь Вы хотите загрузить вторую отгрузку. то все придется повторять снова. Дуиаю многие опытные Поль-г'йшш' 'i1 'аивдпггчгшг

11 1111 It 111111III f 11 П П I П 111111

быстрее. Поэтому в своей статье я хочу заполнить пробелы, допущенные господином Десятничеико. и рассказать о способе адаптации, при которой пользователь ииеет | возможность сохранять на диске отгрузочные файлы с произвольными именами. Также приведу несколько конкретных примеров (внутренности ииогих адвеитюр очень похожи и модифицируя отгруэчик одной программы иожно переделать несколько подобных) и отдельно остановлюсь на отгрузке состояния в моноблок.

Ввод ииени отгружаемого файла.

Итак, перед наии стоит следующая задача: как обеспечить пользователю ввод ииени отгружаемого файла, а после ввода перебросить его а дескриптор. Некотрые игры дают воэиожиость ввода ииени файла и в таких играх иожно обойтись однии единственный LDIR'oh. Но что делать в играх, которые не дают такой возможности и вообще выгружают файлы без заголовка?

Решение этой задачи достаточно простое, но сначала неиного теории . Что из себя представляют команды. которые иы вводим, играя в адвеитюру? Грубо говоря, это строка символов, которая при вводе попадает в специальный буфер. А что из себя представляет иня файла? Это тоже строка смиаолов. Значит решение следующее: пусть пользователь а(едет имя файла как обычную команду, а потом мы перебросим его из буфера в дескриптор. Ревая эту задачу, мы новей использовать средства саиой программы для ввода строки в буфер и печати сообщений-подсказок. Используя средства програииы, иы сразу убиваем двух зайцев: экоис-иии кучу паияти и теперь иаи ие надо заботиться о выводе текста иа экран. Об этой позаботится сама программа: сдеядет где надо скроллинг, правильно среагирует на нажатие клавиш ENTER и DELETE, осуществит вывод на экран нестандартным сиивольныи набором или сииволаии нестандартных размеров. И еще нужно учесть следующие ню-

тттттттт,,тт,а'а,,1,,мтп]

С

ТТГГП 1 III IT

Г TTTT 111 II11II11II111ТТП I П IП IIП1 •нем:

первым делом нушно вывести подсказку типа "ENTER FILE NAME", которая по стил» должна напоминать все остальные сообщения программы.

пользователь иокет ввести

иеиьше восьми символов и остальные нужно забить пробелани;

пользователь иокет вообще ничего не вводить и сразу нажать

FNANE

! ШШттттт 11 in III п mil 11 г» I rm

ENTER, в таком случае нукно заставить пользователя ввести имя еще раз;

поскольку в адвентюрах можно вводить строки длиной более 8 символов (обычно 32 или 2SS) то при вводе сяишкои длинного мненм нужно перебрасывать в дескриптор нз буфера только в символов

И вот как будет выглядеть подпрограмма-решение:

L1

U

LD

HL.HTEXT

;адрес строки-подсказки

CALL

MESS

;печать подсказки

CALL

INPUT

;ввод инени файла

LD

DE.BUFFER

.адрес буфера введенной строки

LD

HL,NAME

.адрес дескриптора файла

LD

A, (DE)

;если первый введеный символ

CP

13

;ENTER, то повторить ввод имени

JR

Z.FNAME

LD

B,6

.количество символов в имени файла

LD

A.(DE)

;4слм введено меньше Ч символов.

CP

13

;то переход на забой остальных

JR

г.17

.символов в дескрипторе пробелаим

LD

<HL),A

;переброска из буфера в дескриптор

INC

HL

INC

DE

D1NZ

LI

RET

LD

(HL),32

INC

HL

DJNZ

L2

RET

Эта подпрограмма является универсальной: без принципиальных изменений ее можно использовать в 99.99% программ. Бели подпрограмма ввода команд не допускает ввода пустой строки, то иовио выбросить проверку первого сиивола.

Подпрограммы MESS м INPUT -подпрограммы печати сообщений иа экран и ааода команд соответственно. Для каждой отдельной програичы их придется разыскивать ' заново. Основным признаком подп-рогроииы MESS является обращение * подпрограмме печати символов, а INPUT - к подпрограмме опроса клавиатуры. В этих подпрограммах необходимо будет найти коды маркеров, которые должны стоять в конце сообщений и команд (в моем примере это 13, но может быть 0,31,25) или еще что-нибудь).

Отгруэка/эагруэка состояния

с использованном подпрограммы (3D13.

Теперь я дескрипторе у нас есть имя файла, и нушно этот файл выгрузить на диск (загрузить с диска). Саиый простой способ »то сделать - использовать подпрограмму «3013 из ПЗУ TR-DOS и функции »0В и *0Б. Об использовании этой подпрограммы было написано уже достаточно, и поэтоиу сразу приведу подпрограмму выгрузки/ загрузки из игры SECRET MISSION:

s -

I-

мне

;дескриптор

BUPPER

ZQU

>60C6

/адрес буфера ваедеииой строки

HESS

EOU

>6EEB

;подпрограмма вывода сообщений

ШРОТ

EQU

>6CP9

.подпрограмма ввода

ORG

>6P64

LOAD

CALL

PREP

.-подготовка дескриптора

LD

C.«OE

CALL

DOS

;чтение файла

JP

NZ,»6PD8

, если возникла оатбка, то выход

LD

HL,BUPPER

;компоновка загруженного файла • памяти

LD

DE,<6482

LD

ВС,«46

LD1R

LD

DE,(#6476)

LD

ВС,(#64SA)

INC

ВС

LOIR

JP

>6Г08

/выход а основную программу

PREP

LD

HL,REPORT

.-подготовка дескриптора

CALL

MESS

CALL

INPUT

LD

DE,BUPPER

LD

HL,NAME

LD

A, (DE)

CP

13

JR

Z,PREP

LD

B,8

LI

LD

A,(DE)

CP

13

JR

Z,L2

LD

(HL),A

IMC

HL

I КС

DE

DJNZ

LI

JR

L3

L2

LD

(HL)/32

INC

HL

DJNZ

L3

L3

LD

(HL),>43

;тип файла С

XOR

A

;установка некоторых жизненно важных

LD

(>SDOF),A

;систеимых переменных

LD

(>5D10 ) , A

DEC

A

LD

(>iC3AJ,A

LD

A,9

LD

(>SD06),A

RET

ORG

>76C0

SAVE

CALL

PREP

;подготовка дескриптора

LO

DE,BUPPER

;компоновка файла для отгрузки

LD

HL,>6482

LD

ВС,>46

LDIR

LD

HL,(>6476)

LD

ВС,(>645A)

11.11.. 11 n. i т^отт^гш'а'г^'^тт

IIIIIHII

1^11^111111

LOIR

LD

C,«0B

CALL

DOS

RET

PUSH

IY

LD

IY,•5C ЗА

LO

HL.BUFFER

LD

DE.>0100

XOR

A

CALL

• 3013

LO

A, (fSDOF)

AND

A

POP

IT

RET

DEFM

"---ENTER

DKFH

" FILE "

DEFT4

"NAME >"

DBF*

0

;запись файла

;выполнение функции, код которой ;находится я регистре С ;код ошибки

;сбросить флаг нуля, если возникла .ошибка при работе с дискои

.-текст подсказка "Введите имя файла* ;маркер конца сообце шя

DM

Использование подпрограммы

• 3D13 имеет одно ограничение: основная програииа не долкна использовать память от «SC00 м до RAMTOP, который должен быть установлен не ниве (SFB3.

И еше хочу обратить Ваше вни-иание на один важный иомент -компоновка отгружаеиого файла. Часто встречается такая ситуация, что в оригинале програииа отгру-вает на ленту не один, а несколько блоков, причеи из разных нест памяти. При отгрузке на диск этих блоков их иожно отгружать, как отдельные файлы, ио если блоки очень короткие, то это будет только пустой тратой дискового пространства. Поэтоиу лучше перед отгрузкой отдельные блоки перебросить в свободное иесто паияти, выстроить один за другии и потои отгрузить как один файл (в приведенной примере блоки перебрасывается в буфер введенной строки, который после ввода имени не используется). После загрузки состояния нужно сделать противоположное : поочередно перебросить блоки из буфера в соответствующие места паияти.

Отгрузка/загрузка состояния путей пряного программирования контроллера.

Выше был рассиотрен способ адаптации с использованием подпрограммы t3D13, но для некоторых програин. которые затирают сметенные переиеииые, он не подходит. Господин Десятничеико для таких програим предложил сохранять область паияти под систеины-ии переменными, а их каждый раз переустанавливать. Но и этот способ непригоден для програии, в которых саио состояние ишходится а области систеиных переменных. Я предлагаю универсальную программу чтения/записи файлов длиной 1 сектор (большинство адвонтюр иие-ют отгрузки длиной менее 2&6 байт) с произвольный именем. Для работы с файлами длиной более одного сектора программу придется немного доработать, но «то иелочь и на ней останавливаться не буду. Этой програиие не нужны системные переменные и работает она при любом режиме прерывания Работа программы основана ма прямом программировании контроллера. Вот ее влриамт ДЛЯ игры HAMPSTKAD

гттттттпип

л!

* ••

HAMPSTEAD

*

■ *

Save

and Load

* A

(С)

1994

Eel 1рае Soft • •

#

mess

equ

• 07A6

input

kqu

• 67CC

sbufp

equ

■ seoo

; адрес

буфера.

а который загружается

;сектор из каталога

диска

И BUFF

equ

• 6000

;адрес

буфера

■•еденной строки

FILE

KQU

ъвоо

;адрес

информации о

состоянии игры

Далее следует адреса служебных байтов 8-го сектора

0-й дороякм.

FDISK

KQU

SBUFF»«Kl

;начало свободной области иа диске

PILES

кои

SBUFF»fM

количество файлов иа диске

FREE

EQll

SMIPF«tKS

;количество свободных секторов

ORC

• SD ЬЪ

SAVE

CALL

PRKP

подготовить дескриптор

LO

HL.SBUFF

;считать служебный

LD

DR.«0008

;сектор

CALL

LS

LD

A.(riLKS)

;количество файлов иа диске

CP

128

JR

X,EXIT

LD

C,A

{сохранить кол-во файлов

LD

HL,(FREE)

{количество свободных секторов

LD

A,L

OR

H

JR

Z,EX IT

j если* 0, то такие выход

DEC

HL

;уиеиьаить на единицу (длина

LD

(FREE),HL

;отгруааеиого файла)

LD

А,С

INC

A

;общее количество файлов увеличить

LO

(FILES).A

LO

HL.(FDISK)

LD

D,H

LD

E.L

INC

E

{иачало свободной области

BIT

4.1

;сдвинуть иа один сектор

JR

Z.LI

LD

E.O

INC

0

LI

LD

(ADRES).HL

{установить новый адрес файла иа диске

EX

DE.HL

LO

(FDISK) HL

{новый адрес свободной области диска

PUSH

DE

PUSH

ВС

LO

DE.Я0008

LO

HL.SBUFF

CALL

SS

{записать измененный служебный сектор

T^iiiiHHiiHiiiiiiiiiimiiiiiiiiiHMiiiiiiiiiniiiin

L.C L L L L

H,SBUFF/256 С С

с с

Е.С 0.0 ОЕ HL

KL.SBUIT LS ОЕ

HL,NAME

ВС.16

ОЕ

HL.SBUFF

SS

DE

HL.riLI SS

EXIT

;записать измененный каталог ,восстановить адрес свободной области

;записать файл

ТТТГПГТТЩ1

LD

SLA

SLA

SLA

SLA

LD

SRL

SRL

SRL

SRL

L0

LD

PUSH PUSH LO

CALL

POP

LO

LO

LOIR

POP

LO

CALL

POP

LO

CALL EI RET

;no номеру файла определить ,смещение его дескриптора ,от начала сектора

.определить сектор, а которой должен ;находиться дескриптор

.-считать необходимый .сектор каталога

;добавить информацию о файл* • каталог

- в -

цмппптт1 ''1 ГГТГПТ|

подготовить дескриптор .-начать с нулевого сектора ;нулевой дорояки

LOAD

CALL PREP LO DE.O

;считать сектор каталога ;количество файлов в одной секторе

;если иия следующего файла начинается ;с 0, то это конец каталога и файл ие ;найден

.-восстановить стек ;выйти из подпрограммы ;иия файла из каталога будет .сравниваться С введенным именем

.-сравнение по 11-ти байтам

;имена совпали и

.в (HL) адрес файла на диске

L2

PUSH LO

PUSH

CALL

LO

POP

LO

AND

JR

POP

JR

LO

PUSH

PUSH

LO

LO

CP

JR

INC

INC

DJNZ

LD

ADD

LD

JR

DE

HL.SBUFF HL LS в.16 HL

A,<HL) A

NZ.L4 ВС

EXIT DE.NAME HL ВС

B.11 A.(DE) (HL) NX.L6 HL

OR

LS

А.Э

A.L

L.A

17

L3

L4

LS

гггггггттттттг

1_

гтттттттттт'А'Атттт]

111 II 1 II111111111 11 11111111111II1II1111 1 1111 111 11II 1111 111

POP

HL

LO

A,16

;если имена не соапали, то перейти

ADD

A,L

;на следующий файл

LD

L, A

DJNZ

L3

POP

DE

INC

E

;если это нее файлы иа данном секторе.

BIT

3.1

,-то перейти к следующему сектору

JR

Z.L2

JR

EXIT

;если нее сектора каталога просмотрены

;и файл не найден- выход

L7

LD

B.(HL)

;в DE адрес файла на диске

INC

HL

LD

O.(HL)

•D

HL,FILE

i ALL

LS

;считать файл

POP

DE

{восстановить стек

POP

DE

POP

DE

JR

EXIT

ORG

• 5F2B

PREP

LD

HL,NAME

LO

В, В

LD

(HL),32

INC

HL

DJNZ

PREP»*

LS

LD

HL,REPORT

{подготовка дескриптора

CALL

MESS

LD

HL,NRUFF

CALL

INPUT

LO

A.(HL)

CP

13

JR

Z, LB

LD

C.O

LD

B.8

L9

LD

A.(HI.)

AND

A

JR

Z.L10

INC

С

INC

HL

DJNt

L9

L10

LD

B.O

LD

HL.NBUFF

LD

DE,NAME

LDIR

DI

LD

IX,H2F6S

{запуск дисковода

CALL

DOS

RET

Далое идут подпрограммы чтеиик .1 записи одного сектора. Входные данные для этих подпрограим сло-дукщие: HL - адрес загрузки сектора, D - логический нонер дорожки, с которой необходимо загрузить сектор, В - нонер эагруаае-иого сектора.

LS LD А,О {определить физический

рТТПТТТТ ГТте^Т$ТГГГТТ TTTTTTTj

тттттт

IjTIIIIIII

"«ЧШ|АШШтт,,тт,итт

ПТГТТП

RRA

LD

C.A

JR

NC.L11

LO

A,»2C

JR

LI 2

;установка регистров

L11

LD

A.*3C

;контроллера в соответствии

L12

LO

IX,(2F4D

;с входиыии даиныии

CALL

DOS

LO

IX,»2F1B

;чт«иие сектора

CALL

DOS

RET

DOS

PUSH

IX

;переход в иеобходиную точку

JP

f 3D2F

;ПЗУ TR-DOS

SS

LD

A.O

;запись сектора, подпрограмма

OR

A

аналогична подпрограмм»» LS

RRA

LD

C.A

JR

NC.L14

LD

A, #2C

JR

LIS

LI 4

LD

A,»3C

LIS

L0

IX,»2F4D

CALL

DOS

LD

IX,«2073

CALL

DOS

RET

NAME

0ЕГМ

И

С" ;дескриптор файла

DEFB

7.0

;м* адрес загрузки, а контрольный код

Поскольку

при чтении поиск pax задавать разные коды.

тогда

файла ведется по ииени, типу и контрольному коду, то неплохо было бы при адаптациг в разных иг -

на одном диск* не отгрузки разных игр, ковыни именаии.

перепутаются но с одмна-

DEFE 0.0

овгв о

ACRES DEPB 0,0

REPORT ГЕГМ "ENTER DEFM "PILE " DEKH "HAKE: 0EFB «1Г

.-стандартно тут разиецеиы данные про .длину файла, но иоя програииа ;их игнорирует

,при записи сюда подставляется ;адрес файла и* диск* ;сообщение-подсказка

Многие программа покажется слишком громоздкой и возникнет законный вопрос: поместиться ли подобней ярограмм• в паияти какой-нибудь серьезной адвентюры с кучей текстов и графмхиТ Отвечая: поместится) Если ив поиестится вэлмость*. ТО е* мовно разместить • разных участках паияти, понас-глпляа где надо инструкций JR и JP К тому яе во многих играх бы аает полно "мусора", который ио-вет заминать килобайты! A w некоторые игры ииоют свои собственные подпрограииы для работы с лентой, они такяе могут заминать порядочно паияти, которой обычно достаточно для разие«ения подпрограммы работы с диском. Еце мовно сэкономить на той, что подпрограииы LS и SS отличаются только адресами подпрограмм чтения и заик и « ПВ и (2073 соответственно И можно написать руо будет передаваться адрес не-обходиной процедуры:

с

ттгтггпгтп

L&

LD

1Х.Я2Р1В

JR

S/L

SS

LD

IX,f 2П7 3

S/L

PUSH

IX

LD

A.D

OR

A

RRA

LD

С, A

JR

NC.L1

-D

A,«2C

JP

L2

L1

LD

A,«3C

L2

LD

IX,*2P4D

CALL

DOS

РОГ

IX

CALL

DOS

RET

Прогреми* имеет ряд достоинств, но у нее есть один недостаток связанный с различными версиями TR-DOS: она не работает с TR-DOS vS.Ol. Кокно. конечно, сдеяать проверку версии TR-DOS и в соответстони с версией иэиеиять адреса подпрограмм ПЗУ. Но я считаю, что это бучет ливней тратой памяти и сия программиста. к тому яе сейчас TR-DOS vS.Ol почти исчезла и большинство пользователей далее. А всей владельцам TR-DOS vS.Ol, которые ие удовлетворены работой адаптированных иною программ обещаю лично переделать любую игру.

Отгоуэка состояния а иоиоблок.

Отгрузку в моноблок лучше использовать в деловых и стратегических играх, в адвентюра* желательно использовать ее только а крайней случае, когда ие хватает памяти для всех иных вариантов загрузчиков. Но так, как отгрузка ■ моноблок в классической исполнении оставляет только один отг-зрузочмыИ блок, то я предлагаю иеиного иной вариант отгрузчика, который перед отгрузкой (загрузкой ) запрашивает иоиер блока в который будет произведена отгрузка (загрузка). Такой вариант реализован В игре ЗВЕЗДНОЕ НАСЛЕДИЕ. Исаи длина одного блока около че-тырехпяти дорожек, то можно ограничиться тремя блскаии, а если длина блока всего 8-16 секторов, то иокно дать и десять блоков. Вот, как выглядит вариант такой программы ДМ игры MULT I-PLAYER SOCCER MANAGER:

дтаттттгт,тттгатттттггттгтт1

РШЧВДЩШКТВШ'1 'UUJ'U.'tt! •14!U! "ИЯРГЧпч

Multi-Player Soccer Manaeer • ,я е

I* Save and Load *

(С) 199S Eclipse Soft •

;о«~сткж зкрана ,вы-од а основную программу

MESS

EQU

•D73C

ORG

•DB02

SAVE

D!

CALL

PREP

CALL

SS

EI

CALL

• D34F

JR

■ DAD1

ORG

• DB2D

LOAD

DI

CALL

PREP

- 12

I

1ТПТТТТТ

ггпгт|ттттгггтп 1 'm'm1 1!"""1' ч

шш

PRKP

L1

JR

•0813

ORG

■DC03

LD

HL.REPORT

CALL

NESS

LD

А ,»P7

IN

A,(«FB>

AND

7

XOR

7

JR

J.LI

LD

DE ,0

LD

HL.O

RRCA

JR

C,L2

LD

HL,«030F

RRCA

JR

C.L2

LD

HL,f070E

ADD

HL.Dr

BIT

4.1

JR

X.L3

RES

4.L

INC

H

POSH

HL

POP

DB

LO

HL,»SB03

LO

В.'ЗР

RET

LD

IX,>2P65

CALl

DOS

PUSH

ВС

PUSH

DE

LO

A,D

OR

A

RRA

LO

C.A

JR

NC.LS

LO

A,»2C

JR

L6

LO

A, f ЭС

LD

IX,V2F4D

CALL

DOS

POP

DE

POP

ВС

TUSH

ВС

PUSH

DE

LD

IX,«2P1B

CALL

DOS

POP

DE

INC

H

INC

r

BIT

4.E

JR

Z,L«

LO

«,0

itt 111 м 111 JTFJTiTATlTi1!™ ТЖЧРТОТ,тгп"^ттп

-—

;управляющие коды ;текст сообщения-подсказки

ГГТТТПТЩГ

IJTIUini

POP

ВС

DJNZ

L4

RET

L8

POP

ВС

DJNZ

17

RET

DOS

PUSH

IX

JP

• 3D2F

SS

LD

IX,'2F6S

CALL

DOS

L10

PUSH

ВС

PUSH

DE

LD

A.D

OR

A

RRA

LD

C.A

JR

NC.L1I

LD

A, 02C

JR

L12

LI 1

LD

A, ®3C

L12

LD

IX,*2P4D

CALL

DOS

POP

DE

POP

ВС

L14

PUSH

ВС

PUSH

DE

LD

IX.B2D73

CALL

DOS

POP

DE

INC

H

INC

E

SIT

*.t

JR

Z.L1S

LD

*.o

INC

D

POP

ВС

DJNZ

L10

RET

LIS

POP

ВС

DJNZ

L14

RET

ORG

• DBD1

REPORT

DEFB

5,3

DEFM

"Enter "

DEFM

"version

DEFM

"nuaber "

DEFM

"(1-3)"

DKF8

•OD

;эались группы секторов

пппппптпмппппптпптпмпмппип

■;выход в основную програмну

гтгггг

гпт

адрес сообщения-подсказки печать сообщения опросить подурад клавиатуры отвечающий за кдааиюи 1, 2. 3, 4, Ь оставить битм отвечающие за клавиши 1,2,3 (бит включен- клавиша нажата) есаи ие одна из трех каавию ие нажата, тс повторить опрос кдавиатурм при загрузке игры сюда помещается адрес первого блока иа диске смещение для первого блока: Н- дорожки, L- сектора

переход вперед, если нажата клавиаа 1 смещение для второго блока

перевод вперед, если нажата клавиаа 2 сиещение для третьего кяока определение абсолютного адреса блока

L2

L3

LS L4

.установка параиетров для подпрограииы ;чтения (записи)

;чтение группы секторов

LS L6

L7

Как видите объем используемой программой памяти минимален и если подпрограммы чтения и записи группы секторов организовать в одну подпрограмму, то его можно уменьшить еще, примерно иа треть.

Заключение.

Напоследок хочу сказать пару слов о внешнем виде адаптированных программ. Эти слова относятся а первую очередь к теи, ктс серьезно занимается адаптацией игр.

да при отгрузке на диск, аидияь огромное изображение кассеты, с надписью START ТАРЕ. Неувел»; так сложно, исподьэуа кота бы простейшую программу типа SCE найти спрайт-кассету и перерисовать его. превратив в спрайт-дискету?! В крайнем случае, если Вы не представлдете себв в роди художника, превратите кассету в надпись типа SAVE t LOAD Постарайтесь сделать так, чтобы адаптированная Вани програииа выглядела более-иеиее фирменно.

Ь, что излояеииые идеи помогут Вам переделать свои любммые лдвентюры и стрлтегички для работы с дисководом и Вы навсегда забудете о магнитофоне и кнопке MAGIC. Если Ваи чтолибо не ясно в иоей статье, то можете написать мне лично. Также хотелось бы услышать иноние опытных игроков о работе адаптированных мною игр. Постараюсь ответить на любое письио. Мой адрес

290052 г.Львов. ул.Сяйво, л.15. кв.44 Кяммусу Владимиру




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



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

Похожие статьи:
game - лучшая игра на спектруме
Сенсация - презентация игры Черный Ворон.
События - Международный фестиваль компьютерного искусства "FunTop98". Правила, требования к работам, контакты.
EMSlog00 - ...три ...два ...раз: В третий раз я говорю вам Hi! Неделя опять пролетела как фанера над Парижем.
Реклама - Реклама и объявления ...

В этот день...   20 апреля