mirror of https://github.com/stella-emu/stella.git
Added Mac Menus for key insertion events back in
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@459 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
parent
b4de09b4f8
commit
9ac5d2a4d2
|
@ -4,40 +4,21 @@
|
||||||
Mark Grebe <atarimac@cox.net>
|
Mark Grebe <atarimac@cox.net>
|
||||||
|
|
||||||
*/
|
*/
|
||||||
/* $Id: Menus.h,v 1.4 2005-02-18 05:31:47 markgrebe Exp $ */
|
/* $Id: Menus.h,v 1.5 2005-06-03 05:04:56 markgrebe Exp $ */
|
||||||
|
|
||||||
#import <Cocoa/Cocoa.h>
|
#import <Cocoa/Cocoa.h>
|
||||||
|
|
||||||
@interface Menus : NSObject {
|
@interface Menus : NSObject {
|
||||||
IBOutlet id limitSpeedMenu;
|
|
||||||
IBOutlet id paddlesMenu;
|
|
||||||
IBOutlet id filterMenu;
|
|
||||||
IBOutlet id videoModeMatrix;
|
|
||||||
IBOutlet id volumeSlider;
|
|
||||||
IBOutlet id aspectRatioField;
|
|
||||||
IBOutlet id romDirField;
|
|
||||||
int openGlEnabled;
|
|
||||||
int gameMenusEnabled;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
+ (Menus *)sharedInstance;
|
+ (Menus *)sharedInstance;
|
||||||
- (NSString *) browseDir;
|
- (void)pushKeyEvent:(int)key:(bool)shift:(bool)cmd;
|
||||||
- (void)setSpeedLimitMenu:(int)limit;
|
- (IBAction)paddleChange:(id) sender;
|
||||||
- (void)initVideoMenu:(int)openGl;
|
|
||||||
- (void)setPaddleMenu:(int)number;
|
|
||||||
- (void)prefsStart;
|
|
||||||
- (void)enableGameMenus;
|
|
||||||
- (void)pushKeyEvent:(int)key:(bool)shift;
|
|
||||||
- (IBAction) paddleChange:(id) sender;
|
|
||||||
- (IBAction) prefsOK:(id) sender;
|
|
||||||
- (IBAction) romdirSelect:(id) sender;
|
|
||||||
- (IBAction)prefsMenu:(id)sender;
|
|
||||||
- (IBAction)biggerScreen:(id)sender;
|
- (IBAction)biggerScreen:(id)sender;
|
||||||
- (IBAction)smallerScreen:(id)sender;
|
- (IBAction)smallerScreen:(id)sender;
|
||||||
- (IBAction)fullScreen:(id)sender;
|
- (IBAction)fullScreen:(id)sender;
|
||||||
- (IBAction)openCart:(id)sender;
|
- (IBAction)openCart:(id)sender;
|
||||||
- (IBAction)restartGame:(id)sender;
|
- (IBAction)restartGame:(id)sender;
|
||||||
- (IBAction)speedLimit:(id)sender;
|
|
||||||
- (IBAction)pauseGame:(id)sender;
|
- (IBAction)pauseGame:(id)sender;
|
||||||
- (IBAction)ntscPalMode:(id)sender;
|
- (IBAction)ntscPalMode:(id)sender;
|
||||||
- (IBAction)togglePallette:(id)sender;
|
- (IBAction)togglePallette:(id)sender;
|
||||||
|
@ -51,5 +32,8 @@
|
||||||
- (IBAction)widthMinus:(id)sender;
|
- (IBAction)widthMinus:(id)sender;
|
||||||
- (IBAction)heightPlus:(id)sender;
|
- (IBAction)heightPlus:(id)sender;
|
||||||
- (IBAction)heightMinus:(id)sender;
|
- (IBAction)heightMinus:(id)sender;
|
||||||
|
- (IBAction)doPrefs:(id)sender;
|
||||||
|
- (IBAction)volumePlus:(id)sender;
|
||||||
|
- (IBAction)volumeMinus:(id)sender;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
|
@ -4,10 +4,11 @@
|
||||||
Mark Grebe <atarimac@cox.net>
|
Mark Grebe <atarimac@cox.net>
|
||||||
|
|
||||||
*/
|
*/
|
||||||
/* $Id: Menus.m,v 1.6 2005-05-28 21:50:07 markgrebe Exp $ */
|
/* $Id: Menus.m,v 1.7 2005-06-03 05:05:05 markgrebe Exp $ */
|
||||||
|
|
||||||
#import <Cocoa/Cocoa.h>
|
#import <Cocoa/Cocoa.h>
|
||||||
#import "SDL.h"
|
#import "SDL.h"
|
||||||
|
#import "Menus.h"
|
||||||
|
|
||||||
#define QZ_m 0x2E
|
#define QZ_m 0x2E
|
||||||
#define QZ_o 0x1F
|
#define QZ_o 0x1F
|
||||||
|
@ -68,3 +69,160 @@ void handleMacOSXKeypress(int key) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@implementation Menus
|
||||||
|
|
||||||
|
static Menus *sharedInstance = nil;
|
||||||
|
|
||||||
|
+ (Menus *)sharedInstance {
|
||||||
|
return sharedInstance ? sharedInstance : [[self alloc] init];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (id)init
|
||||||
|
{
|
||||||
|
sharedInstance = self;
|
||||||
|
return(self);
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)pushKeyEvent:(int)key:(bool)shift:(bool)cmd
|
||||||
|
{
|
||||||
|
SDL_Event theEvent;
|
||||||
|
|
||||||
|
theEvent.key.type = SDL_KEYDOWN;
|
||||||
|
theEvent.key.state = SDL_PRESSED;
|
||||||
|
theEvent.key.keysym.scancode = 0;
|
||||||
|
theEvent.key.keysym.sym = key;
|
||||||
|
theEvent.key.keysym.mod = 0;
|
||||||
|
if (cmd)
|
||||||
|
theEvent.key.keysym.mod = KMOD_LMETA;
|
||||||
|
if (shift)
|
||||||
|
theEvent.key.keysym.mod |= KMOD_LSHIFT;
|
||||||
|
theEvent.key.keysym.unicode = 0;
|
||||||
|
SDL_PushEvent(&theEvent);
|
||||||
|
}
|
||||||
|
|
||||||
|
- (IBAction) paddleChange:(id) sender
|
||||||
|
{
|
||||||
|
switch([sender tag])
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
[self pushKeyEvent:SDLK_0:NO:YES];
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
[self pushKeyEvent:SDLK_1:NO:YES];
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
[self pushKeyEvent:SDLK_2:NO:YES];
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
[self pushKeyEvent:SDLK_3:NO:YES];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (IBAction)biggerScreen:(id)sender
|
||||||
|
{
|
||||||
|
[self pushKeyEvent:SDLK_EQUALS:YES:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (IBAction)smallerScreen:(id)sender
|
||||||
|
{
|
||||||
|
[self pushKeyEvent:SDLK_MINUS:YES:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (IBAction)fullScreen:(id)sender
|
||||||
|
{
|
||||||
|
[self pushKeyEvent:SDLK_RETURN:NO:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (IBAction)openCart:(id)sender
|
||||||
|
{
|
||||||
|
[self pushKeyEvent:SDLK_ESCAPE:NO:NO];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (IBAction)restartGame:(id)sender
|
||||||
|
{
|
||||||
|
[self pushKeyEvent:SDLK_r:NO:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (IBAction)pauseGame:(id)sender
|
||||||
|
{
|
||||||
|
[self pushKeyEvent:SDLK_PAUSE:NO:NO];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (IBAction)ntscPalMode:(id)sender
|
||||||
|
{
|
||||||
|
[self pushKeyEvent:SDLK_f:NO:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (IBAction)toggleGlFilter:(id)sender
|
||||||
|
{
|
||||||
|
[self pushKeyEvent:SDLK_f:YES:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (IBAction)togglePallette:(id)sender
|
||||||
|
{
|
||||||
|
[self pushKeyEvent:SDLK_p:NO:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (IBAction)grabMouse:(id)sender
|
||||||
|
{
|
||||||
|
[self pushKeyEvent:SDLK_g:NO:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (IBAction)xStartPlus:(id)sender
|
||||||
|
{
|
||||||
|
[self pushKeyEvent:SDLK_HOME:YES:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (IBAction)xStartMinus:(id)sender
|
||||||
|
{
|
||||||
|
[self pushKeyEvent:SDLK_END:YES:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (IBAction)yStartPlus:(id)sender
|
||||||
|
{
|
||||||
|
[self pushKeyEvent:SDLK_PAGEUP:YES:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (IBAction)yStartMinus:(id)sender
|
||||||
|
{
|
||||||
|
[self pushKeyEvent:SDLK_PAGEDOWN:YES:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (IBAction)widthPlus:(id)sender
|
||||||
|
{
|
||||||
|
[self pushKeyEvent:SDLK_END:NO:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (IBAction)widthMinus:(id)sender
|
||||||
|
{
|
||||||
|
[self pushKeyEvent:SDLK_HOME:NO:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (IBAction)heightPlus:(id)sender
|
||||||
|
{
|
||||||
|
[self pushKeyEvent:SDLK_PAGEUP:NO:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (IBAction)heightMinus:(id)sender
|
||||||
|
{
|
||||||
|
[self pushKeyEvent:SDLK_PAGEDOWN:NO:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (IBAction)doPrefs:(id)sender
|
||||||
|
{
|
||||||
|
[self pushKeyEvent:SDLK_TAB:NO:NO];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (IBAction)volumePlus:(id)sender
|
||||||
|
{
|
||||||
|
[self pushKeyEvent:SDLK_RIGHTBRACKET:YES:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (IBAction)volumeMinus:(id)sender
|
||||||
|
{
|
||||||
|
[self pushKeyEvent:SDLK_LEFTBRACKET:YES:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
// See the file "license" for information on usage and redistribution of
|
// See the file "license" for information on usage and redistribution of
|
||||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
//
|
//
|
||||||
// $Id: OSystemMACOSX.cxx,v 1.2 2005-05-28 21:06:41 markgrebe Exp $
|
// $Id: OSystemMACOSX.cxx,v 1.3 2005-06-03 05:05:05 markgrebe Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
|
@ -149,12 +149,12 @@ void OSystemMACOSX::mainLoop()
|
||||||
myFrameBuffer->update();
|
myFrameBuffer->update();
|
||||||
|
|
||||||
currentTime = getTicks();
|
currentTime = getTicks();
|
||||||
virtualTime += myTimePerFrame;
|
virtualTime = startTime + myTimePerFrame;
|
||||||
if(currentTime < virtualTime)
|
if(currentTime < virtualTime)
|
||||||
{
|
{
|
||||||
SDL_Delay((virtualTime - currentTime)/1000);
|
SDL_Delay((virtualTime - currentTime)/1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
currentTime = getTicks() - startTime;
|
currentTime = getTicks() - startTime;
|
||||||
frameTime += currentTime;
|
frameTime += currentTime;
|
||||||
++numberOfFrames;
|
++numberOfFrames;
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
F5A47A9E01A0483001D3D55B,
|
F5A47A9E01A0483001D3D55B,
|
||||||
2DDBEBE3084582C400812C11,
|
2DDBEBE3084582C400812C11,
|
||||||
2DDBEBE4084582C400812C11,
|
2DDBEBE4084582C400812C11,
|
||||||
|
2D62C40E085011050063A4A3,
|
||||||
2D47A45208491D4500ABFB6A,
|
2D47A45208491D4500ABFB6A,
|
||||||
);
|
);
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
|
@ -428,6 +429,8 @@
|
||||||
<array>
|
<array>
|
||||||
<string>bin</string>
|
<string>bin</string>
|
||||||
<string>BIN</string>
|
<string>BIN</string>
|
||||||
|
<string>rom</string>
|
||||||
|
<string>ROM</string>
|
||||||
<string>zip</string>
|
<string>zip</string>
|
||||||
<string>ZIP</string>
|
<string>ZIP</string>
|
||||||
</array>
|
</array>
|
||||||
|
@ -565,6 +568,7 @@
|
||||||
2DDBEB7F08457B7D00812C11,
|
2DDBEB7F08457B7D00812C11,
|
||||||
2DDBEBE5084582C400812C11,
|
2DDBEBE5084582C400812C11,
|
||||||
2DDFFA2B0847EF4E00201CC8,
|
2DDFFA2B0847EF4E00201CC8,
|
||||||
|
2D62C40F085011050063A4A3,
|
||||||
);
|
);
|
||||||
isa = PBXHeadersBuildPhase;
|
isa = PBXHeadersBuildPhase;
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
@ -806,6 +810,20 @@
|
||||||
settings = {
|
settings = {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
2D62C40E085011050063A4A3 = {
|
||||||
|
fileEncoding = 30;
|
||||||
|
isa = PBXFileReference;
|
||||||
|
lastKnownFileType = sourcecode.c.h;
|
||||||
|
path = Menus.h;
|
||||||
|
refType = 2;
|
||||||
|
sourceTree = SOURCE_ROOT;
|
||||||
|
};
|
||||||
|
2D62C40F085011050063A4A3 = {
|
||||||
|
fileRef = 2D62C40E085011050063A4A3;
|
||||||
|
isa = PBXBuildFile;
|
||||||
|
settings = {
|
||||||
|
};
|
||||||
|
};
|
||||||
2D733D5D062893E7006265D9 = {
|
2D733D5D062893E7006265D9 = {
|
||||||
fileEncoding = 30;
|
fileEncoding = 30;
|
||||||
isa = PBXFileReference;
|
isa = PBXFileReference;
|
||||||
|
|
Loading…
Reference in New Issue