Можно скрин сделать с таблицей без рекорда, там результат тогда вверху будет. А мне эта игра нравится тем, что нужна только реакция, а точность почти не нужна. В играх, где нужна точность, у меня получается гораздо хуже.
кстати, да, именно смена пальца, постоянно нажимающего огонь, приводит к ошибкам — надо правильно выставить управление, чтобы смена пальца не ломала маневрирование)
Да, там эти участки, где приходится в центре экрана прятаться, самые сложные. Вчера на джойстике пробовал играть, похуже, конечно, но до орбитальной станции дошел)
На этот пост Стивена Хагга я наткнулся после того как начал читать его книгу: Making 8-bit Arcade Games in C, в ней был упомянут его блог и онлайн IDE для непосредственной разработки (игр) для всех этих z80-based машин.
Перевод публикуется с любезного разрешения автора.
(Он, кстати, упомянул о планах добавить ZX Spectrum.)
Сильно переработал код виртуальной машины и ассемблера — разделил собственно классы на Машину и Ассемблер и кроме того теперь виртуальная машина умеет выводить символы в консоль, а ассемблер поддерживает строки и множество данных в одном ключевом слове dw.
Программа теперь может выглядеть так:
PORT_CONSOLE = $FFFF ; символ для порта ввода-вывода консоли
sp = $0050 ; настроим стек
r0 = str1
[ sp ] =+2 pc ; запоминаем в стеке pc для возврата
pc = print ; вместе с предыдущей инструкцией - CALL
r0 = str2
[ sp ] =+2 pc
pc = print ; т.е. два раза вызвали процедуру print разных строк
exit dw 0 ; STOP полный останов программы
; процедура print, на входе r0 - указатель на ASCIIZ-строку
print r1 =? [ r0 ] ; MOV с обновлением FLAGS (carry и zero)
pc = [ sp ] @z ; если флаг нуля, то совершаем выход
[ PORT_CONSOLE ] = r1 ; в порт консоли выводим очередной символ
r0 =+1 r0 ; увеличиваем указатель на строку
pc = print ; цикл на начало процедуры
org $0050 ; начало данных для вывода
str1 dw "Hello, world!" 13 10 0
str2 dw "That's it." 13 10 0
и выводит она следующее (включая дамп памяти и регистров после выполнения):
Единственный пока порт ввода-вывода замаплен на адрес $FFFF (и вообще все порты ввода-вывода будут замаплены на последние ячейки памяти) и при записи в себя выводит символ в консоль.
Ключевое слово dw теперь может принимать строки в кавычках и много данных в одной строке программмы — они даже не разделяются запятыми, а только пробельными символами, так парсер даже проще.
Заодно демонстрация того как CALL имитируется двумя инструкциями — сперва в стек пишется адрес возврата через инструкцию inc_by_two и уже потом совершается переход.
RET в программе условный.
Посмотреть RZX
а вот попытка портировать Xenon Megablast — Axons
Перевод публикуется с любезного разрешения автора.
(Он, кстати, упомянул о планах добавить ZX Spectrum.)
Программа теперь может выглядеть так:
и выводит она следующее (включая дамп памяти и регистров после выполнения):
Единственный пока порт ввода-вывода замаплен на адрес $FFFF (и вообще все порты ввода-вывода будут замаплены на последние ячейки памяти) и при записи в себя выводит символ в консоль.
Ключевое слово dw теперь может принимать строки в кавычках и много данных в одной строке программмы — они даже не разделяются запятыми, а только пробельными символами, так парсер даже проще.
Заодно демонстрация того как CALL имитируется двумя инструкциями — сперва в стек пишется адрес возврата через инструкцию inc_by_two и уже потом совершается переход.
RET в программе условный.