Тетрадь о сборке Wolfenstein 2004.
В квадратных скобках - дополнения для читателя. То, что было ок-
вадрачено в тетради,здесь в фигурных скобках. Текст в косых чер-
тах - зачёркнутый.
[стр.1]
12xii03
WaterSun [один из chip'ов Moran'а] free=#4200, т.е. player=#6000
etc. Наложил меню Nikfe X-Color.
Загрузчик универсальный. Сначала искать на диске, потом в архиве
{потом на др. диске, архиве?}. Как грузить файлы >32k (меню,
хелп...)??? Всё ок, через буфер.
IMVEC=#5b00 - плохо! [Теперь] CHNMAP-512. SBPL [место размещения
5-секторного WAV-плейера под Sound Blaster, выкинутого из игры в
2000 году] не смещён, но надо бы.
SCALTAB [таблица, содержащая высоты и текстуры всех полустолбцов
экрана] заполняется в LINES [цикл сканирования стен для нового
кадра] не через INC H...DEC H [для стен верхнее и нижнее данное
в SCALTAB совпадают], а через LDIR после SCAN. Из п/п SCAN [п/п
сканирования карты по определенному направлению] исключены
коррекции DXNOW, DYNOW [вектор сканирования. Теперь
корректируется снаружи - чтобы использовать SCAN для зрения
монстров. Но оказалось неудобно из-за переменных процедуры.
Зрение монстров должно вызываться по прерыванию, а сканирование
стен - мимо прерывания, в то время как переменные п/п лежат в
опредёленном месте]
[кнопка] N [позже выкинута] = nomonsters (+1 fps) [замерено на
карте Entering the castle, интеллекта монстров тогда не было]
POOR MEDIUM HI-END
128k 256k 1M
menus:{AY???(FD!)} COVOX FB SD
NO DIG
turbo:~100% ~140% >=200%
video:small big big
i-lace i-lace full
[i-lace - расчет только каждой 2-й строчки]
interscan interscan full
[interscan - расчет каждого 4-го столбца, а не 2-го. Настройка
"ray precision"] [сбоку подписано: "почти как надо", "quadrascan
13xii", "full при nokey"] [quadrascan - расчет каждого 8-го
столбца, как в DooM-B]
speed:80%(6 frm) 100%(5 frm) 120%(4 frm)
{3d13 turboload 3d13}
mono mono color walls/goods/monsters
/countmonsters =10 =20 =40/
- screenmsgs screenmsgs+digisound
menu: load memory(packed) memory
no handmove yes handmove yes handmove
- cached cached (detect?)
- moused moused (detect?)
music:/off/on on on
troops off on on
[появились кнопки I (нынешняя R) и H. V и T (нынешняя M) уже
были]
13xii
+экстраполяция quad[rascan] с сообщением. Quadrascan: крайняя
правая четверка экстраполируется:
A B C
C=2B-A. Возможно переполнение. Убийство [переполнения]: перенос
при сдвиге д.б. равен переносу при вычитании. [это про высоты.
Переполнение координаты в текстуре исправлено 16viii04]
+ожид. отпуск. клавиш.
Почему RL иногда тормозит? вместе с музыкой
/а) потерян хвост цепочки монстров/
/б) неверное кол-во ракет/
/в) сист. регистры? FIXED/
г) SCMONS0 неверный выход FIXED.
Нужен time out.
Висло при самоубийстве FIXED (EI).
Ракету сильно уносит в сторону, куда смотришь. 13xii: ADD->SBC
(KR).
Самопроизвольно появляется scull key FIXED: везде XOR A/OR D.
FIXED divtab (восьмерки вместо 1,2) [таблица размера шариков]
Когда кончаются патроны и видно оружие, удар рукой действует на
расстоянии FIXED:
/push bc/
CALL NZ,BOOH
/pop bc/
=>LD C,A
Действует и исчезает звезда (под ней уменьшается защита, как в
Quake), IV, QD. Считает пока 8bit числами, без атрибутов [в
Quake IV, QD и звезда окрашивали поле зрения игрока каждая
по-своему]. Зато мерцает при исчезании.
[процедуры] CROSS, AYOFF, /OUTME/ [теперь] в модуле.
В цикле RL - monster (RLMONS0) не восст-ся адрес HL FIXED.
Общие убийства монстров с коррекцией по QD. Раненых бить можно
[раньше было нельзя]. Интересный эффект: если стрелять из
PERFORATOR'а до трупов, то патронов тратится больше, чем если бы
вовремя прекратить. Хорошо! /при убийстве PERFORATOR'ом может
повиснуть/ Нужны разбросы силы попадания.
При невзятии heal [из-за энергии>100] энергия уменьшалась до 100
FIXED. VASE дает 1% heal. VASE и TREAS[URE] дают деньги (их не
видно). Если сбить защиту, имея звезду, исчезает картинка; если
защиты уже нет, то она всё равно показывается после исчезания
звезды FIXED.
[стр.2]
14xii
[В этот день текстуры монстров и предметов были окончательно
размещены по двум страничкам. Zombieman - в PGSPR, остальные
монстры - в PRSPR2. Монстры рисовались в разные времена в
следующем порядке: zm, cacodemon, commander, herr major(by shiru
otaku), dog(сконверчен из оригинального Wolfenstein), ogre,
hitler(сделан из herr major'а) В тетради стрелочками указано,
каких фаз исправлялись координаты в таблице MONSTAB, там числа в
другом формате и потому содержали ошибки. Исправлялось 4i,
15xii, 20vii, 28vii, 14viii. Числа означают, кто по какой
X-координате лежит в PGSPR2]
shiru (lord) [herr major]
attack: 0-16
move1: 17-25
move2: 36-53
scared: 54-71
cacodemon
caco: 72-83 - attack?
scared: 84-95 - norm? симм[етричный спрайт]
dying: 96-107 - scared? /
troop: 108-119 - только низ 15xii
lamer [commander]
move1: 120-133
move2: 134-148
scared/attack: 149-162
dog
move1: 163-174
move2: 175-185 -low
attack: 186-199
scared: 200-211 - low
ogre =demon [Спрайт демона не нарисован. Ogre и demon отличаются
друг от друга энергией]
move1: 212-226
move2: 227-240
scared: 241-255
6 монстров, демона (N16 [по нумерации предметов в WolfEd])
меняем на ogre (N19). Брать время действия QD, IV и 666 из карты
OK 17xii. FIXED: было prizes, надо got.
SETACNT [отсчитывать время] в игровых циклах?
SPR [N12-13] N17 N18 N15 N14 N19 N16
zm shiru caco lamer dog ogre demon
E=70 E=200 E=250 E=120 E=50 E=150 E=250
0 3 6 9 C F 12 15 18 1B
0 move1/2 G bigAM col <-
3 {move2} R пулемет {boom} |
6 back MegaH rifle стол |
9 attack RL heal rock | как в zm
C ранен ammo IV елка |
F умираю bull 666 {cell} |
12 troop roc vase50$ QD --то есть здесь
15 - key chest500$ |
^^^ <-----логически здесь [для п/п COLLnM]
(не более 1)
хотя... пусть закр. двери открываются навсегда! и ключи
декрементируются. ORG '($+255)*256=ORG $+255/256<8=DS .(-$)
Собака не влезает в ниж. часть [текстуры] FIXED 17xii
Виснет иногда при попад. из RL+QD FIXED
Дорисовал посл. стр. графики + QD
15xii
MONSTR [процедура разворачивания в SCALTAB монстров и предметов
по их координатам]: в T10MONS [таблица монстров, которые должны
мыслить в данный момент. Максимум 10. Впоследствии
ликвидирована] все типы монстров, кроме трупов. Шагают все.
Адреса+4! Пока собаку убить нельзя, кроме как из RL.
16xii
Дорисовал L3. При вызове MONSTR важна глубина и содержимое
стека. Пули летают через все предметы (низкие), кроме трупа
Cacodemon'а. Можно убить собаку, кроме как рукой. Рукой нельзя.
17xii
При добавлении нет переполнения. Проблема с трупами - они могут
завалить проход! Можно считать камни и трупы разными (сделано),
все трупы проходимыми. В 256[k] можно добавить лишние спрайты.
????up-настройка. MAIN "WOLF*". При загр. ур. ATR=color, keys,
shots, killed, got, timer=0. При пуске SETATR=ATR. Опустил
собаку. Перенес PRSPR и т.д. в PP[исходник W3D?PP*.H]
NoGet POP AF - либо AF, либо адрес вых. из п/п ADD100
POP BC - в начале [п/п] было POP DE,HL..PUSH HL,BC
PUSH DE:RET
В RL теперь 0 патронов. Зап[ертые] двери открываются насовсем,
ведётся учет ключей.
[стр.3]
18xii
(John) надо убирать прицел при RL и руке тоже 19xii FIXED. Надо
[Chip Tracker] плейер с IM2, но виснет. И EXX не определить.
Стены [перед запуском WolfEd] вертятся сами [из вертикального
спрайта делается горизонтальный]. Файлы[, перенесенные] в
[директивы] DD: TILE, ICONS!, убраны ORG $-...
WED[он же WolfEd]: в каталоге быстрая стрелка, Demon=250 ед.,
прав[ильное] опр[еделение] мыши [было через порт #ff, теперь
через вектор прерывания], FIXED bug: CS/Z - стереть, [CS/]X -
стереть в буфер FIXED 19xii, [CS/]C - взять[, V - вставить].
CALL SCRLCONT:LD A,E! SEL_TRI: 0 - выделяем, -1 - уже выделено
(исх. сост.) S-kill sel., D-beg.sel., F-end sel. CLICK1 - почему
4 ADD A,A?
20xii
Трудно ловить прерывание прямо в главном цикле [цифрового
плейера] - т.к. могут возникнуть недоинкрементированные адреса.
Лучше определить кол-во циклов во фрейме и после гл. цикла
сделать EI:JR $ [HALT] Время плывёт...
Убрал из TOPO.CHI ненужный сэмпл - for HELP? м.б. это ремикс
старого музона Moran'а? MAX SMPLS=#9900
WaterSun: #BB00-#4200=#7900 SMPLS. Нестаб. ШД [шина данных на
моем пентагоне]? I=59 не раб. [позже выяснилось, что компьютер
не виноват] Удалось сделать висящие прерывания, с предупрежд-ем
только перехода ч/з хвост сэмпла. Но откуда еще щелчки?
Возможно, из-за сверх-offset'ов. Исправил PLAYER10: не грузит
дальше пустого сэмпла. Но играбельность не гарантир-ся... Виснет
на WaterSun(!) Если есть сэмплы 0,2,3,..., играет плохо. С "1" -
лучше. Щелкает на [позициях] #18-1c. Сэмпл 7 не помогает против
свиста в "6". /6-й на месте 1-го уже не свистит :- глюк на
G-1F#1 6070./ Свист от запорченного #FFXX! [Вариант плейера
под Covox при вызове прерывания] может перепутать DE<>HL FIXED
23xii - сразу меньше бульканий.
22xii
Дорисовал менюшку [исправил на картинке Никфа "Greetings" на
"Options"]
23xii
Глюк в плейере - не декодировал часть сэмплов, портит #FFFE.
Сделал рулилку по опциям [с цифровой музыкой на фоне]. SD play
(не проверено). Была разница SD-COV=33-8, стала =33-16.
Надо в PLAYER'е и в самом CHIP'е убить LD E,A:... A,E из INCD2/4
(SDPLAY) FIXED 24xii
2i04
WED10 в одном файле (шрифт по 2 байта в одном). Пробный
загрузчик #3d13 - работает. AYPLAY [плейер звуковых эффектов в
WOLF]: L-частота; автовыбор канала B/C для ooh/aah ([выбирается
канал,] где нет ENV), автовкл. TONE (не было).
Музыка MUZ#...C, без иниц-ции (PT Util). Костяк для SAVE/LOAD
"WOLFSAV#" Они д/б одинакового размера (сейчас 1k:
ENDMONS-GAMEDATA, плюс надо подгружать muz, gfx и карту) и
д[олжны] писаться поверх. Надо предусмотреть DISK FULL [при
free<saved] и INVALID FILE [при savedsize<>overwrittenfilesize
или при loadfilesize>BC].
+селектор типа компа, music=SHARMY. Музыка и графика -
подгружаемые. Драйвер и плейер(?) в общих адресах для всех? и
шрифт тоже? Загрузка с CS=safe mode? firstrun mode?
Время должно течь в игровых циклах везде. [Сетевой] обмен тоже
по игровым циклам, тогда не д.б. разной скорости.
Options [должны быть]
game speed
music ON/OFF... - OFF/SELECT (для уровня с 1-го по играемый)
AY effects volume ... +0
window BIG/SMALL
precision HI-MED-LOW
high memory gfx ON/OFF
title screens lace OFF/PLAIN/WAVE [gigascreen нельзя - на
экранах diamond штриховка]
digital music [AY]/COV/SD/NONE - port ...
loader #3d13/turbo
reinit disk model - disk A/B/C/D
save
reset to defaults (для опр. типа компа - 3 шт)
3i
Prizes есть? FIXED. Убить level, muznr, gfxnr. Вместо них поле
"WLF" [потом пришлось возвращать обратно]
TURBO SOUND для эффектов?
[стр.4]
Сохранять в DEMos пакеты наподобие обменных (их же?) каждый
игровой цикл. Назад не прокрутить, вперёд - ускорить частоту
игр. циклов. При обмене только полное соотв-е игровых
пространств!
xy
XY
angle - на момент выстрела, т.е. конец игр. цикла
#weapon
[патроны]
shot Y/N
open Y/N
{energy
armor -до хода монстров или после?
armor type /
keys
QD,666,IV}
global time и др. - в заголовок, туда же табл. MONSTRS?
Как уничтожать взорвавшиеся шары? Контролировать только в конце
цикла?
PL1 PL2
... ...
игра игра
--------- -----------
выстрел / мой выстрел - CURMON(Mid)
обмен / здесь уже нужно знать их!
/ обмен - или LOAD/SAVE.Здесь же спецкнопки?
его выстрел / выстрел монстров - коллизии? ^
--------- ----------- |
обработка энергий обработка энергий - или вне прерыв-й |
... ... (эквивалентно?) |
(только OPEN, FIRE, LOAD, SAVE 8i4)
При смене скорости игр. цикла нужно менять скорость MOVE [п/п
движения игрока] и MOVEKR [п/п движения шара/ракеты] или двигать
шарики неплавно. Двери: контролируемую (грубую) коорд-ту менять
каждый цикл. Для отображ-я использовать уточнение счетчиком +=51
(тем, к-й для цикла [теперь там не счетчик, а таблица во frame+1
байт с -1 в конце]) Цикл =5FRM. Выстрел в нем. FPS, LEG, QD,
666, IV, изм[енение] цвета экрана тоже. Изм[енение] цвета экрана
также в HARMME, причем время в зав. от силы повреждения/16.
Межуровневые картинки надо скрыть и вместе с тем улучшить
сжатие... в WOLF1 без заXORивания, а дальше можно выдумать.
AY digiplayer глючит :( RECODE и так не нужно... Из-за C48<>C48A
FIXED 3i4. Первый UNILOAD'er: в резиденте 2 операции: INI и
LOAD. Теоретически можно использовать возм-сть обмена экранов,
тогда UNILOAD сможет делать дисковые операции с любой памятью
без резидента.
4i
Надо иниц[иализа]цию /с черным экраном/ - это не надо, есть 1k
буфер. Чтение каталога RAR и приведение имен к 8.1. Депакер
через буфер 1k в той же страничке - тогда не нужен paklen. В
дескрипторе всего один лишний байт - позиция в секторе (вместо
secsz, при установленном bit7 в sect#). Т.е. хватает 14 байт.
При желании можно грузить и файлы ч/з буфер в 1k, тогда не будет
наложения ост. части сектора (но неск. медленно - однако таких
файлов мало => незаметно). HISCORE, SETUP и отгрузки надо
сохранять ч/з одну и ту же п/п - fixedsize, overwrite. HISCORE
зашифрованный и не текстом? SETUP в конце добивается Enter'ами
до 1k? Можно ограничить каталог только теми файлами, к-е
фигурируют в SETUP (можно их вызов не по имени, а по коду в
SETUP).
Убито затирание #5b00 в INI.
AYPLAY - [более скорое] время обрезания звука не по VOL=0, а по
VOL=6.
6i
П/п-мы загрузки файлов уровня. При вводе SAVE/LOAD выкл. музыка
и ставится IMER=EI:RET.
7i
Адрес монстра, если его нет под прицелом,=#00XX. Считаются
shots&killed, в конце игры - totalsh и totalki, а тж. totalgo и
totalti, показыв-ся время. [По кнопке C] показ-ся total time, в
уровне - без учета времени уровня. Все файлы заглавные [потому
что строчные буквы в шрифте - русские].
Почему в MSG включается PGICO?
Почему виснет #3d13 в игре? IM1, EI, бейсик почти чист (кроме
#5E00), stack=#5FF1... IY сбит!
[стр.5]
Шарики пропадают на лету?
Сообщения теперь не затираются - идут сплошным потоком даже при
затемнённом экране (верх 1/3 не чистится). TCHREC [одна из 2
таблиц для построения больший таблицы чанков], MAKCHTB [п/п
построения этой таблицы] не затираются.
[Сделаны] отгрузки.
Пока не сохр-ся параметры дверей и шары - их надо еще обнулять
при загр. уровня FIXED. Не перерис-ся пушка FIXED.
Почему нет сообщ-я NO FILE? FIXED. При загрузке проверяется
переполн-е длины! [в BC указывают макс. длину] При обмене не
нужно передавать параметры ботов - их каждый комп может гонять
самостоятельно. Надо только RND-генераторы совместить (не
обяз.=0).
Пришлось [в обработчике прерываний запоминать по] PUSH:POP
[содержимое] (CURPG) [текущая включенная страница, обновляется в
п/п OUTME], т.к. F66 [шрифт 6x6 для цифр] теперь в страничке.
Убито 7 байт в конце 4-й и 8-й процедур масштабир-я [из тех,
которые генерируются в #0000 или #6000]. PGLOAD [страница
дискового драйвера]=PGICO [страница спрайтов оружия и иконок].
Почему закрываются снова запечатанные двери? При шаге открытия 1
этого не было.
INC A
JR Z,NOclEX вот это
DEC A /FIXED 8i4
...#BF...-#BF /
Двери закрываются плотно (убито JR Z... в OPEN) 8i4.
В SAVE/LOAD в конце DI:IM 2, но _до_ этого NOKEY [п/п ожидания
отпускания клавиш] 8i4.
Если locked door в процессе открытия, но открываю др. дверь, то
locked закрывается! (а ключа уже нет) FIXED 8i4
(BIT 5,A:JR Z:XOR A в OPEN2).
После загрузки моргает экран :( но вроде не сбрасывается...
сброситься может, если LOAD при незаполненной SCALTAB. FIXED
8i4: SCALTAB в отгрузке; изначально в нем PGWALL.
Вернул шрифт для цифр в PRS [п/п печати шрифтом 8x8, дежащим по
адресу FONT] (в [п/п] FPS [включен] PGICO [где лежит этот
шрифт]).
Если коллизия в IMER, то либо удаление не в ней, либо вместо
удаления - установка бита удаленности (можно с чисткой в конце
кадра - довольно трудно,- можно без), либо построение табл.
вимимых монстров в IMER (скорость при ~10FPS хуже не станет, но
проблемы...). Оч. удобно RES 7,Y - в SCMONS0 [цикл перебора
монстров для вывода на экран и контроля счетчиков их
ранения/гибели] само фильтруется, но в кругах - надо
искусственно 9i4 пока не по прерыв-ю.
[Знакоместные] строки 4-7 стираются вместе с низом экрана при
LOAD - остаются только 0-3 9i4.
QD,IV,666 исчезают некрасиво (/#3D00 не содержит 9 нулей???/ не
была вкл. PGICO) FIXED 9i4.
При 666 взятие защиты стирало звёздочку FIXED 9i4.
При SAVE/LOAD//EXIT/ не выключался кэш FIXED 9i4 п/п IM1, потом
IM2. TRUP [выход из игры - поражение] вызывается после кадра по
HEAL=0 9i4. Монстры уже обрабатываются так.
QD не работало на монстров FIXED 9i4 и на игрока тоже FIXED 9i4.
Один раз при QD во время самоубийства RL на ниж. половине экрана
в середине был кусок левоты :( Ещё левота проскакивала при
загрузке - в верх. части.
10i
Нет SP в COLLIS и TRUP. Сделана обработка коллизий в IMER -
предметы резиновые :) yx, YX - для прерыв-я, LBC/LDE/LHL - для
OFF-INT.
24i
FPS считается правильно (для посл. неск. секунд) - копятся NFPS
и AFPS, когда переполнение - делятся пополам. "DISK OVERFLOW"
вроде должно выводиться. Надо ускорить derar в UNILD (FIXED 25i)
и пофиксить (не строится пустое дерево) (FIXED 25i). Ускорил
сканирование при поиске коллизий. Всё равно 9.8fps<10fps (I[ray
precision]=3, V[video size]=16)
[стр.6]
25i
CURPG=#5B5C. MONSTERS [таблица размещения предметов и врагов -
по 8 байт на штуку] по адресу div8<3 (ORG -$&7) [для шагания по
таблице командами INC L]. Все равно <10fps. Не видит 2-й файл в
архиве - FIXED. Случайное движение монстров. Но коллизия иногда
вешает комп %(. Почему? Страничка не виновата (PGMAIN). Монстры
честно удаляются установкой RES 7,Y (оно и проверяется).
Сделал N10MON [текущее число монстров в ныне не существующей
таблице T10MONS]=0 при загрузке уровня. /Виноват LD (IX),A, но
почему? или/ это опять DB "---- по TAB<>8! [при TAB<>8 и
незакрытой кавычке аласм компилировал лишний байт RST#38] FIXED.
Абсолютно синхронное движение (варианты: 4frm,5,6).
Не должны двигаться трупы и т.п. Только FASE=0! Но должны думать
(видеть спиной) при FASE=6 и стрелять через время при FASE=9. Из
FASE=0 должны периодически переходить в FASE=9. Не стреляющие
должны идти примерно на игрока и нападать там.
27i
Надо после каждого вызова MOVKR проверять на взрыв; оно так и
есть.
28i
Табл. T10MONS нельзя составлять OFFINT - нельзя будет делать
demos! FIXED 1ii
31i
Правильно перекрываются объекты разной высоты. Объект также
теперь видно, только если видно его середину (speed up). INKEY
[опрос клавиш движения], CHVIDE [смена размера экрана по кн.V] -
в модуле. Только почему-то мало FPS :( Надо объективное
timedemo. В стоячем положении (нет клавиш и поворотов) картинка
строится с QSC[ray precision]=1. Надо отключабельно (FIXED 18ii
кнопка B [при сборке игры убрана]).
Более линейное движение врагов. Проц. RND=RAND/256.
RAND=RAND*17+20981 [числа взяты от фонаря]. При старте уровня
(не LOAD):=0.
1ii
FIXED T10MONS (таблица уничтожена). Попадал, даже есть не
нацелен. Было убито (CURMON+2)=0 перед SCMONS0 FIXED. Нельзя
записать демку из-за CURMON :( Придётся его и расст-е в (Mid)
хранить тоже.
3ii
Дуплексный режим по AY был бы быстрее? Вряд ли...
6ii
В UNILOAD должен быть WOLFNT, {FONT66}, INKEY, {SETIM}, SHUTAY.
Наличие CACHE и K.MOUSE тестируется [должно!] при запуске меню
игры!
Quit to:
CACHE pg0 ->0
CACHE pg0 ->#66
CACHE pg1 ->0
CACHE pg1 ->#66
GLUK (через CACHE. Можно ли без?) CACHE: 10:IN A,(#7b) при вкл.
128pg1 и DOS (сойдёт и для QC2.82 - там начало #38). NOCACHE:
OUT (C),A /в начале DOS/ или в конце (#3FD1=OUTI). Тогда переход
на RST #38 [которого д.б. много в конце странички Gluk'а, и
который в Gluk Service содержит команду] RET (SP=ПЗУ).
Естественно, DI. А как попасть в DOS? Или при вкл. pg1 войти в
#3D44 (RET). [Реально лишь при знании содержимого #3dxx в
страничке Gluk Service. Там в определенном месте должен быть RET
(условный или безусловный)]
128 MENU
48 BASIC /48k {/128k}
48 BASIC /MAX
ASM #51
STS #57
DOS /48k {/128k}
DOS /MAX
{Quick #17?} - сохранённый в TOPMEM или не надо?
boot
7ii
Попадание [монстра] и попытку выстрела RL [монстра] нужно
рассчитывать процедурой SCAN в направлении монстр->игрок (шаг
равен этому вектору / длину(sqrt(dx¤+dy¤)) * k. или делить на 2,
пока не попадет в диапазон).
Каков радиус соприкосновения шара со стеной? надо <128. Кажись,
вообще у стенки.
16ii
В PLAUTO2 [в цифровом плейере] автоопределение скорости
компьютера по 8 прерываниям. Почему-то числа в табл. частот
получились не расчётные :(
18ii
Монстр должен повернуться, когда он в квадрате /клипирования/
коллизии X,Y{+-1}. Тогда не нужно лишний раз перебирать. OK, но
пока в цикле HODMONS. Как бы ещё ускорить переборы?
А. сканирование;
Б. ход монстров;
В. коллизии.
Цикл коллизии теперь без IX! MONSTERS=7.35fps, NOMONS>9fps с
музыкой. Везде, где можно, RET и JR, JP по оптимуму, избегаются
редкие действия... 10fps=350.000 t/кадр (music~17500 t = 5%)
Кнопка B ON-OFF уточнение quadrascan/interscan для FPS...
Если неберущийся предмет лежит на берущемся, то в половине
случаев взять нельзя.
[стр.7]
Итак, для выстрела (ON-INT): SCAN работает по переменным: DXNOW
(dx = +-.15 [бит]), DYNOW (dy = +-.15), LBC+2 (y = 16.), LDE+1
(x = 16.) и LHL+1 (адрес!) [и флагу Z]. Результат: D=scale (вот
это нам нужно), C=texX, E=ID, B=pg. Результат в D нужно сравнить
с расстоянием до цели.
Почему удаление казалось бы лишних команд в новом CHIP player'е
портит сэмплы? FIXED 19ii. Не клался 0 в частоту "R--". Теперь
играет и без прерываний (причём с возм-стью оптимизации под
ON-INT и под OFF-INT). Ошибка в скорости уже терпимее: +-1.5%.
28ii
Перевел сорсы в MAIN #C6 [раньше одни исходники на моих дисках
были настроены на #C6, другие - на #46. Теперь везде #C6]. При
im2 плейер играет COVOX 7bit [это не настоящие 7bit: каналы
складываются попарно, делятся на 2, потом опять склыдываются и
делятся на 2], звучит лучше.
2iii
При DI попробовал 7bit - чуть лучше, но на грани слышимости :(
[а частота дискретизации меньше]