DEVICE ZXSPECTRUM1024
;VERA
;INTRO and SETUP
;
;15.12.07
;18.04.08
;29.04.08
;17.05.08
;18.05.08
;19.05.08
;23.05.08
;6.07.08
;7.08.08
;23.08.08
;24.08.08 - мой д/р :)
;25.08.08
;26.08.08
GAME=#7286 ;старт игры
KDEL=15 ;задержка автоповтора нажатия клавиши
QLINE=9 ;кол-во пунктов меню
QVALUE=7 ;кол-во изменяемых пунктов сетапа
LEN=17 ;Длина линейки выделения пункта
SET=23881 ;Адрес, где хранятся данные установок
;Корректируемые ячейки (установки) в игре
MOUSE EQU #68C8 ;мышь
ROLL EQU #692D ;колесо
SCANTYP EQU #69CF ;Джойстик/клава
MSPEED EQU #68C0 ;ускорение курсора
MUSON EQU #67FD ;музыка on/off
SOUND EQU #F8FD ;звуки on/off, PG_MAP
;Страницы
PG_MAP EQU 1
PG_MUZ EQU 6
PG_VIEW EQU 7
MUSIC EQU #D35E-100 ;адрес мелодии (-100 т.к. заголовок отруб)
MUSINI EQU #D696 ;плеер инициализация
PLAY EQU MUSINI+2 ;проигрывание одного кванта мелодии
MUTE EQU MUSINI+5 ;заглушить музыку
;Токены в тексте
NCRD=1
BOLD=2
NORM=3
LINE=4
PAUS=5
CLS=6
BORDER=7
LINK=8 ;ссылка на строку текста, токены в ссылках не работают!
FATR=9 ;заполнить атрибуты экрана белым
;ENDL=9 ;конец линка
;По токенам смотри метку TITRES
;---
; ORG GAME
; RET
ORG #6000
begin
DISP #4040
IM2
PUSH IX,IY,HL,DE,BC,AF
EX AF,AF' ;'
EXX
PUSH HL,DE,BC,AF
LD A,(NUMPAGE) ;Запоминаем номер текущ. стр.
LD (RST_PG+1),A
LD A,PG_MUZ
CALL PAGE
CALL PLAY ;проигрываем мелодию
RST_PG LD A,0
CALL PAGE
;Выход из вторых прерываний
POP AF,BC,DE,HL
EX AF,AF' ;'
EXX
POP AF,BC,DE,HL,IY,IX
EI
RET
;Начало работы интро
INTRO
; CALL SETIM2
; EI
; LD A,PG_VIEW
; CALL PAGE
; LD HL,SCR
; LD DE,#C000
; LD BC,6912
; LDIR
DI
LD A,PG_MUZ
CALL PAGE
LD HL,MUSIC
CALL MUSINI
LD A,PG_VIEW
CALL PAGE
CALL SETIM2
CALL FROMGAM
LD HL,TITRES
CALL PRINTFX
JP TOGAME
;Установка вектора IM2
SETIM2
DI
LD HL,IMVEC ;адрес вектора прерываний
LD BC,256
LD D,H
LD E,B
LD (HL),IM2/256
LD A,H
LDIR
LD I,A
IM 2
EI
RET
;Установка вектора IM1
SETIM1
DI
LD IY,23610
LD A,63
LD I,A
IM 1
EI
RET
;Печать текста с обработкой токенов
PRINTFX
CALL PRTEXT
LD B,A
AND A
RET Z
DJNZ NFX2
LD E,(HL) ;новые координаты
INC HL
LD D,(HL)
NFX1 INC HL
JR PRINTFX
NFX2 DJNZ NFX3
LD A,#0F ;утолщенный
NFX2_ LD (PRNMOD),A
JR PRINTFX
NFX3 DJNZ NFX4 ;нормальный
XOR A
JR NFX2_
NFX4 DJNZ NFX5
PUSH DE
LD E,(HL) ;цветная линия
;E-атрибут
INC HL
LD D,(HL) ;D-Y коорд.
PUSH HL
CALL LINE3
POP HL,DE
JR NFX1
NFX5 DJNZ NFX6 ;пауза
LD A,(HL)
CALL PAUSE
JR NFX1
NFX6 DJNZ NFX7 ;стирание экрана
LD A,(HL) ;Y размер
LD (YSZ+1),A
LD C,A
INC HL
LD A,(HL) ;X размер
LD (XSZ+1),A
LD B,A
INC HL
LD A,(HL)
LD (CSZ+1),A
INC HL
LD A,(HL)
LD (CSZ+2),A
PUSH DE,HL
CALL CHANX
CALL FILLATR
POP HL,DE
JR NFX1
NFX7 DJNZ NFX8 ;бордюр
LD A,(HL)
OUT (254),A
JR NFX1
NFX8 DJNZ NFX9
PUSH DE ;ссылка на текст
LD E,(HL) ;нужна для печати одинаковых строк
INC HL
LD D,(HL)
INC HL
EX DE,HL
LD B,D
LD C,E
POP DE
PUSH BC
CALL PRTEXT
POP HL
JR PRINTFX
NFX9 DJNZ NFX10 ;заполнение экрана атрибутом
CALL FILLATR
NFX10 JR NFX1
;Начало работы установок
SETUPI
XOR A
LD (PRNMOD),A
;LD A,PG_VIEW
;CALL PAGE
CALL CHANX
CALL FILLATR
LD DE,#0046
CALL LINE3
LD DE,#0B43
CALL LINE3
CALL LINE2
LD DE,#0000
LD HL,TEXT3
CALL PRTEXT
LD DE,#100B ;D-X pix, E-Y znak
LD HL,TEXT0
CALL PRTEXT
LD DE,#3C00
LD HL,TEXT1
CALL PRTEXT
REPRINT
CALL SET_TXT
LD DE,#B301
LD HL,TEXT2
CALL PRTEXT
;Опрос клавиш
KEYLP HALT
LD BC,#BFFE
IN A,(C)
BIT 0,A
JR Z,ENTER
LD B,#FE ;CS
IN A,(C)
BIT 0,A
JR NZ,KEYLP2
LD B,#EF
IN A,(C)
BIT 4,A
JP Z,DOWN
BIT 3,A
JP Z,UP
BIT 2,A
JP Z,RIGHT
LD B,#F7
IN A,(C)
BIT 4,A
JR Z,LEFT
KEYLP2 LD A,KDEL
LD (PRKEY+1),A
JR KEYLP
;Проверка на автоповтор
PRKEY LD A,KDEL
DEC A
RET Z ;задержка кончилась
LD (PRKEY+1),A
CP KDEL-1
RET Z ;нажали первый раз
POP BC ;для корректировки SP
JR KEYLP
ENTER LD A,(NUMLINE)
CP QVALUE
JP Z,SAVE_SETUP
ENT_MOD JR C,RIGHT
CALL FROMGAM ;Чтобы установки
;остались прежними
TOGAME
HALT
LD BC,#BFFE
IN A,(C)
BIT 0,A
JR Z,TOGAME
LD A,PG_VIEW
CALL PAGE
CALL CHANX
CALL SETIM1
LD A,PG_MUZ
CALL PAGE
CALL MUTE
;Корректируем игру
;в соответствии с установками
LD HL,SETUP+1
LD DE,4
LD A,(HL)
DEC A
CPL
LD (MOUSE),A ;255 - мышь есть, 0 - нет
ADD HL,DE
LD A,(HL)
DEC A
JR Z,$+4
LD A,201 ;RET нет колеса
LD (ROLL),A
ADD HL,DE
LD A,(HL)
LD (SCANTYP),A
ADD HL,DE
ADD HL,DE
LD A,(HL)
LD (MSPEED),A
ADD HL,DE
LD A,(HL)
XOR 1
LD (MUSON),A
LD A,PG_MAP
CALL PAGE
ADD HL,DE
LD A,(HL)
DEC A
JR Z,$+4
LD A,201 ;RET нет звуков
LD (SOUND),A
JP GAME ;Стартуем игру!
LEFT
CALL PRKEY
LD C,-1
CALL CH_VALUE
; CALL LINE
JP REPRINT
RIGHT
CALL PRKEY
LD C,1
CALL CH_VALUE
; CALL LINE
JP REPRINT
UP
LD BC,#0101
JR DOWN+3
DOWN
LD BC,#FFFF
LD DE,(COORD)
CALL PRKEY
LD HL,(NUMLINE)
LD A,H
SUB B
LD H,A
LD A,L
SUB C
LD L,A
CP #FF
JP Z,KEYLP
CP QLINE
JP Z,KEYLP
LD (NUMLINE),HL
; CALL SCR_ADR2
EX DE,HL
CALL LINE2+3
CALL LINE2
JP KEYLP
CH_VALUE
LD A,(NUMLINE)
LD B,A
ADD A,A
ADD A,A
LD HL,SETUP
LD E,A
LD D,0
ADD HL,DE
LD A,(HL)
INC HL
CP #FF
RET Z ;не меняем значения
AND A
JR Z,VAL_01 ;меняем значение тригерно
DEC A
JR NZ,VAL_02
;Меняем значение в диапазоне (MIN-MAX)
PUSH HL
LD A,(HL)
INC HL
LD E,(HL) ;MIN
INC HL
LD D,(HL) ;MAX
INC D
POP HL
ADD A,C
BIT 7,A
JR Z,POL
CP E
JR NC,POL1
LD A,RIGHT-2-ENT_MOD
LD (ENT_MOD+1),A
RET
POL CP D
JR C,POL1
LD A,LEFT-2-ENT_MOD
LD (ENT_MOD+1),A
RET
POL1 LD (HL),A
RET
;Простой тригер
VAL_01 LD A,(HL)
XOR 1
LD (HL),A
RET
;Тригер меняется с кем-то
VAL_02 LD A,(HL)
XOR 1
LD (HL),A
INC HL
LD E,(HL)
INC HL
LD D,(HL)
EX DE,HL
LD A,(HL)
XOR 1
LD (HL),A
RET
;Переносим настройки из сетапа в текст
SET_TXT
LD HL,TEXT2
LD DE,3
LD BC,SETUP
LD A,QVALUE
CHV_LP EX AF,AF'
LD A,(BC)
CP 255
JR Z,CHV_LP2
DEC A
JR Z,NZBIT
;Обычный тригер
INC BC
LD A,(BC)
DEC BC
PUSH HL
INC HL
ADD A,192 ;Галочка/крестик
LD (HL),A
POP HL
CHV_LP2 ADD HL,DE
INC BC,BC,BC,BC
EX AF,AF'
DEC A
JR NZ,CHV_LP
RET
;Переменная в диапазоне
NZBIT PUSH HL
; INC HL
INC BC
LD A,(BC)
DEC BC
AND A
JR Z,ZERO
BIT 7,A
JR Z,POLOJIT
NEG
LD (HL),"-"
JR POLOJIT+2
POLOJIT LD (HL),"+"
INC HL
ADD A,48
LD (HL),A
JR CHV_LP2-1
ZERO LD (HL),32
INC HL
LD (HL),"0"
JR CHV_LP2-1
FILLATR
LD HL,#D800
LD DE,#D801
LD BC,767
LD (HL),7
LDIR
RET
;Пауза
PAUSE
LD B,A
ANY_KEY HALT
XOR A
IN A,(#FE)
CPL
AND 31
JR NZ,KEY_PRS ;что-то нажали
DJNZ ANY_KEY
RET
PAUSE2
LD B,0
ANYK HALT
XOR A
IN A,(#FE)
CPL
AND 31
RET NZ ;что-то нажали
DJNZ ANYK
RET
KEY_PRS POP BC
LD A,#BF
IN A,(#FE)
BIT 0,A
JP Z,SETUPI ;Enter
LD A,#7F
IN A,(#FE)
BIT 0,A
JP Z,TOGAME ;Пробел
PUSH BC
RET
;E-атрибут
;D-Y
LINE3
LD B,32
LD H,0
LD L,D
LN3 CALL ATR_ADR
LD (HL),E
INC L
DJNZ $-2
RET
;Инвертированная линия атрибутами
LINE2
LD HL,(COORD) ;H-X,L-Y
CALL ATR_ADR
LD A,(HL)
LD C,A
AND 7
ADD A,A
ADD A,A
ADD A,A
LD E,A
LD A,C
AND 56
RRA
RRA
RRA
OR E
LD B,LEN
LD (HL),A
INC L
DJNZ $-2
RET
;Печать текста пропорциональным шрифтом
;by SAM style, модификация для маски by axor
;IN DE-координаты (D-X пикс., E-Y знакоместа)
; HL-текст
;1-12-токены (они не обязательны!)
PRTEXT
PUSH DE
LD A,(HL)
AND A
JR NZ,PRT0
PREX POP DE
RET
PRT0 INC HL
CP 13
JR C,PREX
JR NZ,PRT
POP DE
INC E
JR PRTEXT
PRT CALL print_symbol
JR PRTEXT+1
print_symbol
PUSH HL
PUSH DE
LD L,A
LD H,0
ADD HL,HL
ADD HL,HL
ADD HL,HL
LD BC,font-256 ; font.addr
ADD HL,BC
LD B,(HL) ;ширина буковки
LD C,B
LD A,255
SRL A
DJNZ $-2
LD B,C
LD (MASK+2),A ;Маска буковки
PUSH BC
LD A,D ;величина сдвига
AND 7
LD (sdwig+1),A
XOR D ;вычисление адреса на экране (de)
RRA
RRA
RRA
AND #1F
LD B,A
LD C,E
LD A,C
RRCA
RRCA
RRCA
AND #E0
OR B
LD E,A
LD A,C
AND #18
OR #C0
LD D,A
;---
INC D
INC HL
LD A,7 ;высота буковки
prn_1 EXA
LD A,(HL)
PRNMOD RRCA ;#0F/00 утолщение
OR (HL)
LD B,A
PUSH HL
MASK LD HL,#00FF
LD C,0
sdwig LD A,0
AND A
JR Z,prn_3
prn_2 SRL B
RR C
SCF
RR H
RR L
DEC A
JR NZ,prn_2
prn_3 LD A,(DE)
AND H
OR B
LD (DE),A
INC E
LD A,(DE)
AND L
OR C
LD (DE),A
POP HL
DEC E
INC D
INC HL
EXA
DEC A
JR NZ,prn_1
POP BC
POP DE
POP HL
LD A,B ;изменяем X (D) на ширину печати (B)
ADD A,D
LD D,A
RET
;Координаты в знакоместах преобразует
;в реальный адрес экрана
;IN D-X, E-Y
;
SCR_ADR LD A,E
AND 7
RRCA
RRCA
RRCA
ADD A,D
LD D,E
LD E,A
LD A,D
AND #18
OR #C0 ;#C0/#40
LD D,A
RET
SCR_ADR2
LD A,E
AND #18
ADD A,#C0
LD H,A
LD A,E
AND 7
RRCA
RRCA
RRCA
ADD A,D
LD L,A
RET
;Из координат адрес в атрибутах
;H-X, L-Y
ATR_ADR
LD A,H
ADD HL,HL
ADD HL,HL
ADD HL,HL
LD H,#36 ;#36, если экран с #C000
;#16, если с #4000
ADD HL,HL
ADD HL,HL
ADD A,L
LD L,A
RET
;Чанковый метод стирания окна. 17 фаз
;DE - координаты, D-X, E-Y
;HL- адрес чанки 8*8 пикселей
;BC - размер окна, B - по Y, C - по X
CHANX
LD A,17 ;кол-во фаз
LD HL,CHANKS
LOOPch
PUSH AF
YSZ LD B,24 ;Y-размер
CSZ LD DE,#0 ;координаты
CHNK1
PUSH BC
PUSH DE
PUSH HL
CALL SCR_ADR
LD B,(HL)
INC HL
LD C,(HL)
INC HL
LD A,(HL)
INC HL
LD L,(HL)
LD H,A
XSZ LD A,32 ;X-размер
CHN1
EX AF,AF' ;'
PUSH DE
LD A,(DE)
AND B
LD (DE),A
INC D
LD A,(DE)
AND C
LD (DE),A
INC D
LD A,(DE)
AND H
LD (DE),A
INC D
LD A,(DE)
AND L
LD (DE),A
INC D
;
LD A,(DE)
AND B
LD (DE),A
INC D
LD A,(DE)
AND C
LD (DE),A
INC D
LD A,(DE)
AND H
LD (DE),A
INC D
LD A,(DE)
AND L
LD (DE),A
;
POP DE
EX AF,AF' ;'
INC E
DEC A
JR NZ,CHN1
POP HL
POP DE
POP BC
INC E
DJNZ CHNK1
INC HL,HL,HL,HL
POP AF
DEC A
PUSH AF,HL
BIT 2,A
CALL Z,FADE_OUT
POP HL,AF
HALT
HALT
JR NZ,LOOPch
FADE_OUT
LD H,#5B+#80
LD L,0
FOUT1 LD A,(HL)
AND %00111111
SRL A
LD (HL),A
DEC HL
BIT 3,H
JR NZ,FOUT1
RET
;Копирование установок из игры
;для работы с ними
;HL - откуда копировать
FROMGAM
LD HL,SET
LD A,QVALUE ;кол-во переменных
LD DE,SETUP+1
FRG1 LDI
INC DE
INC DE
INC DE
DEC A
JR NZ,FRG1
RET
;Копирование установок в игру
;DE - куда копировать
TOGAM
LD A,QVALUE ;кол-во переменных
LD HL,SETUP+1
TOG1 LDI
INC HL
INC HL
INC HL
DEC A
JR NZ,TOG1
RET
;Работа с диском
TRDOS
EX AF,AF' ;'
XOR A
LD (23823),A ;Обнуляем код
LD (23824),A ;ошибки TR-DOS
LD (23570),A ;Блокируем поток
EX AF,AF' ;'
PUSH HL
LD HL,(23613)
LD (DOS_ERR+1),HL
LD HL,DOS_ERR ;Устанавливаем
EX (SP),HL ;свой обработчик
LD (23613),SP
JP #3D13
DOS_ERR LD HL,0
LD (23613),HL
LD A,6 ;Восстанавливаем
LD (23570),A ;поток
LD A,(23838)
LD B,A
LD A,(23823) ;Проверяем
AND A ;была ли ошибка
RET Z
CP B
RET Z
INC A
RET Z
ERR LD B,10
LD A,2
OUT (254),A
HALT
DJNZ $-1
XOR A
OUT (254),A
RET
ERROR
CALL ERR
JP TOGAME
;Сохранение установок
SAVE_SETUP
CALL SETIM1
LD A,PG_MUZ
CALL PAGE
CALL MUTE ;выключаем музыку
;Ищем файл
; CALL FILE
LD A,9
LD (23814),A
LD C,#18
CALL TRDOS
JR NZ,ERROR
LD C,10
CALL TRDOS
LD A,C
INC C
JR Z,ERROR ;нет файла!
;Высчитываем адрес файла (сектор,дорожка)
LD C,8
CALL TRDOS
;Читаем сектор
LD DE,(#5CDD+14)
LD BC,#0105
LD HL,BUFER
PUSH DE,HL
CALL TRDOS
;Переносим установки
LD DE,BUFER+14
CALL TOGAM
;Сохраняем сектор
POP HL,DE
LD BC,#0106
CALL TRDOS
JP TOGAME
;FILE LD HL,FILENAM
; LD DE,#5CDD
; LD BC,9
; LD A,C
; LD (23814),A
; LDIR
; RET
;FILENAM DB "VERA B" ;Имя файла для сохранения
;123456789
;Драйвер переключения страниц для 128-го
;A-номер нужной страницы
PAGE
PUSH BC
LD (NUMPAGE),A
PG_ OR 16+8
LD BC,#7FFD
OUT (C),A
POP BC
RET
NUMPAGE DB 0
CHANKS DW #FF77,#FFFF
DW #FF77,#FFDD
DW #FF77,#FF55
DW #FF55,#FF55
DW #FF55,#EE55
DW #BB55,#EE55
DW #BB55,#AA55
DW #AA55,#AA55
DW #AA55,#8855
DW #2255,#0055
DW #0055,#0055
DW #0055,#0044
DW #0011,#0044
DW #0011,#0000
DW #0010,#0000
DW #0000,#0000
DW #0000,#0000
TR0 DB "В е р а",0
TR1 DB " Perspective",0
TR1_ DB "представляет игру",0
TR2 DB " .pO,",0
TR3 DB " iP 7p",0
TR4 DB " .P 9;",0
TR5 DB " d' ,p",0
TR6 DB " i; d6",0
TR7 DB ".D 89pPo",0
TR8 DB "iP 6' 7P",0
TR9 DB "d: d'",0
TR10 DB "8; 8'",0
TR11 DB "Qp oP",0
TR12 DB " O:q6",0
TR14 DB "Художник",0
TR15 DB "Композиторы:",0
TR16 DB "Программисты:",0
TR17 DB "Авторы сценария:",0
TITRES
; DB BORDER,1
DB PAUS,0
DB PAUS,0
DB PAUS,0
DB CLS,24,32,0,0 ;код,Yразмер,Xразмер,Y,X
DB PAUS,100
DB BOLD
DB NCRD,10,83
DB LINK
DW TR1
DB NORM
DB PAUS,4
DB NCRD,10,83
DB LINK
DW TR1
DB PAUS,200
DB BOLD
DB NCRD,11,83
DB LINK
DW TR1_
DB NORM
DB PAUS,4
DB NCRD,11,83
DB LINK
DW TR1_
DB PAUS,150
DB CLS,24,32,0,0 ;код,Yразмер,Xразмер,Y,X
DB BOLD
DB NCRD,5,105
DB LINK
DW TR2
DB NORM
DB PAUS,4
DB LINK
DW TR2
DB BOLD,PAUS,4
DB NCRD,6,105
DB LINK
DW TR3
DB NORM
DB PAUS,4
DB LINK
DW TR3
DB BOLD,PAUS,4
DB NCRD,7,105
DB LINK
DW TR4
DB NORM
DB PAUS,4
DB LINK
DW TR4
DB BOLD,PAUS,4
DB NCRD,8,105
DB LINK
DW TR5
DB NORM
DB PAUS,4
DB LINK
DW TR5
DB BOLD,PAUS,4
DB NCRD,9,105
DB LINK
DW TR6
DB NORM
DB PAUS,4
DB LINK
DW TR6
DB BOLD,PAUS,4
DB NCRD,10,105
DB LINK
DW TR7
DB NORM
DB PAUS,4
DB LINK
DW TR7
DB BOLD,PAUS,4
DB NCRD,11,105
DB LINK
DW TR8
DB NORM
DB PAUS,4
DB LINK
DW TR8
DB BOLD,PAUS,4
DB NCRD,12,105
DB LINK
DW TR9
DB NORM
DB PAUS,4
DB LINK
DW TR9
DB BOLD,PAUS,4
DB NCRD,13,105
DB LINK
DW TR10
DB NORM
DB PAUS,4
DB LINK
DW TR10
DB BOLD,PAUS,4
DB NCRD,14,105
DB LINK
DW TR11
DB NORM
DB PAUS,4
DB LINK
DW TR11
DB BOLD,PAUS,4
DB NCRD,15,105
DB LINK
DW TR12
DB NORM
DB PAUS,4
DB LINK
DW TR12
DB LINE,64+7,16
DB BOLD
DB NCRD,16,107
DB LINK
DW TR0
DB NORM
DB PAUS,4
DB LINK
DW TR0
DB PAUS,0
DB PAUS,0
DB CLS,24,32,0,0
DB NCRD,5,68
DB "Enter - игровые настройки",13
DB " Space - перейти в игру"
DB PAUS,100
DB LINE,68,23 ;атрибутная полоса
DB NCRD,23,83
DB "www.vera.retropc.ru"
DB PAUS,0
DB CLS,24,32,0,0
DB PAUS,50
DB LINE,64+6,2
DB LINE,64+6,5
DB LINE,64+6,10
DB LINE,64+6,16
DB LINE,64+7,22
DB BOLD
DB NCRD,2,48
DB LINK
DW TR14
DB PAUS,4
DB NORM
DB NCRD,2,48
DB LINK
DW TR14
DB NCRD,3,72
DB PAUS,30
DB "Кирилл Каган (Surfin Bird)"
DB PAUS,40
DB BOLD
DB NCRD,5,48
DB LINK
DW TR15
DB NORM
DB PAUS,4
DB NCRD,5,48
DB LINK
DW TR15
DB NCRD,6,72
DB PAUS,30
DB "Дмитрий Жемков (C-jeff)",13
DB PAUS,30
DB "Андрей Пеунов (Bedjamen)",13
DB PAUS,30
DB "n1k-o"
DB PAUS,40
DB BOLD
DB NCRD,10,48
DB LINK
DW TR16
DB NORM
DB PAUS,4
DB NCRD,10,48
DB LINK
DW TR16
DB NCRD,11,72
DB PAUS,30
DB "Александр Шушков (Axor)",13
DB PAUS,30
DB "Александр Синяков (SAM style)",13
DB PAUS,30
DB "Сергей Бульба",13
DB PAUS,30
DB "Дмитрий Быстров (Alone Coder)"
DB PAUS,40
DB BOLD
DB NCRD,16,48
DB LINK
DW TR17
DB NORM
DB PAUS,4
DB NCRD,16,48
DB LINK
DW TR17
DB NCRD,17,72
DB PAUS,30
DB "Владимир Сивов",13
DB PAUS,30
DB "Александр Разумов"
DB PAUS,40
DB BOLD
DB NCRD,22,70
DB LINK
DW TR18
DB NORM
DB PAUS,4
DB NCRD,22,70
DB LINK
DW TR18
DB PAUS,0
DB PAUS,0
DB PAUS,0
DB CLS,24,32,0,0
DB PAUS,100
DB NCRD,10,97
DB LINE,64+7,10
DB "Верьте в добро"
DB PAUS,0
DB PAUS,0
DB CLS,24,32,0,0
DB PAUS,0
DB 0
TEXT0 DB " Клавиши в игре:",13
DB "1 - вкл/выкл музыки",13
DB "2 - вкл/выкл звуков",13
DB "3 - вкл/выкл мыши",13
DB "CS/SS/правая клавиша мыши - выкладывание вещи",13
DB "C - центровка героя на экране",13
DB "CS+3, CS+4 - листание вещей в мешке",13
DB "Колесо мыши (ZXMC) - листание вещей в мешке",13
; DB "Клавиши управления курсором + М - скролл карты",13
DB "Удержание \"Fire\" + направление - скролл карты"
DB 13
; DB "Enter/клик в окне диалога - продолжение общения",13
DB "Enter/клик во время диалога - следующая реплика",13
DB "CS+1 - пропустить диалог",13
DB 13
DB " "
TR18 DB "(c) 2003-2008, Perspective",0
TEXT1 DB " Игровые настройки",13
DB "Кемпстон мышь",13
DB "Колесо мыши",13
DB "Sinclair-джойстик",13
DB "Клавиатура (Q,A,O,P,Sp)",13
DB "Ускорение курсора",13
DB "Музыка",13
DB "Звуки",13
DB "Сохранить и выйти",13
DB "Выйти без изменений",0
TEXT2 DB " ",13
DB " ",13
DB " ",13
DB " ",13
DB " ",13
DB " ",13
DB " ",0
TEXT3 DB "v.1.02",0 ;Версия сборки игры
;Установки
;Формат: 1-й байт 0 - значит меняется значение только 0/1
; 1 - значит меняется в диапазоне
; второй байт - мин. значение
; третий байт - макс. значен.
; 2 - значит меняется местами с
; тригером по адресу 3,4 байтов
; если байт=255 - значений нет
; Само значение во 2-м байте
SETUP
DB 0,0,0,0 ;мышь
DB 0,0,0,0 ;колесо
STJ DB 2,0 ;синклер
DW STK+1
STK DB 2,0 ;клавиатура
DW STJ+1
DB 1,0,-4,4 ;ускорение курсора
DB 0,0,0,0 ;музыка
DB 0,0,0,0 ;звуки
DB #FF,0,0,0
DB #FF,0,0,0
NUMLINE DB 0 ;Номер пункта
COORD DW #0701 ;Координаты вывода пункта
font INCBIN "Fontix4.C"
;SCR INCBIN "C:VeraTitl.C"
IMVEC EQU ($/256+1)*256;вектор вторых прерываний
BUFER EQU IMVEC+257
ENT
end
ORG INTRO
DISPLAY "LEN=",(font+1664)-IM2
DISPLAY "Старт интро ",INTRO
;ORG BUFER
savebin "intro.c",begin,end-begin