Как стать автором
Обновить

Пишем трассировщик лучей для ZX Spectrum

Уровень сложности Простой
Время на прочтение 16 мин
Количество просмотров 3.8K
Всего голосов 50: ↑49 и ↓1 +48
Комментарии 21

Комментарии 21

Кажется, в BASIC 2 строки внизу экрана были зарезервированы, поэтому доступная высота сокращалась до 176.

Это если стандартные бейсиковские команды использовать, страшно медленные. Если прямо видеопамять адресовать, нижние 16 строк вполне ок работали. Я к тому, что фраза про графический режим 256х176 некорректна.

А DEF FN как же?

А никак. Это собственные расширения некоторых бейсиков. В DOS Microsoft'овском было "DECLARE SUB"/"DECLARE FUNCTION".

Но в большинстве всё, на что вы могли рассчитывать это GOSUB/RETURN.

Это в ZX80, у Спектрума уже точно был DEF FN:

Эта реализация не предполагает управления потоком выполнения

Да, официально они statement-ы, однострочники в стиле Фортрана IV – но можно же было абьюзить, вызывая машинный код через USR.

У меня одного отображается только одна (самая первая) иллюстрация?

У меня тоже картинок нету.

Спасибо. Какой-то сбой был, заново добавил все картинки, должны отображаться.

Это был интересный проект на выходные. Совершенно бесполезный, но интересный!

Хабр торт. Действительно было очень интересно. Особенно впечатлило, что самый первый вариант с атрибутами столь простой по коду и отработал так быстро - вполне можно было дождаться на реальном компьютере, без эмуляторных ускорений в тысячи раз.

Спасибо за статью ! А вы не знаете случайно ? Несколько лет назад, я натыкался на новость, что какой то есть официаьный порт zx-spectuma, что бы запускать виртуально на компьютере.

Есть ли какой то официальный эмулятор ?

Эмуляторов наверное с десяток под винду найдётся (не считая версий под ведроид и прочие мобильные ОСи).
Просто достаточно загуглить чтобы их найти.
Есть даже онлайн-эмуляторы.

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

Насколько помню обычно мы в BASIC нумеровали строки с шагом 10 на всякий случай: 10 20 30 40 ...

переносит поток управления к подпроцедуре (subroutine)

к подпрограмме

и 48 КБ ОЗУ

На самом деле фактически всего 41 Кб ;)

Все-таки графический режим Спекки - 256х192. А если писать на асме и немного извратиться, используя бордюр, то можно расшириться до 320х240. Рекомендую поискать в сети и посмотреть демки 64к. Там ребята вытворяли невероятное.

Это как же немного надо извратиться, чтобы получить 320x240 на обычном ZX?

Немного.

https://www.youtube.com/watch?v=dl3wWxJmIZw&t=191s

Только там не 320x240, а 352x288(?) Не припомню.

Ну и пиксели на бордюре 2x1, потому как 1 такт z80 это два пикселя.

Произвольное изображение на бордюре вывести нельзя, минимальная ширина блоков в бордюрных эффектах 22-24 пикселей растра (out a минимум 11 тактов, практичный out c 12 тактов). В Rage сконструирован такой эффект, чтобы сменить цвет только в нескольких точно заданных местах за строку, смещённых от начала строки выравниванием по единичным тактам, но это работает только на Пентагоне. На оригинальных моделях эффект не повторить, там цвет бордюра меняется только раз в 4 такта.

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Публикации

Истории