Собственно здесь я приведу различные небольшие модификации исходного кода MAME, которые дают различные полезные плюшки. Код у MAME в основном написан на C++, и подразумевается что вы хотя бы слегка знакомы с этим языком или с программированием в целом. Ничего особо сложного делать не придётся, но понимать что к чему очень желательно. Также я не стал делать никаких diff или указывать номера строк, чтобы изменения можно было относительно легко вносить в любые версии MAME.
Актуально для версии: 0.175
• Включение DirectInput - поддержка XPadder и других программ, эмулирующих клавиатуру.
В последних версиях MAME поддержка DirectInput добавлена как отдельная опция. Достаточно запустить MAME с аргументами "-keyboardprovider dinput".
• Упразднение надписей при сохранение/загрузке.
При сохранение и загрузке MAME аршинными буквами пишет всякую полезную инфу на пол экрана. И очень быстро это штука начинает бесить дико и вполне основательно. Искоренить её очень просто.
Файл: emu\machine.cpp
Находим строчку с текстом "case STATERR_NONE:". Весь блок для break меняем на:
if (m_saveload_schedule != SLS_LOAD) {
if (!(m_system.flags & MACHINE_SUPPORTS_SAVE))
popmessage("Unsupported.");
else
popmessage("Saved.");
}
Файл: frontend\mame\ui\ui.cpp
Находим строчку с текстом "// display a popup indicating that the save will proceed". Удаляем или комментируем две строчки с вызовом popmessage, идущие ниже.
В данном случае мы отключили показ мерзких сообщений при загрузке, оставив их только при сохранении и то сильно покоцав. Выключать полностью пожалуй не стоит, чтобы всё таки было видно, что сохранение прошло и поддерживается ли оно вообще.
• Пауза при вызове меню.
В документации MAME явно прописано: вызываем меню, а затем при необходимости вручную ставим паузу. Очень удобно, что сказать. Сделаем так, чтобы всё было автоматом.
Файл: frontend\mame\ui\ui.cpp
Находим строчку с текстом "// turn on menus if requested". Добавляем код в if-блок до return:
if (!is_paused)
machine().pause();
Файл frontend\mame\ui\menu.cpp
Находим строчку с текстом "// if the menus are to be hidden, return a cancel here". Добавляем код в if-блок до return:
if (mui.machine().paused())
mui.machine().resume();
• Прозрачный фон для сообщений.
Мелочь а приятно.
Файл: frontend\mame\ui\ui.cpp
Находим метод "ui_manager::popup_time". Заменяем "messagebox_backcolor = UI_BOX_COLOR;" на "messagebox_backcolor = rgb_t(0x77,0xcc,0xcc,0xcc);". Можно поиграться с цветами на свой вкус.
• Быстрые сохранения.
Обязательный выбор слота при сохранении это так удобно, так прекрасно. На хрен такое счастье.
Файл: emu\ui\ui.cpp
Находим два метода: "mame_ui_manager::start_save_state" и "mame_ui_manager::start_load_state", комментируем или удаляем в них две строчки вида "machine.pause();".
Находим метод "mame_ui_manager::handler_load_save".
Комментируем или удаляем всё, что идёт после комментария "okay, we're waiting for a key to select a slot; display a message" и до "display a popup indicating that the save will proceed".
Вместо этого вставляем:
file = '1';
sprintf(filename, "%c", file);
Можно также закомментировать или удалить строчку:machine.resume();
Теперь сохраняться будет только в файл с именем '1'.
Комментариев нет:
Отправить комментарий