Info Guide
#06
03 декабря 2004 |
|
Gamedev - о сборке игры Wolfenstein 2004. Часть 1.
Тетрадь о сборке 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 - чуть лучше, но на грани слышимости :( [а частота дискретизации меньше]
Другие статьи номера:
Похожие статьи:
В этот день... 14 декабря