Возможный процессор тетриса (Brick Game). Holtek - HT1130.

В интернете существует немало информации о таких знаменитых ретроигровых системах типа NES, ZX Spectrum, Sega и так далее. Все их схемы, примеры программного кода существуют в открытом доступе и найти их при должном желании не составит труда.
Однако, существует ещё одна игровая система, которая в странах СНГ не уступала по популярности вышеперечисленным (а то даже и превосходила их), но об её устройстве практически ничего не известно. Это Brick Game (более известный как просто Тетрис).
Мои попытки найти хоть какую-то информацию о процессоре этого замечательного устройства долгое время не были успешными. Однако, я наткнулся на тему форума nesdev.com — Brick Game, где поднималась эта тема.
Оттуда я понял, что в качестве процессора в таких устройствах, выступал 4-битный микроконтроллер HT1130 от китайской компании Holtek. Или его аналоги. На картинке ниже, под каплей компаунда находится кристалл HT1130.



Поискав информацию об этом микроконтроллере, я наткнулся на его даташит — Datashet HT1130
Из даташита и официального сайта Holtek — holtek.com, я понял, что этот микроконтроллер использовался в основном для настольных часов. Для него есть программатор, он имеет 32 вывода для управления ЖК дисплеем, порты ввода (очевидно, что для кнопок) и вывода, отдельные выводы для звуковой пищалки, тактовую частоту до 1 МГц, прошивка пишется на ассемблере в собственной IDE от компании Holtek. Но самого микроконтроллера в продаже не имеется. Не мог найти даже на Aliexpress.

Более подробный обзор (только в теории ибо для практики я не мог его найти) вы можете посмотреть в видео ниже. Обзор архитектуры и
даташита начинается со времени 5:40. Заранее извиняюсь за сумбурное изложение в видео. Моё первое всё-таки =)

Забытые советские технологии - оживают в полдень 21 века

Наверняка многие из читающих знакомы с советским калькулятором серии МК52, МК61. И вероятно кто-то из вас помнит что Лунный Коршун, не птица и не название космического корабля. Все это когда то невероятно увлекало и меня и моего товарища по несчастью, проделавшего накануне приличную работенку по адаптации исходного кода эмулятора МК61 на платформу stm32 mk61s gitlab.
Макет МК61s в корпусе МК52

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

Making of Lo-Fi Motion

Приветствую всех читателей хайпа!



Я планировал написать making of про демку ещё в феврале, но только сейчас звёзды сошлись. Ну ничего, лучше поздно, чем никогда. Началось всё в декабре 2019-го, когда мне внезапно по телефону позвонил fatalsnipe, и спросил, не хочу ли я сделать хоть какое демо на DiHalt 2020 Lite. Хотя до пати оставалось меньше месяца, я согласился, т.к. первоначальный планом было порыться в старых загашниках, взять пару эффектов и склепать что-нибудь абы было.

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

Виртуальная машина 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 используют один и тот же байткод некой виртуальной машины которая по своему внутреннему устройству как будто бы создана для того чтобы интерпретировать код на Си.
Читать дальше →

Диалектика разрядности

На размышления по теме меня сподвигла статья aa-dav под заголовком 8/16-битный компьютер мечты (процессор Simpleton). Статья, без дураков, замечательная. Понравилась своим рассудительным изложением материала. Мой особенный интерес вызвали мысли автора, оказавшись близкими по духу. Множество раз размышляя на подобную тему “с карандашом в руках” очень похоже изводил себя вопросами озвученными автором. Процесс созидания чего бы то ни было итеративный, наблюдения и заключения меняются по времени, в силу приобретения дополнительного опыта и знаний. Иногда достаточно попробовать сложившуюся на бумаге архитектуру “на зуб” написав в ней десяток другой строк кода и, казалось бы, с железобетонных утверждений приходится слезать. Неизменным всегда остается то, что любой вопрос, касающийся архитектуры, содержит в себе массу противоречий. По большому счету выбор решения в итоге заключается в том какие же из них являются меньшим злом. Так и в случае разрядности появляется масса вопросов и проблем. Для меня в итоге, при решении вопросов разрядности в разработке архитектуры (архитектуры мечты), потеря байта как единицы оперативной информации, оказалась болезненной.
Читать дальше →

Калькулятор 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 кода и данных занимает скрытый и нигде в игре не показываемый текст. В статье по ссылке его перевели на английский, а я тут переведу на русский…

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