Ну или смешивать с кислотой по OR/AND/XOR, так нередко делают в спектрумовских играх, когда спрайты в воде.
Глянуть, какой вариант будет лучше выглядеть, если устроит - так и делать. Маска при этом не нужна, смешиваем сразу спрайт.
Вид для печати
Ну или смешивать с кислотой по OR/AND/XOR, так нередко делают в спектрумовских играх, когда спрайты в воде.
Глянуть, какой вариант будет лучше выглядеть, если устроит - так и делать. Маска при этом не нужна, смешиваем сразу спрайт.
Нужны 4 тайла паутины: без травы, трава слева, трава справа и с обеих сторон.
Решение какой отрисовывать принимать в зависимости от соседей справа/слева. Может на них трава расти или нет.
Возможно еще 5-ый с кирпичами на заднике.
То же самое можно сделать для каких нибудь динамических цепей, веревок и т.п.
Да, как-то так если нормально делать. Зажрет память на 4 лишних тайла конечно, но что поделать :( не оставлять-же паука без паутины, а то непонятно как он ползает по пустому месту вверх и вниз.
Пока-что памяти в обычном ОЗУ еще хватает вроде как. Всякую ерунду там для экономии в видеопамяти неотображаемой храню хотя это очень неудобно (доступ к ней та еще бяда).
Вообщем как-то получилось, ну пока и так попрет.
Паучок
https://i.imgur.com/9bBlYIi.png[свернуть]
Заметил что после запуска игры, так же как и после запуска Krackout и RiverRide, не останавливается двигатель дисковода.
Таймер работы двигателя навешен на прерывание по обратному ходу луча.
Если обращение к дисководу больше не продполагается, то можно просто вызввать подпрограмму.Код:175306$:TST @#07130 ; Двигатель НГМД вращается ?
BEQ 0175326$ ; Нет
DEC @#07130 ; Уменьшить счетчик вращения двигателя
BNE 0175326$ ; Еще не конец
CALL @#07132 ; Вызов п/п выключения двигателя НГМД
175326$:
Если двигатель был запущен, он будет остановлен.Код:CALL @#07132
Нету такого в дизассемблированной версии. Не CALL @#07132, а CALL @7132. Идёт вызов подпрограммы не по адресу 07132, а по адресу, которая находится в ячейке 07132. Туда драйвер дисковода заносит значение 0134454, так что можно и так - CALL @#134454. Но это если контроллер дисковода есть. А если игра запускается с ЖД или грузится через стык С2, и нет контроллера дисковода, то будет TRAP4.
В дизассемблированной версии ошибка, проверял по коду ПЗУ на реальной машинке.
там JSR PC, @011604(PC), что эквивалентно CALL @#07132
Если контроллера дисковода нет(или загрузка производилась не с дисковода), то по адресу 07132 будет значение 0, а по адресу 0, инструкция RETURN.
Ошибок в дизассемблированной версии не может быть, т.к. она потом транслировалась и сверялась с оригиналом.
Ошибка у вас. Разберем.
По адресу 0175322 находится команда 004777 011604. Сразу видим, что метод адресации используется косвенно-относительный с кодом 77, а не обращение к абсолютному адресу с кодом 37. А раз это косвенно-относительный способ адресации, то для получения адреса исполнения команды CALL надо вычислить адрес ячейки с адресом запуска. Для этого сложим значение 011604 с адресом после этого слова 0175326, в итоге и получим 07132.
Так и есть, Но тем не менее работало)Цитата:
Ошибка у вас. Разберем.
Работало, в смысле программа не обрушивалась, а в итоге возвращалась к нормальному выполнению)
- - - Добавлено - - -
В общем отключая прерывания по обратному ходу, нужно выполнить CALL @07132