mirror of https://github.com/snes9xgit/snes9x.git
1595 lines
56 KiB
Plaintext
Executable File
1595 lines
56 KiB
Plaintext
Executable File
/*****************************************************************************\
|
|
Snes9x - Portable Super Nintendo Entertainment System (TM) emulator.
|
|
This file is licensed under the Snes9x License.
|
|
For further information, consult the LICENSE file in the root directory.
|
|
\*****************************************************************************/
|
|
|
|
/***********************************************************************************
|
|
SNES9X for Mac OS (c) Copyright John Stiles
|
|
|
|
Snes9x for Mac OS X
|
|
|
|
(c) Copyright 2001 - 2011 zones
|
|
(c) Copyright 2002 - 2005 107
|
|
(c) Copyright 2002 PB1400c
|
|
(c) Copyright 2004 Alexander and Sander
|
|
(c) Copyright 2004 - 2005 Steven Seeger
|
|
(c) Copyright 2005 Ryan Vogt
|
|
(c) Copyright 2019 Michael Donald Buckley
|
|
***********************************************************************************/
|
|
|
|
|
|
#include "snes9x.h"
|
|
#include "memmap.h"
|
|
#include "blit.h"
|
|
|
|
#include <OpenGL/OpenGL.h>
|
|
#define __STDC_FORMAT_MACROS
|
|
#include <inttypes.h>
|
|
|
|
#include "mac-prefix.h"
|
|
#include "mac-audio.h"
|
|
#include "mac-cart.h"
|
|
#include "mac-coreimage.h"
|
|
#include "mac-dialog.h"
|
|
#include "mac-file.h"
|
|
#include "mac-keyboard.h"
|
|
#include "mac-os.h"
|
|
#include "mac-render.h"
|
|
#include "mac-snes9x.h"
|
|
#include "mac-stringtools.h"
|
|
#include "mac-prefs.h"
|
|
|
|
enum
|
|
{
|
|
iNibGFullScreen = 1,
|
|
iNibGSwitchResolution,
|
|
iNibGShowFrameRate,
|
|
iNibGCIFilterEnable,
|
|
iNibGTransparency,
|
|
iNibGGL32bit,
|
|
iNibGGLStretch,
|
|
iNibGCoreImageFilter,
|
|
iNibGVideoMode,
|
|
iNibGDirectMP,
|
|
iNibGGLVSync,
|
|
iNibGDrawOverscan,
|
|
iNibGScreenCurvature,
|
|
iNibGCurvatureWarp,
|
|
iNibGAspectRatio,
|
|
iNibGAspectRatioText,
|
|
|
|
iNibSSynchronize = 201,
|
|
iNibS16BitPlayback,
|
|
iNibSStereo,
|
|
iNibSReverseStereo,
|
|
iNibSPlaybackRate,
|
|
iNibSBufferSize,
|
|
iNibSVolume,
|
|
iNibSInputRate,
|
|
iNibSInputRateText,
|
|
iNibSAllowLag,
|
|
iNibSInterval,
|
|
|
|
iNibOSaveFolder = 401,
|
|
iNibOAutoSaveInterval,
|
|
|
|
iNibMCPUCycles = 601,
|
|
iNibMReserved1,
|
|
iNibMTurboSkipArrows,
|
|
iNibMTurboSkipText,
|
|
iNibMFrameSkip,
|
|
iNibMAllowInvalidVRAMAccess,
|
|
iNibMAllowSpecificGameHacks,
|
|
|
|
iNibXStartOpenDialog = 801,
|
|
iNibXShowTimeInFrz,
|
|
iNibXMusicBoxMode,
|
|
iNibXEnableToggle,
|
|
iNibXBSXBootup,
|
|
iNibXSaveWindowPos,
|
|
iNibXUseIPSPatch,
|
|
iNibXOnScreenInfo,
|
|
iNibXInactiveMode
|
|
};
|
|
|
|
enum
|
|
{
|
|
iOpenGLBlocky = 1,
|
|
iOpenGLTVMode,
|
|
iOpenGLSmoothMode,
|
|
iOpenGLBlendMode,
|
|
iOpenGLEagleMode,
|
|
iOpenGL2xSAIMode,
|
|
iOpenGLSuper2xSAIMode,
|
|
iOpenGLEPXMode,
|
|
iOpenGLHQ2xMode,
|
|
iOpenGLHQ3xMode,
|
|
iOpenGLHQ4xMode,
|
|
iOpenGLNTSC_CMode,
|
|
iOpenGLNTSC_SMode,
|
|
iOpenGLNTSC_RMode,
|
|
iOpenGLNTSC_MMode,
|
|
iOpenGLNTSC_TV_CMode,
|
|
iOpenGLNTSC_TV_SMode,
|
|
iOpenGLNTSC_TV_RMode,
|
|
iOpenGLNTSC_TV_MMode
|
|
};
|
|
|
|
enum
|
|
{
|
|
iNibSaveFolderNameMenuItem = 5
|
|
};
|
|
|
|
static int lastTabIndex = 1;
|
|
static int tabList[] = { 5, 129, 130, 131, 132, 133 };
|
|
|
|
struct PrefList
|
|
{
|
|
OSType itemName;
|
|
void *itemPointer;
|
|
int size;
|
|
};
|
|
|
|
static PrefList prefList[] =
|
|
{
|
|
{ 'flsc', &fullscreen, sizeof(bool8 ) },
|
|
{ 'reso', &autoRes, sizeof(bool8 ) },
|
|
{ 'dfps', &Settings.DisplayFrameRate, sizeof(bool8 ) },
|
|
{ 'tran', &Settings.Transparency, sizeof(bool8 ) },
|
|
{ 'gl32', &gl32bit, sizeof(bool8 ) },
|
|
{ 'glst', &glstretch, sizeof(bool8 ) },
|
|
{ 'draw', &drawingMethod, sizeof(long ) },
|
|
{ 'Vmod', &videoMode, sizeof(int ) },
|
|
{ 'VSNC', &vsync, sizeof(bool8 ) },
|
|
{ 'H239', &drawoverscan, sizeof(bool8 ) },
|
|
{ 'SCur', &screencurvature, sizeof(bool8 ) },
|
|
{ 'SCuW', &macCurvatureWarp, sizeof(int ) },
|
|
{ 'ASPe', &macAspectRatio, sizeof(int ) },
|
|
{ 'CIFl', &ciFilterEnable, sizeof(bool8 ) },
|
|
|
|
{ 'sSyn', &Settings.SoundSync, sizeof(bool8 ) },
|
|
{ 'srat', &Settings.SoundPlaybackRate, sizeof(uint32 ) },
|
|
{ 'InRt', &Settings.SoundInputRate, sizeof(uint32 ) },
|
|
{ 'MxIv', &macSoundInterval_ms, sizeof(uint32 ) },
|
|
{ 'SBuf', &macSoundBuffer_ms, sizeof(uint32 ) },
|
|
{ 'Volm', &macSoundVolume, sizeof(SInt32 ) },
|
|
{ 'AUef', &aueffect, sizeof(uint16 ) },
|
|
{ 'AUce', &cureffect, sizeof(int ) },
|
|
|
|
{ 'romf', &saveInROMFolder, sizeof(uint8 ) },
|
|
{ 'atsv', &Settings.AutoSaveDelay, sizeof(int32 ) },
|
|
{ 'RFlg', &macRecordFlag, sizeof(uint16 ) },
|
|
{ 'PFlg', &macPlayFlag, sizeof(uint16 ) },
|
|
{ 'QTfg', &macQTMovFlag, sizeof(uint16 ) },
|
|
|
|
{ 'HHck', &Settings.HDMATimingHack, sizeof(int32 ) },
|
|
{ 'TbRt', &macFastForwardRate, sizeof(int ) },
|
|
{ 'FSkp', &macFrameSkip, sizeof(int ) },
|
|
{ 'IvVR', &Settings.BlockInvalidVRAMAccessMaster, sizeof(bool8 ) },
|
|
{ 'GSHk', &Settings.DisableGameSpecificHacks, sizeof(bool8 ) },
|
|
|
|
{ 'StOp', &startopendlog, sizeof(bool8 ) },
|
|
{ 'STiF', &showtimeinfrz, sizeof(bool8 ) },
|
|
{ 'Togl', &enabletoggle, sizeof(bool8 ) },
|
|
{ 'SvWp', &savewindowpos, sizeof(bool8 ) },
|
|
{ 'OnSc', &onscreeninfo, sizeof(bool8 ) },
|
|
{ 'NIPS', &Settings.NoPatch, sizeof(bool8 ) },
|
|
{ 'BSX_', &Settings.BSXBootup, sizeof(bool8 ) },
|
|
{ 'MbxM', &musicboxmode, sizeof(int ) },
|
|
{ 'InAc', &inactiveMode, sizeof(int ) },
|
|
|
|
{ 'tab ', &lastTabIndex, sizeof(int ) },
|
|
{ 'Ftab', &autofireLastTabIndex, sizeof(int ) },
|
|
{ 'keyb', keyCodes, sizeof(keyCodes ) },
|
|
{ 'pset', &padSetting, sizeof(int ) },
|
|
{ 'dset', &deviceSetting, sizeof(int ) },
|
|
{ 'chea', &applycheat, sizeof(bool8 ) },
|
|
|
|
{ 'ARec', autofireRec, sizeof(autofireRec) },
|
|
{ 'wPos', windowPos, sizeof(windowPos ) },
|
|
{ 'wSiz', windowSize, sizeof(windowSize ) },
|
|
{ 'wExt', (void *) &windowExtend, sizeof(bool8 ) },
|
|
|
|
{ 'NPIP', npServerIP, sizeof(npServerIP ) },
|
|
{ 'NPNM', npName, sizeof(npName ) },
|
|
|
|
{ 'L239', &lastoverscan, sizeof(bool8 ) },
|
|
|
|
{ 'ExT1', &(extraOptions.benchmark), sizeof(bool8 ) },
|
|
{ 'ExT2', &(extraOptions.glForceNoTextureRectangle), sizeof(bool8 ) },
|
|
{ 'ExT3', &(extraOptions.glUseClientStrageApple), sizeof(bool8 ) },
|
|
{ 'ExT4', &(extraOptions.glUseTexturePriority), sizeof(bool8 ) },
|
|
{ 'ExT5', &(extraOptions.glStorageHint), sizeof(int ) }
|
|
};
|
|
|
|
#define kPrefListSize (sizeof(prefList) / sizeof(prefList[0]))
|
|
|
|
static void SelectTabPane (HIViewRef, SInt16);
|
|
static void InputRateSliderActionProc (HIViewRef, HIViewPartCode);
|
|
static void LittleArrowsActionProc (HIViewRef, HIViewPartCode);
|
|
static OSStatus InputRateTextEventHandler (EventHandlerCallRef, EventRef, void *);
|
|
static OSStatus AspectRatioTextEventHandler (EventHandlerCallRef, EventRef, void *);
|
|
static OSStatus TabEventHandler (EventHandlerCallRef, EventRef, void *);
|
|
static OSStatus PreferencesEventHandler (EventHandlerCallRef, EventRef, void *);
|
|
|
|
|
|
void SavePrefs (void)
|
|
{
|
|
// CFMutableStringRef mref;
|
|
// CFStringRef sref;
|
|
// CFDataRef data;
|
|
//
|
|
// for (unsigned int i = 0; i < kPrefListSize; i++)
|
|
// {
|
|
// mref = CFStringCreateMutableCopy(kCFAllocatorDefault, 0, CFSTR("Preferences_"));
|
|
// if (mref)
|
|
// {
|
|
// sref = CFStringCreateWithBytes(kCFAllocatorDefault, (UInt8 *) &(prefList[i].itemName), sizeof(OSType), kCFStringEncodingMacRoman, false);
|
|
// if (sref)
|
|
// {
|
|
// CFStringAppend(mref, sref);
|
|
//
|
|
// data = CFDataCreate(kCFAllocatorDefault, (UInt8 *) prefList[i].itemPointer, prefList[i].size);
|
|
// if (data)
|
|
// {
|
|
// CFPreferencesSetAppValue(mref, data, kCFPreferencesCurrentApplication);
|
|
// CFRelease(data);
|
|
// }
|
|
//
|
|
// CFRelease(sref);
|
|
// }
|
|
//
|
|
// CFRelease(mref);
|
|
// }
|
|
// }
|
|
//
|
|
// mref = CFStringCreateMutableCopy(kCFAllocatorDefault, 0, CFSTR("Preferences_SaveFolder"));
|
|
// if (mref)
|
|
// {
|
|
// if (saveFolderPath)
|
|
// {
|
|
// CFPreferencesSetAppValue(mref, saveFolderPath, kCFPreferencesCurrentApplication);
|
|
// CFRelease(saveFolderPath);
|
|
// }
|
|
// else
|
|
// CFPreferencesSetAppValue(mref, NULL, kCFPreferencesCurrentApplication);
|
|
//
|
|
// CFRelease(mref);
|
|
// }
|
|
//
|
|
// sref = (CFStringRef) CFDictionaryGetValue(CFBundleGetInfoDictionary(CFBundleGetMainBundle()), CFSTR("CFBundleShortVersionString"));
|
|
// if (sref)
|
|
// {
|
|
// CFPreferencesSetAppValue(CFSTR("LastVersionUsed"), sref, kCFPreferencesCurrentApplication);
|
|
// }
|
|
//
|
|
// CFPreferencesAppSynchronize(kCFPreferencesCurrentApplication);
|
|
}
|
|
|
|
void LoadPrefs (void)
|
|
{
|
|
// CFMutableStringRef mref;
|
|
// CFStringRef sref;
|
|
// CFDataRef data;
|
|
//
|
|
// for (unsigned int i = 0; i < kPrefListSize; i++)
|
|
// {
|
|
// mref = CFStringCreateMutableCopy(kCFAllocatorDefault, 0, CFSTR("Preferences_"));
|
|
// if (mref)
|
|
// {
|
|
// sref = CFStringCreateWithBytes(kCFAllocatorDefault, (UInt8 *) &(prefList[i].itemName), sizeof(OSType), kCFStringEncodingMacRoman, false);
|
|
// if (sref)
|
|
// {
|
|
// CFStringAppend(mref, sref);
|
|
//
|
|
// data = (CFDataRef) CFPreferencesCopyAppValue(mref, kCFPreferencesCurrentApplication);
|
|
// if (data)
|
|
// {
|
|
// if (CFDataGetLength(data) == prefList[i].size)
|
|
// CFDataGetBytes(data, CFRangeMake(0, prefList[i].size), (UInt8 *) prefList[i].itemPointer);
|
|
// CFRelease(data);
|
|
// }
|
|
//
|
|
// CFRelease(sref);
|
|
// }
|
|
//
|
|
// CFRelease(mref);
|
|
// }
|
|
// }
|
|
//
|
|
// mref = CFStringCreateMutableCopy(kCFAllocatorDefault, 0, CFSTR("Preferences_SaveFolder"));
|
|
// if (mref)
|
|
// {
|
|
// sref = (CFStringRef) CFPreferencesCopyAppValue(mref, kCFPreferencesCurrentApplication);
|
|
// if (sref)
|
|
// saveFolderPath = sref;
|
|
//
|
|
// CFRelease(mref);
|
|
// }
|
|
//
|
|
// sref = (CFStringRef) CFPreferencesCopyAppValue(CFSTR("LastVersionUsed"), kCFPreferencesCurrentApplication);
|
|
// if (!sref) {
|
|
// Settings.SoundInputRate = 31950;
|
|
// macSoundBuffer_ms = 80;
|
|
// }
|
|
// else CFRelease(sref);
|
|
}
|
|
|
|
void ConfigurePreferences (void)
|
|
{
|
|
// OSStatus err;
|
|
// IBNibRef nibRef;
|
|
//
|
|
// err = CreateNibReference(kMacS9XCFString, &nibRef);
|
|
// if (err == noErr)
|
|
// {
|
|
// WindowRef tWindowRef;
|
|
// SInt32 oldVolume;
|
|
// uint32 oldPlaybackRate, oldInputRate, oldInterval, oldBufferSize;
|
|
// bool8 oldSynchronize, old16BitPlayback, oldStereo, oldReverseStereo, oldLagEnable;
|
|
//
|
|
// oldSynchronize = Settings.SoundSync;
|
|
// old16BitPlayback = Settings.SixteenBitSound;
|
|
// oldStereo = Settings.Stereo;
|
|
// oldReverseStereo = Settings.ReverseStereo;
|
|
// oldPlaybackRate = Settings.SoundPlaybackRate;
|
|
// oldInputRate = Settings.SoundInputRate;
|
|
// oldInterval = macSoundInterval_ms;
|
|
// oldBufferSize = macSoundBuffer_ms;
|
|
// oldLagEnable = macSoundLagEnable;
|
|
// oldVolume = macSoundVolume;
|
|
//
|
|
// if (cartOpen)
|
|
// DeinitGameWindow();
|
|
//
|
|
// S9xGraphicsDeinit();
|
|
//
|
|
// err = CreateWindowFromNib(nibRef, CFSTR("Preferences"), &tWindowRef);
|
|
// if (err == noErr)
|
|
// {
|
|
// EventHandlerUPP tUPP, iUPP, aUPP, pUPP;
|
|
// EventHandlerRef tRef, iRef, aRef, pRef;
|
|
// EventTypeSpec tEvents[] = { { kEventClassControl, kEventControlHit } },
|
|
// iEvents[] = { { kEventClassControl, kEventControlClick } },
|
|
// aEvents[] = { { kEventClassControl, kEventControlClick } },
|
|
// pEvents[] = { { kEventClassWindow, kEventWindowClose },
|
|
// { kEventClassCommand, kEventCommandProcess },
|
|
// { kEventClassCommand, kEventCommandUpdateStatus } };
|
|
// ControlActionUPP arrowsUPP, sliderUPP;
|
|
// HIViewRef ctl, root;
|
|
// HIViewID cid;
|
|
// MenuRef menu;
|
|
// char num[16];
|
|
//
|
|
// root = HIViewGetRoot(tWindowRef);
|
|
//
|
|
// cid.signature = 'tabs';
|
|
// cid.id = 128;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// SetControl32BitValue(ctl, lastTabIndex);
|
|
// SelectTabPane(ctl, lastTabIndex);
|
|
// tUPP = NewEventHandlerUPP(TabEventHandler);
|
|
// err = InstallControlEventHandler(ctl, tUPP, GetEventTypeCount(tEvents), tEvents, 0, &tRef);
|
|
//
|
|
// cid.signature = 'snd_';
|
|
// cid.id = iNibSInputRateText;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// iUPP = NewEventHandlerUPP(InputRateTextEventHandler);
|
|
// err = InstallControlEventHandler(ctl, iUPP, GetEventTypeCount(iEvents), iEvents, 0, &iRef);
|
|
//
|
|
// cid.signature = 'grap';
|
|
// cid.id = iNibGAspectRatioText;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// aUPP = NewEventHandlerUPP(AspectRatioTextEventHandler);
|
|
// err = InstallControlEventHandler(ctl, aUPP, GetEventTypeCount(aEvents), aEvents, 0, &aRef);
|
|
//
|
|
// pUPP = NewEventHandlerUPP(PreferencesEventHandler);
|
|
// err = InstallWindowEventHandler(tWindowRef, pUPP, GetEventTypeCount(pEvents), pEvents, (void *) tWindowRef, &pRef);
|
|
//
|
|
// sliderUPP = NewControlActionUPP(InputRateSliderActionProc);
|
|
// arrowsUPP = NewControlActionUPP(LittleArrowsActionProc);
|
|
//
|
|
// cid.signature = 'grap';
|
|
//
|
|
// cid.id = iNibGFullScreen;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// SetControl32BitValue(ctl, fullscreen);
|
|
//
|
|
// cid.id = iNibGSwitchResolution;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// SetControl32BitValue(ctl, autoRes);
|
|
//
|
|
// cid.id = iNibGShowFrameRate;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// SetControl32BitValue(ctl, Settings.DisplayFrameRate);
|
|
//
|
|
// cid.id = iNibGTransparency;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// SetControl32BitValue(ctl, Settings.Transparency);
|
|
//
|
|
// cid.id = iNibGGL32bit;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// SetControl32BitValue(ctl, gl32bit);
|
|
//
|
|
// cid.id = iNibGGLStretch;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// SetControl32BitValue(ctl, glstretch);
|
|
//
|
|
// cid.id = iNibGVideoMode;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// switch (videoMode)
|
|
// {
|
|
// case VIDEOMODE_BLOCKY:
|
|
// SetControl32BitValue(ctl, iOpenGLBlocky);
|
|
// break;
|
|
//
|
|
// case VIDEOMODE_TV:
|
|
// SetControl32BitValue(ctl, iOpenGLTVMode);
|
|
// break;
|
|
//
|
|
// case VIDEOMODE_SMOOTH:
|
|
// SetControl32BitValue(ctl, iOpenGLSmoothMode);
|
|
// break;
|
|
//
|
|
// case VIDEOMODE_BLEND:
|
|
// SetControl32BitValue(ctl, iOpenGLBlendMode);
|
|
// break;
|
|
//
|
|
// case VIDEOMODE_SUPEREAGLE:
|
|
// SetControl32BitValue(ctl, iOpenGLEagleMode);
|
|
// break;
|
|
//
|
|
// case VIDEOMODE_2XSAI:
|
|
// SetControl32BitValue(ctl, iOpenGL2xSAIMode);
|
|
// break;
|
|
//
|
|
// case VIDEOMODE_SUPER2XSAI:
|
|
// SetControl32BitValue(ctl, iOpenGLSuper2xSAIMode);
|
|
// break;
|
|
//
|
|
// case VIDEOMODE_EPX:
|
|
// SetControl32BitValue(ctl, iOpenGLEPXMode);
|
|
// break;
|
|
//
|
|
// case VIDEOMODE_HQ2X:
|
|
// SetControl32BitValue(ctl, iOpenGLHQ2xMode);
|
|
// break;
|
|
//
|
|
// case VIDEOMODE_HQ3X:
|
|
// SetControl32BitValue(ctl, iOpenGLHQ3xMode);
|
|
// break;
|
|
//
|
|
// case VIDEOMODE_HQ4X:
|
|
// SetControl32BitValue(ctl, iOpenGLHQ4xMode);
|
|
// break;
|
|
//
|
|
// case VIDEOMODE_NTSC_C:
|
|
// SetControl32BitValue(ctl, iOpenGLNTSC_CMode);
|
|
// break;
|
|
//
|
|
// case VIDEOMODE_NTSC_S:
|
|
// SetControl32BitValue(ctl, iOpenGLNTSC_SMode);
|
|
// break;
|
|
//
|
|
// case VIDEOMODE_NTSC_R:
|
|
// SetControl32BitValue(ctl, iOpenGLNTSC_RMode);
|
|
// break;
|
|
//
|
|
// case VIDEOMODE_NTSC_M:
|
|
// SetControl32BitValue(ctl, iOpenGLNTSC_MMode);
|
|
// break;
|
|
//
|
|
// case VIDEOMODE_NTSC_TV_C:
|
|
// SetControl32BitValue(ctl, iOpenGLNTSC_TV_CMode);
|
|
// break;
|
|
//
|
|
// case VIDEOMODE_NTSC_TV_S:
|
|
// SetControl32BitValue(ctl, iOpenGLNTSC_TV_SMode);
|
|
// break;
|
|
//
|
|
// case VIDEOMODE_NTSC_TV_R:
|
|
// SetControl32BitValue(ctl, iOpenGLNTSC_TV_RMode);
|
|
// break;
|
|
//
|
|
// case VIDEOMODE_NTSC_TV_M:
|
|
// SetControl32BitValue(ctl, iOpenGLNTSC_TV_MMode);
|
|
// break;
|
|
// }
|
|
//
|
|
// cid.id = iNibGDirectMP;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// SetControl32BitValue(ctl, multiprocessor);
|
|
//
|
|
// cid.id = iNibGGLVSync;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// SetControl32BitValue(ctl, vsync);
|
|
//
|
|
// cid.id = iNibGDrawOverscan;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// SetControl32BitValue(ctl, drawoverscan);
|
|
//
|
|
// cid.id = iNibGScreenCurvature;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// SetControl32BitValue(ctl, screencurvature);
|
|
//
|
|
// cid.id = iNibGCurvatureWarp;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// SetControl32BitValue(ctl, macCurvatureWarp);
|
|
// if (!screencurvature)
|
|
// DeactivateControl(ctl);
|
|
//
|
|
// cid.id = iNibGAspectRatio;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// SetControl32BitValue(ctl, macAspectRatio);
|
|
// if (!glstretch)
|
|
// DeactivateControl(ctl);
|
|
//
|
|
// cid.id = iNibGCIFilterEnable;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// SetControl32BitValue(ctl, ciFilterEnable);
|
|
// if (systemVersion < 0x1040)
|
|
// DisableControl(ctl);
|
|
//
|
|
// if (systemVersion < 0x1040)
|
|
// {
|
|
// cid.id = iNibGCoreImageFilter;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// DisableControl(ctl);
|
|
// }
|
|
//
|
|
// cid.signature = 'snd_';
|
|
//
|
|
// cid.id = iNibSSynchronize;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// SetControl32BitValue(ctl, Settings.SoundSync);
|
|
//
|
|
// cid.id = iNibS16BitPlayback;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// SetControl32BitValue(ctl, Settings.SixteenBitSound);
|
|
// DeactivateControl(ctl);
|
|
//
|
|
// cid.id = iNibSStereo;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// SetControl32BitValue(ctl, Settings.Stereo);
|
|
// DeactivateControl(ctl);
|
|
//
|
|
// cid.id = iNibSReverseStereo;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// SetControl32BitValue(ctl, Settings.ReverseStereo);
|
|
// DeactivateControl(ctl);
|
|
//
|
|
// cid.id = iNibSPlaybackRate;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// switch (Settings.SoundPlaybackRate)
|
|
// {
|
|
// case 48000:
|
|
// SetControl32BitValue(ctl, 1);
|
|
// break;
|
|
//
|
|
// case 44100:
|
|
// SetControl32BitValue(ctl, 2);
|
|
// break;
|
|
//
|
|
// case 35000:
|
|
// SetControl32BitValue(ctl, 3);
|
|
// break;
|
|
//
|
|
// case 32000:
|
|
// SetControl32BitValue(ctl, 4);
|
|
// break;
|
|
//
|
|
// case 30000:
|
|
// SetControl32BitValue(ctl, 5);
|
|
// break;
|
|
//
|
|
// case 22050:
|
|
// SetControl32BitValue(ctl, 6);
|
|
// break;
|
|
//
|
|
// case 16000:
|
|
// SetControl32BitValue(ctl, 7);
|
|
// break;
|
|
//
|
|
// case 11025:
|
|
// SetControl32BitValue(ctl, 8);
|
|
// break;
|
|
//
|
|
// case 8000:
|
|
// SetControl32BitValue(ctl, 9);
|
|
// break;
|
|
// }
|
|
//
|
|
// cid.id = iNibSInputRate;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// SetControl32BitValue(ctl, Settings.SoundInputRate);
|
|
// SetControlAction(ctl, sliderUPP);
|
|
//
|
|
// cid.id = iNibSInputRateText;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// sprintf(num, "%d", Settings.SoundInputRate);
|
|
// SetStaticTextCStr(ctl, num, false);
|
|
//
|
|
// cid.id = iNibSInterval;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// switch (macSoundInterval_ms)
|
|
// {
|
|
// case 8:
|
|
// SetControl32BitValue(ctl, 1);
|
|
// break;
|
|
//
|
|
// case 16:
|
|
// SetControl32BitValue(ctl, 2);
|
|
// break;
|
|
//
|
|
// case 32:
|
|
// SetControl32BitValue(ctl, 3);
|
|
// break;
|
|
//
|
|
// case 64:
|
|
// SetControl32BitValue(ctl, 4);
|
|
// break;
|
|
//
|
|
// case 0:
|
|
// default:
|
|
// SetControl32BitValue(ctl, 6);
|
|
// break;
|
|
// }
|
|
//
|
|
// cid.id = iNibSBufferSize;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// SetControl32BitValue(ctl, macSoundBuffer_ms / 20);
|
|
//
|
|
// cid.id = iNibSAllowLag;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// SetControl32BitValue(ctl, macSoundLagEnable);
|
|
// DeactivateControl(ctl);
|
|
//
|
|
// cid.id = iNibSVolume;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// SetControl32BitValue(ctl, macSoundVolume);
|
|
//
|
|
// cid.signature = 'othe';
|
|
//
|
|
// cid.id = iNibOSaveFolder;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// SetControl32BitValue(ctl, saveInROMFolder + 1);
|
|
// err = GetControlData(ctl, kControlMenuPart, kControlPopupButtonMenuRefTag, sizeof(MenuRef), &menu, NULL);
|
|
// if (saveFolderPath)
|
|
// {
|
|
// CFURLRef url;
|
|
// CFStringRef ref;
|
|
//
|
|
// url = CFURLCreateWithFileSystemPath(kCFAllocatorDefault, saveFolderPath, kCFURLPOSIXPathStyle, true);
|
|
// ref = CFURLCopyLastPathComponent(url);
|
|
// err = SetMenuItemTextWithCFString(menu, iNibSaveFolderNameMenuItem, ref);
|
|
// CFRelease(ref);
|
|
// CFRelease(url);
|
|
// EnableMenuItem(menu, iNibSaveFolderNameMenuItem);
|
|
// }
|
|
// else
|
|
// {
|
|
// CFStringRef ref;
|
|
//
|
|
// ref = CFCopyLocalizedString(CFSTR("NoneSelected"), "NoneSelected");
|
|
// err = SetMenuItemTextWithCFString(menu, iNibSaveFolderNameMenuItem, ref);
|
|
// CFRelease(ref);
|
|
// DisableMenuItem(menu, iNibSaveFolderNameMenuItem);
|
|
// }
|
|
//
|
|
// cid.id = iNibOAutoSaveInterval;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// sprintf(num, "%d", Settings.AutoSaveDelay);
|
|
// SetEditTextCStr(ctl, num, false);
|
|
//
|
|
// cid.signature = 'msc2';
|
|
//
|
|
// cid.id = iNibMCPUCycles;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// sprintf(num, "%" PRIi32, Settings.HDMATimingHack);
|
|
// SetEditTextCStr(ctl, num, false);
|
|
//
|
|
// cid.id = iNibMTurboSkipArrows;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// SetControl32BitValue(ctl, macFastForwardRate);
|
|
// SetControlAction(ctl, arrowsUPP);
|
|
//
|
|
// cid.id = iNibMTurboSkipText;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// sprintf(num, "%d", macFastForwardRate);
|
|
// SetStaticTextCStr(ctl, num, false);
|
|
//
|
|
// cid.id = iNibMFrameSkip;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// SetControl32BitValue(ctl, macFrameSkip + 2);
|
|
//
|
|
// cid.id = iNibMAllowInvalidVRAMAccess;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// SetControl32BitValue(ctl, !Settings.BlockInvalidVRAMAccessMaster);
|
|
//
|
|
// cid.id = iNibMAllowSpecificGameHacks;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// SetControl32BitValue(ctl, !Settings.DisableGameSpecificHacks);
|
|
//
|
|
// cid.signature = 'osx_';
|
|
//
|
|
// cid.id = iNibXStartOpenDialog;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// SetControl32BitValue(ctl, startopendlog);
|
|
//
|
|
// cid.id = iNibXShowTimeInFrz;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// SetControl32BitValue(ctl, showtimeinfrz);
|
|
//
|
|
// cid.id = iNibXMusicBoxMode;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// SetControl32BitValue(ctl, musicboxmode);
|
|
//
|
|
// cid.id = iNibXEnableToggle;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// SetControl32BitValue(ctl, enabletoggle);
|
|
//
|
|
// cid.id = iNibXSaveWindowPos;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// SetControl32BitValue(ctl, savewindowpos);
|
|
//
|
|
// cid.id = iNibXUseIPSPatch;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// SetControl32BitValue(ctl, !Settings.NoPatch);
|
|
//
|
|
// cid.id = iNibXOnScreenInfo;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// SetControl32BitValue(ctl, onscreeninfo);
|
|
//
|
|
// cid.id = iNibXInactiveMode;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// SetControl32BitValue(ctl, inactiveMode);
|
|
//
|
|
// cid.id = iNibXBSXBootup;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// SetControl32BitValue(ctl, Settings.BSXBootup);
|
|
//
|
|
// MoveWindowPosition(tWindowRef, kWindowPreferences, false);
|
|
// ShowWindow(tWindowRef);
|
|
// err = RunAppModalLoopForWindow(tWindowRef);
|
|
// HideWindow(tWindowRef);
|
|
// SaveWindowPosition(tWindowRef, kWindowPreferences);
|
|
//
|
|
// cid.signature = 'grap';
|
|
//
|
|
// cid.id = iNibGFullScreen;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// fullscreen = GetControl32BitValue(ctl) ? true : false;
|
|
//
|
|
// cid.id = iNibGSwitchResolution;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// autoRes = GetControl32BitValue(ctl) ? true : false;
|
|
//
|
|
// cid.id = iNibGShowFrameRate;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// Settings.DisplayFrameRate = GetControl32BitValue(ctl) ? true : false;
|
|
//
|
|
// cid.id = iNibGTransparency;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// Settings.Transparency = GetControl32BitValue(ctl) ? true : false;
|
|
//
|
|
// cid.id = iNibGGL32bit;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// gl32bit = GetControl32BitValue(ctl) ? true : false;
|
|
//
|
|
// cid.id = iNibGGLStretch;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// glstretch = GetControl32BitValue(ctl) ? true : false;
|
|
//
|
|
// cid.id = iNibGVideoMode;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// switch (GetControl32BitValue(ctl))
|
|
// {
|
|
// case iOpenGLBlocky:
|
|
// drawingMethod = kDrawingOpenGL;
|
|
// videoMode = VIDEOMODE_BLOCKY;
|
|
// break;
|
|
//
|
|
// case iOpenGLTVMode:
|
|
// drawingMethod = kDrawingBlitGL;
|
|
// videoMode = VIDEOMODE_TV;
|
|
// break;
|
|
//
|
|
// case iOpenGLSmoothMode:
|
|
// drawingMethod = kDrawingOpenGL;
|
|
// videoMode = VIDEOMODE_SMOOTH;
|
|
// break;
|
|
//
|
|
// case iOpenGLBlendMode:
|
|
// drawingMethod = kDrawingBlitGL;
|
|
// videoMode = VIDEOMODE_BLEND;
|
|
// break;
|
|
//
|
|
// case iOpenGLEagleMode:
|
|
// drawingMethod = kDrawingBlitGL;
|
|
// videoMode = VIDEOMODE_SUPEREAGLE;
|
|
// break;
|
|
//
|
|
// case iOpenGL2xSAIMode:
|
|
// drawingMethod = kDrawingBlitGL;
|
|
// videoMode = VIDEOMODE_2XSAI;
|
|
// break;
|
|
//
|
|
// case iOpenGLSuper2xSAIMode:
|
|
// drawingMethod = kDrawingBlitGL;
|
|
// videoMode = VIDEOMODE_SUPER2XSAI;
|
|
// break;
|
|
//
|
|
// case iOpenGLEPXMode:
|
|
// drawingMethod = kDrawingBlitGL;
|
|
// videoMode = VIDEOMODE_EPX;
|
|
// break;
|
|
//
|
|
// case iOpenGLHQ2xMode:
|
|
// drawingMethod = kDrawingBlitGL;
|
|
// videoMode = VIDEOMODE_HQ2X;
|
|
// break;
|
|
//
|
|
// case iOpenGLHQ3xMode:
|
|
// drawingMethod = kDrawingBlitGL;
|
|
// videoMode = VIDEOMODE_HQ3X;
|
|
// break;
|
|
//
|
|
// case iOpenGLHQ4xMode:
|
|
// drawingMethod = kDrawingBlitGL;
|
|
// videoMode = VIDEOMODE_HQ4X;
|
|
// break;
|
|
//
|
|
// case iOpenGLNTSC_CMode:
|
|
// drawingMethod = kDrawingBlitGL;
|
|
// videoMode = VIDEOMODE_NTSC_C;
|
|
// S9xBlitNTSCFilterSet(&snes_ntsc_composite);
|
|
// break;
|
|
//
|
|
// case iOpenGLNTSC_SMode:
|
|
// drawingMethod = kDrawingBlitGL;
|
|
// videoMode = VIDEOMODE_NTSC_S;
|
|
// S9xBlitNTSCFilterSet(&snes_ntsc_svideo);
|
|
// break;
|
|
//
|
|
// case iOpenGLNTSC_RMode:
|
|
// drawingMethod = kDrawingBlitGL;
|
|
// videoMode = VIDEOMODE_NTSC_R;
|
|
// S9xBlitNTSCFilterSet(&snes_ntsc_rgb);
|
|
// break;
|
|
//
|
|
// case iOpenGLNTSC_MMode:
|
|
// drawingMethod = kDrawingBlitGL;
|
|
// videoMode = VIDEOMODE_NTSC_M;
|
|
// S9xBlitNTSCFilterSet(&snes_ntsc_monochrome);
|
|
// break;
|
|
//
|
|
// case iOpenGLNTSC_TV_CMode:
|
|
// drawingMethod = kDrawingBlitGL;
|
|
// videoMode = VIDEOMODE_NTSC_TV_C;
|
|
// S9xBlitNTSCFilterSet(&snes_ntsc_composite);
|
|
// break;
|
|
//
|
|
// case iOpenGLNTSC_TV_SMode:
|
|
// drawingMethod = kDrawingBlitGL;
|
|
// videoMode = VIDEOMODE_NTSC_TV_S;
|
|
// S9xBlitNTSCFilterSet(&snes_ntsc_svideo);
|
|
// break;
|
|
//
|
|
// case iOpenGLNTSC_TV_RMode:
|
|
// drawingMethod = kDrawingBlitGL;
|
|
// videoMode = VIDEOMODE_NTSC_TV_R;
|
|
// S9xBlitNTSCFilterSet(&snes_ntsc_rgb);
|
|
// break;
|
|
//
|
|
// case iOpenGLNTSC_TV_MMode:
|
|
// drawingMethod = kDrawingBlitGL;
|
|
// videoMode = VIDEOMODE_NTSC_TV_M;
|
|
// S9xBlitNTSCFilterSet(&snes_ntsc_monochrome);
|
|
// break;
|
|
// }
|
|
//
|
|
// cid.id = iNibGDirectMP;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// multiprocessor = GetControl32BitValue(ctl) ? true : false;
|
|
//
|
|
// cid.id = iNibGGLVSync;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// vsync = GetControl32BitValue(ctl) ? true : false;
|
|
//
|
|
// cid.id = iNibGDrawOverscan;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// drawoverscan = GetControl32BitValue(ctl) ? true : false;
|
|
//
|
|
// cid.id = iNibGScreenCurvature;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// screencurvature = GetControl32BitValue(ctl) ? true : false;
|
|
//
|
|
// cid.id = iNibGCurvatureWarp;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// macCurvatureWarp = GetControl32BitValue(ctl);
|
|
//
|
|
// cid.id = iNibGAspectRatio;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// macAspectRatio = GetControl32BitValue(ctl);
|
|
//
|
|
// cid.id = iNibGCIFilterEnable;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// ciFilterEnable = GetControl32BitValue(ctl) ? true : false;
|
|
//
|
|
// cid.signature = 'snd_';
|
|
//
|
|
// cid.id = iNibSSynchronize;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// Settings.SoundSync = GetControl32BitValue(ctl) ? true : false;
|
|
//
|
|
// cid.id = iNibS16BitPlayback;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// Settings.SixteenBitSound = GetControl32BitValue(ctl) ? true : false;
|
|
//
|
|
// cid.id = iNibSStereo;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// Settings.Stereo = GetControl32BitValue(ctl) ? true : false;
|
|
//
|
|
// cid.id = iNibSReverseStereo;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// Settings.ReverseStereo = GetControl32BitValue(ctl) ? true : false;
|
|
//
|
|
// cid.id = iNibSPlaybackRate;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// switch (GetControl32BitValue(ctl))
|
|
// {
|
|
// case 1:
|
|
// Settings.SoundPlaybackRate = 48000;
|
|
// break;
|
|
//
|
|
// case 2:
|
|
// Settings.SoundPlaybackRate = 44100;
|
|
// break;
|
|
//
|
|
// case 3:
|
|
// Settings.SoundPlaybackRate = 35000;
|
|
// break;
|
|
//
|
|
// case 4:
|
|
// Settings.SoundPlaybackRate = 32000;
|
|
// break;
|
|
//
|
|
// case 5:
|
|
// Settings.SoundPlaybackRate = 30000;
|
|
// break;
|
|
//
|
|
// case 6:
|
|
// Settings.SoundPlaybackRate = 22050;
|
|
// break;
|
|
//
|
|
// case 7:
|
|
// Settings.SoundPlaybackRate = 16000;
|
|
// break;
|
|
//
|
|
// case 8:
|
|
// Settings.SoundPlaybackRate = 11025;
|
|
// break;
|
|
//
|
|
// case 9:
|
|
// Settings.SoundPlaybackRate = 8000;
|
|
// break;
|
|
// }
|
|
//
|
|
// cid.id = iNibSInputRate;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// Settings.SoundInputRate = GetControl32BitValue(ctl);
|
|
//
|
|
// cid.id = iNibSInterval;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// switch (GetControl32BitValue(ctl))
|
|
// {
|
|
// case 1:
|
|
// macSoundInterval_ms = 8;
|
|
// break;
|
|
//
|
|
// case 2:
|
|
// macSoundInterval_ms = 16;
|
|
// break;
|
|
//
|
|
// case 3:
|
|
// macSoundInterval_ms = 32;
|
|
// break;
|
|
//
|
|
// case 4:
|
|
// macSoundInterval_ms = 64;
|
|
// break;
|
|
//
|
|
// case 6:
|
|
// default:
|
|
// macSoundInterval_ms = 0;
|
|
// break;
|
|
// }
|
|
//
|
|
// cid.id = iNibSBufferSize;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// macSoundBuffer_ms = GetControl32BitValue(ctl) * 20;
|
|
//
|
|
// cid.id = iNibSAllowLag;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// macSoundLagEnable = GetControl32BitValue(ctl);
|
|
//
|
|
// cid.id = iNibSVolume;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// macSoundVolume = GetControl32BitValue(ctl);
|
|
//
|
|
// cid.signature = 'othe';
|
|
//
|
|
// cid.id = iNibOSaveFolder;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// saveInROMFolder = GetControl32BitValue(ctl) - 1;
|
|
//
|
|
// cid.id = iNibOAutoSaveInterval;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// GetEditTextCStr(ctl, num);
|
|
// Settings.AutoSaveDelay = atoi(num);
|
|
//
|
|
// cid.signature = 'msc2';
|
|
//
|
|
// cid.id = iNibMCPUCycles;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// GetEditTextCStr(ctl, num);
|
|
// Settings.HDMATimingHack = atoi(num);
|
|
// if ((Settings.HDMATimingHack <= 0) || (Settings.HDMATimingHack >= 200))
|
|
// Settings.HDMATimingHack = 100;
|
|
//
|
|
// cid.id = iNibMTurboSkipArrows;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// macFastForwardRate = GetControl32BitValue(ctl);
|
|
//
|
|
// cid.id = iNibMFrameSkip;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// macFrameSkip = GetControl32BitValue(ctl) - 2;
|
|
//
|
|
// cid.id = iNibMAllowInvalidVRAMAccess;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// Settings.BlockInvalidVRAMAccessMaster = GetControl32BitValue(ctl) ? false : true;
|
|
//
|
|
// cid.id = iNibMAllowSpecificGameHacks;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// Settings.DisableGameSpecificHacks = GetControl32BitValue(ctl) ? false : true;
|
|
//
|
|
// cid.signature = 'osx_';
|
|
//
|
|
// cid.id = iNibXStartOpenDialog;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// startopendlog = GetControl32BitValue(ctl) ? true : false;
|
|
//
|
|
// cid.id = iNibXShowTimeInFrz;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// showtimeinfrz = GetControl32BitValue(ctl) ? true : false;
|
|
//
|
|
// cid.id = iNibXMusicBoxMode;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// musicboxmode = GetControl32BitValue(ctl);
|
|
//
|
|
// cid.id = iNibXEnableToggle;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// enabletoggle = GetControl32BitValue(ctl) ? true : false;
|
|
//
|
|
// cid.id = iNibXSaveWindowPos;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// savewindowpos = GetControl32BitValue(ctl) ? true : false;
|
|
//
|
|
// cid.id = iNibXUseIPSPatch;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// Settings.NoPatch = GetControl32BitValue(ctl) ? false : true;
|
|
//
|
|
// cid.id = iNibXOnScreenInfo;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// onscreeninfo = GetControl32BitValue(ctl) ? true : false;
|
|
//
|
|
// cid.id = iNibXInactiveMode;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// inactiveMode = GetControl32BitValue(ctl);
|
|
//
|
|
// cid.id = iNibXBSXBootup;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// Settings.BSXBootup = GetControl32BitValue(ctl) ? true : false;
|
|
//
|
|
// DisposeControlActionUPP(arrowsUPP);
|
|
// DisposeControlActionUPP(sliderUPP);
|
|
//
|
|
// err = RemoveEventHandler(pRef);
|
|
// DisposeEventHandlerUPP(pUPP);
|
|
//
|
|
// err = RemoveEventHandler(aRef);
|
|
// DisposeEventHandlerUPP(aUPP);
|
|
//
|
|
// err = RemoveEventHandler(iRef);
|
|
// DisposeEventHandlerUPP(iUPP);
|
|
//
|
|
// err = RemoveEventHandler(tRef);
|
|
// DisposeEventHandlerUPP(tUPP);
|
|
//
|
|
// CFRelease(tWindowRef);
|
|
// }
|
|
//
|
|
// DisposeNibReference(nibRef);
|
|
//
|
|
// S9xGraphicsInit();
|
|
//
|
|
// if (((oldSynchronize != Settings.SoundSync ) ||
|
|
// (old16BitPlayback != Settings.SixteenBitSound ) ||
|
|
// (oldStereo != Settings.Stereo ) ||
|
|
// (oldReverseStereo != Settings.ReverseStereo ) ||
|
|
// (oldPlaybackRate != Settings.SoundPlaybackRate) ||
|
|
// (oldInputRate != Settings.SoundInputRate ) ||
|
|
// (oldInterval != macSoundInterval_ms ) ||
|
|
// (oldBufferSize != macSoundBuffer_ms ) ||
|
|
// (oldLagEnable != macSoundLagEnable ) ||
|
|
// (oldVolume != macSoundVolume )) && cartOpen)
|
|
// SNES9X_InitSound();
|
|
//
|
|
// if (!fullscreen && cartOpen)
|
|
// {
|
|
// InitGameWindow();
|
|
// ShowWindow(gWindow);
|
|
// }
|
|
//
|
|
// if (cartOpen)
|
|
// {
|
|
// FSRef ref;
|
|
//
|
|
// err = FSPathMakeRef((unsigned char *) Memory.ROMFilename, &ref, NULL);
|
|
// if (err == noErr)
|
|
// CheckSaveFolder(&ref);
|
|
// }
|
|
// }
|
|
}
|
|
|
|
static void SelectTabPane (HIViewRef tabControl, SInt16 index)
|
|
{
|
|
// HIViewRef sup, userPane, selectedPane = NULL;
|
|
// HIViewID cid;
|
|
//
|
|
// lastTabIndex = index;
|
|
//
|
|
// sup = HIViewGetSuperview(tabControl);
|
|
// cid.signature = 'tabs';
|
|
//
|
|
// for (int i = 1; i < tabList[0] + 1; i++)
|
|
// {
|
|
// cid.id = tabList[i];
|
|
// HIViewFindByID(sup, cid, &userPane);
|
|
//
|
|
// if (i == index)
|
|
// selectedPane = userPane;
|
|
// else
|
|
// HIViewSetVisible(userPane, false);
|
|
// }
|
|
//
|
|
// if (selectedPane != NULL)
|
|
// HIViewSetVisible(selectedPane, true);
|
|
//
|
|
// HIViewSetNeedsDisplay(tabControl, true);
|
|
}
|
|
|
|
static void InputRateSliderActionProc (HIViewRef slider, HIViewPartCode partCode)
|
|
{
|
|
// HIViewRef ctl;
|
|
// HIViewID cid;
|
|
// char num[10];
|
|
//
|
|
// cid.signature = 'snd_';
|
|
// cid.id = iNibSInputRateText;
|
|
// HIViewFindByID(HIViewGetSuperview(slider), cid, &ctl);
|
|
//
|
|
// sprintf(num, "%ld", GetControl32BitValue(slider));
|
|
// SetStaticTextCStr(ctl, num, true);
|
|
}
|
|
|
|
static void LittleArrowsActionProc (HIViewRef arrows, HIViewPartCode partCode)
|
|
{
|
|
// HIViewRef ctl;
|
|
// HIViewID cid = { 'msc2', iNibMTurboSkipText };
|
|
// char num[8];
|
|
//
|
|
// if (partCode == kControlUpButtonPart)
|
|
// SetControl32BitValue(arrows, GetControl32BitValue(arrows) + 1);
|
|
// else
|
|
// if (partCode == kControlDownButtonPart)
|
|
// SetControl32BitValue(arrows, GetControl32BitValue(arrows) - 1);
|
|
//
|
|
// HIViewFindByID(HIViewGetSuperview(arrows), cid, &ctl);
|
|
// sprintf(num, "%ld", GetControl32BitValue(arrows));
|
|
// SetStaticTextCStr(ctl, num, true);
|
|
}
|
|
|
|
static OSStatus InputRateTextEventHandler (EventHandlerCallRef inHandlerRef, EventRef inEvent, void *inUserData)
|
|
{
|
|
// OSStatus err, result = eventNotHandledErr;
|
|
// HIViewRef ctl, slider;
|
|
// HIViewID cid;
|
|
// SInt32 value;
|
|
// char num[10];
|
|
//
|
|
// err = GetEventParameter(inEvent, kEventParamDirectObject, typeControlRef, NULL, sizeof(ControlRef), NULL, &ctl);
|
|
// if (err == noErr)
|
|
// {
|
|
// cid.signature = 'snd_';
|
|
// cid.id = iNibSInputRate;
|
|
// HIViewFindByID(HIViewGetSuperview(ctl), cid, &slider);
|
|
// value = GetControl32BitValue(slider);
|
|
//
|
|
// value /= 50;
|
|
// value *= 50;
|
|
// if (value > 33000)
|
|
// value = 33000;
|
|
// if (value < 31000)
|
|
// value = 31000;
|
|
//
|
|
// SetControl32BitValue(slider, value);
|
|
// sprintf(num, "%ld", value);
|
|
// SetEditTextCStr(ctl, num, true);
|
|
//
|
|
// result = noErr;
|
|
// }
|
|
//
|
|
// return (result);
|
|
|
|
return 0;
|
|
}
|
|
|
|
static OSStatus AspectRatioTextEventHandler (EventHandlerCallRef inHandlerRef, EventRef inEvent, void *inUserData)
|
|
{
|
|
// OSStatus err, result = eventNotHandledErr;
|
|
// HIViewRef ctl, slider;
|
|
// HIViewID cid;
|
|
// float w, h, v;
|
|
// int iw, ih;
|
|
//
|
|
// err = GetEventParameter(inEvent, kEventParamDirectObject, typeControlRef, NULL, sizeof(ControlRef), NULL, &ctl);
|
|
// if (err == noErr)
|
|
// {
|
|
// cid.signature = 'grap';
|
|
// cid.id = iNibGAspectRatio;
|
|
// HIViewFindByID(HIViewGetSuperview(ctl), cid, &slider);
|
|
//
|
|
// GetGameDisplay(&iw, &ih);
|
|
// w = (float) iw;
|
|
// h = (float) ih;
|
|
//
|
|
// v = (float) SNES_WIDTH / (float) SNES_HEIGHT * h;
|
|
// macAspectRatio = (int) (((4.0f / 3.0f) * h - v) / (w - v) * 10000.0f);
|
|
//
|
|
// SetControl32BitValue(slider, macAspectRatio);
|
|
//
|
|
// result = noErr;
|
|
// }
|
|
//
|
|
// return (result);
|
|
|
|
return 0;
|
|
}
|
|
|
|
static OSStatus TabEventHandler (EventHandlerCallRef inHandlerRef, EventRef inEvent, void *inUserData)
|
|
{
|
|
// OSStatus err, result = eventNotHandledErr;
|
|
// HIViewRef ctl;
|
|
// HIViewID cid;
|
|
// SInt32 value;
|
|
//
|
|
// err = GetEventParameter(inEvent, kEventParamDirectObject, typeControlRef, NULL, sizeof(ControlRef), NULL, &ctl);
|
|
// if (err == noErr)
|
|
// {
|
|
// GetControlID(ctl, &cid);
|
|
// value = GetControl32BitValue(ctl);
|
|
//
|
|
// if ((cid.id == 128) && (value != lastTabIndex))
|
|
// {
|
|
// SelectTabPane(ctl, value);
|
|
// result = noErr;
|
|
// }
|
|
// }
|
|
//
|
|
// return (result);
|
|
|
|
return 0;
|
|
}
|
|
|
|
static OSStatus PreferencesEventHandler (EventHandlerCallRef inHandlerRef, EventRef inEvent, void *inUserData)
|
|
{
|
|
// OSStatus err, result = eventNotHandledErr;
|
|
// WindowRef tWindowRef = (WindowRef) inUserData;
|
|
//
|
|
// switch (GetEventClass(inEvent))
|
|
// {
|
|
// case kEventClassWindow:
|
|
// {
|
|
// switch (GetEventKind(inEvent))
|
|
// {
|
|
// case kEventWindowClose:
|
|
// {
|
|
// QuitAppModalLoopForWindow(tWindowRef);
|
|
// result = noErr;
|
|
// break;
|
|
// }
|
|
// }
|
|
//
|
|
// break;
|
|
// }
|
|
//
|
|
// case kEventClassCommand:
|
|
// {
|
|
// switch (GetEventKind(inEvent))
|
|
// {
|
|
// HICommand tHICommand;
|
|
//
|
|
// case kEventCommandUpdateStatus:
|
|
// {
|
|
// err = GetEventParameter(inEvent, kEventParamDirectObject, typeHICommand, NULL, sizeof(HICommand), NULL, &tHICommand);
|
|
// if (err == noErr && tHICommand.commandID == 'clos')
|
|
// {
|
|
// UpdateMenuCommandStatus(true);
|
|
// result = noErr;
|
|
// }
|
|
//
|
|
// break;
|
|
// }
|
|
//
|
|
// case kEventCommandProcess:
|
|
// {
|
|
// HIViewRef ctl, root;
|
|
// HIViewID cid;
|
|
// SInt32 value;
|
|
// FSRef ref;
|
|
// bool8 r;
|
|
//
|
|
// root = HIViewGetRoot(tWindowRef);
|
|
//
|
|
// err = GetEventParameter(inEvent, kEventParamDirectObject, typeHICommand, NULL, sizeof(HICommand), NULL, &tHICommand);
|
|
// if (err == noErr)
|
|
// {
|
|
// switch (tHICommand.commandID)
|
|
// {
|
|
// case 'S_EF':
|
|
// {
|
|
// HideWindow(tWindowRef);
|
|
// ConfigureSoundEffects();
|
|
// ShowWindow(tWindowRef);
|
|
//
|
|
// result = noErr;
|
|
// break;
|
|
// }
|
|
//
|
|
// case 'G_FL':
|
|
// {
|
|
// if (systemVersion >= 0x1040)
|
|
// {
|
|
// HideWindow(tWindowRef);
|
|
// ConfigureCoreImageFilter();
|
|
// ShowWindow(tWindowRef);
|
|
// }
|
|
//
|
|
// result = noErr;
|
|
// break;
|
|
// }
|
|
//
|
|
// case 'G__7':
|
|
// {
|
|
// cid.signature = 'grap';
|
|
// cid.id = iNibGGLStretch;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// value = GetControl32BitValue(ctl);
|
|
//
|
|
// cid.id = iNibGAspectRatio;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// if (value)
|
|
// ActivateControl(ctl);
|
|
// else
|
|
// DeactivateControl(ctl);
|
|
//
|
|
// result = noErr;
|
|
// break;
|
|
// }
|
|
//
|
|
// case 'G_13':
|
|
// {
|
|
// cid.signature = 'grap';
|
|
// cid.id = iNibGScreenCurvature;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// value = GetControl32BitValue(ctl);
|
|
//
|
|
// cid.id = iNibGCurvatureWarp;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// if (value)
|
|
// ActivateControl(ctl);
|
|
// else
|
|
// DeactivateControl(ctl);
|
|
//
|
|
// result = noErr;
|
|
// break;
|
|
// }
|
|
//
|
|
// case 'S__3':
|
|
// {
|
|
// cid.signature = 'snd_';
|
|
// cid.id = iNibSStereo;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// value = GetControl32BitValue(ctl);
|
|
//
|
|
// cid.id = iNibSReverseStereo;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// if (value)
|
|
// ActivateControl(ctl);
|
|
// else
|
|
// DeactivateControl(ctl);
|
|
//
|
|
// result = noErr;
|
|
// break;
|
|
// }
|
|
//
|
|
// case 'F_FL':
|
|
// {
|
|
// UInt32 modifierkey;
|
|
//
|
|
// err = GetEventParameter(inEvent, kEventParamKeyModifiers, typeUInt32, NULL, sizeof(UInt32), NULL, &modifierkey);
|
|
// if (err == noErr)
|
|
// {
|
|
// if (modifierkey & optionKey)
|
|
// {
|
|
// CFStringRef str;
|
|
// MenuRef menu;
|
|
//
|
|
// str = CFCopyLocalizedString(CFSTR("NoneSelected"), "NoneSelected");
|
|
//
|
|
// cid.signature = 'othe';
|
|
// cid.id = iNibOSaveFolder;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// SetControl32BitValue(ctl, 3);
|
|
// err = GetControlData(ctl, kControlMenuPart, kControlPopupButtonMenuRefTag, sizeof(MenuRef), &menu, NULL);
|
|
// err = SetMenuItemTextWithCFString(menu, iNibSaveFolderNameMenuItem, str);
|
|
// DisableMenuItem(menu, iNibSaveFolderNameMenuItem);
|
|
// HIViewSetNeedsDisplay(ctl, true);
|
|
//
|
|
// CFRelease(str);
|
|
//
|
|
// if (saveFolderPath)
|
|
// CFRelease(saveFolderPath);
|
|
// saveFolderPath = NULL;
|
|
// }
|
|
//// else
|
|
//// r = NavChooseFolderSheet(tWindowRef);
|
|
// }
|
|
//
|
|
// result = noErr;
|
|
// break;
|
|
// }
|
|
//
|
|
// case 'NvDn':
|
|
// {
|
|
// //r = NavEndChooseFolderSheet(&ref);
|
|
// if (r)
|
|
// {
|
|
// CFStringRef str;
|
|
// CFURLRef url;
|
|
// MenuRef menu;
|
|
//
|
|
// url = CFURLCreateFromFSRef(kCFAllocatorDefault, &ref);
|
|
// str = CFURLCopyLastPathComponent(url);
|
|
//
|
|
// cid.signature = 'othe';
|
|
// cid.id = iNibOSaveFolder;
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// SetControl32BitValue(ctl, iNibSaveFolderNameMenuItem);
|
|
// err = GetControlData(ctl, kControlMenuPart, kControlPopupButtonMenuRefTag, sizeof(MenuRef), &menu, NULL);
|
|
// err = SetMenuItemTextWithCFString(menu, iNibSaveFolderNameMenuItem, str);
|
|
// EnableMenuItem(menu, iNibSaveFolderNameMenuItem);
|
|
// HIViewSetNeedsDisplay(ctl, true);
|
|
//
|
|
// CFRelease(str);
|
|
//
|
|
// str = CFURLCopyFileSystemPath(url, kCFURLPOSIXPathStyle);
|
|
// if (saveFolderPath)
|
|
// CFRelease(saveFolderPath);
|
|
// saveFolderPath = str;
|
|
//
|
|
// CFRelease(url);
|
|
// }
|
|
//
|
|
// result = noErr;
|
|
// break;
|
|
// }
|
|
// }
|
|
// }
|
|
//
|
|
// break;
|
|
// }
|
|
// }
|
|
//
|
|
// break;
|
|
// }
|
|
// }
|
|
//
|
|
// return (result);
|
|
return 0;
|
|
}
|
|
|
|
void ConfigureExtraOptions (void)
|
|
{
|
|
// OSStatus err;
|
|
// IBNibRef nibRef;
|
|
//
|
|
// err = CreateNibReference(kMacS9XCFString, &nibRef);
|
|
// if (err == noErr)
|
|
// {
|
|
// WindowRef tWindowRef;
|
|
//
|
|
// err = CreateWindowFromNib(nibRef, CFSTR("ExtraOptions"), &tWindowRef);
|
|
// if (err == noErr)
|
|
// {
|
|
// EventHandlerRef eref;
|
|
// EventHandlerUPP eventUPP;
|
|
// EventTypeSpec windowEvents[] = { { kEventClassWindow, kEventWindowClose },
|
|
// { kEventClassCommand, kEventCommandUpdateStatus } };
|
|
// HIViewRef ctl, root;
|
|
// HIViewID cid;
|
|
//
|
|
// root = HIViewGetRoot(tWindowRef);
|
|
// cid.id = 0;
|
|
//
|
|
// cid.signature = 'BMrk';
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// SetControl32BitValue(ctl, extraOptions.benchmark);
|
|
//
|
|
// cid.signature = 'NoTR';
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// SetControl32BitValue(ctl, extraOptions.glForceNoTextureRectangle);
|
|
//
|
|
// cid.signature = 'CSAp';
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// SetControl32BitValue(ctl, extraOptions.glUseClientStrageApple);
|
|
//
|
|
// cid.signature = 'AGPT';
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// SetControl32BitValue(ctl, extraOptions.glUseTexturePriority);
|
|
//
|
|
// cid.signature = 'Hint';
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// SetControl32BitValue(ctl, extraOptions.glStorageHint);
|
|
//
|
|
// eventUPP = NewEventHandlerUPP(DefaultEventHandler);
|
|
// err = InstallWindowEventHandler(tWindowRef, eventUPP, GetEventTypeCount(windowEvents), windowEvents, (void *) tWindowRef, &eref);
|
|
//
|
|
// MoveWindowPosition(tWindowRef, kWindowExtra, false);
|
|
// ShowWindow(tWindowRef);
|
|
// err = RunAppModalLoopForWindow(tWindowRef);
|
|
// HideWindow(tWindowRef);
|
|
// SaveWindowPosition(tWindowRef, kWindowExtra);
|
|
//
|
|
// cid.signature = 'BMrk';
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// extraOptions.benchmark = GetControl32BitValue(ctl) ? true : false;
|
|
//
|
|
// cid.signature = 'NoTR';
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// extraOptions.glForceNoTextureRectangle = GetControl32BitValue(ctl) ? true : false;
|
|
//
|
|
// cid.signature = 'CSAp';
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// extraOptions.glUseClientStrageApple = GetControl32BitValue(ctl) ? true : false;
|
|
//
|
|
// cid.signature = 'AGPT';
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// extraOptions.glUseTexturePriority = GetControl32BitValue(ctl) ? true : false;
|
|
//
|
|
// cid.signature = 'Hint';
|
|
// HIViewFindByID(root, cid, &ctl);
|
|
// extraOptions.glStorageHint = GetControl32BitValue(ctl);
|
|
//
|
|
// err = RemoveEventHandler(eref);
|
|
// DisposeEventHandlerUPP(eventUPP);
|
|
//
|
|
// CFRelease(tWindowRef);
|
|
// }
|
|
//
|
|
// DisposeNibReference(nibRef);
|
|
// }
|
|
}
|