From b48666ea9cddd74549601bbd9db089c8be26b85d Mon Sep 17 00:00:00 2001 From: rogerman Date: Sat, 2 Dec 2017 15:35:51 -0800 Subject: [PATCH] =?UTF-8?q?Cocoa=20Port:=20Add=20new=20HUD=20item,=20?= =?UTF-8?q?=E2=80=9CShow=20Execution=20Speed=E2=80=9D,=20which=20displays?= =?UTF-8?q?=20the=20emulator=E2=80=99s=20execution=20speed=20as=20a=20perc?= =?UTF-8?q?entage.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/frontend/cocoa/ClientDisplayView.cpp | 60 ++- .../src/frontend/cocoa/ClientDisplayView.h | 6 + .../frontend/cocoa/ClientExecutionControl.cpp | 5 + .../frontend/cocoa/ClientExecutionControl.h | 4 + .../src/frontend/cocoa/DefaultUserPrefs.plist | 4 + desmume/src/frontend/cocoa/cocoa_core.mm | 28 + desmume/src/frontend/cocoa/cocoa_output.h | 2 + desmume/src/frontend/cocoa/cocoa_output.mm | 38 ++ .../English.lproj/MainMenu.strings | Bin 409412 -> 410106 bytes .../translations/English.lproj/MainMenu.xib | 496 ++++++++++++++---- .../cocoa/userinterface/DisplayViewCALayer.h | 2 + .../userinterface/DisplayWindowController.h | 1 + .../userinterface/DisplayWindowController.mm | 38 ++ .../userinterface/EmuControllerDelegate.mm | 6 + 14 files changed, 583 insertions(+), 107 deletions(-) diff --git a/desmume/src/frontend/cocoa/ClientDisplayView.cpp b/desmume/src/frontend/cocoa/ClientDisplayView.cpp index ad50f4ee2..5885f2853 100644 --- a/desmume/src/frontend/cocoa/ClientDisplayView.cpp +++ b/desmume/src/frontend/cocoa/ClientDisplayView.cpp @@ -81,6 +81,7 @@ void ClientDisplayPresenter::__InstanceInit(const ClientDisplayPresenterProperti _hudObjectScale = 1.0; _isHUDVisible = false; + _showExecutionSpeed = false; _showVideoFPS = true; _showRender3DFPS = false; _showFrameIndex = false; @@ -89,6 +90,7 @@ void ClientDisplayPresenter::__InstanceInit(const ClientDisplayPresenterProperti _showRTC = false; _showInputs = false; + _hudColorExecutionSpeed = LE_TO_LOCAL_32(0xFFFFFFFF); _hudColorVideoFPS = LE_TO_LOCAL_32(0xFFFFFFFF); _hudColorRender3DFPS = LE_TO_LOCAL_32(0xFFFFFFFF); _hudColorFrameIndex = LE_TO_LOCAL_32(0xFFFFFFFF); @@ -149,6 +151,22 @@ void ClientDisplayPresenter::_UpdateHUDString() std::ostringstream ss; ss << "\x01"; // This represents the text box. It must always be the first character. + if (this->_showExecutionSpeed) + { + if (this->_ndsFrameInfo.executionSpeed < 0.0001) + { + ss << "Execution Speed: -----%\n"; + } + else + { + char buffer[48]; + memset(buffer, 0, sizeof(buffer)); + snprintf(buffer, 47, "Execution Speed: %3.01f%%\n", this->_ndsFrameInfo.executionSpeed); + + ss << buffer; + } + } + if (this->_showVideoFPS) { ss << "Video FPS: " << this->_clientFrameInfo.videoFPS << "\n"; @@ -516,6 +534,17 @@ void ClientDisplayPresenter::SetHUDVisibility(const bool visibleState) this->UpdateLayout(); } +bool ClientDisplayPresenter::GetHUDShowExecutionSpeed() const +{ + return this->_showExecutionSpeed; +} + +void ClientDisplayPresenter::SetHUDShowExecutionSpeed(const bool visibleState) +{ + this->_SetHUDShowInfoItem(this->_showExecutionSpeed, visibleState); + this->UpdateLayout(); +} + bool ClientDisplayPresenter::GetHUDShowVideoFPS() const { return this->_showVideoFPS; @@ -593,6 +622,22 @@ void ClientDisplayPresenter::SetHUDShowInput(const bool visibleState) this->UpdateLayout(); } +uint32_t ClientDisplayPresenter::GetHUDColorExecutionSpeed() const +{ + return this->_hudColorExecutionSpeed; +} + +void ClientDisplayPresenter::SetHUDColorExecutionSpeed(uint32_t color32) +{ + this->_hudColorExecutionSpeed = color32; + + pthread_mutex_lock(&this->_mutexHUDString); + this->_hudNeedsUpdate = true; + pthread_mutex_unlock(&this->_mutexHUDString); + + this->UpdateLayout(); +} + uint32_t ClientDisplayPresenter::GetHUDColorVideoFPS() const { return this->_hudColorVideoFPS; @@ -1790,6 +1835,7 @@ void ClientDisplay3DPresenter::SetHUDColorVertices(uint32_t *vtxColorBufferPtr) vtxColorBufferPtr[3] = currentColor; // Calculate the colors of the remaining characters in the string. + bool alreadyColoredExecutionSpeed = false; bool alreadyColoredVideoFPS = false; bool alreadyColoredRender3DFPS = false; bool alreadyColoredFrameIndex = false; @@ -1797,7 +1843,12 @@ void ClientDisplay3DPresenter::SetHUDColorVertices(uint32_t *vtxColorBufferPtr) bool alreadyColoredCPULoadAverage = false; bool alreadyColoredRTC = false; - if (this->_showVideoFPS) + if (this->_showExecutionSpeed) + { + currentColor = this->_hudColorExecutionSpeed; + alreadyColoredExecutionSpeed = true; + } + else if (this->_showVideoFPS) { currentColor = this->_hudColorVideoFPS; alreadyColoredVideoFPS = true; @@ -1837,7 +1888,12 @@ void ClientDisplay3DPresenter::SetHUDColorVertices(uint32_t *vtxColorBufferPtr) if (c == '\n') { - if (this->_showVideoFPS && !alreadyColoredVideoFPS) + if (this->_showExecutionSpeed && !alreadyColoredExecutionSpeed) + { + currentColor = this->_hudColorExecutionSpeed; + alreadyColoredExecutionSpeed = true; + } + else if (this->_showVideoFPS && !alreadyColoredVideoFPS) { currentColor = this->_hudColorVideoFPS; alreadyColoredVideoFPS = true; diff --git a/desmume/src/frontend/cocoa/ClientDisplayView.h b/desmume/src/frontend/cocoa/ClientDisplayView.h index 870a177d4..4a26fb1df 100644 --- a/desmume/src/frontend/cocoa/ClientDisplayView.h +++ b/desmume/src/frontend/cocoa/ClientDisplayView.h @@ -155,6 +155,7 @@ protected: double _hudObjectScale; bool _isHUDVisible; + bool _showExecutionSpeed; bool _showVideoFPS; bool _showRender3DFPS; bool _showFrameIndex; @@ -163,6 +164,7 @@ protected: bool _showRTC; bool _showInputs; + uint32_t _hudColorExecutionSpeed; uint32_t _hudColorVideoFPS; uint32_t _hudColorRender3DFPS; uint32_t _hudColorFrameIndex; @@ -258,6 +260,8 @@ public: bool GetHUDVisibility() const; virtual void SetHUDVisibility(const bool visibleState); + bool GetHUDShowExecutionSpeed() const; + virtual void SetHUDShowExecutionSpeed(const bool visibleState); bool GetHUDShowVideoFPS() const; virtual void SetHUDShowVideoFPS(const bool visibleState); bool GetHUDShowRender3DFPS() const; @@ -272,6 +276,8 @@ public: virtual void SetHUDShowRTC(const bool visibleState); bool GetHUDShowInput() const; virtual void SetHUDShowInput(const bool visibleState); + uint32_t GetHUDColorExecutionSpeed() const; + virtual void SetHUDColorExecutionSpeed(uint32_t color32); uint32_t GetHUDColorVideoFPS() const; virtual void SetHUDColorVideoFPS(uint32_t color32); uint32_t GetHUDColorRender3DFPS() const; diff --git a/desmume/src/frontend/cocoa/ClientExecutionControl.cpp b/desmume/src/frontend/cocoa/ClientExecutionControl.cpp index fb2e96276..d5da45bec 100644 --- a/desmume/src/frontend/cocoa/ClientExecutionControl.cpp +++ b/desmume/src/frontend/cocoa/ClientExecutionControl.cpp @@ -963,6 +963,11 @@ const NDSFrameInfo& ClientExecutionControl::GetNDSFrameInfo() return this->_ndsFrameInfo; } +void ClientExecutionControl::SetFrameInfoExecutionSpeed(double executionSpeed) +{ + this->_ndsFrameInfo.executionSpeed = executionSpeed; +} + uint64_t ClientExecutionControl::GetFrameIndex() { pthread_mutex_lock(&this->_mutexOutputPostNDSExec); diff --git a/desmume/src/frontend/cocoa/ClientExecutionControl.h b/desmume/src/frontend/cocoa/ClientExecutionControl.h index 528773eb6..40ea2e31c 100644 --- a/desmume/src/frontend/cocoa/ClientExecutionControl.h +++ b/desmume/src/frontend/cocoa/ClientExecutionControl.h @@ -111,6 +111,7 @@ struct NDSFrameInfo uint32_t lagFrameCount; uint32_t cpuLoadAvgARM9; uint32_t cpuLoadAvgARM7; + double executionSpeed; NDSInputState inputStatesPending; uint8_t touchLocXPending; @@ -137,6 +138,7 @@ struct NDSFrameInfo this->lagFrameCount = 0; this->cpuLoadAvgARM9 = 0; this->cpuLoadAvgARM7 = 0; + this->executionSpeed = 0.0; this->inputStatesPending.value = INPUT_STATES_CLEAR_VALUE; this->touchLocXPending = 0; @@ -164,6 +166,7 @@ struct NDSFrameInfo this->lagFrameCount = fromObject.lagFrameCount; this->cpuLoadAvgARM9 = fromObject.cpuLoadAvgARM9; this->cpuLoadAvgARM7 = fromObject.cpuLoadAvgARM7; + this->executionSpeed = fromObject.executionSpeed; this->inputStatesPending = fromObject.inputStatesPending; this->touchLocXPending = fromObject.touchLocXPending; @@ -308,6 +311,7 @@ public: void FetchOutputPostNDSExec(); const NDSFrameInfo& GetNDSFrameInfo(); + void SetFrameInfoExecutionSpeed(double executionSpeed); uint64_t GetFrameIndex(); double GetFrameTime(); diff --git a/desmume/src/frontend/cocoa/DefaultUserPrefs.plist b/desmume/src/frontend/cocoa/DefaultUserPrefs.plist index 92ceb3d50..ef6d9bc77 100644 --- a/desmume/src/frontend/cocoa/DefaultUserPrefs.plist +++ b/desmume/src/frontend/cocoa/DefaultUserPrefs.plist @@ -104,6 +104,8 @@ General_WillRestoreDisplayWindows + HUD_ShowExecutionSpeed + HUD_ShowVideoFPS HUD_ShowRender3DFPS @@ -118,6 +120,8 @@ HUD_ShowInput + HUD_Color_ExecutionSpeed + 4294967295 HUD_Color_VideoFPS 4294967295 HUD_Color_Render3DFPS diff --git a/desmume/src/frontend/cocoa/cocoa_core.mm b/desmume/src/frontend/cocoa/cocoa_core.mm index 4fb4b1727..f98657db5 100644 --- a/desmume/src/frontend/cocoa/cocoa_core.mm +++ b/desmume/src/frontend/cocoa/cocoa_core.mm @@ -1118,6 +1118,10 @@ static void* RunCoreThread(void *arg) double startTime = 0; double frameTime = 0; // The amount of time that is expected for the frame to run. + const double standardNDSFrameTime = execControl->CalculateFrameAbsoluteTime(1.0); + double executionSpeedAverage = 0.0; + double executionSpeedAverageFramesCollected = 0.0; + ExecutionBehavior behavior = ExecutionBehavior_Pause; uint64_t frameJumpTarget = 0; @@ -1176,6 +1180,26 @@ static void* RunCoreThread(void *arg) const uint8_t framesToSkip = execControl->GetFramesToSkip(); + if ( (behavior == ExecutionBehavior_Run) || (behavior == ExecutionBehavior_FrameJump) ) + { + if ((ndsFrameInfo.frameIndex & 0x1F) == 0x1F) + { + if (executionSpeedAverageFramesCollected > 0.0001) + { + execControl->SetFrameInfoExecutionSpeed((executionSpeedAverage / executionSpeedAverageFramesCollected) * 100.0); + } + + executionSpeedAverage = 0.0; + executionSpeedAverageFramesCollected = 0.0; + } + } + else + { + execControl->SetFrameInfoExecutionSpeed(0.0); + executionSpeedAverage = 0.0; + executionSpeedAverageFramesCollected = 0.0; + } + pthread_mutex_lock(¶m->mutexOutputList); switch (behavior) @@ -1267,6 +1291,10 @@ static void* RunCoreThread(void *arg) execControl->WaitUntilAbsoluteTime(startTime + frameTime); } + const double currentExecutionSpeed = standardNDSFrameTime / (execControl->GetCurrentAbsoluteTime() - startTime); + executionSpeedAverage += currentExecutionSpeed; + executionSpeedAverageFramesCollected += 1.0; + } while(true); return NULL; diff --git a/desmume/src/frontend/cocoa/cocoa_output.h b/desmume/src/frontend/cocoa/cocoa_output.h index ffb6680bf..897db98aa 100644 --- a/desmume/src/frontend/cocoa/cocoa_output.h +++ b/desmume/src/frontend/cocoa/cocoa_output.h @@ -133,6 +133,7 @@ @property (readonly, nonatomic) BOOL canFilterOnGPU; @property (readonly, nonatomic) BOOL willFilterOnGPU; @property (assign) BOOL isHUDVisible; +@property (assign) BOOL isHUDExecutionSpeedVisible; @property (assign) BOOL isHUDVideoFPSVisible; @property (assign) BOOL isHUDRender3DFPSVisible; @property (assign) BOOL isHUDFrameIndexVisible; @@ -140,6 +141,7 @@ @property (assign) BOOL isHUDCPULoadAverageVisible; @property (assign) BOOL isHUDRealTimeClockVisible; @property (assign) BOOL isHUDInputVisible; +@property (assign) uint32_t hudColorExecutionSpeed; @property (assign) uint32_t hudColorVideoFPS; @property (assign) uint32_t hudColorRender3DFPS; @property (assign) uint32_t hudColorFrameIndex; diff --git a/desmume/src/frontend/cocoa/cocoa_output.mm b/desmume/src/frontend/cocoa/cocoa_output.mm index 65d510e31..19c63ad9f 100644 --- a/desmume/src/frontend/cocoa/cocoa_output.mm +++ b/desmume/src/frontend/cocoa/cocoa_output.mm @@ -574,6 +574,7 @@ @dynamic canFilterOnGPU; @dynamic willFilterOnGPU; @dynamic isHUDVisible; +@dynamic isHUDExecutionSpeedVisible; @dynamic isHUDVideoFPSVisible; @dynamic isHUDRender3DFPSVisible; @dynamic isHUDFrameIndexVisible; @@ -581,6 +582,7 @@ @dynamic isHUDCPULoadAverageVisible; @dynamic isHUDRealTimeClockVisible; @dynamic isHUDInputVisible; +@dynamic hudColorExecutionSpeed; @dynamic hudColorVideoFPS; @dynamic hudColorRender3DFPS; @dynamic hudColorFrameIndex; @@ -664,6 +666,24 @@ return theState; } +- (void) setIsHUDExecutionSpeedVisible:(BOOL)theState +{ + OSSpinLockLock(&spinlockIsHUDVisible); + _cdv->Get3DPresenter()->SetHUDShowExecutionSpeed((theState) ? true : false); + OSSpinLockUnlock(&spinlockIsHUDVisible); + + _cdv->SetViewNeedsFlush(); +} + +- (BOOL) isHUDExecutionSpeedVisible +{ + OSSpinLockLock(&spinlockIsHUDVisible); + const BOOL theState = (_cdv->Get3DPresenter()->GetHUDShowExecutionSpeed()) ? YES : NO; + OSSpinLockUnlock(&spinlockIsHUDVisible); + + return theState; +} + - (void) setIsHUDVideoFPSVisible:(BOOL)theState { OSSpinLockLock(&spinlockIsHUDVisible); @@ -790,6 +810,24 @@ return theState; } +- (void) setHudColorExecutionSpeed:(uint32_t)theColor +{ + OSSpinLockLock(&spinlockIsHUDVisible); + _cdv->Get3DPresenter()->SetHUDColorExecutionSpeed(theColor); + OSSpinLockUnlock(&spinlockIsHUDVisible); + + _cdv->SetViewNeedsFlush(); +} + +- (uint32_t) hudColorExecutionSpeed +{ + OSSpinLockLock(&spinlockIsHUDVisible); + const uint32_t color32 = _cdv->Get3DPresenter()->GetHUDColorExecutionSpeed(); + OSSpinLockUnlock(&spinlockIsHUDVisible); + + return color32; +} + - (void) setHudColorVideoFPS:(uint32_t)theColor { OSSpinLockLock(&spinlockIsHUDVisible); diff --git a/desmume/src/frontend/cocoa/translations/English.lproj/MainMenu.strings b/desmume/src/frontend/cocoa/translations/English.lproj/MainMenu.strings index 62285fcf75b96b05d5efa1999b0676e97658cb24..982dbf6e7d389affdb250eb777f69691aed5cc8d 100644 GIT binary patch delta 179 zcmX@|PvTdzWJ3#M3sVbo3rh>@7B(0A$z2I<(5vg=_k{OlFnI2af7Z=L=$yK~f*Y3sFD$QVF{9=?OBd fX47NbU`8M;xe^MsWYG#nsmTXKxR6uEP3RgL_-T>3sVbo3rh>@7B&}q0A@G`(EtDd diff --git a/desmume/src/frontend/cocoa/translations/English.lproj/MainMenu.xib b/desmume/src/frontend/cocoa/translations/English.lproj/MainMenu.xib index a4d314b72..12e666bd3 100644 --- a/desmume/src/frontend/cocoa/translations/English.lproj/MainMenu.xib +++ b/desmume/src/frontend/cocoa/translations/English.lproj/MainMenu.xib @@ -1752,6 +1752,14 @@ HUD Info Visibility YES + + + Execution Speed + + 2147483647 + + + Video FPS @@ -4099,7 +4107,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXAInputPrefsView - + 268 YES @@ -4115,6 +4123,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA {{13, 10}, {463, 396}} + YES @@ -4139,6 +4148,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA268 {{72, 43}, {84, 17}} + YES 68157504 @@ -4157,6 +4167,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA268 {{44, 16}, {112, 17}} + YES 68157504 @@ -4175,6 +4186,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA268 {{158, 37}, {126, 26}} + YES -2076180416 @@ -4267,6 +4279,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA {{289, 14}, {72, 22}} + YES -1804599231 @@ -4359,6 +4372,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA268 {{63, 69}, {93, 17}} + YES 68157504 @@ -4377,6 +4391,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA268 {{158, 63}, {126, 26}} + YES -2076180416 @@ -4445,6 +4460,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA268 {{158, 11}, {126, 26}} + YES -2076180416 @@ -4546,10 +4562,12 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA {{1, 1}, {429, 97}} + {{6, 232}, {431, 113}} + {0, 0} 67108864 @@ -4580,6 +4598,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA268 {{15, 16}, {126, 17}} + YES 68157504 @@ -4598,6 +4617,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA268 {{339, 14}, {72, 22}} + YES -1804599231 @@ -4681,6 +4701,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA268 {{144, 10}, {189, 26}} + YES -2080112384 @@ -4703,6 +4724,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA268 {{305, 36}, {38, 11}} + YES 68157504 @@ -4725,6 +4747,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA268 {{263, 36}, {38, 11}} + YES 68157504 @@ -4743,6 +4766,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA268 {{220, 36}, {38, 11}} + YES 68157504 @@ -4761,6 +4785,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA268 {{178, 36}, {38, 11}} + YES 68157504 @@ -4779,6 +4804,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA268 {{137, 36}, {38, 11}} + YES 68157504 @@ -4797,6 +4823,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA268 {{181, 82}, {175, 26}} + _NS:791 YES @@ -4887,6 +4914,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA268 {{181, 56}, {175, 26}} + _NS:791 YES @@ -4944,6 +4972,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA268 {{64, 88}, {115, 17}} + _NS:4068 YES @@ -4964,6 +4993,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA268 {{64, 62}, {114, 17}} + _NS:4068 YES @@ -4982,10 +5012,12 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA {{1, 1}, {429, 116}} + {{6, 5}, {431, 132}} + {0, 0} 67108864 @@ -5016,6 +5048,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA268 {{223, 36}, {175, 26}} + _NS:791 YES @@ -5096,6 +5129,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA268 {{31, 42}, {190, 17}} + _NS:4068 YES @@ -5116,6 +5150,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA268 {{223, 10}, {175, 26}} + _NS:791 YES @@ -5196,6 +5231,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA268 {{32, 16}, {190, 17}} + _NS:4068 YES @@ -5214,11 +5250,13 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA {{1, 1}, {429, 71}} + _NS:21 {{6, 141}, {431, 87}} + _NS:18 {0, 0} @@ -5241,6 +5279,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA {{10, 33}, {443, 350}} + Display Views @@ -5817,7 +5856,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA 268 - {{15, 278}, {131, 18}} + {{15, 251}, {131, 18}} _NS:682 YES @@ -5842,7 +5881,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA 268 - {{15, 251}, {174, 18}} + {{15, 224}, {174, 18}} _NS:682 YES @@ -5867,7 +5906,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA 268 - {{15, 224}, {148, 18}} + {{15, 197}, {148, 18}} _NS:682 YES @@ -5892,7 +5931,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA 268 - {{15, 197}, {147, 18}} + {{15, 170}, {147, 18}} _NS:682 YES @@ -5917,7 +5956,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA 268 - {{15, 104}, {103, 18}} + {{15, 77}, {103, 18}} _NS:682 YES @@ -5942,7 +5981,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA 268 - {{15, 143}, {171, 18}} + {{15, 116}, {171, 18}} _NS:682 YES @@ -5967,7 +6006,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA 268 - {{15, 170}, {184, 18}} + {{15, 143}, {184, 18}} _NS:682 YES @@ -6022,7 +6061,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXANSColor pasteboard type - {{238, 276}, {44, 23}} + {{238, 249}, {44, 23}} _NS:4132 YES @@ -6033,7 +6072,32 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXAMSAxIDEAA - + + + 268 + {{15, 278}, {163, 18}} + + _NS:682 + YES + + 67108864 + 0 + Show Execution Speed + + _NS:682 + + 1211912448 + 2 + + + + + 200 + 25 + + NO + + 268 @@ -6043,7 +6107,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXANSColor pasteboard type - {{238, 249}, {44, 23}} + {{238, 276}, {44, 23}} _NS:4132 YES @@ -6051,7 +6115,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXAYES - + 268 @@ -6069,7 +6133,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXAYES - + 268 @@ -6087,7 +6151,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXAYES - + 268 @@ -6105,7 +6169,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXAYES - + 268 @@ -6123,7 +6187,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXAYES - + 268 @@ -6133,7 +6197,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXANSColor pasteboard type - {{238, 102}, {44, 23}} + {{238, 114}, {44, 23}} _NS:4132 YES @@ -6141,7 +6205,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXAYES - + 268 @@ -6159,7 +6223,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXAYES - + 268 @@ -6177,10 +6241,28 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXAYES + + + 268 + + YES + + YES + NSColor pasteboard type + + + {{238, 21}, {44, 23}} + + _NS:4132 + YES + NO + YES + + 268 - {{154.22265625, 52}, {81.77734375, 14}} + {{154.22265625, 25}, {81.77734375, 14}} _NS:4068 YES @@ -6200,7 +6282,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA 268 - {{154.22265625, 79}, {81.69921875, 14}} + {{154.22265625, 52}, {81.69921875, 14}} _NS:4068 YES @@ -6220,7 +6302,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA 268 - {{121.953125, 106}, {114.046875, 14}} + {{121.953125, 79}, {114.046875, 14}} _NS:4068 YES @@ -6257,6 +6339,8 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA {489, 420} + + NSView @@ -7255,7 +7339,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 1 - + 274 YES @@ -7274,6 +7358,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{16, 52}, {198, 18}} + YES @@ -7298,6 +7383,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{16, 32}, {217, 18}} + YES @@ -7322,6 +7408,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{16, 12}, {183, 18}} + _NS:682 YES @@ -7345,11 +7432,13 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 {{1, 1}, {494, 78}} + {{6, 301}, {496, 94}} + {0, 0} @@ -7381,6 +7470,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{18, 14}, {165, 38}} + YES NO @@ -7628,6 +7718,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{242, 15}, {73, 17}} + YES @@ -7647,6 +7738,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{320, 13}, {50, 22}} + YES @@ -7725,6 +7817,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{371, 10}, {19, 27}} + YES @@ -7743,11 +7836,13 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 {{1, 1}, {494, 62}} + {{6, 219}, {496, 78}} + {0, 0} @@ -7779,6 +7874,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{95, 14}, {66, 17}} + _NS:526 {251, 750} @@ -7801,6 +7897,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{164, 12}, {176, 26}} + _NS:9 YES @@ -7826,6 +7923,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{343, 14}, {52, 17}} + _NS:526 {251, 750} YES @@ -7899,6 +7997,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{161, 36}, {26, 14}} + _NS:526 {251, 750} @@ -7921,6 +8020,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{239, 36}, {26, 14}} + _NS:526 {251, 750} @@ -7943,6 +8043,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{314, 36}, {31, 14}} + _NS:526 {251, 750} @@ -7963,12 +8064,14 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 {{1, 1}, {494, 60}} + _NS:11 {{6, 139}, {496, 76}} + _NS:9 {0, 0} @@ -8001,6 +8104,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{16, 12}, {462, 18}} + YES @@ -8023,11 +8127,13 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 {{1, 1}, {494, 38}} + {{6, 81}, {496, 54}} + {0, 0} @@ -8059,6 +8165,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{16, 32}, {146, 18}} + YES @@ -8083,6 +8190,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{16, 12}, {118, 18}} + YES 67108864 @@ -8104,11 +8212,13 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 {{1, 1}, {494, 58}} + {{6, 3}, {496, 74}} + {0, 0} @@ -8127,6 +8237,8 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 {{10, 33}, {508, 395}} + + General Settings @@ -8136,7 +8248,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 2 - + 274 YES @@ -8155,7 +8267,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{16, 117}, {185, 18}} - YES @@ -8180,7 +8291,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{140, 86}, {240, 22}} - YES @@ -8202,7 +8312,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{15, 89}, {124, 17}} - YES @@ -8222,7 +8331,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{382, 80}, {100, 32}} - YES @@ -8245,7 +8353,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{140, 59}, {240, 22}} - YES @@ -8267,7 +8374,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{15, 62}, {124, 17}} - YES @@ -8287,7 +8393,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{382, 53}, {100, 32}} - YES @@ -8310,7 +8415,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{16, 32}, {230, 18}} - YES @@ -8335,7 +8439,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{16, 12}, {239, 18}} - YES @@ -8358,13 +8461,11 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 {{1, 1}, {494, 143}} - {{6, 184}, {496, 159}} - {0, 0} @@ -8396,7 +8497,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{16, 61}, {206, 18}} - YES @@ -8421,7 +8521,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{140, 33}, {240, 22}} - YES @@ -8443,7 +8542,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{15, 37}, {120, 17}} - YES @@ -8463,7 +8561,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{382, 27}, {100, 32}} - YES @@ -8486,7 +8583,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{16, 12}, {149, 18}} - YES @@ -8511,7 +8607,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{12, 81}, {229, 32}} - YES @@ -8532,13 +8627,11 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 {{1, 1}, {494, 119}} - {{6, 45}, {496, 135}} - {0, 0} @@ -8557,8 +8650,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 {{10, 33}, {508, 395}} - - BIOS and Firmware @@ -9408,14 +9499,14 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 - + 0 YES YES YES - + @@ -19483,7 +19574,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 {1.7976931348623157e+308, 1.7976931348623157e+308} - + 256 YES @@ -19502,7 +19593,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{16, 52}, {171, 18}} - 1 YES @@ -19527,7 +19617,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{16, 32}, {187, 18}} - 10 YES @@ -19552,7 +19641,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{16, 12}, {158, 18}} - _NS:682 YES @@ -19576,12 +19664,10 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 {{1, 1}, {250, 78}} - {{17, 419}, {252, 94}} - {0, 0} 67108864 @@ -19612,7 +19698,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{16, 52}, {162, 18}} - 2 YES @@ -19637,7 +19722,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{35, 32}, {127, 18}} - 3 YES @@ -19662,7 +19746,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{35, 12}, {138, 18}} - 4 YES @@ -19685,12 +19768,10 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 {{1, 1}, {250, 78}} - {{17, 215}, {252, 94}} - {0, 0} 67108864 @@ -19721,7 +19802,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{15, 32}, {177, 18}} - 5 YES @@ -19746,7 +19826,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{15, 12}, {130, 18}} - 6 YES @@ -19771,7 +19850,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 265 {{176, 54}, {27, 27}} - YES 67108864 @@ -19794,7 +19872,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{15, 61}, {157, 14}} - YES 68157504 @@ -19811,12 +19888,10 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 {{1, 1}, {250, 85}} - {{17, 110}, {252, 101}} - {0, 0} 67108864 @@ -19837,7 +19912,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{62, 9}, {162, 19}} - YES -2080374784 @@ -19873,7 +19947,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{15, 32}, {128, 18}} - 9 YES @@ -19898,7 +19971,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{15, 12}, {105, 18}} - YES 67108864 @@ -19920,12 +19992,10 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 {{1, 1}, {250, 58}} - {{17, 32}, {252, 74}} - {0, 0} 67108864 @@ -19956,7 +20026,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{18, 38}, {145, 38}} - YES NO 2 @@ -20203,7 +20272,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{198, 11}, {19, 27}} - YES 67895328 @@ -20223,7 +20291,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{157, 16}, {40, 19}} - YES -1804599231 @@ -20301,7 +20368,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{74, 18}, {78, 14}} - YES 68157504 @@ -20318,12 +20384,10 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 {{1, 1}, {250, 86}} - {{17, 313}, {252, 102}} - {0, 0} 67108864 @@ -20341,8 +20405,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 {286, 533} - - {{0, 0}, {1920, 1177}} {1.7976931348623157e+308, 1.7976931348623157e+308} @@ -21762,7 +21824,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 279 2 - {{170, -72}, {235, 330}} + {{170, -97}, {235, 355}} -461896704 HUD Settings NSPanel @@ -21770,7 +21832,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 {1.7976931348623157e+308, 1.7976931348623157e+308} - + 256 YES @@ -21779,6 +21841,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{16, 209}, {99, 18}} + YES 67108864 @@ -21802,6 +21865,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{16, 259}, {84, 18}} + YES -2080374784 @@ -21825,6 +21889,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{16, 97}, {60, 18}} + YES 67108864 @@ -21848,6 +21913,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{16, 234}, {121, 18}} + YES 67108864 @@ -21871,6 +21937,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{16, 184}, {98, 18}} + YES 67108864 @@ -21894,6 +21961,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{16, 134}, {121, 18}} + YES 67108864 @@ -21917,6 +21985,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{16, 159}, {130, 18}} + YES 67108864 @@ -21940,6 +22009,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{37, 13}, {162, 19}} + YES -2080374784 @@ -21959,8 +22029,9 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 - {{16, 294}, {167, 18}} + {{16, 319}, {167, 18}} + YES 67108864 @@ -21982,8 +22053,9 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 12 - {{12, 285}, {211, 5}} + {{12, 310}, {211, 5}} + {0, 0} 67108864 @@ -22010,6 +22082,50 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 {{171, 256}, {44, 23}} + + _NS:4132 + YES + NO + YES + + + + + 268 + {{16, 284}, {110, 18}} + + + YES + + 67108864 + 131072 + Execution Speed + + + 1211912448 + 2 + + + + + 200 + 25 + + NO + + + + 268 + + YES + + YES + NSColor pasteboard type + + + {{171, 281}, {44, 23}} + + _NS:4132 YES NO @@ -22028,6 +22144,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 {{171, 231}, {44, 23}} + _NS:4132 YES NO @@ -22046,6 +22163,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 {{171, 206}, {44, 23}} + _NS:4132 YES NO @@ -22064,6 +22182,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 {{171, 181}, {44, 23}} + _NS:4132 YES NO @@ -22082,6 +22201,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 {{171, 156}, {44, 23}} + _NS:4132 YES NO @@ -22100,6 +22220,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 {{171, 131}, {44, 23}} + _NS:4132 YES NO @@ -22118,6 +22239,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 {{171, 95}, {44, 23}} + _NS:4132 YES NO @@ -22136,6 +22258,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 {{171, 70}, {44, 23}} + _NS:4132 YES NO @@ -22154,6 +22277,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 {{171, 45}, {44, 23}} + _NS:4132 YES NO @@ -22165,6 +22289,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{107.8203125, 45}, {62, 17}} + _NS:4068 YES @@ -22185,6 +22310,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{109, 69}, {61, 17}} + _NS:4068 YES @@ -22205,6 +22331,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 268 {{85, 94}, {85, 17}} + _NS:4068 YES @@ -22221,7 +22348,9 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 1 - {235, 330} + {235, 355} + + {{0, 0}, {1920, 1177}} {1.7976931348623157e+308, 1.7976931348623157e+308} @@ -33565,6 +33694,8 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 mainWindow.view.hudColorInputPendingAndApplied mainWindow.view.hudColorInputAppliedOnly mainWindow.view.hudColorInputPendingOnly + mainWindow.view.isHUDExecutionSpeedVisible + mainWindow.view.hudColorExecutionSpeed EmuControllerDelegate @@ -33834,12 +33965,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 YES - - YES - BIOS_ARM9ImagePath - BIOS_ARM7ImagePath - Emulation_UseExternalBIOSImages - YES @@ -45909,14 +46034,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 10162 - - - toggleShowHUDVideoFPS: - - - - 10163 - value: values.DisplayView_EnableHUD @@ -47697,6 +47814,90 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 11024 + + + value: selection.mainWindow.view.isHUDExecutionSpeedVisible + + + + + + value: selection.mainWindow.view.isHUDExecutionSpeedVisible + value + selection.mainWindow.view.isHUDExecutionSpeedVisible + 2 + + + 11032 + + + + value: selection.mainWindow.view.hudColorExecutionSpeed + + + + + + value: selection.mainWindow.view.hudColorExecutionSpeed + value + selection.mainWindow.view.hudColorExecutionSpeed + 2 + + + 11033 + + + + value: values.HUD_ShowExecutionSpeed + + + + + + value: values.HUD_ShowExecutionSpeed + value + values.HUD_ShowExecutionSpeed + 2 + + + 11040 + + + + value: values.HUD_Color_ExecutionSpeed + + + + + + value: values.HUD_Color_ExecutionSpeed + value + values.HUD_Color_ExecutionSpeed + + NSValueTransformerName + RGBA8888ToNSColorValueTransformer + + 2 + + + 11041 + + + + toggleShowHUDExecutionSpeed: + + + + 11042 + + + + toggleShowHUDVideoFPS: + + + + 11043 + @@ -48250,6 +48451,8 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 + + @@ -62243,12 +62446,13 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 YES - + + @@ -62317,6 +62521,8 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 + + @@ -65088,6 +65294,49 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 + + 11025 + + + + + 11027 + + + YES + + + + + + 11028 + + + + + 11029 + + + + + 11035 + + + YES + + + + + + 11036 + + + + + 11037 + + + @@ -65443,6 +65692,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 10447.IBViewBoundsToFrameTransform 10448.IBPluginDependency 10462.IBPluginDependency + 10462.IBViewBoundsToFrameTransform 10463.IBPluginDependency 10464.IBPluginDependency 10465.IBPluginDependency @@ -65748,6 +65998,16 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 11010.IBPluginDependency 11011.IBPluginDependency 11012.IBPluginDependency + 11025.IBPluginDependency + 11027.IBPluginDependency + 11027.IBViewBoundsToFrameTransform + 11028.IBPluginDependency + 11028.IBViewBoundsToFrameTransform + 11029.IBPluginDependency + 11035.IBPluginDependency + 11035.IBViewBoundsToFrameTransform + 11036.IBPluginDependency + 11037.IBPluginDependency 1113.IBPluginDependency 1114.IBPluginDependency 1115.IBPluginDependency @@ -68200,7 +68460,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - {{918, 413}, {181, 143}} + {{714, 393}, {181, 163}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -68216,7 +68476,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - P4AAAL+AAABBcAAAw56AAA + P4AAAL+AAABBcAAAw4OAAA com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -68678,7 +68938,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - AUMjAABDsIAAA + AUMrAABDyAAAA com.apple.InterfaceBuilder.CocoaPlugin @@ -68719,6 +68979,9 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + + AUNuAABDdQAAA + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -69132,6 +69395,22 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABBkAAAwx8AAA + + com.apple.InterfaceBuilder.CocoaPlugin + + AUMjAABDsIAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABBcAAAw56AAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -71545,9 +71824,9 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - {{80, 532}, {235, 330}} + {{908, 328}, {235, 355}} com.apple.InterfaceBuilder.CocoaPlugin - {{80, 532}, {235, 330}} + {{908, 328}, {235, 355}} YES @@ -71688,7 +71967,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - P4AAAL+AAABBkAAAwx8AAA + P4AAAL+AAABBgAAAw9GAAA com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -72213,7 +72492,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - {{612, 523}, {235, 123}} + {{714, 523}, {235, 123}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -72562,7 +72841,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 - 11024 + 11043 @@ -73031,6 +73310,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 toggleKeepMinDisplaySizeAtNormal: toggleNDSDisplays: toggleShowHUDCPULoadAverage: + toggleShowHUDExecutionSpeed: toggleShowHUDFrameIndex: toggleShowHUDInput: toggleShowHUDLagFrameCount: @@ -73084,6 +73364,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 id id id + id @@ -73114,6 +73395,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 toggleKeepMinDisplaySizeAtNormal: toggleNDSDisplays: toggleShowHUDCPULoadAverage: + toggleShowHUDExecutionSpeed: toggleShowHUDFrameIndex: toggleShowHUDInput: toggleShowHUDLagFrameCount: @@ -73226,6 +73508,10 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 toggleShowHUDCPULoadAverage: id + + toggleShowHUDExecutionSpeed: + id + toggleShowHUDFrameIndex: id diff --git a/desmume/src/frontend/cocoa/userinterface/DisplayViewCALayer.h b/desmume/src/frontend/cocoa/userinterface/DisplayViewCALayer.h index 3effc07e8..71e3444eb 100644 --- a/desmume/src/frontend/cocoa/userinterface/DisplayViewCALayer.h +++ b/desmume/src/frontend/cocoa/userinterface/DisplayViewCALayer.h @@ -45,6 +45,7 @@ class MacDisplayLayeredView; @property (readonly) BOOL canUseShaderBasedFilters; @property (assign, nonatomic) BOOL allowViewUpdates; @property (assign) BOOL isHUDVisible; +@property (assign) BOOL isHUDExecutionSpeedVisible; @property (assign) BOOL isHUDVideoFPSVisible; @property (assign) BOOL isHUDRender3DFPSVisible; @property (assign) BOOL isHUDFrameIndexVisible; @@ -52,6 +53,7 @@ class MacDisplayLayeredView; @property (assign) BOOL isHUDCPULoadAverageVisible; @property (assign) BOOL isHUDRealTimeClockVisible; @property (assign) BOOL isHUDInputVisible; +@property (assign) NSColor *hudColorExecutionSpeed; @property (assign) NSColor *hudColorVideoFPS; @property (assign) NSColor *hudColorRender3DFPS; @property (assign) NSColor *hudColorFrameIndex; diff --git a/desmume/src/frontend/cocoa/userinterface/DisplayWindowController.h b/desmume/src/frontend/cocoa/userinterface/DisplayWindowController.h index e229f9479..9e96f6c85 100644 --- a/desmume/src/frontend/cocoa/userinterface/DisplayWindowController.h +++ b/desmume/src/frontend/cocoa/userinterface/DisplayWindowController.h @@ -160,6 +160,7 @@ class OGLVideoOutput; - (IBAction) changeVideoOutputFilter:(id)sender; - (IBAction) changeVideoPixelScaler:(id)sender; - (IBAction) toggleHUDVisibility:(id)sender; +- (IBAction) toggleShowHUDExecutionSpeed:(id)sender; - (IBAction) toggleShowHUDVideoFPS:(id)sender; - (IBAction) toggleShowHUDRender3DFPS:(id)sender; - (IBAction) toggleShowHUDFrameIndex:(id)sender; diff --git a/desmume/src/frontend/cocoa/userinterface/DisplayWindowController.mm b/desmume/src/frontend/cocoa/userinterface/DisplayWindowController.mm index 0349b88ad..46fc134e8 100644 --- a/desmume/src/frontend/cocoa/userinterface/DisplayWindowController.mm +++ b/desmume/src/frontend/cocoa/userinterface/DisplayWindowController.mm @@ -485,6 +485,7 @@ static std::unordered_map _screenMap; // pixelScaler:[[NSUserDefaults standardUserDefaults] integerForKey:@"DisplayView_VideoFilter"]]; [[self view] setIsHUDVisible:[[NSUserDefaults standardUserDefaults] boolForKey:@"DisplayView_EnableHUD"]]; + [[self view] setIsHUDExecutionSpeedVisible:[[NSUserDefaults standardUserDefaults] boolForKey:@"HUD_ShowExecutionSpeed"]]; [[self view] setIsHUDVideoFPSVisible:[[NSUserDefaults standardUserDefaults] boolForKey:@"HUD_ShowVideoFPS"]]; [[self view] setIsHUDRender3DFPSVisible:[[NSUserDefaults standardUserDefaults] boolForKey:@"HUD_ShowRender3DFPS"]]; [[self view] setIsHUDFrameIndexVisible:[[NSUserDefaults standardUserDefaults] boolForKey:@"HUD_ShowFrameIndex"]]; @@ -493,6 +494,7 @@ static std::unordered_map _screenMap; // [[self view] setIsHUDRealTimeClockVisible:[[NSUserDefaults standardUserDefaults] boolForKey:@"HUD_ShowRTC"]]; [[self view] setIsHUDInputVisible:[[NSUserDefaults standardUserDefaults] boolForKey:@"HUD_ShowInput"]]; + [[self view] setHudColorExecutionSpeed:[CocoaDSUtil NSColorFromRGBA8888:LE_TO_LOCAL_32([[NSUserDefaults standardUserDefaults] integerForKey:@"HUD_Color_ExecutionSpeed"])]]; [[self view] setHudColorVideoFPS:[CocoaDSUtil NSColorFromRGBA8888:LE_TO_LOCAL_32([[NSUserDefaults standardUserDefaults] integerForKey:@"HUD_Color_VideoFPS"])]]; [[self view] setHudColorRender3DFPS:[CocoaDSUtil NSColorFromRGBA8888:LE_TO_LOCAL_32([[NSUserDefaults standardUserDefaults] integerForKey:@"HUD_Color_Render3DFPS"])]]; [[self view] setHudColorFrameIndex:[CocoaDSUtil NSColorFromRGBA8888:LE_TO_LOCAL_32([[NSUserDefaults standardUserDefaults] integerForKey:@"HUD_Color_FrameIndex"])]]; @@ -719,6 +721,11 @@ static std::unordered_map _screenMap; // [[self view] setIsHUDVisible:![[self view] isHUDVisible]]; } +- (IBAction) toggleShowHUDExecutionSpeed:(id)sender +{ + [[self view] setIsHUDExecutionSpeedVisible:![[self view] isHUDExecutionSpeedVisible]]; +} + - (IBAction) toggleShowHUDVideoFPS:(id)sender { [[self view] setIsHUDVideoFPSVisible:![[self view] isHUDVideoFPSVisible]]; @@ -962,6 +969,7 @@ static std::unordered_map _screenMap; // - (IBAction) writeDefaultsHUDSettings:(id)sender { [[NSUserDefaults standardUserDefaults] setBool:[[self view] isHUDVisible] forKey:@"DisplayView_EnableHUD"]; + [[NSUserDefaults standardUserDefaults] setBool:[[self view] isHUDExecutionSpeedVisible] forKey:@"HUD_ShowExecutionSpeed"]; [[NSUserDefaults standardUserDefaults] setBool:[[self view] isHUDVideoFPSVisible] forKey:@"HUD_ShowVideoFPS"]; [[NSUserDefaults standardUserDefaults] setBool:[[self view] isHUDRender3DFPSVisible] forKey:@"HUD_ShowRender3DFPS"]; [[NSUserDefaults standardUserDefaults] setBool:[[self view] isHUDFrameIndexVisible] forKey:@"HUD_ShowFrameIndex"]; @@ -970,6 +978,7 @@ static std::unordered_map _screenMap; // [[NSUserDefaults standardUserDefaults] setBool:[[self view] isHUDRealTimeClockVisible] forKey:@"HUD_ShowRTC"]; [[NSUserDefaults standardUserDefaults] setBool:[[self view] isHUDInputVisible] forKey:@"HUD_ShowInput"]; + [[NSUserDefaults standardUserDefaults] setInteger:[CocoaDSUtil RGBA8888FromNSColor:[[self view] hudColorExecutionSpeed]] forKey:@"HUD_Color_ExecutionSpeed"]; [[NSUserDefaults standardUserDefaults] setInteger:[CocoaDSUtil RGBA8888FromNSColor:[[self view] hudColorVideoFPS]] forKey:@"HUD_Color_VideoFPS"]; [[NSUserDefaults standardUserDefaults] setInteger:[CocoaDSUtil RGBA8888FromNSColor:[[self view] hudColorRender3DFPS]] forKey:@"HUD_Color_Render3DFPS"]; [[NSUserDefaults standardUserDefaults] setInteger:[CocoaDSUtil RGBA8888FromNSColor:[[self view] hudColorFrameIndex]] forKey:@"HUD_Color_FrameIndex"]; @@ -1144,6 +1153,13 @@ static std::unordered_map _screenMap; // [(NSMenuItem *)theItem setState:([[self view] isHUDVisible]) ? NSOnState : NSOffState]; } } + else if (theAction == @selector(toggleShowHUDExecutionSpeed:)) + { + if ([(id)theItem isMemberOfClass:[NSMenuItem class]]) + { + [(NSMenuItem *)theItem setState:([[self view] isHUDExecutionSpeedVisible]) ? NSOnState : NSOffState]; + } + } else if (theAction == @selector(toggleShowHUDVideoFPS:)) { if ([(id)theItem isMemberOfClass:[NSMenuItem class]]) @@ -1595,6 +1611,7 @@ static std::unordered_map _screenMap; // @dynamic canUseShaderBasedFilters; @dynamic allowViewUpdates; @dynamic isHUDVisible; +@dynamic isHUDExecutionSpeedVisible; @dynamic isHUDVideoFPSVisible; @dynamic isHUDRender3DFPSVisible; @dynamic isHUDFrameIndexVisible; @@ -1602,6 +1619,7 @@ static std::unordered_map _screenMap; // @dynamic isHUDCPULoadAverageVisible; @dynamic isHUDRealTimeClockVisible; @dynamic isHUDInputVisible; +@dynamic hudColorExecutionSpeed; @dynamic hudColorVideoFPS; @dynamic hudColorRender3DFPS; @dynamic hudColorFrameIndex; @@ -1745,6 +1763,16 @@ static std::unordered_map _screenMap; // return [[self cdsVideoOutput] isHUDVisible]; } +- (void) setIsHUDExecutionSpeedVisible:(BOOL)theState +{ + [[self cdsVideoOutput] setIsHUDExecutionSpeedVisible:theState]; +} + +- (BOOL) isHUDExecutionSpeedVisible +{ + return [[self cdsVideoOutput] isHUDExecutionSpeedVisible]; +} + - (void) setIsHUDVideoFPSVisible:(BOOL)theState { [[self cdsVideoOutput] setIsHUDVideoFPSVisible:theState]; @@ -1815,6 +1843,16 @@ static std::unordered_map _screenMap; // return [[self cdsVideoOutput] isHUDInputVisible]; } +- (void) setHudColorExecutionSpeed:(NSColor *)theColor +{ + [[self cdsVideoOutput] setHudColorExecutionSpeed:[CocoaDSUtil RGBA8888FromNSColor:theColor]]; +} + +- (NSColor *) hudColorExecutionSpeed +{ + return [CocoaDSUtil NSColorFromRGBA8888:[[self cdsVideoOutput] hudColorExecutionSpeed]]; +} + - (void) setHudColorVideoFPS:(NSColor *)theColor { [[self cdsVideoOutput] setHudColorVideoFPS:[CocoaDSUtil RGBA8888FromNSColor:theColor]]; diff --git a/desmume/src/frontend/cocoa/userinterface/EmuControllerDelegate.mm b/desmume/src/frontend/cocoa/userinterface/EmuControllerDelegate.mm index 697f52d71..c89a2adde 100644 --- a/desmume/src/frontend/cocoa/userinterface/EmuControllerDelegate.mm +++ b/desmume/src/frontend/cocoa/userinterface/EmuControllerDelegate.mm @@ -2313,6 +2313,7 @@ const NSInteger videoOutputFilter = ([windowProperties objectForKey:@"videoOutputFilter"] != nil) ? [(NSNumber *)[windowProperties valueForKey:@"videoOutputFilter"] integerValue] : [[NSUserDefaults standardUserDefaults] integerForKey:@"DisplayView_OutputFilter"]; const BOOL hudEnable = ([windowProperties objectForKey:@"hudEnable"] != nil) ? [(NSNumber *)[windowProperties valueForKey:@"hudEnable"] boolValue] : [[NSUserDefaults standardUserDefaults] boolForKey:@"DisplayView_EnableHUD"]; + const BOOL hudShowExecutionSpeed = ([windowProperties objectForKey:@"hudShowExecutionSpeed"] != nil) ? [(NSNumber *)[windowProperties valueForKey:@"hudShowExecutionSpeed"] boolValue] : [[NSUserDefaults standardUserDefaults] boolForKey:@"HUD_ShowExecutionSpeed"]; const BOOL hudShowVideoFPS = ([windowProperties objectForKey:@"hudShowVideoFPS"] != nil) ? [(NSNumber *)[windowProperties valueForKey:@"hudShowVideoFPS"] boolValue] : [[NSUserDefaults standardUserDefaults] boolForKey:@"HUD_ShowVideoFPS"]; const BOOL hudShowRender3DFPS = ([windowProperties objectForKey:@"hudShowRender3DFPS"] != nil) ? [(NSNumber *)[windowProperties valueForKey:@"hudShowRender3DFPS"] boolValue] : [[NSUserDefaults standardUserDefaults] boolForKey:@"HUD_ShowRender3DFPS"]; const BOOL hudShowFrameIndex = ([windowProperties objectForKey:@"hudShowFrameIndex"] != nil) ? [(NSNumber *)[windowProperties valueForKey:@"hudShowFrameIndex"] boolValue] : [[NSUserDefaults standardUserDefaults] boolForKey:@"HUD_ShowFrameIndex"]; @@ -2321,6 +2322,7 @@ const BOOL hudShowRTC = ([windowProperties objectForKey:@"hudShowRTC"] != nil) ? [(NSNumber *)[windowProperties valueForKey:@"hudShowRTC"] boolValue] : [[NSUserDefaults standardUserDefaults] boolForKey:@"HUD_ShowRTC"]; const BOOL hudShowInput = ([windowProperties objectForKey:@"hudShowInput"] != nil) ? [(NSNumber *)[windowProperties valueForKey:@"hudShowInput"] boolValue] : [[NSUserDefaults standardUserDefaults] boolForKey:@"HUD_ShowInput"]; + const NSUInteger hudColorExecutionSpeed = ([windowProperties objectForKey:@"hudColorExecutionSpeed"] != nil) ? [(NSNumber *)[windowProperties valueForKey:@"hudColorExecutionSpeed"] unsignedIntegerValue] : [[NSUserDefaults standardUserDefaults] integerForKey:@"HUD_Color_ExecutionSpeed"]; const NSUInteger hudColorVideoFPS = ([windowProperties objectForKey:@"hudColorVideoFPS"] != nil) ? [(NSNumber *)[windowProperties valueForKey:@"hudColorVideoFPS"] unsignedIntegerValue] : [[NSUserDefaults standardUserDefaults] integerForKey:@"HUD_Color_VideoFPS"]; const NSUInteger hudColorRender3DFPS = ([windowProperties objectForKey:@"hudColorRender3DFPS"] != nil) ? [(NSNumber *)[windowProperties valueForKey:@"hudColorRender3DFPS"] unsignedIntegerValue] : [[NSUserDefaults standardUserDefaults] integerForKey:@"HUD_Color_Render3DFPS"]; const NSUInteger hudColorFrameIndex = ([windowProperties objectForKey:@"hudColorFrameIndex"] != nil) ? [(NSNumber *)[windowProperties valueForKey:@"hudColorFrameIndex"] unsignedIntegerValue] : [[NSUserDefaults standardUserDefaults] integerForKey:@"HUD_Color_FrameIndex"]; @@ -2367,6 +2369,7 @@ [[windowController view] setUseVerticalSync:useVerticalSync]; [[windowController view] setIsHUDVisible:hudEnable]; + [[windowController view] setIsHUDExecutionSpeedVisible:hudShowExecutionSpeed]; [[windowController view] setIsHUDVideoFPSVisible:hudShowVideoFPS]; [[windowController view] setIsHUDRender3DFPSVisible:hudShowRender3DFPS]; [[windowController view] setIsHUDFrameIndexVisible:hudShowFrameIndex]; @@ -2375,6 +2378,7 @@ [[windowController view] setIsHUDRealTimeClockVisible:hudShowRTC]; [[windowController view] setIsHUDInputVisible:hudShowInput]; + [[windowController view] setHudColorExecutionSpeed:[CocoaDSUtil NSColorFromRGBA8888:(uint32_t)hudColorExecutionSpeed]]; [[windowController view] setHudColorVideoFPS:[CocoaDSUtil NSColorFromRGBA8888:(uint32_t)hudColorVideoFPS]]; [[windowController view] setHudColorRender3DFPS:[CocoaDSUtil NSColorFromRGBA8888:(uint32_t)hudColorRender3DFPS]]; [[windowController view] setHudColorFrameIndex:[CocoaDSUtil NSColorFromRGBA8888:(uint32_t)hudColorFrameIndex]]; @@ -2447,6 +2451,7 @@ [NSNumber numberWithBool:[[windowController view] sourceDeposterize]], @"videoSourceDeposterize", [NSNumber numberWithBool:[[windowController view] useVerticalSync]], @"useVerticalSync", [NSNumber numberWithBool:[[windowController view] isHUDVisible]], @"hudEnable", + [NSNumber numberWithBool:[[windowController view] isHUDExecutionSpeedVisible]], @"hudShowExecutionSpeed", [NSNumber numberWithBool:[[windowController view] isHUDVideoFPSVisible]], @"hudShowVideoFPS", [NSNumber numberWithBool:[[windowController view] isHUDRender3DFPSVisible]], @"hudShowRender3DFPS", [NSNumber numberWithBool:[[windowController view] isHUDFrameIndexVisible]], @"hudShowFrameIndex", @@ -2454,6 +2459,7 @@ [NSNumber numberWithBool:[[windowController view] isHUDCPULoadAverageVisible]], @"hudShowCPULoadAverage", [NSNumber numberWithBool:[[windowController view] isHUDRealTimeClockVisible]], @"hudShowRTC", [NSNumber numberWithBool:[[windowController view] isHUDInputVisible]], @"hudShowInput", + [NSNumber numberWithUnsignedInteger:[CocoaDSUtil RGBA8888FromNSColor:[[windowController view] hudColorExecutionSpeed]]], @"hudColorExecutionSpeed", [NSNumber numberWithUnsignedInteger:[CocoaDSUtil RGBA8888FromNSColor:[[windowController view] hudColorVideoFPS]]], @"hudColorVideoFPS", [NSNumber numberWithUnsignedInteger:[CocoaDSUtil RGBA8888FromNSColor:[[windowController view] hudColorRender3DFPS]]], @"hudColorRender3DFPS", [NSNumber numberWithUnsignedInteger:[CocoaDSUtil RGBA8888FromNSColor:[[windowController view] hudColorFrameIndex]]], @"hudColorFrameIndex",