MiGeRA / med2ls

"Mega EverDrive Tools" is small code: lets use it in any SGDK-project and be able to remotely reboot the system and return to Mega EverDrive's main menu of the without touching the console - very convenient when debugging and not only.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Mega EverDrive 2 Tools (med2ls)

Представляю маленькую "библиотечку" с примером ее применения в виде проекта VS-Code в рамках программирования для Sega MegaDrive/Genesis с использованием SGDK и отладки плодов своего творчества в аппаратной среде посредствам Mega EverDrive v2 (aka X7).

Использование представленного кода предполагает работу со штатной утилитой загрузки контента Mega EverDrive - утилитой mega-usb.

Системное ПО EverDrive ("системный картридж" - MEGA.BIN) допускает передачу и запуск программ (внезапно?) через USB-соединение - утилита mega-usb в помощь. При запуске программы (игры) USB-соединение полностью переходит под управление данной запущенной программы, подавляющее большинство которых не использует его (даже не догадываясь о таком досадном моменте) - соответственно для запуска новой программы (обновленной версии текущей) необходимо вернуться в главное меню системного ПО EverDrive. Путей несколько: "передернуть" питание; жамкнуть "ресет" на приставке; воспользоваться "внутриигровым" меню EverDrive (DOWN+START) ... Все они предусматривают тактильное взаимодействие либо с самой приставкой, либо с ее джойстиком. В случае создания и отладки софта "в железе" с использованием возможности его загрузки через USB-соединение EverDrive видится логичным и удобным реализация программной возможности возврата в главное меню по команде через USB-соединение для последующей аналогичной загрузки ...

Простое включение библиотеки med2ls в ваш проект SGDK дает следующие ...

Возможности:

  • Загружать обновленную (вновь скомпиллированную версию, например) без физического взаимодействия с приставкой. Все управление чисто по USB-интерфейсу. Т.е. не нужно жать RESET чтобы вернуться в главное меню EverDrive для возможности повторной загрузки и запуска программы - просто инициируйте штатный процесс передачи-запуска программы в mega-usb поверх уже запущенной;
  • Осуществлять возврат (выход) в главное меню EverDrive из вашей программы по комбинации "горячих клавиш" (в предложенном варианте START+A+B+C - легко изменить при желании);
  • Возврат в главное меню EverDrive по управляющей последовательности, получаемой через USB-соединение;
  • Возможность реализовать выход в главное меню EverDrive в любом месте вашей программы на ваше усмотрение ("программный выход" - логичная тривиальная функция, совместима с любым аппаратным картриджем).

Использовать так:

В любом случае копируем в доступное проекту место файлы med2ls.c и med2ls.h, делаем включение в модуле main:

#include "med2ls.h"

Для реализации первых трех пунктов "возможностей" - просто добавляем в основной бесконечный цикл вызов:

MED2ls_RetWacthDog();

Для пользовательского возврата - пишем в нужном месте:

MED2ls_Return();

Все просто ... :-)

PS. Учесть, что для взаимодействия по USB-соединению при использовании Mega EverDrive совместно с утилитой mega-usb (и не только) необходимо активировать режим -ssf

PPS. Во-вторых учесть, что при размере программы более 512кБайт (одной страницы маппера ssf) необходимо производить инициализацию регистров маппера штатным для него образом, иначе все страницы кроме начальной не будут доступны. Если даже мы вынуждено включаем для Mega EverDrive режим ssf ради возможности работы с usb-соединением, то неизбежно отдаем и массив образа "картриджа" под управление маппера и его нужно инициализировать даже для того, чтобы иметь обычную линейно-последовательную адресацию в пределах 4МБайт. Для этого разумно в \SGDK\inc\config.h установить #define ENABLE_BANK_SWITCH 1 и пересобрать библиотеку скриптом \SGDK\build_lib.bat

About

"Mega EverDrive Tools" is small code: lets use it in any SGDK-project and be able to remotely reboot the system and return to Mega EverDrive's main menu of the without touching the console - very convenient when debugging and not only.


Languages

Language:Assembly 57.0%Language:C 30.3%Language:Makefile 12.6%