DC-SWAT Forum
Dreamcast "NO GD-ROM": VMU - Версия для печати

+- DC-SWAT Forum (http://www.dc-swat.ru/forum)
+-- Форум: Sega Dreamcast (/forum-2.html)
+--- Форум: English section (/forum-29.html)
+--- Тема: Dreamcast "NO GD-ROM": VMU (/thread-2357.html)



Dreamcast "NO GD-ROM": VMU - aldair - 26.01.2016 04:52






RE: Dreamcast "NO GD-ROM": VMU - Lin - 26.01.2016 15:35

На мысль навёл.
А можно сделать в дримшелл типа виртуальную ВМУ на SD карте или винчестере? Чтобы игры сохранялись в неё. Ну типа как на XBOX игры на винт могут сохраняться.


RE: Dreamcast "NO GD-ROM": VMU - SWAT - 26.01.2016 19:27

(26.01.2016 15:35)Lin писал(а):  На мысль навёл.
А можно сделать в дримшелл типа виртуальную ВМУ на SD карте или винчестере? Чтобы игры сохранялись в неё. Ну типа как на XBOX игры на винт могут сохраняться.

Была у меня такая идея для ISO Loader, но пока не до этого. Да и памяти надо для нее много, а ее и так не хватает.
Возможно в итоге придется делать отдельный вид загрузчиков, расширенных, у которых будет меньшая совместимость (так как больше памяти надо), но больше всяких дополнительных функций.
Задел для подобных расширений функционала уже есть в принципе.


RE: Dreamcast "NO GD-ROM": VMU - MetalliC - 29.01.2016 00:36

хм, а каким образом ?
игры-то к VMU-шкам напрямую обращаются, не через какие-нибудь сисколлы.


RE: Dreamcast "NO GD-ROM": VMU - SWAT - 29.01.2016 08:02

(29.01.2016 00:36)MetalliC писал(а):  хм, а каким образом ?
игры-то к VMU-шкам напрямую обращаются, не через какие-нибудь сисколлы.

По прерыванию Maple DMA ходить в буфер обмена и подменять данные. Естественно раньше, чем игра туда посмотрит, я и так в общем то перехватываю прерывания раньше чем игра их получает, могу делать что угодно. Ну это если красиво делать и универсально, чтобы во всех играх работало. Таким образом можно в принципе любое Maple устройство эмулировать, этот вот буфер обмена для DMA облегчает задачу. Вот если бы игра сама как то с Maple BUS дружила, т.е. был бы протокол какой то, то тогда было бы сложнее. А тут просто буфер на 16 кило летает туда сюда.

Но можно сделать проще, по крайне мере для KATANA. Просто пропатчить в бинарнике функции для работы с VMU, чтобы был редирект на мои. Возможно не везде корректно будет работать, но я думаю в большинстве случаев прокатит. А найти эти функции не проблема в принципе, SDK все есть, binutils'ами пользоваться умею Smile Создаем ключ для поиска по начальному коду функции и ищем в памяти. Потом пару инструкций с прыжком записываем туда и радуемся. Я так уже в общем то делал, просто в другом контексте.

Во всем этом только одна загвоздка есть - нехватка памяти. Во первых код разрастется, так как добавится эмуляция VMU, плюс еще и кусок файловой системы и драйверов надо прилеплять, что за запись отвечает, сейчас он просто отключен для экономии памяти. Вот откуда ее брать пока не понятно.