ФлеймФорумПрограммирование

Вопросы по ZX80 Assembler

Страницы: 1 2 316 17 Следующая »
#0
0:50, 14 ноя 2022

Есть инструкция djnz которая привязана к счетчику в регистре b
А если мне нужен счетчик двухбайтовый то тогда как?

#1
1:03, 14 ноя 2022

gamedevfor
> А если мне нужен счетчик двухбайтовый то тогда как?

DEC BC
INC B
DJNZ label

#2
1:09, 14 ноя 2022

Что быстрее? очистка экрана через стэк (push) или через ldir?

#3
1:51, 14 ноя 2022

0iStalker
> DEC BC
> INC B
> DJNZ label

Отладчик показывает что последние #FF(255) раз не дорабатывает (из регистра С). ))

#4
3:01, 14 ноя 2022

gamedevfor
> А если мне нужен счетчик двухбайтовый то тогда как?

"Штатный" способ контролировать регистровую пару на ноль разрушает A:

DEC BC
LD A, B
OR C
JNZ LABEL
#5
3:50, 14 ноя 2022

=A=L=X=
Спасибо работает.

P.S. Через стэк очистка экрана выходит порядка 25FPS.
Однако! Где же тогда обещанные 50FPS?

#6
3:57, 14 ноя 2022

gamedevfor
> Однако! Где же тогда обещанные 50FPS?

Я прозреваю, что ты программируешь всё-таки не на ZX80 https://ru.wikipedia.org/wiki/ZX80
ZX80 это реальный компьютер Sinclair Research, предшественник ZX Spectrum.
С экраном у него была совсем совсем другая история.

#7
4:14, 14 ноя 2022

=A=L=X=
> Я прозреваю, что ты программируешь всё-таки не на ZX80

Я имел ввиду ZX Spectrum (на базе zilog z80) = ZX80, он же всеми любимый цветной 48K спектрум.
В нем заявлено 50FPS, хз но эмулятор столько не выдает, при этом не видно чтобы эмулятор врал.

#8
4:28, 14 ноя 2022

gamedevfor
> В нем заявлено 50FPS,

50 раз в секунду видеочип генерирует сигнал для телевизора системы PAL.
Вообще на этом ПК (как и на аналогичных той эпохи) можно высчитать сколько точно тактов процессора занимает цикл обновления экрана (+отдых луча электронной трубки после этой отрисовки) и чтобы игра смогла выдавать 50 фпс надо укладываться в этот лимит. Если не уложиться, то возникнут разрывы изображения, просадка фпс.
Как это сделать - для динамичной полноэкранной игры почти невозможно. Нужны жёсткие ухищрения и идеи (например не обновлять области изображения которые не надо обновлять) чтобы уложиться.
Большинство игр, особенно первых лет на спектруме вообще плевали на контроль фпс и были тормозными и неотзывчивыми в управлении.

#9
5:14, 14 ноя 2022

Вот даже для сравнения два скролл-шутера с разным фпс:

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

Разница видна невооружённым глазом - как программист добился стабильных 50 фпс во втором случае для меня по большому счету загадка.

#10
5:48, 14 ноя 2022

gamedevfor
> Я имел ввиду ZX Spectrum (на базе zilog z80) = ZX80, он же всеми любимый
> цветной 48K спектрум.
Посмотри, если есть интерес, как, к примеру  и что  в рамках ускорения Форт для Z80  делает
автор в проекте M4_FORTH 

P.S. Вообще при поиске Forth+Z80 на Github такой результат.

Для Spectrum+Forth ещё несколько иной результат поиска

Интересно, что некоторые игры с ZX-Spectrum были полностью отреверсены участниками форума zx-pk.ru,  как  Exolon.


Интересный ещё исторический факт, что когда рассорились основные  разработчики ZX-Spectrum с Синклером, то они создали свой компьютер c Форт языком Jupiter_ACE поэтому в ПЗУ Спектрума осталось пустое пространство  и в чём то не доделан Бейсик.

Другой компьютер с Форт языком был Canon Cat
с какой то "мутной" историей описанной в i-net почему его убралa с рынка Canon.

Забавно, что Форт портировали и на очередной калькулятор SHARP PC-G850(V)(S) pocket computer. (Z80) :)
Forth850

Изображение
#11
9:42, 14 ноя 2022

gamedevfor
> P.S. Через стэк очистка экрана выходит порядка 25FPS.

Хьюстон, у Вас проблемы!  Если хочешь высокий FPS то чистить экран каждый кадр не вариант, на восьмибитках, без аппаратных спрайтов, ты рисуешь спрайт, а потом стираешь только то место где он был, а потом рисуешь новый (если он обновился).

#12
10:08, 14 ноя 2022

=A=L=X=
> как программист добился стабильных 50 фпс во втором случае

Откуда ты знаешь что там есть реально 50 фпс?

>для меня по большому счету загадка.

Ну загадки можно разгадать через дизасм. )))

#13
10:11, 14 ноя 2022

0iStalker
> Если хочешь высокий FPS то чистить экран каждый кадр не вариант

Ну как то хитро выходит ровно 25FPS, кажется что отрисовка не попадает ровно в один кадр и приходится каждый раз пропускать один кадр.

#14
10:13, 14 ноя 2022

0iStalker
> ты рисуешь спрайт, а потом стираешь только то место где он был, а потом рисуешь
> новый (если он обновился)

Метод не универсальный, а подходит разве что для отрисовки курсора мыши.

Страницы: 1 2 316 17 Следующая »
ФлеймФорумПрограммирование