Мой виртуальный 16-битный "компьютер мечты" - SimpX

Исходники: github.com/aa-dav/SimpX
Онлайн-версия: aa-dav.github.io/ (первая загрузка будет долгой, но потом закешируется)
В веб-версии рекомендую сразу нажать меню View->Set 400% чтобы выправить соотношение сторон.
Выбираем в левом списке редактора файлы test0x.asm и нажимаем меню Emulator->Compile and run чтобы увидеть результат.
Если активирована не английская раскладка клавиатуры — ввод с кнопок может не работать (это важно для последних тестов).
Так же еще замечу, что в веб-версии в коде могут некорректно отображаться табуляции — это некритично и вызвано разным отношениям к пикселям в среде Qt в stand-alone и wasm вариантах. В stand-alone всё визуально корректно.
Описание процессора — Simpleton (4) и его ассемблера уже было.

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

Виртуальный процессор Simpleton 4

В позапрошлом уже году я писал тут про выдуманную под впечатлением от Gigatron TTL архитектуру процессора Simpleton 3.
Однако в итоге я пришёл к выводу, что Simpleton 3 как архитектура сложнее того чем оно заслуживает быть.
В ходе обсуждения на другом ресурсе родилась архитектура Simpleton 4 которая, имхо, проще, ёмче и всячески приятственнее для программирования.
Исходники эмулятора и ассемблера можно посмотреть тут: github.com/aa-dav/SimpX (там же можно увидеть описание ISA на английском языке)

Прежде всего — эта ISA точно является субоптимальной по плотности команд.
Главная цель здесь — это сделать формат инструкций как можно более простым и ортогональным сохраняя программирование достаточно гибким и далёким от эзотеричности.
Плотность кода точно можно повысить получив в итоге что-то типа MSP-430, но это не цель и не вариант. :)
Как и в предыдущем поколении всё — и ячейки памяти и регистры 16-битные для простоты.
В отличие от Simpleton 3.x который каждую команду рассматривал как команду Си вида if (cond) Y ?= X, где? — это код операции Simpleton 4 смотрит на вещи еще более просто.
Он рассматривает все инструкции как одну и ту же операцию: R = Y * X, где опять таки * — это код операции. Т.е. безусловная трёхоперандная система.

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

8/16-битный компьютер мечты (процессор Simpleton)

Американский видеоблоггер 8-bit-guy давненько уже поднял и периодически ворошит такую тему как «какой мог бы быть 8-битный компьютер моей мечты» — со своим видением вопроса. Эти его видео напомнили мне что сама эта идея «а как бы я хотел чтобы было устроено нутро компьютера» сопровождает меня и, я верю, что и вас с самого детства. И так как мы тут рассуждаем в рамках ретро, то вопрос стоит именно как в заголовке.
Тему эту в вялотекущем режиме я уже обсуждал тут: gamedev.ru/flame/forum/?id=242499 (читать совсем необязательно) и раз уж здесь у нас возникло какое то летнее затишье, то решил немного перенести оттуда сюда уже в виде некоторых выжимок для «просто поболтать».

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

Обзор графической архитектуры SNES (+сравнение с Sega Mega Drive)

У нас битву 16–битных консолей выиграла спираченная Sega Mega Drive, в то время как в Северной Америке и Европе перевес оказался у Super Nintendo Entertaiment System (SNES), продолжателя дела Famicom известной у нас как Dendy. При этом, если в европах конкуренция была жаркой, то в пост-СССР SNES присутствовал на рынке очень слабо (в силу лицензионности), поэтому особо жарки споры о том какая из двух консолей круче всё–таки на западе, но у нас они тоже нередко встречаются.

Сразу хотел бы заметить, что с точки зрения программирования консоль от Сеги просто в разы проще и из-за этого она выигрывает приз моих программистских симпатий. Её процессор Motorola 68k по архитектуре был 32–битным, 16–битным в нём было только арифметико–логическое устройство (прозрачно для программиста). Он был проще и гибче в программировании нежели истинно 16–битный Ricoh 5A22, наследник 8–битного MOS 6502, используемый в SNES. Видеочип архитектурно тоже был простым и понятным, однако это означало и меньшие его возможности. Подробно о видеочипе Sega Mega Drive я писал тут.

Теперь же опишу видеочип SNES.

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

Графические трюки на Sega Mega Drive на примере игры Adventures of Batman and Robin

После предыдущей статьи о графической архитектуре Sega Mega Drive было бы интересно рассмотреть некоторые приёмы и трюки которые можно реализовать на этом железе. Игра Adventures of Batman and Robin примечательна обилием таких трюков, поэтому возьмём её для препарирования.

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

Mode 7 в SNES

По сравнению с 8–битной Famicom/NES/Денди в 16–битной Super Famicom/SNES графические возможности сильно расширились. Так, например, появились разные видеорежимы с возможностью отображения до четырёх независимо скроллящихся задних слоёв, просвечивающих друг сквозь друга. Однако единственный режим с четырьмя слоями обладал такой же как в Денди цветностью (4 цвета на тайл один из который — прозрачный), что было маловато для 16–битной консоли, так что чаще всего там использовались трёхслойные и двухслойные задние фоны. Однако подлинной вершиной двумерной графики в этой консоли стал однослойный видеорежим номер 7, так называемый Mode 7 (при этом он восьмой и последний по счёту — нумерация идёт с нуля) в котором единственный фон мог быть произвольно масштабирован и повёрнут.

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