• Набираем команду Медираторов для форума. Наша группа в Телеграм https://t.me/ConsoleFiXru

Nintendo Game and Watch

ConsoleFiX

Администратор
Регистрация
7 Июн 2021
Сообщения
207
Реакции
7
8582eb56-883d-4968-873a-b2e512b7ff0c.__CR0,0,1464,600_PT0_SX1464_V1___.png
Nintendo Game & Watch: The Legend of Zelda позволит прикоснуться к частичке истории видеоигр. Играйте в легендарные игры серии The Legend of Zelda в формате Game & Watch, как в старые добрые времена! Сражайтесь с кротами в мини-игре Vermin с Линком в качестве главного героя. В лучших традициях Game & Watch, консоль также включает цифровые часы и таймер, с которыми можно взаимодействовать. Отмечайте 35-летие серии вместе с игровой системой Game & Watch: The Legend of Zelda!
На данный момент инструкция находится в стадии формирования и проверки в боевых условиях)

pxl_20220313_151913984.jpg
Настройка программного обеспечения:

********** НЕ ИСПОЛЬЗУЙТЕ 64-БИТНУЮ ОС, ОНА НЕ БУДЕТ РАБОТАТЬ С ЭТИМ РУКОВОДСТВОМ ***********

Это проект был выполнен на Raspberry Pi «2022-04-04-raspios-bulseye-armhf».

с использованием SSH, вам нужно будет клонировать ссылку github ниже

git clone https://github.com/facelesstech/game-and-watch
Этот скрипт настроит все, что вам нужно для резервного копирования и разблокировки вашей игры zelda/mario. Чтобы запустить его, используйте команды ниже

cd game-and-watch sudo apt-get update chmod +x gw-rpi-install-script.sh . gw-rpi-install-script.sh
После завершения установки выполните приведенные ниже команды.

cd ~/opt
Нам нужно выяснить, какую версию xpack-arm-none-eabi-gcc мы только что застопорили. Для этого нам сначала нужно запустить

ls ~/.local/xPacks/@xpack-dev-tools/arm-none-eabi-gcc/
Затем вам нужно будет запустить приведенную ниже команду, но заменить xx.xx-xxx тем, что дала нам последняя команда.

export PATH=$PATH:"/home/pi/.local/xPacks/@xpack-dev-tools/arm-none-eabi-gcc/xx.x.x-x.x.x/.content/bin/"
export OPENOCD="/home/pi/.local/xPacks/@xpack-dev-tools/openocd/0.11.0-4.1/.content/bin/openocd"
cd game-and-watch-backup
./1_sanity_check.sh rpi zelda
Эта последняя команда должна вернуться без каких-либо ошибок. Теперь мы можем перейти к разблокировке вашей игры. Я собираюсь сделать это на моем устройстве Zelda, поэтому, если вы делаете это на устройстве Mario, просто замените Zelda на Mario. Даже если вы выбрали мод USB C pin, я бы перевернул игру экраном в верх и смотрел, потому что она попросит вас несколько раз выключить и снова включить устройство во время разблокировки, я просто отключаю питание разъем аккумулятора, когда мне говорят Сделай так. Также следует упомянуть, что ваше устройство нельзя будет снова использовать, пока не будут выполнены все шаги, поэтому не паникуйте, если оно не включается во время любого из приведенных ниже шагов.

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

./2_backup_flash.sh rpi zelda
Далее мы создадим резервную копию внутренней флэш-памяти. Снова просто введите команду и следуйте инструкциям на экране.

./3_backup_internal_flash.sh rpi zelda
Следующий шаг фактически разблокирует устройство, чтобы мы могли запустить на нем наш собственный код. Снова просто введите команду и следуйте инструкциям на экране.

./4_unlock_device.sh rpi zelda
Мы почти у цели, просто нужно сделать этот последний шаг, и ваша Game & Watch будут разблокированы и восстановлены до того состояния, в котором они были до того, как мы начали. Снова просто введите команду и следуйте инструкциям на экране.

./5_restore.sh rpi zelda
Если все пошло по плану, и ваша Game & Watch снова работают, мы можем вздохнуть с облегчением. Не забудьте сделать безопасную резервную копию ваших дампов, которые мы только что сделали. Их 3 в папке резервных копий.
Настройка программного обеспечения:
********** НЕ ИСПОЛЬЗУЙТЕ 64-БИТНУЮ ОС, ОНА НЕ БУДЕТ РАБОТАТЬ С ЭТИМ РУКОВОДСТВОМ ***********
Если Вы думали что игры будет устанавливать легче чем разлочить саму приставку - то Вы ошиблись :confused:
Главная проблемой будет сборкой ПО под нашу ARM систему и правильность соблюдения путей для патчей.
:download: openocd-git Брал здесь и собирал с поправкой на ARM. :download: Скачать компилятор отдельно
cd ~/opt/ git clone https://github.com/kbeckmann/ubuntu-openocd-git-builder cd ubuntu-openocd-git-builder ./build.sh sudo dpkg -i openocd-git_*_armhf.deb sudo apt-get -y -f install
Еще внимание нам нужно уделить arm-none-eabi-gcc который мы уже использовали для разлочки Game and Watch, но тут будет он использоваться более широко и требовать версию библиотек выше v10+. Команды на актуальную версию на момент написания мануала:
1. sudo apt update 2. sudo apt upgrade 3. wget https://github.com/xpack-dev-tools/arm-none-eabi-gcc-xpack/releases/download/v10.2.1-1.1/xpackarm-none-eabi-gcc-10.2.1-1.1-linux-arm.tar.gz 4. mkdir -p ~/opt 5. cd ~/opt 6. tar xvf ../xpack-arm-none-eabi-gcc-10.2.1-1.1-linux-arm.tar.gz xpack-arm-none-eabigcc-10.2.1-1.1 7. export PATH=$PATH:/home/pi/opt/xpack-arm-none-eabi-gcc-10.2.1-1.1/bin/ 8. git clone https://github.com/ghidraninja/game-and-watch-backup.git 9. sudo apt install npm 10. npm install --global xpm@latest 11. xpm install --global @xpack-dev-tools/openocd@latest 12. export OPENOCD="/home/pi/.local/xPacks/@xpack-dev-tools/openocd/0.11.0-1.1/.content/bin/openocd" 13. sudo apt-get install binutils-arm-none-eabi python3 libftdi1
Далее нам нужно вернутся в корневой каталог и развернуть инструмент game-and-watch-retro-go:
cd ~/opt/ git clone --recurse-submodules https://github.com/olderzeus/game-and-watch-retro-go cd game-and-watch-retro-go python3 -m pip install -r requirements.txt
Если вам нужно обновить репо, используйте команду ниже:
git pull --recurse-submodules
Проверяем пути и указываем экспорт для библиотеки OPENOCD:
export OPENOCD="/opt/openocd-git/bin/openocd"
make COVERFLOW=1 JPG_QUALITY=90 COMPRESS=lzma GNW_TARGET=zelda flash_all
Но если вы обновили ПЗУ памяти допустим до 64 Мб, используйте эту команду:
make COVERFLOW=1 JPG_QUALITY=90 COMPRESS=lzma EXTFLASH_SIZE_MB=64 GNW_TARGET=zelda flash_all
*Если по какой- то причине программа не видит ваш порт для программирования - укажите его в ручную:
export ADAPTER=rpi




Новый интерфейс и расширение функций еще предстоит опробовать но Ссылку на него уже можно посмотреть тут
game-and-watch-doom-700x396.jpg
Это то, что привлекло мое внимание, когда я исследовал возможности игры и часов. Ближе всего можно сравнить с RetroPie, который объединяет все эмуляторы с хорошим интерфейсом. Исходный сценарий, который мы использовали, клонировал RetroGo Github, но не настраивал его, поэтому нам придется это сделать. Все, что вам нужно сделать, это запустить команду ниже. Сначала нам нужно перейти в папку retrogo, используя команду ниже.

cd ~/opt/game-and-watch-retro-go
Затем установите все требования с помощью команды ниже.

python3 -m pip install -r requirements.txt
apt install gcc-arm-none-eabi
Если вы только что разблокировали игру и смотрите, вам не нужно будет запускать приведенные ниже команды, но если вы перезагрузились или вошли в систему и вышли из своего Raspberry Pi, вам нужно будет выполнить эти команды. Также каждый раз, когда вы входите в свой pi, чтобы запустить игру и посмотреть, вам нужно будет запускать эти команды.

Нам нужно выяснить, какую версию xpack-arm-none-eabi-gcc мы только что застопорили. Для этого нам сначала нужно запустить

ls ~/.local/xPacks/@xpack-dev-tools/arm-none-eabi-gcc/
Затем вам нужно будет запустить приведенную ниже команду, но заменить xx.xx-xxx тем, что дала нам последняя команда.

export PATH=$PATH:/home/pi/.local/xPacks/@xpack-dev-tools/arm-none-eabi-gcc/xx.x.x-x.x.x/.content/bin/
export OPENOCD="/home/pi/.local/xPacks/@xpack-dev-tools/openocd/0.11.0-4.1/.content/bin/openocd"
Вам нужно решить, какие ПЗУ вы собираетесь установить на свое устройство. Я обнаружил, что ПЗУ Gameboy занимают больше всего места, но RetroGo сжимает ПЗУ, чтобы вы могли выжать больше из игры и смотреть. Roms помещаются в /home/pi/opt/game-and-watch-retro-go/roms/ Затем в этой папке вы найдете папки Roms, соответствующие эмуляторам, показанным ниже.

  • ColecoVision (col)
  • Gameboy / Gameboy Color (gb/gbc)
  • Game & Watch / LCD Games (gw)
  • Nintendo Entertainment System (nes)
  • PC Engine / TurboGrafx-16 (pce)
  • Sega Game Gear (gg)
  • Sega Master System (sms)
  • Sega SG-1000 (sg)
Стандартная игра и часы Mario имеют только 1 МБ памяти, но игра Zelda и часы имеют 4 МБ дискового пространства. Если вы хотите узнать, подойдут ли они перед прошивкой, вы можете запустить эти команды ниже. Первая предназначена для Zelda.

make size GNW_TARGET=zelda
и для Марио один

make size GNW_TARGET=mario
После того, как вы разобрались со своими ромами, вам нужно будет прошить образ в игру и посмотреть. Подключите перемычки к открытому разъему или адаптеру USB C и убедитесь, что устройство включено. Команда для Zelda приведена ниже.

make -j8 flash GNW_TARGET=zelda
Это команда Марио.

make -j8 flash GNW_TARGET=mario
Это также будет тема RetroGo с красным для Марио и зеленым для Zelda. Также, если вы переключаетесь с прошивки игры Zelda или Mario и смотрите, вам нужно будет очистить сборку перед переключением, используйте команду ниже.

make clean
Если вы собираетесь обновить свое хранилище, вам нужно будет прочитать ЭТО , в нем будет рассказано все, что вам нужно знать о том, какие флэш-чипы заказывать. Я отправил с MX25U51245GZ4I00, который составляет 64 МБ, максимальный размер, который вы можете использовать. Его можно найти на Aliexpress в единственном количестве, но вам понадобится рабочая станция с горячим воздухом, чтобы снять и припаять новый чип. Вам нужно будет сообщить RetroGo о расширенном хранилище, поэтому, если вы использовали тот же чип, вам нужна команда ниже. Прочитайте ретрого github для разных команд для разных размеров чипов.

make -j8 flash GNW_TARGET=zelda EXTFLASH_SIZE_MB=64
Переделка программатора ST-Link :download:
:4pda: Rasta Faka
Сделал себе вот такую штучку для "удобства" прошивки. Подробной схемы не будет, любители смогут сами собрать подобное на макетной плате, да и распиновки клонов stlink отличаются, универсальной схемы нет. На консольке предполагается выведение контактов swdio, swclk и rst на незадействованные пины разъема type-c.
Отдельно объясню про кнопку. При нажатии происходит замыкание вывода rst на землю, соответственно осуществляется сброс консоли. Очень полезно при прошивке консоли без разборки, не нужно дергать коннектор АКБ, чтобы включить ее после осуществленных манипуляций. Иногда консоль не стартует после прошивки на горячую и можно просто нажать reset. Либо нажать эту кнопку перед прошивкой, вместо зажатия кнопки питания, но это уже индивидуально, retro-go часто не с первого раза стартует.
PXL_20220706_164105965.jpgPXL_20220706_164124129.jpg

Подключение отладчика​

При подключении отладчика убедитесь, что по крайней мере подключены SWDIO, SWDCLK и GND. Ни при каких обстоятельствах не подключайте 3,3 В к разъему VDD. Если ваш отладочный зонд (например, клоны ST-Link) не имеет разъема VTREF, просто оставьте VDD неподключенным. Подключение 3,3 В к VDD, скорее всего, уничтожит вашу флэш-память SPI.

Разъем отладки варианта Zelda имеет ту же распиновку, что и вариант Mario, но имеет два дополнительных разъема (PB3 и N/C). Маленький треугольник указывает на контакт 1.

Поддерживаемые отладчики​

Пожалуйста, используйте официальный ST-Link (не один из маленьких клонов USB-накопителя) или полноразмерный J-Link. Другие могут работать, многие из них не работают с логическими уровнями 1,9 В, используемыми в Game and Watch.

Программисты, с которыми у нас было много проблем: J-Link EDU Mini (не работает), дешевые клоны ST-Link.

Хост Raspberry Pi​

Вы можете использовать Raspberry Pi для резервного копирования игр и часов. В этом случае вам следует использовать установку Raspbian и выполнить шаги, описанные в разделе установки Ubuntu, но на Raspberry Pi. Вам нужно использовать 3 провода: GPIO25 для SWCLK, GPIO24 для SWDIO и GND для GND (в нотации распиновки BCM), или вы можете жестко закодировать свой собственный gpios в openocd/rpi.cfg. Краткую справку по распиновке на RPi можно увидеть, открыв терминал и запустив pinout.
Скриншот 07-07-2022 114136.jpg

Настройка Ubuntu​

Установите необходимые инструменты:

sudo apt-get install binutils-arm-none-eabi python3 libhidapi-hidraw0 libftdi1 libftdi1-2
Примечание. Версия openocd, включенная в Ubuntu 20.04 (0.10.0), не включает функции, необходимые для этих сценариев. Необходима сборка из невыпущенной основной ветки. Пожалуйста, установите более новую версию, либо собрав ее самостоятельно, либо установив готовый пакет, например, из этой ночной сборки , используя xPack или аналогичный.

Альтернативное местоположение openocd​

Если вы использовали вышеупомянутую ночную сборку openocd, она будет находиться в каталоге /opt.

Чтобы использовать эту конкретную версию, вы можете либо экспортировать переменную OPENOCD, либо добавить к своим командам префикс объявления переменной:

export OPENOCD="/opt/openocd-git/bin/openocd"
./1_sanity_check.sh
./2_....
ИЛИ ЖЕ

OPENOCD="/opt/openocd-git/bin/openocd" ; ./1_sanity_check.sh
OPENOCD="/opt/openocd-git/bin/openocd" ; ./2_....
Наконец, вы можете просто запрограммировать некоторые переменные в config.sh.

Настройка Mac​

Использование доморощенного:

brew install --HEAD openocd
brew tap ArmMbed/homebrew-formulae
brew install arm-none-eabi-gcc

Применение​

Перед запуском обязательно отключите аккумулятор, так как он может помешать процессу. Включите устройство с помощью разъема USB-C.

Скрипты разбиты на 5 частей:

  • 1_sanity_check.sh — выполняет проверку работоспособности и проверяет наличие всех необходимых инструментов
  • 2_backup_flash.sh — создает резервную копию содержимого флэш-памяти SPI. Не изменяет содержимое устройства.
  • 3_backup_internal_flash.sh — создает резервную копию внутренней флэш-памяти. Для этого модифицируется содержимое флэш-памяти SPI. Ваше устройство перестанет работать, пока оно не будет восстановлено на шаге 5.
  • 4_unlock_device.sh — отключит активную защиту от чтения. Это сотрет внутреннюю флэш-память STM32.
  • 5_restore.sh - Это восстановит исходную прошивку.
Просто запустите эти скрипты из проверенного каталога один за другим. Все сценарии безопасны для повторного запуска в случае ошибки.

Убедитесь, что вы храните резервную копию в безопасном месте, чтобы вы всегда могли восстановить ее. Не просите нас о флеш-дампах и прочем, мы ими не поделимся.

Что если что-то пойдет не так​

Пока ваши электрические соединения в порядке и вы ничего не закорачивали/не перенапрягали, велики шансы, что это можно спасти:

Если сценарий не работает и устройство не работает после выключения и включения, повторите сценарий. Если снова не получится, попробуйте удерживать кнопку питания устройства во время выполнения скрипта.

Кроме того, в качестве первого шага попробуйте снизить скорость адаптера. При использовании stlink вы делаете это, добавляя adapter speed 100в качестве последней строки в openocd/interface_stlink.cfg.

Что-то пошло не так на шагах 1 и 2​

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

Что-то пошло не так на шаге 3​

Шаг 3 изменит внутреннюю вспышку устройства. Если этот шаг не удался, ваше устройство останется в кирпичном состоянии. Чтобы восстановиться, выполните:

./restore_only_external_flash.sh <stlink or jlink or rpi> <mario or zelda>
Если скрипт не может подключиться к устройству, нажмите и удерживайте кнопку питания на устройстве во время работы flashloader и попробуйте ПОЛНОСТЬЮ перезагрузить цель между попытками.

Что-то пошло не так на шаге 4​

Шаг 4 вызовет массовое стирание и оставит ваше устройство пустым. Чтобы восстановить его, запустите скрипт 5.

Что-то пошло не так на шаге 5​

Шаг 5 должен быть выполнен успешно, если нет: попробуйте запустить скрипт, удерживая нажатой кнопку питания Game & Watch. Попробуйте выключать и снова включать цель между попытками.

Получение помощи и вклад​

Не стесняйтесь присоединиться к нашему каналу в разногласиях и задавать любые вопросы в службу поддержки в #game-and-watch-support .

Другие каналы:

  • #game-and-watch-hacking Канал для общих разговоров о домашнем пивоварении на Game & Watch! Пожалуйста, никаких ПЗУ, никаких флэш-дампов и т. д., но приветствуются любые вопросы, связанные с кодом, или другие хакерские идеи.
  • #replacement-pcb Здесь мы обсуждаем возможности и разработку сменных печатных плат для игр и часов.
  • Game-and-watch-hacking wiki Справочная вики обо всем, что касается взлома Game & Watch. В том числе внутренности.
 

Вложения

  • internal_flash_backup_zelda.bin
    128 KB · Просмотры: 2
  • internal_flash_backup_zelda.rar
    79.6 KB · Просмотры: 0
  • game-and-watch-backup-main.zip
    367.7 KB · Просмотры: 0
  • No_Soldering_Guide_RaspberryPi_only_to_add_games_on_Game_and_Watch_V1.pdf
    438 KB · Просмотры: 2
  • Взлом игр и часов с помощью RPI .pdf
    13.1 MB · Просмотры: 20
  • ubuntu-openocd-git-builder.zip
    11.7 KB · Просмотры: 1
Последнее редактирование:
Сверху