From 4803f72b36132a29d88b8bc07134fbfcfc46cbf7 Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Thu, 8 Aug 2013 08:05:01 -0700 Subject: [PATCH] Add a "multithreaded" UI option on Windows. Not on other platforms since not yet tested. --- Core/HLE/sceGe.cpp | 3 --- Windows/WndMainWindow.cpp | 34 ++++++++++++++++++++-------------- Windows/ppsspp.rc | Bin 38594 -> 39784 bytes Windows/resource.h | Bin 21674 -> 21764 bytes 4 files changed, 20 insertions(+), 17 deletions(-) diff --git a/Core/HLE/sceGe.cpp b/Core/HLE/sceGe.cpp index 89c93a1f4b..a482421d49 100644 --- a/Core/HLE/sceGe.cpp +++ b/Core/HLE/sceGe.cpp @@ -220,9 +220,6 @@ bool __GeHasPendingInterrupt() return !ge_pending_cb.empty(); } -// The GE is implemented wrong - it should be parallel to the CPU execution instead of -// synchronous. - u32 sceGeEdramGetAddr() { u32 retVal = 0x04000000; diff --git a/Windows/WndMainWindow.cpp b/Windows/WndMainWindow.cpp index 21825e56ea..75966b9d7f 100644 --- a/Windows/WndMainWindow.cpp +++ b/Windows/WndMainWindow.cpp @@ -898,12 +898,16 @@ namespace MainWindow case ID_CPU_DYNAREC: g_Config.bJit = true; osm.ShowOnOff(g->T("Dynarec", "Dynarec (JIT)"), g_Config.bJit); - break; + break; case ID_CPU_INTERPRETER: g_Config.bJit = false; break; + case ID_CPU_MULTITHREADED: + g_Config.bSeparateCPUThread = !g_Config.bSeparateCPUThread; + break; + case ID_EMULATION_RUNONLOAD: g_Config.bAutoRun = !g_Config.bAutoRun; break; @@ -1181,6 +1185,7 @@ namespace MainWindow CHECKITEM(ID_OPTIONS_IGNOREILLEGALREADS,g_Config.bIgnoreBadMemAccess); CHECKITEM(ID_CPU_INTERPRETER,g_Config.bJit == false); CHECKITEM(ID_CPU_DYNAREC,g_Config.bJit == true); + CHECKITEM(ID_CPU_MULTITHREADED, g_Config.bSeparateCPUThread); CHECKITEM(ID_OPTIONS_SHOWDEBUGSTATISTICS, g_Config.bShowDebugStats); CHECKITEM(ID_OPTIONS_HARDWARETRANSFORM, g_Config.bHardwareTransform); CHECKITEM(ID_OPTIONS_FASTMEMORY, g_Config.bFastMemory); @@ -1318,21 +1323,22 @@ namespace MainWindow ModifyMenu(menu, ID_TOGGLE_PAUSE, MF_BYCOMMAND | MF_STRING, ID_TOGGLE_PAUSE, pauseMenuText); UINT ingameEnable = globalUIState == UISTATE_INGAME ? MF_ENABLED : MF_GRAYED; - EnableMenuItem(menu,ID_TOGGLE_PAUSE, ingameEnable); - EnableMenuItem(menu,ID_EMULATION_STOP, ingameEnable); - EnableMenuItem(menu,ID_EMULATION_RESET, ingameEnable); + EnableMenuItem(menu, ID_TOGGLE_PAUSE, ingameEnable); + EnableMenuItem(menu, ID_EMULATION_STOP, ingameEnable); + EnableMenuItem(menu, ID_EMULATION_RESET, ingameEnable); UINT menuEnable = globalUIState == UISTATE_MENU ? MF_ENABLED : MF_GRAYED; - EnableMenuItem(menu,ID_FILE_SAVESTATEFILE, !menuEnable); - EnableMenuItem(menu,ID_FILE_LOADSTATEFILE, !menuEnable); - EnableMenuItem(menu,ID_FILE_QUICKSAVESTATE, !menuEnable); - EnableMenuItem(menu,ID_FILE_QUICKLOADSTATE, !menuEnable); - EnableMenuItem(menu,ID_CPU_DYNAREC, menuEnable); - EnableMenuItem(menu,ID_CPU_INTERPRETER, menuEnable); - EnableMenuItem(menu,ID_TOGGLE_PAUSE, !menuEnable); - EnableMenuItem(menu,ID_EMULATION_STOP, !menuEnable); - EnableMenuItem(menu,ID_EMULATION_RESET, !menuEnable); - EnableMenuItem(menu,ID_DEBUG_LOG, !g_Config.bEnableLogging); + EnableMenuItem(menu, ID_FILE_SAVESTATEFILE, !menuEnable); + EnableMenuItem(menu, ID_FILE_LOADSTATEFILE, !menuEnable); + EnableMenuItem(menu, ID_FILE_QUICKSAVESTATE, !menuEnable); + EnableMenuItem(menu, ID_FILE_QUICKLOADSTATE, !menuEnable); + EnableMenuItem(menu, ID_CPU_DYNAREC, menuEnable); + EnableMenuItem(menu, ID_CPU_INTERPRETER, menuEnable); + EnableMenuItem(menu, ID_CPU_MULTITHREADED, menuEnable); + EnableMenuItem(menu, ID_TOGGLE_PAUSE, !menuEnable); + EnableMenuItem(menu, ID_EMULATION_STOP, !menuEnable); + EnableMenuItem(menu, ID_EMULATION_RESET, !menuEnable); + EnableMenuItem(menu, ID_DEBUG_LOG, !g_Config.bEnableLogging); } // Message handler for about box. diff --git a/Windows/ppsspp.rc b/Windows/ppsspp.rc index 8caf6bdf463cf799f2f14a6eb4789606954d427d..fc6b8b92bc1968875da122f52d9285486451935d 100644 GIT binary patch delta 4762 zcma)AeNa@_6+cgKk(IY1%Yq9Fizwm)m)&In!4FsvWKq7B01`xD`34a|0RzzpM6vh* zt_Mx(P#cVsHl1<&h|}7nol(I@e_2}Ur2=saW)MCWVig6MqoBSFLiLcvO!6w#sU zSzQSwPzS{zfryJbJ!Y&h@!94TX12tm3C$sT(XE%M*cYN-L#PN!pcKlW5=5K`No8Xt zPzl8#%iRspXZy*45|a48WM~2tBr{pBRiFe5?hlC%*kOHW?1t~L9!IYx;6P{+^MK@u z0f_)3hW{o(8B{s2RNo(H7kht6ZXswC;UEp+LeSqW6#5@34h0)(-DLpMXE7P9OCGX*vrut z6`?DtEBt-OnsGtI_tu=^@8yvr3{40k7Op)hi1_QZXVv76?;-g4|7}#PUlgoS=LsT~ zs?!A#2i0al#07?buTEe%7XPbOGG{kH2lT-)=m3(TaRr*9Lm8hm*AMN`1DzmZVRXD8 z;{Is8AmV6r3X|}PGEn04=vaIlok%WJYRCnR8Wox(j!c6}hI-i3h=0;p8IsT%ljTOM z@Mg>w{`S;8UK{%oAA1t}21mbIm(S6NR)r=l?OUjka74R}AvLOc6&fPX71eGMnWf)o z*SRfqRB6x@m%l!!v}Ya25!@-{coLD8(0POq1HZ&FcPbAGl)!cF*fWr%E0*au35uZy z9MA_xpvyPXL5ao+4L(aS2_iZQ-WEg*x9ag**lmHycND$vGVTJGq!4 zBX)0~+1nf5;cc3wZOldvT`6l08Jn%zjTNyL3&d`m{}JTP4&bL^Rv*EAJjp}e+d zTJWBQ?58nn*1H^S%B~ME^h|asGt_m8ar$W4Tzof&LU1vsEa>UgY$Yz~^yW84;)h%5 zEC(4aDzxTOrFg#Cf?wv&leTR}yq9;0p<9gaEw%=xH>O~tU@t@UN+_WRZO^a zsF)0HGN5($>l}ra60Y{+6s7*L8q#Pn)kr^c&YSH@V44nM9|ENklDs{Kuk^Vk_i zyXJ6myzNQU<}Pc?f9w=jp6hG8IxZ{|vS2IMGggzF5S%!kV?kS-)WFhT25oQz`hCkj z-g@D@AmY~A3Ra!g8Z~&WmP+gM+EGEo;kr@xZ4yLf1-q_?{ZzhPAJ`C@JL2){db*Bf zPaic)n6;0t%}33tIJd8sBUJ)(4C|4j7Yg zq*>PTs-Lu^t$<^8*Rsk`0d-IgwNM7NV1pVcfkG&T z65d(|dZWd@78UKonj&KOeoG_US3=!>C0ZSof{4OYIzDjFVSD(tx3X@sS;AFqzB3DL zXSjySb{8KH+gq36(-YIAEB~wt-|BFkk*QNYHwo`_cKYm2*?X{S56>vMeY1C)@ktk* zrM;Woh}~w4?2+Hic%30yr|MONQP77&I3DOq!TjE6W?MLf`&`71Uh0J%y?Ts3M6pI_ z{t$J=GRnoHeKuAGX{9U2e%n{DjJ5%_5P#&|ZS4blB0vmT1`?zihb3XB}4NT9h3!xT~WZUfI-8ncbi?#|;o@uLy) zh{mkPDTAEH=_}M%dj6#rZh@+os=fJAJU%=gikYL-k}Zs~FP3HrZDSN4&N2Bt6?0yu z`_>b|6zxkdlMJEa6YTrOCu3ty%26lb&68ux#Bcm+8~aQdU~Qc%k0hLVg_tHgW?qTF z#8dJeAmZIgGxonqVJ{;cZahr^v(UB^@1K@k^LD2HjBgPYrlz_3_on3X zK*``VVL~VfwWI9~#bE@$=Iv96&{w4a(`$o0X)obKOBb`u3b}QE52e z8&q!byhMAk(kD#!pz5LyPft^EmkISR*Tkk356(p47Z-{AyOR^acnk`wZpz8h=um-Q5NK9eR!dnBphJfnWy+nIHhH@{Lx9=)2hbH zodK)V_~~WcGAomCAYLw)o>tw1tmA% O%71Gby;`!$wf29xe1|Xq delta 3661 zcmaJ^YfO~c8GdI3gpd0$7iNHQ9C4P*$Xpl^5fEkv9S~R)sxl&uQ*KVViHK9YA?s2_ zJ2E`tvedGy*=#nJZnm~HO|#irf3&7G#t^eH8)IC4G@H%F-O@kXP1-cy`M&vfxY*2( z=RNQDyti}SbIzPE@5=B0T0YSc&5?yHp}sAles$<~N*H5qqDxjTMxT{2rdZlvW0seedLS1m>tkSAU%QN#6}w@5*hh7&Ek2@n zT#mg4U0e{i}?F^-489 zQgZS9lD1PfouGEqDK&VmMFH94@WD;VBX?}Affg;HaNQ`5q94>S&jru2X?PM>2qsV&EXwh0T`BDCsw zz5=tlm{hTY$PjKE7W}a;odxGvL3I)g8FuX|rewi4!$d|A-?`z2ka4J-u9k5)lyw{i zxgK9<6$uNwae1q_=olTPZt9~>sad|!@5YO=0u+>caBqVFiyJ&BH)JAcaVFX#`yZ(` z3!WRSSaR9n-1t7c*#%G=&G2TM(QkAxtk{%*=aTGZy1Sc-80xZJ@MaG&dv5b3hSu#V z_-u0%^W`x)Fk$lHX{jBi*Umt`!;HtT-9&$>88bPh;#dcLuJG+)egdB4`d}}y!=Lwn z`S9fnyodQu8GmlO4quynOg^*aam1!NRImpx%0`f5aiZH|K+xh^*6?3gnq?eh2XZGb zN5O9`g~DdW6NU@C{9A>6M#hw%7y6*E6`86(teg{#5b$ivG~!VWkdVR_fQxS+-*ft~v)J zJS4wf$MT7F<*jMKSNR7QpUXI_@OG7ezFk2q?eb#D<;Kn30nyel1Zb*6~yHpYYxo744K$>IGHc}G00 zH!oY2P(vEN*C!;K$v`furb?=%H)uEBQ>oY#H@%^=Ux_=l=2LgC> zARwHCE9~m1oqFk{WS88`Uy;&XkFw^?thUL{9NcOyfv?4cnnMXl@wk~h;_>6o(IQdb zB+6FAwj6}7m*~2Xo*V9^@yrNQ+HD};nt5S-mJW>I<-;B{CLae1D z`y~7Kz56BEb5xM|92LG=hL?PvHT-K6UDQrKI!Pw#BqQrozM_=2aE7s%ZL4PG)_3h{dBz32=A1G1)oDd=+&0)`*;ePrFj2%KEP)A@i7z`S|eI zLCF0<=99nqp80FS*RDNa#n4Y$8OC(;=)g?3hmB1=t&Bdai@{t^c``?F6c@2@|LmE< zQjZ=V^!lObo5h{J*?57&wib@`?_6c`oBnnz^<=_v+{N&Qh~J6m84&cJ47eaa;bokW z6M}A0MAsmHeek&mao+7wVSdmQE@^3S7)w0{1Wz`x^yEVV4h?yinenH^Gk+512Ng&^ zl@d1RXC!dS#qi}RC+vX%CVv*#$I$cBde{SIq#RPPv2NJSaOQLZ=7t43^=W}SbGmyO zH*m%qo>3Wx<0mtaa&~|%(frx{49(|i*b>j43tbZ`Mey_25nS|M~M{yO_ITn`)DLsGWLfh>lS^or-Ag z#}|bydOy^KXKxu@yVqG)h`kk<>W$;~iLgulHI=){ znzwP^=oR@-ZnQ=4tKPP(;`1FFnCeZFy#DYmL;my;@rlR3E4IE<81djso;e&BzD(F_ N37NleMe&cn{{dzEG>rfN diff --git a/Windows/resource.h b/Windows/resource.h index 65f81e219a93d5b6f3dcb23ecb97ff752738da5c..fc180d7bb957312a9812d05f0cd8ec18cb8565b2 100644 GIT binary patch delta 123 zcmZ3rlCfnKA7J9xY#`2N&1uSD0D%(?B_{_+a!t;2<=UJR6vsF@N=$6> egJ6%zMXDfLVscoB&g3;35|bYUi%eb@5(WU{6dGs%