+498.92
Рейтинг
1383.63
Сила

Виртуальная машина Koei

Недавно я обнаружил забавный фактик на форумах nesdev (англ.): forums.nesdev.com/viewtopic.php?f=2&t=15931
Есть такая японская игростроительная фирма — Koei.
Основана она была в 1978 году и разумеется в начале истории выпускала кучу игр для 8-биток.
И в этом смысле фирма была всеядной — одни и те же игры выпускала и на NES и на MSX и на Amiga и на DOS и PC-98 и каких то уже мало мне известных FM-7, Sharp X1, Sharp X68000 и WonderSwan.
В общем плодовитость и по числу игр и по платформам где они выходили даже в ранние 8/16-битные годы была существенной.

Так вот — некто AWJ с форумов nesdev обнаружил, что все игры этой компании на NES кроме Mahjong Taikai используют один и тот же байткод некой виртуальной машины которая по своему внутреннему устройству как будто бы создана для того чтобы интерпретировать код на Си.
Читать дальше →

Калькулятор ZX Spectrum

Наткнулся на описание того как работает библиотека калькулятора в ZX Spectrum (как и многие книжки той эпохи она просто кишит опечатками и ошибками). Текста там много, так что тут вкратце опишу как оно всё работало, ибо это действительно забавно.

Читать дальше →

Программирование для Famicom/NES/Денди в Nesicide+ca65: маппер MMC3 - HBlank+скроллинг (10) КОНЕЦ

Это будет последний урок в этой серии описывающий на практике последнюю технику которую нужно знать, чтобы написать крутую игру на Famicom/NES/Денди…
Ну хорошо, если призадуматься, то нюансов в программировании на денди есть еще порядком. Как организовать «бесконечный» скроллинг прокручивая две экранных области друг за другом и обновляя вновь появляющиеся с краёв тайлы в VRAM по ходу движения… Как организовать тайлы в метатайлы 2x2, а то и 4x4 для более краткого описания карт и удобного обновления видеопамяти (ведь атрибуты палитр назначаются сразу блоку тайлов 2x2 в экранной области, а один байт атрибутов покрывает 4x4 тайла)… Как воспроизводить оцифрованные DCPM звуки с помощью FamiTone2…
Впрочем, имхо, материалов и примеров изложенных в этих статьях хватит чтобы сообразить как это всё делается самостоятельно. Да и должно же быть какое то пространство и для собственного творчества. Здесь же я поставлю точку в этом цикле и, возможно, займусь какой-нибудь уже полноценной игрой исходники которой выложу, но это будет другая история.

Читать дальше →

Программирование для Famicom/NES/Денди в Nesicide+ca65: маппер MMC3 - перехват HBlank (9)

Итак, кроме собственно управления дополнительными банками памяти маппер MMC3 обладает еще одной важной функцией — генерацией прерываний IRQ по счётчику сканлайнов. В уроке про zero sprite hit мы перехватывали момент когда можно например в середине кадра сменить параметры прокрутки заднего фона этим средством встроенным в консоль. Но этот способ во первых можно использовать только один раз за кадр, а во вторых требует от процессора тратить все вычислительные ресурсы на обнаружение наступления события, что кроме самого этого факта еще и затрудняет планирование времени сколько код должен выполняться.
Счётчик сканлайнов в MMC3 лишён всех этих недостатков.

Читать дальше →

Скрытые послания из 80–х японских разработчиков видеоигр

Давно уже наткнулся на забавную статью «скрытые сообщения в видеоиграх на famicom» (на английском): magweasel.com/2009/08/29/hidden-messagin/

Если сдампить картридж игры Pachicom (примитивный симулятор «патинко» — японского варианта пинбола) вышедшей в 1985 году для 8–битной консоли Famicom/Денди, то можно обнаружить, что 5% ROM кода и данных занимает скрытый и нигде в игре не показываемый текст. В статье по ссылке его перевели на английский, а я тут переведу на русский…

Читать дальше →

Новые инструкции ZX Spectrum Next

ZX Spectrum Next реализован на FPGA включая процессор, поэтому в нём Z80 не только смогли повторить, но и улучшить внедрив несколько новых инструкций.
Полностью весь набор инструкций можно посмотреть тут: wiki.specnext.dev/Extended_Z80_instruction_set
Новые там отмечены литерой E в колонке «Status».
Все они реализованы на неиспользованных слотах расширенных команд Z80 с префиксом $ED.
Было любопытно взглянуть что это за инструкции и я бы даже сказал, что в них частично отразилась профессиональная боль программистов под ZX Spectrum.

Читать дальше →

Краткое описание видеорежимов ZX Spectrum Next

Давно уже занесло меня на сайт ZX Spectrum Next и там заинтересовали количество и состав видеорежимов этой машины. Сам ZX Spectrum в этом плане был скуп и имел только один видеорежим — 256*192 монохрома раскрашенного по два цвета в знакоместах 8x8 которые начинаются по адресу $4000 (16384) и занимают 6144 байта на монохромный битмап и 32*24=768 байт на атрибуты знакомест сразу после битмапа.

Можно сказать что этот видеорежим составляет изначальный «слой ULA». Небольшой ликбез: Uncommited Logic Array (ULA) вообще означает особый процесс создания микросхем, но в спектруме в такую «кастомную» микросхему было заложена вся его особенность, включая видеоконтроллер и поэтому аббревиатура ULA плотно ассоциируется в мире спектрума со всеми такими вещами.

И раз на Hype появилась статья про программирование слоя спрайтов, то я решил эту свою статью вкратце описывающую видеорежимы Next на русском перевыложить и тут (ранее считал что она слабовата технически, но в общем то почему нет?). Сразу дисклеймер: так как я вчитывался в первый и единственный раз, то возможно что-то пропустил или даже исказил — буду рад любым поправкам, если заметите ошибки.

Читать дальше →

SWEET16 - архитектура мечты Стива Возняка

Для ретропрограммистов североамериканского континента информация из этой статьи будет банальщиной, но наши отечественные спектрумисты возможно узнают для себя что-то новое.

Дешевый и сердитый 8-битный микропроцессор MOS 6502 стал сердцем очень многих компьютеров и консолей.
Так он был центральным процессором в компьютере Apple II — первом массовом компьютере фирмы Apple эпохальной значимости собственноручной разработки Стива Возняка.

Читать дальше →

Программирование для Famicom/NES/Денди в Nesicide+ca65: маппер MMC3 - страницы (8)

Итак на этот момент нам подвластны 32Кб кода/данных в PRG ROM и 8Кб графики в CHR ROM. Но когда этого перестало хватать в ход пошли мапперы — микросхемы встроенные в картриджи переключающие банки памяти. О них у меня есть отдельная обзорная статья. Одним из крайне популярных мапперов был MMC3 и кроме собственной популярности на его базе было создано огромное число производных чипов. В этой статье мы научимся использовать его для увеличения доступного для игры ROM картриджа.

Читать дальше →