GPD Win2 >> Debian 9.0
build desmume 0.9.11
參考資訊:
1. Installing_DeSmuME_from_source_on_Linux
RetroArch模擬器在載入NDS遊戲時(黃金太陽),會有聲音不同步以及掉FPS的問題,司徒原本以為是RetroArch架構的問題,因此嘗試編譯獨立的DeSmuME模擬器,看看是否有改善,只是結果還是一樣,問題沒有得到解決,不過司徒覺得應該是優化問題,目前只能再找時間研究程式碼,看看是否可以改善,不過司徒還是把編譯的步驟寫下,供以後參考:
$ cd $ sudo apt-get install build-essential autoconf automake libgtk2.0-dev libglu1-mesa-dev libsdl1.2-dev libglade2-dev gettext zlib1g-dev libosmesa6-dev intltool libagg-dev libasound2-dev libsoundtouch-dev libpcap-dev $ wget http://sourceforge.net/projects/desmume/files/desmume/0.9.11/desmume-0.9.11.tar.gz/download $ mv download desmume-0.9.11.tar.gz $ tar xvzf desmume-0.9.11.tar.gz $ cd desmume-0.9.11 $ ./configure $ vim src/Makefile +430 CPPFLAGS = -fpermissive $ make
編譯過程中,竟然發生錯誤,司徒只好使用快速修復方式修補
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | --- ../old/src/wifi.cpp 2015-02-14 23:05:26.000000000 +0800 +++ ../ new /src/wifi.cpp 2018-08-16 18:21:43.680568654 +0800 @@ -314,9 +314,9 @@ #if (WIFI_LOGGING_LEVEL >= 1) #if WIFI_LOG_USE_LOGC - #define WIFI_LOG(level, ...) if (level <= WIFI_LOGGING_LEVEL) LOGC(8, "WIFI: " __VA_ARGS__); + #define WIFI_LOG(level, ...) if (level <= WIFI_LOGGING_LEVEL) LOGC(8, __VA_ARGS__); #else - #define WIFI_LOG(level, ...) if (level <= WIFI_LOGGING_LEVEL) printf ( "WIFI: " __VA_ARGS__); + #define WIFI_LOG(level, ...) if (level <= WIFI_LOGGING_LEVEL) printf (__VA_ARGS__); #endif #else #define WIFI_LOG(level, ...) {} --- old/src/ctrlssdl.cpp 2015-02-14 23:05:26.000000000 +0800 +++ new /src/ctrlssdl.cpp 2018-08-16 18:25:45.586399269 +0800 @@ -200,7 +200,7 @@ break ; case SDL_JOYAXISMOTION : /* Dead zone of 50% */ - if ( ( abs (event.jaxis. value ) >> 14) != 0 ) + /*if( (abs(event.jaxis.value) >> 14) != 0 ) { key = ((event.jaxis.which & 15) << 12) | JOY_AXIS << 8 | ((event.jaxis.axis & 127) << 1); if (event.jaxis.value > 0) { @@ -210,7 +210,7 @@ else printf( "Device: %d; Axis: %d (-)\n", event.jaxis.which, event.jaxis.axis ); done = TRUE; - } + }*/ break ; case SDL_JOYHATMOTION: /* Diagonal positions will be treated as two separate keys being activated, rather than a single diagonal key. */ @@ -370,7 +370,7 @@ Note: button constants have a 1bit offset. */ case SDL_JOYAXISMOTION : key_code = ((event->jaxis.which & 15) << 12) | JOY_AXIS << 8 | ((event->jaxis.axis & 127) << 1); - if ( ( abs (event->jaxis. value ) >> 14) != 0 ) + /*if( (abs(event->jaxis.value) >> 14) != 0 ) { if (event->jaxis.value > 0) key_code |= 1; @@ -390,7 +390,7 @@ RM_KEY( *keypad, key ); if (key_o != 0) RM_KEY( *keypad, key_o ); - } + }*/ break ; case SDL_JOYHATMOTION: |
再次編譯
$ make $ ./src/gtk/desmume --cpu-mode=1
完成