Самый простой способ эмулировать процессор оригинального gameboy с помощью Arduino

Мой первоначальный вопрос предполагает, что можно эмулировать оригинальную систему GameBoy с помощью платы Arduino.

Дополнительная информация в нетехнических терминах: я ищу устройство на базе Arduino, которое принимает картриджи в качестве устройств ввода (в некоторых случаях они также будут функционировать как устройства вывода). Меня в первую очередь интересует шестнадцатеричная/пиксельная "логика", которую gameboy games использует для отображения игровых данных.

Каков самый простой способ эмулировать оригинальную шестнадцатеричную пиксельную логику gameboy для извлечения, декодирования и выполнения данных с помощью Arduino?

Прежде чем отметить этот вопрос, пожалуйста, прокомментируйте, чтобы я мог уточнить, поскольку это сложный вопрос, который нужно задать, и я готов перефразировать его по мере необходимости.

, 👍-1

Обсуждение

никогда ничего не предполагайте, @jsotola

шестнадцатеричная пиксельная логика не имеет смысла ... это все двоичные данные, @jsotola

На Arduino? Никаких шансов. На чем-то более мощном? Конечно. Я видел эмуляцию Z80 (и другие), работающую на ESP32 (см. [FabGL](https://github.com/fdivitto/FabGL/tree/master/src/emudevs)), и Sharp LR35902, который использует gameboy, очень похож на Z80., @Majenko

Существует несколько эмуляторов с открытым исходным кодом. Проведите свое исследование и прочитайте их документацию и код. Вы быстро обнаружите, что 8-разрядный AVR не может эмулировать ГБ в режиме реального времени. (_Примечание: Много лет назад я написал эмулятор ГБ для процессора 68000 (16/32-разрядная система) с частотой 16 МГц. Он запускает обычные игры с 1/4 до 1/10 их первоначальной скорости и не имеет звуковой эмуляции._), @the busybee

@jsotola вы правы на машинном уровне, все операции являются двоичными, но 1 с 15 начальными нулями может интерпретироваться так же, как 1 без начальных нулей, что оставляет 15 уникальных местоположений доступными для обработки данных. мне жаль, если это не имеет для вас смысла. представьте себе сетку квадратов 16 на 16. каждый из них может быть "окрашен", если какой-либо квадрат заполнен, то он рассматривается как 1, а не 0 . расположение этих квадратов наряду с другими факторами может быть использовано для хранения информации. сжатая форма рассматривается как шестнадцатеричный код, который при распаковке становится двоичными данными., @People Call Me Adam

@Majenko Я не собираюсь использовать его для игр, просто используйте шестнадцатеричную адресацию, которая функционирует аналогично тому, как игра gameboy может хранить и извлекать данные из игрового картриджа. Я считаю, что частота кадров может быть намного меньше, чем в обычной игре. Мне не обязательно было бы воспроизводить звук, хотя я помню, как у каждого покемона были уникальные "звуки" или крики при появлении на экране, поэтому звук-это то, что я все еще исследую. Я проверю z80, я считаю, что в документах, которые я читал, использовалась крошечная версия 4.0, которая работала с большинством периферийных устройств arduino., @People Call Me Adam

@thebusybee Я продолжу исследование и, надеюсь, через несколько дней смогу сформулировать этот вопрос так, чтобы он лучше соответствовал моим потребностям. Я также читал, что esp32 имеет два ядра с тактовой частотой 240 МГц для каждого процессора. Возможно, в конце концов я попытаюсь использовать это, если это возможно. Чтобы уточнить, я хотел бы специально иметь возможность эмулировать только игру, работающую почти идентично Pokemon., @People Call Me Adam

Шестнадцатеричная запись @PeopleCallMeAdam предназначена просто для удобства чтения двоичных данных человеком ... это не сжатая версия двоичных данных ... нет *шестнадцатеричной адресации* ... все это двоичная адресация на машинном уровне ... когда процессор извлекает значение 0x48F4, он фактически извлекает 0100100011110100 ... он ничего не знает о 0x48F4, @jsotola

@jsotola снова я осознаю, что данные являются двоичными на машинном уровне, я рассматриваю шестнадцатеричную нотацию как форму "сжатия без потерь". Люди говорят на многих языках, когда вы переводите между ними, вы часто теряете часть смысла в этом переводе. если двоичный код-это значение и аппаратное обеспечение, "говорящий" думает о программном обеспечении как о людях, некоторые люди/программное обеспечение говорят по-испански, а некоторые-по-английски. если бы шестнадцатеричное число допускало сжатие без потерь некоторого значения на английском языке, а затем распакованное на испанском языке, при этом ничего не терялось во время перевода со 100% - ной вероятностью успеха, имело бы смысл то, что я сказал?, @People Call Me Adam

@PeopleCallMeAdam Нет, это вообще не имеет смысла (относительно вашего комментария с вопросом: “Если шестнадцатеричное сжатие допускается без потерь ... что означает на английском несжатом на испанском языке… будет ли то, что я сказал, иметь смысл?”)., @RowanP


1 ответ


0

(Собирая ответ из комментариев)

Консенсус заключается в том, что не существует "простого способа эмулировать оригинальный процессор gameboy с помощью Arduino". Что требуется более мощная платформа.

Несколько комментаторов выразили затруднения в связи с новой концепцией "шестнадцатеричной/пиксельной логики". Высказывается предположение, что эта концепция может быть необоснованной.

,