Начинаете вы с одного элемента типа NAND (И-НЕ). Далее вам предложат десятки (!) миссий, в ходе которых вам предстоит собрать:
-- другие логические элементы
-- триггер
-- регистр
-- сумматор
-- АЛУ
-- процессор целиком.
А после того, как процессор будет собран, вам придётся его, сука, программировать. Сначала в машинных кодах, а потом на ассемблере.
Это первая половина игры. Во второй половине вам предстоит собрать более крутой процессор и решать на нём более сложные задачи.
Архитектура второго процессора названа авторами игры LEG. Это почти наверняка является отсылкой к архитектуре ARM, поскольку у них есть определённые сходства. А вот почему первый процессор называется OVERTURE я не догадался. Если у вас есть идеи -- сообщите, пожалуйста. Вот, кстати, что я собрал (кликабельно).
Здесь:
DEST_SEL -- селектор целевого регистра операции
BUS_MUXER_v2 -- определяет, откудать брать входные операнды для операции: из памяти, из регистра, или трактовать номер регистра как константу.
REG_MUXER -- на вход получает все регистры, на выход выдаёт тот, который просят.
INP_SW_v2 -- фактически, является УУ (устройство управления). Подаёт команды чтения/записи в память, в стек, или "внешний вход"
ALU_LEG, ALU_LEG_S -- два АЛУ, один для двухоперандных операций, другой для однооперандных
COND_LEG -- блок условных переходов
STACK_CTL -- блок маршрутизации данных стека
Не очень понятно, для кого предназначена эта игра. Я, например, от неё в восторге. Я джва года проходил всё это в институте, а кроме того по работе занимаюсь связанными вещами. Но ни в институте, ни на работе, у меня не было задач по созданию процессоров с нуля. И тем не менее, для меня эта игра -- что-то вроде симулятора тракториста. Типа, тракторист весь день по работе водит трактор, а потом приходит домой и запускает симулятор.
А кто ещё может в неё играть, кроме айтишников, близких к железу? Не знаю. На эту игру мало отрицательных отзывов, но те, которые есть, сходятся в одном: эта игра ничему не учит. Вы должны либо догадаться о решении миссии самостоятельно, либо загуглить стандартный метод. Либо вы должны ЗНАТЬ решение, как знал решение для большинства задач я.
Поиграть стОит, если вы хотите узнать, как работает компьютер на низком уровне. Или если вы уже знаете, но хотите пощупать руками. Симулятор работает хорошо, видно как чиселки бегают.

Если вы соберётесь в это играть, дам два совета, которые вам могут очень пригодиться.
Первый касается ассемблера. Не просто так в руководстве написано, что в командах можно использовать логические (побитовые) операции. Байты команд содержат битовые поля, поэтому если вы соберётесь самостоятельно создавать мнемонические команды (а это вам придётся делать), то если не использовать логические операции, то вам придётся создавать по одной мнемонике на каждую команду. Допустим:
mov_r1_r2 (00-001-010)
mov_r2_r3 (00-010-011)
и так далее. Это крайне неудобно, но на первый взгляд с этим ничего не сделаешь, потому что если поставить пробел, то ассемблер начнёт следующий байт, а указания на регистры расположены в том же байте. Вот для этого-то и пригодится операция "или" (труба, "|").
Назначаем коды:
mov = 00-000-000
from_r1 = 00-001-000
from_r2 = 00-010-000
to_r2 = 00-000-010
to_r3 = 00-000-011
После этого становится можно комбинировать поля в одном байте:
mov|from_r1|to_r2 (00-001-010)
Второй совет касается блоков. Не стесняйтесь выделять отдельные функции процессора в блоки. Это сильно упрощает понимание того, что где расположено. Более того, в задаче The Maze, например, я реализовал поворот робота в лабиринте как отдельный блок, чем сильно сократил программу. Есть, однако, минус: блоки сложнее отлаживать. Если вы обнаружили ошибку, то вам придётся вручную запомнить состояние входов блока, потом открыть редактор и их выставить. Это следовало бы автоматизировать.