From dcf3f295f14040ca11d4f56fc168eaf5d24edb55 Mon Sep 17 00:00:00 2001 From: Squall Leonhart Date: Thu, 7 Aug 2025 16:35:57 +1000 Subject: [PATCH] Make DelaySI Configurable and add/update RDB defaults for the games that will benefit (#2494) * Make DelaySI Configurable make EOF consistent language update, make control spacing consistent * update all languages to add semicolon * Update RDB Info.txt * Correct manifest wanings --- Config/Project64.rdb | 34 +++++++++------ Config/RDB Info.txt | 5 ++- Lang/Arabic.pj.Lang | 2 +- Lang/Bengali.pj.lang | 2 +- Lang/Bosnian.pj.Lang | 2 +- Lang/Bulgarian.pj.Lang | 2 +- Lang/Catalan.pj.Lang | 2 +- Lang/Chinese (Simplified).pj.Lang | 2 +- Lang/Chinese (Traditional).pj.Lang | 2 +- Lang/Czech.pj.Lang | 2 +- Lang/Danish.pj.Lang | 2 +- Lang/Dutch.pj.Lang | 2 +- Lang/Finnish.pj.Lang | 2 +- Lang/French.pj.Lang | 2 +- Lang/German.pj.Lang | 2 +- Lang/Greek.pj.Lang | 2 +- Lang/Hungarian.pj.Lang | 2 +- Lang/Indonesian.pj.lang | 2 +- Lang/Italian.pj.Lang | 2 +- Lang/Japanese.pj.Lang | 2 +- Lang/Korean.pj.Lang | 2 +- Lang/Lithuanian.pj.Lang | 2 +- Lang/Norwegian.pj.Lang | 2 +- Lang/Polish.pj.Lang | 2 +- Lang/Punjabi.pj.lang | 2 +- Lang/Spanish.pj.Lang | 2 +- Lang/Swedish.pj.Lang | 2 +- Lang/Turkish.pj.Lang | 2 +- Lang/Ukrainian.pj.Lang | 2 +- Lang/Vietnamese.pj.lang | 2 +- .../Project64-core/Multilanguage/Language.cpp | 2 +- .../N64System/MemoryHandler/PifRamHandler.cpp | 12 +++--- Source/Project64-core/Settings.cpp | 2 +- .../Project64-core/Settings/GameSettings.cpp | 4 +- Source/Project64-core/Settings/GameSettings.h | 4 +- Source/Project64/Project64.exe.manifest | 12 +++--- .../Settings/SettingsPage-Game-General.cpp | 6 ++- .../Settings/SettingsPage-Game-General.h | 2 +- Source/Project64/UserInterface/UIResources.rc | 41 ++++++++++--------- Source/Project64/UserInterface/resource.h | 9 ++-- 40 files changed, 101 insertions(+), 88 deletions(-) diff --git a/Config/Project64.rdb b/Config/Project64.rdb index af5258a35..76d3cccff 100644 --- a/Config/Project64.rdb +++ b/Config/Project64.rdb @@ -821,7 +821,7 @@ Status=Compatible Clear Frame=2 Counter Factor=1 Culling=1 -Delay SI=1 +Delay SI=2304 RDRAM Size=8 [5326696F-FE9A99C3-C:45] @@ -832,7 +832,7 @@ Status=Compatible Clear Frame=2 Counter Factor=1 Culling=1 -Delay SI=1 +Delay SI=2304 RDRAM Size=8 [B3D451C6-E1CB58E2-C:4A] @@ -1245,7 +1245,7 @@ Internal Name=CITY TOUR GP Status=Compatible 32bit=1 Counter Factor=1 -Delay SI=1 +Delay SI=2304 RDRAM Size=8 Save Type=16kbit Eeprom @@ -1380,7 +1380,7 @@ Good Name=Cruis'n USA (E) Internal Name=Cruis'n USA Status=Compatible 32bit=1 -Delay SI=1 +Delay SI=2304 RDRAM Size=8 [FF2F2FB4-D161149A-C:45] @@ -1389,14 +1389,14 @@ Internal Name=Cruis'n USA Status=Compatible 32bit=1 Culling=1 -Delay SI=1 +Delay SI=2304 [5306CF45-CBC49250-C:45] Good Name=Cruis'n USA (U) (V1.1) Internal Name=Cruis'n USA Status=Compatible 32bit=1 -Delay SI=1 +Delay SI=2304 RDRAM Size=8 [B3402554-7340C004-C:45] @@ -1404,7 +1404,7 @@ Good Name=Cruis'n USA (U) (V1.2) Internal Name=Cruis'n USA Status=Compatible 32bit=1 -Delay SI=1 +Delay SI=2304 [83F3931E-CB72223D-C:50] Good Name=Cruis'n World (E) @@ -2524,7 +2524,7 @@ Internal Name=GT64 Status=Compatible 32bit=1 Counter Factor=1 -Delay SI=1 +Delay SI=2304 RDRAM Size=8 Save Type=16kbit Eeprom @@ -2534,7 +2534,7 @@ Internal Name=GT64 Status=Compatible 32bit=1 Counter Factor=1 -Delay SI=1 +Delay SI=2304 RDRAM Size=8 Save Type=16kbit Eeprom @@ -4438,7 +4438,7 @@ Good Name=Nightmare Creatures (U) Internal Name=NIGHTMARE CREATURES Status=Compatible 32bit=1 -Delay SI=1 +Delay SI=2304 RDRAM Size=8 ViRefresh=2200 @@ -4886,6 +4886,7 @@ Status=Compatible Culling=1 Emulate Clear=1 Linking=Off +Delay SI=8192 RDRAM Size=8 [91C9E05D-AD3AAFB9-C:50] @@ -4896,6 +4897,7 @@ Status=Compatible Culling=1 Emulate Clear=1 Linking=Off +Delay SI=8192 [A23553A3-42BF2D39-C:46] Good Name=Pokemon Stadium (F) @@ -4905,6 +4907,7 @@ Status=Compatible Culling=1 Emulate Clear=1 Linking=Off +Delay SI=8192 [42011E1B-E3552DB5-C:44] Good Name=Pokemon Stadium (G) @@ -4914,6 +4917,7 @@ Status=Compatible Culling=1 Emulate Clear=1 Linking=Off +Delay SI=8192 RDRAM Size=8 [A53FA82D-DAE2C15D-C:49] @@ -4924,6 +4928,7 @@ Status=Compatible Culling=1 Emulate Clear=1 Linking=Off +Delay SI=8192 [665E8259-D098BD1D-C:4A] Good Name=Pokemon Stadium (J) @@ -4933,6 +4938,7 @@ Status=Compatible Culling=1 Emulate Clear=1 Linking=Off +Delay SI=8192 RDRAM Size=8 Save Type=Sram @@ -4944,6 +4950,7 @@ Status=Compatible Culling=1 Emulate Clear=1 Linking=Off +Delay SI=8192 [90F5D9B3-9D0EDCF0-C:45] Good Name=Pokemon Stadium (U) (V1.0) @@ -4953,6 +4960,7 @@ Status=Compatible Culling=1 Emulate Clear=1 Linking=Off +Delay SI=8192 [1A122D43-C17DAF0F-C:45] Good Name=Pokemon Stadium - Kiosk (U) (V1.1) @@ -4962,6 +4970,7 @@ Status=Compatible Culling=1 Emulate Clear=1 Linking=Off +Delay SI=8192 RDRAM Size=8 [9C8FB2FA-9B84A09B-C:45] @@ -4972,6 +4981,7 @@ Status=Compatible Culling=1 Emulate Clear=1 Linking=Off +Delay SI=8192 [2952369C-B6E4C3A8-C:50] Good Name=Pokemon Stadium 2 (E) @@ -5691,7 +5701,7 @@ Good Name=Shin Nihon Pro Wrestling Toukon Road - Brave Spirits (J) Internal Name=TOUKON ROAD Status=Compatible 32bit=1 -Delay SI=1 +Delay SI=2304 RDRAM Size=8 [551C7F43-9149831C-C:4A] @@ -7120,7 +7130,7 @@ Status=Compatible 32bit=1 Counter Factor=1 Culling=1 -Delay SI=1 +Delay SI=2304 RDRAM Size=8 [636E6B19-E57DDC5F-C:50] diff --git a/Config/RDB Info.txt b/Config/RDB Info.txt index 35d22bd7f..9eaa9f816 100644 --- a/Config/RDB Info.txt +++ b/Config/RDB Info.txt @@ -81,10 +81,11 @@ Delay DP Delay SI -------- -- true -- false (default) +- 0 (default) +- 0x900(2304) or 0x2000(8192) where applicable This option was added in v1.5 to help a small number of games that were broken in v1.4. It's simply either needed (for example Cruis'N USA) or it isn't. Usually it isn't. +This option was changed from a Boolean to a Value after 3.0 because some games need a longer delay than 0x900(2304) when communicating with controller extensions such as the transferpak. Audio Signal ------------ diff --git a/Lang/Arabic.pj.Lang b/Lang/Arabic.pj.Lang index 88ee715f9..0fc216ee3 100644 --- a/Lang/Arabic.pj.Lang +++ b/Lang/Arabic.pj.Lang @@ -280,7 +280,7 @@ N "تكبير عازلة الترجمة" #526# #527# "TLB استخدم” "تسجيل التخزين المؤقت" #528# -#529# "SI تأخير مقاطعة " +#529# "SI تأخير مقاطعة:" #530# "SP سريع" “الاساسية” #531# #532# "RSPإشارة الصوت ال" diff --git a/Lang/Bengali.pj.lang b/Lang/Bengali.pj.lang index 815b3cfd4..159c709b1 100644 --- a/Lang/Bengali.pj.lang +++ b/Lang/Bengali.pj.lang @@ -275,7 +275,7 @@ # 525# "কাউন্টার ফ্যাক্টর:" # 526# "বৃহত্তর সংকলন বাফার" # 528# "রেজিস্টার ক্যাচিং" -# 529# "বিলম্ব সি বাধা" +# 529# "বিলম্ব সি বাধা:" # 530# "ফাস্ট এসপি" # 531# "ডিফল্ট" # 532# "আরএসপি অডিও সিগন্যাল" diff --git a/Lang/Bosnian.pj.Lang b/Lang/Bosnian.pj.Lang index f21d01929..d779333b2 100644 --- a/Lang/Bosnian.pj.Lang +++ b/Lang/Bosnian.pj.Lang @@ -288,7 +288,7 @@ # 526 # "Veći međuspremnik kompiliranja" # 527 # "Koristi TLB" # 528 # "Registriraj predmemoriju" -# 529 # "Odgoda prekida SI" +# 529 # "Odgoda prekida SI:" # 530 # "Brzi SP" # 531 # "Zadano" # 532 # "RSP audio signal" diff --git a/Lang/Bulgarian.pj.Lang b/Lang/Bulgarian.pj.Lang index 1f2853a30..300e62f94 100644 --- a/Lang/Bulgarian.pj.Lang +++ b/Lang/Bulgarian.pj.Lang @@ -237,7 +237,7 @@ #526# "&По-голям комп. буфер" #527# "&TLB" #528# "&Register Caching" -#529# "Задръж SI &прекъсване" +#529# "Задръж SI &прекъсване:" #530# "SP &Хак" #531# "* използвай по подразбиране" diff --git a/Lang/Catalan.pj.Lang b/Lang/Catalan.pj.Lang index 580b3839e..ed5c2a891 100644 --- a/Lang/Catalan.pj.Lang +++ b/Lang/Catalan.pj.Lang @@ -280,7 +280,7 @@ #526# "Memòria de compilació més gran" #527# "Empra TLB" #528# "Registra la mem. cau" -#529# "Retard d'interrupció SI" +#529# "Retard d'interrupció SI:" #530# "Modificació d'SP" #531# "Per defecte" #532# "Senyal d'àudio RSP" diff --git a/Lang/Chinese (Simplified).pj.Lang b/Lang/Chinese (Simplified).pj.Lang index 10f676c6c..e4ba92bbc 100644 --- a/Lang/Chinese (Simplified).pj.Lang +++ b/Lang/Chinese (Simplified).pj.Lang @@ -295,7 +295,7 @@ #526# "较大编译器缓冲" #527# "使用 TLB" #528# "寄存器缓存" -#529# "SI 中断延迟" +#529# "SI 中断延迟:" #530# "快速度 (SP)" #531# "默认" #532# "RSP 音频信号" diff --git a/Lang/Chinese (Traditional).pj.Lang b/Lang/Chinese (Traditional).pj.Lang index d4804fe9d..0d7fac405 100644 --- a/Lang/Chinese (Traditional).pj.Lang +++ b/Lang/Chinese (Traditional).pj.Lang @@ -240,7 +240,7 @@ #526# "較大的編譯緩衝區" #527# "使用 TLB" #528# "暫存器快取" -#529# "延遲 SI 插斷" +#529# "延遲 SI 插斷:" #530# "SP Hack" #531# "預設" #532# "RSP 音訊信號" diff --git a/Lang/Czech.pj.Lang b/Lang/Czech.pj.Lang index c8e96aeff..02c35613b 100644 --- a/Lang/Czech.pj.Lang +++ b/Lang/Czech.pj.Lang @@ -237,7 +237,7 @@ RDB není pøítomno nebo volba dole 'pøepsat' je nezaškrtnutá" #526# "&Vìtší kompilaèní buffer" #527# "T&LB" #528# "Caching ®istru" -#529# "Zpozd&it SI pøerušení" +#529# "Zpozd&it SI pøerušení:" #530# "SP &hack" #531# "* užívat standardní" diff --git a/Lang/Danish.pj.Lang b/Lang/Danish.pj.Lang index c9beb4e33..f1d8a768a 100644 --- a/Lang/Danish.pj.Lang +++ b/Lang/Danish.pj.Lang @@ -236,7 +236,7 @@ #526# "Større sammenlignings Buffer" #527# "&TLB" #528# "&Registrer Caching" -#529# "&Forsink SI afbryd" +#529# "&Forsink SI afbryd:" #530# "SP Hack" #531# "&Anvend standard" diff --git a/Lang/Dutch.pj.Lang b/Lang/Dutch.pj.Lang index d112b2fe4..4b02e5251 100644 --- a/Lang/Dutch.pj.Lang +++ b/Lang/Dutch.pj.Lang @@ -293,7 +293,7 @@ #526# "Grootte Compile Buffer" #527# "Gebruik TLB" #528# "Register caching" -#529# "Vertraag SI Interrupt" +#529# "Vertraag SI Interrupt:" #530# "SP Hack" #531# "Standaard" #532# "RSP audio signaal" diff --git a/Lang/Finnish.pj.Lang b/Lang/Finnish.pj.Lang index 4e851cca0..956f9f897 100644 --- a/Lang/Finnish.pj.Lang +++ b/Lang/Finnish.pj.Lang @@ -239,7 +239,7 @@ #526# "Suurempi käännös puskuri" #527# "Käytä TLB:tä" #528# "Register caching" -#529# "Delay SI Interrupt" +#529# "Delay SI Interrupt:" #530# "SP Hack" #531# "Oletus" #532# ""RSP Audio Signaali"" diff --git a/Lang/French.pj.Lang b/Lang/French.pj.Lang index 8862aff56..93c9b9067 100644 --- a/Lang/French.pj.Lang +++ b/Lang/French.pj.Lang @@ -294,7 +294,7 @@ #526# "Plus grand tampon de compilation" #527# "Utiliser le TLB" #528# "Mettre en cache les registres" -#529# "Retarder l’interruption SI" +#529# "Retarder l’interruption SI:" #530# "SP rapide" #531# "Défaut" #532# "Signal audio RSP" diff --git a/Lang/German.pj.Lang b/Lang/German.pj.Lang index d0a0a417b..41c6276f6 100644 --- a/Lang/German.pj.Lang +++ b/Lang/German.pj.Lang @@ -280,7 +280,7 @@ #526# "Größerer &Puffer" #527# "&TLB" #528# "&Registercaching" -#529# "SI seltener &unterbrechen" +#529# "SI seltener &unterbrechen:" #530# "SP-&Hack" #531# "Standard" #532# "RSP-Audiosignal" diff --git a/Lang/Greek.pj.Lang b/Lang/Greek.pj.Lang index c4178cbe2..2ea74c951 100644 --- a/Lang/Greek.pj.Lang +++ b/Lang/Greek.pj.Lang @@ -237,7 +237,7 @@ #526# "&Larger Compile Buffer" #527# "&Χρησιμοποίηση TLB" #528# "&Register Caching" -#529# "Καθυστέρηση SI &Διακοπής" +#529# "Καθυστέρηση SI &Διακοπής:" #530# "SP &Hack" #531# "Χρήση Προεπιλογών" diff --git a/Lang/Hungarian.pj.Lang b/Lang/Hungarian.pj.Lang index af897b98e..782a0d174 100644 --- a/Lang/Hungarian.pj.Lang +++ b/Lang/Hungarian.pj.Lang @@ -239,7 +239,7 @@ #526# "Nagyobb létrehozó puffer" #527# "TLB használat" #528# "Cash regisztráció" -#529# "SI megszakítás törlése" +#529# "SI megszakítás törlése:" #530# "SP hack" #531# "Alapértelmezett" #532# "RSP hang szignál" diff --git a/Lang/Indonesian.pj.lang b/Lang/Indonesian.pj.lang index f99c8c60b..cec808232 100644 --- a/Lang/Indonesian.pj.lang +++ b/Lang/Indonesian.pj.lang @@ -275,7 +275,7 @@ #525# "Faktor penghitung:" #526# "Buffer kompilasi lebih besar" #528# "Daftar cache" -#529# "Menunda interupsi SI" +#529# "Menunda interupsi SI:" #530# "SP Cepat" #531# "Bawaan" #532# "Sinyal audio RSP" diff --git a/Lang/Italian.pj.Lang b/Lang/Italian.pj.Lang index b07194245..7a2ae606e 100644 --- a/Lang/Italian.pj.Lang +++ b/Lang/Italian.pj.Lang @@ -294,7 +294,7 @@ #526# "Buffer di compilazione più grande" #527# "Attiva TLB" #528# "Cache del registro" -#529# "Ritardo Interrupt SI" +#529# "Ritardo Interrupt SI:" #530# "Hack SP" #531# "Predefinito" #532# ""Segnale Audio RSP"" diff --git a/Lang/Japanese.pj.Lang b/Lang/Japanese.pj.Lang index 2f54003f0..355f9542f 100644 --- a/Lang/Japanese.pj.Lang +++ b/Lang/Japanese.pj.Lang @@ -275,7 +275,7 @@ #525# "カウンターファクター(&F):" #526# "コンパイルバッファを大きくする(&L)" #528# "レジスターキャッシュ(&R)" -#529# "SI割込み遅延(&D)" +#529# "SI割込み遅延(&D):" #530# "SPハック(&P)" #531# "デフォルト設定" #532# "RSPオーディオシグナル" diff --git a/Lang/Korean.pj.Lang b/Lang/Korean.pj.Lang index caf8748fc..258599818 100644 --- a/Lang/Korean.pj.Lang +++ b/Lang/Korean.pj.Lang @@ -302,7 +302,7 @@ #526# "더 큰 컴파일 버퍼 사용(&L)" #527# "TLB 사용(&U)" #528# "레지스터 캐시(&R)" -#529# "SI 인터럽트 지연(&D)" +#529# "SI 인터럽트 지연(&D):" #530# "SP 핵(&P)" #531# "기본값" #532# "RSP 오디오 신호" diff --git a/Lang/Lithuanian.pj.Lang b/Lang/Lithuanian.pj.Lang index d5fa9c7c3..ad58bbcf8 100644 --- a/Lang/Lithuanian.pj.Lang +++ b/Lang/Lithuanian.pj.Lang @@ -239,7 +239,7 @@ #526# "&Didesnis kompiliavimo buferis" #527# "Naudoti &TLB" #528# "&Registro keðavimas" -#529# "Uþdelsti SI P&ertraukimà" +#529# "Uþdelsti SI P&ertraukimà:" #530# "SP &Hack'as" #531# "Nustatytas" #532# "RSP garso signalas" diff --git a/Lang/Norwegian.pj.Lang b/Lang/Norwegian.pj.Lang index 9c9011dbd..7fdf713da 100644 --- a/Lang/Norwegian.pj.Lang +++ b/Lang/Norwegian.pj.Lang @@ -274,7 +274,7 @@ #526# "Større kompileringsbuffer" #527# "Bruk TLB" #528# "Registercaching" -#529# "Forsink SI-interrupt" +#529# "Forsink SI-interrupt:" #530# "Rask SP" #531# "Standardinnstilling" #532# "RSP-lydsignal" diff --git a/Lang/Polish.pj.Lang b/Lang/Polish.pj.Lang index 05c5dfd10..8f4d319e5 100644 --- a/Lang/Polish.pj.Lang +++ b/Lang/Polish.pj.Lang @@ -239,7 +239,7 @@ #526# "Duży bufor kompilacji" #527# "Użyj TLB" #528# "Zarejestrój caching" -#529# "Opóźnienie przerywania SI" +#529# "Opóźnienie przerywania SI:" #530# "SP Hack" #531# "Domyślny" #532# "Sygnał dźwięku - RSP" diff --git a/Lang/Punjabi.pj.lang b/Lang/Punjabi.pj.lang index 99b806237..88ad5a848 100644 --- a/Lang/Punjabi.pj.lang +++ b/Lang/Punjabi.pj.lang @@ -275,7 +275,7 @@ #525# "ਕਾਊਂਟਰ ਫੈਕਟਰ:" #526# "ਵੱਡਾ ਕੰਪਾਈਲ ਬਫਰ" #528# "ਰਜਿਸਟਰ ਕੈਸ਼ਿੰਗ" -#529# "ਦੇਰੀ SI ਰੁਕਾਵਟ" +#529# "ਦੇਰੀ SI ਰੁਕਾਵਟ:" #530# "ਫਾਸਟ ਐਸਪੀ" #531# "ਮੂਲ" #532# "RSP ਆਡੀਓ ਸਿਗਨਲ" diff --git a/Lang/Spanish.pj.Lang b/Lang/Spanish.pj.Lang index 966aa99a7..4a985750a 100644 --- a/Lang/Spanish.pj.Lang +++ b/Lang/Spanish.pj.Lang @@ -275,7 +275,7 @@ #525# "Factor de contador:" #526# "Buffer de compilación ampliado" #528# "Registrar almacenamiento en caché" -#529# "Demorar interrupción SI" +#529# "Demorar interrupción SI:" #530# "SP rápido" #531# "Predeterminado" #532# "Señal de audio RSP" diff --git a/Lang/Swedish.pj.Lang b/Lang/Swedish.pj.Lang index d3985fdba..50cfa4106 100644 --- a/Lang/Swedish.pj.Lang +++ b/Lang/Swedish.pj.Lang @@ -301,7 +301,7 @@ #526# "Större kompileringsbuffert" #527# "Använd TLB" #528# "Registrera cachning" -#529# "Fördröj SI-avbrott" +#529# "Fördröj SI-avbrott:" #530# "Snabb SP" #531# "Standard" #532# "RSP-ljudsignal" diff --git a/Lang/Turkish.pj.Lang b/Lang/Turkish.pj.Lang index d604fa9ae..7de97b288 100644 --- a/Lang/Turkish.pj.Lang +++ b/Lang/Turkish.pj.Lang @@ -287,7 +287,7 @@ #526# "Büyük derleme tamponu" #527# "TLB kullan" #528# "Kayıtları önbelleğe alma" -#529# "SI kesmesini geciktirme" +#529# "SI kesmesini geciktirme:" #530# "Hızlı SP" #531# "Varsayılan" #532# "RSP ses sinyali" diff --git a/Lang/Ukrainian.pj.Lang b/Lang/Ukrainian.pj.Lang index 88e9acb0e..f2d6b5662 100644 --- a/Lang/Ukrainian.pj.Lang +++ b/Lang/Ukrainian.pj.Lang @@ -237,7 +237,7 @@ #526# "&Більший буфер" #527# "&Увімкнути TLB" #528# "&Кешинг реєстру" -#529# "Затримка &переривання SI" +#529# "Затримка &переривання SI:" #530# "SP &хак" #531# "Обирає програма" #532# "Звук з RSP" diff --git a/Lang/Vietnamese.pj.lang b/Lang/Vietnamese.pj.lang index 23f17ee8f..3d0275232 100644 --- a/Lang/Vietnamese.pj.lang +++ b/Lang/Vietnamese.pj.lang @@ -275,7 +275,7 @@ # 525 # "Hệ số truy cập:" # 526 # "Bộ đệm biên dịch lớn hơn" # 528 # "Đăng ký bộ nhớ đệm" -# 529 # "Trì hoãn ngắt SI" +# 529 # "Trì hoãn ngắt SI:" # 530 # "SP nhanh" # 531 # "Mặc định" # 532 # "Tín hiệu âm thanh RSP" diff --git a/Source/Project64-core/Multilanguage/Language.cpp b/Source/Project64-core/Multilanguage/Language.cpp index 69a9f69ed..ab47b1812 100644 --- a/Source/Project64-core/Multilanguage/Language.cpp +++ b/Source/Project64-core/Multilanguage/Language.cpp @@ -258,7 +258,7 @@ void CLanguage::LoadDefaultStrings(void) DEF_STR(ROM_COUNTER_FACTOR, "Counter factor:"); DEF_STR(ROM_LARGE_BUFFER, "Larger compile buffer"); DEF_STR(ROM_REG_CACHE, "Register caching"); - DEF_STR(ROM_DELAY_SI, "Delay SI interrupt"); + DEF_STR(ROM_DELAY_SI, "Delay SI interrupt:"); DEF_STR(ROM_FAST_SP, "Fast SP"); DEF_STR(ROM_DEFAULT, "Default"); DEF_STR(ROM_AUDIO_SIGNAL, "RSP audio signal"); diff --git a/Source/Project64-core/N64System/MemoryHandler/PifRamHandler.cpp b/Source/Project64-core/N64System/MemoryHandler/PifRamHandler.cpp index 744e104de..2952432de 100644 --- a/Source/Project64-core/N64System/MemoryHandler/PifRamHandler.cpp +++ b/Source/Project64-core/N64System/MemoryHandler/PifRamHandler.cpp @@ -155,9 +155,9 @@ void PifRamHandler::DMA_READ() if (g_System->bRandomizeSIPIInterrupts()) { - if (g_System->bDelaySI()) + if (g_System->DelaySI() != 0) { - g_SystemTimer->SetTimer(CSystemTimer::SiTimer, 0x900 + (g_Random->next() % 0x40), false); + g_SystemTimer->SetTimer(CSystemTimer::SiTimer, g_System->DelaySI() + (g_Random->next() % 0x40), false); } else { @@ -166,9 +166,9 @@ void PifRamHandler::DMA_READ() } else { - if (g_System->bDelaySI()) + if (g_System->DelaySI() != 0) { - g_SystemTimer->SetTimer(CSystemTimer::SiTimer, 0x900, false); + g_SystemTimer->SetTimer(CSystemTimer::SiTimer, g_System->DelaySI(), false); } else { @@ -253,9 +253,9 @@ void PifRamHandler::DMA_WRITE() ControlWrite(); - if (g_System->bDelaySI()) + if (g_System->DelaySI() != 0) { - g_SystemTimer->SetTimer(CSystemTimer::SiTimer, 0x900, false); + g_SystemTimer->SetTimer(CSystemTimer::SiTimer, g_System->DelaySI(), false); } else { diff --git a/Source/Project64-core/Settings.cpp b/Source/Project64-core/Settings.cpp index c9326c947..6af3b0908 100644 --- a/Source/Project64-core/Settings.cpp +++ b/Source/Project64-core/Settings.cpp @@ -150,7 +150,7 @@ void CSettings::AddHowToHandleSetting(const char * BaseDirectory) AddHandler(Rdb_RDRamSize, new CSettingTypeRDBRDRamSize("RDRAM Size", Default_RDRamSizeKnown)); AddHandler(Rdb_CounterFactor, new CSettingTypeRomDatabase("Counter Factor", Default_CounterFactor)); AddHandler(Rdb_DelayDP, new CSettingTypeRDB("Delay DP", true)); - AddHandler(Rdb_DelaySi, new CSettingTypeRDB("Delay SI", false)); + AddHandler(Rdb_DelaySi, new CSettingTypeRomDatabase("Delay SI", 0u)); AddHandler(Rdb_32Bit, new CSettingTypeRDB("32bit", false)); AddHandler(Rdb_FastSP, new CSettingTypeRDB("Fast SP", true)); AddHandler(Rdb_FixedAudio, new CSettingTypeRomDatabase("Fixed Audio", Default_FixedAudio)); diff --git a/Source/Project64-core/Settings/GameSettings.cpp b/Source/Project64-core/Settings/GameSettings.cpp index ae401816d..a4477e9b6 100644 --- a/Source/Project64-core/Settings/GameSettings.cpp +++ b/Source/Project64-core/Settings/GameSettings.cpp @@ -15,7 +15,7 @@ uint32_t CGameSettings::m_CountPerOp = 2; uint32_t CGameSettings::m_ViRefreshRate = 1500; uint32_t CGameSettings::m_AiCountPerBytes = 500; bool CGameSettings::m_DelayDP = false; -bool CGameSettings::m_DelaySI = false; +uint32_t CGameSettings::m_DelaySI = 0; bool CGameSettings::m_bRandomizeSIPIInterrupts = true; uint32_t CGameSettings::m_RdramSize = 0; bool CGameSettings::m_bFixedAudio = true; @@ -72,7 +72,7 @@ void CGameSettings::RefreshGameSettings() m_AiCountPerBytes = g_Settings->LoadDword(Game_AiCountPerBytes); m_CountPerOp = g_Settings->LoadDword(Game_CounterFactor); m_RdramSize = g_Settings->LoadDword(Game_RDRamSize); - m_DelaySI = g_Settings->LoadBool(Game_DelaySI); + m_DelaySI = g_Settings->LoadDword(Game_DelaySI); m_bRandomizeSIPIInterrupts = g_Settings->LoadBool(Game_RandomizeSIPIInterrupts); m_DelayDP = g_Settings->LoadBool(Game_DelayDP); m_bFixedAudio = g_Settings->LoadBool(Game_FixedAudio); diff --git a/Source/Project64-core/Settings/GameSettings.h b/Source/Project64-core/Settings/GameSettings.h index 2501057ef..3530452f3 100644 --- a/Source/Project64-core/Settings/GameSettings.h +++ b/Source/Project64-core/Settings/GameSettings.h @@ -55,7 +55,7 @@ public: { return m_DelayDP; } - inline static bool bDelaySI(void) + inline static uint32_t DelaySI(void) { return m_DelaySI; } @@ -156,7 +156,7 @@ private: static uint32_t m_ViRefreshRate; static uint32_t m_AiCountPerBytes; static bool m_DelayDP; - static bool m_DelaySI; + static uint32_t m_DelaySI; static bool m_bRandomizeSIPIInterrupts; static uint32_t m_RdramSize; static bool m_bFixedAudio; diff --git a/Source/Project64/Project64.exe.manifest b/Source/Project64/Project64.exe.manifest index 275e30b0a..a0b0dbdb6 100644 --- a/Source/Project64/Project64.exe.manifest +++ b/Source/Project64/Project64.exe.manifest @@ -1,23 +1,21 @@ - + - - + - - + true permonitorv2,permonitor - - + + \ No newline at end of file diff --git a/Source/Project64/UserInterface/Settings/SettingsPage-Game-General.cpp b/Source/Project64/UserInterface/Settings/SettingsPage-Game-General.cpp index 193666d7f..adef70bf4 100644 --- a/Source/Project64/UserInterface/Settings/SettingsPage-Game-General.cpp +++ b/Source/Project64/UserInterface/Settings/SettingsPage-Game-General.cpp @@ -23,7 +23,7 @@ CGameGeneralPage::CGameGeneralPage(HWND hParent, const RECT & rcDispay) SetDlgItemText(IDC_ROM_FIXEDAUDIO, wGS(ROM_FIXED_AUDIO).c_str()); SetDlgItemText(IDC_DELAY_DP, wGS(ROM_DELAY_DP).c_str()); SetDlgItemText(IDC_SYNC_AUDIO, wGS(ROM_SYNC_AUDIO).c_str()); - SetDlgItemText(IDC_DELAY_SI, wGS(ROM_DELAY_SI).c_str()); + SetDlgItemText(IDC_DELAY_SI_TEXT, wGS(ROM_DELAY_SI).c_str()); SetDlgItemText(IDC_AUDIO_SIGNAL, wGS(ROM_AUDIO_SIGNAL).c_str()); SetDlgItemText(IDC_UNALIGNED_DMA, wGS(ROM_UNALIGNED_DMA).c_str()); SetDlgItemText(IDC_RANDOMIZE_SIPI_INTERRUPTS, wGS(ROM_RANDOMIZE_SIPI_INTERRUPTS).c_str()); @@ -31,7 +31,6 @@ CGameGeneralPage::CGameGeneralPage(HWND hParent, const RECT & rcDispay) AddModCheckBox(GetDlgItem(IDC_SYNC_AUDIO), Game_SyncViaAudio); AddModCheckBox(GetDlgItem(IDC_ROM_FIXEDAUDIO), Game_FixedAudio); AddModCheckBox(GetDlgItem(IDC_DELAY_DP), Game_DelayDP); - AddModCheckBox(GetDlgItem(IDC_DELAY_SI), Game_DelaySI); AddModCheckBox(GetDlgItem(IDC_AUDIO_SIGNAL), Game_RspAudioSignal); AddModCheckBox(GetDlgItem(IDC_UNALIGNED_DMA), Game_UnalignedDMA); AddModCheckBox(GetDlgItem(IDC_RANDOMIZE_SIPI_INTERRUPTS), Game_RandomizeSIPIInterrupts); @@ -79,6 +78,9 @@ CGameGeneralPage::CGameGeneralPage(HWND hParent, const RECT & rcDispay) TxtBox = AddModTextBox(GetDlgItem(IDC_OVER_CLOCK_MODIFIER), Game_OverClockModifier, false); TxtBox->SetTextField(GetDlgItem(IDC_OVER_CLOCK_MODIFIER_TEXT)); + TxtBox = AddModTextBox(GetDlgItem(IDC_DELAY_SI), Game_DelaySI, false); + TxtBox->SetTextField(GetDlgItem(IDC_DELAY_SI_TEXT)); + if (!g_Settings->LoadBool(Setting_SyncViaAudioEnabled)) { GetDlgItem(IDC_SYNC_AUDIO).EnableWindow(false); diff --git a/Source/Project64/UserInterface/Settings/SettingsPage-Game-General.h b/Source/Project64/UserInterface/Settings/SettingsPage-Game-General.h index 8a53339aa..bccbd5c5e 100644 --- a/Source/Project64/UserInterface/Settings/SettingsPage-Game-General.h +++ b/Source/Project64/UserInterface/Settings/SettingsPage-Game-General.h @@ -16,7 +16,7 @@ class CGameGeneralPage : COMMAND_ID_HANDLER_EX(IDC_SYNC_AUDIO, CheckBoxChanged); COMMAND_ID_HANDLER_EX(IDC_ROM_FIXEDAUDIO, CheckBoxChanged); COMMAND_ID_HANDLER_EX(IDC_DELAY_DP, CheckBoxChanged); - COMMAND_ID_HANDLER_EX(IDC_DELAY_SI, CheckBoxChanged); + COMMAND_HANDLER_EX(IDC_DELAY_SI, EN_UPDATE, EditBoxChanged); COMMAND_ID_HANDLER_EX(IDC_AUDIO_SIGNAL, CheckBoxChanged); COMMAND_ID_HANDLER_EX(IDC_UNALIGNED_DMA, CheckBoxChanged); COMMAND_ID_HANDLER_EX(IDC_RANDOMIZE_SIPI_INTERRUPTS, CheckBoxChanged); diff --git a/Source/Project64/UserInterface/UIResources.rc b/Source/Project64/UserInterface/UIResources.rc index b05a145bd..d23f88bc2 100644 --- a/Source/Project64/UserInterface/UIResources.rc +++ b/Source/Project64/UserInterface/UIResources.rc @@ -208,27 +208,28 @@ BEGIN LTEXT "Good Name:",IDC_GOOD_NAME_TEXT,6,9,91,10 EDITTEXT IDC_GOOD_NAME,102,7,109,12,ES_AUTOHSCROLL | ES_READONLY CONTROL "",IDC_STATIC,"Static",SS_BLACKFRAME | SS_SUNKEN,4,25,208,1 - LTEXT "Memory Size:",IDC_MEMORY_SIZE_TEXT,6,34,91,10 - COMBOBOX IDC_RDRAM_SIZE,102,32,109,49,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "Default Save type:",IDC_SAVE_TYPE_TEXT,6,49,91,10 - COMBOBOX IDC_SAVE_TYPE,102,47,109,49,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "Counter Factor:",IDC_COUNTFACT_TEXT,6,63,91,10 - COMBOBOX IDC_COUNTFACT,102,61,109,49,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "Vi Refresh Rate:",IDC_VIREFESH_TEXT,6,77,91,10 - EDITTEXT IDC_VIREFRESH,102,75,109,12,ES_AUTOHSCROLL | ES_NUMBER - LTEXT "AI Count Per Byte:",IDC_COUNTPERBYTE_TEXT,6,90,91,10 - EDITTEXT IDC_COUNTPERBYTE,102,88,109,12,ES_AUTOHSCROLL | ES_NUMBER - LTEXT "Overclock Modifier",IDC_OVER_CLOCK_MODIFIER_TEXT,6,103,91,10 - EDITTEXT IDC_OVER_CLOCK_MODIFIER,102,101,109,12,ES_AUTOHSCROLL | ES_NUMBER - CONTROL "",IDC_STATIC,"Static",SS_BLACKFRAME | SS_SUNKEN,3,116,208,1 - CONTROL "Fixed Audio Timing",IDC_ROM_FIXEDAUDIO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,121,91,10 - CONTROL "Sync using Audio",IDC_SYNC_AUDIO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,102,121,91,10 - CONTROL "Delay DP Interrupt",IDC_DELAY_DP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,132,91,10 - CONTROL "Delay SI Interrupt",IDC_DELAY_SI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,102,132,91,10 - CONTROL "RSP Audio Signal",IDC_AUDIO_SIGNAL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,143,91,10 + LTEXT "Memory Size:",IDC_MEMORY_SIZE_TEXT,6,31,91,10 + COMBOBOX IDC_RDRAM_SIZE,102,29,109,49,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "Default Save type:",IDC_SAVE_TYPE_TEXT,6,45,91,10 + COMBOBOX IDC_SAVE_TYPE,102,43,109,49,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "Counter Factor:",IDC_COUNTFACT_TEXT,6,59,91,10 + COMBOBOX IDC_COUNTFACT,102,57,109,49,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "Vi Refresh Rate:",IDC_VIREFESH_TEXT,6,73,91,10 + EDITTEXT IDC_VIREFRESH,102,71,109,12,ES_AUTOHSCROLL | ES_NUMBER + LTEXT "AI Count Per Byte:",IDC_COUNTPERBYTE_TEXT,6,87,91,10 + EDITTEXT IDC_COUNTPERBYTE,102,85,109,12,ES_AUTOHSCROLL | ES_NUMBER + LTEXT "Overclock Modifier",IDC_OVER_CLOCK_MODIFIER_TEXT,6,101,91,10 + EDITTEXT IDC_OVER_CLOCK_MODIFIER,102,99,109,12,ES_AUTOHSCROLL | ES_NUMBER + LTEXT "Delay SI Interrupt:",IDC_DELAY_SI_TEXT,6,115,91,10 + EDITTEXT IDC_DELAY_SI,102,113,109,12,ES_AUTOHSCROLL | ES_NUMBER + CONTROL "",IDC_STATIC,"Static",SS_BLACKFRAME | SS_SUNKEN,3,129,208,1 + CONTROL "Fixed Audio Timing",IDC_ROM_FIXEDAUDIO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,134,91,10 + CONTROL "Sync using Audio",IDC_SYNC_AUDIO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,102,134,91,10 + CONTROL "Delay DP Interrupt",IDC_DELAY_DP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,145,91,10 + CONTROL "RSP Audio Signal",IDC_AUDIO_SIGNAL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,156,91,10 CONTROL "Randomize SI/PI interrupts",IDC_RANDOMIZE_SIPI_INTERRUPTS, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,102,143,115,10 - CONTROL "Unaligned DMA",IDC_UNALIGNED_DMA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,154,91,10 + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,102,145,115,10 + CONTROL "Unaligned DMA",IDC_UNALIGNED_DMA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,167,91,10 END IDD_Settings_Accelerator DIALOGEX 0, 0, 218, 183 diff --git a/Source/Project64/UserInterface/resource.h b/Source/Project64/UserInterface/resource.h index 63902abed..09265303d 100644 --- a/Source/Project64/UserInterface/resource.h +++ b/Source/Project64/UserInterface/resource.h @@ -283,10 +283,11 @@ #define IDC_STEPOVER_BTN 1120 #define IDC_CHEAT_LIST 1121 #define IDC_CHEAT_NAME 1122 -#define IDC_DELAY_SI 1123 -#define IDC_VALUE 1124 -#define IDC_RANGE 1125 -#define IDC_ADD 1126 +#define IDC_DELAY_SI_TEXT 1123 +#define IDC_DELAY_SI 1124 +#define IDC_VALUE 1125 +#define IDC_RANGE 1126 +#define IDC_ADD 1127 #define IDC_CODE_NAME 1130 #define IDC_AUTHOR 1131 #define IDC_CODE_AUTHOR 1132