Разработка и ромхакинг > Ромхакинг и программирование
Обращение к создателям эмуляторов NES
<< < (2/3) > >>
Ti_:

--- Цитата: Phil от 18 Февраль 2014, 23:15:52 ---зеркало

--- Конец цитаты ---
А я использовал подобный трюк ещё во времена денди. И помню надпись TIXE в кэпе, на выходе с уровня.
Phil:

--- Цитата: MetalliC от 18 Февраль 2014, 23:50:29 ---
сделай себе эмулятор такой чтоб нравится и играй, ну или измени какой-то из уже существующих под себя.
делать персонально для тебя как ты любишь и что любишь никто ничего не будет.

--- Конец цитаты ---
Я думаю, что идея играть в единый лучший эмулятор не нова. И идею с отражением я предложил не только для себя, не считаю эту идею глупой - как раз, если бы функция отражения и замены курсоров ВЛЕВО_ВПРАВО была бы реализована по одному клику, то ей бы пользовались многие. А так, как раз, заморачиваться через нестандартные "отражатели" и каждый раз вручную курсоры менять, как раз никто не будет. Вот и кажется, что моя идея глупая.
Я пользуюсь эмулятором фсеу от CAH4E3а с палитрой от virtuanes, считаю его лучшим.

Ну, тем не менее спасибо.
gepar:
В варианте с зеркалом влево-вправо на приставке не менялись же, хотя я не понимаю какое это разнообразие когда всё просто отзеркалено. Разве есть какая-то разница слева замок  в Марио или справа?
Inspector_Popabol:

--- Цитата: gepar от 19 Февраль 2014, 01:48:26 ---В варианте с зеркалом влево-вправо на приставке не менялись же, хотя я не понимаю какое это разнообразие когда всё просто отзеркалено. Разве есть какая-то разница слева замок  в Марио или справа?

--- Конец цитаты ---
В камастуре лимон поз, а суть у каждой одна. Ну две максимум. :neznayu:
Phil:

--- Цитата: gepar от 19 Февраль 2014, 01:48:26 ---В варианте с зеркалом влево-вправо на приставке не менялись же, хотя я не понимаю какое это разнообразие когда всё просто отзеркалено. Разве есть какая-то разница слева замок  в Марио или справа?

--- Конец цитаты ---
А ты попробуй поиграть в отзеркаленный вариант. Разница в моторике. Кажется будто всё одно и тоже, а на деле, как в новую игру попал.
gepar:

--- Цитата: Inspector_Popabol ---В камастуре лимон поз, а суть у каждой одна. Ну две максимум.
--- Конец цитаты ---

Нет, там другое и это сравнимо с разными дорогами к одному и тому же финалу в играх с разветвлениями, а вот в данном случае я вас не понимаю.
Inspector_Popabol:

--- Цитата: gepar от 19 Февраль 2014, 11:28:17 ---
Нет, там другое и это сравнимо с разными дорогами к одному и тому же финалу в играх с разветвлениями, а вот в данном случае я вас не понимаю.

--- Конец цитаты ---
Когда ты дверь открываешь тебе дверь надо открыть или попасть внутрь? В Beyond Two Sould кстати было тыща с чем-то анимаций открывания двери. А я всю игру прошёл, но мне ни одна из них не запомнилась. :neznayu:
Razor:
Помню себе я разнообразил игру, выключая изображение в Sonic 2 вообще, ориентируясь по звуку - тоже разнообразно.
Ну или как с девушкой вместе проходили игры, деля на одного D-Pad, на другого - кнопки :lol:
Или даже как пытались проходить игры, ограничивая себя в нажатиях некоторых кнопок:

Кстати, неплохо ещё иногда отзеркаливать игры и сверху вниз :lol:
yur:
Phil, есть один мне известный эмулятор напоминающий твою тенденцию - называется E3000, но недоработанный до конца, много процессорного времени жрёт и не все предназначенные проги правильно эмулирует
Phil:
В общем, наконец-то я приобрёл новый комп, и у меня появилась возможность настраивать эмуляторы, требовательные к ресурсам. Скачал Retroarch-1-3-4, после долгих мучений всё же настроил (и с графическим фильтром, и отражённое изображение, и джойстик (реальный дендивский с поменянными кнопками "ВЛЕВО" и "ВПРАВО") подключил). Впечатлений масса!!! Вроде бы игры всего-лишь стали зеркальными, но проходить я их стал по другому. Например, в играх типа Утиные истории или Чёрный плащ, я всё равно в симметричных локациях (например, битвы с Боссами и др.) играю, ориентируясь на левую сторону.
Даже самым большим скептикам советую поиграть хоть один раз в зеркальном мире!!!
Xerox:
Phil, запиши видос, хотя бы 1 уровень) Просто посмотреть охота
CaH4e3:
[sarcasm on]
"На данном форуме некропостинг не приветствуется" (с) Rumata
[sarcasm off]
Ogr:

--- Цитата: Mr2 от 17 Май 2019, 21:07:57 ---менять конфиг RetroArch
--- Конец цитаты ---
можно в CRT-Royale отзеркалить, поставив в настройках присета ширину экрана в минус.

http://filthypants.blogspot.com/2018/05/retroarch-mirror-mode.html
Phil:

--- Цитата: Mr2 от 17 Май 2019, 21:07:57 ---Я не ради чёса, я по делу. Тема норм, в кишках копаться неохота.(менять конфиг RetroArch)
Если кто реализует в fceux, будет круто. ;)

--- Конец цитаты ---
Именно. В RetroArch вопрос уже давно решённый. Всё уже настроено. Но хочется именно во fceux! Одним кликом отзеркаливание и замена кнопок управления: ЛЕВО на ПРАВО, и ПРАВО на ЛЕВО.
Sharpnull:

--- Цитата: Phil от 19 Май 2019, 10:34:28 ---Но хочется именно во fceux!
--- Конец цитаты ---
Сделал для последней версии https://github.com/TASVideos/fceux.

Что делать
Зайти в Config -> Map Hotkeys. В самом низу назначить для команды Toggle Screen Mirroring клавишу, например End. Во время игры при нажатии этой клавиши будет отзеркален экран и переставлены кнопки влево/вправо для 4 контроллеров. Если при выходите из эмулятора оставить отзеркаленный режим, то кнопки останутся переставленными - это недоработка (UPD: Исправлено).

Как сделать сборку для новой версии
Я использовал https://ci.appveyor.com/ для сборки со скриптом, который "патчит" исходный код. Пока исходный код не изменится кардинально, патч будет работать для новых версий.

Что было изменено в коде:

--- Код: ---### src/fceu.cpp
// В конец функции
void FCEUI_Emulate(uint8 **pXBuf, int32 **SoundBuf, int32 *SoundBufSize, int skip) {
// добавить
    extern int screenMirroring;
    if (screenMirroring) {
        for (int y = 0; y < 256; y++) {
            for (int x = 0; x < 256; x++) {
                XBuf[y * 256 + x] = XBackBuf[y * 256 + 255 - x];
            }
        }
    }

### src/input.h
// Вместо EMUCMD_MAX
EMUCMD_TOOL_MIRRORING, EMUCMD_MAX

### src/input.cpp
// Вместо #include "drivers/win/taseditor.h"
#include "drivers/win/taseditor.h"
#include "drivers/win/input.h"
// Вместо static void DebuggerStepInto(void);
static void DebuggerStepInto(void);
static void ScreenMirroring(void);
// После "Debugger - Step Into", EMUCMDFLAG_TASEDITOR }, добавить
{ EMUCMD_TOOL_MIRRORING, EMUCMDTYPE_MISC, ScreenMirroring, 0, 0, "Toggle Screen Mirroring", EMUCMDFLAG_TASEDITOR },

// Добавить в конец
int screenMirroring = 0;
void ScreenMirroring(void)
{
    screenMirroring ^= 1;
    extern ButtConfig GamePadConfig[4][12];
    for (int i = 0; i < 4; i++)
        swap(GamePadConfig[i][6], GamePadConfig[i][7]);
}

### src/drivers/win/main.cpp
// Вместо SaveConfig(TempArray);
extern ButtConfig GamePadConfig[4][12];
    extern int screenMirroring;
    for (int i = 0; screenMirroring && i < 4; i++)
        swap(GamePadConfig[i][6], GamePadConfig[i][7]);
    SaveConfig(TempArray);
--- Конец кода ---

Настройка Appveyor
Зарегистрироваться в https://ci.appveyor.com.
Projects -> New project, слева Git, ввести в Clone URL: https://github.com/TASVideos/fceux.git

У выбранного проекта:
Settings -> Artifacts, Add, ввести в Path to artifact: vc\fceux.zip
Settings -> Build -> Script, PS, вставить скрипт:

--- Код: ---(Get-Content src\input.h) -replace "EMUCMD_MAX","EMUCMD_TOOL_MIRRORING, EMUCMD_MAX" | Set-Content src\input.h

(Get-Content src\input.cpp) -replace "#include `"drivers/win/taseditor.h`"","#include `"drivers/win/taseditor.h`"`r`n#include `"drivers/win/input.h`"" | Set-Content src\input.cpp
(Get-Content src\input.cpp) -replace "static void DebuggerStepInto\(void\);","static void DebuggerStepInto(void);`r`nstatic void ScreenMirroring(void);" | Set-Content src\input.cpp
(Get-Content src\input.cpp) -replace "Debugger - Step Into`", EMUCMDFLAG_TASEDITOR },","Debugger - Step Into`", EMUCMDFLAG_TASEDITOR },`r`n    { EMUCMD_TOOL_MIRRORING, EMUCMDTYPE_MISC, ScreenMirroring, 0, 0, `"Toggle Screen Mirroring`", EMUCMDFLAG_TASEDITOR }," | Set-Content src\input.cpp
Add-Content src\input.cpp "int screenMirroring = 0;`r`nvoid ScreenMirroring(void)`r`n{`r`n    screenMirroring ^= 1;`r`n    extern ButtConfig GamePadConfig[4][12];`r`n    for (int i = 0; i < 4; i++)`r`n        swap(GamePadConfig[i][6], GamePadConfig[i][7]);`r`n}"

(Get-Content src\fceu.cpp) -replace "if \(movieSubtitles\)","extern int screenMirroring;`r`n    if (screenMirroring) {`r`n        for (int y = 0; y < 256; y++) {`r`n            for (int x = 0; x < 256; x++) {`r`n                XBuf[y * 256 + x] = XBackBuf[y * 256 + 255 - x];`r`n            }`r`n        }`r`n    }`r`n    if (movieSubtitles)" | Set-Content src\fceu.cpp

(Get-Content src\drivers\win\main.cpp) -replace "SaveConfig\(TempArray\);","extern ButtConfig GamePadConfig[4][12];`r`n    extern int screenMirroring;`r`n    for (int i = 0; screenMirroring && i < 4; i++)`r`n        swap(GamePadConfig[i][6], GamePadConfig[i][7]);`r`n    SaveConfig(TempArray);" | Set-Content src\drivers\win\main.cpp

cd vc
msbuild vc14_fceux.sln /p:Configuration=PublicRelease /p:Platform="win32" /t:rebuild
$a = Start-Process -FilePath .\archive.bat -Wait -passthru;$a.ExitCode
--- Конец кода ---
Не забывайте нажимать Save.
Вкладка Current build -> New build. Ждёте сборки, если всё успешно, то в Artifacts сможете скачать fceux.zip.

Примечания
Скрипт повторяет поведение официальной сборки https://ci.appveyor.com/project/zeromus/fceux, с добавлением патча через замену кода.
По-хорошему следовало настроить автоматическую сборку после коммита, но я не знаю как.

--------
Исправил сохранение переставленных кнопок влево/вправо.
Mr2:

--- Цитата: Sharpnull от 19 Май 2019, 19:52:45 ---Сделал для последней версии
--- Конец цитаты ---
Забрал! :gamer:
Зеркало нехило так дезориентирует в уровнях с многоэтажной архитектурой. :wow:


--- Цитата: Sharpnull от 19 Май 2019, 19:52:45 ---Как сделать сборку для новой версии
--- Конец цитаты ---
Вон оно чё, a я искал где нажать кнопку build. :lol: А тут нужно целый ритуал пройти. :blush:

Sharpnull, ты крутой, спасибо! :drinks: Пойду в Батлтодсов играть. :nyam:
Sharpnull:

--- Цитата: Mr2 от 19 Май 2019, 21:37:45 ---Вон оно чё, a я искал где нажать кнопку build. :lol: А тут нужно целый ритуал пройти. :blush:

--- Конец цитаты ---
Я не написал, что можно просто скачать последнюю версию FCEUX на компьютер, запустить команды замены из скрипта (которые с -replace) в PowerShell и собрать в Visual Studio. Автосборка удобна тем, что в будущем будет собираться в одно нажатие.
--------
Ещё есть универсальный способ, платная утилита UltraMon умеет зеркалить даже отдельные приложения (если верить скриншоту): https://www.realtimesoft.com/ultramon/tour/mirroring.asp
Phil:
Sharpnull, большущее спасибо!!!


--- Цитата: Sharpnull от 19 Май 2019, 19:52:45 ---Если при выходите из эмулятора оставить отзеркаленный режим, то кнопки останутся переставленными - это недоработка.
--- Конец цитаты ---
Я эту проблему решил поставив галочку "ТОЛЬКО ЧТЕНИЕ" на файл fceux.cfg после всех настроек.

Кстати, быстрое зеркалирование нажатием например "END" удобно. Например, если игра сложная, то полазить по менюшкам, а уже в момент самой игры зеркалить.
Sharpnull:
Исправил сохранение переставленных кнопок влево/вправо. Обновил сборку в сообщении выше вместе со скриптом.

--- Цитата: Mr2 от 20 Май 2019, 07:59:13 ---Попробуй в обработчике главного окна вернуть настройки управления обратно:
--- Конец цитаты ---
Там несколько сложнее, для надёжности вставил код как раз перед сохранением конфига перед выходом (src/drivers/win/main.cpp - SaveConfig(TempArray)).
Phil:

--- Цитата: Sharpnull от 20 Май 2019, 13:41:28 ---Исправил сохранение переставленных кнопок влево/вправо. Обновил сборку в сообщении выше вместе со скриптом.Там несколько сложнее, для надёжности вставил код как раз перед сохранением конфига перед выходом (src/drivers/win/main.cpp - SaveConfig(TempArray)).

--- Конец цитаты ---
Sharpnull, РЕСПЕКТИЩЕ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! МЕЧТЫ СБЫВАЮТСЯ!!!!!!!!!!!!!!!!!
Навигация
Главная страница сообщений
Следующая страница
Предыдущая страница

Перейти к полной версии