| Разработка и ромхакинг > Ромхакинг и программирование |
| Обращение к создателям эмуляторов NES |
| << < (3/3) |
| Sharpnull:
Мелочь, но... Я выбрал неправильный термин для горячей клавиши и переменных. Mirroring - в компьютерной сфере обычно означает "клонирование" экрана или как клоны сайтов (зеркала), хотя можно сказать mirror image (отражённое изображение). К тому же у NES есть понятие Mirroring. Для такого поворота изображения/картинки принято Horizontal/Vertical Flip(ping), а глагол Flip Horizontal(ly)/Vertical(ly). Так что нужно было назвать "Toggle Horizontal Flip" или "Toggle Horizontally Flipped Screen" (?). |
| Phil:
--- Цитата: Sharpnull от 19 Май 2019, 19:52:45 ---Что было изменено в коде: Код: ### 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[6], GamePadConfig[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[6], GamePadConfig[7]); SaveConfig(TempArray); --- Конец цитаты --- Попробовал в Линухе скомпилировать исправленную версию (оригинальный код компилируется), но вот такая беда: .......... /usr/include/c++/7/bits/exception_ptr.h:166:5: note: 'std::__exception_ptr::swap' swap(exception_ptr& __lhs, exception_ptr& __rhs) ^~~~ src/input.cpp: At global scope: src/input.cpp:927:13: warning: 'void CommandUnImpl()' defined but not used [-Wunused-function] static void CommandUnImpl(void) ^~~~~~~~~~~~~ scons: *** [src/input.o] Error 1 scons: building terminated because of errors. |
| Phil:
Ну, соответственно, здесь кину ссылку на тему-близнец с информацией о puNES 0.106 с функцией зеркалирования. http://www.emu-land.net/forum/index.php/topic,76586.msg1475560.html#msg1475560 |
| Dukatti:
--- Цитата: Ogr от 17 Май 2019, 21:46:23 ---Quote from: Mr2 on 17 May 2019, 21:07:57 менять конфиг RetroArch можно в CRT-Royale отзеркалить, поставив в настройках присета ширину экрана в минус. --- Конец цитаты --- в ReShade Depth3D тоже работает. При отрицательных или экстремально больших вне диапазона [обычного двойного клика] значениях. Существует еще Actual Multiple Monitors, где имея 2 монитора можно иметь и оригинальное, и отраженное изображение одновременно. [не недооценивайте эту возможность и не откладывайте ее настройки на потом, особенно если работаете с графикой] |
| Навигация |
| Главная страница сообщений |
| Предыдущая страница |