DEVICE ZXSPECTRUM1024 ;уровень 0-12 LEVDAT EQU #79C0 ;адр. нач данных уровня ORG LEVDAT begin ;****************************************************** ;********* ГЛОБАЛЬНЫЕ ПАРАМЕТРЫ УРОВНЯ **************** isRUNL RET ;#C9 - обычный уровень, иначе кодовый блок ;--------характеристики сторон-------(0)-обнулять вначале ;параметры играющего hTOWER DEFB 4 ;мак.число типов вооруж (1-4) hARC DEFB 1 ;0-2 (0) hHORSE DEFB 2 ;0-3 (0) hSHILD DEFB 1 ;0-2 (0) hBLADE DEFB 1 ;0-2 (0) hmaxC DEFB 3 ;1-3 чиcло возможн иccл закл свящ hmaxW DEFB 2 ;1-3 число --"-- закл волш ;дополнительные параметры играющего hmaxB1 DEFB 2 ;макс число стандарт зданий (0 или 1-2) hmaxB2 DEFB 4 ;maкc число доп эданий (0, 1-4) hWALL DEFB 0 ;0/17 - можно/нельзя строить стены ;параметры компьютера kTOWER DEFB 4 ;1-4 kARC DEFB 1 ;0-2 kHORSE DEFB 2 ;0-3 kSHILD DEFB 1 ;0-2 kBLADE DEFB 1 ;0-2 kmaxC DEFB 3 ;1,3 чиcло иccл закл (0-нет свящ) kmaxW DEFB 2 ;1..3 чиcло иccл закл (0-нет волш) ;----------- параметры стратегии врага ---------------- ;/wSTRATEG (1.ед.изм - 8тик) levMAX DEFB 7 ;макс число народу в группе (для уровня) = 1..10 levDEL DEFB 50 ;средн задержка межд сборами (для уровня) = 1..X lev1ST DEFB 12 ;нач задержка первого сбора = 1.. ;Тип уровня 0 ;обычный ;Тип уровня 1 ;атакованый охранник становится атакующим ;Тип уровня 2 ;см. тип 1 + охранники иногда идут в атаку levTYP DEFB 0 ;тип уровня (0-обычный) ;-------- цветовые настройки ------- COLOR DEFB #28 ;цвет поля ;-------- общие параметры уровня ----- MASTER DEFB 0 ; кто играет 0/1 - люди?кунги LEVEL DEFB 12 ; номер уровня MONEY DEFB 0,0,0,0,0,0 ;деньги WOOD DEFB 0,0,0,0,0,0 ;леc TASK_M ;задание: 3 строки по 20+1 символов = 63 incbin "../task/w112.tsk" LEVRES DEFB 0,0,0,43,0,0,127 ;текущее время прохождения ;------- используемые файлы ------- fsLAND DEFB 1; 1-4 fsMUS DEFB 1; 0-7 ;****************** Инициализируемые переменные **************** ;--------------- (входят в описание каждого уровня) ------------ ;/выбраные герои SEL_T DEFB 0 ;0-none;1-один;2-6-group;7-кунг,8-здание SEL_N DEFB 0,0,0,0,0,0 ;номера 6 выбр гер/зд sel_en DEFB #FF ;выбранный враг-цель sel_ti DEFB 0 ;время отображения цели ;/outLED LED DEFB 4,3,4,3,4,3 ;/putTX _msg DEFB #FF pTX_AD DEFW 0;WNAMES TX_AD DEFW 0;WNAMES pTXdel DEFB 0 ;t задержки на выв экcтр cообщ ;/M_PLAT isPLAT DEFB 0; 0/1-есть/нет площадки szPLAT DEFB 0; размер площадки под стр-во (1..3, 0-нет) bcPLAT DEFW 0; размеры adPLAT DEFW 0; позиция in ATR waPLAT DEFB 0; если стена - 1 ;/PAUSE onPAUS DEFB 1 ;0-включить паузу ;/SOUNDn NOTA DEFW se ;текущ нота se DEFW #FFFF ;конст levSND DEFB 0 ;0-макс громкость sIY56 DEFW 0 ;координаты снарядов priv_S DEFB 0 ;текущ приоритет (0-нет мелодии) NOTA2 DEFW se ;нота новой мелодии priv_2 DEFB 0 ;нов приор ;/STRATEG - variables pntX DEFB 32 ;-коорд т.сбора pntY DEFB 31 ;-/ pntNUM DEFB 0 ;-число оставшихся до конца сбора воинов (0-конец сбора, 255-нов сбор) pntDEL DEFB 22 ;-время до нач.след сбора/задержка на пр-во воина pntTAR DEFB #FF ;-объект атаки (0-101 - воины, #80.. -здания, #FF-нет) pntUNI DEFB 0 ;-отряд разнородный/однородный (0/member typ) pntEN DEFB 0,0,0,0,0,0 ;-разреш пр-во вида (3..8) (0-нет) pntMAN DEFB 0 ;тип пораждаемого воина ;/isEND END_1 DEFB 0 ;0/1/2-none/нет врагов/нет людей END_2 DEFB 0 ;не0-князь вошёл в пещеру TheEND DEFB 0 ;0/1/2-none/победа людей/победа врагов (устанавл в _cLOOP) ;-----------(резерв)------------- dummy DEFS 6,0 ;-----------процедуры------------ pcLOOP JR _cLOOP pcINI ;стартовая процедура RET ;_cLOOP ;процедура окончания под землёй ; LD A,(END_2) ; OR A ; JR NZ,_cLO1 ; LD A,(END_1) ; CP 1 ; RET Z ;_cLO1 LD (TheEND),A ; RET _cLOOP ;стандартная проц окончания LD A,(END_1) LD (TheEND),A if 1==0 ;-----pM защита2 TST#2 XOR A ;[**] LD HL,#4050 LD BC,#3600 tst20 ADD A,(HL) RRCA INC HL DEC C JR NZ,tst20 DEC B JR NZ,tst20 LD HL,#4043 CP (HL) LD HL,TST#2 JR Z,t20ok LD HL,_cLOOP t20ok LD B,$-TST#2+1 t20clr LD (HL),#C9 INC HL DJNZ t20clr endif RET ;------ обнуление основных структур данных --- DEFS #7AA0-$,#27 BULL DEFS 24*12 ;from #7AA0 MINE DEFS 8*8 ;from #7BC0 HBUILD DEFS 32*8 ;from #7C00 KBUILD DEFS 32*8 ;from #7D00 BUF512 EQU #7E00; буфер512 ;from #7E00 MAP EQU #8000; DEFS #1000 ;from #8000 map2 EQU #9000; DEFS #1000 ;from #9000 DSCR EQU #A000; DEFS #1800 ;from #A000 HUMAN EQU #B800; DEFS 48*16 ;from #B800 KUNGE EQU #BB00; DEFS 48*16 ;from #BB00 SLAVE EQU #BE00; DEFS 6*16 ;from #BE00 XY EQU #BE60; DEFS 102*4 ;from #BE60 ;NEXT EQU #BFF8; nop ;для мар2: ;0-своб.поле, 1-граница, 2 -непрох ;#38-#3F шахты ;#40-#5F здания людей ;#60-#7F здания кунгов ;#80-#AF люди ;#B0-#DF кунги ;#E0-#FF пленники ;------------------------------------------------------------ ;--------- Золото шахт ----- (4096+512 переносится на BUF512) datMIN DEFW 500,400,300,200,100,7,7,7 ;золото для шахт/100 ;0-чей (255-конец), 1-тип, 2/3-XY,4-none ;------ Описание героев и карты --- datHER incbin "../map/w112_s1.her" incbin "../map/w112_s1.map" ;-------Картинка----- datSCR incbin "../barkov/sword.scr" ;---------------------------------- end savebin "br/br112.dat",begin,end-begin ;in current dir (not in dir of this source)