Как-то на страницах РЕВЮ мы
опубликовали описание пакета
G.A.C. (Graphics Adventure Crea-
tor). Не знаем поэтому ли, или
просто время подошло - но мы по-
лучаем теперь письма больше не с
вопросами а с советами по этой
программе. Сегодня мы предлагаем
вниманию наших читателей подборку
материалов по пакету G.A.C.
(C) Евгений Федяев,
Алексей Федяев, г.Москва.
Простейшая неполная
русификация G.A.C.
Для начала переделайте загруз-
чик следующим образом:
1 REM RET
LD HL,#5FB4 (24500)
LD DE,#5DC0 (24000)
LD BC,#4790 (18320)
LDIR
ADD HL,DE
JP #8526
10 POKE 23609,40 (PIP)
POKE 23675,192 (UDG)
POKE 23676,93
CLEAR 24499
20 - оставить без изменений
30 PAPER 7: INK 7: LOAD "RUS"
CODE 64599: LOAD ""CODE: BORDER
7: INK 0: CLEAR 64598: RANDOMIZE
USR 23761
То есть надо вставить загрузку
русского символьного набора и из-
менить RAMTOP. Запишите этот заг-
рузчик, а после него запишите
русский символьный набор.
Далее наберите следующую прог-
рамму:
5 LOAD ""CODE VAL "24500"
6 LET k=4: RESTORE 60
10 READ a: READ d : REM адрес,
длина блоков сообщений
15 LET n=PEEK a
20 IF (n=>97 AND n<=122) THEN
LET n=n-32: POKE a,n
30 LET a=a+1: LET d=d-1:
IF d>0 THEN GO TO 15
40 LET k=k-1: IF k=0 THEN SAVE
"G.A.C."CODE 24500,18330: STOP
50 GO TO 10
60 DATA 38977,2819,41968,161,
27075,55,27714,136
Эта программа после загрузки
основного кодового блока заменит
все строчные буквы на заглавные
(это займет приличное время). За-
тем Выгрузит переделанный кодовый
блок. Программа готова к работе.
Русский символьный набор -
КОИ-7. Этот способ неполной руси-
фикации позволяет русифицировать
выдаваемые сообщения, а команды -
оставлять неизменными (на анг-
лийском).
Можно также русифицировать и
сообщения, выдаваемые самой прог-
раммой (дополнив строку DATA).
(С) Владимир Цуриков,
г.Херсон, 1995.
Опыт работы с G.A.C.
по материалам
западных источников
Сначала - "разминка". В гото-
вую адвентюру можно установить
свой символьный набор. Делается
это так:
10 CLEAR 64599
20 LOAD "chr"CODE 64600,768
30 RANDOMIZE 64600
40 POKE 23606,88
50 POKE 23607,251
60 LOAD "ADVENTURE"
Конечно, если у Вас есть эк-
ран-заставка, то добавьте:
25 LOAD ""SCREEN$
Дальше - круче. Вывод информа-
ции (какой пожелаете) на экран
можно сделать еще до первой Вашей
команды.
а) введите как описание комна-
ты 9998 информацию, которую Вы
хотите напечатать;
б) измените "Begin Where?" на
9998;
в) введите строку в High Prio-
rity, которая будет проверять,
первый ли это ход.
IF (RES?6) SET 6 LF MESS 238
HOLD 65000*23LF*GOTO 1 END
Маркер 6 - первый ли ход. Со-
общение 238 -"Press any key". Ос-
тальные команды (например, уста-
навливающие маркеры) должны сто-
ять за GOTO 1.
Работает это следующим обра-
зом. Если это 1-й ход (RES?6) вы-
полняется (SET 6) и программа ос-
танавливается и говорит "Press
any key" (MESS 238). Кстати, ин-
формация, которую Вы хотели напе-
чатать - уже на экране (описание
локации 9998), поэтому нужно LF,
Далее пауза (HOLD 65000), очистка
экрана (23 команды LF) и переход
к локации No.1, с которой начина-
ется Ваша игра.
Предложенный "жучок" хорош для
того, чтобы перед игрой вывести
краткую инструкцию и т.п.
Дальше - глубже. Возможно, ко-
му-то эта вещь попортила нер-
вы.Когда Вы сохраняете состояние
в адвентюре, сделанной с помощью
G.A.C., происходят какие-то
странные вещи:
- G.A.C. возвращается в графи-
ческий режим, даже если перед
этим был текстовый;
- экран очищается с белым цве-
том PAPER.
Это Вас не будет беспокоить,
если Вы пишите адвентюру с графи-
кой, но если это только тексто-
вая...
Пользуйтесь следующей строкой,
вместо той, что Вы используете
для SAVE (допустим, SAVE - verb
14)
IF (VERB 14) SAVE TEXT
* 23LF * LOOK WAIT END
С ее помощью экран очищается с
текущим цветом PAPER и сохраняет-
ся текстовый режим.
Проблема точки (.) Заметили ли
Вы уже, что невозможно поставить
точку в конце описания комнаты,
если после него Вы вводите еще
"You can also see"? И Вы не може-
те поместить MESS '.' END на са-
мом верху High Priority потому,
что Вам ведь не нужна точка после
каждого сообщения. Вот "обход"
(опять же на "вершине" High Prio-
rity).
IF (SET?0) RESE0 MESS 237 END
MESS 237 это просто '.' (точ-
ка). Можно использовать любой но-
мер.
Сообщение 253 должно быть пе-
реназначено как '. You can also
see' (с точкой прямо перед You).
Эта строка печатает точку в
конце описания каждой локации
(включая любые дополнительные со-
общения). Только в этих дополни-
тельных сообщениях точка должна
быть вначале, а не в конце. И в
описании локации (в конце) точку
ставить не надо.
Еще пара примечаний. Команда
OKAY работает как
MESS 254 LF WAIT
(вместо ожидаемого MESS 254 WAIT)
так как вставляет пустую строку
после "OKAY". Избавиться от этого
можно, заменив все команды OKAY
цепочкой MESS 254 WAIT.
Та же проблема с Message 242
(Pardon?) исправляется
IF (NOT VBNO) MESS 242 WAIT END
на вершине High Priority.
IF (NOT VBNO) занимает меньше
места, чем VERB 0 или IF VBNO 0.
"Байты экономят килобайты".
Используйте вместо чисел токены
команд:
GOTO 1 -> GOTO VERB
экономит 1 байт.
И еще одна "академическая"
проблема G.A.C. Если Вы сделаете
адвентюру на 48К, потом решите
стереть все, кроме пары локаций,
у Вас в итоге будет файл длиной
48К! Да, по непроверенным данным
G.A.C. не "восстанавливает" па-
мять на месте удаленной записи.
По моим данным на западе ходила
программа "The Reclaimer" (Rel-
soft). Проблема открыта для наших
"асов клавиатуры".