Ну или смешивать с кислотой по OR/AND/XOR, так нередко делают в спектрумовских играх, когда спрайты в воде.
Глянуть, какой вариант будет лучше выглядеть, если устроит - так и делать. Маска при этом не нужна, смешиваем сразу спрайт.
Ну или смешивать с кислотой по OR/AND/XOR, так нередко делают в спектрумовских играх, когда спрайты в воде.
Глянуть, какой вариант будет лучше выглядеть, если устроит - так и делать. Маска при этом не нужна, смешиваем сразу спрайт.
Нужны 4 тайла паутины: без травы, трава слева, трава справа и с обеих сторон.
Решение какой отрисовывать принимать в зависимости от соседей справа/слева. Может на них трава расти или нет.
Возможно еще 5-ый с кирпичами на заднике.
То же самое можно сделать для каких нибудь динамических цепей, веревок и т.п.
Последний раз редактировалось TomaTLAB; 21.08.2022 в 11:27.
electronox necromancer
Да, как-то так если нормально делать. Зажрет память на 4 лишних тайла конечно, но что поделатьне оставлять-же паука без паутины, а то непонятно как он ползает по пустому месту вверх и вниз.
Пока-что памяти в обычном ОЗУ еще хватает вроде как. Всякую ерунду там для экономии в видеопамяти неотображаемой храню хотя это очень неудобно (доступ к ней та еще бяда).
Вообщем как-то получилось, ну пока и так попрет.
Паучок
[свернуть]
Последний раз редактировалось BlaireCas; 21.08.2022 в 13:06.
Заметил что после запуска игры, так же как и после запуска Krackout и RiverRide, не останавливается двигатель дисковода.
Таймер работы двигателя навешен на прерывание по обратному ходу луча.
Если обращение к дисководу больше не продполагается, то можно просто вызввать подпрограмму.Код:175306$:TST @#07130 ; Двигатель НГМД вращается ? BEQ 0175326$ ; Нет DEC @#07130 ; Уменьшить счетчик вращения двигателя BNE 0175326$ ; Еще не конец CALL @#07132 ; Вызов п/п выключения двигателя НГМД 175326$:
Если двигатель был запущен, он будет остановлен.Код:CALL @#07132
Последний раз редактировалось randomizer; 21.08.2022 в 21:45.
aberrant_hacker
BlaireCas(22.08.2022)
Нету такого в дизассемблированной версии. Не CALL @#07132, а CALL @7132. Идёт вызов подпрограммы не по адресу 07132, а по адресу, которая находится в ячейке 07132. Туда драйвер дисковода заносит значение 0134454, так что можно и так - CALL @#134454. Но это если контроллер дисковода есть. А если игра запускается с ЖД или грузится через стык С2, и нет контроллера дисковода, то будет TRAP4.
aberrant_hacker
Ошибок в дизассемблированной версии не может быть, т.к. она потом транслировалась и сверялась с оригиналом.
Ошибка у вас. Разберем.
По адресу 0175322 находится команда 004777 011604. Сразу видим, что метод адресации используется косвенно-относительный с кодом 77, а не обращение к абсолютному адресу с кодом 37. А раз это косвенно-относительный способ адресации, то для получения адреса исполнения команды CALL надо вычислить адрес ячейки с адресом запуска. Для этого сложим значение 011604 с адресом после этого слова 0175326, в итоге и получим 07132.
randomizer(21.08.2022)
Так и есть, Но тем не менее работало)Ошибка у вас. Разберем.
Работало, в смысле программа не обрушивалась, а в итоге возвращалась к нормальному выполнению)
- - - Добавлено - - -
В общем отключая прерывания по обратному ходу, нужно выполнить CALL @07132
aberrant_hacker
BlaireCas(22.08.2022)
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)