fuse-for-macosx-commits Mailing List for Fuse for macOS (Page 24)
Brought to you by:
fredm
You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(9) |
Dec
(31) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
(24) |
Feb
(11) |
Mar
(6) |
Apr
(48) |
May
(9) |
Jun
(38) |
Jul
(33) |
Aug
(15) |
Sep
|
Oct
(3) |
Nov
(6) |
Dec
(3) |
2008 |
Jan
|
Feb
(24) |
Mar
(11) |
Apr
(22) |
May
(7) |
Jun
|
Jul
|
Aug
|
Sep
(2) |
Oct
(3) |
Nov
(18) |
Dec
(23) |
2009 |
Jan
(16) |
Feb
(1) |
Mar
(1) |
Apr
|
May
|
Jun
(7) |
Jul
(4) |
Aug
(11) |
Sep
(9) |
Oct
|
Nov
(3) |
Dec
(2) |
2010 |
Jan
(1) |
Feb
|
Mar
(1) |
Apr
(2) |
May
(8) |
Jun
|
Jul
|
Aug
(2) |
Sep
(2) |
Oct
(9) |
Nov
|
Dec
(8) |
2011 |
Jan
|
Feb
|
Mar
|
Apr
(7) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(5) |
Nov
(2) |
Dec
|
2012 |
Jan
(4) |
Feb
(5) |
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
(10) |
Nov
(13) |
Dec
(11) |
2013 |
Jan
(4) |
Feb
(1) |
Mar
(8) |
Apr
(8) |
May
(16) |
Jun
(5) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(4) |
2014 |
Jan
|
Feb
(6) |
Mar
(2) |
Apr
(1) |
May
|
Jun
|
Jul
(1) |
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
(6) |
2015 |
Jan
|
Feb
|
Mar
(2) |
Apr
|
May
|
Jun
(5) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2016 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
(10) |
Jun
(9) |
Jul
(6) |
Aug
(5) |
Sep
(3) |
Oct
(6) |
Nov
(5) |
Dec
|
From: <fr...@us...> - 2006-12-24 13:35:52
|
Revision: 262 http://svn.sourceforge.net/fuse-for-macosx/?rev=262&view=rev Author: fredm Date: 2006-12-24 05:35:50 -0800 (Sun, 24 Dec 2006) Log Message: ----------- Enable screenshot support, get project building in deployment mode. Modified Paths: -------------- branches/fusegl/fuse/TODO branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj branches/fusegl/fuse/fusepb/content_arrays/SDLJoysticks.m branches/fusegl/fuse/fusepb/controllers/FuseController.m branches/fusegl/fuse/fusepb/thumbnail.h branches/fusegl/fuse/fusepb/thumbnail.m branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m branches/fusegl/fuse/ui/cocoa/cocoadisplay.c branches/fusegl/fuse/ui/cocoa/cocoadisplay.h Added Paths: ----------- branches/fusegl/fuse/ui/cocoa/cocoaerror.m branches/fusegl/fuse/ui/cocoa/cocoascreenshot.h branches/fusegl/fuse/ui/cocoa/cocoascreenshot.m Removed Paths: ------------- branches/fusegl/fuse/fusepb/error.m branches/fusegl/fuse/fusepb/sdlscreenshot.h branches/fusegl/fuse/fusepb/sdlscreenshot.m Modified: branches/fusegl/fuse/TODO =================================================================== --- branches/fusegl/fuse/TODO 2006-12-23 11:00:00 UTC (rev 261) +++ branches/fusegl/fuse/TODO 2006-12-24 13:35:50 UTC (rev 262) @@ -12,5 +12,6 @@ * Add native joystick processing (removes SDL joystick input dependency from Fuse) * Add native mouse processing (removes SDL mouse input dependency from Fuse) +* Restore fullscreen support $Id: TODO,v 1.4 2004/03/02 13:38:08 pak21 Exp $ Modified: branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj =================================================================== --- branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj 2006-12-23 11:00:00 UTC (rev 261) +++ branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj 2006-12-24 13:35:50 UTC (rev 262) @@ -265,6 +265,12 @@ B682554A091817F30014B5EE /* divide.h in Headers */ = {isa = PBXBuildFile; fileRef = B6825548091817F30014B5EE /* divide.h */; }; B6A6F0960B3C108C000B88E9 /* coreaudiosound.c in Sources */ = {isa = PBXBuildFile; fileRef = B6A6F0950B3C108C000B88E9 /* coreaudiosound.c */; }; B6A6F0DA0B3D141B000B88E9 /* cocoaui.m in Sources */ = {isa = PBXBuildFile; fileRef = B6A6F0D90B3D141B000B88E9 /* cocoaui.m */; }; + B6A6F0EE0B3D5F9E000B88E9 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B6A6F0ED0B3D5F9E000B88E9 /* CoreAudio.framework */; }; + B6A6F0F30B3D602F000B88E9 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B6A6F0F20B3D602F000B88E9 /* AudioUnit.framework */; }; + B6A6F1060B3D60D0000B88E9 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F520C8BC038D022E01A804BA /* OpenGL.framework */; }; + B6A6F10E0B3D6360000B88E9 /* cocoaerror.m in Sources */ = {isa = PBXBuildFile; fileRef = B6A6F10D0B3D6360000B88E9 /* cocoaerror.m */; }; + B6A6F11F0B3EA737000B88E9 /* cocoascreenshot.h in Headers */ = {isa = PBXBuildFile; fileRef = B6A6F11D0B3EA737000B88E9 /* cocoascreenshot.h */; }; + B6A6F1200B3EA737000B88E9 /* cocoascreenshot.m in Sources */ = {isa = PBXBuildFile; fileRef = B6A6F11E0B3EA737000B88E9 /* cocoascreenshot.m */; }; B6CE7F400B2830A300EB65B3 /* cocoadisplay.c in Sources */ = {isa = PBXBuildFile; fileRef = B6CE7F3A0B2830A300EB65B3 /* cocoadisplay.c */; }; B6CE7F410B2830A300EB65B3 /* cocoadisplay.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CE7F3B0B2830A300EB65B3 /* cocoadisplay.h */; }; B6CE7F420B2830A300EB65B3 /* cocoajoystick.c in Sources */ = {isa = PBXBuildFile; fileRef = B6CE7F3C0B2830A300EB65B3 /* cocoajoystick.c */; }; @@ -450,6 +456,11 @@ B68CB2CC03DD923C00A804BA /* memory.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = memory.c; sourceTree = "<group>"; }; B6A6F0950B3C108C000B88E9 /* coreaudiosound.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = coreaudiosound.c; path = sound/coreaudiosound.c; sourceTree = "<group>"; }; B6A6F0D90B3D141B000B88E9 /* cocoaui.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = cocoaui.m; sourceTree = "<group>"; }; + B6A6F0ED0B3D5F9E000B88E9 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = ../../../../../../../../System/Library/Frameworks/CoreAudio.framework; sourceTree = "<group>"; }; + B6A6F0F20B3D602F000B88E9 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = ../../../../../../../../System/Library/Frameworks/AudioUnit.framework; sourceTree = "<group>"; }; + B6A6F10D0B3D6360000B88E9 /* cocoaerror.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = cocoaerror.m; sourceTree = "<group>"; }; + B6A6F11D0B3EA737000B88E9 /* cocoascreenshot.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cocoascreenshot.h; sourceTree = "<group>"; }; + B6A6F11E0B3EA737000B88E9 /* cocoascreenshot.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = cocoascreenshot.m; sourceTree = "<group>"; }; B6A7F0E904C9A11D001025EB /* NumberFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NumberFormatter.h; sourceTree = "<group>"; }; B6A7F0EA04C9A11D001025EB /* NumberFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NumberFormatter.m; sourceTree = "<group>"; }; B6AA8A3C03D2FC1C00FED55D /* trdos.rom */ = {isa = PBXFileReference; lastKnownFileType = file; name = trdos.rom; path = ../roms/trdos.rom; sourceTree = SOURCE_ROOT; }; @@ -626,6 +637,9 @@ B61F46A109121DF100C8096C /* gcrypt.framework in Frameworks */, B61F46A209121DF100C8096C /* libbz2.framework in Frameworks */, B64E2A170A6534A3006863D9 /* Carbon.framework in Frameworks */, + B6A6F0EE0B3D5F9E000B88E9 /* CoreAudio.framework in Frameworks */, + B6A6F0F30B3D602F000B88E9 /* AudioUnit.framework in Frameworks */, + B6A6F1060B3D60D0000B88E9 /* OpenGL.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -652,6 +666,8 @@ 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = { isa = PBXGroup; children = ( + B6A6F0F20B3D602F000B88E9 /* AudioUnit.framework */, + B6A6F0ED0B3D5F9E000B88E9 /* CoreAudio.framework */, B64E2A160A6534A3006863D9 /* Carbon.framework */, B6202BD105BD43D800A1EA8F /* libbz2.framework */, 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */, @@ -889,7 +905,10 @@ children = ( B6CE7F3A0B2830A300EB65B3 /* cocoadisplay.c */, B6CE7F3B0B2830A300EB65B3 /* cocoadisplay.h */, + B6A6F10D0B3D6360000B88E9 /* cocoaerror.m */, B6CE7F3C0B2830A300EB65B3 /* cocoajoystick.c */, + B6A6F11D0B3EA737000B88E9 /* cocoascreenshot.h */, + B6A6F11E0B3EA737000B88E9 /* cocoascreenshot.m */, B6CE7F3E0B2830A300EB65B3 /* cocoaui.h */, B6A6F0D90B3D141B000B88E9 /* cocoaui.m */, B6E0252B0B38AFE500E23A0F /* keysyms.m */, @@ -1207,6 +1226,7 @@ B6CE7F410B2830A300EB65B3 /* cocoadisplay.h in Headers */, B6CE7F440B2830A300EB65B3 /* cocoaui.h in Headers */, B6CE7FCD0B28FBD600EB65B3 /* DisplayOpenGLView.h in Headers */, + B6A6F11F0B3EA737000B88E9 /* cocoascreenshot.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1442,6 +1462,8 @@ B6E0252C0B38AFE500E23A0F /* keysyms.m in Sources */, B6A6F0960B3C108C000B88E9 /* coreaudiosound.c in Sources */, B6A6F0DA0B3D141B000B88E9 /* cocoaui.m in Sources */, + B6A6F10E0B3D6360000B88E9 /* cocoaerror.m in Sources */, + B6A6F1200B3EA737000B88E9 /* cocoascreenshot.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; Modified: branches/fusegl/fuse/fusepb/content_arrays/SDLJoysticks.m =================================================================== --- branches/fusegl/fuse/fusepb/content_arrays/SDLJoysticks.m 2006-12-23 11:00:00 UTC (rev 261) +++ branches/fusegl/fuse/fusepb/content_arrays/SDLJoysticks.m 2006-12-24 13:35:50 UTC (rev 262) @@ -44,7 +44,7 @@ joysticks = [NSMutableArray arrayWithCapacity:joysticks_supported+1]; [joysticks addObject:[SDLJoystick joystickWithName:@"None" andType:0]]; - +#if 0 if( joysticks_supported > 0 ){ for( i=0; i<joysticks_supported; i++ ) { [joysticks addObject: @@ -54,6 +54,7 @@ ]; } } +#endif } return joysticks; } Modified: branches/fusegl/fuse/fusepb/controllers/FuseController.m =================================================================== --- branches/fusegl/fuse/fusepb/controllers/FuseController.m 2006-12-23 11:00:00 UTC (rev 261) +++ branches/fusegl/fuse/fusepb/controllers/FuseController.m 2006-12-24 13:35:50 UTC (rev 262) @@ -52,8 +52,8 @@ #include "psg.h" #include "rzx.h" #include "screenshot.h" +#include "ui/cocoa/cocoascreenshot.h" #if 0 -#include "sdlscreenshot.h" #include "sdlui.h" #include "sdldisplay.h" #endif @@ -1026,6 +1026,8 @@ - (int)ui_statusbar_update_speed:(float)speed { [window setTitle:[NSString stringWithFormat:@"Fuse - %3.0f%%", speed]]; + + return 0; } - (BOOL)validateMenuItem:(id <NSMenuItem>)menuItem Deleted: branches/fusegl/fuse/fusepb/error.m =================================================================== --- branches/fusegl/fuse/fusepb/error.m 2006-12-23 11:00:00 UTC (rev 261) +++ branches/fusegl/fuse/fusepb/error.m 2006-12-24 13:35:50 UTC (rev 262) @@ -1,87 +0,0 @@ -/* error.m: handle errors - Copyright (c) 2002 Philip Kendall - Copyright (c) 2002-2004 Fredrick Meunier - - $Id$ - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - Author contact information: - - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England - -*/ - -#include <config.h> - -#ifdef UI_SDL /* Use this iff we're using SDL */ - -#import <Foundation/NSString.h> -#import <AppKit/NSPanel.h> - -#include <stdarg.h> -#include <stdio.h> -#include <unistd.h> - -#include "fuse.h" -#include "ui/ui.h" -#include "settings.h" - -#define MESSAGE_MAX_LENGTH 256 - -int -aqua_verror( ui_error_level severity, const char *message ) -{ - NSString *title; - - /* Set the appropriate title */ - switch( severity ) { - case UI_ERROR_INFO: - title = @"Fuse - Info"; - break; - case UI_ERROR_ERROR: - title = @"Fuse - Error"; - break; - default: - title = @"Fuse - (Unknown error)"; - break; - } - - NSString *alertString = [NSString stringWithUTF8String:message]; - - switch( severity ) { - case UI_ERROR_INFO: - NSRunAlertPanel(title, alertString, nil, nil, nil); - break; - case UI_ERROR_ERROR: - default: - NSRunCriticalAlertPanel(title, alertString, nil, nil, nil); - break; - } - - return 0; -} - -int -ui_error_specific( ui_error_level severity, const char *message ) -{ - if ( !settings_current.full_screen ) { - return aqua_verror( severity, message ); - } - return 0; -} - -#endif /* #ifdef UI_SDL */ Deleted: branches/fusegl/fuse/fusepb/sdlscreenshot.h =================================================================== --- branches/fusegl/fuse/fusepb/sdlscreenshot.h 2006-12-23 11:00:00 UTC (rev 261) +++ branches/fusegl/fuse/fusepb/sdlscreenshot.h 2006-12-24 13:35:50 UTC (rev 262) @@ -1,32 +0,0 @@ -/* sdlscreenshot.h: Routines for saving .bmp screenshots - Copyright (c) 2003 Fredrick Meunier - - $Id$ - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - Author contact information: - - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England - -*/ - -#ifndef SDLSCREENSHOT_H -#define SDLSCREENSHOT_H - -int screenshot_write( const char *filename ); - -#endif /* #ifndef SDLSCREENSHOT_H */ Deleted: branches/fusegl/fuse/fusepb/sdlscreenshot.m =================================================================== --- branches/fusegl/fuse/fusepb/sdlscreenshot.m 2006-12-23 11:00:00 UTC (rev 261) +++ branches/fusegl/fuse/fusepb/sdlscreenshot.m 2006-12-24 13:35:50 UTC (rev 262) @@ -1,111 +0,0 @@ -/* sdlscreenshot.m: Routines for handling external format screenshots - Copyright (c) 2003,2005 Fredrick Meunier - Copyright (C) 1997-2003 Sam Lantinga - - $Id$ - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - Author contact information: - - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England - -*/ - -#include <config.h> - -#include <SDL.h> - -#include <Cocoa/Cocoa.h> - -#include "sdldisplay.h" -#include "ui/ui.h" - -// Most of the following snaffled from SDL_QuartzWM.m in SDL-1.2.9 -int -screenshot_write( const char *filename, scaler_type scaler ) -{ - size_t len = strlen(filename); - const char* extension; - NSBitmapImageRep *bits; - SDL_Surface *mergedSurface; - NSAutoreleasePool *pool; - SDL_Rect rrect; - NSBitmapImageFileType type = NSTIFFFileType; - - if( len < 4 ) { - return 1; - } - - extension = filename + len - 4; - - if( !strcmp( extension, ".png" ) ) { - type = NSPNGFileType; - } else if( !strcmp( extension, ".gif" ) ) { - type = NSGIFFileType; - } else if( !strcmp( extension, ".jpg" ) ) { - type = NSJPEGFileType; - } else if( !strcmp( extension, ".bmp" ) ) { - type = NSBMPFileType; - } - - pool = [ [ NSAutoreleasePool alloc ] init ]; - SDL_GetClipRect( sdldisplay_gc, &rrect ); - -#if SDL_BYTEORDER == SDL_BIG_ENDIAN -#define BYTEORDER_DEPENDENT_RGBA_MASKS 0xFF000000, 0x00FF0000, 0x0000FF00, 0x000000FF -#else -#define BYTEORDER_DEPENDENT_RGBA_MASKS 0x000000FF, 0x0000FF00, 0x00FF0000, 0xFF000000 -#endif - /* create an appropriate endian RGBA surface */ - mergedSurface = SDL_CreateRGBSurface( SDL_SWSURFACE|SDL_SRCALPHA, - sdldisplay_gc->w, sdldisplay_gc->h, 32, - BYTEORDER_DEPENDENT_RGBA_MASKS ); - if( mergedSurface==NULL ) { - NSLog( @"Error creating surface for merge" ); - goto freePool; - } - - if( mergedSurface->pitch != - mergedSurface->format->BytesPerPixel * mergedSurface->w ) { - NSLog( @"merged surface has wrong format" ); - SDL_FreeSurface( mergedSurface ); - goto freePool; - } - - if( SDL_BlitSurface( sdldisplay_gc,&rrect,mergedSurface,&rrect ) ) { - NSLog( @"Error blitting to mergedSurface" ); - goto freePool; - } - - bits = [ [ NSBitmapImageRep alloc] - initWithBitmapDataPlanes:(unsigned char **)&mergedSurface->pixels - pixelsWide:sdldisplay_gc->w pixelsHigh:sdldisplay_gc->h - bitsPerSample:8 samplesPerPixel:4 hasAlpha:YES isPlanar:NO - colorSpaceName:NSDeviceRGBColorSpace - bytesPerRow:sdldisplay_gc->w<<2 bitsPerPixel:32 ]; - - NSData *data = [ bits representationUsingType:type properties:nil ]; - [ data writeToFile:[NSString stringWithUTF8String:filename] atomically:NO ]; - - [ bits release ]; - SDL_FreeSurface( mergedSurface ); - -freePool: - [pool release]; - - return 0; -} Modified: branches/fusegl/fuse/fusepb/thumbnail.h =================================================================== --- branches/fusegl/fuse/fusepb/thumbnail.h 2006-12-23 11:00:00 UTC (rev 261) +++ branches/fusegl/fuse/fusepb/thumbnail.h 2006-12-24 13:35:50 UTC (rev 262) @@ -29,4 +29,8 @@ int add_screen_thumbnail_to( const char*filename ); +int get_rgb24_data( libspectrum_byte *rgb24_data, size_t stride, + size_t height, size_t width, size_t height_offset, + size_t width_offset ); + #endif /* #ifndef THUMBNAIL_H */ Modified: branches/fusegl/fuse/fusepb/thumbnail.m =================================================================== --- branches/fusegl/fuse/fusepb/thumbnail.m 2006-12-23 11:00:00 UTC (rev 261) +++ branches/fusegl/fuse/fusepb/thumbnail.m 2006-12-24 13:35:50 UTC (rev 262) @@ -37,15 +37,12 @@ #include "screenshot.h" #include "scld.h" #include "settings.h" +#include "thumbnail.h" #include "ui/scaler/scaler.h" #include "ui/scaler/scaler_internals.h" #include "ui/ui.h" #include "utils.h" -static int get_rgb24_data( libspectrum_byte *rgb24_data, size_t stride, - size_t height, size_t width, size_t height_offset, - size_t width_offset ); - int add_screen_thumbnail_to( const char*filename ) { @@ -100,7 +97,7 @@ return 0; } -static int +int get_rgb24_data( libspectrum_byte *rgb24_data, size_t stride, size_t height, size_t width, size_t height_offset, size_t width_offset ) Modified: branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2006-12-23 11:00:00 UTC (rev 261) +++ branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2006-12-24 13:35:50 UTC (rev 262) @@ -165,29 +165,29 @@ if( NO == screenTexInitialised ) return; /* Need to draw texture to screen here */ - memcpy(screenTex.pixels, screen.pixels, screenTex.pitch*screenTex.height); + memcpy(screenTex.pixels, screen.pixels, screenTex.pitch*screenTex.full_height); [[self openGLContext] makeCurrentContext]; /* Bind, update and draw new image */ glBindTexture(GL_TEXTURE_RECTANGLE_EXT, 1); - glTexSubImage2D(GL_TEXTURE_RECTANGLE_EXT, 0, 0, 0, screenTex.width, - screenTex.height, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, + glTexSubImage2D(GL_TEXTURE_RECTANGLE_EXT, 0, 0, 0, screenTex.full_width, + screenTex.full_height, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, screenTex.pixels); glBegin(GL_QUADS); - glTexCoord2f((float)(screenTex.width-3), 1.0f); + glTexCoord2f((float)screenTex.image_width, (float)(screenTex.image_xoffset)); glVertex2f(1.0f, 1.0f); - glTexCoord2f((float)(screenTex.width-3), (float)(screenTex.height-3)); + glTexCoord2f((float)screenTex.image_width, (float)screenTex.image_height); glVertex2f(1.0f, -1.0f); - glTexCoord2f(1.0f, (float)(screenTex.height-3)); + glTexCoord2f((float)screenTex.image_xoffset, (float)screenTex.image_height); glVertex2f(-1.0f, -1.0f); - glTexCoord2f(1.0f, 1.0f); + glTexCoord2f((float)screenTex.image_xoffset, (float)screenTex.image_yoffset); glVertex2f(-1.0f, 1.0f); glEnd(); @@ -262,14 +262,18 @@ { GLint i; - screenTex.width = newScreen->width; - screenTex.height = newScreen->height; - screenTex.pixels = calloc(screenTex.width*screenTex.height, sizeof(uint32_t)); + screenTex.full_width = newScreen->full_width; + screenTex.full_height = newScreen->full_height; + screenTex.image_width = newScreen->image_width; + screenTex.image_height = newScreen->image_height; + screenTex.image_xoffset = newScreen->image_xoffset; + screenTex.image_yoffset = newScreen->image_yoffset; + screenTex.pixels = calloc(screenTex.full_width*screenTex.full_height, sizeof(uint32_t)); if( !screenTex.pixels ) { fprintf( stderr, "%s: couldn't create screenTex.pixels\n", fuse_progname ); return; } - screenTex.pitch = screenTex.width * sizeof(uint32_t); + screenTex.pitch = screenTex.full_width * sizeof(uint32_t); [[self openGLContext] makeCurrentContext]; [[self openGLContext] update]; @@ -281,7 +285,8 @@ glEnable(GL_TEXTURE_RECTANGLE_EXT); glBindTexture(GL_TEXTURE_RECTANGLE_EXT, i+1); - glTextureRangeAPPLE(GL_TEXTURE_RECTANGLE_EXT, screenTex.width*screenTex.pitch, + glTextureRangeAPPLE(GL_TEXTURE_RECTANGLE_EXT, + screenTex.full_width*screenTex.pitch, screenTex.pixels ); glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_STORAGE_HINT_APPLE, @@ -293,8 +298,8 @@ glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); - glTexImage2D( GL_TEXTURE_RECTANGLE_EXT, 0, GL_RGBA, screenTex.width, - screenTex.height, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, + glTexImage2D( GL_TEXTURE_RECTANGLE_EXT, 0, GL_RGBA, screenTex.full_width, + screenTex.full_height, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, screenTex.pixels ); } screenTexInitialised = YES; Modified: branches/fusegl/fuse/ui/cocoa/cocoadisplay.c =================================================================== --- branches/fusegl/fuse/ui/cocoa/cocoadisplay.c 2006-12-23 11:00:00 UTC (rev 261) +++ branches/fusegl/fuse/ui/cocoa/cocoadisplay.c 2006-12-24 13:35:50 UTC (rev 262) @@ -78,20 +78,52 @@ static uint32_t bw_values[16]; +static void +init_scalers( void ) +{ + scaler_register_clear(); + + scaler_register( SCALER_NORMAL ); + if( machine_current->timex ) { + scaler_register( SCALER_TIMEXTV ); + } else { + scaler_register( SCALER_TV2X ); + scaler_register( SCALER_2XSAI ); + scaler_register( SCALER_SUPER2XSAI ); + scaler_register( SCALER_SUPEREAGLE ); + scaler_register( SCALER_ADVMAME2X ); + scaler_register( SCALER_ADVMAME3X ); + scaler_register( SCALER_DOTMATRIX ); + scaler_register( SCALER_HQ2X ); + scaler_register( SCALER_HQ3X ); + } + + if( scaler_is_supported( current_scaler ) ) { + scaler_select_scaler( current_scaler ); + } else { + scaler_select_scaler( SCALER_NORMAL ); + } +} + static int cocoadisplay_load_gfx_mode( void ) { - screen.width = (image_width + 3); - screen.height = image_height+3; + screen.image_width = image_width; + screen.image_height = image_height; /* Need some extra bytes around when using 2xSaI */ - screen.pixels = calloc(screen.width*screen.height, sizeof(uint32_t)); + screen.full_width = image_width+3; + screen.image_xoffset = 1; + screen.full_height = image_height+3; + screen.image_yoffset = 1; + + screen.pixels = calloc(screen.full_width*screen.full_height, sizeof(uint32_t)); if( !screen.pixels ) { fprintf( stderr, "%s: couldn't create screen.pixels\n", fuse_progname ); return 1; } - screen.pitch = screen.width * sizeof(uint32_t); + screen.pitch = screen.full_width * sizeof(uint32_t); /* Create OpenGL textures for the image in DisplayOpenGLView */ CreateTexture(&screen); @@ -135,6 +167,8 @@ image_width = width; image_height = height; + init_scalers(); + cocoadisplay_load_gfx_mode(); /* We can now output error messages to our output device */ @@ -172,8 +206,8 @@ if( machine_current->timex ) { x <<= 1; y <<= 1; dest_base = dest = (uint32_t*)( (uint8_t*)screen.pixels + - (x+1) * sizeof(uint32_t) + - (y+1) * screen.pitch); + (x+screen.image_xoffset) * sizeof(uint32_t) + + (y+screen.image_yoffset) * screen.pitch); *(dest++) = palette_colour; *(dest++) = palette_colour; @@ -182,7 +216,8 @@ *(dest++) = palette_colour; } else { dest = (uint32_t*)( (uint8_t*)screen.pixels + - (x+1) * sizeof(uint32_t) + (y+1) * screen.pitch ); + (x+screen.image_xoffset) * sizeof(uint32_t) + + (y+screen.image_yoffset) * screen.pitch ); *dest = palette_colour; } @@ -207,7 +242,8 @@ x <<= 4; y <<= 1; dest_base = (uint32_t*)( (uint8_t*)screen.pixels + - (x+1) * sizeof(uint32_t) + (y+1) * screen.pitch ); + (x+screen.image_xoffset) * sizeof(uint32_t) + + (y+screen.image_yoffset) * screen.pitch ); for( i=0; i<2; i++ ) { dest = dest_base; @@ -233,8 +269,9 @@ } } else { x <<= 3; - dest = (uint32_t*)( (uint8_t*)screen.pixels + (x+1) * sizeof(uint32_t) + - (y+1) * screen.pitch ); + dest = (uint32_t*)( (uint8_t*)screen.pixels + + (x+screen.image_xoffset) * sizeof(uint32_t) + + (y+screen.image_yoffset) * screen.pitch ); *(dest++) = ( data & 0x80 ) ? palette_ink : palette_paper; *(dest++) = ( data & 0x40 ) ? palette_ink : palette_paper; @@ -260,8 +297,9 @@ uint32_t palette_paper = palette_values[ paper ]; x <<= 4; y <<= 1; - dest_base = (uint32_t*)( (uint8_t*)screen.pixels + (x+1) * sizeof(uint32_t) + - (y+1) * screen.pitch ); + dest_base = (uint32_t*)( (uint8_t*)screen.pixels + (x+screen.image_xoffset) * + sizeof(uint32_t) + (y+screen.image_yoffset) * + screen.pitch ); for( i=0; i<2; i++ ) { dest = dest_base; Modified: branches/fusegl/fuse/ui/cocoa/cocoadisplay.h =================================================================== --- branches/fusegl/fuse/ui/cocoa/cocoadisplay.h 2006-12-23 11:00:00 UTC (rev 261) +++ branches/fusegl/fuse/ui/cocoa/cocoadisplay.h 2006-12-24 13:35:50 UTC (rev 262) @@ -31,8 +31,12 @@ typedef struct Cocoa_Texture { void *pixels; - int height; - int width; + int full_height; + int full_width; + int image_height; + int image_width; + int image_xoffset; + int image_yoffset; int pitch; } Cocoa_Texture; Copied: branches/fusegl/fuse/ui/cocoa/cocoaerror.m (from rev 261, branches/fusegl/fuse/fusepb/error.m) =================================================================== --- branches/fusegl/fuse/ui/cocoa/cocoaerror.m (rev 0) +++ branches/fusegl/fuse/ui/cocoa/cocoaerror.m 2006-12-24 13:35:50 UTC (rev 262) @@ -0,0 +1,81 @@ +/* cocoaerror.m: handle errors for Mac OS X Cocoa UI + Copyright (c) 2002 Philip Kendall + Copyright (c) 2002-2004 Fredrick Meunier + + $Id$ + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Author contact information: + + E-mail: pak...@sr... + Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + +*/ + +#include <config.h> + +#import <Foundation/NSString.h> +#import <AppKit/NSPanel.h> + +#include <stdarg.h> +#include <stdio.h> +#include <unistd.h> + +#include "fuse.h" +#include "ui/ui.h" +#include "settings.h" + +int +aqua_verror( ui_error_level severity, const char *message ) +{ + NSString *title; + + /* Set the appropriate title */ + switch( severity ) { + case UI_ERROR_INFO: + title = @"Fuse - Info"; + break; + case UI_ERROR_ERROR: + title = @"Fuse - Error"; + break; + default: + title = @"Fuse - (Unknown error)"; + break; + } + + NSString *alertString = [NSString stringWithUTF8String:message]; + + switch( severity ) { + case UI_ERROR_INFO: + NSRunAlertPanel(title, alertString, nil, nil, nil); + break; + case UI_ERROR_ERROR: + default: + NSRunCriticalAlertPanel(title, alertString, nil, nil, nil); + break; + } + + return 0; +} + +int +ui_error_specific( ui_error_level severity, const char *message ) +{ + if ( !settings_current.full_screen ) { + return aqua_verror( severity, message ); + } + return 0; +} Copied: branches/fusegl/fuse/ui/cocoa/cocoascreenshot.h (from rev 261, branches/fusegl/fuse/fusepb/sdlscreenshot.h) =================================================================== --- branches/fusegl/fuse/ui/cocoa/cocoascreenshot.h (rev 0) +++ branches/fusegl/fuse/ui/cocoa/cocoascreenshot.h 2006-12-24 13:35:50 UTC (rev 262) @@ -0,0 +1,30 @@ +/* cocoascreenshot.h: Routines for saving .png etc. screenshots + Copyright (c) 2006 Fredrick Meunier + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Author contact information: + + E-mail: pak...@sr... + Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + +*/ + +#ifndef COCOASCREENSHOT_H +#define COCOASCREENSHOT_H + +int screenshot_write( const char *filename ); + +#endif /* #ifndef COCOASCREENSHOT_H */ Copied: branches/fusegl/fuse/ui/cocoa/cocoascreenshot.m (from rev 261, branches/fusegl/fuse/fusepb/sdlscreenshot.m) =================================================================== --- branches/fusegl/fuse/ui/cocoa/cocoascreenshot.m (rev 0) +++ branches/fusegl/fuse/ui/cocoa/cocoascreenshot.m 2006-12-24 13:35:50 UTC (rev 262) @@ -0,0 +1,103 @@ +/* cocoascreenshot.m: Routines for handling external format screenshots + Copyright (c) 2003,2005-2006 Fredrick Meunier + Copyright (C) 1997-2003 Sam Lantinga + + $Id$ + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Author contact information: + + E-mail: pak...@sr... + Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + +*/ + +#include <config.h> + +#include <Cocoa/Cocoa.h> + +#include "cocoascreenshot.h" +#include "display.h" +#include "thumbnail.h" +#include "ui/ui.h" + +int +screenshot_write( const char *filename ) +{ + size_t icon_stride; + size_t base_height, base_width; + size_t base_height_offset, base_width_offset; + int error = 0; + size_t len = strlen(filename); + const char* extension; + NSBitmapImageRep *bits; + NSAutoreleasePool *pool; + NSBitmapImageFileType type = NSTIFFFileType; + + if( len < 4 ) { + return 1; + } + + extension = filename + len - 4; + + if( !strcmp( extension, ".png" ) ) { + type = NSPNGFileType; + } else if( !strcmp( extension, ".gif" ) ) { + type = NSGIFFileType; + } else if( !strcmp( extension, ".jpg" ) ) { + type = NSJPEGFileType; + } else if( !strcmp( extension, ".bmp" ) ) { + type = NSBMPFileType; + } + + if( machine_current->timex ) { + base_height = 2 * DISPLAY_SCREEN_HEIGHT; + base_width = DISPLAY_SCREEN_WIDTH; + base_height_offset = 0; + base_width_offset = 0; + icon_stride = DISPLAY_SCREEN_WIDTH * 3; + } else { + base_height = DISPLAY_SCREEN_HEIGHT; + base_width = DISPLAY_SCREEN_WIDTH/2; + base_height_offset = 0; + base_width_offset = 0 ; + icon_stride = DISPLAY_ASPECT_WIDTH * 3; + } + + pool = [ [ NSAutoreleasePool alloc ] init ]; + + bits = [ [ NSBitmapImageRep alloc] + initWithBitmapDataPlanes:NULL + pixelsWide:base_width pixelsHigh:base_height + bitsPerSample:8 samplesPerPixel:3 hasAlpha:NO isPlanar:NO + colorSpaceName:NSCalibratedRGBColorSpace + bytesPerRow:icon_stride bitsPerPixel:24 ]; + + /* Change from paletted data to RGB data */ + error = get_rgb24_data( [bits bitmapData], icon_stride, base_height, + base_width, base_height_offset, base_width_offset ); + if( error ) goto freePool; + + NSData *data = [ bits representationUsingType:type properties:nil ]; + [ data writeToFile:[NSString stringWithUTF8String:filename] atomically:NO ]; + + [ bits release ]; + +freePool: + [pool release]; + + return error; +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2006-12-23 11:00:03
|
Revision: 261 http://svn.sourceforge.net/fuse-for-macosx/?rev=261&view=rev Author: fredm Date: 2006-12-23 03:00:00 -0800 (Sat, 23 Dec 2006) Log Message: ----------- Add CoreAudio sound driver, sort out various timing issues so we can run at 50 or 60 Hz and also at other than 100% speeds. Modified Paths: -------------- branches/fusegl/fuse/TODO branches/fusegl/fuse/event.c branches/fusegl/fuse/event.h branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj branches/fusegl/fuse/fusepb/FuseMenus.h branches/fusegl/fuse/fusepb/FuseMenus.m branches/fusegl/fuse/fusepb/controllers/FuseController.h branches/fusegl/fuse/fusepb/controllers/FuseController.m branches/fusegl/fuse/fusepb/controllers/PreferencesController.m branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/classes.nib branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/info.nib branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/keyedobjects.nib branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m branches/fusegl/fuse/machine.c branches/fusegl/fuse/sound/coreaudiosound.c Added Paths: ----------- branches/fusegl/fuse/ui/cocoa/cocoaui.m Removed Paths: ------------- branches/fusegl/fuse/ui/cocoa/cocoaui.c Modified: branches/fusegl/fuse/TODO =================================================================== --- branches/fusegl/fuse/TODO 2006-12-23 01:32:26 UTC (rev 260) +++ branches/fusegl/fuse/TODO 2006-12-23 11:00:00 UTC (rev 261) @@ -6,7 +6,7 @@ X Add GL renderer X Add native keyboard processing (removes SDL keyboard input dependency from Fuse) -* Add native CoreAudio sound processing (removes SDL sound dependency from Fuse) +X Add native CoreAudio sound processing (removes SDL sound dependency from Fuse) * Fix menus, preferences etc. * Fix scalers * Add native joystick processing (removes SDL joystick input dependency from Modified: branches/fusegl/fuse/event.c =================================================================== --- branches/fusegl/fuse/event.c 2006-12-23 01:32:26 UTC (rev 260) +++ branches/fusegl/fuse/event.c 2006-12-23 11:00:00 UTC (rev 261) @@ -56,6 +56,9 @@ /* We are at the end of a frame */ int event_frame_end; +/* We've had a timer event */ +int event_timer; + /* The actual list of events */ static GSList* event_list; @@ -84,6 +87,7 @@ event_free=NULL; event_next_event=event_no_events; event_frame_end=0; + event_timer=0; return 0; } @@ -152,6 +156,25 @@ event_do_frame_end(); } +/* Run until target_tstates */ +void +event_do_timer( libspectrum_dword target_tstates ) +{ + if( event_add( target_tstates + tstates, EVENT_TYPE_TIMER ) ) { + /* Some sort of dire error */ + return; + } + event_timer=0; + while( !event_timer ) { + z80_do_opcodes(); + event_do_events(); + if( event_frame_end ) { + event_do_frame_end(); + } + } + event_timer=0; +} + /* Do all events which have passed */ int event_do_events(void) { @@ -174,7 +197,7 @@ case EVENT_TYPE_EDGE: tape_next_edge( ptr->tstates ); break; case EVENT_TYPE_TIMER: - timer_frame( ptr->tstates ); + event_timer = 1; break; case EVENT_TYPE_FRAME: Modified: branches/fusegl/fuse/event.h =================================================================== --- branches/fusegl/fuse/event.h 2006-12-23 01:32:26 UTC (rev 260) +++ branches/fusegl/fuse/event.h 2006-12-23 11:00:00 UTC (rev 261) @@ -78,6 +78,9 @@ /* Do a single frame */ void event_do_frame(void); +/* Run until the next timer event */ +void event_do_timer( libspectrum_dword target_tstates ); + /* Called at end of frame to reduce T-state count of all entries */ int event_frame( libspectrum_dword tstates_per_frame ); Modified: branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj =================================================================== --- branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj 2006-12-23 01:32:26 UTC (rev 260) +++ branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj 2006-12-23 11:00:00 UTC (rev 261) @@ -264,10 +264,10 @@ B6825549091817F30014B5EE /* divide.c in Sources */ = {isa = PBXBuildFile; fileRef = B6825547091817F30014B5EE /* divide.c */; }; B682554A091817F30014B5EE /* divide.h in Headers */ = {isa = PBXBuildFile; fileRef = B6825548091817F30014B5EE /* divide.h */; }; B6A6F0960B3C108C000B88E9 /* coreaudiosound.c in Sources */ = {isa = PBXBuildFile; fileRef = B6A6F0950B3C108C000B88E9 /* coreaudiosound.c */; }; + B6A6F0DA0B3D141B000B88E9 /* cocoaui.m in Sources */ = {isa = PBXBuildFile; fileRef = B6A6F0D90B3D141B000B88E9 /* cocoaui.m */; }; B6CE7F400B2830A300EB65B3 /* cocoadisplay.c in Sources */ = {isa = PBXBuildFile; fileRef = B6CE7F3A0B2830A300EB65B3 /* cocoadisplay.c */; }; B6CE7F410B2830A300EB65B3 /* cocoadisplay.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CE7F3B0B2830A300EB65B3 /* cocoadisplay.h */; }; B6CE7F420B2830A300EB65B3 /* cocoajoystick.c in Sources */ = {isa = PBXBuildFile; fileRef = B6CE7F3C0B2830A300EB65B3 /* cocoajoystick.c */; }; - B6CE7F430B2830A300EB65B3 /* cocoaui.c in Sources */ = {isa = PBXBuildFile; fileRef = B6CE7F3D0B2830A300EB65B3 /* cocoaui.c */; }; B6CE7F440B2830A300EB65B3 /* cocoaui.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CE7F3E0B2830A300EB65B3 /* cocoaui.h */; }; B6CE7F520B283A0700EB65B3 /* main.mm in Sources */ = {isa = PBXBuildFile; fileRef = B6CE7F510B283A0700EB65B3 /* main.mm */; }; B6CE7FCD0B28FBD600EB65B3 /* DisplayOpenGLView.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CE7FCB0B28FBD600EB65B3 /* DisplayOpenGLView.h */; }; @@ -449,6 +449,7 @@ B68CB2C603DD920300A804BA /* disassemble.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = disassemble.c; path = ../debugger/disassemble.c; sourceTree = "<group>"; }; B68CB2CC03DD923C00A804BA /* memory.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = memory.c; sourceTree = "<group>"; }; B6A6F0950B3C108C000B88E9 /* coreaudiosound.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = coreaudiosound.c; path = sound/coreaudiosound.c; sourceTree = "<group>"; }; + B6A6F0D90B3D141B000B88E9 /* cocoaui.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = cocoaui.m; sourceTree = "<group>"; }; B6A7F0E904C9A11D001025EB /* NumberFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NumberFormatter.h; sourceTree = "<group>"; }; B6A7F0EA04C9A11D001025EB /* NumberFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NumberFormatter.m; sourceTree = "<group>"; }; B6AA8A3C03D2FC1C00FED55D /* trdos.rom */ = {isa = PBXFileReference; lastKnownFileType = file; name = trdos.rom; path = ../roms/trdos.rom; sourceTree = SOURCE_ROOT; }; @@ -490,7 +491,6 @@ B6CE7F3A0B2830A300EB65B3 /* cocoadisplay.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = cocoadisplay.c; sourceTree = "<group>"; }; B6CE7F3B0B2830A300EB65B3 /* cocoadisplay.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cocoadisplay.h; sourceTree = "<group>"; }; B6CE7F3C0B2830A300EB65B3 /* cocoajoystick.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = cocoajoystick.c; sourceTree = "<group>"; }; - B6CE7F3D0B2830A300EB65B3 /* cocoaui.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = cocoaui.c; sourceTree = "<group>"; }; B6CE7F3E0B2830A300EB65B3 /* cocoaui.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cocoaui.h; sourceTree = "<group>"; }; B6CE7F510B283A0700EB65B3 /* main.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = main.mm; sourceTree = "<group>"; }; B6CE7FCB0B28FBD600EB65B3 /* DisplayOpenGLView.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DisplayOpenGLView.h; sourceTree = "<group>"; }; @@ -890,8 +890,8 @@ B6CE7F3A0B2830A300EB65B3 /* cocoadisplay.c */, B6CE7F3B0B2830A300EB65B3 /* cocoadisplay.h */, B6CE7F3C0B2830A300EB65B3 /* cocoajoystick.c */, - B6CE7F3D0B2830A300EB65B3 /* cocoaui.c */, B6CE7F3E0B2830A300EB65B3 /* cocoaui.h */, + B6A6F0D90B3D141B000B88E9 /* cocoaui.m */, B6E0252B0B38AFE500E23A0F /* keysyms.m */, ); path = cocoa; @@ -1437,11 +1437,11 @@ B6403FD80A7E4B1A00E00B11 /* loader.c in Sources */, B6CE7F400B2830A300EB65B3 /* cocoadisplay.c in Sources */, B6CE7F420B2830A300EB65B3 /* cocoajoystick.c in Sources */, - B6CE7F430B2830A300EB65B3 /* cocoaui.c in Sources */, B6CE7F520B283A0700EB65B3 /* main.mm in Sources */, B6CE7FCE0B28FBD600EB65B3 /* DisplayOpenGLView.m in Sources */, B6E0252C0B38AFE500E23A0F /* keysyms.m in Sources */, B6A6F0960B3C108C000B88E9 /* coreaudiosound.c in Sources */, + B6A6F0DA0B3D141B000B88E9 /* cocoaui.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; Modified: branches/fusegl/fuse/fusepb/FuseMenus.h =================================================================== --- branches/fusegl/fuse/fusepb/FuseMenus.h 2006-12-23 01:32:26 UTC (rev 260) +++ branches/fusegl/fuse/fusepb/FuseMenus.h 2006-12-23 11:00:00 UTC (rev 261) @@ -32,6 +32,7 @@ void CreateTexture(Cocoa_Texture*); void DestroyTexture(void); +void SetEmulationHz(float); void Hide(void); void Open(void); Modified: branches/fusegl/fuse/fusepb/FuseMenus.m =================================================================== --- branches/fusegl/fuse/fusepb/FuseMenus.m 2006-12-23 01:32:26 UTC (rev 260) +++ branches/fusegl/fuse/fusepb/FuseMenus.m 2006-12-23 11:00:00 UTC (rev 261) @@ -56,6 +56,11 @@ [[DisplayOpenGLView instance] destroyTexture]; } +void SetEmulationHz( float hz ) +{ + [[DisplayOpenGLView instance] setEmulationHz:hz]; +} + void Hide(void) { [NSApp hide:[FuseController singleton]]; Modified: branches/fusegl/fuse/fusepb/controllers/FuseController.h =================================================================== --- branches/fusegl/fuse/fusepb/controllers/FuseController.h 2006-12-23 01:32:26 UTC (rev 260) +++ branches/fusegl/fuse/fusepb/controllers/FuseController.h 2006-12-23 11:00:00 UTC (rev 261) @@ -55,6 +55,7 @@ IBOutlet NSMenuItem *zxcf; IBOutlet NSMenuItem *tapePlay; IBOutlet NSMenu *recentSnaps; + IBOutlet NSWindow *window; IBOutlet id savePanelAccessoryView; IBOutlet NSPopUpButton* saveFileType; @@ -144,6 +145,7 @@ - (void)ui_menu_activate_media_ide_simple8bit:(int)active; - (void)ui_menu_activate_media_ide_zxatasp:(int)active; - (void)ui_menu_activate_media_ide_zxcf:(int)active; +- (int)ui_statusbar_update_speed:(float)speed; - (void)openFile:(char *)filename; - (void)openRecent:(id)sender; Modified: branches/fusegl/fuse/fusepb/controllers/FuseController.m =================================================================== --- branches/fusegl/fuse/fusepb/controllers/FuseController.m 2006-12-23 01:32:26 UTC (rev 260) +++ branches/fusegl/fuse/fusepb/controllers/FuseController.m 2006-12-23 11:00:00 UTC (rev 261) @@ -1023,6 +1023,11 @@ [if1 setEnabled:active == 0 ? NO : YES]; } +- (int)ui_statusbar_update_speed:(float)speed +{ + [window setTitle:[NSString stringWithFormat:@"Fuse - %3.0f%%", speed]]; +} + - (BOOL)validateMenuItem:(id <NSMenuItem>)menuItem { switch( [menuItem tag] ) { Modified: branches/fusegl/fuse/fusepb/controllers/PreferencesController.m =================================================================== --- branches/fusegl/fuse/fusepb/controllers/PreferencesController.m 2006-12-23 01:32:26 UTC (rev 260) +++ branches/fusegl/fuse/fusepb/controllers/PreferencesController.m 2006-12-23 11:00:00 UTC (rev 261) @@ -29,6 +29,7 @@ #include <string.h> #import "FuseController.h" +#import "DisplayOpenGLView.h" #import "JoystickConfigurationController.h" #import "PreferencesController.h" #import "CAMachines.h" @@ -40,6 +41,7 @@ #include "printer.h" #include "settings.h" #include "settings_cocoa.h" +#include "sound.h" #include "machine.h" #include "ui.h" #include "ui/scaler/scaler.h" @@ -120,6 +122,10 @@ [machineRoms release]; fuse_emulation_unpause(); + + /* If we've enabled sound we want to put some data in the buffers before + too long to avoid glitches */ + if( sound_enabled ) [[DisplayOpenGLView instance] updateEmulationForTimeDelta:0]; } - (IBAction)chooseFile:(id)sender Modified: branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/classes.nib =================================================================== --- branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/classes.nib 2006-12-23 01:32:26 UTC (rev 260) +++ branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/classes.nib 2006-12-23 11:00:00 UTC (rev 261) @@ -77,6 +77,7 @@ savePanelAccessoryView = id; simple8Bit = NSMenuItem; tapePlay = NSMenuItem; + window = NSWindow; zxatasp = NSMenuItem; zxcf = NSMenuItem; }; Modified: branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/info.nib =================================================================== --- branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/info.nib 2006-12-23 01:32:26 UTC (rev 260) +++ branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/info.nib 2006-12-23 11:00:00 UTC (rev 261) @@ -13,8 +13,8 @@ <string>446.1</string> <key>IBOpenObjects</key> <array> + <integer>29</integer> <integer>877</integer> - <integer>29</integer> </array> <key>IBSystem Version</key> <string>8L2127</string> Modified: branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/keyedobjects.nib =================================================================== (Binary files differ) Modified: branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h 2006-12-23 01:32:26 UTC (rev 260) +++ branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h 2006-12-23 11:00:00 UTC (rev 261) @@ -51,6 +51,8 @@ int cocoakeyboard_caps_shift_pressed; int cocoakeyboard_symbol_shift_pressed; input_key unicode_keysym; + + CFAbsoluteTime time; } +(DisplayOpenGLView *) instance; +(void) initialize; @@ -59,6 +61,7 @@ -(void) destroyTexture; -(void) updateEmulationForTimeDelta:(CFAbsoluteTime)deltaTime; +-(void) setEmulationHz:(float)hz; -(id) initWithFrame:(NSRect)frameRect; -(void) awakeFromNib; Modified: branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2006-12-23 01:32:26 UTC (rev 260) +++ branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2006-12-23 11:00:00 UTC (rev 261) @@ -32,14 +32,22 @@ #include "fuse.h" #include "fusepb/main.h" #include "keyboard.h" +#include "settings.h" +#include "sound.h" extern keysyms_map_t unicode_keysyms_map[]; +#include <CoreAudio/AudioHardware.h> +#include "sound/sfifo.h" + +extern sfifo_t sound_fifo; +extern AudioStreamBasicDescription deviceFormat; + @implementation DisplayOpenGLView static DisplayOpenGLView *instance = nil; -+ (DisplayOpenGLView *) instance ++(DisplayOpenGLView *) instance { return instance; } @@ -82,9 +90,9 @@ } -- (id) initWithFrame:(NSRect)frameRect +-(id) initWithFrame:(NSRect)frameRect { - // Init pixel format attribs + /* Init pixel format attribs */ NSOpenGLPixelFormatAttribute attrs[] = { NSOpenGLPFAAccelerated, NSOpenGLPFANoRecovery, @@ -92,7 +100,7 @@ 0 }; - // Get pixel format from OpenGL + /* Get pixel format from OpenGL */ NSOpenGLPixelFormat* pixFmt = [[NSOpenGLPixelFormat alloc] initWithAttributes:attrs]; if (!pixFmt) { NSLog(@"No pixel format -- exiting"); @@ -109,9 +117,9 @@ [[self openGLContext] makeCurrentContext]; - timer = [[NSTimer scheduledTimerWithTimeInterval: (1.0f / 50.0f) target: self selector:@selector(drawRect:) userInfo:self repeats:true] retain]; + timer = nil; - // Setup some basic OpenGL stuff + /* Setup some basic OpenGL stuff */ glPixelStorei(GL_UNPACK_ALIGNMENT, 1); glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); glClearColor(1.0f, 1.0f, 1.0f, 1.0f); @@ -132,30 +140,36 @@ -(void) awakeFromNib { - // FIXME: Do all the stuff that SDLMain.mm used - // to do command line wise, drag-n-drop etc. here? - // FIXME: Don't really like the argc, argv stuff being here... + /* FIXME: Do all the stuff that SDLMain.mm used + * to do command line wise, drag-n-drop etc. here? + */ + /* FIXME: Don't really like the argc, argv stuff being here... */ if( fuse_init( ac, av ) ) { fprintf( stderr, "%s: error initialising -- giving up!\n", fuse_progname ); } [self initKeyboard]; + + time = CFAbsoluteTimeGetCurrent(); /* set emulation time start time */ } -- (void)drawRect:(NSRect)aRect +-(void) drawRect:(NSRect)aRect { - // update emulation - [self updateEmulationForTimeDelta:0]; + CFTimeInterval nowTime = CFAbsoluteTimeGetCurrent(); + CFTimeInterval deltaTime = nowTime - time; + if (deltaTime <= 1.0) { /* skip pauses */ + [self updateEmulationForTimeDelta:deltaTime]; + } + time = nowTime; if( NO == screenTexInitialised ) return; - // Need to draw texture to screen here + /* Need to draw texture to screen here */ memcpy(screenTex.pixels, screen.pixels, screenTex.pitch*screenTex.height); - // Make this context current [[self openGLContext] makeCurrentContext]; - // Bind, update and draw new image + /* Bind, update and draw new image */ glBindTexture(GL_TEXTURE_RECTANGLE_EXT, 1); glTexSubImage2D(GL_TEXTURE_RECTANGLE_EXT, 0, 0, 0, screenTex.width, @@ -178,14 +192,15 @@ glEnd(); + /* FIXME: Probably still need to glFlush() in fullscreen mode */ //glFlush(); - // Swap buffer to screen + /* Swap buffer to screen */ [[self openGLContext] flushBuffer]; } -// moved or resized -- (void)update +/* moved or resized */ +-(void) update { NSRect rect; @@ -207,8 +222,8 @@ [self setNeedsDisplay:true]; } -// scrolled, moved or resized -- (void)reshape +/* scrolled, moved or resized */ +-(void) reshape { NSRect rect; @@ -235,7 +250,7 @@ GLuint i; if( screenTexInitialised == NO) return; - // May want to have a double buffered texture later + /* FIXME: May want to have a double buffered texture later */ for(i = 0; i < 1; i++) { GLint dt = i+1; glDeleteTextures(1, &dt); @@ -259,7 +274,7 @@ [[self openGLContext] makeCurrentContext]; [[self openGLContext] update]; - // May want to have a double buffered texture later + /* FIXME: May want to have a double buffered texture later */ for(i = 0; i < 1; i++) { glDisable(GL_TEXTURE_2D); @@ -285,22 +300,43 @@ screenTexInitialised = YES; } -// given a delta time in seconds, update overall emulation state -- (void) updateEmulationForTimeDelta:(CFAbsoluteTime)deltaTime +/* given a delta time in seconds, update overall emulation state */ +-(void) updateEmulationForTimeDelta:(CFAbsoluteTime)deltaTime { -// Note: will be called 50 or 60 times/frame - if running at non 100% speed will -// want to run a fraction of the normal time - event_do_frame(); + if( sound_enabled ) { + /* emulate until fifo is full */ + while( sfifo_space( &sound_fifo ) >= (sound_stereo+1) * 2 * sound_framesiz ) { + event_do_frame(); + } + } else { + float speed = ( settings_current.emulation_speed < 1 ? + 100.0 : + settings_current.emulation_speed ) / 100.0; + libspectrum_dword time_tstates = deltaTime * + machine_current->timings.processor_speed * + speed + 0.5; + event_do_timer( time_tstates ); + } } -- (void)mouseDragged:(NSEvent *)theEvent +-(void) setEmulationHz:(float)hz { + [timer invalidate]; + [timer release]; + + timer = [[NSTimer scheduledTimerWithTimeInterval: (1.0f / hz) + target:self selector:@selector(drawRect:) + userInfo:self repeats:true] retain]; } -- (void)mouseDown:(NSEvent *)theEvent +-(void) mouseDragged:(NSEvent *)theEvent { } +-(void) mouseDown:(NSEvent *)theEvent +{ +} + -(void) initKeyboard { keysyms_map_t *ptr3; Modified: branches/fusegl/fuse/machine.c =================================================================== --- branches/fusegl/fuse/machine.c 2006-12-23 01:32:26 UTC (rev 260) +++ branches/fusegl/fuse/machine.c 2006-12-23 11:00:00 UTC (rev 261) @@ -29,6 +29,7 @@ #include <stdlib.h> #include <string.h> +#include "FuseMenus.h" #include "divide.h" #include "event.h" #include "fuse.h" @@ -253,7 +254,6 @@ /* Reset the event stack */ event_reset(); - if( event_add( 0, EVENT_TYPE_TIMER ) ) return 1; if( event_add( machine->timings.tstates_per_frame, EVENT_TYPE_FRAME ) ) return 1; @@ -395,6 +395,10 @@ error = machine_current->memory_map(); if( error ) return error; + /* Select 50 or 60 Hz emulation timer */ + SetEmulationHz( (float)machine_current->timings.processor_speed / + machine_current->timings.tstates_per_frame ); + /* Set up the contention array */ for( i = 0; i < machine_current->timings.tstates_per_frame; i++ ) ula_contention[ i ] = machine_current->ram.contend_delay( i ); Modified: branches/fusegl/fuse/sound/coreaudiosound.c =================================================================== --- branches/fusegl/fuse/sound/coreaudiosound.c 2006-12-23 01:32:26 UTC (rev 260) +++ branches/fusegl/fuse/sound/coreaudiosound.c 2006-12-23 11:00:00 UTC (rev 261) @@ -30,11 +30,15 @@ #include "event.h" #include "sfifo.h" +#include "settings.h" #include "sound.h" #include "ui/ui.h" sfifo_t sound_fifo; +/* Number of Spectrum frames audio latency to use */ +#define NUM_FRAMES 2 + static OSStatus coreaudiowrite( void *inRefCon, AudioUnitRenderActionFlags *ioActionFlags, @@ -44,7 +48,7 @@ AudioBufferList *ioData ); /* info about the format used for writing to output unit */ -static AudioStreamBasicDescription deviceFormat; +AudioStreamBasicDescription deviceFormat; /* converts from Fuse format (signed 16 bit ints) to CoreAudio format (floats) */ @@ -159,8 +163,14 @@ return 1; } - if( ( error = sfifo_init( &sound_fifo, 2 * deviceFormat.mChannelsPerFrame - * deviceBufferSize + 1 ) ) ) { + float hz = (float)machine_current->timings.processor_speed / + machine_current->timings.tstates_per_frame; + + int sound_framesiz = settings_current.sound_freq / hz; + if( ( error = sfifo_init( &sound_fifo, NUM_FRAMES + * deviceFormat.mBytesPerFrame + * deviceFormat.mChannelsPerFrame + * sound_framesiz + 1 ) ) ) { ui_error( UI_ERROR_ERROR, "Problem initialising sound fifo: %s", strerror ( error ) ); return 1; Deleted: branches/fusegl/fuse/ui/cocoa/cocoaui.c =================================================================== --- branches/fusegl/fuse/ui/cocoa/cocoaui.c 2006-12-23 01:32:26 UTC (rev 260) +++ branches/fusegl/fuse/ui/cocoa/cocoaui.c 2006-12-23 11:00:00 UTC (rev 261) @@ -1,97 +0,0 @@ -/* cocoaui.c: Routines for dealing with the Mac OS X user interface - Copyright (c) 2006 Fredrick Meunier - - $Id: sdlui.c,v 1.11 2005/06/06 14:24:05 fredm Exp $ - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - Author contact information: - - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England - -*/ - -#include <config.h> - -#include <stdio.h> - -#include "display.h" -#include "fuse.h" -#include "ui/ui.h" -#include "ui/uidisplay.h" -#include "pokefinder/pokefinder.h" -#include "settings.h" -#include "cocoaui.h" -#include "tape.h" -#include "ui/scaler/scaler.h" - -int -ui_init( int *argc, char ***argv ) -{ - int error; - - return 0; -} - -int -ui_event( void ) -{ - return 0; -} - -int -ui_end( void ) -{ - int error; - - return 0; -} - -int -ui_statusbar_update_speed( float speed ) -{ - char buffer[15]; - const char fuse[] = "Fuse"; - - snprintf( buffer, 15, "%s - %3.0f%%", fuse, speed ); - - return 0; -} - -int -ui_mouse_grab( int startup ) -{ - return 0; -} - -int -ui_mouse_release( int suspend ) -{ - return 0; -} - -/* Called on machine selection */ -int -ui_widgets_reset( void ) -{ - pokefinder_clear(); - return 0; -} - -void -cocoaui_quit( void ) -{ -} Copied: branches/fusegl/fuse/ui/cocoa/cocoaui.m (from rev 258, branches/fusegl/fuse/ui/cocoa/cocoaui.c) =================================================================== --- branches/fusegl/fuse/ui/cocoa/cocoaui.m (rev 0) +++ branches/fusegl/fuse/ui/cocoa/cocoaui.m 2006-12-23 11:00:00 UTC (rev 261) @@ -0,0 +1,94 @@ +/* cocoaui.c: Routines for dealing with the Mac OS X user interface + Copyright (c) 2006 Fredrick Meunier + + $Id: sdlui.c,v 1.11 2005/06/06 14:24:05 fredm Exp $ + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Author contact information: + + E-mail: pak...@sr... + Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + +*/ + +#include <config.h> + +#include <stdio.h> + +#import "FuseController.h" + +#include "display.h" +#include "fuse.h" +#include "ui/ui.h" +#include "ui/uidisplay.h" +#include "pokefinder/pokefinder.h" +#include "settings.h" +#include "cocoaui.h" +#include "tape.h" +#include "ui/scaler/scaler.h" + +int +ui_init( int *argc, char ***argv ) +{ + int error; + + return 0; +} + +int +ui_event( void ) +{ + return 0; +} + +int +ui_end( void ) +{ + int error; + + return 0; +} + +int +ui_statusbar_update_speed( float speed ) +{ + return [[FuseController singleton] ui_statusbar_update_speed:speed]; +} + +int +ui_mouse_grab( int startup ) +{ + return 0; +} + +int +ui_mouse_release( int suspend ) +{ + return 0; +} + +/* Called on machine selection */ +int +ui_widgets_reset( void ) +{ + pokefinder_clear(); + return 0; +} + +void +cocoaui_quit( void ) +{ +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2006-12-23 01:32:27
|
Revision: 260 http://svn.sourceforge.net/fuse-for-macosx/?rev=260&view=rev Author: fredm Date: 2006-12-22 17:32:26 -0800 (Fri, 22 Dec 2006) Log Message: ----------- Add CoreAudio sound driver - still getting lots of clicking from bad syncronisation between drawing and sound threads. Modified Paths: -------------- branches/fusegl/fuse/Makefile.am branches/fusegl/fuse/configure.in branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj branches/fusegl/fuse/fusepb/config.h branches/fusegl/fuse/sound/Makefile.am branches/fusegl/fuse/sound/lowlevel.h branches/fusegl/fuse/sound/sdlsound.c branches/fusegl/fuse/sound/sfifo.c branches/fusegl/fuse/timer.c Added Paths: ----------- branches/fusegl/fuse/sound/coreaudiosound.c Modified: branches/fusegl/fuse/Makefile.am =================================================================== --- branches/fusegl/fuse/Makefile.am 2006-12-20 08:57:32 UTC (rev 259) +++ branches/fusegl/fuse/Makefile.am 2006-12-23 01:32:26 UTC (rev 260) @@ -107,6 +107,7 @@ @GLIB_LIBS@ \ @PNG_LIBS@ \ @AO_LIBS@ \ +@COREAUDIO_LIBS@ \ @X_LIBS@ \ @XML_LIBS@ \ compat/libcompat.a Modified: branches/fusegl/fuse/configure.in =================================================================== --- branches/fusegl/fuse/configure.in 2006-12-20 08:57:32 UTC (rev 259) +++ branches/fusegl/fuse/configure.in 2006-12-23 01:32:26 UTC (rev 260) @@ -398,8 +398,7 @@ AC_CHECK_LIB( ao, ao_open_live, [AC_CHECK_HEADER( ao/ao.h, - [AC_DEFINE([USE_LIBAO], 1, [Defined if we're going to be using the instal -ed libao]) AO_LIBS='-lao'], + [AC_DEFINE([USE_LIBAO], 1, [Defined if we're going to be using the installed libao]) AO_LIBS='-lao'], [AC_MSG_WARN(ao/ao.h not found - no libao sound output)] )], [AC_MSG_WARN(ao_open_live not found - no libao sound output)] @@ -407,6 +406,15 @@ AC_SUBST(AO_LIBS) fi +dnl Check if a version of libao which supplies ao_open_live is available + CoreAudio/AudioHardware.h +AC_CHECK_HEADER( + CoreAudio/AudioHardware.h, + [AC_DEFINE([USE_COREAUDIO], 1, [Defined if we're going to be using CoreAudio]) COREAUDIO_LIBS='-framework CoreAudio -framework AudioUnit -framework CoreServices'], + [AC_MSG_WARN(CoreAudio/AudioHardware.h not found - no CoreAudio sound output)] +) +AC_SUBST(COREAUDIO_LIBS) + dnl Are we supplying the ROMs or relying on another package? AC_MSG_CHECKING(where to find the Spectrum ROM images) AC_ARG_WITH(roms-dir, Modified: branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj =================================================================== --- branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj 2006-12-20 08:57:32 UTC (rev 259) +++ branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj 2006-12-23 01:32:26 UTC (rev 260) @@ -226,7 +226,6 @@ B61F468509121DF100C8096C /* kempmouse.c in Sources */ = {isa = PBXBuildFile; fileRef = B68C17DC06C8C0DC004981AE /* kempmouse.c */; }; B61F468609121DF100C8096C /* if1.c in Sources */ = {isa = PBXBuildFile; fileRef = B6C8B723076D2B1A0007B7B5 /* if1.c */; }; B61F468709121DF100C8096C /* RollbackController.m in Sources */ = {isa = PBXBuildFile; fileRef = B63F994A077182B4004D6DFA /* RollbackController.m */; }; - B61F468809121DF100C8096C /* sdlsound.c in Sources */ = {isa = PBXBuildFile; fileRef = B6F06092078FB36500CD5D95 /* sdlsound.c */; }; B61F468909121DF100C8096C /* ts2068.c in Sources */ = {isa = PBXBuildFile; fileRef = B6F060A5078FB55400CD5D95 /* ts2068.c */; }; B61F468A09121DF100C8096C /* sfifo.c in Sources */ = {isa = PBXBuildFile; fileRef = B6F06100078FC2C900CD5D95 /* sfifo.c */; }; B61F468B09121DF100C8096C /* PreferencesController.m in Sources */ = {isa = PBXBuildFile; fileRef = B650F73F07E7CD3F00E4F3AF /* PreferencesController.m */; }; @@ -264,6 +263,7 @@ B650987109366CA2003AF1BF /* szx.icns in Resources */ = {isa = PBXBuildFile; fileRef = B650987009366CA2003AF1BF /* szx.icns */; }; B6825549091817F30014B5EE /* divide.c in Sources */ = {isa = PBXBuildFile; fileRef = B6825547091817F30014B5EE /* divide.c */; }; B682554A091817F30014B5EE /* divide.h in Headers */ = {isa = PBXBuildFile; fileRef = B6825548091817F30014B5EE /* divide.h */; }; + B6A6F0960B3C108C000B88E9 /* coreaudiosound.c in Sources */ = {isa = PBXBuildFile; fileRef = B6A6F0950B3C108C000B88E9 /* coreaudiosound.c */; }; B6CE7F400B2830A300EB65B3 /* cocoadisplay.c in Sources */ = {isa = PBXBuildFile; fileRef = B6CE7F3A0B2830A300EB65B3 /* cocoadisplay.c */; }; B6CE7F410B2830A300EB65B3 /* cocoadisplay.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CE7F3B0B2830A300EB65B3 /* cocoadisplay.h */; }; B6CE7F420B2830A300EB65B3 /* cocoajoystick.c in Sources */ = {isa = PBXBuildFile; fileRef = B6CE7F3C0B2830A300EB65B3 /* cocoajoystick.c */; }; @@ -448,6 +448,7 @@ B68CB2C503DD920300A804BA /* debugger.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = debugger.h; path = ../debugger/debugger.h; sourceTree = "<group>"; }; B68CB2C603DD920300A804BA /* disassemble.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = disassemble.c; path = ../debugger/disassemble.c; sourceTree = "<group>"; }; B68CB2CC03DD923C00A804BA /* memory.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = memory.c; sourceTree = "<group>"; }; + B6A6F0950B3C108C000B88E9 /* coreaudiosound.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = coreaudiosound.c; path = sound/coreaudiosound.c; sourceTree = "<group>"; }; B6A7F0E904C9A11D001025EB /* NumberFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NumberFormatter.h; sourceTree = "<group>"; }; B6A7F0EA04C9A11D001025EB /* NumberFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NumberFormatter.m; sourceTree = "<group>"; }; B6AA8A3C03D2FC1C00FED55D /* trdos.rom */ = {isa = PBXFileReference; lastKnownFileType = file; name = trdos.rom; path = ../roms/trdos.rom; sourceTree = SOURCE_ROOT; }; @@ -517,7 +518,6 @@ B6F048160952B5EC006D8005 /* snp.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = snp.icns; path = resources/snp.icns; sourceTree = SOURCE_ROOT; }; B6F048170952B5EC006D8005 /* sp.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = sp.icns; path = resources/sp.icns; sourceTree = SOURCE_ROOT; }; B6F0481A0952B5FD006D8005 /* zxs.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = zxs.icns; path = resources/zxs.icns; sourceTree = SOURCE_ROOT; }; - B6F06092078FB36500CD5D95 /* sdlsound.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = sdlsound.c; path = ../sound/sdlsound.c; sourceTree = SOURCE_ROOT; }; B6F060A5078FB55400CD5D95 /* ts2068.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = ts2068.c; path = ../machines/ts2068.c; sourceTree = SOURCE_ROOT; }; B6F060AB078FB63A00CD5D95 /* tc2068.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = tc2068.h; path = ../machines/tc2068.h; sourceTree = SOURCE_ROOT; }; B6F06100078FC2C900CD5D95 /* sfifo.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = sfifo.c; path = ../sound/sfifo.c; sourceTree = SOURCE_ROOT; }; @@ -819,9 +819,9 @@ B678E3E20608FAA600678A33 /* sound */ = { isa = PBXGroup; children = ( + B6A6F0950B3C108C000B88E9 /* coreaudiosound.c */, B6F06100078FC2C900CD5D95 /* sfifo.c */, B6F06101078FC2C900CD5D95 /* sfifo.h */, - B6F06092078FB36500CD5D95 /* sdlsound.c */, ); name = sound; sourceTree = "<group>"; @@ -1418,7 +1418,6 @@ B61F468509121DF100C8096C /* kempmouse.c in Sources */, B61F468609121DF100C8096C /* if1.c in Sources */, B61F468709121DF100C8096C /* RollbackController.m in Sources */, - B61F468809121DF100C8096C /* sdlsound.c in Sources */, B61F468909121DF100C8096C /* ts2068.c in Sources */, B61F468A09121DF100C8096C /* sfifo.c in Sources */, B61F468B09121DF100C8096C /* PreferencesController.m in Sources */, @@ -1442,6 +1441,7 @@ B6CE7F520B283A0700EB65B3 /* main.mm in Sources */, B6CE7FCE0B28FBD600EB65B3 /* DisplayOpenGLView.m in Sources */, B6E0252C0B38AFE500E23A0F /* keysyms.m in Sources */, + B6A6F0960B3C108C000B88E9 /* coreaudiosound.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; Modified: branches/fusegl/fuse/fusepb/config.h =================================================================== --- branches/fusegl/fuse/fusepb/config.h 2006-12-20 08:57:32 UTC (rev 259) +++ branches/fusegl/fuse/fusepb/config.h 2006-12-23 01:32:26 UTC (rev 260) @@ -63,6 +63,9 @@ /* Defined if Xlib UI in use */ /* #undef UI_X */ +/* Defined if we're going to be using CoreAudio */ +#define USE_COREAUDIO 1 + /* Defined if we're using hardware joysticks */ #define USE_JOYSTICK 1 Modified: branches/fusegl/fuse/sound/Makefile.am =================================================================== --- branches/fusegl/fuse/sound/Makefile.am 2006-12-20 08:57:32 UTC (rev 259) +++ branches/fusegl/fuse/sound/Makefile.am 2006-12-23 01:32:26 UTC (rev 260) @@ -30,6 +30,7 @@ libsound_a_SOURCES = dxsound.c \ aosound.c \ + coreaudiosound.c \ hpsound.c \ nullsound.c \ osssound.c \ Added: branches/fusegl/fuse/sound/coreaudiosound.c =================================================================== --- branches/fusegl/fuse/sound/coreaudiosound.c (rev 0) +++ branches/fusegl/fuse/sound/coreaudiosound.c 2006-12-23 01:32:26 UTC (rev 260) @@ -0,0 +1,275 @@ +/* coreaudiosound.c: Mac OS X CoreAudio sound I/O + Copyright (c) 2006 Fredrick Meunier + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +*/ + +#include <config.h> + +#include "lowlevel.h" + +#ifdef SOUND_COREAUDIO + +#include <errno.h> +#include <unistd.h> +#include <CoreAudio/AudioHardware.h> +#include <AudioUnit/AudioUnit.h> + +#include "event.h" +#include "sfifo.h" +#include "sound.h" +#include "ui/ui.h" + +sfifo_t sound_fifo; + +static +OSStatus coreaudiowrite( void *inRefCon, + AudioUnitRenderActionFlags *ioActionFlags, + const AudioTimeStamp *inTimeStamp, + UInt32 inBusNumber, + UInt32 inNumberFrames, + AudioBufferList *ioData ); + +/* info about the format used for writing to output unit */ +static AudioStreamBasicDescription deviceFormat; + +/* converts from Fuse format (signed 16 bit ints) to CoreAudio format (floats) + */ +static AudioUnit gOutputUnit; + +int +sound_lowlevel_init( const char *dev, int *freqptr, int *stereoptr ) +{ + OSStatus err = kAudioHardwareNoError; + UInt32 count; + AudioDeviceID device = kAudioDeviceUnknown; /* the default device */ + UInt32 deviceBufferSize; /* bufferSize returned by + kAudioDevicePropertyBufferSize */ + int error; + + /* get the default output device for the HAL */ + count = sizeof( device ); + err = AudioHardwareGetProperty( kAudioHardwarePropertyDefaultOutputDevice, + &count, (void *)&device ); + if ( err != kAudioHardwareNoError ) { + ui_error( UI_ERROR_ERROR, + "get kAudioHardwarePropertyDefaultOutputDevice error %ld", + err ); + return 1; + } + + /* get the buffersize that the default device uses for IO */ + count = sizeof( deviceBufferSize ); + err = AudioDeviceGetProperty( device, 0, false, kAudioDevicePropertyBufferSize, + &count, &deviceBufferSize ); + if( err != kAudioHardwareNoError ) { + ui_error( UI_ERROR_ERROR, "get kAudioDevicePropertyBufferSize error %ld", + err ); + return 1; + } + + /* get a description of the data format used by the default device */ + count = sizeof( deviceFormat ); + err = AudioDeviceGetProperty( device, 0, false, + kAudioDevicePropertyStreamFormat, &count, + &deviceFormat ); + if( err != kAudioHardwareNoError ) { + ui_error( UI_ERROR_ERROR, + "get kAudioDevicePropertyStreamFormat error %ld", err ); + return 1; + } + + *freqptr = deviceFormat.mSampleRate; + + deviceFormat.mFormatFlags = kLinearPCMFormatFlagIsSignedInteger +#ifdef WORDS_BIGENDIAN + | kLinearPCMFormatFlagIsBigEndian +#endif /* #ifdef WORDS_BIGENDIAN */ + | kLinearPCMFormatFlagIsPacked + | kAudioFormatFlagIsNonInterleaved; + deviceFormat.mBytesPerPacket = 2; + deviceFormat.mFramesPerPacket = 1; + deviceFormat.mBytesPerFrame = 2; + deviceFormat.mBitsPerChannel = 16; + deviceFormat.mChannelsPerFrame = *stereoptr ? 2 : 1; + + /* Open the default output unit */ + ComponentDescription desc; + desc.componentType = kAudioUnitType_Output; + desc.componentSubType = kAudioUnitSubType_DefaultOutput; + desc.componentManufacturer = kAudioUnitManufacturer_Apple; + desc.componentFlags = 0; + desc.componentFlagsMask = 0; + + Component comp = FindNextComponent( NULL, &desc ); + if( comp == NULL ) { + ui_error( UI_ERROR_ERROR, "FindNextComponent" ); + return 1; + } + + err = OpenAComponent( comp, &gOutputUnit ); + if( comp == NULL ) { + ui_error( UI_ERROR_ERROR, "OpenAComponent=%ld", err ); + return 1; + } + + /* Set up a callback function to generate output to the output unit */ + AURenderCallbackStruct input; + input.inputProc = coreaudiowrite; + input.inputProcRefCon = NULL; + + err = AudioUnitSetProperty( gOutputUnit, + kAudioUnitProperty_SetRenderCallback, + kAudioUnitScope_Input, + 0, + &input, + sizeof( input ) ); + if( err ) { + ui_error( UI_ERROR_ERROR, "AudioUnitSetProperty-CB=%ld", err ); + return 1; + } + + err = AudioUnitSetProperty( gOutputUnit, + kAudioUnitProperty_StreamFormat, + kAudioUnitScope_Input, + 0, + &deviceFormat, + sizeof( AudioStreamBasicDescription ) ); + if( err ) { + ui_error( UI_ERROR_ERROR, "AudioUnitSetProperty-SF=%4.4s, %ld", (char*)&err, err ); + return 1; + } + + err = AudioUnitInitialize( gOutputUnit ); + if( err ) { + ui_error( UI_ERROR_ERROR, "AudioUnitInitialize=%ld", err ); + return 1; + } + + if( ( error = sfifo_init( &sound_fifo, 2 * deviceFormat.mChannelsPerFrame + * deviceBufferSize + 1 ) ) ) { + ui_error( UI_ERROR_ERROR, "Problem initialising sound fifo: %s", + strerror ( error ) ); + return 1; + } + + /* Start the rendering + The DefaultOutputUnit will do any format conversions to the format of the + default device */ + err = AudioOutputUnitStart( gOutputUnit ); + if( err ) { + ui_error( UI_ERROR_ERROR, "AudioOutputUnitStart=%ld", err ); + return 1; + } + + return 0; +} + +void +sound_lowlevel_end( void ) +{ + OSStatus err; + + verify_noerr( AudioOutputUnitStop( gOutputUnit ) ); + + err = AudioUnitUninitialize( gOutputUnit ); + if( err ) { + printf( "AudioUnitUninitialize=%ld", err ); + } + + CloseComponent( gOutputUnit ); + + sfifo_flush( &sound_fifo ); + sfifo_close( &sound_fifo ); +} + +/* Copy data to fifo */ +void +sound_lowlevel_frame( libspectrum_signed_word *data, int len ) +{ + int i = 0; + + /* Convert to bytes */ + libspectrum_signed_byte* bytes = (libspectrum_signed_byte*)data; + len <<= 1; + + while( len ) { + if( ( i = sfifo_write( &sound_fifo, bytes, len ) ) < 0 ) { + break; + } else if( !i ) { + usleep( 10000 ); + } + bytes += i; + len -= i; + } + if( i < 0 ) { + ui_error( UI_ERROR_ERROR, "Couldn't write sound fifo: %s", + strerror( i ) ); + } +} + +/* This is the audio processing callback. */ +OSStatus coreaudiowrite( void *inRefCon, + AudioUnitRenderActionFlags *ioActionFlags, + const AudioTimeStamp *inTimeStamp, + UInt32 inBusNumber, + UInt32 inNumberFrames, + AudioBufferList *ioData ) +{ + int f; + int len = deviceFormat.mBytesPerFrame * inNumberFrames; + + uint8_t* out_l = ioData->mBuffers[0].mData; + uint8_t* out_r = deviceFormat.mChannelsPerFrame > 1 ? + ioData->mBuffers[1].mData : 0; + + if( out_r ) { + /* Deinterleave the left and right stereo channels into their approptiate + buffers */ + while( sfifo_used( &sound_fifo ) && len ) { + f = sfifo_read( &sound_fifo, out_l, deviceFormat.mBytesPerFrame ); + out_l += deviceFormat.mBytesPerFrame; + f = sfifo_read( &sound_fifo, out_r, deviceFormat.mBytesPerFrame ); + out_r += deviceFormat.mBytesPerFrame; + len -= deviceFormat.mBytesPerFrame; + } + + /* If we ran out of sound, make do with silence :( */ + if( len ) { + for( f=0; f<len; f++ ) { + *out_l++ = 0; + *out_r++ = 0; + } + } + } else { + /* Read input_size bytes from fifo into sound stream */ + while( ( f = sfifo_read( &sound_fifo, out_l, len ) ) > 0 ) { + out_l += f; + len -= f; + } + + /* If we ran out of sound, make do with silence :( */ + if( f < 0 ) { + for( f=0; f<len; f++ ) { + *out_l++ = 0; + } + } + } + + return noErr; +} + +#endif /* #ifdef SOUND_COREAUDIO */ Modified: branches/fusegl/fuse/sound/lowlevel.h =================================================================== --- branches/fusegl/fuse/sound/lowlevel.h 2006-12-20 08:57:32 UTC (rev 259) +++ branches/fusegl/fuse/sound/lowlevel.h 2006-12-23 01:32:26 UTC (rev 260) @@ -68,6 +68,11 @@ #define HAVE_SOUND #define SOUND_DX +#elif defined USE_COREAUDIO /* #if defined UI_SDL */ + +#define HAVE_SOUND +#define SOUND_COREAUDIO + #endif /* #if defined UI_SDL */ #endif /* #ifndef FUSE_SOUND_LOWLEVEL_H */ Modified: branches/fusegl/fuse/sound/sdlsound.c =================================================================== --- branches/fusegl/fuse/sound/sdlsound.c 2006-12-20 08:57:32 UTC (rev 259) +++ branches/fusegl/fuse/sound/sdlsound.c 2006-12-23 01:32:26 UTC (rev 260) @@ -150,6 +150,7 @@ SDL_LockAudio(); SDL_CloseAudio(); SDL_QuitSubSystem( SDL_INIT_AUDIO ); + sfifo_flush( &sound_fifo ); sfifo_close( &sound_fifo ); } Modified: branches/fusegl/fuse/sound/sfifo.c =================================================================== --- branches/fusegl/fuse/sound/sfifo.c 2006-12-20 08:57:32 UTC (rev 259) +++ branches/fusegl/fuse/sound/sfifo.c 2006-12-23 01:32:26 UTC (rev 260) @@ -18,7 +18,7 @@ #include "lowlevel.h" -#ifdef SOUND_SDL +#if defined SOUND_SDL || defined SOUND_COREAUDIO #ifdef __KERNEL__ # include <linux/string.h> Modified: branches/fusegl/fuse/timer.c =================================================================== --- branches/fusegl/fuse/timer.c 2006-12-20 08:57:32 UTC (rev 259) +++ branches/fusegl/fuse/timer.c 2006-12-23 01:32:26 UTC (rev 260) @@ -228,7 +228,7 @@ return event_remove_type( EVENT_TYPE_TIMER ); } -#ifdef UI_SDL +#if defined UI_SDL || defined USE_COREAUDIO /* Callback-style sound based timer */ #include "sound/sfifo.h" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2006-12-20 08:57:33
|
Revision: 259 http://svn.sourceforge.net/fuse-for-macosx/?rev=259&view=rev Author: fredm Date: 2006-12-20 00:57:32 -0800 (Wed, 20 Dec 2006) Log Message: ----------- Get rid of static variables, move more common code to methods on DisplayOpenGLView. Modified Paths: -------------- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m Modified: branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h 2006-12-20 07:40:59 UTC (rev 258) +++ branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h 2006-12-20 08:57:32 UTC (rev 259) @@ -1,8 +1,6 @@ /* DisplayOpenGLView.h: Implementation for the DisplayOpenGLView class Copyright (c) 2006 Fredrick Meunier - $Id$ - This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or @@ -49,6 +47,10 @@ BOOL optDown; BOOL ctrlDown; BOOL shiftDown; + + int cocoakeyboard_caps_shift_pressed; + int cocoakeyboard_symbol_shift_pressed; + input_key unicode_keysym; } +(DisplayOpenGLView *) instance; +(void) initialize; @@ -62,7 +64,9 @@ -(void) awakeFromNib; -(void) initKeyboard; +-(void) modifierChange:(input_event_type)theType oldState:(BOOL)old newState:(BOOL)new; -(void) flagsChanged:(NSEvent *)theEvent; +-(input_key) otherKeysymsRemap:(libspectrum_dword)ui_keysym inHash:(GHashTable*)hash; -(void) keyChange:(NSEvent *)theEvent type:(input_event_type)type; -(void) keyDown:(NSEvent *)theEvent; -(void) keyUp:(NSEvent *)theEvent; Modified: branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2006-12-20 07:40:59 UTC (rev 258) +++ branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2006-12-20 08:57:32 UTC (rev 259) @@ -1,8 +1,6 @@ /* DisplayOpenGLView.m: Implementation for the DisplayOpenGLView class Copyright (c) 2006 Fredrick Meunier - $Id$ - This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or @@ -37,20 +35,6 @@ extern keysyms_map_t unicode_keysyms_map[]; -static int cocoakeyboard_caps_shift_pressed = 0; -static int cocoakeyboard_symbol_shift_pressed = 0; -static input_key unicode_keysym = INPUT_KEY_NONE; - -static input_key -other_keysyms_remap( libspectrum_dword ui_keysym, GHashTable *hash ) -{ - const input_key *ptr; - - ptr = g_hash_table_lookup( hash, &ui_keysym ); - - return ptr ? *ptr : INPUT_KEY_NONE; -} - @implementation DisplayOpenGLView static DisplayOpenGLView *instance = nil; @@ -139,6 +123,10 @@ ctrlDown = NO; shiftDown = NO; + cocoakeyboard_caps_shift_pressed = 0; + cocoakeyboard_symbol_shift_pressed = 0; + unicode_keysym = INPUT_KEY_NONE; + return self; } @@ -324,48 +312,44 @@ &( ptr3->fuse ) ); } --(void) flagsChanged:(NSEvent *)theEvent +-(void) modifierChange:(input_event_type)theType oldState:(BOOL)old newState:(BOOL)new { - int flags = [theEvent modifierFlags]; - BOOL optDownNew = (flags & NSAlternateKeyMask) ? YES : NO; - BOOL ctrlDownNew = (flags & NSControlKeyMask) ? YES : NO; - BOOL shiftDownNew = ( flags & NSShiftKeyMask ) ? YES : NO; - - if( optDown != optDownNew ) { + if( old != new ) { input_event_t fuse_event; - fuse_event.types.key.spectrum_key = INPUT_KEY_Alt_L; - if( optDownNew == YES ) + fuse_event.types.key.spectrum_key = theType; + if( new == YES ) fuse_event.type = INPUT_EVENT_KEYPRESS; else fuse_event.type = INPUT_EVENT_KEYRELEASE; input_event( &fuse_event ); } +} - if( ctrlDown != ctrlDownNew ) { - input_event_t fuse_event; - fuse_event.types.key.spectrum_key = INPUT_KEY_Control_L; - if( ctrlDownNew == YES ) - fuse_event.type = INPUT_EVENT_KEYPRESS; - else - fuse_event.type = INPUT_EVENT_KEYRELEASE; - input_event( &fuse_event ); - } +-(void) flagsChanged:(NSEvent *)theEvent +{ + int flags = [theEvent modifierFlags]; + BOOL optDownNew = (flags & NSAlternateKeyMask) ? YES : NO; + BOOL ctrlDownNew = (flags & NSControlKeyMask) ? YES : NO; + BOOL shiftDownNew = ( flags & NSShiftKeyMask ) ? YES : NO; - if( shiftDown != shiftDownNew ) { - input_event_t fuse_event; - fuse_event.types.key.spectrum_key = INPUT_KEY_Shift_L; - if( shiftDownNew == YES ) - fuse_event.type = INPUT_EVENT_KEYPRESS; - else - fuse_event.type = INPUT_EVENT_KEYRELEASE; - input_event( &fuse_event ); - } + [self modifierChange:INPUT_KEY_Alt_L oldState:optDown newState:optDownNew]; + [self modifierChange:INPUT_KEY_Control_L oldState:ctrlDown newState:ctrlDownNew]; + [self modifierChange:INPUT_KEY_Shift_L oldState:shiftDown newState:shiftDownNew]; optDown = optDownNew; ctrlDown = ctrlDownNew; shiftDown = shiftDownNew; } +-(input_key) otherKeysymsRemap:(libspectrum_dword)ui_keysym inHash:(GHashTable*)hash +{ + const input_key *ptr; + + ptr = g_hash_table_lookup( hash, &ui_keysym ); + + return ptr ? *ptr : INPUT_KEY_NONE; +} + -(void) keyChange:(NSEvent *)theEvent type:(input_event_type)type { unsigned short keyCode = [theEvent keyCode]; @@ -376,8 +360,8 @@ fuse_keysym = keysyms_remap( keyCode ); if( fuse_keysym == INPUT_KEY_NONE ) { - fuse_keysym = other_keysyms_remap( [characters characterAtIndex:0], - unicode_keysyms_hash ); + fuse_keysym = [self otherKeysymsRemap:[characters characterAtIndex:0] + inHash:unicode_keysyms_hash]; if( fuse_keysym != INPUT_KEY_NONE ) { unicode_keysym = fuse_keysym; /* record current values of caps and symbol shift. We will temoprarily @@ -418,7 +402,7 @@ -(BOOL) becomeFirstResponder { - return YES; + return YES; } -(BOOL) resignFirstResponder This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2006-12-20 07:41:00
|
Revision: 258 http://svn.sourceforge.net/fuse-for-macosx/?rev=258&view=rev Author: fredm Date: 2006-12-19 23:40:59 -0800 (Tue, 19 Dec 2006) Log Message: ----------- Add support for backspace key. Modified Paths: -------------- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m branches/fusegl/fuse/ui/cocoa/keysyms.m Modified: branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h 2006-12-20 01:44:56 UTC (rev 257) +++ branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h 2006-12-20 07:40:59 UTC (rev 258) @@ -45,6 +45,10 @@ BOOL screenTexInitialised; GHashTable *unicode_keysyms_hash; + + BOOL optDown; + BOOL ctrlDown; + BOOL shiftDown; } +(DisplayOpenGLView *) instance; +(void) initialize; @@ -63,8 +67,8 @@ -(void) keyDown:(NSEvent *)theEvent; -(void) keyUp:(NSEvent *)theEvent; -- (BOOL) acceptsFirstResponder; -- (BOOL) becomeFirstResponder; -- (BOOL) resignFirstResponder; +-(BOOL) acceptsFirstResponder; +-(BOOL) becomeFirstResponder; +-(BOOL) resignFirstResponder; @end Modified: branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2006-12-20 01:44:56 UTC (rev 257) +++ branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2006-12-20 07:40:59 UTC (rev 258) @@ -135,6 +135,10 @@ screenTexInitialised = NO; + optDown = NO; + ctrlDown = NO; + shiftDown = NO; + return self; } @@ -322,9 +326,6 @@ -(void) flagsChanged:(NSEvent *)theEvent { - static BOOL optDown = NO; - static BOOL ctrlDown = NO; - static BOOL shiftDown = NO; int flags = [theEvent modifierFlags]; BOOL optDownNew = (flags & NSAlternateKeyMask) ? YES : NO; BOOL ctrlDownNew = (flags & NSControlKeyMask) ? YES : NO; @@ -410,17 +411,17 @@ [self keyChange:theEvent type:INPUT_EVENT_KEYRELEASE]; } -- (BOOL)acceptsFirstResponder +-(BOOL) acceptsFirstResponder { return YES; } -- (BOOL)becomeFirstResponder +-(BOOL) becomeFirstResponder { return YES; } -- (BOOL)resignFirstResponder +-(BOOL) resignFirstResponder { return YES; } Modified: branches/fusegl/fuse/ui/cocoa/keysyms.m =================================================================== --- branches/fusegl/fuse/ui/cocoa/keysyms.m 2006-12-20 01:44:56 UTC (rev 257) +++ branches/fusegl/fuse/ui/cocoa/keysyms.m 2006-12-20 07:40:59 UTC (rev 258) @@ -1,4 +1,4 @@ -/* keysyms.c: UI keysym to Fuse input layer keysym mappings +/* keysyms.m: UI keysym to Fuse input layer keysym mappings Copyright (c) 2000-2005 Philip Kendall, Matan Ziv-Av, Russell Marks, Fredrick Meunier, Catalin Mihaila @@ -23,9 +23,6 @@ */ -/* This file is autogenerated from keysyms.dat by keysyms.pl. - Do not edit unless you know what you're doing! */ - #import <AppKit/NSEvent.h> #include <config.h> @@ -40,6 +37,7 @@ { 53, INPUT_KEY_Escape }, { 48, INPUT_KEY_Tab }, { 36, INPUT_KEY_Return }, + { 51, INPUT_KEY_BackSpace }, /* Start keypad */ { 83, INPUT_KEY_1 }, { 84, INPUT_KEY_2 }, @@ -101,7 +99,7 @@ }; -/* Map low byte of UCS-2(?) Unicode to Fuse input layer keysym for +/* Map UCS-2(?) Unicode to Fuse input layer keysym for non-extended mode Spectrum symbols present on keyboards */ const keysyms_map_t unicode_keysyms_map[] = { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2006-12-20 01:44:56
|
Revision: 257 http://svn.sourceforge.net/fuse-for-macosx/?rev=257&view=rev Author: fredm Date: 2006-12-19 17:44:56 -0800 (Tue, 19 Dec 2006) Log Message: ----------- Enable native keyboard handling. Modified Paths: -------------- branches/fusegl/fuse/TODO branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m Added Paths: ----------- branches/fusegl/fuse/ui/cocoa/keysyms.m Removed Paths: ------------- branches/fusegl/fuse/ui/cocoa/keysyms.c Modified: branches/fusegl/fuse/TODO =================================================================== --- branches/fusegl/fuse/TODO 2006-12-19 11:28:44 UTC (rev 256) +++ branches/fusegl/fuse/TODO 2006-12-20 01:44:56 UTC (rev 257) @@ -4,9 +4,9 @@ in threaded Cocoa GL UI) X Switch to Cocoa run loop for Fuse X Add GL renderer +X Add native keyboard processing (removes SDL keyboard input dependency from + Fuse) * Add native CoreAudio sound processing (removes SDL sound dependency from Fuse) -* Add native keyboard processing (removes SDL keyboard input dependency from - Fuse) * Fix menus, preferences etc. * Fix scalers * Add native joystick processing (removes SDL joystick input dependency from Modified: branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj =================================================================== --- branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj 2006-12-19 11:28:44 UTC (rev 256) +++ branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj 2006-12-20 01:44:56 UTC (rev 257) @@ -269,10 +269,10 @@ B6CE7F420B2830A300EB65B3 /* cocoajoystick.c in Sources */ = {isa = PBXBuildFile; fileRef = B6CE7F3C0B2830A300EB65B3 /* cocoajoystick.c */; }; B6CE7F430B2830A300EB65B3 /* cocoaui.c in Sources */ = {isa = PBXBuildFile; fileRef = B6CE7F3D0B2830A300EB65B3 /* cocoaui.c */; }; B6CE7F440B2830A300EB65B3 /* cocoaui.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CE7F3E0B2830A300EB65B3 /* cocoaui.h */; }; - B6CE7F450B2830A300EB65B3 /* keysyms.c in Sources */ = {isa = PBXBuildFile; fileRef = B6CE7F3F0B2830A300EB65B3 /* keysyms.c */; }; B6CE7F520B283A0700EB65B3 /* main.mm in Sources */ = {isa = PBXBuildFile; fileRef = B6CE7F510B283A0700EB65B3 /* main.mm */; }; B6CE7FCD0B28FBD600EB65B3 /* DisplayOpenGLView.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CE7FCB0B28FBD600EB65B3 /* DisplayOpenGLView.h */; }; B6CE7FCE0B28FBD600EB65B3 /* DisplayOpenGLView.m in Sources */ = {isa = PBXBuildFile; fileRef = B6CE7FCC0B28FBD600EB65B3 /* DisplayOpenGLView.m */; }; + B6E0252C0B38AFE500E23A0F /* keysyms.m in Sources */ = {isa = PBXBuildFile; fileRef = B6E0252B0B38AFE500E23A0F /* keysyms.m */; }; B6F047F60952A6D6006D8005 /* tape_se.szx in CopyFiles */ = {isa = PBXBuildFile; fileRef = B6F047F20952A6BA006D8005 /* tape_se.szx */; }; B6F047F70952A6D6006D8005 /* tape_ts2068.szx in CopyFiles */ = {isa = PBXBuildFile; fileRef = B6F047F30952A6BA006D8005 /* tape_ts2068.szx */; }; B6F047F80952A6E3006D8005 /* tape_plus3e.szx in CopyFiles */ = {isa = PBXBuildFile; fileRef = B6F047F00952A69A006D8005 /* tape_plus3e.szx */; }; @@ -491,13 +491,13 @@ B6CE7F3C0B2830A300EB65B3 /* cocoajoystick.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = cocoajoystick.c; sourceTree = "<group>"; }; B6CE7F3D0B2830A300EB65B3 /* cocoaui.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = cocoaui.c; sourceTree = "<group>"; }; B6CE7F3E0B2830A300EB65B3 /* cocoaui.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cocoaui.h; sourceTree = "<group>"; }; - B6CE7F3F0B2830A300EB65B3 /* keysyms.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = keysyms.c; sourceTree = "<group>"; }; B6CE7F510B283A0700EB65B3 /* main.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = main.mm; sourceTree = "<group>"; }; B6CE7FCB0B28FBD600EB65B3 /* DisplayOpenGLView.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DisplayOpenGLView.h; sourceTree = "<group>"; }; B6CE7FCC0B28FBD600EB65B3 /* DisplayOpenGLView.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = DisplayOpenGLView.m; sourceTree = "<group>"; }; B6D2989105B061CB00C2AA14 /* MemoryBrowserController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MemoryBrowserController.h; path = controllers/MemoryBrowserController.h; sourceTree = "<group>"; }; B6D2989205B061CB00C2AA14 /* MemoryBrowserController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MemoryBrowserController.m; path = controllers/MemoryBrowserController.m; sourceTree = "<group>"; }; B6D2993105B06AD200C2AA14 /* MemoryBrowser.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = MemoryBrowser.nib; path = nibs/MemoryBrowser.nib; sourceTree = "<group>"; }; + B6E0252B0B38AFE500E23A0F /* keysyms.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = keysyms.m; sourceTree = "<group>"; }; B6E093F40607EEDC008B5DEC /* 256s-0.rom */ = {isa = PBXFileReference; lastKnownFileType = file; name = "256s-0.rom"; path = "../roms/256s-0.rom"; sourceTree = SOURCE_ROOT; }; B6E093F50607EEDC008B5DEC /* 256s-1.rom */ = {isa = PBXFileReference; lastKnownFileType = file; name = "256s-1.rom"; path = "../roms/256s-1.rom"; sourceTree = SOURCE_ROOT; }; B6E093F60607EEDC008B5DEC /* 256s-2.rom */ = {isa = PBXFileReference; lastKnownFileType = file; name = "256s-2.rom"; path = "../roms/256s-2.rom"; sourceTree = SOURCE_ROOT; }; @@ -892,7 +892,7 @@ B6CE7F3C0B2830A300EB65B3 /* cocoajoystick.c */, B6CE7F3D0B2830A300EB65B3 /* cocoaui.c */, B6CE7F3E0B2830A300EB65B3 /* cocoaui.h */, - B6CE7F3F0B2830A300EB65B3 /* keysyms.c */, + B6E0252B0B38AFE500E23A0F /* keysyms.m */, ); path = cocoa; sourceTree = "<group>"; @@ -1439,9 +1439,9 @@ B6CE7F400B2830A300EB65B3 /* cocoadisplay.c in Sources */, B6CE7F420B2830A300EB65B3 /* cocoajoystick.c in Sources */, B6CE7F430B2830A300EB65B3 /* cocoaui.c in Sources */, - B6CE7F450B2830A300EB65B3 /* keysyms.c in Sources */, B6CE7F520B283A0700EB65B3 /* main.mm in Sources */, B6CE7FCE0B28FBD600EB65B3 /* DisplayOpenGLView.m in Sources */, + B6E0252C0B38AFE500E23A0F /* keysyms.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; Modified: branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h 2006-12-19 11:28:44 UTC (rev 256) +++ branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h 2006-12-20 01:44:56 UTC (rev 257) @@ -30,6 +30,9 @@ #include <OpenGL/glext.h> #include <OpenGL/glu.h> +#include <libspectrum.h> + +#include "input.h" #include "ui/cocoa/cocoadisplay.h" @interface DisplayOpenGLView : NSOpenGLView @@ -40,8 +43,11 @@ Cocoa_Texture screenTex; /* Screen texture */ BOOL screenTexInitialised; + + GHashTable *unicode_keysyms_hash; } +(DisplayOpenGLView *) instance; ++(void) initialize; -(void) createTexture:(Cocoa_Texture*)newScreen; -(void) destroyTexture; @@ -50,6 +56,15 @@ -(id) initWithFrame:(NSRect)frameRect; -(void) awakeFromNib; -+(void) initialize; +-(void) initKeyboard; +-(void) flagsChanged:(NSEvent *)theEvent; +-(void) keyChange:(NSEvent *)theEvent type:(input_event_type)type; +-(void) keyDown:(NSEvent *)theEvent; +-(void) keyUp:(NSEvent *)theEvent; + +- (BOOL) acceptsFirstResponder; +- (BOOL) becomeFirstResponder; +- (BOOL) resignFirstResponder; + @end Modified: branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2006-12-19 11:28:44 UTC (rev 256) +++ branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2006-12-20 01:44:56 UTC (rev 257) @@ -33,7 +33,24 @@ #include "event.h" #include "fuse.h" #include "fusepb/main.h" +#include "keyboard.h" +extern keysyms_map_t unicode_keysyms_map[]; + +static int cocoakeyboard_caps_shift_pressed = 0; +static int cocoakeyboard_symbol_shift_pressed = 0; +static input_key unicode_keysym = INPUT_KEY_NONE; + +static input_key +other_keysyms_remap( libspectrum_dword ui_keysym, GHashTable *hash ) +{ + const input_key *ptr; + + ptr = g_hash_table_lookup( hash, &ui_keysym ); + + return ptr ? *ptr : INPUT_KEY_NONE; +} + @implementation DisplayOpenGLView static DisplayOpenGLView *instance = nil; @@ -43,6 +60,44 @@ return instance; } ++(void) initialize +{ + ScalerNameToIdTransformer *sNToITransformer; + MachineScalerIsEnabled *machineScalerIsEnabled; + MachineNameToIdTransformer *mToITransformer; + VolumeSliderToPrefTransformer *vsToPTransformer; + + sNToITransformer = [[[ScalerNameToIdTransformer alloc] init] autorelease]; + + [NSValueTransformer setValueTransformer:sNToITransformer + forName:@"ScalerNameToIdTransformer"]; + + machineScalerIsEnabled = [[MachineScalerIsEnabled + machineScalerIsEnabledWithInt:1] + autorelease]; + + [NSValueTransformer setValueTransformer:machineScalerIsEnabled + forName:@"MachineTimexIsEnabled"]; + + machineScalerIsEnabled = [[MachineScalerIsEnabled + machineScalerIsEnabledWithInt:0] + autorelease]; + + [NSValueTransformer setValueTransformer:machineScalerIsEnabled + forName:@"MachineTimexIsDisabled"]; + + mToITransformer = [[[MachineNameToIdTransformer alloc] init] autorelease]; + + [NSValueTransformer setValueTransformer:mToITransformer + forName:@"MachineNameToIdTransformer"]; + + vsToPTransformer = [[[VolumeSliderToPrefTransformer alloc] init] autorelease]; + + [NSValueTransformer setValueTransformer:vsToPTransformer + forName:@"VolumeSliderToPrefTransformer"]; + +} + - (id) initWithFrame:(NSRect)frameRect { // Init pixel format attribs @@ -91,44 +146,8 @@ if( fuse_init( ac, av ) ) { fprintf( stderr, "%s: error initialising -- giving up!\n", fuse_progname ); } -} -+(void) initialize -{ - ScalerNameToIdTransformer *sNToITransformer; - MachineScalerIsEnabled *machineScalerIsEnabled; - MachineNameToIdTransformer *mToITransformer; - VolumeSliderToPrefTransformer *vsToPTransformer; - - sNToITransformer = [[[ScalerNameToIdTransformer alloc] init] autorelease]; - - [NSValueTransformer setValueTransformer:sNToITransformer - forName:@"ScalerNameToIdTransformer"]; - - machineScalerIsEnabled = [[MachineScalerIsEnabled - machineScalerIsEnabledWithInt:1] - autorelease]; - - [NSValueTransformer setValueTransformer:machineScalerIsEnabled - forName:@"MachineTimexIsEnabled"]; - - machineScalerIsEnabled = [[MachineScalerIsEnabled - machineScalerIsEnabledWithInt:0] - autorelease]; - - [NSValueTransformer setValueTransformer:machineScalerIsEnabled - forName:@"MachineTimexIsDisabled"]; - - mToITransformer = [[[MachineNameToIdTransformer alloc] init] autorelease]; - - [NSValueTransformer setValueTransformer:mToITransformer - forName:@"MachineNameToIdTransformer"]; - - vsToPTransformer = [[[VolumeSliderToPrefTransformer alloc] init] autorelease]; - - [NSValueTransformer setValueTransformer:vsToPTransformer - forName:@"VolumeSliderToPrefTransformer"]; - + [self initKeyboard]; } - (void)drawRect:(NSRect)aRect @@ -290,4 +309,120 @@ { } +-(void) initKeyboard +{ + keysyms_map_t *ptr3; + + unicode_keysyms_hash = g_hash_table_new( g_int_hash, g_int_equal ); + + for( ptr3 = (keysyms_map_t *)unicode_keysyms_map; ptr3->ui; ptr3++ ) + g_hash_table_insert( unicode_keysyms_hash, &( ptr3->ui ), + &( ptr3->fuse ) ); +} + +-(void) flagsChanged:(NSEvent *)theEvent +{ + static BOOL optDown = NO; + static BOOL ctrlDown = NO; + static BOOL shiftDown = NO; + int flags = [theEvent modifierFlags]; + BOOL optDownNew = (flags & NSAlternateKeyMask) ? YES : NO; + BOOL ctrlDownNew = (flags & NSControlKeyMask) ? YES : NO; + BOOL shiftDownNew = ( flags & NSShiftKeyMask ) ? YES : NO; + + if( optDown != optDownNew ) { + input_event_t fuse_event; + fuse_event.types.key.spectrum_key = INPUT_KEY_Alt_L; + if( optDownNew == YES ) + fuse_event.type = INPUT_EVENT_KEYPRESS; + else + fuse_event.type = INPUT_EVENT_KEYRELEASE; + input_event( &fuse_event ); + } + + if( ctrlDown != ctrlDownNew ) { + input_event_t fuse_event; + fuse_event.types.key.spectrum_key = INPUT_KEY_Control_L; + if( ctrlDownNew == YES ) + fuse_event.type = INPUT_EVENT_KEYPRESS; + else + fuse_event.type = INPUT_EVENT_KEYRELEASE; + input_event( &fuse_event ); + } + + if( shiftDown != shiftDownNew ) { + input_event_t fuse_event; + fuse_event.types.key.spectrum_key = INPUT_KEY_Shift_L; + if( shiftDownNew == YES ) + fuse_event.type = INPUT_EVENT_KEYPRESS; + else + fuse_event.type = INPUT_EVENT_KEYRELEASE; + input_event( &fuse_event ); + } + + optDown = optDownNew; + ctrlDown = ctrlDownNew; + shiftDown = shiftDownNew; +} + +-(void) keyChange:(NSEvent *)theEvent type:(input_event_type)type +{ + unsigned short keyCode = [theEvent keyCode]; + NSString *characters = [theEvent charactersIgnoringModifiers]; + if ([characters length]) { + input_key fuse_keysym; + input_event_t fuse_event; + + fuse_keysym = keysyms_remap( keyCode ); + if( fuse_keysym == INPUT_KEY_NONE ) { + fuse_keysym = other_keysyms_remap( [characters characterAtIndex:0], + unicode_keysyms_hash ); + if( fuse_keysym != INPUT_KEY_NONE ) { + unicode_keysym = fuse_keysym; + /* record current values of caps and symbol shift. We will temoprarily + * override these for the duration of the unicoded simulated keypresses + */ + if( ( cocoakeyboard_caps_shift_pressed = keyboard_state( KEYBOARD_Caps ) ) ) + { + keyboard_release( KEYBOARD_Caps ); + } + if( ( cocoakeyboard_symbol_shift_pressed = + keyboard_state( KEYBOARD_Symbol ) ) ) { + keyboard_release( KEYBOARD_Symbol ); + } + } + } + + fuse_event.type = type; + fuse_event.types.key.spectrum_key = fuse_keysym; + + input_event( &fuse_event ); + } +} + +-(void) keyDown:(NSEvent *)theEvent +{ + [self keyChange:theEvent type:INPUT_EVENT_KEYPRESS]; +} + +-(void) keyUp:(NSEvent *)theEvent +{ + [self keyChange:theEvent type:INPUT_EVENT_KEYRELEASE]; +} + +- (BOOL)acceptsFirstResponder +{ + return YES; +} + +- (BOOL)becomeFirstResponder +{ + return YES; +} + +- (BOOL)resignFirstResponder +{ + return YES; +} + @end Deleted: branches/fusegl/fuse/ui/cocoa/keysyms.c =================================================================== --- branches/fusegl/fuse/ui/cocoa/keysyms.c 2006-12-19 11:28:44 UTC (rev 256) +++ branches/fusegl/fuse/ui/cocoa/keysyms.c 2006-12-20 01:44:56 UTC (rev 257) @@ -1,172 +0,0 @@ -/* keysyms.c: UI keysym to Fuse input layer keysym mappings - Copyright (c) 2000-2005 Philip Kendall, Matan Ziv-Av, Russell Marks, - Fredrick Meunier, Catalin Mihaila - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 49 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - Author contact information: - - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England - -*/ - -/* This file is autogenerated from keysyms.dat by keysyms.pl. - Do not edit unless you know what you're doing! */ - -#include <config.h> - -#include "input.h" -#include "keyboard.h" - -/* Map ADC keyboard scancode to Fuse input layer keysym for Spectrum - virtual keyboard */ -const keysyms_map_t keysyms_map[] = { - - { 18, INPUT_KEY_1 }, - { 19, INPUT_KEY_2 }, - { 20, INPUT_KEY_3 }, - { 21, INPUT_KEY_4 }, - { 23, INPUT_KEY_5 }, - { 22, INPUT_KEY_6 }, - { 26, INPUT_KEY_7 }, - { 28, INPUT_KEY_8 }, - { 25, INPUT_KEY_9 }, - { 29, INPUT_KEY_0 }, - { 12, INPUT_KEY_q }, - { 13, INPUT_KEY_w }, - { 14, INPUT_KEY_e }, - { 15, INPUT_KEY_r }, - { 17, INPUT_KEY_t }, - { 16, INPUT_KEY_y }, - { 32, INPUT_KEY_u }, - { 34, INPUT_KEY_i }, - { 31, INPUT_KEY_o }, - { 35, INPUT_KEY_p }, - { 0, INPUT_KEY_a }, - { 1, INPUT_KEY_s }, - { 2, INPUT_KEY_d }, - { 3, INPUT_KEY_f }, - { 5, INPUT_KEY_g }, - { 4, INPUT_KEY_h }, - { 38, INPUT_KEY_j }, - { 40, INPUT_KEY_k }, - { 37, INPUT_KEY_l }, - { 6, INPUT_KEY_z }, - { 7, INPUT_KEY_x }, - { 8, INPUT_KEY_c }, - { 9, INPUT_KEY_v }, - { 11, INPUT_KEY_b }, - { 45, INPUT_KEY_n }, - { 46, INPUT_KEY_m }, - - { 0xff, 0 } /* End marker: DO NOT MOVE! */ - -}; - -/* Map things with no reasonable Unicode value (modifiers etc.) from SDL sym - to Fuse input layer keysym */ -const keysyms_map_t modifier_keysyms_map[] = { -#if 0 - { SDLK_ESCAPE, INPUT_KEY_Escape }, - { SDLK_F1, INPUT_KEY_F1 }, - { SDLK_F2, INPUT_KEY_F2 }, - { SDLK_F3, INPUT_KEY_F3 }, - { SDLK_F4, INPUT_KEY_F4 }, - { SDLK_F5, INPUT_KEY_F5 }, - { SDLK_F6, INPUT_KEY_F6 }, - { SDLK_F7, INPUT_KEY_F7 }, - { SDLK_F8, INPUT_KEY_F8 }, - { SDLK_F9, INPUT_KEY_F9 }, - { SDLK_F10, INPUT_KEY_F10 }, - { SDLK_F11, INPUT_KEY_F11 }, - { SDLK_F12, INPUT_KEY_F12 }, - { SDLK_BACKSPACE, INPUT_KEY_BackSpace }, - { SDLK_TAB, INPUT_KEY_Tab }, - //{ SDLK_CAPSLOCK, INPUT_KEY_Caps_Lock }, - { SDLK_RETURN, INPUT_KEY_Return }, - { SDLK_LSHIFT, INPUT_KEY_Shift_L }, - { SDLK_RSHIFT, INPUT_KEY_Shift_R }, - { SDLK_LCTRL, INPUT_KEY_Control_L }, - { SDLK_LALT, INPUT_KEY_Alt_L }, - { SDLK_LSUPER, INPUT_KEY_Super_L }, - { SDLK_SPACE, INPUT_KEY_space }, - { SDLK_RSUPER, INPUT_KEY_Super_R }, - { SDLK_RALT, INPUT_KEY_Alt_R }, - { SDLK_RCTRL, INPUT_KEY_Control_R }, - { SDLK_MENU, INPUT_KEY_Mode_switch }, - { SDLK_LEFT, INPUT_KEY_Left }, - { SDLK_DOWN, INPUT_KEY_Down }, - { SDLK_UP, INPUT_KEY_Up }, - { SDLK_RIGHT, INPUT_KEY_Right }, - { SDLK_PAGEUP, INPUT_KEY_Page_Up }, - { SDLK_PAGEDOWN, INPUT_KEY_Page_Down }, - { SDLK_HOME, INPUT_KEY_Home }, - { SDLK_END, INPUT_KEY_End }, - { SDLK_KP1, INPUT_KEY_1 }, - { SDLK_KP2, INPUT_KEY_2 }, - { SDLK_KP3, INPUT_KEY_3 }, - { SDLK_KP4, INPUT_KEY_4 }, - { SDLK_KP5, INPUT_KEY_5 }, - { SDLK_KP6, INPUT_KEY_6 }, - { SDLK_KP7, INPUT_KEY_7 }, - { SDLK_KP8, INPUT_KEY_8 }, - { SDLK_KP9, INPUT_KEY_9 }, - { SDLK_KP0, INPUT_KEY_0 }, - { SDLK_KP_PERIOD, INPUT_KEY_period }, - { SDLK_KP_DIVIDE, INPUT_KEY_slash }, - { SDLK_KP_MULTIPLY, INPUT_KEY_star }, - { SDLK_KP_MINUS, INPUT_KEY_minus }, - { SDLK_KP_PLUS, INPUT_KEY_plus }, - { SDLK_KP_ENTER, INPUT_KEY_Return }, - { SDLK_KP_EQUALS, INPUT_KEY_equal }, -#endif - { 0, 0 } /* End marker: DO NOT MOVE! */ - -}; - -/* Map low byte of UCS-2(?) Unicode to Fuse input layer keysym for - non-extended mode Spectrum symbols present on keyboards */ -// Need to have identified these before processing shift et al. -const keysyms_map_t unicode_keysyms_map[] = { - - { '-', INPUT_KEY_minus }, - { '_', INPUT_KEY_underscore }, - { '=', INPUT_KEY_equal }, - { '+', INPUT_KEY_plus }, - { ';', INPUT_KEY_semicolon }, - { ':', INPUT_KEY_colon }, - { '\'', INPUT_KEY_apostrophe }, - { '"', INPUT_KEY_quotedbl }, - { '#', INPUT_KEY_numbersign }, - { ',', INPUT_KEY_comma }, - { '<', INPUT_KEY_less }, - { '.', INPUT_KEY_period }, - { '>', INPUT_KEY_greater }, - { '/', INPUT_KEY_slash }, - { '?', INPUT_KEY_question }, - { '!', INPUT_KEY_exclamation }, - { '@', INPUT_KEY_at }, - { '$', INPUT_KEY_dollar }, - { '%', INPUT_KEY_percent }, - { '&', INPUT_KEY_ampersand }, - { '(', INPUT_KEY_lbracket }, - { ')', INPUT_KEY_rbracket }, - { '^', INPUT_KEY_carat }, - { '*', INPUT_KEY_star }, - - { 0, 0 } /* End marker: DO NOT MOVE! */ - -}; Copied: branches/fusegl/fuse/ui/cocoa/keysyms.m (from rev 253, branches/fusegl/fuse/ui/cocoa/keysyms.c) =================================================================== --- branches/fusegl/fuse/ui/cocoa/keysyms.m (rev 0) +++ branches/fusegl/fuse/ui/cocoa/keysyms.m 2006-12-20 01:44:56 UTC (rev 257) @@ -0,0 +1,157 @@ +/* keysyms.c: UI keysym to Fuse input layer keysym mappings + Copyright (c) 2000-2005 Philip Kendall, Matan Ziv-Av, Russell Marks, + Fredrick Meunier, Catalin Mihaila + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 49 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Author contact information: + + E-mail: pak...@sr... + Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + +*/ + +/* This file is autogenerated from keysyms.dat by keysyms.pl. + Do not edit unless you know what you're doing! */ + +#import <AppKit/NSEvent.h> + +#include <config.h> + +#include "input.h" +#include "keyboard.h" + +/* Map ADC keyboard scancode to Fuse input layer keysym for Spectrum + virtual keyboard */ +const keysyms_map_t keysyms_map[] = { + + { 53, INPUT_KEY_Escape }, + { 48, INPUT_KEY_Tab }, + { 36, INPUT_KEY_Return }, + /* Start keypad */ + { 83, INPUT_KEY_1 }, + { 84, INPUT_KEY_2 }, + { 85, INPUT_KEY_3 }, + { 86, INPUT_KEY_4 }, + { 87, INPUT_KEY_5 }, + { 88, INPUT_KEY_6 }, + { 89, INPUT_KEY_7 }, + { 91, INPUT_KEY_8 }, + { 92, INPUT_KEY_9 }, + { 82, INPUT_KEY_0 }, + { 65, INPUT_KEY_period }, + { 75, INPUT_KEY_slash }, + { 67, INPUT_KEY_star }, + { 78, INPUT_KEY_minus }, + { 69, INPUT_KEY_plus }, + { 76, INPUT_KEY_Return }, + { 81, INPUT_KEY_equal }, + /* End keypad */ + { 18, INPUT_KEY_1 }, + { 19, INPUT_KEY_2 }, + { 20, INPUT_KEY_3 }, + { 21, INPUT_KEY_4 }, + { 23, INPUT_KEY_5 }, + { 22, INPUT_KEY_6 }, + { 26, INPUT_KEY_7 }, + { 28, INPUT_KEY_8 }, + { 25, INPUT_KEY_9 }, + { 29, INPUT_KEY_0 }, + { 12, INPUT_KEY_q }, + { 13, INPUT_KEY_w }, + { 14, INPUT_KEY_e }, + { 15, INPUT_KEY_r }, + { 17, INPUT_KEY_t }, + { 16, INPUT_KEY_y }, + { 32, INPUT_KEY_u }, + { 34, INPUT_KEY_i }, + { 31, INPUT_KEY_o }, + { 35, INPUT_KEY_p }, + { 0, INPUT_KEY_a }, + { 1, INPUT_KEY_s }, + { 2, INPUT_KEY_d }, + { 3, INPUT_KEY_f }, + { 5, INPUT_KEY_g }, + { 4, INPUT_KEY_h }, + { 38, INPUT_KEY_j }, + { 40, INPUT_KEY_k }, + { 37, INPUT_KEY_l }, + { 6, INPUT_KEY_z }, + { 7, INPUT_KEY_x }, + { 8, INPUT_KEY_c }, + { 9, INPUT_KEY_v }, + { 11, INPUT_KEY_b }, + { 45, INPUT_KEY_n }, + { 46, INPUT_KEY_m }, + { 49, INPUT_KEY_space }, + + { 0xff, 0 } /* End marker: DO NOT MOVE! */ + +}; + +/* Map low byte of UCS-2(?) Unicode to Fuse input layer keysym for + non-extended mode Spectrum symbols present on keyboards */ +const keysyms_map_t unicode_keysyms_map[] = { + + { NSUpArrowFunctionKey, INPUT_KEY_Up }, + { NSDownArrowFunctionKey, INPUT_KEY_Down }, + { NSLeftArrowFunctionKey, INPUT_KEY_Left }, + { NSRightArrowFunctionKey, INPUT_KEY_Right }, + { NSF1FunctionKey, INPUT_KEY_F1 }, + { NSF2FunctionKey, INPUT_KEY_F2 }, + { NSF3FunctionKey, INPUT_KEY_F3 }, + { NSF4FunctionKey, INPUT_KEY_F4 }, + { NSF5FunctionKey, INPUT_KEY_F5 }, + { NSF6FunctionKey, INPUT_KEY_F6 }, + { NSF7FunctionKey, INPUT_KEY_F7 }, + { NSF8FunctionKey, INPUT_KEY_F8 }, + { NSF9FunctionKey, INPUT_KEY_F9 }, + { NSF10FunctionKey, INPUT_KEY_F10 }, + { NSF11FunctionKey, INPUT_KEY_F11 }, + { NSF12FunctionKey, INPUT_KEY_F12 }, + { NSDeleteFunctionKey, INPUT_KEY_BackSpace }, + { NSHomeFunctionKey, INPUT_KEY_Home }, + { NSEndFunctionKey, INPUT_KEY_End }, + { NSPageUpFunctionKey, INPUT_KEY_Page_Up }, + { NSPageDownFunctionKey, INPUT_KEY_Page_Down }, + { NSMenuFunctionKey, INPUT_KEY_Mode_switch }, + { '-', INPUT_KEY_minus }, + { '_', INPUT_KEY_underscore }, + { '=', INPUT_KEY_equal }, + { '+', INPUT_KEY_plus }, + { ';', INPUT_KEY_semicolon }, + { ':', INPUT_KEY_colon }, + { '\'', INPUT_KEY_apostrophe }, + { '"', INPUT_KEY_quotedbl }, + { '#', INPUT_KEY_numbersign }, + { ',', INPUT_KEY_comma }, + { '<', INPUT_KEY_less }, + { '.', INPUT_KEY_period }, + { '>', INPUT_KEY_greater }, + { '/', INPUT_KEY_slash }, + { '?', INPUT_KEY_question }, + { '!', INPUT_KEY_exclamation }, + { '@', INPUT_KEY_at }, + { '$', INPUT_KEY_dollar }, + { '%', INPUT_KEY_percent }, + { '&', INPUT_KEY_ampersand }, + { '(', INPUT_KEY_lbracket }, + { ')', INPUT_KEY_rbracket }, + { '^', INPUT_KEY_carat }, + { '*', INPUT_KEY_star }, + + { 0, 0 } /* End marker: DO NOT MOVE! */ + +}; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2006-12-19 11:28:44
|
Revision: 256 http://svn.sourceforge.net/fuse-for-macosx/?rev=256&view=rev Author: fredm Date: 2006-12-19 03:28:44 -0800 (Tue, 19 Dec 2006) Log Message: ----------- Enable transformers etc. for Perferences dialog. Modified Paths: -------------- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m Modified: branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h 2006-12-19 11:26:36 UTC (rev 255) +++ branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h 2006-12-19 11:28:44 UTC (rev 256) @@ -50,5 +50,6 @@ -(id) initWithFrame:(NSRect)frameRect; -(void) awakeFromNib; ++(void) initialize; @end Modified: branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2006-12-19 11:26:36 UTC (rev 255) +++ branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2006-12-19 11:28:44 UTC (rev 256) @@ -25,6 +25,10 @@ */ #import "DisplayOpenGLView.h" +#import "ScalerNameToIdTransformer.h" +#import "MachineScalerIsEnabled.h" +#import "MachineNameToIdTransformer.h" +#import "VolumeSliderToPrefTransformer.h" #include "event.h" #include "fuse.h" @@ -89,6 +93,44 @@ } } ++(void) initialize +{ + ScalerNameToIdTransformer *sNToITransformer; + MachineScalerIsEnabled *machineScalerIsEnabled; + MachineNameToIdTransformer *mToITransformer; + VolumeSliderToPrefTransformer *vsToPTransformer; + + sNToITransformer = [[[ScalerNameToIdTransformer alloc] init] autorelease]; + + [NSValueTransformer setValueTransformer:sNToITransformer + forName:@"ScalerNameToIdTransformer"]; + + machineScalerIsEnabled = [[MachineScalerIsEnabled + machineScalerIsEnabledWithInt:1] + autorelease]; + + [NSValueTransformer setValueTransformer:machineScalerIsEnabled + forName:@"MachineTimexIsEnabled"]; + + machineScalerIsEnabled = [[MachineScalerIsEnabled + machineScalerIsEnabledWithInt:0] + autorelease]; + + [NSValueTransformer setValueTransformer:machineScalerIsEnabled + forName:@"MachineTimexIsDisabled"]; + + mToITransformer = [[[MachineNameToIdTransformer alloc] init] autorelease]; + + [NSValueTransformer setValueTransformer:mToITransformer + forName:@"MachineNameToIdTransformer"]; + + vsToPTransformer = [[[VolumeSliderToPrefTransformer alloc] init] autorelease]; + + [NSValueTransformer setValueTransformer:vsToPTransformer + forName:@"VolumeSliderToPrefTransformer"]; + +} + - (void)drawRect:(NSRect)aRect { // update emulation This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2006-12-19 11:26:36
|
Revision: 255 http://svn.sourceforge.net/fuse-for-macosx/?rev=255&view=rev Author: fredm Date: 2006-12-19 03:26:36 -0800 (Tue, 19 Dec 2006) Log Message: ----------- Remove obsolete files. Removed Paths: ------------- branches/fusegl/fuse/fusepb/SDLMain.h branches/fusegl/fuse/fusepb/SDLMain.mm Deleted: branches/fusegl/fuse/fusepb/SDLMain.h =================================================================== --- branches/fusegl/fuse/fusepb/SDLMain.h 2006-12-19 11:02:48 UTC (rev 254) +++ branches/fusegl/fuse/fusepb/SDLMain.h 2006-12-19 11:26:36 UTC (rev 255) @@ -1,13 +0,0 @@ -/* SDLMain.m - main entry point for our Cocoa-ized SDL app - Initial Version: Darrell Walisser <dwa...@pu...> - Non-NIB-Code & other changes: Max Horn <ma...@qu...> - - Feel free to customize this file to suit your needs -*/ - -#import <Cocoa/Cocoa.h> - -@interface SDLMain : NSObject -+(void)loadFile:(NSString *)filename; -+(void)initialize; -@end Deleted: branches/fusegl/fuse/fusepb/SDLMain.mm =================================================================== --- branches/fusegl/fuse/fusepb/SDLMain.mm 2006-12-19 11:02:48 UTC (rev 254) +++ branches/fusegl/fuse/fusepb/SDLMain.mm 2006-12-19 11:26:36 UTC (rev 255) @@ -1,567 +0,0 @@ -/* SDLMain.m - main entry point for our Cocoa-ized SDL app - Initial Version: Darrell Walisser <dwa...@pu...> - Non-NIB-Code & other changes: Max Horn <ma...@qu...> - - Feel free to customize this file to suit your needs - - Customised for Fuse by Fredrick Meunier <fr...@sp...> -*/ - -#import "ScalerNameToIdTransformer.h" -#import "MachineScalerIsEnabled.h" -#import "MachineNameToIdTransformer.h" -#import "VolumeSliderToPrefTransformer.h" - -extern "C" { -#import "SDL.h" -#import "SDLMain.h" -#import <sys/param.h> /* for MAXPATHLEN */ -#import <unistd.h> -#include <sys/types.h> -#include <sys/mman.h> -#include <libspectrum.h> -#include <config.h> -#include "dck.h" -#include "display.h" -#include "fuse.h" -#include "if2.h" -#include "machines/specplus3.h" -#include "rzx.h" -#include "screenshot.h" -#include "settings.h" -#include "snapshot.h" -#include "tape.h" -#include "trdos.h" -#include "utils.h" -}; - -/* For some reaon, Apple removed setAppleMenu from the headers in 10.4, - but the method still is there and works. To avoid warnings, we declare - it ourselves here. */ -@interface NSApplication(SDL_Missing_Methods) -- (void)setAppleMenu:(NSMenu *)menu; -@end - -/* Use this flag to determine whether we use SDLMain.nib or not */ -#define SDL_USE_NIB_FILE 1 - -/* Use this flag to determine whether we use CPS (docking) or not */ -#define SDL_USE_CPS 1 -#ifdef SDL_USE_CPS -/* Portions of CPS.h */ -typedef struct CPSProcessSerNum -{ - UInt32 lo; - UInt32 hi; -} CPSProcessSerNum; - -extern OSErr CPSGetCurrentProcess( CPSProcessSerNum *psn); -extern OSErr CPSEnableForegroundOperation( CPSProcessSerNum *psn, UInt32 _arg2, UInt32 _arg3, UInt32 _arg4, UInt32 _arg5); -extern OSErr CPSSetFrontProcess( CPSProcessSerNum *psn); - -#endif /* SDL_USE_CPS */ - -static int gArgc; -static char **gArgv; -static BOOL gFinderLaunch; -static BOOL gCalledAppMainline = FALSE; - -static NSString *getApplicationName(void) -{ - NSDictionary *dict; - NSString *appName = 0; - - /* Determine the application name */ - dict = (NSDictionary *)CFBundleGetInfoDictionary(CFBundleGetMainBundle()); - if (dict) - appName = [dict objectForKey: @"CFBundleName"]; - - if (![appName length]) - appName = [[NSProcessInfo processInfo] processName]; - - return appName; -} - -#if SDL_USE_NIB_FILE -/* A helper category for NSString */ -@interface NSString (ReplaceSubString) -- (NSString *)stringByReplacingRange:(NSRange)aRange with:(NSString *)aString; -@end -#endif - -@interface SDLApplication : NSApplication -@end - -@implementation SDLApplication -/* Invoked from the Quit menu item */ -- (void)terminate:(id)sender -{ - /* Post a SDL_QUIT event */ - SDL_Event event; - event.type = SDL_QUIT; - SDL_PushEvent(&event); -} -@end - - -/* The main class of the application, the application's delegate */ -@implementation SDLMain - -/* Set the working directory to the .app's parent directory */ -- (void) setupWorkingDirectory:(BOOL)shouldChdir -{ - - if (shouldChdir) - { - char parentdir[MAXPATHLEN]; - CFURLRef url = CFBundleCopyBundleURL(CFBundleGetMainBundle()); - CFURLRef url2 = CFURLCreateCopyDeletingLastPathComponent(0, url); - if (CFURLGetFileSystemRepresentation(url2, true, (UInt8 *)parentdir, MAXPATHLEN)) { - assert ( chdir (parentdir) == 0 ); /* chdir to the binary app's parent */ - } - CFRelease(url); - CFRelease(url2); - } - -} - -#if SDL_USE_NIB_FILE - -/* Fix menu to contain the real app name instead of "SDL App" */ -- (void)fixMenu:(NSMenu *)aMenu withAppName:(NSString *)appName -{ - NSRange aRange; - NSEnumerator *enumerator; - NSMenuItem *menuItem; - - aRange = [[aMenu title] rangeOfString:@"SDL App"]; - if (aRange.length != 0) - [aMenu setTitle: [[aMenu title] stringByReplacingRange:aRange with:appName]]; - - enumerator = [[aMenu itemArray] objectEnumerator]; - while ((menuItem = [enumerator nextObject])) - { - aRange = [[menuItem title] rangeOfString:@"SDL App"]; - if (aRange.length != 0) - [menuItem setTitle: [[menuItem title] stringByReplacingRange:aRange with:appName]]; - if ([menuItem hasSubmenu]) - [self fixMenu:[menuItem submenu] withAppName:appName]; - } - [ aMenu sizeToFit ]; -} - -#else - -static void setApplicationMenu(void) -{ - /* warning: this code is very odd */ - NSMenu *appleMenu; - NSMenuItem *menuItem; - NSString *title; - NSString *appName; - - appName = getApplicationName(); - appleMenu = [[NSMenu alloc] initWithTitle:@""]; - - /* Add menu items */ - title = [@"About " stringByAppendingString:appName]; - [appleMenu addItemWithTitle:title action:@selector(orderFrontStandardAboutPanel:) keyEquivalent:@""]; - - [appleMenu addItem:[NSMenuItem separatorItem]]; - - title = [@"Hide " stringByAppendingString:appName]; - [appleMenu addItemWithTitle:title action:@selector(hide:) keyEquivalent:@"h"]; - - menuItem = (NSMenuItem *)[appleMenu addItemWithTitle:@"Hide Others" action:@selector(hideOtherApplications:) keyEquivalent:@"h"]; - [menuItem setKeyEquivalentModifierMask:(NSAlternateKeyMask|NSCommandKeyMask)]; - - [appleMenu addItemWithTitle:@"Show All" action:@selector(unhideAllApplications:) keyEquivalent:@""]; - - [appleMenu addItem:[NSMenuItem separatorItem]]; - - title = [@"Quit " stringByAppendingString:appName]; - [appleMenu addItemWithTitle:title action:@selector(terminate:) keyEquivalent:@"q"]; - - - /* Put menu into the menubar */ - menuItem = [[NSMenuItem alloc] initWithTitle:@"" action:nil keyEquivalent:@""]; - [menuItem setSubmenu:appleMenu]; - [[NSApp mainMenu] addItem:menuItem]; - - /* Tell the application object that this is now the application menu */ - [NSApp setAppleMenu:appleMenu]; - - /* Finally give up our references to the objects */ - [appleMenu release]; - [menuItem release]; -} - -/* Create a window menu */ -static void setupWindowMenu(void) -{ - NSMenu *windowMenu; - NSMenuItem *windowMenuItem; - NSMenuItem *menuItem; - - windowMenu = [[NSMenu alloc] initWithTitle:@"Window"]; - - /* "Minimize" item */ - menuItem = [[NSMenuItem alloc] initWithTitle:@"Minimize" action:@selector(performMiniaturize:) keyEquivalent:@"m"]; - [windowMenu addItem:menuItem]; - [menuItem release]; - - /* Put menu into the menubar */ - windowMenuItem = [[NSMenuItem alloc] initWithTitle:@"Window" action:nil keyEquivalent:@""]; - [windowMenuItem setSubmenu:windowMenu]; - [[NSApp mainMenu] addItem:windowMenuItem]; - - /* Tell the application object that this is now the window menu */ - [NSApp setWindowsMenu:windowMenu]; - - /* Finally give up our references to the objects */ - [windowMenu release]; - [windowMenuItem release]; -} - -/* Replacement for NSApplicationMain */ -static void CustomApplicationMain (int argc, char **argv) -{ - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - SDLMain *sdlMain; - - /* Ensure the application object is initialised */ - [SDLApplication sharedApplication]; - -#ifdef SDL_USE_CPS - { - CPSProcessSerNum PSN; - /* Tell the dock about us */ - if (!CPSGetCurrentProcess(&PSN)) - if (!CPSEnableForegroundOperation(&PSN,0x03,0x3C,0x2C,0x1103)) - if (!CPSSetFrontProcess(&PSN)) - [SDLApplication sharedApplication]; - } -#endif /* SDL_USE_CPS */ - - /* Set up the menubar */ - [NSApp setMainMenu:[[NSMenu alloc] init]]; - setApplicationMenu(); - setupWindowMenu(); - - /* Create SDLMain and make it the app delegate */ - sdlMain = [[SDLMain alloc] init]; - [NSApp setDelegate:sdlMain]; - - /* Start the main event loop */ - [NSApp run]; - - [sdlMain release]; - [pool release]; -} - -#endif - -/* Called when the internal event loop has just started running */ -- (void) applicationDidFinishLaunching: (NSNotification *) note -{ - int status; - - /* Set the working directory to the .app's parent directory */ - [self setupWorkingDirectory:gFinderLaunch]; - -#if SDL_USE_NIB_FILE - /* Set the main menu to contain the real app name instead of "SDL App" */ - [self fixMenu:[NSApp mainMenu] withAppName:[[NSProcessInfo processInfo] processName]]; -#endif - - /* Hand off to main application code */ - gCalledAppMainline = TRUE; - status = SDL_main (gArgc, gArgv); - - /* We're done, thank you for playing */ - exit(status); -} - -- (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename -{ - utils_file file; libspectrum_id_t type; - libspectrum_class_t lsclass; - char fsrep[MAXPATHLEN+1]; - - if ( display_ui_initialised ) - [SDLMain loadFile:filename]; - else { - [filename getFileSystemRepresentation:fsrep maxLength:MAXPATHLEN]; - - if( utils_read_file( fsrep, &file ) ) fuse_abort(); - - if( libspectrum_identify_file( &type, fsrep, file.buffer, file.length ) ) { - utils_close_file( &file ); - fuse_abort(); - } - - if( libspectrum_identify_class( &lsclass, type ) ) fuse_abort(); - - switch( lsclass ) { - - case LIBSPECTRUM_CLASS_UNKNOWN: - fprintf( stderr, "%s: couldn't identify `%s'\n", fuse_progname, fsrep ); - case LIBSPECTRUM_CLASS_SCREENSHOT: - utils_close_file( &file ); - return NO; - - case LIBSPECTRUM_CLASS_RECORDING: - settings_current.playback_file = strdup( fsrep ); - break; - - case LIBSPECTRUM_CLASS_SNAPSHOT: - settings_current.snapshot = strdup( fsrep ); - break; - - case LIBSPECTRUM_CLASS_TAPE: - settings_current.tape_file = strdup( fsrep ); - break; - - case LIBSPECTRUM_CLASS_DISK_PLUS3: - settings_current.plus3disk_file = strdup( fsrep ); - break; - - case LIBSPECTRUM_CLASS_DISK_TRDOS: - settings_current.trdosdisk_file = strdup( fsrep ); - break; - - case LIBSPECTRUM_CLASS_CARTRIDGE_TIMEX: - settings_current.dck_file = strdup( fsrep ); - break; - - case LIBSPECTRUM_CLASS_CARTRIDGE_IF2: - settings_current.if2_file = strdup( fsrep ); - break; - - case LIBSPECTRUM_CLASS_HARDDISK: - if( settings_current.zxcf_active ) { - settings_current.zxcf_pri_file = strdup( fsrep ); - } else if( settings_current.zxatasp_active ) { - settings_current.zxatasp_master_file = strdup( fsrep ); - } else if( settings_current.simpleide_active ) { - settings_current.simpleide_master_file = strdup( fsrep ); - } else { - /* No IDE interface active, so activate the ZXCF */ - settings_current.zxcf_active = 1; - settings_current.zxcf_pri_file = strdup( fsrep ); - } - break; - - default: - fprintf( stderr, "%s: loadFile: unknown class %d!\n", - fuse_progname, type ); - } - - if( utils_close_file( &file ) ) fuse_abort(); - } - - return YES; -} - -+(void)loadFile:(NSString *)filename -{ - utils_file file; libspectrum_id_t type; - libspectrum_class_t lsclass; - int error = 0; - char fsrep[MAXPATHLEN+1]; - - [filename getFileSystemRepresentation:fsrep maxLength:MAXPATHLEN]; - - if( utils_read_file( fsrep, &file ) ) fuse_abort(); - - if( libspectrum_identify_file( &type, fsrep, file.buffer, file.length ) ) { - utils_close_file( &file ); - fuse_abort(); - } - - if( libspectrum_identify_class( &lsclass, type ) ) fuse_abort(); - - switch( lsclass ) { - - case LIBSPECTRUM_CLASS_UNKNOWN: - fprintf( stderr, "%s: couldn't identify `%s'\n", fuse_progname, - fsrep ); - utils_close_file( &file ); - fuse_abort(); - - case LIBSPECTRUM_CLASS_RECORDING: - error = rzx_start_playback_from_buffer( file.buffer, file.length ); - break; - - case LIBSPECTRUM_CLASS_SNAPSHOT: - error = snapshot_read_buffer( file.buffer, file.length, type ); - break; - - case LIBSPECTRUM_CLASS_TAPE: - error = tape_read_buffer( file.buffer, file.length, type, fsrep, - settings_current.auto_load ); - break; - - case LIBSPECTRUM_CLASS_SCREENSHOT: - error = screenshot_scr_read( fsrep ); - break; - - case LIBSPECTRUM_CLASS_DISK_PLUS3: - error = machine_select( LIBSPECTRUM_MACHINE_PLUS3 ); - - if( !error ) - error = specplus3_disk_insert_default_autoload( SPECPLUS3_DRIVE_A, - fsrep ); - break; - - case LIBSPECTRUM_CLASS_DISK_TRDOS: - error = machine_select( LIBSPECTRUM_MACHINE_PENT ); - - if( !error ) - error = trdos_disk_insert_default_autoload( TRDOS_DRIVE_A, fsrep ); - break; - - case LIBSPECTRUM_CLASS_CARTRIDGE_TIMEX: - error = dck_insert( fsrep ); - - if( !error ) - error = machine_select( LIBSPECTRUM_MACHINE_TC2068 ); - break; - - case LIBSPECTRUM_CLASS_CARTRIDGE_IF2: - error = if2_insert( fsrep ); - break; - - default: - fprintf( stderr, "%s: loadFile: unknown class %d!\n", fuse_progname, type ); - fuse_abort(); - } - - if( utils_close_file( &file ) ) fuse_abort(); -} - -+(void)initialize -{ - ScalerNameToIdTransformer *sNToITransformer; - MachineScalerIsEnabled *machineScalerIsEnabled; - MachineNameToIdTransformer *mToITransformer; - VolumeSliderToPrefTransformer *vsToPTransformer; - - sNToITransformer = [[[ScalerNameToIdTransformer alloc] init] autorelease]; - - [NSValueTransformer setValueTransformer:sNToITransformer - forName:@"ScalerNameToIdTransformer"]; - - machineScalerIsEnabled = [[MachineScalerIsEnabled - machineScalerIsEnabledWithInt:1] - autorelease]; - - [NSValueTransformer setValueTransformer:machineScalerIsEnabled - forName:@"MachineTimexIsEnabled"]; - - machineScalerIsEnabled = [[MachineScalerIsEnabled - machineScalerIsEnabledWithInt:0] - autorelease]; - - [NSValueTransformer setValueTransformer:machineScalerIsEnabled - forName:@"MachineTimexIsDisabled"]; - - mToITransformer = [[[MachineNameToIdTransformer alloc] init] autorelease]; - - [NSValueTransformer setValueTransformer:mToITransformer - forName:@"MachineNameToIdTransformer"]; - - vsToPTransformer = [[[VolumeSliderToPrefTransformer alloc] init] autorelease]; - - [NSValueTransformer setValueTransformer:vsToPTransformer - forName:@"VolumeSliderToPrefTransformer"]; - -} - -@end - - -@implementation NSString (ReplaceSubString) - -- (NSString *)stringByReplacingRange:(NSRange)aRange with:(NSString *)aString -{ - unsigned int bufferSize; - unsigned int selfLen = [self length]; - unsigned int aStringLen = [aString length]; - unichar *buffer; - NSRange localRange; - NSString *result; - - bufferSize = selfLen + aStringLen - aRange.length; - buffer = static_cast<unichar*>(NSAllocateMemoryPages(bufferSize*sizeof(unichar))); - - /* Get first part into buffer */ - localRange.location = 0; - localRange.length = aRange.location; - [self getCharacters:buffer range:localRange]; - - /* Get middle part into buffer */ - localRange.location = 0; - localRange.length = aStringLen; - [aString getCharacters:(buffer+aRange.location) range:localRange]; - - /* Get last part into buffer */ - localRange.location = aRange.location + aRange.length; - localRange.length = selfLen - localRange.location; - [self getCharacters:(buffer+aRange.location+aStringLen) range:localRange]; - - /* Build output string */ - result = [NSString stringWithCharacters:buffer length:bufferSize]; - - NSDeallocateMemoryPages(buffer, bufferSize); - - return result; -} - -@end - - - -#ifdef main -# undef main -#endif - - -/* Main entry point to executable - should *not* be SDL_main! */ -int main (int argc, char *argv[]) -{ - int error; - - /* Copy the arguments into a global variable */ - int i; - - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - - /* This is passed if we are launched by double-clicking */ - if ( argc >= 2 && strncmp (argv[1], "-psn", 4) == 0 ) { - gArgc = 1; - gFinderLaunch = YES; - } else { - gArgc = argc; - gFinderLaunch = NO; - } - gArgv = (char**) malloc (sizeof(*gArgv) * (gArgc+1)); - assert (gArgv != NULL); - for (i = 0; i < gArgc; i++) - gArgv[i] = argv[i]; - gArgv[i] = NULL; - - error = settings_defaults( &settings_current ); - if( error ) return error; - -#if SDL_USE_NIB_FILE - [SDLApplication poseAsClass:[NSApplication class]]; - NSApplicationMain (argc, const_cast<const char**>(argv)); -#else - CustomApplicationMain (argc, argv); -#endif - - [pool release]; - - return 0; -} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2006-12-19 11:02:48
|
Revision: 254 http://svn.sourceforge.net/fuse-for-macosx/?rev=254&view=rev Author: fredm Date: 2006-12-19 03:02:48 -0800 (Tue, 19 Dec 2006) Log Message: ----------- Save position and size of main window. Modified Paths: -------------- branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/info.nib branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/keyedobjects.nib Modified: branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/info.nib =================================================================== --- branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/info.nib 2006-12-19 10:41:41 UTC (rev 253) +++ branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/info.nib 2006-12-19 11:02:48 UTC (rev 254) @@ -7,14 +7,14 @@ <key>IBEditorPositions</key> <dict> <key>29</key> - <string>201 691 372 44 0 0 1440 878 </string> + <string>201 691 344 44 0 0 1440 878 </string> </dict> <key>IBFramework Version</key> <string>446.1</string> <key>IBOpenObjects</key> <array> + <integer>877</integer> <integer>29</integer> - <integer>877</integer> </array> <key>IBSystem Version</key> <string>8L2127</string> Modified: branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/keyedobjects.nib =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2006-12-19 10:41:44
|
Revision: 253 http://svn.sourceforge.net/fuse-for-macosx/?rev=253&view=rev Author: fredm Date: 2006-12-19 02:41:41 -0800 (Tue, 19 Dec 2006) Log Message: ----------- Need to initialise fuse in awakeFromNib as outlets are not set until then. Modified Paths: -------------- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m Modified: branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h 2006-12-19 06:40:16 UTC (rev 252) +++ branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h 2006-12-19 10:41:41 UTC (rev 253) @@ -49,5 +49,6 @@ -(void) updateEmulationForTimeDelta:(CFAbsoluteTime)deltaTime; -(id) initWithFrame:(NSRect)frameRect; +-(void) awakeFromNib; @end Modified: branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2006-12-19 06:40:16 UTC (rev 252) +++ branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2006-12-19 10:41:41 UTC (rev 253) @@ -76,14 +76,17 @@ screenTexInitialised = NO; + return self; +} + +-(void) awakeFromNib +{ // FIXME: Do all the stuff that SDLMain.mm used // to do command line wise, drag-n-drop etc. here? // FIXME: Don't really like the argc, argv stuff being here... if( fuse_init( ac, av ) ) { fprintf( stderr, "%s: error initialising -- giving up!\n", fuse_progname ); } - - return self; } - (void)drawRect:(NSRect)aRect This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2006-12-19 06:40:18
|
Revision: 252 http://svn.sourceforge.net/fuse-for-macosx/?rev=252&view=rev Author: fredm Date: 2006-12-18 22:40:16 -0800 (Mon, 18 Dec 2006) Log Message: ----------- Inital rough cut of native Cocoa UI, only screen done yet, still need to do input, sound and lots of tidying. Modified Paths: -------------- branches/fusegl/fuse/TODO branches/fusegl/fuse/compat.h branches/fusegl/fuse/fuse.cpp branches/fusegl/fuse/fuse.h branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj branches/fusegl/fuse/fusepb/FuseMenus.h branches/fusegl/fuse/fusepb/FuseMenus.m branches/fusegl/fuse/fusepb/Info-Fuse.plist branches/fusegl/fuse/fusepb/config.h branches/fusegl/fuse/fusepb/content_arrays/SDLJoysticks.m branches/fusegl/fuse/fusepb/controllers/FuseController.m branches/fusegl/fuse/fusepb/controllers/JoystickConfigurationController.m branches/fusegl/fuse/fusepb/controllers/PreferencesController.m branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/classes.nib branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/info.nib branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/keyedobjects.nib branches/fusegl/fuse/machine.c branches/fusegl/fuse/menu.h Added Paths: ----------- branches/fusegl/fuse/fusepb/main.h branches/fusegl/fuse/fusepb/main.mm branches/fusegl/fuse/fusepb/nibs/MainMenu.nib/ branches/fusegl/fuse/fusepb/views/ branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m branches/fusegl/fuse/ui/cocoa/ branches/fusegl/fuse/ui/cocoa/cocoadisplay.c branches/fusegl/fuse/ui/cocoa/cocoadisplay.h branches/fusegl/fuse/ui/cocoa/cocoajoystick.c branches/fusegl/fuse/ui/cocoa/cocoaui.c branches/fusegl/fuse/ui/cocoa/cocoaui.h branches/fusegl/fuse/ui/cocoa/keysyms.c Removed Paths: ------------- branches/fusegl/fuse/fusepb/keysyms.c branches/fusegl/fuse/fusepb/nibs/SDLMain.nib/ Modified: branches/fusegl/fuse/TODO =================================================================== --- branches/fusegl/fuse/TODO 2006-12-17 13:51:06 UTC (rev 251) +++ branches/fusegl/fuse/TODO 2006-12-19 06:40:16 UTC (rev 252) @@ -1,3 +1,16 @@ TODO +X Move Fuse to have a loop that runs a single frame at a time (will be callback + in threaded Cocoa GL UI) +X Switch to Cocoa run loop for Fuse +X Add GL renderer +* Add native CoreAudio sound processing (removes SDL sound dependency from Fuse) +* Add native keyboard processing (removes SDL keyboard input dependency from + Fuse) +* Fix menus, preferences etc. +* Fix scalers +* Add native joystick processing (removes SDL joystick input dependency from + Fuse) +* Add native mouse processing (removes SDL mouse input dependency from Fuse) + $Id: TODO,v 1.4 2004/03/02 13:38:08 pak21 Exp $ Modified: branches/fusegl/fuse/compat.h =================================================================== --- branches/fusegl/fuse/compat.h 2006-12-17 13:51:06 UTC (rev 251) +++ branches/fusegl/fuse/compat.h 2006-12-19 06:40:16 UTC (rev 252) @@ -59,7 +59,7 @@ #endif /* #ifndef HAVE_GETOPT_LONG */ #ifndef HAVE_MKSTEMP -int mkstemp( char *template ); +int mkstemp( char *tmpl ); #endif /* #ifndef HAVE_MKSTEMP */ #endif /* #ifndef FUSE_COMPAT_H */ Modified: branches/fusegl/fuse/fuse.cpp =================================================================== --- branches/fusegl/fuse/fuse.cpp 2006-12-17 13:51:06 UTC (rev 251) +++ branches/fusegl/fuse/fuse.cpp 2006-12-19 06:40:16 UTC (rev 252) @@ -83,7 +83,7 @@ } /* What name were we called under? */ -char *fuse_progname; +const char *fuse_progname; /* Which directory were we started in? */ char fuse_directory[ PATH_MAX ]; @@ -125,8 +125,6 @@ } start_files_t; -static int fuse_init(int argc, char **argv); - static int creator_init( void ); static void fuse_show_copyright(void); static void fuse_show_version( void ); @@ -137,9 +135,7 @@ start_files_t *start_files ); static int do_start_files( start_files_t *start_files ); -static int fuse_end(void); - -int main(int argc, char **argv) +int old_main(int argc, char **argv) { if(fuse_init(argc,argv)) { fprintf(stderr,"%s: error initialising -- giving up!\n", fuse_progname); @@ -159,7 +155,7 @@ } -static int fuse_init(int argc, char **argv) +int fuse_init(int argc, char **argv) { int error, first_arg; char *start_scaler; @@ -753,7 +749,7 @@ } /* Tidy-up function called at end of emulation */ -static int fuse_end(void) +int fuse_end(void) { /* Must happen before memory is deallocated as we read the character set from memory for the text output */ Modified: branches/fusegl/fuse/fuse.h =================================================================== --- branches/fusegl/fuse/fuse.h 2006-12-17 13:51:06 UTC (rev 251) +++ branches/fusegl/fuse/fuse.h 2006-12-19 06:40:16 UTC (rev 252) @@ -34,7 +34,7 @@ #include "compat.h" -extern char *fuse_progname; /* argv[0] */ +extern const char *fuse_progname; /* argv[0] */ extern char fuse_directory[ PATH_MAX ]; /* The directory we started in */ extern int fuse_exiting; /* Shall we exit now? */ @@ -48,6 +48,11 @@ void fuse_abort( void ) GCC_NORETURN; /* Emergency shutdown */ +int fuse_init(int argc, char **argv); + +int fuse_end(void); /* Tidy-up function called at end of + emulation */ + extern int fuse_sound_in_use; /* Are we trying to produce sound? */ extern libspectrum_creator *fuse_creator; /* Creator information for file Modified: branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj =================================================================== --- branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj 2006-12-17 13:51:06 UTC (rev 251) +++ branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj 2006-12-19 06:40:16 UTC (rev 252) @@ -21,13 +21,9 @@ B61F459F09121DF100C8096C /* tape_scorpion.szx in CopyFiles */ = {isa = PBXBuildFile; fileRef = B650C40A0765988200DE7E81 /* tape_scorpion.szx */; }; B61F45A209121DF100C8096C /* spectrum.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = F541C04303963A9F01C2A5B9 /* spectrum.framework */; }; B61F45A309121DF100C8096C /* 765.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = F541C0750396490901C2A5B9 /* 765.framework */; }; - B61F45A409121DF100C8096C /* SDL.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = F50F65A003B2355701A804BA /* SDL.framework */; }; B61F45A609121DF100C8096C /* gcrypt.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = B6BA1A8B04E4F3290017354F /* gcrypt.framework */; }; B61F45A709121DF100C8096C /* libbz2.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = B6202BD105BD43D800A1EA8F /* libbz2.framework */; }; - B61F45A909121DF100C8096C /* SDLMain.h in Headers */ = {isa = PBXBuildFile; fileRef = F55985400389209A01A804BA /* SDLMain.h */; }; B61F45AA09121DF100C8096C /* config.h in Headers */ = {isa = PBXBuildFile; fileRef = F5598598038921C501A804BA /* config.h */; }; - B61F45AB09121DF100C8096C /* sdldisplay.h in Headers */ = {isa = PBXBuildFile; fileRef = F55985A40389221501A804BA /* sdldisplay.h */; }; - B61F45AC09121DF100C8096C /* sdlkeyboard.h in Headers */ = {isa = PBXBuildFile; fileRef = F55985A60389221501A804BA /* sdlkeyboard.h */; }; B61F45AD09121DF100C8096C /* ui.h in Headers */ = {isa = PBXBuildFile; fileRef = F55985AD0389222701A804BA /* ui.h */; }; B61F45AE09121DF100C8096C /* uidisplay.h in Headers */ = {isa = PBXBuildFile; fileRef = F55985AE0389222701A804BA /* uidisplay.h */; }; B61F45AF09121DF100C8096C /* z80_macros.h in Headers */ = {isa = PBXBuildFile; fileRef = F55985B10389224001A804BA /* z80_macros.h */; }; @@ -61,9 +57,7 @@ B61F45CB09121DF100C8096C /* debugger.h in Headers */ = {isa = PBXBuildFile; fileRef = B68CB2C503DD920300A804BA /* debugger.h */; }; B61F45CC09121DF100C8096C /* DebuggerController.h in Headers */ = {isa = PBXBuildFile; fileRef = B632C6AE03E5368700A864FD /* DebuggerController.h */; }; B61F45CD09121DF100C8096C /* FuseMenus.h in Headers */ = {isa = PBXBuildFile; fileRef = B66EA7830401075300A864FD /* FuseMenus.h */; }; - B61F45CE09121DF100C8096C /* sdlscreenshot.h in Headers */ = {isa = PBXBuildFile; fileRef = B68D5B20041E085000A864FD /* sdlscreenshot.h */; }; B61F45CF09121DF100C8096C /* scaler_internals.h in Headers */ = {isa = PBXBuildFile; fileRef = B60A6A3A042BEECE00D41533 /* scaler_internals.h */; }; - B61F45D009121DF100C8096C /* sdljoystick.h in Headers */ = {isa = PBXBuildFile; fileRef = B6030027043363C900A864FD /* sdljoystick.h */; }; B61F45D109121DF100C8096C /* dck.h in Headers */ = {isa = PBXBuildFile; fileRef = B65E4C610445DB7D00A864FD /* dck.h */; }; B61F45D209121DF100C8096C /* psg.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CA304D049CEC410037E9F2 /* psg.h */; }; B61F45D309121DF100C8096C /* compat.h in Headers */ = {isa = PBXBuildFile; fileRef = B6871C9D04AF7BEF00C24D83 /* compat.h */; }; @@ -74,7 +68,6 @@ B61F45D809121DF100C8096C /* pokefinder.h in Headers */ = {isa = PBXBuildFile; fileRef = B64586D3059BC04A00934482 /* pokefinder.h */; }; B61F45D909121DF100C8096C /* PokeFinderController.h in Headers */ = {isa = PBXBuildFile; fileRef = B62F3BCE059F5BF300A7009A /* PokeFinderController.h */; }; B61F45DA09121DF100C8096C /* utils.h in Headers */ = {isa = PBXBuildFile; fileRef = B6FD5C7A05A4F5B600A6C4FC /* utils.h */; }; - B61F45DB09121DF100C8096C /* sdlui.h in Headers */ = {isa = PBXBuildFile; fileRef = B627DAA705ACDF4E00609956 /* sdlui.h */; }; B61F45DC09121DF100C8096C /* MemoryBrowserController.h in Headers */ = {isa = PBXBuildFile; fileRef = B6D2989105B061CB00C2AA14 /* MemoryBrowserController.h */; }; B61F45DD09121DF100C8096C /* periph.h in Headers */ = {isa = PBXBuildFile; fileRef = B6C57E0105ECA05B0056F1D0 /* periph.h */; }; B61F45DE09121DF100C8096C /* breakpoint.h in Headers */ = {isa = PBXBuildFile; fileRef = B66050ED0606AAF500247454 /* breakpoint.h */; }; @@ -117,7 +110,7 @@ B61F460709121DF100C8096C /* Preferences.nib in Resources */ = {isa = PBXBuildFile; fileRef = B6BA6F0207B1E04200E44C8D /* Preferences.nib */; }; B61F460809121DF100C8096C /* Rollback.nib in Resources */ = {isa = PBXBuildFile; fileRef = B600ADA3077237920030FD05 /* Rollback.nib */; }; B61F460909121DF100C8096C /* SaveBinary.nib in Resources */ = {isa = PBXBuildFile; fileRef = B6F74F9A04B85B4F0059D51C /* SaveBinary.nib */; }; - B61F460A09121DF100C8096C /* SDLMain.nib in Resources */ = {isa = PBXBuildFile; fileRef = F5598546038920E401A804BA /* SDLMain.nib */; }; + B61F460A09121DF100C8096C /* MainMenu.nib in Resources */ = {isa = PBXBuildFile; fileRef = F5598546038920E401A804BA /* MainMenu.nib */; }; B61F460B09121DF100C8096C /* TapeBrowser.nib in Resources */ = {isa = PBXBuildFile; fileRef = F59B5587039F8DB601A804BA /* TapeBrowser.nib */; }; B61F460C09121DF100C8096C /* 48.rom in Resources */ = {isa = PBXBuildFile; fileRef = F559854C0389212301A804BA /* 48.rom */; }; B61F460D09121DF100C8096C /* 128-0.rom in Resources */ = {isa = PBXBuildFile; fileRef = F559854D0389212301A804BA /* 128-0.rom */; }; @@ -184,7 +177,6 @@ B61F464D09121DF100C8096C /* timer.c in Sources */ = {isa = PBXBuildFile; fileRef = F55986350389237101A804BA /* timer.c */; }; B61F464E09121DF100C8096C /* ui.c in Sources */ = {isa = PBXBuildFile; fileRef = F559863B0389238101A804BA /* ui.c */; }; B61F464F09121DF100C8096C /* uidisplay.c in Sources */ = {isa = PBXBuildFile; fileRef = F559863C0389238101A804BA /* uidisplay.c */; }; - B61F465009121DF100C8096C /* error.m in Sources */ = {isa = PBXBuildFile; fileRef = F5F8763503995372011FA3A4 /* error.m */; }; B61F465109121DF100C8096C /* FuseController.m in Sources */ = {isa = PBXBuildFile; fileRef = F5F876380399540D011FA3A4 /* FuseController.m */; }; B61F465209121DF100C8096C /* TapeBrowserController.m in Sources */ = {isa = PBXBuildFile; fileRef = F59B5590039FD8F901A804BA /* TapeBrowserController.m */; }; B61F465309121DF100C8096C /* utils.c in Sources */ = {isa = PBXBuildFile; fileRef = F536B56503A0C275011517A0 /* utils.c */; }; @@ -199,28 +191,22 @@ B61F465C09121DF100C8096C /* debugger.c in Sources */ = {isa = PBXBuildFile; fileRef = B68CB2C403DD920300A804BA /* debugger.c */; }; B61F465D09121DF100C8096C /* disassemble.c in Sources */ = {isa = PBXBuildFile; fileRef = B68CB2C603DD920300A804BA /* disassemble.c */; }; B61F465E09121DF100C8096C /* memory.c in Sources */ = {isa = PBXBuildFile; fileRef = B68CB2CC03DD923C00A804BA /* memory.c */; }; - B61F465F09121DF100C8096C /* sdlkeyboard.c in Sources */ = {isa = PBXBuildFile; fileRef = B6586D8503E744C000A804BA /* sdlkeyboard.c */; }; B61F466009121DF100C8096C /* DebuggerController.m in Sources */ = {isa = PBXBuildFile; fileRef = B632C6AF03E5368700A864FD /* DebuggerController.m */; }; - B61F466109121DF100C8096C /* sdldisplay.c in Sources */ = {isa = PBXBuildFile; fileRef = B6F4396C03E9645500A864FD /* sdldisplay.c */; }; B61F466209121DF100C8096C /* FuseMenus.m in Sources */ = {isa = PBXBuildFile; fileRef = B66EA7840401075300A864FD /* FuseMenus.m */; }; B61F466309121DF100C8096C /* scaler.c in Sources */ = {isa = PBXBuildFile; fileRef = B63ABD8D042F175200A864FD /* scaler.c */; }; B61F466409121DF100C8096C /* tc2068.c in Sources */ = {isa = PBXBuildFile; fileRef = B6FEA44F0444C3370013916D /* tc2068.c */; }; B61F466509121DF100C8096C /* dck.c in Sources */ = {isa = PBXBuildFile; fileRef = B65E4C600445DB7D00A864FD /* dck.c */; }; - B61F466609121DF100C8096C /* keysyms.c in Sources */ = {isa = PBXBuildFile; fileRef = B61D4512048F8F5800FEA4F1 /* keysyms.c */; }; B61F466709121DF100C8096C /* psg.c in Sources */ = {isa = PBXBuildFile; fileRef = B6CA304C049CEC410037E9F2 /* psg.c */; }; B61F466809121DF100C8096C /* LoadBinaryController.m in Sources */ = {isa = PBXBuildFile; fileRef = B6F74F9704B855D40059D51C /* LoadBinaryController.m */; }; B61F466909121DF100C8096C /* SaveBinaryController.m in Sources */ = {isa = PBXBuildFile; fileRef = B6F74F9D04B85B660059D51C /* SaveBinaryController.m */; }; - B61F466A09121DF100C8096C /* sdljoystick.c in Sources */ = {isa = PBXBuildFile; fileRef = B6C691B504C20A09005EE041 /* sdljoystick.c */; }; B61F466B09121DF100C8096C /* joystick.c in Sources */ = {isa = PBXBuildFile; fileRef = B6C691B704C20A42005EE041 /* joystick.c */; }; B61F466C09121DF100C8096C /* expression.c in Sources */ = {isa = PBXBuildFile; fileRef = B604635E04C5F37B00C225C9 /* expression.c */; }; B61F466D09121DF100C8096C /* NumberFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = B6A7F0EA04C9A11D001025EB /* NumberFormatter.m */; }; B61F466E09121DF100C8096C /* pokefinder.c in Sources */ = {isa = PBXBuildFile; fileRef = B64586D2059BC04A00934482 /* pokefinder.c */; }; B61F466F09121DF100C8096C /* machine.c in Sources */ = {isa = PBXBuildFile; fileRef = B60B11F7059BC7E70048B64B /* machine.c */; }; B61F467009121DF100C8096C /* PokeFinderController.m in Sources */ = {isa = PBXBuildFile; fileRef = B62F3BCF059F5BF300A7009A /* PokeFinderController.m */; }; - B61F467109121DF100C8096C /* sdlui.c in Sources */ = {isa = PBXBuildFile; fileRef = B627DAA605ACDF4E00609956 /* sdlui.c */; }; B61F467209121DF100C8096C /* MemoryBrowserController.m in Sources */ = {isa = PBXBuildFile; fileRef = B6D2989205B061CB00C2AA14 /* MemoryBrowserController.m */; }; B61F467309121DF100C8096C /* periph.c in Sources */ = {isa = PBXBuildFile; fileRef = B6C57E0005ECA05B0056F1D0 /* periph.c */; }; - B61F467409121DF100C8096C /* SDLMain.mm in Sources */ = {isa = PBXBuildFile; fileRef = B6C57E0605ECC4160056F1D0 /* SDLMain.mm */; }; B61F467509121DF100C8096C /* scalers16.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6C57E3F05ECC9260056F1D0 /* scalers16.cpp */; }; B61F467609121DF100C8096C /* hq2x.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B65163AB05F4A11E001903BE /* hq2x.cpp */; }; B61F467709121DF100C8096C /* hq3x.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B61EF5B905FED7930081DF70 /* hq3x.cpp */; }; @@ -253,13 +239,11 @@ B61F469209121DF100C8096C /* VolumeSliderToPrefTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = B66D6C9708115FC200FAE6F3 /* VolumeSliderToPrefTransformer.m */; }; B61F469309121DF100C8096C /* profile.c in Sources */ = {isa = PBXBuildFile; fileRef = B6E811F0084B5117008CF718 /* profile.c */; }; B61F469409121DF100C8096C /* ide.c in Sources */ = {isa = PBXBuildFile; fileRef = B6E811F4084B5148008CF718 /* ide.c */; }; - B61F469509121DF100C8096C /* sdlscreenshot.m in Sources */ = {isa = PBXBuildFile; fileRef = B619FC69090E649700344F94 /* sdlscreenshot.m */; }; B61F469A09121DF100C8096C /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; B61F469B09121DF100C8096C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29B97325FDCFA39411CA2CEA /* Foundation.framework */; }; B61F469C09121DF100C8096C /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29B97324FDCFA39411CA2CEA /* AppKit.framework */; }; B61F469D09121DF100C8096C /* spectrum.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F541C04303963A9F01C2A5B9 /* spectrum.framework */; }; B61F469E09121DF100C8096C /* 765.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F541C0750396490901C2A5B9 /* 765.framework */; }; - B61F469F09121DF100C8096C /* SDL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F50F65A003B2355701A804BA /* SDL.framework */; }; B61F46A109121DF100C8096C /* gcrypt.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B6BA1A8B04E4F3290017354F /* gcrypt.framework */; }; B61F46A209121DF100C8096C /* libbz2.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B6202BD105BD43D800A1EA8F /* libbz2.framework */; }; B61F46A409121DF100C8096C /* FuseImporter.mdimporter in CopyFiles */ = {isa = PBXBuildFile; fileRef = B64FEA96084F8EC300879389 /* FuseImporter.mdimporter */; }; @@ -280,6 +264,15 @@ B650987109366CA2003AF1BF /* szx.icns in Resources */ = {isa = PBXBuildFile; fileRef = B650987009366CA2003AF1BF /* szx.icns */; }; B6825549091817F30014B5EE /* divide.c in Sources */ = {isa = PBXBuildFile; fileRef = B6825547091817F30014B5EE /* divide.c */; }; B682554A091817F30014B5EE /* divide.h in Headers */ = {isa = PBXBuildFile; fileRef = B6825548091817F30014B5EE /* divide.h */; }; + B6CE7F400B2830A300EB65B3 /* cocoadisplay.c in Sources */ = {isa = PBXBuildFile; fileRef = B6CE7F3A0B2830A300EB65B3 /* cocoadisplay.c */; }; + B6CE7F410B2830A300EB65B3 /* cocoadisplay.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CE7F3B0B2830A300EB65B3 /* cocoadisplay.h */; }; + B6CE7F420B2830A300EB65B3 /* cocoajoystick.c in Sources */ = {isa = PBXBuildFile; fileRef = B6CE7F3C0B2830A300EB65B3 /* cocoajoystick.c */; }; + B6CE7F430B2830A300EB65B3 /* cocoaui.c in Sources */ = {isa = PBXBuildFile; fileRef = B6CE7F3D0B2830A300EB65B3 /* cocoaui.c */; }; + B6CE7F440B2830A300EB65B3 /* cocoaui.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CE7F3E0B2830A300EB65B3 /* cocoaui.h */; }; + B6CE7F450B2830A300EB65B3 /* keysyms.c in Sources */ = {isa = PBXBuildFile; fileRef = B6CE7F3F0B2830A300EB65B3 /* keysyms.c */; }; + B6CE7F520B283A0700EB65B3 /* main.mm in Sources */ = {isa = PBXBuildFile; fileRef = B6CE7F510B283A0700EB65B3 /* main.mm */; }; + B6CE7FCD0B28FBD600EB65B3 /* DisplayOpenGLView.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CE7FCB0B28FBD600EB65B3 /* DisplayOpenGLView.h */; }; + B6CE7FCE0B28FBD600EB65B3 /* DisplayOpenGLView.m in Sources */ = {isa = PBXBuildFile; fileRef = B6CE7FCC0B28FBD600EB65B3 /* DisplayOpenGLView.m */; }; B6F047F60952A6D6006D8005 /* tape_se.szx in CopyFiles */ = {isa = PBXBuildFile; fileRef = B6F047F20952A6BA006D8005 /* tape_se.szx */; }; B6F047F70952A6D6006D8005 /* tape_ts2068.szx in CopyFiles */ = {isa = PBXBuildFile; fileRef = B6F047F30952A6BA006D8005 /* tape_ts2068.szx */; }; B6F047F80952A6E3006D8005 /* tape_plus3e.szx in CopyFiles */ = {isa = PBXBuildFile; fileRef = B6F047F00952A69A006D8005 /* tape_plus3e.szx */; }; @@ -325,7 +318,6 @@ files = ( B61F45A209121DF100C8096C /* spectrum.framework in CopyFiles */, B61F45A309121DF100C8096C /* 765.framework in CopyFiles */, - B61F45A409121DF100C8096C /* SDL.framework in CopyFiles */, B61F45A609121DF100C8096C /* gcrypt.framework in CopyFiles */, B61F45A709121DF100C8096C /* libbz2.framework in CopyFiles */, ); @@ -353,7 +345,6 @@ B601847A065A586900B0BE59 /* zxatasp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = zxatasp.h; path = ../zxatasp.h; sourceTree = SOURCE_ROOT; }; B601847B065A586900B0BE59 /* zxcf.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = zxcf.c; path = ../zxcf.c; sourceTree = SOURCE_ROOT; }; B601847C065A586900B0BE59 /* zxcf.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = zxcf.h; path = ../zxcf.h; sourceTree = SOURCE_ROOT; }; - B6030027043363C900A864FD /* sdljoystick.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = sdljoystick.h; path = ../ui/sdl/sdljoystick.h; sourceTree = "<group>"; }; B604635E04C5F37B00C225C9 /* expression.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = expression.c; path = ../debugger/expression.c; sourceTree = SOURCE_ROOT; }; B60A6A3A042BEECE00D41533 /* scaler_internals.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = scaler_internals.h; path = ../ui/scaler/scaler_internals.h; sourceTree = SOURCE_ROOT; }; B60B11F7059BC7E70048B64B /* machine.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = machine.c; path = ../machine.c; sourceTree = SOURCE_ROOT; }; @@ -361,16 +352,12 @@ B611190306A1FA12006D2711 /* JoystickConfigurationController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = JoystickConfigurationController.m; path = controllers/JoystickConfigurationController.m; sourceTree = SOURCE_ROOT; }; B611196806A1FBB6006D2711 /* JoystickConfiguration.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = JoystickConfiguration.nib; path = nibs/JoystickConfiguration.nib; sourceTree = "<group>"; }; B619FC2E090D9BC200344F94 /* SavePanelAccessoryView.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = SavePanelAccessoryView.nib; path = nibs/SavePanelAccessoryView.nib; sourceTree = "<group>"; }; - B619FC69090E649700344F94 /* sdlscreenshot.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = sdlscreenshot.m; sourceTree = SOURCE_ROOT; }; - B61D4512048F8F5800FEA4F1 /* keysyms.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = keysyms.c; sourceTree = SOURCE_ROOT; }; B61EF5B905FED7930081DF70 /* hq3x.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = hq3x.cpp; path = scaler/hq3x.cpp; sourceTree = SOURCE_ROOT; }; B61F46A909121DF100C8096C /* Info-Fuse.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "Info-Fuse.plist"; sourceTree = "<group>"; }; B61F46AA09121DF200C8096C /* Fuse.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Fuse.app; sourceTree = BUILT_PRODUCTS_DIR; }; B6202BD105BD43D800A1EA8F /* libbz2.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = libbz2.framework; path = ../../bzip2/build/Deployment/libbz2.framework; sourceTree = SOURCE_ROOT; }; B621A11E062E92FB00F63DBC /* if2.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = if2.c; path = ../if2.c; sourceTree = SOURCE_ROOT; }; B621A11F062E92FB00F63DBC /* if2.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = if2.h; path = ../if2.h; sourceTree = SOURCE_ROOT; }; - B627DAA605ACDF4E00609956 /* sdlui.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = sdlui.c; path = ../ui/sdl/sdlui.c; sourceTree = SOURCE_ROOT; }; - B627DAA705ACDF4E00609956 /* sdlui.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = sdlui.h; sourceTree = SOURCE_ROOT; }; B62E1BC303E298B200A80002 /* Debugger.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = Debugger.nib; path = nibs/Debugger.nib; sourceTree = SOURCE_ROOT; }; B62F3BB4059F5B5900A7009A /* PokeFinder.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = PokeFinder.nib; path = nibs/PokeFinder.nib; sourceTree = "<group>"; }; B62F3BCE059F5BF300A7009A /* PokeFinderController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PokeFinderController.h; path = controllers/PokeFinderController.h; sourceTree = "<group>"; }; @@ -421,7 +408,6 @@ B650F73E07E7CD3F00E4F3AF /* PreferencesController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = PreferencesController.h; path = controllers/PreferencesController.h; sourceTree = SOURCE_ROOT; }; B650F73F07E7CD3F00E4F3AF /* PreferencesController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = PreferencesController.m; path = controllers/PreferencesController.m; sourceTree = SOURCE_ROOT; }; B65163AB05F4A11E001903BE /* hq2x.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = hq2x.cpp; path = scaler/hq2x.cpp; sourceTree = SOURCE_ROOT; }; - B6586D8503E744C000A804BA /* sdlkeyboard.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = sdlkeyboard.c; path = ../ui/sdl/sdlkeyboard.c; sourceTree = SOURCE_ROOT; }; B65E4C600445DB7D00A864FD /* dck.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = dck.c; path = ../dck.c; sourceTree = SOURCE_ROOT; }; B65E4C610445DB7D00A864FD /* dck.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = dck.h; path = ../dck.h; sourceTree = SOURCE_ROOT; }; B66050EC0606AAF500247454 /* breakpoint.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = breakpoint.c; path = ../debugger/breakpoint.c; sourceTree = SOURCE_ROOT; }; @@ -462,7 +448,6 @@ B68CB2C503DD920300A804BA /* debugger.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = debugger.h; path = ../debugger/debugger.h; sourceTree = "<group>"; }; B68CB2C603DD920300A804BA /* disassemble.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = disassemble.c; path = ../debugger/disassemble.c; sourceTree = "<group>"; }; B68CB2CC03DD923C00A804BA /* memory.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = memory.c; sourceTree = "<group>"; }; - B68D5B20041E085000A864FD /* sdlscreenshot.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = sdlscreenshot.h; sourceTree = SOURCE_ROOT; }; B6A7F0E904C9A11D001025EB /* NumberFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NumberFormatter.h; sourceTree = "<group>"; }; B6A7F0EA04C9A11D001025EB /* NumberFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NumberFormatter.m; sourceTree = "<group>"; }; B6AA8A3C03D2FC1C00FED55D /* trdos.rom */ = {isa = PBXFileReference; lastKnownFileType = file; name = trdos.rom; path = ../roms/trdos.rom; sourceTree = SOURCE_ROOT; }; @@ -485,9 +470,7 @@ B6C3479F044B091100E1BBA7 /* ts2068.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = ts2068.png; path = resources/ts2068.png; sourceTree = SOURCE_ROOT; }; B6C57E0005ECA05B0056F1D0 /* periph.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = periph.c; path = ../periph.c; sourceTree = SOURCE_ROOT; }; B6C57E0105ECA05B0056F1D0 /* periph.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = periph.h; path = ../periph.h; sourceTree = SOURCE_ROOT; }; - B6C57E0605ECC4160056F1D0 /* SDLMain.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = SDLMain.mm; sourceTree = SOURCE_ROOT; }; B6C57E3F05ECC9260056F1D0 /* scalers16.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = scalers16.cpp; path = scaler/scalers16.cpp; sourceTree = SOURCE_ROOT; }; - B6C691B504C20A09005EE041 /* sdljoystick.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = sdljoystick.c; path = ../ui/sdl/sdljoystick.c; sourceTree = SOURCE_ROOT; }; B6C691B704C20A42005EE041 /* joystick.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = joystick.c; path = ../joystick.c; sourceTree = SOURCE_ROOT; }; B6C740D90810BB0500AB170C /* Joysticks.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = Joysticks.h; path = content_arrays/Joysticks.h; sourceTree = SOURCE_ROOT; }; B6C740DA0810BB0500AB170C /* Joysticks.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = Joysticks.m; path = content_arrays/Joysticks.m; sourceTree = SOURCE_ROOT; }; @@ -503,6 +486,15 @@ B6CC82FF0800E408006EFFB9 /* CAMachines.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = CAMachines.h; path = content_arrays/CAMachines.h; sourceTree = SOURCE_ROOT; }; B6CC83000800E408006EFFB9 /* CAMachines.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = CAMachines.m; path = content_arrays/CAMachines.m; sourceTree = SOURCE_ROOT; }; B6CD0B9E06069F4A00847338 /* fuse.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = fuse.cpp; path = ../fuse.cpp; sourceTree = SOURCE_ROOT; }; + B6CE7F3A0B2830A300EB65B3 /* cocoadisplay.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = cocoadisplay.c; sourceTree = "<group>"; }; + B6CE7F3B0B2830A300EB65B3 /* cocoadisplay.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cocoadisplay.h; sourceTree = "<group>"; }; + B6CE7F3C0B2830A300EB65B3 /* cocoajoystick.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = cocoajoystick.c; sourceTree = "<group>"; }; + B6CE7F3D0B2830A300EB65B3 /* cocoaui.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = cocoaui.c; sourceTree = "<group>"; }; + B6CE7F3E0B2830A300EB65B3 /* cocoaui.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cocoaui.h; sourceTree = "<group>"; }; + B6CE7F3F0B2830A300EB65B3 /* keysyms.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = keysyms.c; sourceTree = "<group>"; }; + B6CE7F510B283A0700EB65B3 /* main.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = main.mm; sourceTree = "<group>"; }; + B6CE7FCB0B28FBD600EB65B3 /* DisplayOpenGLView.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DisplayOpenGLView.h; sourceTree = "<group>"; }; + B6CE7FCC0B28FBD600EB65B3 /* DisplayOpenGLView.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = DisplayOpenGLView.m; sourceTree = "<group>"; }; B6D2989105B061CB00C2AA14 /* MemoryBrowserController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MemoryBrowserController.h; path = controllers/MemoryBrowserController.h; sourceTree = "<group>"; }; B6D2989205B061CB00C2AA14 /* MemoryBrowserController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MemoryBrowserController.m; path = controllers/MemoryBrowserController.m; sourceTree = "<group>"; }; B6D2993105B06AD200C2AA14 /* MemoryBrowser.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = MemoryBrowser.nib; path = nibs/MemoryBrowser.nib; sourceTree = "<group>"; }; @@ -530,7 +522,6 @@ B6F060AB078FB63A00CD5D95 /* tc2068.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = tc2068.h; path = ../machines/tc2068.h; sourceTree = SOURCE_ROOT; }; B6F06100078FC2C900CD5D95 /* sfifo.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = sfifo.c; path = ../sound/sfifo.c; sourceTree = SOURCE_ROOT; }; B6F06101078FC2C900CD5D95 /* sfifo.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = sfifo.h; path = ../sound/sfifo.h; sourceTree = SOURCE_ROOT; }; - B6F4396C03E9645500A864FD /* sdldisplay.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = sdldisplay.c; path = ../ui/sdl/sdldisplay.c; sourceTree = SOURCE_ROOT; }; B6F74F9404B855930059D51C /* LoadBinary.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = LoadBinary.nib; path = nibs/LoadBinary.nib; sourceTree = "<group>"; }; B6F74F9604B855D40059D51C /* LoadBinaryController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = LoadBinaryController.h; path = controllers/LoadBinaryController.h; sourceTree = "<group>"; }; B6F74F9704B855D40059D51C /* LoadBinaryController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = LoadBinaryController.m; path = controllers/LoadBinaryController.m; sourceTree = "<group>"; }; @@ -544,15 +535,13 @@ B6FEA44B0444C2CC0013916D /* tc2068-0.rom */ = {isa = PBXFileReference; lastKnownFileType = file; name = "tc2068-0.rom"; path = "../roms/tc2068-0.rom"; sourceTree = SOURCE_ROOT; }; B6FEA44C0444C2CC0013916D /* tc2068-1.rom */ = {isa = PBXFileReference; lastKnownFileType = file; name = "tc2068-1.rom"; path = "../roms/tc2068-1.rom"; sourceTree = SOURCE_ROOT; }; B6FEA44F0444C3370013916D /* tc2068.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = tc2068.c; path = ../machines/tc2068.c; sourceTree = SOURCE_ROOT; }; - F50F65A003B2355701A804BA /* SDL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SDL.framework; path = ../../SDL.framework; sourceTree = SOURCE_ROOT; }; F520C8BC038D022E01A804BA /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = "<absolute>"; }; F536B56503A0C275011517A0 /* utils.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = utils.c; path = ../utils.c; sourceTree = SOURCE_ROOT; }; F541C04303963A9F01C2A5B9 /* spectrum.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = spectrum.framework; path = ../../libspectrum/build/Deployment/spectrum.framework; sourceTree = SOURCE_ROOT; }; F541C0750396490901C2A5B9 /* 765.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = 765.framework; path = ../../lib765/build/Deployment/765.framework; sourceTree = SOURCE_ROOT; }; F541FB5E03B0B33401FF8235 /* scaler.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = scaler.h; path = ../ui/scaler/scaler.h; sourceTree = SOURCE_ROOT; }; F54670EB03A3F3E70143EC2C /* settings.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = settings.m; sourceTree = SOURCE_ROOT; }; - F55985400389209A01A804BA /* SDLMain.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SDLMain.h; sourceTree = "<group>"; }; - F5598546038920E401A804BA /* SDLMain.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = SDLMain.nib; path = nibs/SDLMain.nib; sourceTree = "<group>"; }; + F5598546038920E401A804BA /* MainMenu.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = MainMenu.nib; path = nibs/MainMenu.nib; sourceTree = "<group>"; }; F559854C0389212301A804BA /* 48.rom */ = {isa = PBXFileReference; lastKnownFileType = file; name = 48.rom; path = ../roms/48.rom; sourceTree = SOURCE_ROOT; }; F559854D0389212301A804BA /* 128-0.rom */ = {isa = PBXFileReference; lastKnownFileType = file; name = "128-0.rom"; path = "../roms/128-0.rom"; sourceTree = SOURCE_ROOT; }; F559854E0389212301A804BA /* 128-1.rom */ = {isa = PBXFileReference; lastKnownFileType = file; name = "128-1.rom"; path = "../roms/128-1.rom"; sourceTree = SOURCE_ROOT; }; @@ -564,8 +553,6 @@ F55985570389213E01A804BA /* plus3-3.rom */ = {isa = PBXFileReference; lastKnownFileType = file; name = "plus3-3.rom"; path = "../roms/plus3-3.rom"; sourceTree = SOURCE_ROOT; }; F55985580389213E01A804BA /* tc2048.rom */ = {isa = PBXFileReference; lastKnownFileType = file; name = tc2048.rom; path = ../roms/tc2048.rom; sourceTree = SOURCE_ROOT; }; F5598598038921C501A804BA /* config.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = SOURCE_ROOT; }; - F55985A40389221501A804BA /* sdldisplay.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = sdldisplay.h; path = ../ui/sdl/sdldisplay.h; sourceTree = SOURCE_ROOT; }; - F55985A60389221501A804BA /* sdlkeyboard.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = sdlkeyboard.h; path = ../ui/sdl/sdlkeyboard.h; sourceTree = SOURCE_ROOT; }; F55985AD0389222701A804BA /* ui.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ui.h; path = ../ui/ui.h; sourceTree = SOURCE_ROOT; }; F55985AE0389222701A804BA /* uidisplay.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = uidisplay.h; path = ../ui/uidisplay.h; sourceTree = SOURCE_ROOT; }; F55985B10389224001A804BA /* z80_macros.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = z80_macros.h; path = ../z80/z80_macros.h; sourceTree = SOURCE_ROOT; }; @@ -622,7 +609,6 @@ F59B5590039FD8F901A804BA /* TapeBrowserController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = TapeBrowserController.m; path = controllers/TapeBrowserController.m; sourceTree = SOURCE_ROOT; }; F5F291060396932B01730B00 /* Credits.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; path = Credits.html; sourceTree = "<group>"; }; F5F4333103903ED801E7A043 /* Fuse.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = Fuse.icns; sourceTree = "<group>"; }; - F5F8763503995372011FA3A4 /* error.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = error.m; sourceTree = SOURCE_ROOT; }; F5F876370399540D011FA3A4 /* FuseController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = FuseController.h; path = controllers/FuseController.h; sourceTree = SOURCE_ROOT; }; F5F876380399540D011FA3A4 /* FuseController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = FuseController.m; path = controllers/FuseController.m; sourceTree = SOURCE_ROOT; }; /* End PBXFileReference section */ @@ -637,7 +623,6 @@ B61F469C09121DF100C8096C /* AppKit.framework in Frameworks */, B61F469D09121DF100C8096C /* spectrum.framework in Frameworks */, B61F469E09121DF100C8096C /* 765.framework in Frameworks */, - B61F469F09121DF100C8096C /* SDL.framework in Frameworks */, B61F46A109121DF100C8096C /* gcrypt.framework in Frameworks */, B61F46A209121DF100C8096C /* libbz2.framework in Frameworks */, B64E2A170A6534A3006863D9 /* Carbon.framework in Frameworks */, @@ -650,15 +635,16 @@ 080E96DDFE201D6D7F000001 /* Classes */ = { isa = PBXGroup; children = ( + B6CE7FCF0B28FBEC00EB65B3 /* Views */, B6DD457908134943008E9F7E /* Content Arrays */, B67F3C4E07ED34260045339F /* Transformers */, B632C6AD03E5360C00A864FD /* Controllers */, + B64E29F40A6532A2006863D9 /* icon_family */, B66EA7830401075300A864FD /* FuseMenus.h */, B66EA7840401075300A864FD /* FuseMenus.m */, B6A7F0E904C9A11D001025EB /* NumberFormatter.h */, B6A7F0EA04C9A11D001025EB /* NumberFormatter.m */, - F55985400389209A01A804BA /* SDLMain.h */, - B6C57E0605ECC4160056F1D0 /* SDLMain.mm */, + B6CE7F510B283A0700EB65B3 /* main.mm */, ); name = Classes; sourceTree = "<group>"; @@ -672,7 +658,6 @@ F520C8BC038D022E01A804BA /* OpenGL.framework */, F541C04303963A9F01C2A5B9 /* spectrum.framework */, F541C0750396490901C2A5B9 /* 765.framework */, - F50F65A003B2355701A804BA /* SDL.framework */, B6BA1A8B04E4F3290017354F /* gcrypt.framework */, ); name = "Linked Frameworks"; @@ -711,7 +696,6 @@ 29B97315FDCFA39411CA2CEA /* Other Sources */ = { isa = PBXGroup; children = ( - B64E29F40A6532A2006863D9 /* icon_family */, B6AD8FE106221F7200C70D75 /* machines */, B678E3E20608FAA600678A33 /* sound */, B64586CE059BC02C00934482 /* pokefinder */, @@ -722,6 +706,7 @@ F5598598038921C501A804BA /* config.h */, ); name = "Other Sources"; + path = ..; sourceTree = "<group>"; }; 29B97317FDCFA39411CA2CEA /* Resources */ = { @@ -870,7 +855,7 @@ B68CB2C603DD920300A804BA /* disassemble.c */, B604635E04C5F37B00C225C9 /* expression.c */, ); - name = debugger; + path = debugger; sourceTree = "<group>"; }; B6AD8FE106221F7200C70D75 /* machines */ = { @@ -899,6 +884,29 @@ name = machines; sourceTree = "<group>"; }; + B6CE7E8A0B28027000EB65B3 /* cocoa */ = { + isa = PBXGroup; + children = ( + B6CE7F3A0B2830A300EB65B3 /* cocoadisplay.c */, + B6CE7F3B0B2830A300EB65B3 /* cocoadisplay.h */, + B6CE7F3C0B2830A300EB65B3 /* cocoajoystick.c */, + B6CE7F3D0B2830A300EB65B3 /* cocoaui.c */, + B6CE7F3E0B2830A300EB65B3 /* cocoaui.h */, + B6CE7F3F0B2830A300EB65B3 /* keysyms.c */, + ); + path = cocoa; + sourceTree = "<group>"; + }; + B6CE7FCF0B28FBEC00EB65B3 /* Views */ = { + isa = PBXGroup; + children = ( + B6CE7FCB0B28FBD600EB65B3 /* DisplayOpenGLView.h */, + B6CE7FCC0B28FBD600EB65B3 /* DisplayOpenGLView.m */, + ); + name = Views; + path = views; + sourceTree = "<group>"; + }; B6D81CAF0813561B00558C18 /* NIB Files */ = { isa = PBXGroup; children = ( @@ -911,7 +919,7 @@ B6BA6F0207B1E04200E44C8D /* Preferences.nib */, B600ADA3077237920030FD05 /* Rollback.nib */, B6F74F9A04B85B4F0059D51C /* SaveBinary.nib */, - F5598546038920E401A804BA /* SDLMain.nib */, + F5598546038920E401A804BA /* MainMenu.nib */, F59B5587039F8DB601A804BA /* TapeBrowser.nib */, B619FC2E090D9BC200344F94 /* SavePanelAccessoryView.nib */, ); @@ -944,7 +952,7 @@ B60A6A3A042BEECE00D41533 /* scaler_internals.h */, B6C57E3F05ECC9260056F1D0 /* scalers16.cpp */, ); - name = scaler; + path = scaler; sourceTree = "<group>"; }; F559854A038920FD01A804BA /* roms */ = { @@ -1005,34 +1013,15 @@ F559859A038921CA01A804BA /* ui */ = { isa = PBXGroup; children = ( + B6CE7E8A0B28027000EB65B3 /* cocoa */, F541FB5C03B0B31601FF8235 /* scaler */, - F559859B038921CF01A804BA /* sdl */, F55985AD0389222701A804BA /* ui.h */, F55985AE0389222701A804BA /* uidisplay.h */, B6BA1A9404E4F88F0017354F /* uijoystick.h */, ); - name = ui; + path = ui; sourceTree = "<group>"; }; - F559859B038921CF01A804BA /* sdl */ = { - isa = PBXGroup; - children = ( - F5F8763503995372011FA3A4 /* error.m */, - B61D4512048F8F5800FEA4F1 /* keysyms.c */, - B6F4396C03E9645500A864FD /* sdldisplay.c */, - F55985A40389221501A804BA /* sdldisplay.h */, - B6C691B504C20A09005EE041 /* sdljoystick.c */, - B6030027043363C900A864FD /* sdljoystick.h */, - B6586D8503E744C000A804BA /* sdlkeyboard.c */, - F55985A60389221501A804BA /* sdlkeyboard.h */, - B68D5B20041E085000A864FD /* sdlscreenshot.h */, - B619FC69090E649700344F94 /* sdlscreenshot.m */, - B627DAA605ACDF4E00609956 /* sdlui.c */, - B627DAA705ACDF4E00609956 /* sdlui.h */, - ); - name = sdl; - sourceTree = SOURCE_ROOT; - }; F559859C038921D601A804BA /* z80 */ = { isa = PBXGroup; children = ( @@ -1125,7 +1114,6 @@ B601847C065A586900B0BE59 /* zxcf.h */, ); name = fuse; - path = ..; sourceTree = "<group>"; }; /* End PBXGroup section */ @@ -1135,10 +1123,7 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - B61F45A909121DF100C8096C /* SDLMain.h in Headers */, B61F45AA09121DF100C8096C /* config.h in Headers */, - B61F45AB09121DF100C8096C /* sdldisplay.h in Headers */, - B61F45AC09121DF100C8096C /* sdlkeyboard.h in Headers */, B61F45AD09121DF100C8096C /* ui.h in Headers */, B61F45AE09121DF100C8096C /* uidisplay.h in Headers */, B61F45AF09121DF100C8096C /* z80_macros.h in Headers */, @@ -1172,9 +1157,7 @@ B61F45CB09121DF100C8096C /* debugger.h in Headers */, B61F45CC09121DF100C8096C /* DebuggerController.h in Headers */, B61F45CD09121DF100C8096C /* FuseMenus.h in Headers */, - B61F45CE09121DF100C8096C /* sdlscreenshot.h in Headers */, B61F45CF09121DF100C8096C /* scaler_internals.h in Headers */, - B61F45D009121DF100C8096C /* sdljoystick.h in Headers */, B61F45D109121DF100C8096C /* dck.h in Headers */, B61F45D209121DF100C8096C /* psg.h in Headers */, B61F45D309121DF100C8096C /* compat.h in Headers */, @@ -1185,7 +1168,6 @@ B61F45D809121DF100C8096C /* pokefinder.h in Headers */, B61F45D909121DF100C8096C /* PokeFinderController.h in Headers */, B61F45DA09121DF100C8096C /* utils.h in Headers */, - B61F45DB09121DF100C8096C /* sdlui.h in Headers */, B61F45DC09121DF100C8096C /* MemoryBrowserController.h in Headers */, B61F45DD09121DF100C8096C /* periph.h in Headers */, B61F45DE09121DF100C8096C /* breakpoint.h in Headers */, @@ -1222,6 +1204,9 @@ B64E29FD0A65337A006863D9 /* NSString+CarbonFSRefCreation.h in Headers */, B64E2A010A6533FD006863D9 /* thumbnail.h in Headers */, B6403FD90A7E4B1A00E00B11 /* loader.h in Headers */, + B6CE7F410B2830A300EB65B3 /* cocoadisplay.h in Headers */, + B6CE7F440B2830A300EB65B3 /* cocoaui.h in Headers */, + B6CE7FCD0B28FBD600EB65B3 /* DisplayOpenGLView.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1283,7 +1268,7 @@ B61F460809121DF100C8096C /* Rollback.nib in Resources */, B61F460909121DF100C8096C /* SaveBinary.nib in Resources */, B61F463709121DF100C8096C /* SavePanelAccessoryView.nib in Resources */, - B61F460A09121DF100C8096C /* SDLMain.nib in Resources */, + B61F460A09121DF100C8096C /* MainMenu.nib in Resources */, B61F460B09121DF100C8096C /* TapeBrowser.nib in Resources */, B61F460C09121DF100C8096C /* 48.rom in Resources */, B61F460D09121DF100C8096C /* 128-0.rom in Resources */, @@ -1384,7 +1369,6 @@ B61F464D09121DF100C8096C /* timer.c in Sources */, B61F464E09121DF100C8096C /* ui.c in Sources */, B61F464F09121DF100C8096C /* uidisplay.c in Sources */, - B61F465009121DF100C8096C /* error.m in Sources */, B61F465109121DF100C8096C /* FuseController.m in Sources */, B61F465209121DF100C8096C /* TapeBrowserController.m in Sources */, B61F465309121DF100C8096C /* utils.c in Sources */, @@ -1399,28 +1383,22 @@ B61F465C09121DF100C8096C /* debugger.c in Sources */, B61F465D09121DF100C8096C /* disassemble.c in Sources */, B61F465E09121DF100C8096C /* memory.c in Sources */, - B61F465F09121DF100C8096C /* sdlkeyboard.c in Sources */, B61F466009121DF100C8096C /* DebuggerController.m in Sources */, - B61F466109121DF100C8096C /* sdldisplay.c in Sources */, B61F466209121DF100C8096C /* FuseMenus.m in Sources */, B61F466309121DF100C8096C /* scaler.c in Sources */, B61F466409121DF100C8096C /* tc2068.c in Sources */, B61F466509121DF100C8096C /* dck.c in Sources */, - B61F466609121DF100C8096C /* keysyms.c in Sources */, B61F466709121DF100C8096C /* psg.c in Sources */, B61F466809121DF100C8096C /* LoadBinaryController.m in Sources */, B61F466909121DF100C8096C /* SaveBinaryController.m in Sources */, - B61F466A09121DF100C8096C /* sdljoystick.c in Sources */, B61F466B09121DF100C8096C /* joystick.c in Sources */, B61F466C09121DF100C8096C /* expression.c in Sources */, B61F466D09121DF100C8096C /* NumberFormatter.m in Sources */, B61F466E09121DF100C8096C /* pokefinder.c in Sources */, B61F466F09121DF100C8096C /* machine.c in Sources */, B61F467009121DF100C8096C /* PokeFinderController.m in Sources */, - B61F467109121DF100C8096C /* sdlui.c in Sources */, B61F467209121DF100C8096C /* MemoryBrowserController.m in Sources */, B61F467309121DF100C8096C /* periph.c in Sources */, - B61F467409121DF100C8096C /* SDLMain.mm in Sources */, B61F467509121DF100C8096C /* scalers16.cpp in Sources */, B61F467609121DF100C8096C /* hq2x.cpp in Sources */, B61F467709121DF100C8096C /* hq3x.cpp in Sources */, @@ -1453,12 +1431,17 @@ B61F469209121DF100C8096C /* VolumeSliderToPrefTransformer.m in Sources */, B61F469309121DF100C8096C /* profile.c in Sources */, B61F469409121DF100C8096C /* ide.c in Sources */, - B61F469509121DF100C8096C /* sdlscreenshot.m in Sources */, B6825549091817F30014B5EE /* divide.c in Sources */, B64E29FA0A6532ED006863D9 /* IconFamily.m in Sources */, B64E29FE0A65337A006863D9 /* NSString+CarbonFSRefCreation.m in Sources */, B64E2A020A6533FD006863D9 /* thumbnail.m in Sources */, B6403FD80A7E4B1A00E00B11 /* loader.c in Sources */, + B6CE7F400B2830A300EB65B3 /* cocoadisplay.c in Sources */, + B6CE7F420B2830A300EB65B3 /* cocoajoystick.c in Sources */, + B6CE7F430B2830A300EB65B3 /* cocoaui.c in Sources */, + B6CE7F450B2830A300EB65B3 /* keysyms.c in Sources */, + B6CE7F520B283A0700EB65B3 /* main.mm in Sources */, + B6CE7FCE0B28FBD600EB65B3 /* DisplayOpenGLView.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; Modified: branches/fusegl/fuse/fusepb/FuseMenus.h =================================================================== --- branches/fusegl/fuse/fusepb/FuseMenus.h 2006-12-17 13:51:06 UTC (rev 251) +++ branches/fusegl/fuse/fusepb/FuseMenus.h 2006-12-19 06:40:16 UTC (rev 252) @@ -28,6 +28,11 @@ #ifndef FUSEMENUS_H #define FUSEMENUS_H +#include "ui/cocoa/cocoadisplay.h" + +void CreateTexture(Cocoa_Texture*); +void DestroyTexture(void); + void Hide(void); void Open(void); void SaveAs(void); Modified: branches/fusegl/fuse/fusepb/FuseMenus.m =================================================================== --- branches/fusegl/fuse/fusepb/FuseMenus.m 2006-12-17 13:51:06 UTC (rev 251) +++ branches/fusegl/fuse/fusepb/FuseMenus.m 2006-12-19 06:40:16 UTC (rev 252) @@ -27,7 +27,9 @@ */ +#import "DisplayOpenGLView.h" #import "FuseController.h" +#import "FuseMenus.h" /* Definition of Mac native keycodes for characters used as menu shortcuts that bring up a window. */ @@ -43,6 +45,17 @@ #define QZ_k 0x28 #define QZ_COMMA 0x2B +void +CreateTexture(Cocoa_Texture* new_screen) +{ + [[DisplayOpenGLView instance] createTexture:new_screen]; +} + +void DestroyTexture(void) +{ + [[DisplayOpenGLView instance] destroyTexture]; +} + void Hide(void) { [NSApp hide:[FuseController singleton]]; Modified: branches/fusegl/fuse/fusepb/Info-Fuse.plist =================================================================== --- branches/fusegl/fuse/fusepb/Info-Fuse.plist 2006-12-17 13:51:06 UTC (rev 251) +++ branches/fusegl/fuse/fusepb/Info-Fuse.plist 2006-12-19 06:40:16 UTC (rev 252) @@ -367,7 +367,7 @@ <key>CFBundleVersion</key> <string>20060718</string> <key>NSMainNibFile</key> - <string>SDLMain</string> + <string>MainMenu</string> <key>NSPrincipalClass</key> <string>NSApplication</string> <key>UTExportedTypeDeclarations</key> Modified: branches/fusegl/fuse/fusepb/config.h =================================================================== --- branches/fusegl/fuse/fusepb/config.h 2006-12-17 13:51:06 UTC (rev 251) +++ branches/fusegl/fuse/fusepb/config.h 2006-12-19 06:40:16 UTC (rev 252) @@ -55,7 +55,7 @@ /* #undef UI_GTK2 */ /* Defined if the SDL UI in use */ -#define UI_SDL 1 +/* #undef UI_SDL */ /* Defined if svgalib UI in use */ /* #undef UI_SVGA */ Modified: branches/fusegl/fuse/fusepb/content_arrays/SDLJoysticks.m =================================================================== --- branches/fusegl/fuse/fusepb/content_arrays/SDLJoysticks.m 2006-12-17 13:51:06 UTC (rev 251) +++ branches/fusegl/fuse/fusepb/content_arrays/SDLJoysticks.m 2006-12-19 06:40:16 UTC (rev 252) @@ -24,7 +24,7 @@ */ -#include <SDL.h> +//#include <SDL.h> #import "SDLJoysticks.h" Modified: branches/fusegl/fuse/fusepb/controllers/FuseController.m =================================================================== --- branches/fusegl/fuse/fusepb/controllers/FuseController.m 2006-12-17 13:51:06 UTC (rev 251) +++ branches/fusegl/fuse/fusepb/controllers/FuseController.m 2006-12-19 06:40:16 UTC (rev 252) @@ -52,9 +52,11 @@ #include "psg.h" #include "rzx.h" #include "screenshot.h" +#if 0 #include "sdlscreenshot.h" #include "sdlui.h" #include "sdldisplay.h" +#endif #include "settings.h" #include "settings_cocoa.h" #include "simpleide.h" @@ -1776,7 +1778,7 @@ switch( item ) { case UI_STATUSBAR_ITEM_DISK: - sdl_disk_state = state; + //sdl_disk_state = state; return 0; case UI_STATUSBAR_ITEM_PAUSED: @@ -1784,12 +1786,12 @@ return 0; case UI_STATUSBAR_ITEM_TAPE: - sdl_tape_state = state; + //sdl_tape_state = state; [[FuseController singleton] setTapePlayMenu:state]; return 0; case UI_STATUSBAR_ITEM_MICRODRIVE: - sdl_mdr_state = state; + //sdl_mdr_state = state; return 0; case UI_STATUSBAR_ITEM_MOUSE: Modified: branches/fusegl/fuse/fusepb/controllers/JoystickConfigurationController.m =================================================================== --- branches/fusegl/fuse/fusepb/controllers/JoystickConfigurationController.m 2006-12-17 13:51:06 UTC (rev 251) +++ branches/fusegl/fuse/fusepb/controllers/JoystickConfigurationController.m 2006-12-19 06:40:16 UTC (rev 252) @@ -26,8 +26,6 @@ #import "JoystickConfigurationController.h" -#include <SDL.h> - #include <config.h> #include <assert.h> Modified: branches/fusegl/fuse/fusepb/controllers/PreferencesController.m =================================================================== --- branches/fusegl/fuse/fusepb/controllers/PreferencesController.m 2006-12-17 13:51:06 UTC (rev 251) +++ branches/fusegl/fuse/fusepb/controllers/PreferencesController.m 2006-12-19 06:40:16 UTC (rev 252) @@ -24,8 +24,6 @@ */ -#include <SDL.h> - #include <libspectrum.h> #include <string.h> Deleted: branches/fusegl/fuse/fusepb/keysyms.c =================================================================== --- branches/fusegl/fuse/fusepb/keysyms.c 2006-12-17 13:51:06 UTC (rev 251) +++ branches/fusegl/fuse/fusepb/keysyms.c 2006-12-19 06:40:16 UTC (rev 252) @@ -1,178 +0,0 @@ -/* keysyms.c: UI keysym to Fuse input layer keysym mappings - Copyright (c) 2000-2005 Philip Kendall, Matan Ziv-Av, Russell Marks, - Fredrick Meunier, Catalin Mihaila - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 49 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - Author contact information: - - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England - -*/ - -/* This file is autogenerated from keysyms.dat by keysyms.pl. - Do not edit unless you know what you're doing! */ - -#include <config.h> - -#ifdef UI_SDL - -#include <SDL.h> - -#include "input.h" -#include "keyboard.h" - -/* Map ADC keyboard scancode to Fuse input layer keysym for Spectrum - virtual keyboard */ -const keysyms_map_t keysyms_map[] = { - - { 18, INPUT_KEY_1 }, - { 19, INPUT_KEY_2 }, - { 20, INPUT_KEY_3 }, - { 21, INPUT_KEY_4 }, - { 23, INPUT_KEY_5 }, - { 22, INPUT_KEY_6 }, - { 26, INPUT_KEY_7 }, - { 28, INPUT_KEY_8 }, - { 25, INPUT_KEY_9 }, - { 29, INPUT_KEY_0 }, - { 12, INPUT_KEY_q }, - { 13, INPUT_KEY_w }, - { 14, INPUT_KEY_e }, - { 15, INPUT_KEY_r }, - { 17, INPUT_KEY_t }, - { 16, INPUT_KEY_y }, - { 32, INPUT_KEY_u }, - { 34, INPUT_KEY_i }, - { 31, INPUT_KEY_o }, - { 35, INPUT_KEY_p }, - { 0, INPUT_KEY_a }, - { 1, INPUT_KEY_s }, - { 2, INPUT_KEY_d }, - { 3, INPUT_KEY_f }, - { 5, INPUT_KEY_g }, - { 4, INPUT_KEY_h }, - { 38, INPUT_KEY_j }, - { 40, INPUT_KEY_k }, - { 37, INPUT_KEY_l }, - { 6, INPUT_KEY_z }, - { 7, INPUT_KEY_x }, - { 8, INPUT_KEY_c }, - { 9, INPUT_KEY_v }, - { 11, INPUT_KEY_b }, - { 45, INPUT_KEY_n }, - { 46, INPUT_KEY_m }, - - { 0xff, 0 } /* End marker: DO NOT MOVE! */ - -}; - -/* Map things with no reasonable Unicode value (modifiers etc.) from SDL sym - to Fuse input layer keysym */ -const keysyms_map_t modifier_keysyms_map[] = { - - { SDLK_ESCAPE, INPUT_KEY_Escape }, - { SDLK_F1, INPUT_KEY_F1 }, - { SDLK_F2, INPUT_KEY_F2 }, - { SDLK_F3, INPUT_KEY_F3 }, - { SDLK_F4, INPUT_KEY_F4 }, - { SDLK_F5, INPUT_KEY_F5 }, - { SDLK_F6, INPUT_KEY_F6 }, - { SDLK_F7, INPUT_KEY_F7 }, - { SDLK_F8, INPUT_KEY_F8 }, - { SDLK_F9, INPUT_KEY_F9 }, - { SDLK_F10, INPUT_KEY_F10 }, - { SDLK_F11, INPUT_KEY_F11 }, - { SDLK_F12, INPUT_KEY_F12 }, - { SDLK_BACKSPACE, INPUT_KEY_BackSpace }, - { SDLK_TAB, INPUT_KEY_Tab }, - //{ SDLK_CAPSLOCK, INPUT_KEY_Caps_Lock }, - { SDLK_RETURN, INPUT_KEY_Return }, - { SDLK_LSHIFT, INPUT_KEY_Shift_L }, - { SDLK_RSHIFT, INPUT_KEY_Shift_R }, - { SDLK_LCTRL, INPUT_KEY_Control_L }, - { SDLK_LALT, INPUT_KEY_Alt_L }, - { SDLK_LSUPER, INPUT_KEY_Super_L }, - { SDLK_SPACE, INPUT_KEY_space }, - { SDLK_RSUPER, INPUT_KEY_Super_R }, - { SDLK_RALT, INPUT_KEY_Alt_R }, - { SDLK_RCTRL, INPUT_KEY_Control_R }, - { SDLK_MENU, INPUT_KEY_Mode_switch }, - { SDLK_LEFT, INPUT_KEY_Left }, - { SDLK_DOWN, ... [truncated message content] |
From: <fr...@us...> - 2006-12-17 13:51:09
|
Revision: 251 http://svn.sourceforge.net/fuse-for-macosx/?rev=251&view=rev Author: fredm Date: 2006-12-17 05:51:06 -0800 (Sun, 17 Dec 2006) Log Message: ----------- Merge up to fuse-20061217. Modified Paths: -------------- trunk/fuse/debugger/breakpoint.c trunk/fuse/hacking/ChangeLog trunk/fuse/machine.c trunk/fuse/man/fuse.1 trunk/fuse/ui/xlib/xdisplay.c trunk/fuse/widget/widget.c Modified: trunk/fuse/debugger/breakpoint.c =================================================================== --- trunk/fuse/debugger/breakpoint.c 2006-12-17 13:31:05 UTC (rev 250) +++ trunk/fuse/debugger/breakpoint.c 2006-12-17 13:51:06 UTC (rev 251) @@ -1,7 +1,7 @@ /* breakpoint.c: a debugger breakpoint Copyright (c) 2002-2004 Philip Kendall - $Id: breakpoint.c,v 1.7 2004/06/16 14:46:34 pak21 Exp $ + $Id: breakpoint.c,v 1.8 2006/12/15 20:50:47 pak21 Exp $ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -440,11 +440,11 @@ found++; + free( ptr->data ); + debugger_breakpoints = g_slist_remove( debugger_breakpoints, ptr->data ); if( debugger_mode == DEBUGGER_MODE_ACTIVE && !debugger_breakpoints ) debugger_mode = DEBUGGER_MODE_INACTIVE; - - free( ptr->data ); } if( !found ) { Modified: trunk/fuse/hacking/ChangeLog =================================================================== --- trunk/fuse/hacking/ChangeLog 2006-12-17 13:31:05 UTC (rev 250) +++ trunk/fuse/hacking/ChangeLog 2006-12-17 13:51:06 UTC (rev 251) @@ -1469,3 +1469,15 @@ specplus3e.c,tc2048.c,tc2068.c,ts2068.c},profile.c,settings-header.pl, settings.dat,settings.pl,widget/roms.c: fallback to loading default ROM if custom ROM is not found (Fred). +20061126 ui/sdl/sdljoystick.c: fix joystick support in SDL UI (Fred). +20061126 man/fuse.1: add a smidgeon of content about Interface I (Fred). +20061202 widget/widget.c: guard against the double free on the options dialog + (Fred). +20061202 widget/widget.c: use checkbox instead of "On/Off" text in widget UIs + (patch #1309374) (Gergely Szasz). +20061202 man/fuse.1: add some more TS2068 stuff (Fred). +20061213 ui/xlib/xdisplay.c: fix compilation. +20061215 debugger/breakpoint.c: fix segfault on "clear" command (thanks, + Stuart Brady) +20061217 machine.c: load rom into correct memory bank (fixes If1 ROM paging) + (Fred). Modified: trunk/fuse/machine.c =================================================================== --- trunk/fuse/machine.c 2006-12-17 13:31:05 UTC (rev 250) +++ trunk/fuse/machine.c 2006-12-17 13:51:06 UTC (rev 251) @@ -1,7 +1,7 @@ /* machine.c: Routines for handling the various machine types Copyright (c) 1999-2005 Philip Kendall - $Id: machine.c,v 1.117 2006/10/21 05:28:33 fredm Exp $ + $Id: machine.c,v 1.118 2006/12/17 12:47:01 fredm Exp $ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -360,10 +360,10 @@ const char *filename, const char *fallback, size_t expected_length ) { - int retval = machine_load_rom_bank_internal( memory_map_rom, which, page_num, + int retval = machine_load_rom_bank_internal( bank_map, which, page_num, filename, expected_length ); if( retval && fallback ) - retval = machine_load_rom_bank_internal( memory_map_rom, which, page_num, + retval = machine_load_rom_bank_internal( bank_map, which, page_num, fallback, expected_length ); return retval; } Modified: trunk/fuse/man/fuse.1 =================================================================== --- trunk/fuse/man/fuse.1 2006-12-17 13:31:05 UTC (rev 250) +++ trunk/fuse/man/fuse.1 2006-12-17 13:51:06 UTC (rev 251) @@ -58,7 +58,8 @@ the old DAT-file variant is not. DSK disk images are supported when emulating a +3, TRD and SCL disk images are supported when emulating a Pentagon or Scorpion and DCK cartridge images are supported when -emulating a TC2068. Interface II ROM cartridges are also supported. +emulating a Timex 2068 variant. Interface II ROM cartridges are also +supported. .PP Finally, there is also support for reading and writing the RZX input recording format. @@ -181,8 +182,8 @@ .PP .I "\-\-dock file" .RS -Insert the specified file into the emulated Timex TC2068 dock; also select -the TC2068 on startup if available. +Insert the specified file into the emulated Timex 2068 variant dock; +also select the TC2068 on startup if available. .RE .PP .I "\-\-embed\-snapshot" @@ -269,6 +270,13 @@ Insert the specified file into the emulated Interface II. .RE .PP +.I \-\-interface1 +.RS +Emulate a Sinclair Interface I. Same as the Peripherals Options dialog's +.I "Interface I" +option. +.RE +.PP .I \-\-interface2 .RS Emulate a Sinclair Interface II. Same as the Peripherals Options dialog's @@ -345,8 +353,10 @@ .IR plus3 , .IR 2048 , .IR 2068 , +.IR ts2068 , +.IR pentagon , and -.IR pentagon . +.IR scorpion . .RE .PP .I "\-p file" @@ -1246,6 +1256,15 @@ it successfully opens one. The first of these is preferred since (at least on Linux, with a 2.6-series kernel) any type of mouse can be used and any connected mouse may be used. +.PP +.I "Interface I" +.RS +If this option is selected, Fuse will emulate the simple Sinclair +Interface I, and allow microdrive cartriges to be +connected and disconnected via the +.I "Media, Interface I, Microdrive" +menus. It also enables support for the Interface I RS-232 and Sinclair +network interfaces. .RE .PP .I "Interface II" @@ -1458,8 +1477,8 @@ .br .I Timex 2 .RS -The `left' and `right' joysticks as attached to the TC2068's built-in -joystick interface. +The `left' and `right' joysticks as attached to the Timex 2068 variant's +built-in joystick interface. .RE .RE .PP @@ -1524,9 +1543,11 @@ .RS Choose a type of Spectrum to emulate. An brief overview of the Sinclair, Amstrad and Timex can be found at -.IR "http://www.nvg.ntnu.no/sinclair/computers/zxspectrum/zxspectrum.htm" , +.IR "http://www.nvg.ntnu.no/sinclair/computers/zxspectrum/zxspectrum.htm" while more technical information can be found at -.IR "http://www.worldofspectrum.org/faq/reference/reference.htm" . +.IR "http://www.worldofspectrum.org/faq/reference/reference.htm" , +and +.IR "http://www.worldofspectrum.org/faq/reference/tmxreference.htm" . .PP .I "Spectrum 16K" .br @@ -1570,10 +1591,12 @@ .br .I "Timex TC2068" .RS -The variants of the Spectrum as released by Timex in Portugal. See -.I "http://www.worldofspectrum.org/faq/reference/tmxreference.htm" -for more details. +The variants of the Spectrum as released by Timex in Portugal. .RE +.I "Timex TS2048" +.RS +The variant of the Spectrum released by Timex in North America. +.RE .PP .I "Pentagon 128K" .br @@ -1792,14 +1815,14 @@ .PP .I "Media, Cartridge, Timex Dock, Insert..." .RS -Insert a cartridge into the TC2068's dock. This will cause the -emulated machine to be changed to the TC2068 (if it wasn't already) -and reset. +Insert a cartridge into the Timex 2068 dock. This will cause the +emulated machine to be changed to the TC2068 (if it wasn't already +a 2068 variant) and reset. .RE .PP .I "Media, Cartridge, Timex Dock, Eject" .RS -Remove the cartridge from the TC2068's dock. This will cause the +Remove the cartridge from the Timex 2068 dock. This will cause the emulated machine to be reset. .RE .PP @@ -2090,7 +2113,7 @@ printers, three of which are supported by Fuse. Different printers are made available for the different models: .TP -.IR 16 ", " 48 ", " TC2048 ", " TC2068 +.IR 16 ", " 48 ", " TC2048 ", " TC2068 ", " TS2068 ZX Printer .TP .IR 128 / +2 / Pentagon @@ -2709,9 +2732,9 @@ .PP Alexander Yurchenko wrote the OpenBSD/Solaris-specific sound code. .PP -Fredrick Meunier wrote the TC2048, Pentagon and Spectrum SE support as -well as maintaining the OS X port and importing the graphics filter -code. +Fredrick Meunier wrote the TC2048, TS2068, Pentagon and Spectrum SE +support as well as maintaining the OS X port and importing the +graphics filter code. .PP Ludvig Strigeus and The ScummVM project wrote the original graphics filter code. Modified: trunk/fuse/ui/xlib/xdisplay.c =================================================================== --- trunk/fuse/ui/xlib/xdisplay.c 2006-12-17 13:31:05 UTC (rev 250) +++ trunk/fuse/ui/xlib/xdisplay.c 2006-12-17 13:51:06 UTC (rev 251) @@ -1,7 +1,7 @@ /* xdisplay.c: Routines for dealing with drawing the Speccy's screen via Xlib Copyright (c) 2000-2005 Philip Kendall, Darren Salt - $Id: xdisplay.c,v 1.53 2006/09/17 00:56:20 fredm Exp $ + $Id: xdisplay.c,v 1.54 2006/12/13 22:01:04 pak21 Exp $ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -452,7 +452,7 @@ scaled_x = scale * x; scaled_y = scale * y; /* Create scaled image */ - scaler_proc16( (libspectrum_byte*)&xdisplay_image[y][x], display_pitch, + scaler_proc16( (libspectrum_byte*)&xdisplay_image[y][x], xdisplay_pitch, (libspectrum_byte*)&scaled_image[scaled_y][scaled_x], scaled_pitch, w, h ); Modified: trunk/fuse/widget/widget.c =================================================================== --- trunk/fuse/widget/widget.c 2006-12-17 13:31:05 UTC (rev 250) +++ trunk/fuse/widget/widget.c 2006-12-17 13:51:06 UTC (rev 251) @@ -1,7 +1,7 @@ /* widget.c: Simple dialog boxes for all user interfaces. Copyright (c) 2001-2005 Matan Ziv-Av, Philip Kendall, Russell Marks - $Id: widget.c,v 1.111 2006/09/17 00:56:20 fredm Exp $ + $Id: widget.c,v 1.113 2006/12/02 03:24:17 fredm Exp $ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -315,6 +315,28 @@ widget_putpixel( x + mx, y + my, col ); } +void widget_print_checkbox( int x, int y, int value ) +{ + static const int CHECK_COLOR=7; + int z; + + y += 2; + x += 6; + widget_rectangle( x, y - 1, 3, 3, WIDGET_COLOUR_BACKGROUND ); + widget_rectangle( x - 5, y, 5, 5, 0 ); + widget_rectangle( x - 4, y + 1, 3, 3, WIDGET_COLOUR_BACKGROUND ); + if( value ) { /* checked */ + for( z = -1; z < 3; z++ ) { + widget_putpixel( x - z, y + z, CHECK_COLOR ); + widget_putpixel( x - z + 1, y + z, CHECK_COLOR ); + } + widget_putpixel( x - z + 1, y + z, CHECK_COLOR ); + widget_putpixel( x - z, y + z - 1, CHECK_COLOR ); + widget_putpixel( x - z, y + z - 2, CHECK_COLOR ); + widget_putpixel( x - z - 1, y + z - 2, CHECK_COLOR ); + } +} + /* Arrows for any scrollable widget */ void widget_up_arrow( int x, int y, int colour ) @@ -566,7 +588,10 @@ int widget_options_print_value( int number, int value ) { - return widget_options_print_data( number, value ? "On" : "Off" ); + widget_rectangle( 233, number * 8 + 28, 7, 8, WIDGET_COLOUR_BACKGROUND ); + widget_print_checkbox( 233, number * 8 + 28, value ); + widget_display_rasters( number * 8 + 28, 8 ); + return 0; } static int widget_options_print_data( int number, const char *string ) @@ -599,6 +624,7 @@ if( finished == WIDGET_FINISHED_OK ) { error = settings_copy( &settings_current, &widget_options_settings ); settings_free( &widget_options_settings ); + memset( &widget_options_settings, 0, sizeof( settings_info ) ); if( error ) return error; /* Bring the peripherals list into sync with the new options */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2006-12-17 13:31:09
|
Revision: 250 http://svn.sourceforge.net/fuse-for-macosx/?rev=250&view=rev Author: fredm Date: 2006-12-17 05:31:05 -0800 (Sun, 17 Dec 2006) Log Message: ----------- Tag vendor/fuse/current as vendor/fuse/fuse-20061217. Added Paths: ----------- vendor/fuse/fuse-20061217/ Copied: vendor/fuse/fuse-20061217 (from rev 249, vendor/fuse/current) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2006-12-17 13:30:53
|
Revision: 249 http://svn.sourceforge.net/fuse-for-macosx/?rev=249&view=rev Author: fredm Date: 2006-12-17 05:30:52 -0800 (Sun, 17 Dec 2006) Log Message: ----------- Load . into vendor/fuse/current. Modified Paths: -------------- vendor/fuse/current/debugger/breakpoint.c vendor/fuse/current/hacking/ChangeLog vendor/fuse/current/machine.c vendor/fuse/current/man/fuse.1 vendor/fuse/current/ui/sdl/sdljoystick.c vendor/fuse/current/ui/xlib/xdisplay.c vendor/fuse/current/widget/widget.c Modified: vendor/fuse/current/debugger/breakpoint.c =================================================================== --- vendor/fuse/current/debugger/breakpoint.c 2006-12-17 11:37:47 UTC (rev 248) +++ vendor/fuse/current/debugger/breakpoint.c 2006-12-17 13:30:52 UTC (rev 249) @@ -1,7 +1,7 @@ /* breakpoint.c: a debugger breakpoint Copyright (c) 2002-2004 Philip Kendall - $Id: breakpoint.c,v 1.7 2004/06/16 14:46:34 pak21 Exp $ + $Id: breakpoint.c,v 1.8 2006/12/15 20:50:47 pak21 Exp $ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -440,11 +440,11 @@ found++; + free( ptr->data ); + debugger_breakpoints = g_slist_remove( debugger_breakpoints, ptr->data ); if( debugger_mode == DEBUGGER_MODE_ACTIVE && !debugger_breakpoints ) debugger_mode = DEBUGGER_MODE_INACTIVE; - - free( ptr->data ); } if( !found ) { Modified: vendor/fuse/current/hacking/ChangeLog =================================================================== --- vendor/fuse/current/hacking/ChangeLog 2006-12-17 11:37:47 UTC (rev 248) +++ vendor/fuse/current/hacking/ChangeLog 2006-12-17 13:30:52 UTC (rev 249) @@ -1469,3 +1469,15 @@ specplus3e.c,tc2048.c,tc2068.c,ts2068.c},profile.c,settings-header.pl, settings.dat,settings.pl,widget/roms.c: fallback to loading default ROM if custom ROM is not found (Fred). +20061126 ui/sdl/sdljoystick.c: fix joystick support in SDL UI (Fred). +20061126 man/fuse.1: add a smidgeon of content about Interface I (Fred). +20061202 widget/widget.c: guard against the double free on the options dialog + (Fred). +20061202 widget/widget.c: use checkbox instead of "On/Off" text in widget UIs + (patch #1309374) (Gergely Szasz). +20061202 man/fuse.1: add some more TS2068 stuff (Fred). +20061213 ui/xlib/xdisplay.c: fix compilation. +20061215 debugger/breakpoint.c: fix segfault on "clear" command (thanks, + Stuart Brady) +20061217 machine.c: load rom into correct memory bank (fixes If1 ROM paging) + (Fred). Modified: vendor/fuse/current/machine.c =================================================================== --- vendor/fuse/current/machine.c 2006-12-17 11:37:47 UTC (rev 248) +++ vendor/fuse/current/machine.c 2006-12-17 13:30:52 UTC (rev 249) @@ -1,7 +1,7 @@ /* machine.c: Routines for handling the various machine types Copyright (c) 1999-2005 Philip Kendall - $Id: machine.c,v 1.117 2006/10/21 05:28:33 fredm Exp $ + $Id: machine.c,v 1.118 2006/12/17 12:47:01 fredm Exp $ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -326,10 +326,10 @@ const char *filename, const char *fallback, size_t expected_length ) { - int retval = machine_load_rom_bank_internal( memory_map_rom, which, page_num, + int retval = machine_load_rom_bank_internal( bank_map, which, page_num, filename, expected_length ); if( retval && fallback ) - retval = machine_load_rom_bank_internal( memory_map_rom, which, page_num, + retval = machine_load_rom_bank_internal( bank_map, which, page_num, fallback, expected_length ); return retval; } Modified: vendor/fuse/current/man/fuse.1 =================================================================== --- vendor/fuse/current/man/fuse.1 2006-12-17 11:37:47 UTC (rev 248) +++ vendor/fuse/current/man/fuse.1 2006-12-17 13:30:52 UTC (rev 249) @@ -58,7 +58,8 @@ the old DAT-file variant is not. DSK disk images are supported when emulating a +3, TRD and SCL disk images are supported when emulating a Pentagon or Scorpion and DCK cartridge images are supported when -emulating a TC2068. Interface II ROM cartridges are also supported. +emulating a Timex 2068 variant. Interface II ROM cartridges are also +supported. .PP Finally, there is also support for reading and writing the RZX input recording format. @@ -181,8 +182,8 @@ .PP .I "\-\-dock file" .RS -Insert the specified file into the emulated Timex TC2068 dock; also select -the TC2068 on startup if available. +Insert the specified file into the emulated Timex 2068 variant dock; +also select the TC2068 on startup if available. .RE .PP .I "\-\-embed\-snapshot" @@ -269,6 +270,13 @@ Insert the specified file into the emulated Interface II. .RE .PP +.I \-\-interface1 +.RS +Emulate a Sinclair Interface I. Same as the Peripherals Options dialog's +.I "Interface I" +option. +.RE +.PP .I \-\-interface2 .RS Emulate a Sinclair Interface II. Same as the Peripherals Options dialog's @@ -345,8 +353,10 @@ .IR plus3 , .IR 2048 , .IR 2068 , +.IR ts2068 , +.IR pentagon , and -.IR pentagon . +.IR scorpion . .RE .PP .I "\-p file" @@ -1246,6 +1256,15 @@ it successfully opens one. The first of these is preferred since (at least on Linux, with a 2.6-series kernel) any type of mouse can be used and any connected mouse may be used. +.PP +.I "Interface I" +.RS +If this option is selected, Fuse will emulate the simple Sinclair +Interface I, and allow microdrive cartriges to be +connected and disconnected via the +.I "Media, Interface I, Microdrive" +menus. It also enables support for the Interface I RS-232 and Sinclair +network interfaces. .RE .PP .I "Interface II" @@ -1458,8 +1477,8 @@ .br .I Timex 2 .RS -The `left' and `right' joysticks as attached to the TC2068's built-in -joystick interface. +The `left' and `right' joysticks as attached to the Timex 2068 variant's +built-in joystick interface. .RE .RE .PP @@ -1524,9 +1543,11 @@ .RS Choose a type of Spectrum to emulate. An brief overview of the Sinclair, Amstrad and Timex can be found at -.IR "http://www.nvg.ntnu.no/sinclair/computers/zxspectrum/zxspectrum.htm" , +.IR "http://www.nvg.ntnu.no/sinclair/computers/zxspectrum/zxspectrum.htm" while more technical information can be found at -.IR "http://www.worldofspectrum.org/faq/reference/reference.htm" . +.IR "http://www.worldofspectrum.org/faq/reference/reference.htm" , +and +.IR "http://www.worldofspectrum.org/faq/reference/tmxreference.htm" . .PP .I "Spectrum 16K" .br @@ -1570,10 +1591,12 @@ .br .I "Timex TC2068" .RS -The variants of the Spectrum as released by Timex in Portugal. See -.I "http://www.worldofspectrum.org/faq/reference/tmxreference.htm" -for more details. +The variants of the Spectrum as released by Timex in Portugal. .RE +.I "Timex TS2048" +.RS +The variant of the Spectrum released by Timex in North America. +.RE .PP .I "Pentagon 128K" .br @@ -1792,14 +1815,14 @@ .PP .I "Media, Cartridge, Timex Dock, Insert..." .RS -Insert a cartridge into the TC2068's dock. This will cause the -emulated machine to be changed to the TC2068 (if it wasn't already) -and reset. +Insert a cartridge into the Timex 2068 dock. This will cause the +emulated machine to be changed to the TC2068 (if it wasn't already +a 2068 variant) and reset. .RE .PP .I "Media, Cartridge, Timex Dock, Eject" .RS -Remove the cartridge from the TC2068's dock. This will cause the +Remove the cartridge from the Timex 2068 dock. This will cause the emulated machine to be reset. .RE .PP @@ -2090,7 +2113,7 @@ printers, three of which are supported by Fuse. Different printers are made available for the different models: .TP -.IR 16 ", " 48 ", " TC2048 ", " TC2068 +.IR 16 ", " 48 ", " TC2048 ", " TC2068 ", " TS2068 ZX Printer .TP .IR 128 / +2 / Pentagon @@ -2709,9 +2732,9 @@ .PP Alexander Yurchenko wrote the OpenBSD/Solaris-specific sound code. .PP -Fredrick Meunier wrote the TC2048, Pentagon and Spectrum SE support as -well as maintaining the OS X port and importing the graphics filter -code. +Fredrick Meunier wrote the TC2048, TS2068, Pentagon and Spectrum SE +support as well as maintaining the OS X port and importing the +graphics filter code. .PP Ludvig Strigeus and The ScummVM project wrote the original graphics filter code. Modified: vendor/fuse/current/ui/sdl/sdljoystick.c =================================================================== --- vendor/fuse/current/ui/sdl/sdljoystick.c 2006-12-17 11:37:47 UTC (rev 248) +++ vendor/fuse/current/ui/sdl/sdljoystick.c 2006-12-17 13:30:52 UTC (rev 249) @@ -1,7 +1,7 @@ /* sdljoystick.c: routines for dealing with the SDL joystick Copyright (c) 2003-2004 Darren Salt, Fredrick Meunier, Philip Kendall - $Id: sdljoystick.c,v 1.7 2004/06/18 21:53:22 pak21 Exp $ + $Id: sdljoystick.c,v 1.8 2006/11/26 03:26:19 fredm Exp $ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -53,10 +53,16 @@ int ui_joystick_init( void ) { - int retval = SDL_NumJoysticks(); + int error, retval; - SDL_InitSubSystem( SDL_INIT_JOYSTICK ); + error = SDL_InitSubSystem( SDL_INIT_JOYSTICK ); + if ( error ) { + ui_error( UI_ERROR_ERROR, "failed to initialise joystick subsystem" ); + return 0; + } + retval = SDL_NumJoysticks(); + if( retval >= 2 ) { retval = 2; Modified: vendor/fuse/current/ui/xlib/xdisplay.c =================================================================== --- vendor/fuse/current/ui/xlib/xdisplay.c 2006-12-17 11:37:47 UTC (rev 248) +++ vendor/fuse/current/ui/xlib/xdisplay.c 2006-12-17 13:30:52 UTC (rev 249) @@ -1,7 +1,7 @@ /* xdisplay.c: Routines for dealing with drawing the Speccy's screen via Xlib Copyright (c) 2000-2005 Philip Kendall, Darren Salt - $Id: xdisplay.c,v 1.53 2006/09/17 00:56:20 fredm Exp $ + $Id: xdisplay.c,v 1.54 2006/12/13 22:01:04 pak21 Exp $ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -452,7 +452,7 @@ scaled_x = scale * x; scaled_y = scale * y; /* Create scaled image */ - scaler_proc16( (libspectrum_byte*)&xdisplay_image[y][x], display_pitch, + scaler_proc16( (libspectrum_byte*)&xdisplay_image[y][x], xdisplay_pitch, (libspectrum_byte*)&scaled_image[scaled_y][scaled_x], scaled_pitch, w, h ); Modified: vendor/fuse/current/widget/widget.c =================================================================== --- vendor/fuse/current/widget/widget.c 2006-12-17 11:37:47 UTC (rev 248) +++ vendor/fuse/current/widget/widget.c 2006-12-17 13:30:52 UTC (rev 249) @@ -1,7 +1,7 @@ /* widget.c: Simple dialog boxes for all user interfaces. Copyright (c) 2001-2005 Matan Ziv-Av, Philip Kendall, Russell Marks - $Id: widget.c,v 1.111 2006/09/17 00:56:20 fredm Exp $ + $Id: widget.c,v 1.113 2006/12/02 03:24:17 fredm Exp $ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -315,6 +315,28 @@ widget_putpixel( x + mx, y + my, col ); } +void widget_print_checkbox( int x, int y, int value ) +{ + static const int CHECK_COLOR=7; + int z; + + y += 2; + x += 6; + widget_rectangle( x, y - 1, 3, 3, WIDGET_COLOUR_BACKGROUND ); + widget_rectangle( x - 5, y, 5, 5, 0 ); + widget_rectangle( x - 4, y + 1, 3, 3, WIDGET_COLOUR_BACKGROUND ); + if( value ) { /* checked */ + for( z = -1; z < 3; z++ ) { + widget_putpixel( x - z, y + z, CHECK_COLOR ); + widget_putpixel( x - z + 1, y + z, CHECK_COLOR ); + } + widget_putpixel( x - z + 1, y + z, CHECK_COLOR ); + widget_putpixel( x - z, y + z - 1, CHECK_COLOR ); + widget_putpixel( x - z, y + z - 2, CHECK_COLOR ); + widget_putpixel( x - z - 1, y + z - 2, CHECK_COLOR ); + } +} + /* Arrows for any scrollable widget */ void widget_up_arrow( int x, int y, int colour ) @@ -566,7 +588,10 @@ int widget_options_print_value( int number, int value ) { - return widget_options_print_data( number, value ? "On" : "Off" ); + widget_rectangle( 233, number * 8 + 28, 7, 8, WIDGET_COLOUR_BACKGROUND ); + widget_print_checkbox( 233, number * 8 + 28, value ); + widget_display_rasters( number * 8 + 28, 8 ); + return 0; } static int widget_options_print_data( int number, const char *string ) @@ -599,6 +624,7 @@ if( finished == WIDGET_FINISHED_OK ) { error = settings_copy( &settings_current, &widget_options_settings ); settings_free( &widget_options_settings ); + memset( &widget_options_settings, 0, sizeof( settings_info ) ); if( error ) return error; /* Bring the peripherals list into sync with the new options */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2006-12-17 11:37:48
|
Revision: 248 http://svn.sourceforge.net/fuse-for-macosx/?rev=248&view=rev Author: fredm Date: 2006-12-17 03:37:47 -0800 (Sun, 17 Dec 2006) Log Message: ----------- When starting an RZX recording from a snapshot, be sure to pass through the embed snapshot preference. Modified Paths: -------------- trunk/fuse/fusepb/controllers/FuseController.m Modified: trunk/fuse/fusepb/controllers/FuseController.m =================================================================== --- trunk/fuse/fusepb/controllers/FuseController.m 2006-12-17 03:13:29 UTC (rev 247) +++ trunk/fuse/fusepb/controllers/FuseController.m 2006-12-17 11:37:47 UTC (rev 248) @@ -581,7 +581,7 @@ free( snap ); free( recording ); fuse_emulation_unpause(); return; } - rzx_start_recording( recording, 0 ); + rzx_start_recording( recording, settings_current.embed_snapshot ); free( recording ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2006-12-17 03:13:30
|
Revision: 247 http://svn.sourceforge.net/fuse-for-macosx/?rev=247&view=rev Author: fredm Date: 2006-12-16 19:13:29 -0800 (Sat, 16 Dec 2006) Log Message: ----------- Don't ignore settings_cocoa.h and check it in for easier builds from scratch. Added Paths: ----------- trunk/fuse/fusepb/settings_cocoa.h Property Changed: ---------------- trunk/fuse/fusepb/ Property changes on: trunk/fuse/fusepb ___________________________________________________________________ Name: svn:ignore - *~.nib .DS_Store .gdb_history build settings.h settings.m settings_cocoa.h + *~.nib .DS_Store .gdb_history build settings.h settings.m Added: trunk/fuse/fusepb/settings_cocoa.h =================================================================== --- trunk/fuse/fusepb/settings_cocoa.h (rev 0) +++ trunk/fuse/fusepb/settings_cocoa.h 2006-12-17 03:13:29 UTC (rev 247) @@ -0,0 +1,45 @@ +/* settings_cocoa.h: Handling configuration settings + Copyright (c) Copyright (c) 2001-2003 Philip Kendall, Fredrick Meunier + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 49 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Author contact information: + + E-mail: pak...@sr... + Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + +*/ + +#ifndef FUSE_SETTINGS_COCOA_H +#define FUSE_SETTINGS_COCOA_H + +#import <Foundation/NSArray.h> + +#include "settings.h" + +struct settings_cocoa { + + NSMutableArray *recent_snapshots; + +}; + +#define NUM_RECENT_ITEMS 10 + +NSMutableArray* +settings_set_rom_array( settings_info *settings ); +void +settings_get_rom_array( settings_info *settings, NSArray *machineroms ); + +#endif /* #ifndef FUSE_SETTINGS_COCOA_H */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2006-12-17 01:48:53
|
Revision: 246 http://svn.sourceforge.net/fuse-for-macosx/?rev=246&view=rev Author: fredm Date: 2006-12-16 17:48:51 -0800 (Sat, 16 Dec 2006) Log Message: ----------- Add GNU style changelog. Added Paths: ----------- tags/FuseForMacOSX-20061126/ChangeLog Added: tags/FuseForMacOSX-20061126/ChangeLog =================================================================== --- tags/FuseForMacOSX-20061126/ChangeLog (rev 0) +++ tags/FuseForMacOSX-20061126/ChangeLog 2006-12-17 01:48:51 UTC (rev 246) @@ -0,0 +1,3384 @@ +2006-12-17 01:32 fredm + + * .: Make tag for 20061126 release. + +2006-12-17 01:26 fredm + + * trunk/fuse/fusepb/English.lproj/InfoPlist.strings, + trunk/fuse/fusepb/Info-Fuse.plist: Move version strings to + 20061129. + +2006-11-26 11:24 fredm + + * trunk/fuse/fusepb/controllers/PreferencesController.m, + trunk/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib, + trunk/fuse/ui/sdl/sdljoystick.c: Fix joystick support. + +2006-11-26 08:44 fredm + + * trunk/fuse/fusepb/resources/Fuse Help/Fuse Help idx, + trunk/fuse/fusepb/resources/Fuse Help/Fuse Help.helpindex, + trunk/fuse/fusepb/resources/Fuse Help/html/emulation.html, + trunk/fuse/fusepb/resources/Fuse Help/html/mappings.html, + trunk/fuse/fusepb/resources/Fuse Help/html/menus.html, + trunk/fuse/fusepb/resources/Fuse Help/html/preferences.html, + trunk/fuse/fusepb/resources/Fuse Help/html/tocstart.html: Some + updates to the Fuse manual. + +2006-11-26 08:35 fredm + + * trunk/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib: Remove + "Auto-save settings" preference as we no longer have manual + preference + saving support as it is unlike the standard approach on OS X. + +2006-11-19 12:09 fredm + + * trunk/fuse/fusepb/controllers/FuseController.m: Make default + action on confirmations the action. + +2006-11-14 00:34 fredm + + * trunk/fuse/fusepb/English.lproj/InfoPlist.strings, + trunk/fuse/fusepb/Info-Fuse.plist: Move version numbers to + 20061114 + +2006-10-22 02:35 fred + + * trunk/fuse/fusepb/nibs/Preferences.nib/info.nib, + trunk/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib: Made ROM + text boxes small fonts and made reset buttons only enable when + there is something to reset. + +2006-10-22 01:57 fred + + * trunk/fuse/fusepb/controllers/PreferencesController.h, + trunk/fuse/fusepb/controllers/PreferencesController.m, + trunk/fuse/fusepb/nibs/Preferences.nib/classes.nib, + trunk/fuse/fusepb/nibs/Preferences.nib/info.nib, + trunk/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib, + trunk/fuse/settings.pl: Allow custom ROMS to be reset back to + defaults individually. + +2006-10-21 16:38 fred + + * trunk/fuse/fusepb/settings-header.pl, + trunk/fuse/machines/tc2048.c, trunk/fuse/settings.pl: Complete + merge up to fuse-20061021. + +2006-10-21 16:06 fred + + * trunk/fuse/display.c, trunk/fuse/display.h, trunk/fuse/event.c, + trunk/fuse/hacking/ChangeLog, trunk/fuse/if1.c, trunk/fuse/if2.c, + trunk/fuse/machine.c, trunk/fuse/machine.h, + trunk/fuse/machines/pentagon.c, trunk/fuse/machines/scorpion.c, + trunk/fuse/machines/spec128.c, trunk/fuse/machines/spec16.c, + trunk/fuse/machines/spec48.c, trunk/fuse/machines/spec_se.c, + trunk/fuse/machines/specplus2.c, + trunk/fuse/machines/specplus2a.c, + trunk/fuse/machines/specplus3.c, + trunk/fuse/machines/specplus3e.c, trunk/fuse/machines/tc2048.c, + trunk/fuse/machines/tc2068.c, trunk/fuse/machines/ts2068.c, + trunk/fuse/memory.c, trunk/fuse/profile.c, trunk/fuse/scld.c, + trunk/fuse/screenshot.c, trunk/fuse/screenshot.h, + trunk/fuse/settings-header.pl, trunk/fuse/settings.dat, + trunk/fuse/settings.pl, trunk/fuse/snapshot.c, + trunk/fuse/sound/sdlsound.c, trunk/fuse/tape.c, + trunk/fuse/ui/fb/fbdisplay.c, trunk/fuse/ui/ggi/ggidisplay.c, + trunk/fuse/ui/gtk/gtkdisplay.c, trunk/fuse/ui/gtk/gtkui.c, + trunk/fuse/ui/sdl/sdldisplay.c, trunk/fuse/ui/svga/svgadisplay.c, + trunk/fuse/ui/uidisplay.h, trunk/fuse/ui/win32/win32display.c, + trunk/fuse/ui/xlib/xdisplay.c, trunk/fuse/uidisplay.c, + trunk/fuse/widget/menu.c, trunk/fuse/widget/roms.c, + trunk/fuse/widget/widget.c: Merge up to fuse-20061021. + +2006-10-16 13:42 fred + + * trunk/fuse/fusepb/controllers/PreferencesController.h, + trunk/fuse/fusepb/controllers/PreferencesController.m, + trunk/fuse/fusepb/nibs/Preferences.nib/classes.nib, + trunk/fuse/fusepb/nibs/Preferences.nib/info.nib, + trunk/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib: Fix + updating ROMS after selecting new image. + +2006-09-04 12:55 fred + + * trunk/fuse/fusepb/SDLMain.mm: Updates from SDL 1.2.11 + +2006-09-04 12:49 fred + + * trunk/fuse/ui/sdl/sdlui.c: Try enabling Altivec blitters again + now that screen overruns have been solved? + +2006-09-04 05:18 fred + + * trunk/fuse/display.c, trunk/fuse/screenshot.c, + trunk/fuse/screenshot.h, trunk/fuse/ui/gtk/gtkui.c, + trunk/fuse/widget/menu.c, trunk/fuse/widget/widget.c: Remove + screenshot_save, now obsolete. + +2006-09-03 15:06 fred + + * trunk/fuse/fusepb/controllers/FuseController.m: Make comments + fuse compliant. + +2006-09-01 14:28 fred + + * trunk/FuseImporter/libspectrum.h, trunk/fuse/event.c, + trunk/fuse/event.h, + trunk/fuse/fusepb/controllers/FuseController.m, + trunk/fuse/hacking/ChangeLog, trunk/fuse/hacking/cvs-tags, + trunk/fuse/hacking/implementation_notes.txt, + trunk/fuse/machine.c, trunk/fuse/machine.h, + trunk/fuse/machines/scorpion.c, trunk/fuse/machines/spec128.c, + trunk/fuse/machines/specplus3.c, trunk/fuse/man/fuse.1, + trunk/fuse/memory.c, trunk/fuse/menu.c, trunk/fuse/menu_data.c, + trunk/fuse/profile.c, trunk/fuse/scld.c, trunk/fuse/screenshot.c, + trunk/fuse/tape.c, trunk/fuse/trdos.h, trunk/fuse/ui/gtk/gtkui.c, + trunk/fuse/ui/sdl/sdldisplay.c, trunk/fuse/z80/tests/README, + trunk/fuse/z80/tests/cb40.out, trunk/fuse/z80/tests/cb42.out, + trunk/fuse/z80/tests/cb44.out, trunk/fuse/z80/tests/cb45.out, + trunk/fuse/z80/tests/cb47_1.out, trunk/fuse/z80/tests/cb48.out, + trunk/fuse/z80/tests/cb49.out, trunk/fuse/z80/tests/cb4a.out, + trunk/fuse/z80/tests/cb4b.out, trunk/fuse/z80/tests/cb4c.out, + trunk/fuse/z80/tests/cb4d.out, trunk/fuse/z80/tests/cb4e.out, + trunk/fuse/z80/tests/cb4f_1.out, trunk/fuse/z80/tests/cb50.out, + trunk/fuse/z80/tests/cb51.out, trunk/fuse/z80/tests/cb52.out, + trunk/fuse/z80/tests/cb53.out, trunk/fuse/z80/tests/cb54.out, + trunk/fuse/z80/tests/cb55.out, trunk/fuse/z80/tests/cb57.out, + trunk/fuse/z80/tests/cb57_1.out, trunk/fuse/z80/tests/cb59.out, + trunk/fuse/z80/tests/cb5b.out, trunk/fuse/z80/tests/cb5e.out, + trunk/fuse/z80/tests/cb5f_1.out, trunk/fuse/z80/tests/cb60.out, + trunk/fuse/z80/tests/cb61.out, trunk/fuse/z80/tests/cb63.out, + trunk/fuse/z80/tests/cb64.out, trunk/fuse/z80/tests/cb65.out, + trunk/fuse/z80/tests/cb67_1.out, trunk/fuse/z80/tests/cb68.out, + trunk/fuse/z80/tests/cb69.out, trunk/fuse/z80/tests/cb6d.out, + trunk/fuse/z80/tests/cb6f_1.out, trunk/fuse/z80/tests/cb71.out, + trunk/fuse/z80/tests/cb72.out, trunk/fuse/z80/tests/cb73.out, + trunk/fuse/z80/tests/cb74.out, trunk/fuse/z80/tests/cb75.out, + trunk/fuse/z80/tests/cb76.out, trunk/fuse/z80/tests/cb77_1.out, + trunk/fuse/z80/tests/cb78.out, trunk/fuse/z80/tests/cb79.out, + trunk/fuse/z80/tests/cb7a.out, trunk/fuse/z80/tests/cb7b.out, + trunk/fuse/z80/tests/cb7d.out, trunk/fuse/z80/tests/cb7f.out, + trunk/fuse/z80/tests/cb7f_1.out, trunk/fuse/z80/tests/ddcb40.out, + trunk/fuse/z80/tests/ddcb41.out, trunk/fuse/z80/tests/ddcb43.out, + trunk/fuse/z80/tests/ddcb44.out, trunk/fuse/z80/tests/ddcb47.out, + trunk/fuse/z80/tests/ddcb48.out, trunk/fuse/z80/tests/ddcb49.out, + trunk/fuse/z80/tests/ddcb4a.out, trunk/fuse/z80/tests/ddcb4b.out, + trunk/fuse/z80/tests/ddcb4c.out, trunk/fuse/z80/tests/ddcb4d.out, + trunk/fuse/z80/tests/ddcb4e.out, trunk/fuse/z80/tests/ddcb4f.out, + trunk/fuse/z80/tests/ddcb51.out, trunk/fuse/z80/tests/ddcb54.out, + trunk/fuse/z80/tests/ddcb56.out, trunk/fuse/z80/tests/ddcb57.out, + trunk/fuse/z80/tests/ddcb5a.out, trunk/fuse/z80/tests/ddcb5b.out, + trunk/fuse/z80/tests/ddcb5e.out, trunk/fuse/z80/tests/ddcb60.out, + trunk/fuse/z80/tests/ddcb61.out, trunk/fuse/z80/tests/ddcb62.out, + trunk/fuse/z80/tests/ddcb65.out, trunk/fuse/z80/tests/ddcb66.out, + trunk/fuse/z80/tests/ddcb69.out, trunk/fuse/z80/tests/ddcb6a.out, + trunk/fuse/z80/tests/ddcb6b.out, trunk/fuse/z80/tests/ddcb6c.out, + trunk/fuse/z80/tests/ddcb6e.out, trunk/fuse/z80/tests/ddcb70.out, + trunk/fuse/z80/tests/ddcb71.out, trunk/fuse/z80/tests/ddcb72.out, + trunk/fuse/z80/tests/ddcb73.out, trunk/fuse/z80/tests/ddcb74.out, + trunk/fuse/z80/tests/ddcb75.out, trunk/fuse/z80/tests/ddcb76.out, + trunk/fuse/z80/tests/ddcb78.out, trunk/fuse/z80/tests/ddcb79.out, + trunk/fuse/z80/tests/ddcb7a.out, trunk/fuse/z80/tests/ddcb7b.out, + trunk/fuse/z80/tests/ddcb7c.out, trunk/fuse/z80/tests/ddcb7d.out, + trunk/fuse/z80/tests/ddcb7e.out, trunk/fuse/z80/tests/ddcb7f.out, + trunk/fuse/z80/tests/fdcb40.out, trunk/fuse/z80/tests/fdcb41.out, + trunk/fuse/z80/tests/fdcb42.out, trunk/fuse/z80/tests/fdcb43.out, + trunk/fuse/z80/tests/fdcb44.out, trunk/fuse/z80/tests/fdcb45.out, + trunk/fuse/z80/tests/fdcb46.out, trunk/fuse/z80/tests/fdcb48.out, + trunk/fuse/z80/tests/fdcb49.out, trunk/fuse/z80/tests/fdcb4a.out, + trunk/fuse/z80/tests/fdcb4b.out, trunk/fuse/z80/tests/fdcb4c.out, + trunk/fuse/z80/tests/fdcb4d.out, trunk/fuse/z80/tests/fdcb4e.out, + trunk/fuse/z80/tests/fdcb4f.out, trunk/fuse/z80/tests/fdcb50.out, + trunk/fuse/z80/tests/fdcb53.out, trunk/fuse/z80/tests/fdcb56.out, + trunk/fuse/z80/tests/fdcb57.out, trunk/fuse/z80/tests/fdcb58.out, + trunk/fuse/z80/tests/fdcb59.out, trunk/fuse/z80/tests/fdcb5a.out, + trunk/fuse/z80/tests/fdcb5b.out, trunk/fuse/z80/tests/fdcb5c.out, + trunk/fuse/z80/tests/fdcb5d.out, trunk/fuse/z80/tests/fdcb5f.out, + trunk/fuse/z80/tests/fdcb60.out, trunk/fuse/z80/tests/fdcb61.out, + trunk/fuse/z80/tests/fdcb62.out, trunk/fuse/z80/tests/fdcb63.out, + trunk/fuse/z80/tests/fdcb64.out, trunk/fuse/z80/tests/fdcb65.out, + trunk/fuse/z80/tests/fdcb6b.out, trunk/fuse/z80/tests/fdcb6e.out, + trunk/fuse/z80/tests/fdcb70.out, trunk/fuse/z80/tests/fdcb71.out, + trunk/fuse/z80/tests/fdcb72.out, trunk/fuse/z80/tests/fdcb73.out, + trunk/fuse/z80/tests/fdcb74.out, trunk/fuse/z80/tests/fdcb75.out, + trunk/fuse/z80/tests/fdcb76.out, trunk/fuse/z80/tests/fdcb77.out, + trunk/fuse/z80/tests/fdcb78.out, trunk/fuse/z80/tests/fdcb7a.out, + trunk/fuse/z80/tests/fdcb7b.out, trunk/fuse/z80/tests/fdcb7c.out, + trunk/fuse/z80/tests/fdcb7d.out, trunk/fuse/z80/tests/fdcb7e.out, + trunk/fuse/z80/z80_macros.h, trunk/libspectrum/libspectrum.h, + trunk/libspectrum/libspectrum/doc/libspectrum.txt, + trunk/libspectrum/libspectrum/hacking/ChangeLog, + trunk/libspectrum/libspectrum/libspectrum.h.in, + trunk/libspectrum/libspectrum/tape.c, + trunk/libspectrum/libspectrum/tape_block.c: Merge up to + libspectrum-20060812 and fuse-20060825. + +2006-08-31 13:34 fred + + * trunk/fuse/ui/sdl/sdlkeyboard.c: Only allow quit from windowed + mode. + +2006-08-31 08:14 fred + + * trunk/README: Correct bzip2 directory name in build instructions + +2006-08-31 08:02 fred + + * trunk/fuse/display.c, trunk/fuse/display.h, trunk/fuse/event.h, + trunk/fuse/hacking/implementation_notes.txt, + trunk/fuse/machine.c, trunk/fuse/machine.h, + trunk/fuse/machines/scorpion.c, trunk/fuse/machines/spec128.c, + trunk/fuse/machines/specplus3.c, trunk/fuse/memory.c, + trunk/fuse/scld.c, trunk/fuse/screenshot.c, + trunk/fuse/z80/z80_ops.c: Merge in changes from + fuse_interpolate_animation branch (rev 194:207), + which now comprise moving back to the (fixed) version of the + standard + Fuse "new" renderer, but incorporating the following from my + version: + * Restore rev 173 and move display_plot* over to the UIs and + remove + the screen copy in display.c + * Move border updating into the dirty system, fix updating of + last + border line after it has already been drawn, more tweaks to frame + rates in different circumstances. + * Don't update the screen more than 25 times a frame when loading + from tape only. + * Make numbers a little less magic. + * Restore display_last_screen for less overdraw in screen/mode + switch + situations. + * Minor event optimisations. + +2006-08-29 14:26 fred + + * trunk/fuse/display.c, trunk/fuse/memory.c, + trunk/fuse/sound/sdlsound.c, trunk/fuse/timer.c: Merge in 20ms + per frame cap to free up emulation speed in OS X. + +2006-08-24 12:03 fred + + * trunk/fuse/memory.c: Fix Shock II again (arrgh!!!) + +2006-08-18 01:25 fred + + * trunk/fuse/display.c, trunk/fuse/machine.h, trunk/fuse/memory.c, + trunk/fuse/z80/z80_ops.c: Fix bugs arising from removal of + display events from event system. + +2006-08-16 13:12 fred + + * trunk/fuse/display.c, trunk/fuse/display.h, trunk/fuse/event.c, + trunk/fuse/event.h, trunk/fuse/machine.c, trunk/fuse/memory.c, + trunk/fuse/z80/z80_ops.c: Remove display events from event + system. + +2006-08-15 01:17 fred + + * trunk/fuse/display.c: Hoist common expression. + +2006-08-14 13:44 fred + + * trunk/fuse/fusepb/controllers/PreferencesController.m, + trunk/fuse/settings.pl: Fix preferences reset. + +2006-08-14 13:42 fred + + * trunk/fuse/fusepb/settings.pl: Remove defunct file (now use + ../setttings.pl) + +2006-08-14 13:40 fred + + * trunk/fuse/fusepb/controllers/FuseController.m: Remove debugging + fprintf + +2006-08-14 13:38 fred + + * trunk/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib: Don't + hide printer enabled checkbox when printer enabled. + +2006-08-14 13:37 fred + + * trunk/fuse/ui/sdl/sdldisplay.c: Fix tape icon display before a + tape is played. + +2006-08-14 13:35 fred + + * trunk/fuse/ui/sdl/sdlkeyboard.c: Also ignore right command (meta) + key + +2006-08-12 04:19 fred + + * trunk/fuse/display.c, trunk/fuse/display.h, + trunk/fuse/machines/spec128.c, trunk/fuse/memory.c, + trunk/fuse/scld.c: Put chunks on a checklist when written to and + shortcircuit ULA reads where + there have been no changes. + +2006-08-09 12:20 fred + + * trunk/fuse/display.c, trunk/fuse/display.h: Make display_get_addr + a macro and make border_changes an array rather than + a gslist. + +2006-08-09 02:57 fred + + * trunk/fuse/event.c: Display events are frequent and nearly always + added to the front, and there + is only one outstanding at any one time. Add a dedicated slot for + display + events which are being added to the head of the queue. + +2006-08-08 13:34 fred + + * trunk/fuse/display.c: Bulk allocate border changes. + +2006-08-07 13:56 fred + + * trunk/fuse/display.c: Don't use get_beam_posision in + display_write, replace the three individual + display cache elements into a single word for faster aligned + access. + +2006-08-07 13:55 fred + + * trunk/fuse/event.c: Use a single free element pointer rather than + a list for more speed. + +2006-08-07 00:57 fred + + * trunk/fuse/display.c, trunk/fuse/display.h, + trunk/fuse/fusepb/thumbnail.m, trunk/fuse/screenshot.c, + trunk/fuse/ui/fb/fbdisplay.c, trunk/fuse/ui/ggi/ggidisplay.c, + trunk/fuse/ui/gtk/gtkdisplay.c, trunk/fuse/ui/sdl/sdldisplay.c, + trunk/fuse/ui/svga/svgadisplay.c, trunk/fuse/ui/uidisplay.h, + trunk/fuse/ui/win32/win32display.c, + trunk/fuse/ui/xlib/xdisplay.c, trunk/fuse/uidisplay.c: Move + display_plot* and display_putpixel to the ui level to cut out the + extra + copy in the SDL UI, remove display_image and replace with + display_getpixel. + +2006-08-06 13:51 fred + + * trunk/fuse/event.c: Use free event list to store event obects. + +2006-08-01 13:30 fred + + * trunk/fuse/display.c: Integrate border with display_last_screen + and use display_plot8 for drawing + +2006-08-01 05:24 fred + + * trunk/fuse/fusepb/Fuse.xcodeproj/project.pbxproj, + trunk/fuse/fusepb/controllers/FuseController.m, + trunk/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib: Complete + integration of merge up to fuse-20060731 + +2006-07-31 14:27 fred + + * trunk/fuse/Makefile.am, trunk/fuse/display.c, + trunk/fuse/display.h, trunk/fuse/event.c, trunk/fuse/event.h, + trunk/fuse/fuse.cpp, trunk/fuse/hacking/ChangeLog, + trunk/fuse/hacking/implementation_notes.txt, + trunk/fuse/lib/compressed/tape_128.szx, + trunk/fuse/lib/compressed/tape_16.szx, + trunk/fuse/lib/compressed/tape_2048.szx, + trunk/fuse/lib/compressed/tape_48.szx, + trunk/fuse/lib/compressed/tape_pentagon.szx, + trunk/fuse/lib/compressed/tape_plus2.szx, + trunk/fuse/lib/compressed/tape_scorpion.szx, + trunk/fuse/lib/compressed/tape_ts2068.szx, + trunk/fuse/lib/uncompressed/tape_128.szx, + trunk/fuse/lib/uncompressed/tape_16.szx, + trunk/fuse/lib/uncompressed/tape_2048.szx, + trunk/fuse/lib/uncompressed/tape_48.szx, + trunk/fuse/lib/uncompressed/tape_pentagon.szx, + trunk/fuse/lib/uncompressed/tape_plus2.szx, + trunk/fuse/lib/uncompressed/tape_scorpion.szx, + trunk/fuse/lib/uncompressed/tape_ts2068.szx, trunk/fuse/loader.c, + trunk/fuse/loader.h, trunk/fuse/machine.c, trunk/fuse/machine.h, + trunk/fuse/machines/scorpion.c, trunk/fuse/machines/spec128.c, + trunk/fuse/machines/specplus3.c, trunk/fuse/man/fuse.1, + trunk/fuse/memory.c, trunk/fuse/menu.c, trunk/fuse/scld.c, + trunk/fuse/screenshot.c, trunk/fuse/settings.dat, + trunk/fuse/spectrum.c, trunk/fuse/tape.c, trunk/fuse/tape.h, + trunk/fuse/ui/options.dat, trunk/fuse/ula.c, + trunk/fuse/z80/tests/03.out, trunk/fuse/z80/tests/09.out, + trunk/fuse/z80/tests/0b.out, trunk/fuse/z80/tests/10.out, + trunk/fuse/z80/tests/13.out, trunk/fuse/z80/tests/19.out, + trunk/fuse/z80/tests/1b.out, trunk/fuse/z80/tests/23.out, + trunk/fuse/z80/tests/29.out, trunk/fuse/z80/tests/2b.out, + trunk/fuse/z80/tests/33.out, trunk/fuse/z80/tests/39.out, + trunk/fuse/z80/tests/3b.out, trunk/fuse/z80/tests/c0_1.out, + trunk/fuse/z80/tests/c0_2.out, trunk/fuse/z80/tests/c5.out, + trunk/fuse/z80/tests/c7.out, trunk/fuse/z80/tests/c8_1.out, + trunk/fuse/z80/tests/c8_2.out, trunk/fuse/z80/tests/cf.out, + trunk/fuse/z80/tests/d0_1.out, trunk/fuse/z80/tests/d0_2.out, + trunk/fuse/z80/tests/d5.out, trunk/fuse/z80/tests/d7.out, + trunk/fuse/z80/tests/d8_1.out, trunk/fuse/z80/tests/d8_2.out, + trunk/fuse/z80/tests/dd09.out, trunk/fuse/z80/tests/dd19.out, + trunk/fuse/z80/tests/dd23.out, trunk/fuse/z80/tests/dd29.out, + trunk/fuse/z80/tests/dd2b.out, trunk/fuse/z80/tests/dd39.out, + trunk/fuse/z80/tests/dde5.out, trunk/fuse/z80/tests/ddf9.out, + trunk/fuse/z80/tests/df.out, trunk/fuse/z80/tests/e0_1.out, + trunk/fuse/z80/tests/e0_2.out, trunk/fuse/z80/tests/e5.out, + trunk/fuse/z80/tests/e7.out, trunk/fuse/z80/tests/e8_1.out, + trunk/fuse/z80/tests/e8_2.out, trunk/fuse/z80/tests/ed42.out, + trunk/fuse/z80/tests/ed47.out, trunk/fuse/z80/tests/ed4a.out, + trunk/fuse/z80/tests/ed4f.out, trunk/fuse/z80/tests/ed52.out, + trunk/fuse/z80/tests/ed57.out, trunk/fuse/z80/tests/ed5a.out, + trunk/fuse/z80/tests/ed5f.out, trunk/fuse/z80/tests/ed62.out, + trunk/fuse/z80/tests/ed6a.out, trunk/fuse/z80/tests/ed72.out, + trunk/fuse/z80/tests/ed7a.out, trunk/fuse/z80/tests/eda2.out, + trunk/fuse/z80/tests/eda3.out, trunk/fuse/z80/tests/edaa.out, + trunk/fuse/z80/tests/edab.out, trunk/fuse/z80/tests/edb2.out, + trunk/fuse/z80/tests/edb3.out, trunk/fuse/z80/tests/edba.out, + trunk/fuse/z80/tests/edbb.out, trunk/fuse/z80/tests/ef.out, + trunk/fuse/z80/tests/f0_1.out, trunk/fuse/z80/tests/f0_2.out, + trunk/fuse/z80/tests/f5.out, trunk/fuse/z80/tests/f7.out, + trunk/fuse/z80/tests/f8_1.out, trunk/fuse/z80/tests/f8_2.out, + trunk/fuse/z80/tests/f9.out, trunk/fuse/z80/tests/fd09.out, + trunk/fuse/z80/tests/fd19.out, trunk/fuse/z80/tests/fd23.out, + trunk/fuse/z80/tests/fd29.out, trunk/fuse/z80/tests/fd2b.out, + trunk/fuse/z80/tests/fd39.out, trunk/fuse/z80/tests/fde5.out, + trunk/fuse/z80/tests/fdf9.out, trunk/fuse/z80/tests/ff.out, + trunk/fuse/z80/z80.c, trunk/fuse/z80/z80.pl, + trunk/fuse/z80/z80_macros.h: Merge up to fuse-20060731 + +2006-07-30 13:15 fred + + * trunk/fuse/widget/menu.c: Fix apparent bug with writing PNG + screenshots in widget interface + +2006-07-29 07:55 fred + + * trunk/fuse/display.c, trunk/fuse/display.h, trunk/fuse/event.c, + trunk/fuse/event.h, trunk/fuse/hacking/implementation_notes.txt, + trunk/fuse/machine.c, trunk/fuse/machine.h, + trunk/fuse/machines/scorpion.c, trunk/fuse/machines/spec128.c, + trunk/fuse/machines/specplus3.c, trunk/fuse/memory.c, + trunk/fuse/scld.c, trunk/fuse/screenshot.c: New character based + renderer fixes regressions with various demos and mixed + mode Timex screens. + +2006-07-27 12:06 fred + + * trunk/fuse/display.c, trunk/fuse/hacking/ChangeLog, + trunk/fuse/machines/ts2068.c, trunk/fuse/screenshot.c, + trunk/fuse/screenshot.h, trunk/fuse/ui/gtk/gtkui.c, + trunk/fuse/ui/options.dat, trunk/fuse/widget/menu.c, + trunk/fuse/z80/tests/README, trunk/fuse/z80/tests/dd00.in, + trunk/fuse/z80/tests/dd00.out, trunk/fuse/z80/tests/ddfd00.in, + trunk/fuse/z80/tests/ddfd00.out, trunk/fuse/z80/z80.pl, + trunk/fuse/z80/z80_macros.h: Merge up to fuse-20060726. + +2006-07-27 10:39 fred + + * trunk/fuse/fuse.cpp: Reenable sound after a pause. + +2006-07-26 12:38 fred + + * trunk/fuse/fusepb/settings.pl: Make tape autoload snap for ts2068 + work with case sensitive filesystems. + +2006-07-26 12:37 fred + + * trunk/fuse/machines/ts2068.c, trunk/fuse/settings.dat, + trunk/fuse/settings.pl: Make tape autoload snap for ts2068 work + with case sensitive filesystems. + +2006-07-23 22:19 fred + + * trunk/fuse/fusepb/sdlscreenshot.m: Fix png saving for Intel + machines. + +2006-07-20 14:22 fred + + * trunk/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib: Add + setting to adjust microdrive cartridge size. + +2006-07-18 14:06 fred + + * trunk/fuse/fusepb/English.lproj/InfoPlist.strings, + trunk/fuse/fusepb/Info-Fuse.plist, + trunk/fuse/fusepb/resources/Fuse Help/html/changelog.html: Use + date for release numbers for beta. + +2006-07-18 12:38 fred + + * trunk/FuseImporter/LibspectrumMetadataImporter.m: Get + FuseImporter to recognise RLE pulse blocks too. + +2006-07-18 12:26 fred + + * trunk/fuse/fusepb/controllers/FuseController.m, + trunk/libspectrum/libspectrum/tape.c: Fix to allow loading of csw + and raw files, add libspectrum block description + for csw/raw files. + +2006-07-17 12:42 fred + + * trunk/FuseImporter/FuseImporter.xcodeproj/project.pbxproj, + trunk/FuseImporter/Info.plist, trunk/FuseImporter/libspectrum.h: + Bring FuseImporter up to date with libspectrum-20060716. + +2006-07-17 12:23 fred + + * trunk/fuse/.cvsignore, trunk/fuse/AUTHORS, trunk/fuse/COPYING, + trunk/fuse/ChangeLog, trunk/fuse/Makefile.am, trunk/fuse/README, + trunk/fuse/THANKS, trunk/fuse/TODO, trunk/fuse/acinclude.m4, + trunk/fuse/autogen.sh, trunk/fuse/ay.c, trunk/fuse/ay.h, + trunk/fuse/compat.h, trunk/fuse/compat/.cvsignore, + trunk/fuse/compat/Makefile.am, trunk/fuse/compat/dirname.c, + trunk/fuse/compat/getopt.c, trunk/fuse/compat/getopt.h, + trunk/fuse/compat/getopt1.c, trunk/fuse/compat/mkstemp.c, + trunk/fuse/configure.in, trunk/fuse/dck.c, trunk/fuse/dck.h, + trunk/fuse/debugger/.cvsignore, trunk/fuse/debugger/Makefile.am, + trunk/fuse/debugger/breakpoint.c, + trunk/fuse/debugger/breakpoint.h, trunk/fuse/debugger/command.c, + trunk/fuse/debugger/commandl.l, trunk/fuse/debugger/commandy.y, + trunk/fuse/debugger/debugger.c, trunk/fuse/debugger/debugger.h, + trunk/fuse/debugger/debugger_internals.h, + trunk/fuse/debugger/disassemble.c, + trunk/fuse/debugger/expression.c, trunk/fuse/display.c, + trunk/fuse/display.h, trunk/fuse/divide.c, trunk/fuse/divide.h, + trunk/fuse/event.c, trunk/fuse/event.h, trunk/fuse/fuse.cpp, + trunk/fuse/fuse.h, + trunk/fuse/fusepb/Fuse.xcodeproj/project.pbxproj, + trunk/fuse/fusepb/Info-Fuse.plist, + trunk/fuse/fusepb/nibs/Preferences.nib/info.nib, + trunk/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib, + trunk/fuse/fusepb/resources/Fuse Help/html/menus.html, + trunk/fuse/fusepb/resources/csw.icns, + trunk/fuse/fusepb/resources/raw.icns, + trunk/fuse/hacking/.cvsignore, trunk/fuse/hacking/ChangeLog, + trunk/fuse/hacking/Makefile.am, + trunk/fuse/hacking/coding_style.txt, trunk/fuse/hacking/cvs-tags, + trunk/fuse/hacking/implementation_notes.txt, + trunk/fuse/hacking/input.txt, trunk/fuse/hacking/sound.txt, + trunk/fuse/hacking/tc2048_tech_notes.txt, + trunk/fuse/hacking/timer.txt, trunk/fuse/hacking/ui.txt, + trunk/fuse/ide.c, trunk/fuse/ide.h, trunk/fuse/if1.c, + trunk/fuse/if1.h, trunk/fuse/if2.c, trunk/fuse/if2.h, + trunk/fuse/input.c, trunk/fuse/input.h, trunk/fuse/joystick.c, + trunk/fuse/joystick.h, trunk/fuse/kempmouse.c, + trunk/fuse/kempmouse.h, trunk/fuse/keyboard.c, + trunk/fuse/keyboard.h, trunk/fuse/keysyms.dat, + trunk/fuse/lib/.cvsignore, trunk/fuse/lib/Makefile.am, + trunk/fuse/lib/cassette.bmp, + trunk/fuse/lib/compressed/disk_plus3.szx, + trunk/fuse/lib/compressed/tape_128.szx, + trunk/fuse/lib/compressed/tape_16.szx, + trunk/fuse/lib/compressed/tape_2048.szx, + trunk/fuse/lib/compressed/tape_2068.szx, + trunk/fuse/lib/compressed/tape_48.szx, + trunk/fuse/lib/compressed/tape_pentagon.szx, + trunk/fuse/lib/compressed/tape_plus2.szx, + trunk/fuse/lib/compressed/tape_plus2a.szx, + trunk/fuse/lib/compressed/tape_plus3.szx, + trunk/fuse/lib/compressed/tape_plus3e.szx, + trunk/fuse/lib/compressed/tape_scorpion.szx, + trunk/fuse/lib/compressed/tape_se.szx, + trunk/fuse/lib/compressed/tape_ts2068.szx, + trunk/fuse/lib/keyboard.scr, trunk/fuse/lib/microdrive.bmp, + trunk/fuse/lib/plus3disk.bmp, + trunk/fuse/lib/uncompressed/disk_plus3.szx, + trunk/fuse/lib/uncompressed/tape_128.szx, + trunk/fuse/lib/uncompressed/tape_16.szx, + trunk/fuse/lib/uncompressed/tape_2048.szx, + trunk/fuse/lib/uncompressed/tape_2068.szx, + trunk/fuse/lib/uncompressed/tape_48.szx, + trunk/fuse/lib/uncompressed/tape_pentagon.szx, + trunk/fuse/lib/uncompressed/tape_plus2.szx, + trunk/fuse/lib/uncompressed/tape_plus2a.szx, + trunk/fuse/lib/uncompressed/tape_plus3.szx, + trunk/fuse/lib/uncompressed/tape_plus3e.szx, + trunk/fuse/lib/uncompressed/tape_scorpion.szx, + trunk/fuse/lib/uncompressed/tape_se.szx, + trunk/fuse/lib/uncompressed/tape_ts2068.szx, + trunk/fuse/machine.c, trunk/fuse/machine.h, + trunk/fuse/machines/.cvsignore, trunk/fuse/machines/Makefile.am, + trunk/fuse/machines/machines.h, trunk/fuse/machines/pentagon.c, + trunk/fuse/machines/scorpion.c, trunk/fuse/machines/scorpion.h, + trunk/fuse/machines/spec128.c, trunk/fuse/machines/spec128.h, + trunk/fuse/machines/spec16.c, trunk/fuse/machines/spec48.c, + trunk/fuse/machines/spec48.h, trunk/fuse/machines/spec_se.c, + trunk/fuse/machines/specplus2.c, + trunk/fuse/machines/specplus2a.c, + trunk/fuse/machines/specplus3.c, trunk/fuse/machines/specplus3.h, + trunk/fuse/machines/specplus3e.c, trunk/fuse/machines/tc2048.c, + trunk/fuse/machines/tc2068.c, trunk/fuse/machines/tc2068.h, + trunk/fuse/machines/ts2068.c, trunk/fuse/man/.cvsignore, + trunk/fuse/man/Makefile.am, trunk/fuse/man/fuse.1, + trunk/fuse/memory.c, trunk/fuse/memory.h, trunk/fuse/menu.c, + trunk/fuse/menu.h, trunk/fuse/menu_data.c, + trunk/fuse/menu_data.pl, trunk/fuse/periph.c, + trunk/fuse/periph.h, trunk/fuse/perl/.cvsignore, + trunk/fuse/perl/Fuse.pm, trunk/fuse/perl/Fuse/.cvsignore, + trunk/fuse/perl/Fuse/Dialog.pm, trunk/fuse/perl/Fuse/Makefile.am, + trunk/fuse/perl/Makefile.am, trunk/fuse/pokefinder/.cvsignore, + trunk/fuse/pokefinder/Makefile.am, + trunk/fuse/pokefinder/pokefinder.c, + trunk/fuse/pokefinder/pokefinder.h, trunk/fuse/printer.c, + trunk/fuse/printer.h, trunk/fuse/profile.c, trunk/fuse/profile.h, + trunk/fuse/psg.c, trunk/fuse/psg.h, trunk/fuse/roms/.cvsignore, + trunk/fuse/roms/128-0.rom, trunk/fuse/roms/128-1.rom, + trunk/fuse/roms/128p-0.rom, trunk/fuse/roms/128p-1.rom, + trunk/fuse/roms/256s-0.rom, trunk/fuse/roms/256s-1.rom, + trunk/fuse/roms/256s-2.rom, trunk/fuse/roms/256s-3.rom, + trunk/fuse/roms/48.rom, trunk/fuse/roms/Makefile.am, + trunk/fuse/roms/if1-1.rom, trunk/fuse/roms/if1-2.rom, + trunk/fuse/roms/plus2-0.rom, trunk/fuse/roms/plus2-1.rom, + trunk/fuse/roms/plus3-0.rom, trunk/fuse/roms/plus3-1.rom, + trunk/fuse/roms/plus3-2.rom, trunk/fuse/roms/plus3-3.rom, + trunk/fuse/roms/plus3e-0.rom, trunk/fuse/roms/plus3e-1.rom, + trunk/fuse/roms/plus3e-2.rom, trunk/fuse/roms/plus3e-3.rom, + trunk/fuse/roms/se-0.rom, trunk/fuse/roms/se-1.rom, + trunk/fuse/roms/tc2048.rom, trunk/fuse/roms/tc2068-0.rom, + trunk/fuse/roms/tc2068-1.rom, trunk/fuse/roms/trdos.rom, + trunk/fuse/rzx.c, trunk/fuse/rzx.h, trunk/fuse/scld.c, + trunk/fuse/scld.h, trunk/fuse/screenshot.c, + trunk/fuse/screenshot.h, trunk/fuse/settings.dat, + trunk/fuse/simpleide.c, trunk/fuse/simpleide.h, trunk/fuse/slt.c, + trunk/fuse/slt.h, trunk/fuse/snapshot.c, trunk/fuse/snapshot.h, + trunk/fuse/sound.c, trunk/fuse/sound.h, + trunk/fuse/sound/.cvsignore, trunk/fuse/sound/Makefile.am, + trunk/fuse/sound/aosound.c, trunk/fuse/sound/dxsound.c, + trunk/fuse/sound/hpsound.c, trunk/fuse/sound/lowlevel.h, + trunk/fuse/sound/nullsound.c, trunk/fuse/sound/osssound.c, + trunk/fuse/sound/sdlsound.c, trunk/fuse/sound/sfifo.c, + trunk/fuse/sound/sfifo.h, trunk/fuse/sound/sunsound.c, + trunk/fuse/spectrum.c, trunk/fuse/spectrum.h, trunk/fuse/tape.c, + trunk/fuse/tape.h, trunk/fuse/timer.c, trunk/fuse/timer.h, + trunk/fuse/trdos.c, trunk/fuse/trdos.h, trunk/fuse/ui.c, + trunk/fuse/ui/.cvsignore, trunk/fuse/ui/Makefile.am, + trunk/fuse/ui/aalib/.cvsignore, trunk/fuse/ui/aalib/Makefile.am, + trunk/fuse/ui/aalib/aalibdisplay.c, + trunk/fuse/ui/aalib/aalibkeyboard.c, + trunk/fuse/ui/aalib/aalibkeyboard.h, + trunk/fuse/ui/aalib/aalibui.c, trunk/fuse/ui/aalib/aalibui.h, + trunk/fuse/ui/aalib/error.c, trunk/fuse/ui/fb/.cvsignore, + trunk/fuse/ui/fb/Makefile.am, trunk/fuse/ui/fb/fbdisplay.c, + trunk/fuse/ui/fb/fbdisplay.h, trunk/fuse/ui/fb/fbjoystick.c, + trunk/fuse/ui/fb/fbkeyboard.c, trunk/fuse/ui/fb/fbkeyboard.h, + trunk/fuse/ui/fb/fbmouse.c, trunk/fuse/ui/fb/fbmouse.h, + trunk/fuse/ui/fb/fbui.c, trunk/fuse/ui/ggi/.cvsignore, + trunk/fuse/ui/ggi/Makefile.am, trunk/fuse/ui/ggi/ggi_internals.h, + trunk/fuse/ui/ggi/ggidisplay.c, trunk/fuse/ui/ggi/ggikeyboard.c, + trunk/fuse/ui/ggi/ggiui.c, trunk/fuse/ui/gtk/.cvsignore, + trunk/fuse/ui/gtk/Makefile.am, trunk/fuse/ui/gtk/binary.c, + trunk/fuse/ui/gtk/browse.c, trunk/fuse/ui/gtk/confirm.c, + trunk/fuse/ui/gtk/debugger.c, trunk/fuse/ui/gtk/fileselector.c, + trunk/fuse/ui/gtk/gtkdisplay.c, trunk/fuse/ui/gtk/gtkinternals.h, + trunk/fuse/ui/gtk/gtkjoystick.c, trunk/fuse/ui/gtk/gtkkeyboard.c, + trunk/fuse/ui/gtk/gtkmouse.c, trunk/fuse/ui/gtk/gtkui.c, + trunk/fuse/ui/gtk/memory.c, trunk/fuse/ui/gtk/picture.c, + trunk/fuse/ui/gtk/pixmaps.c, trunk/fuse/ui/gtk/pokefinder.c, + trunk/fuse/ui/gtk/rollback.c, trunk/fuse/ui/gtk/roms.c, + trunk/fuse/ui/gtk/statusbar.c, trunk/fuse/ui/gtk/stock.c, + trunk/fuse/ui/options.dat, trunk/fuse/ui/scaler/.cvsignore, + trunk/fuse/ui/scaler/Makefile.am, trunk/fuse/ui/scaler/scaler.c, + trunk/fuse/ui/scaler/scaler.h, + trunk/fuse/ui/scaler/scaler_internals.h, + trunk/fuse/ui/sdl/.cvsignore, trunk/fuse/ui/sdl/Makefile.am, + trunk/fuse/ui/sdl/sdldisplay.c, trunk/fuse/ui/sdl/sdldisplay.h, + trunk/fuse/ui/sdl/sdljoystick.c, trunk/fuse/ui/sdl/sdljoystick.h, + trunk/fuse/ui/sdl/sdlkeyboard.c, trunk/fuse/ui/sdl/sdlkeyboard.h, + trunk/fuse/ui/sdl/sdlui.c, trunk/fuse/ui/svga/.cvsignore, + trunk/fuse/ui/svga/Makefile.am, trunk/fuse/ui/svga/svgadisplay.c, + trunk/fuse/ui/svga/svgadisplay.h, + trunk/fuse/ui/svga/svgajoystick.c, + trunk/fuse/ui/svga/svgakeyboard.c, + trunk/fuse/ui/svga/svgakeyboard.h, trunk/fuse/ui/svga/svgaui.c, + trunk/fuse/ui/ui.h, trunk/fuse/ui/uidisplay.h, + trunk/fuse/ui/uijoystick.c, trunk/fuse/ui/uijoystick.h, + trunk/fuse/ui/win32/.cvsignore, trunk/fuse/ui/win32/Makefile.am, + trunk/fuse/ui/win32/debugger.c, trunk/fuse/ui/win32/debugger.h, + trunk/fuse/ui/win32/debugger.rc, trunk/fuse/ui/win32/del_o.bat, + trunk/fuse/ui/win32/error.c, + trunk/fuse/ui/win32/icons/disk_active.bmp, + trunk/fuse/ui/win32/icons/disk_inactive.bmp, + trunk/fuse/ui/win32/icons/pause_active.bmp, + trunk/fuse/ui/win32/icons/pause_inactive.bmp, + trunk/fuse/ui/win32/icons/tape_active.bmp, + trunk/fuse/ui/win32/icons/tape_inactive.bmp, + trunk/fuse/ui/win32/icons/tape_marker.bmp, + trunk/fuse/ui/win32/keysyms.c, trunk/fuse/ui/win32/menu_data.c, + trunk/fuse/ui/win32/menu_data.h, + trunk/fuse/ui/win32/menu_data.rc, + trunk/fuse/ui/win32/pokefinder.c, + trunk/fuse/ui/win32/pokefinder.h, + trunk/fuse/ui/win32/pokefinder.rc, + trunk/fuse/ui/win32/statusbar.c, trunk/fuse/ui/win32/todo.txt, + trunk/fuse/ui/win32/win32display.c, + trunk/fuse/ui/win32/win32display.h, + trunk/fuse/ui/win32/win32internals.h, + trunk/fuse/ui/win32/win32keyboard.c, + trunk/fuse/ui/win32/win32keyboard.h, + trunk/fuse/ui/win32/win32ui.c, trunk/fuse/ui/win32/win32ui.rc, + trunk/fuse/ui/xlib/.cvsignore, trunk/fuse/ui/xlib/Makefile.am, + trunk/fuse/ui/xlib/xdisplay.c, trunk/fuse/ui/xlib/xdisplay.h, + trunk/fuse/ui/xlib/xerror.c, trunk/fuse/ui/xlib/xjoystick.c, + trunk/fuse/ui/xlib/xkeyboard.c, trunk/fuse/ui/xlib/xkeyboard.h, + trunk/fuse/ui/xlib/xui.c, trunk/fuse/ui/xlib/xui.h, + trunk/fuse/uidisplay.c, trunk/fuse/ula.c, trunk/fuse/ula.h, + trunk/fuse/utils.c, trunk/fuse/utils.h, + trunk/fuse/widget/.cvsignore, trunk/fuse/widget/Makefile.am, + trunk/fuse/widget/browse.c, trunk/fuse/widget/debugger.c, + trunk/fuse/widget/error.c, trunk/fuse/widget/filesel.c, + trunk/fuse/widget/fuse.font.sbf, trunk/fuse/widget/memory.c, + trunk/fuse/widget/menu.c, trunk/fuse/widget/mkfusefont.pl, + trunk/fuse/widget/picture.c, trunk/fuse/widget/pokefinder.c, + trunk/fuse/widget/query.c, trunk/fuse/widget/roms.c, + trunk/fuse/widget/select.c, trunk/fuse/widget/text.c, + trunk/fuse/widget/widget.c, trunk/fuse/widget/widget.h, + trunk/fuse/widget/widget_internals.h, trunk/fuse/z80/.cvsignore, + trunk/fuse/z80/Makefile.am, trunk/fuse/z80/coretest.c, + trunk/fuse/z80/opcodes_base.dat, trunk/fuse/z80/opcodes_cb.dat, + trunk/fuse/z80/opcodes_ddfd.dat, + trunk/fuse/z80/opcodes_ddfdcb.dat, trunk/fuse/z80/opcodes_ed.dat, + trunk/fuse/z80/tests/.cvsignore, trunk/fuse/z80/tests/00.in, + trunk/fuse/z80/tests/00.out, trunk/fuse/z80/tests/01.in, + trunk/fuse/z80/tests/01.out, trunk/fuse/z80/tests/02.in, + trunk/fuse/z80/tests/02.out, trunk/fuse/z80/tests/03.in, + trunk/fuse/z80/tests/03.out, trunk/fuse/z80/tests/04.in, + trunk/fuse/z80/tests/04.out, trunk/fuse/z80/tests/05.in, + trunk/fuse/z80/tests/05.out, trunk/fuse/z80/tests/06.in, + trunk/fuse/z80/tests/06.out, trunk/fuse/z80/tests/07.in, + trunk/fuse/z80/tests/07.out, trunk/fuse/z80/tests/08.in, + trunk/fuse/z80/tests/08.out, trunk/fuse/z80/tests/09.in, + trunk/fuse/z80/tests/09.out, trunk/fuse/z80/tests/0a.in, + trunk/fuse/z80/tests/0a.out, trunk/fuse/z80/tests/0b.in, + trunk/fuse/z80/tests/0b.out, trunk/fuse/z80/tests/0c.in, + trunk/fuse/z80/tests/0c.out, trunk/fuse/z80/tests/0d.in, + trunk/fuse/z80/tests/0d.out, trunk/fuse/z80/tests/0e.in, + trunk/fuse/z80/tests/0e.out, trunk/fuse/z80/tests/0f.in, + trunk/fuse/z80/tests/0f.out, trunk/fuse/z80/tests/10.in, + trunk/fuse/z80/tests/10.out, trunk/fuse/z80/tests/11.in, + trunk/fuse/z80/tests/11.out, trunk/fuse/z80/tests/12.in, + trunk/fuse/z80/tests/12.out, trunk/fuse/z80/tests/13.in, + trunk/fuse/z80/tests/13.out, trunk/fuse/z80/tests/14.in, + trunk/fuse/z80/tests/14.out, trunk/fuse/z80/tests/15.in, + trunk/fuse/z80/tests/15.out, trunk/fuse/z80/tests/16.in, + trunk/fuse/z80/tests/16.out, trunk/fuse/z80/tests/17.in, + trunk/fuse/z80/tests/17.out, trunk/fuse/z80/tests/18.in, + trunk/fuse/z80/tests/18.out, trunk/fuse/z80/tests/19.in, + trunk/fuse/z80/tests/19.out, trunk/fuse/z80/tests/1a.in, + trunk/fuse/z80/tests/1a.out, trunk/fuse/z80/tests/1b.in, + trunk/fuse/z80/tests/1b.out, trunk/fuse/z80/tests/1c.in, + trunk/fuse/z80/tests/1c.out, trunk/fuse/z80/tests/1d.in, + trunk/fuse/z80/tests/1d.out, trunk/fuse/z80/tests/1e.in, + trunk/fuse/z80/tests/1e.out, trunk/fuse/z80/tests/1f.in, + trunk/fuse/z80/tests/1f.out, trunk/fuse/z80/tests/20_1.in, + trunk/fuse/z80/tests/20_1.out, trunk/fuse/z80/tests/20_2.in, + trunk/fuse/z80/tests/20_2.out, trunk/fuse/z80/tests/21.in, + trunk/fuse/z80/tests/21.out, trunk/fuse/z80/tests/22.in, + trunk/fuse/z80/tests/22.out, trunk/fuse/z80/tests/23.in, + trunk/fuse/z80/tests/23.out, trunk/fuse/z80/tests/24.in, + trunk/fuse/z80/tests/24.out, trunk/fuse/z80/tests/25.in, + trunk/fuse/z80/tests/25.out, trunk/fuse/z80/tests/26.in, + trunk/fuse/z80/tests/26.out, trunk/fuse/z80/tests/27.in, + trunk/fuse/z80/tests/27.out, trunk/fuse/z80/tests/28_1.in, + trunk/fuse/z80/tests/28_1.out, trunk/fuse/z80/tests/28_2.in, + trunk/fuse/z80/tests/28_2.out, trunk/fuse/z80/tests/29.in, + trunk/fuse/z80/tests/29.out, trunk/fuse/z80/tests/2a.in, + trunk/fuse/z80/tests/2a.out, trunk/fuse/z80/tests/2b.in, + trunk/fuse/z80/tests/2b.out, trunk/fuse/z80/tests/2c.in, + trunk/fuse/z80/tests/2c.out, trunk/fuse/z80/tests/2d.in, + trunk/fuse/z80/tests/2d.out, trunk/fuse/z80/tests/2e.in, + trunk/fuse/z80/tests/2e.out, trunk/fuse/z80/tests/2f.in, + trunk/fuse/z80/tests/2f.out, trunk/fuse/z80/tests/30_1.in, + trunk/fuse/z80/tests/30_1.out, trunk/fuse/z80/tests/30_2.in, + trunk/fuse/z80/tests/30_2.out, trunk/fuse/z80/tests/31.in, + trunk/fuse/z80/tests/31.out, trunk/fuse/z80/tests/32.in, + trunk/fuse/z80/tests/32.out, trunk/fuse/z80/tests/33.in, + trunk/fuse/z80/tests/33.out, trunk/fuse/z80/tests/34.in, + trunk/fuse/z80/tests/34.out, trunk/fuse/z80/tests/35.in, + trunk/fuse/z80/tests/35.out, trunk/fuse/z80/tests/36.in, + trunk/fuse/z80/tests/36.out, trunk/fuse/z80/tests/37.in, + trunk/fuse/z80/tests/37.out, trunk/fuse/z80/tests/37_1.in, + trunk/fuse/z80/tests/37_1.out, trunk/fuse/z80/tests/37_2.in, + trunk/fuse/z80/tests/37_2.out, trunk/fuse/z80/tests/37_3.in, + trunk/fuse/z80/tests/37_3.out, trunk/fuse/z80/tests/38_1.in, + trunk/fuse/z80/tests/38_1.out, trunk/fuse/z80/tests/38_2.in, + trunk/fuse/z80/tests/38_2.out, trunk/fuse/z80/tests/39.in, + trunk/fuse/z80/tests/39.out, trunk/fuse/z80/tests/3a.in, + trunk/fuse/z80/tests/3a.out, trunk/fuse/z80/tests/3b.in, + trunk/fuse/z80/tests/3b.out, trunk/fuse/z80/tests/3c.in, + trunk/fuse/z80/tests/3c.out, trunk/fuse/z80/tests/3d.in, + trunk/fuse/z80/tests/3d.out, trunk/fuse/z80/tests/3e.in, + trunk/fuse/z80/tests/3e.out, trunk/fuse/z80/tests/3f.in, + trunk/fuse/z80/tests/3f.out, trunk/fuse/z80/tests/40.in, + trunk/fuse/z80/tests/40.out, trunk/fuse/z80/tests/41.in, + trunk/fuse/z80/tests/41.out, trunk/fuse/z80/tests/42.in, + trunk/fuse/z80/tests/42.out, trunk/fuse/z80/tests/43.in, + trunk/fuse/z80/tests/43.out, trunk/fuse/z80/tests/44.in, + trunk/fuse/z80/tests/44.out, trunk/fuse/z80/tests/45.in, + trunk/fuse/z80/tests/45.out, trunk/fuse/z80/tests/46.in, + trunk/fuse/z80/tests/46.out, trunk/fuse/z80/tests/47.in, + trunk/fuse/z80/tests/47.out, trunk/fuse/z80/tests/48.in, + trunk/fuse/z80/tests/48.out, trunk/fuse/z80/tests/49.in, + trunk/fuse/z80/tests/49.out, trunk/fuse/z80/tests/4a.in, + trunk/fuse/z80/tests/4a.out, trunk/fuse/z80/tests/4b.in, + trunk/fuse/z80/tests/4b.out, trunk/fuse/z80/tests/4c.in, + trunk/fuse/z80/tests/4c.out, trunk/fuse/z80/tests/4d.in, + trunk/fuse/z80/tests/4d.out, trunk/fuse/z80/tests/4e.in, + trunk/fuse/z80/tests/4e.out, trunk/fuse/z80/tests/4f.in, + trunk/fuse/z80/tests/4f.out, trunk/fuse/z80/tests/50.in, + trunk/fuse/z80/tests/50.out, trunk/fuse/z80/tests/51.in, + trunk/fuse/z80/tests/51.out, trunk/fuse/z80/tests/52.in, + trunk/fuse/z80/tests/52.out, trunk/fuse/z80/tests/53.in, + trunk/fuse/z80/tests/53.out, trunk/fuse/z80/tests/54.in, + trunk/fuse/z80/tests/54.out, trunk/fuse/z80/tests/55.in, + trunk/fuse/z80/tests/55.out, trunk/fuse/z80/tests/56.in, + trunk/fuse/z80/tests/56.out, trunk/fuse/z80/tests/57.in, + trunk/fuse/z80/tests/57.out, trunk/fuse/z80/tests/58.in, + trunk/fuse/z80/tests/58.out, trunk/fuse/z80/tests/59.in, + trunk/fuse/z80/tests/59.out, trunk/fuse/z80/tests/5a.in, + trunk/fuse/z80/tests/5a.out, trunk/fuse/z80/tests/5b.in, + trunk/fuse/z80/tests/5b.out, trunk/fuse/z80/tests/5c.in, + trunk/fuse/z80/tests/5c.out, trunk/fuse/z80/tests/5d.in, + trunk/fuse/z80/tests/5d.out, trunk/fuse/z80/tests/5e.in, + trunk/fuse/z80/tests/5e.out, trunk/fuse/z80/tests/5f.in, + trunk/fuse/z80/tests/5f.out, trunk/fuse/z80/tests/60.in, + trunk/fuse/z80/tests/60.out, trunk/fuse/z80/tests/61.in, + trunk/fuse/z80/tests/61.out, trunk/fuse/z80/tests/62.in, + trunk/fuse/z80/tests/62.out, trunk/fuse/z80/tests/63.in, + trunk/fuse/z80/tests/63.out, trunk/fuse/z80/tests/64.in, + trunk/fuse/z80/tests/64.out, trunk/fuse/z80/tests/65.in, + trunk/fuse/z80/tests/65.out, trunk/fuse/z80/tests/66.in, + trunk/fuse/z80/tests/66.out, trunk/fuse/z80/tests/67.in, + trunk/fuse/z80/tests/67.out, trunk/fuse/z80/tests/68.in, + trunk/fuse/z80/tests/68.out, trunk/fuse/z80/tests/69.in, + trunk/fuse/z80/tests/69.out, trunk/fuse/z80/tests/6a.in, + trunk/fuse/z80/tests/6a.out, trunk/fuse/z80/tests/6b.in, + trunk/fuse/z80/tests/6b.out, trunk/fuse/z80/tests/6c.in, + trunk/fuse/z80/tests/6c.out, trunk/fuse/z80/tests/6d.in, + trunk/fuse/z80/tests/6d.out, trunk/fuse/z80/tests/6e.in, + trunk/fuse/z80/tests/6e.out, trunk/fuse/z80/tests/6f.in, + trunk/fuse/z80/tests/6f.out, trunk/fuse/z80/tests/70.in, + trunk/fuse/z80/tests/70.out, trunk/fuse/z80/tests/71.in, + trunk/fuse/z80/tests/71.out, trunk/fuse/z80/tests/72.in, + trunk/fuse/z80/tests/72.out, trunk/fuse/z80/tests/73.in, + trunk/fuse/z80/tests/73.out, trunk/fuse/z80/tests/74.in, + trunk/fuse/z80/tests/74.out, trunk/fuse/z80/tests/75.in, + trunk/fuse/z80/tests/75.out, trunk/fuse/z80/tests/76.in, + trunk/fuse/z80/tests/76.out, trunk/fuse/z80/tests/77.in, + trunk/fuse/z80/tests/77.out, trunk/fuse/z80/tests/78.in, + trunk/fuse/z80/tests/78.out, trunk/fuse/z80/tests/79.in, + trunk/fuse/z80/tests/79.out, trunk/fuse/z80/tests/7a.in, + trunk/fuse/z80/tests/7a.out, trunk/fuse/z80/tests/7b.in, + trunk/fuse/z80/tests/7b.out, trunk/fuse/z80/tests/7c.in, + trunk/fuse/z80/tests/7c.out, trunk/fuse/z80/tests/7d.in, + trunk/fuse/z80/tests/7d.out, trunk/fuse/z80/tests/7e.in, + trunk/fuse/z80/tests/7e.out, trunk/fuse/z80/tests/7f.in, + trunk/fuse/z80/tests/7f.out, trunk/fuse/z80/tests/80.in, + trunk/fuse/z80/tests/80.out, trunk/fuse/z80/tests/81.in, + trunk/fuse/z80/tests/81.out, trunk/fuse/z80/tests/82.in, + trunk/fuse/z80/tests/82.out, trunk/fuse/z80/tests/83.in, + trunk/fuse/z80/tests/83.out, trunk/fuse/z80/tests/84.in, + trunk/fuse/z80/tests/84.out, trunk/fuse/z80/tests/85.in, + trunk/fuse/z80/tests/85.out, trunk/fuse/z80/tests/86.in, + trunk/fuse/z80/tests/86.out, trunk/fuse/z80/tests/87.in, + trunk/fuse/z80/tests/87.out, trunk/fuse/z80/tests/88.in, + trunk/fuse/z80/tests/88.out, trunk/fuse/z80/tests/89.in, + trunk/fuse/z80/tests/89.out, trunk/fuse/z80/tests/8a.in, + trunk/fuse/z80/tests/8a.out, trunk/fuse/z80/tests/8b.in, + trunk/fuse/z80/tests/8b.out, trunk/fuse/z80/tests/8c.in, + trunk/fuse/z80/tests/8c.out, trunk/fuse/z80/tests/8d.in, + trunk/fuse/z80/tests/8d.out, trunk/fuse/z80/tests/8e.in, + trunk/fuse/z80/tests/8e.out, trunk/fuse/z80/tests/8f.in, + trunk/fuse/z80/tests/8f.out, trunk/fuse/z80/tests/90.in, + trunk/fuse/z80/tests/90.out, trunk/fuse/z80/tests/91.in, + trunk/fuse/z80/tests/91.out, trunk/fuse/z80/tests/92.in, + trunk/fuse/z80/tests/92.out, trunk/fuse/z80/tests/93.in, + trunk/fuse/z80/tests/93.out, trunk/fuse/z80/tests/94.in, + trunk/fuse/z80/tests/94.out, trunk/fuse/z80/tests/95.in, + trunk/fuse/z80/tests/95.out, trunk/fuse/z80/tests/96.in, + trunk/fuse/z80/tests/96.out, trunk/fuse/z80/tests/97.in, + trunk/fuse/z80/tests/97.out, trunk/fuse/z80/tests/98.in, + trunk/fuse/z80/tests/98.out, trunk/fuse/z80/tests/99.in, + trunk/fuse/z80/tests/99.out, trunk/fuse/z80/tests/9a.in, + trunk/fuse/z80/tests/9a.out, trunk/fuse/z80/tests/9b.in, + trunk/fuse/z80/tests/9b.out, trunk/fuse/z80/tests/9c.in, + trunk/fuse/z80/tests/9c.out, trunk/fuse/z80/tests/9d.in, + trunk/fuse/z80/tests/9d.out, trunk/fuse/z80/tests/9e.in, + trunk/fuse/z80/tests/9e.out, trunk/fuse/z80/tests/9f.in, + trunk/fuse/z80/tests/9f.out, trunk/fuse/z80/tests/Makefile.am, + trunk/fuse/z80/tests/README, trunk/fuse/z80/tests/a0.in, + trunk/fuse/z80/tests/a0.out, trunk/fuse/z80/tests/a1.in, + trunk/fuse/z80/tests/a1.out, trunk/fuse/z80/tests/a2.in, + trunk/fuse/z80/tests/a2.out, trunk/fuse/z80/tests/a3.in, + trunk/fuse/z80/tests/a3.out, trunk/fuse/z80/tests/a4.in, + trunk/fuse/z80/tests/a4.out, trunk/fuse/z80/tests/a5.in, + trunk/fuse/z80/tests/a5.out, trunk/fuse/z80/tests/a6.in, + trunk/fuse/z80/tests/a6.out, trunk/fuse/z80/tests/a7.in, + trunk/fuse/z80/tests/a7.out, trunk/fuse/z80/tests/a8.in, + trunk/fuse/z80/tests/a8.out, trunk/fuse/z80/tests/a9.in, + trunk/fuse/z80/tests/a9.out, trunk/fuse/z80/tests/aa.in, + trunk/fuse/z80/tests/aa.out, trunk/fuse/z80/tests/ab.in, + trunk/fuse/z80/tests/ab.out, trunk/fuse/z80/tests/ac.in, + trunk/fuse/z80/tests/ac.out, trunk/fuse/z80/tests/ad.in, + trunk/fuse/z80/tests/ad.out, trunk/fuse/z80/tests/ae.in, + trunk/fuse/z80/tests/ae.out, trunk/fuse/z80/tests/af.in, + trunk/fuse/z80/tests/af.out, trunk/fuse/z80/tests/b0.in, + trunk/fuse/z80/tests/b0.out, trunk/fuse/z80/tests/b1.in, + trunk/fuse/z80/tests/b1.out, trunk/fuse/z80/tests/b2.in, + trunk/fuse/z80/tests/b2.out, trunk/fuse/z80/tests/b3.in, + trunk/fuse/z80/tests/b3.out, trunk/fuse/z80/tests/b4.in, + trunk/fuse/z80/tests/b4.out, trunk/fuse/z80/tests/b5.in, + trunk/fuse/z80/tests/b5.out, trunk/fuse/z80/tests/b6.in, + trunk/fuse/z80/tests/b6.out, trunk/fuse/z80/tests/b7.in, + trunk/fuse/z80/tests/b7.out, trunk/fuse/z80/tests/b8.in, + trunk/fuse/z80/tests/b8.out, trunk/fuse/z80/tests/b9.in, + trunk/fuse/z80/tests/b9.out, trunk/fuse/z80/tests/ba.in, + trunk/fuse/z80/tests/ba.out, trunk/fuse/z80/tests/bb.in, + trunk/fuse/z80/tests/bb.out, trunk/fuse/z80/tests/bc.in, + trunk/fuse/z80/tests/bc.out, trunk/fuse/z80/tests/bd.in, + trunk/fuse/z80/tests/bd.out, trunk/fuse/z80/tests/be.in, + trunk/fuse/z80/tests/be.out, trunk/fuse/z80/tests/bf.in, + trunk/fuse/z80/tests/bf.out, trunk/fuse/z80/tests/c0_1.in, + trunk/fuse/z80/tests/c0_1.out, trunk/fuse/z80/tests/c0_2.in, + trunk/fuse/z80/tests/c0_2.out, trunk/fuse/z80/tests/c1.in, + trunk/fuse/z80/tests/c1.out, trunk/fuse/z80/tests/c2_1.in, + trunk/fuse/z80/tests/c2_1.out, trunk/fuse/z80/tests/c2_2.in, + trunk/fuse/z80/tests/c2_2.out, trunk/fuse/z80/tests/c3.in, + trunk/fuse/z80/tests/c3.out, trunk/fuse/z80/tests/c4_1.in, + trunk/fuse/z80/tests/c4_1.out, trunk/fuse/z80/tests/c4_2.in, + trunk/fuse/z80/tests/c4_2.out, trunk/fuse/z80/tests/c5.in, + trunk/fuse/z80/tests/c5.out, trunk/fuse/z80/tests/c6.in, + trunk/fuse/z80/tests/c6.out, trunk/fuse/z80/tests/c7.in, + trunk/fuse/z80/tests/c7.out, trunk/fuse/z80/tests/c8_1.in, + trunk/fuse/z80/tests/c8_1.out, trunk/fuse/z80/tests/c8_2.in, + trunk/fuse/z80/tests/c8_2.out, trunk/fuse/z80/tests/c9.in, + trunk/fuse/z80/tests/c9.out, trunk/fuse/z80/tests/ca_1.in, + trunk/fuse/z80/tests/ca_1.out, trunk/fuse/z80/tests/ca_2.in, + trunk/fuse/z80/tests/ca_2.out, trunk/fuse/z80/tests/cb00.in, + trunk/fuse/z80/tests/cb00.out, trunk/fuse/z80/tests/cb01.in, + trunk/fuse/z80/tests/cb01.out, trunk/fuse/z80/tests/cb02.in, + trunk/fuse/z80/tests/cb02.out, trunk/fuse/z80/tests/cb03.in, + trunk/fuse/z80/tests/cb03.out, trunk/fuse/z80/tests/cb04.in, + trunk/fuse/z80/tests/cb04.out, trunk/fuse/z80/tests/cb05.in, + trunk/fuse/z80/tests/cb05.out, trunk/fuse/z80/tests/cb06.in, + trunk/fuse/z80/tests/cb06.out, trunk/fuse/z80/tests/cb07.in, + trunk/fuse/z80/tests/cb07.out, trunk/fuse/z80/tests/cb08.in, + trunk/fuse/z80/tests/cb08.out, trunk/fuse/z80/tests/cb09.in, + trunk/fuse/z80/tests/cb09.out, trunk/fuse/z80/tests/cb0a.in, + trunk/fuse/z80/tests/cb0a.out, trunk/fuse/z80/tests/cb0b.in, + trunk/fuse/z80/tests/cb0b.out, trunk/fuse/z80/tests/cb0c.in, + trunk/fuse/z80/tests/cb0c.out, trunk/fuse/z80/tests/cb0d.in, + trunk/fuse/z80/tests/cb0d.out, trunk/fuse/z80/tests/cb0e.in, + trunk/fuse/z80/tests/cb0e.out, trunk/fuse/z80/tests/cb0f.in, + trunk/fuse/z80/tests/cb0f.out, trunk/fuse/z80/tests/cb10.in, + trunk/fuse/z80/tests/cb10.out, trunk/fuse/z80/tests/cb11.in, + trunk/fuse/z80/tests/cb11.out, trunk/fuse/z80/tests/cb12.in, + trunk/fuse/z80/tests/cb12.out, trunk/fuse/z80/tests/cb13.in, + trunk/fuse/z80/tests/cb13.out, trunk/fuse/z80/tests/cb14.in, + trunk/fuse/z80/tests/cb14.out, trunk/fuse/z80/tests/cb15.in, + trunk/fuse/z80/tests/cb15.out, trunk/fuse/z80/tests/cb16.in, + trunk/fuse/z80/tests/cb16.out, trunk/fuse/z80/tests/cb17.in, + trunk/fuse/z80/tests/cb17.out, trunk/fuse/z80/tests/cb18.in, + trunk/fuse/z80/tests/cb18.out, trunk/fuse/z80/tests/cb19.in, + trunk/fuse/z80/tests/cb19.out, trunk/fuse/z80/tests/cb1a.in, + trunk/fuse/z80/tests/cb1a.out, trunk/fuse/z80/tests/cb1b.in, + trunk/fuse/z80/tests/cb1b.out, trunk/fuse/z80/tests/cb1c.in, + trunk/fuse/z80/tests/cb1c.out, trunk/fuse/z80/tests/cb1d.in, + trunk/fuse/z80/tests/cb1d.out, trunk/fuse/z80/tests/cb1e.in, + trunk/fuse/z80/tests/cb1e.out, trunk/fuse/z80/tests/cb1f.in, + trunk/fuse/z80/tests/cb1f.out, trunk/fuse/z80/tests/cb20.in, + trunk/fuse/z80/tests/cb20.out, trunk/fuse/z80/tests/cb21.in, + trunk/fuse/z80/tests/cb21.out, trunk/fuse/z80/tests/cb22.in, + trunk/fuse/z80/tests/cb22.out, trunk/fuse/z80/tests/cb23.in, + trunk/fuse/z80/tests/cb23.out, trunk/fuse/z80/tests/cb24.in, + trunk/fuse/z80/tests/cb24.out, trunk/fuse/z80/tests/cb25.in, + trunk/fuse/z80/tests/cb25.out, trunk/fuse/z80/tests/cb26.in, + trunk/fuse/z80/tests/cb26.out, trunk/fuse/z80/tests/cb27.in, + trunk/fuse/z80/tests/cb27.out, trunk/fuse/z80/tests/cb28.in, + trunk/fuse/z80/tests/cb28.out, trunk/fuse/z80/tests/cb29.in, + trunk/fuse/z80/tests/cb29.out, trunk/fuse/z80/tests/cb2a.in, + trunk/fuse/z80/tests/cb2a.out, trunk/fuse/z80/tests/cb2b.in, + trunk/fuse/z80/tests/cb2b.out, trunk/fuse/z80/tests/cb2c.in, + trunk/fuse/z80/tests/cb2c.out, trunk/fuse/z80/tests/cb2d.in, + trunk/fuse/z80/tests/cb2d.out, trunk/fuse/z80/tests/cb2e.in, + trunk/fuse/z80/tests/cb2e.out, trunk/fuse/z80/tests/cb2f.in, + trunk/fuse/z80/tests/cb2f.out, trunk/fuse/z80/tests/cb30.in, + trunk/fuse/z80/tests/cb30.out, trunk/fuse/z80/tests/cb31.in, + trunk/fuse/z80/tests/cb31.out, trunk/fuse/z80/tests/cb32.in, + trunk/fuse/z80/tests/cb32.out, trunk/fuse/z80/tests/cb33.in, + trunk/fuse/z80/tests/cb33.out, trunk/fuse/z80/tests/cb34.in, + trunk/fuse/z80/tests/cb34.out, trunk/fuse/z80/tests/cb35.in, + trunk/fuse/z80/tests/cb35.out, trunk/fuse/z80/tests/cb36.in, + trunk/fuse/z80/tests/cb36.out, trunk/fuse/z80/tests/cb37.in, + trunk/fuse/z80/tests/cb37.out, trunk/fuse/z80/tests/cb38.in, + trunk/fuse/z80/tests/cb38.out, trunk/fuse/z80/tests/cb39.in, + trunk/fuse/z80/tests/cb39.out, trunk/fuse/z80/tests/cb3a.in, + trunk/fuse/z80/tests/cb3a.out, trunk/fuse/z80/tests/cb3b.in, + trunk/fuse/z80/tests/cb3b.out, trunk/fuse/z80/tests/cb3c.in, + trunk/fuse/z80/tests/cb3c.out, trunk/fuse/z80/tests/cb3d.in, + trunk/fuse/z80/tests/cb3d.out, trunk/fuse/z80/tests/cb3e.in, + trunk/fuse/z80/tests/cb3e.out, trunk/fuse/z80/tests/cb3f.in, + trunk/fuse/z80/tests/cb3f.out, trunk/fuse/z80/tests/cb40.in, + trunk/fuse/z80/tests/cb40.out, trunk/fuse/z80/tests/cb41.in, + trunk/fuse/z80/tests/cb41.out, trunk/fuse/z80/tests/cb42.in, + trunk/fuse/z80/tests/cb42.out, trunk/fuse/z80/tests/cb43.in, + trunk/fuse/z80/tests/cb43.out, trunk/fuse/z80/tests/cb44.in, + trunk/fuse/z80/tests/cb44.out, trunk/fuse/z80/tests/cb45.in, + trunk/fuse/z80/tests/cb45.out, trunk/fuse/z80/tests/cb46.in, + trunk/fuse/z80/tests/cb46.out, trunk/fuse/z80/tests/cb47.in, + trunk/fuse/z80/tests/cb47.out, trunk/fuse/z80/tests/cb47_1.in, + trunk/fuse/z80/tests/cb47_1.out, trunk/fuse/z80/tests/cb48.in, + trunk/fuse/z80/tests/cb48.out, trunk/fuse/z80/tests/cb49.in, + trunk/fuse/z80/tests/cb49.out, trunk/fuse/z80/tests/cb4a.in, + trunk/fuse/z80/tests/cb4a.out, trunk/fuse/z80/tests/cb4b.in, + trunk/fuse/z80/tests/cb4b.out, trunk/fuse/z80/tests/cb4c.in, + trunk/fuse/z80/tests/cb4c.out, trunk/fuse/z80/tests/cb4d.in, + trunk/fuse/z80/tests/cb4d.out, trunk/fuse/z80/tests/cb4e.in, + trunk/fuse/z80/tests/cb4e.out, trunk/fuse/z80/tests/cb4f.in, + trunk/fuse/z80/tests/cb4f.out, trunk/fuse/z80/tests/cb4f_1.in, + trunk/fuse/z80/tests/cb4f_1.out, trunk/fuse/z80/tests/cb50.in, + trunk/fuse/z80/tests/cb50.out, trunk/fuse/z80/tests/cb51.in, + trunk/fuse/z80/tests/cb51.out, trunk/fuse/z80/tests/cb52.in, + trunk/fuse/z80/tests/cb52.out, trunk/fuse/z80/tests/cb53.in, + trunk/fuse/z80/tests/cb53.out, trunk/fuse/z80/tests/cb54.in, + trunk/fuse/z80/tests/cb54.out, trunk/fuse/z80/tests/cb55.in, + trunk/fuse/z80/tests/cb55.out, trunk/fuse/z80/tests/cb56.in, + trunk/fuse/z80/tests/cb56.out, trunk/fuse/z80/tests/cb57.in, + trunk/fuse/z80/tests/cb57.out, trunk/fuse/z80/tests/cb57_1.in, + trunk/fuse/z80/tests/cb57_1.out, trunk/fuse/z80/tests/cb58.in, + trunk/fuse/z80/tests/cb58.out, trunk/fuse/z80/tests/cb59.in, + trunk/fuse/z80/tests/cb59.out, trunk/fuse/z80/tests/cb5a.in, + trunk/fuse/z80/tests/cb5a.out, trunk/fuse/z80/tests/cb5b.in, + trunk/fuse/z80/tests/cb5b.out, trunk/fuse/z80/tests/cb5c.in, + trunk/fuse/z80/tests/cb5c.out, trunk/fuse/z80/tests/cb5d.in, + trunk/fuse/z80/tests/cb5d.out, trunk/fuse/z80/tests/cb5e.in, + trunk/fuse/z80/tests/cb5e.out, trunk/fuse/z80/tests/cb5f.in, + trunk/fuse/z80/tests/cb5f.out, trunk/fuse/z80/tests/cb5f_1.in, + trunk/fuse/z80/tests/cb5f_1.out, trunk/fuse/z80/tests/cb60.in, + trunk/fuse/z80/tests/cb60.out, trunk/fuse/z80/tests/cb61.in, + trunk/fuse/z80/tests/cb61.out, trunk/fuse/z80/tests/cb62.in, + trunk/fuse/z80/tests/cb62.out, trunk/fuse/z80/tests/cb63.in, + trunk/fuse/z80/tests/cb63.out, trunk/fuse/z80/tests/cb64.in, + trunk/fuse/z80/tests/cb64.out, trunk/fuse/z80/tests/cb65.in, + trunk/fuse/z80/tests/cb65.out, trunk/fuse/z80/tests/cb66.in, + trunk/fuse/z80/tests/cb66.out, trunk/fuse/z80/tests/cb67.in, + trunk/fuse/z80/tests/cb67.out, trunk/fuse/z80/tests/cb67_1.in, + trunk/fuse/z80/tests/cb67_1.out, trunk/fuse/z80/tests/cb68.in, + trunk/fuse/z80/tests/cb68.out, trunk/fuse/z80/tests/cb69.in, + trunk/fuse/z80/tests/cb69.out, trunk/fuse/z80/tests/cb6a.in, + trunk/fuse/z80/tests/cb6a.out, trunk/fuse/z80/tests/cb6b.in, + trunk/fuse/z80/tests/cb6b.out, trunk/fuse/z80/tests/cb6c.in, + trunk/fuse/z80/tests/cb6c.out, trunk/fuse/z80/tests/cb6d.in, + trunk/fuse/z80/tests/cb6d.out, trunk/fuse/z80/tests/cb6e.in, + trunk/fuse/z80/tests/cb6e.out, trunk/fuse/z80/tests/cb6f.in, + trunk/fuse/z80/tests/cb6f.out, trunk/fuse/z80/tests/cb6f_1.in, + trunk/fuse/z80/tests/cb6f_1.out, trunk/fuse/z80/tests/cb70.in, + trunk/fuse/z80/tests/cb70.out, trunk/fuse/z80/tests/cb71.in, + trunk/fuse/z80/tests/cb71.out, trunk/fuse/z80/tests/cb72.in, + trunk/fuse/z80/tests/cb72.out, trunk/fuse/z80/tests/cb73.in, + trunk/fuse/z80/tests/cb73.out, trunk/fuse/z80/tests/cb74.in, + trunk/fuse/z80/tests/cb74.out, trunk/fuse/z80/tests/cb75.in, + trunk/fuse/z80/tests/cb75.out, trunk/fuse/z80/tests/cb76.in, + trunk/fuse/z80/tests/cb76.out, trunk/fuse/z80/tests/cb77.in, + trunk/fuse/z80/tests/cb77.out, trunk/fuse/z80/tests/cb77_1.in, + trunk/fuse/z80/tests/cb77_1.out, trunk/fuse/z80/tests/cb78.in, + trunk/fuse/z80/tests/cb78.out, trunk/fuse/z80/tests/cb79.in, + trunk/fuse/z80/tests/cb79.out, trunk/fuse/z80/tests/cb7a.in, + trunk/fuse/z80/tests/cb7a.out, trunk/fuse/z80/tests/cb7b.in, + trunk/fuse/z80/tests/cb7b.out, trunk/fuse/z80/tests/cb7c.in, + trunk/fuse/z80/tests/cb7c.out, trunk/fuse/z80/tests/cb7d.in, + trunk/fuse/z80/tests/cb7d.out, trunk/fuse/z80/tests/cb7e.in, + trunk/fuse/z80/tests/cb7e.out, trunk/fuse/z80/tests/cb7f.in, + trunk/fuse/z80/tests/cb7f.out, trunk/fuse/z80/tests/cb7f_1.in, + trunk/fuse/z80/tests/cb7f_1.out, trunk/fuse/z80/tests/cb80.in, + trunk/fuse/z80/tests/cb80.out, trunk/fuse/z80/tests/cb81.in, + trunk/fuse/z80/tests/cb81.out, trunk/fuse/z80/tests/cb82.in, + trunk/fuse/z80/tests/cb82.out, trunk/fuse/z80/tests/cb83.in, + trunk/fuse/z80/tests/cb83.out, trunk/fuse/z80/tests/cb84.in, + trunk/fuse/z80/tests/cb84.out, trunk/fuse/z80/tests/cb85.in, + trunk/fuse/z80/tests/cb85.out, trunk/fuse/z80/tests/cb86.in, + trunk/fuse/z80/tests/cb86.out, trunk/fuse/z80/tests/cb87.in, + trunk/fuse/z80/tests/cb87.out, trunk/fuse/z80/tests/cb88.in, + trunk/fuse/z80/tests/cb88.out, trunk/fuse/z80/tests/cb89.in, + trunk/fuse/z80/tests/cb89.out, trunk/fuse/z80/tests/cb8a.in, + trunk/fuse/z80/tests/cb8a.out, trunk/fuse/z80/tests/cb8b.in, + trunk/fuse/z80/tests/cb8b.out, trunk/fuse/z80/tests/cb8c.in, + trunk/fuse/z80/tests/cb8c.out, trunk/fuse/z80/tests/cb8d.in, + trunk/fuse/z80/tests/cb8d.out, trunk/fuse/z80/tests/cb8e.in, + trunk/fuse/z80/tests/cb8e.out, trunk/fuse/z80/tests/cb8f.in, + trunk/fuse/z80/tests/cb8f.out, trunk/fuse/z80/tests/cb90.in, + trunk/fuse/z80/tests/cb90.out, trunk/fuse/z80/tests/cb91.in, + trunk/fuse/z80/tests/cb91.out, trunk/fuse/z80/tests/cb92.in, + trunk/fuse/z80/tests/cb92.out, trunk/fuse/z80/tests/cb93.in, + trunk/fuse/z80/tests/cb93.out, trunk/fuse/z80/tests/cb94.in, + trunk/fuse/z80/tests/cb94.out, trunk/fuse/z80/tests/cb95.in, + trunk/fuse/z80/tests/cb95.out, trunk/fuse/z80/tests/cb96.in, + trunk/fuse/z80/tests/cb96.out, trunk/fuse/z80/tests/cb97.in, + trunk/fuse/z80/tests/cb97.out, trunk/fuse/z80/tests/cb98.in, + trunk/fuse/z80/tests/cb98.out, trunk/fuse/z80/tests/cb99.in, + trunk/fuse/z80/tests/cb99.out, trunk/fuse/z80/tests/cb9a.in, + trunk/fuse/z80/tests/cb9a.out, trunk/fuse/z80/tests/cb9b.in, + trunk/fuse/z80/tests/cb9b.out, trunk/fuse/z80/tests/cb9c.in, + trunk/fuse/z80/tests/cb9c.out, trunk/fuse/z80/tests/cb9d.in, + trunk/fuse/z80/tests/cb9d.out, trunk/fuse/z80/tests/cb9e.in, + trunk/fuse/z80/tests/cb9e.out, trunk/fuse/z80/tests/cb9f.in, + trunk/fuse/z80/tests/cb9f.out, trunk/fuse/z80/tests/cba0.in, + trunk/fuse/z80/tests/cba0.out, trunk/fuse/z80/tests/cba1.in, + trunk/fuse/z80/tests/cba1.out, trunk/fuse/z80/tests/cba2.in, + trunk/fuse/z80/tests/cba2.out, trunk/fuse/z80/tests/cba3.in, + trunk/fuse/z80/tests/cba3.out, trunk/fuse/z80/tests/cba4.in, + trunk/fuse/z80/tests/cba4.out, trunk/fuse/z80/tests/cba5.in, + trunk/fuse/z80/tests/cba5.out, trunk/fuse/z80/tests/cba6.in, + trunk/fuse/z80/tests/cba6.out, trunk/fuse/z80/tests/cba7.in, + trunk/fuse/z80/tests/cba7.out, trunk/fuse/z80/tests/cba8.in, + trunk/fuse/z80/tests/cba8.out, trunk/fuse/z80/tests/cba9.in, + trunk/fuse/z80/tests/cba9.out, trunk/fuse/z80/tests/cbaa.in, + trunk/fuse/z80/tests/cbaa.out, trunk/fuse/z80/tests/cbab.in, + trunk/fuse/z80/tests/cbab.out, trunk/fuse/z80/tests/cbac.in, + trunk/fuse/z80/tests/cbac.out, trunk/fuse/z80/tests/cbad.in, + trunk/fuse/z80/tests/cbad.out, trunk/fuse/z80/tests/cbae.in, + trunk/fuse/z80/tests/cbae.out, trunk/fuse/z80/tests/cbaf.in, + trunk/fuse/z80/tests/cbaf.out, trunk/fuse/z80/tests/cbb0.in, + trunk/fuse/z80/tests/cbb0.out, trunk/fuse/z80/tests/cbb1.in, + trunk/fuse/z80/tests/cbb1.out, trunk/fuse/z80/tests/cbb2.in, + trunk/fuse/z80/tests/cbb2.out, trunk/fuse/z80/tests/cbb3.in, + trunk/fuse/z80/tests/cbb3.out, trunk/fuse/z80/tests/cbb4.in, + trunk/fuse/z80/tests/cbb4.out, trunk/fuse/z80/tests/cbb5.in, + trunk/fuse/z80/tests/cbb5.out, trunk/fuse/z80/tests/cbb6.in, + trunk/fuse/z80/tests/cbb6.out, trunk/fuse/z80/tests/cbb7.in, + trunk/fuse/z80/tests/cbb7.... [truncated message content] |
From: <fr...@us...> - 2006-12-17 01:32:32
|
Revision: 245 http://svn.sourceforge.net/fuse-for-macosx/?rev=245&view=rev Author: fredm Date: 2006-12-16 17:32:33 -0800 (Sat, 16 Dec 2006) Log Message: ----------- Make tag for 20061126 release. Added Paths: ----------- tags/FuseForMacOSX-20061126/ Copied: tags/FuseForMacOSX-20061126 (from rev 244, trunk) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2006-12-17 01:32:01
|
Revision: 244 http://svn.sourceforge.net/fuse-for-macosx/?rev=244&view=rev Author: fredm Date: 2006-12-16 17:32:00 -0800 (Sat, 16 Dec 2006) Log Message: ----------- Forgot to update version strings. Removed Paths: ------------- tags/FuseForMacOSX-20061126/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2006-12-17 01:26:29
|
Revision: 243 http://svn.sourceforge.net/fuse-for-macosx/?rev=243&view=rev Author: fredm Date: 2006-12-16 17:26:29 -0800 (Sat, 16 Dec 2006) Log Message: ----------- Move version strings to 20061129. Modified Paths: -------------- trunk/fuse/fusepb/English.lproj/InfoPlist.strings trunk/fuse/fusepb/Info-Fuse.plist Modified: trunk/fuse/fusepb/English.lproj/InfoPlist.strings =================================================================== (Binary files differ) Modified: trunk/fuse/fusepb/Info-Fuse.plist =================================================================== --- trunk/fuse/fusepb/Info-Fuse.plist 2006-12-17 01:13:03 UTC (rev 242) +++ trunk/fuse/fusepb/Info-Fuse.plist 2006-12-17 01:26:29 UTC (rev 243) @@ -361,11 +361,11 @@ <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleShortVersionString</key> - <string>20061114</string> + <string>20061129</string> <key>CFBundleSignature</key> <string>FUSE</string> <key>CFBundleVersion</key> - <string>20061114</string> + <string>20061129</string> <key>NSMainNibFile</key> <string>SDLMain</string> <key>NSPrincipalClass</key> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2006-12-17 01:13:04
|
Revision: 242 http://svn.sourceforge.net/fuse-for-macosx/?rev=242&view=rev Author: fredm Date: 2006-12-16 17:13:03 -0800 (Sat, 16 Dec 2006) Log Message: ----------- New beta release for 20061126 version. Added Paths: ----------- tags/FuseForMacOSX-20061126/ Copied: tags/FuseForMacOSX-20061126 (from rev 241, trunk) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2006-12-04 11:39:09
|
Revision: 241 http://svn.sourceforge.net/fuse-for-macosx/?rev=241&view=rev Author: fredm Date: 2006-12-04 03:39:09 -0800 (Mon, 04 Dec 2006) Log Message: ----------- Move to having a clear function to call to run a frame worth of emulation. Modified Paths: -------------- branches/fusegl/fuse/event.c branches/fusegl/fuse/event.h branches/fusegl/fuse/fuse.cpp Modified: branches/fusegl/fuse/event.c =================================================================== --- branches/fusegl/fuse/event.c 2006-11-26 11:24:42 UTC (rev 240) +++ branches/fusegl/fuse/event.c 2006-12-04 11:39:09 UTC (rev 241) @@ -53,6 +53,9 @@ /* When will the next event happen? */ libspectrum_dword event_next_event; +/* We are at the end of a frame */ +int event_frame_end; + /* The actual list of events */ static GSList* event_list; @@ -80,6 +83,7 @@ event_list=NULL; event_free=NULL; event_next_event=event_no_events; + event_frame_end=0; return 0; } @@ -120,6 +124,34 @@ : a->type - b->type; } +/* Do a frame end event */ +void +event_do_frame_end(void) +{ + if( rzx_playback ) event_force_events(); + rzx_frame(); + psg_frame(); + spectrum_frame(); + z80_interrupt(); + ui_joystick_poll(); + timer_estimate_speed(); + debugger_add_time_events(); + ui_event(); + ui_error_frame(); + event_frame_end=0; +} + +/* Do a single frame */ +void +event_do_frame(void) +{ + while( !event_frame_end ) { + z80_do_opcodes(); + event_do_events(); + } + event_do_frame_end(); +} + /* Do all events which have passed */ int event_do_events(void) { @@ -146,16 +178,7 @@ break; case EVENT_TYPE_FRAME: - if( rzx_playback ) event_force_events(); - rzx_frame(); - psg_frame(); - spectrum_frame(); - z80_interrupt(); - ui_joystick_poll(); - timer_estimate_speed(); - debugger_add_time_events(); - ui_event(); - ui_error_frame(); + event_frame_end = 1; break; case EVENT_TYPE_INTERRUPT: Modified: branches/fusegl/fuse/event.h =================================================================== --- branches/fusegl/fuse/event.h 2006-11-26 11:24:42 UTC (rev 240) +++ branches/fusegl/fuse/event.h 2006-12-04 11:39:09 UTC (rev 241) @@ -60,6 +60,9 @@ /* When will the next event happen? */ extern libspectrum_dword event_next_event; +/* We are at the end of a frame */ +extern int event_frame_end; + /* Set up the event list */ int event_init(void); @@ -69,6 +72,12 @@ /* Do all events which have passed */ int event_do_events(void); +/* Do a frame end event */ +void event_do_frame_end(void); + +/* Do a single frame */ +void event_do_frame(void); + /* Called at end of frame to reduce T-state count of all entries */ int event_frame( libspectrum_dword tstates_per_frame ); Modified: branches/fusegl/fuse/fuse.cpp =================================================================== --- branches/fusegl/fuse/fuse.cpp 2006-11-26 11:24:42 UTC (rev 240) +++ branches/fusegl/fuse/fuse.cpp 2006-12-04 11:39:09 UTC (rev 241) @@ -150,8 +150,7 @@ settings_current.show_version ) return 0; while( !fuse_exiting ) { - z80_do_opcodes(); - event_do_events(); + event_do_frame(); } fuse_end(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2006-11-26 11:24:44
|
Revision: 240 http://svn.sourceforge.net/fuse-for-macosx/?rev=240&view=rev Author: fredm Date: 2006-11-26 03:24:42 -0800 (Sun, 26 Nov 2006) Log Message: ----------- Fix joystick support. Modified Paths: -------------- trunk/fuse/fusepb/controllers/PreferencesController.m trunk/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib trunk/fuse/ui/sdl/sdljoystick.c Modified: trunk/fuse/fusepb/controllers/PreferencesController.m =================================================================== --- trunk/fuse/fusepb/controllers/PreferencesController.m 2006-11-26 08:44:30 UTC (rev 239) +++ trunk/fuse/fusepb/controllers/PreferencesController.m 2006-11-26 11:24:42 UTC (rev 240) @@ -121,6 +121,9 @@ settings_get_rom_array( &settings_current, machineRoms ); [machineRoms release]; + fuse_joystick_end(); + fuse_joystick_init(); + fuse_emulation_unpause(); } Modified: trunk/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib =================================================================== --- trunk/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib 2006-11-26 08:44:30 UTC (rev 239) +++ trunk/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib 2006-11-26 11:24:42 UTC (rev 240) @@ -11,32 +11,32 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>1528</integer> + <integer>1532</integer> </dict> <key>NSAccessibilityConnectors</key> <dict> <key>CF$UID</key> - <integer>1525</integer> + <integer>1529</integer> </dict> <key>NSAccessibilityOidsKeys</key> <dict> <key>CF$UID</key> - <integer>1526</integer> + <integer>1530</integer> </dict> <key>NSAccessibilityOidsValues</key> <dict> <key>CF$UID</key> - <integer>1527</integer> + <integer>1531</integer> </dict> <key>NSClassesKeys</key> <dict> <key>CF$UID</key> - <integer>1227</integer> + <integer>1231</integer> </dict> <key>NSClassesValues</key> <dict> <key>CF$UID</key> - <integer>1228</integer> + <integer>1232</integer> </dict> <key>NSConnections</key> <dict> @@ -56,34 +56,34 @@ <key>NSNamesKeys</key> <dict> <key>CF$UID</key> - <integer>1164</integer> + <integer>1168</integer> </dict> <key>NSNamesValues</key> <dict> <key>CF$UID</key> - <integer>1165</integer> + <integer>1169</integer> </dict> <key>NSNextOid</key> - <integer>1012</integer> + <integer>1014</integer> <key>NSObjectsKeys</key> <dict> <key>CF$UID</key> - <integer>1157</integer> + <integer>1161</integer> </dict> <key>NSObjectsValues</key> <dict> <key>CF$UID</key> - <integer>1163</integer> + <integer>1167</integer> </dict> <key>NSOidsKeys</key> <dict> <key>CF$UID</key> - <integer>1229</integer> + <integer>1233</integer> </dict> <key>NSOidsValues</key> <dict> <key>CF$UID</key> - <integer>1230</integer> + <integer>1234</integer> </dict> <key>NSRoot</key> <dict> @@ -142,7 +142,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>73</integer> + <integer>75</integer> </dict> <key>NS.objects</key> <array> @@ -164,18 +164,14 @@ </dict> <dict> <key>CF$UID</key> - <integer>826</integer> + <integer>829</integer> </dict> <dict> <key>CF$UID</key> - <integer>827</integer> + <integer>830</integer> </dict> <dict> <key>CF$UID</key> - <integer>831</integer> - </dict> - <dict> - <key>CF$UID</key> <integer>834</integer> </dict> <dict> @@ -256,19 +252,19 @@ </dict> <dict> <key>CF$UID</key> - <integer>899</integer> + <integer>894</integer> </dict> <dict> <key>CF$UID</key> - <integer>906</integer> + <integer>902</integer> </dict> <dict> <key>CF$UID</key> - <integer>908</integer> + <integer>909</integer> </dict> <dict> <key>CF$UID</key> - <integer>910</integer> + <integer>911</integer> </dict> <dict> <key>CF$UID</key> @@ -276,39 +272,39 @@ </dict> <dict> <key>CF$UID</key> - <integer>915</integer> + <integer>916</integer> </dict> <dict> <key>CF$UID</key> - <integer>917</integer> + <integer>918</integer> </dict> <dict> <key>CF$UID</key> - <integer>919</integer> + <integer>920</integer> </dict> <dict> <key>CF$UID</key> - <integer>921</integer> + <integer>922</integer> </dict> <dict> <key>CF$UID</key> - <integer>923</integer> + <integer>924</integer> </dict> <dict> <key>CF$UID</key> - <integer>925</integer> + <integer>926</integer> </dict> <dict> <key>CF$UID</key> - <integer>927</integer> + <integer>928</integer> </dict> <dict> <key>CF$UID</key> - <integer>929</integer> + <integer>930</integer> </dict> <dict> <key>CF$UID</key> - <integer>935</integer> + <integer>932</integer> </dict> <dict> <key>CF$UID</key> @@ -316,15 +312,15 @@ </dict> <dict> <key>CF$UID</key> - <integer>939</integer> + <integer>941</integer> </dict> <dict> <key>CF$UID</key> - <integer>941</integer> + <integer>942</integer> </dict> <dict> <key>CF$UID</key> - <integer>950</integer> + <integer>944</integer> </dict> <dict> <key>CF$UID</key> @@ -332,23 +328,23 @@ </dict> <dict> <key>CF$UID</key> - <integer>957</integer> + <integer>956</integer> </dict> <dict> <key>CF$UID</key> - <integer>973</integer> + <integer>960</integer> </dict> <dict> <key>CF$UID</key> - <integer>977</integer> + <integer>976</integer> </dict> <dict> <key>CF$UID</key> - <integer>981</integer> + <integer>980</integer> </dict> <dict> <key>CF$UID</key> - <integer>985</integer> + <integer>984</integer> </dict> <dict> <key>CF$UID</key> @@ -364,7 +360,7 @@ </dict> <dict> <key>CF$UID</key> - <integer>1000</integer> + <integer>997</integer> </dict> <dict> <key>CF$UID</key> @@ -376,43 +372,43 @@ </dict> <dict> <key>CF$UID</key> - <integer>1010</integer> + <integer>1009</integer> </dict> <dict> <key>CF$UID</key> - <integer>1012</integer> + <integer>1013</integer> </dict> <dict> <key>CF$UID</key> - <integer>1014</integer> + <integer>1015</integer> </dict> <dict> <key>CF$UID</key> - <integer>1016</integer> + <integer>1017</integer> </dict> <dict> <key>CF$UID</key> - <integer>1018</integer> + <integer>1019</integer> </dict> <dict> <key>CF$UID</key> - <integer>1020</integer> + <integer>1021</integer> </dict> <dict> <key>CF$UID</key> - <integer>1021</integer> + <integer>1023</integer> </dict> <dict> <key>CF$UID</key> - <integer>1022</integer> + <integer>1024</integer> </dict> <dict> <key>CF$UID</key> - <integer>1023</integer> + <integer>1025</integer> </dict> <dict> <key>CF$UID</key> - <integer>1025</integer> + <integer>1026</integer> </dict> <dict> <key>CF$UID</key> @@ -432,19 +428,19 @@ </dict> <dict> <key>CF$UID</key> - <integer>1044</integer> + <integer>1040</integer> </dict> <dict> <key>CF$UID</key> - <integer>1045</integer> + <integer>1047</integer> </dict> <dict> <key>CF$UID</key> - <integer>1046</integer> + <integer>1048</integer> </dict> <dict> <key>CF$UID</key> - <integer>1047</integer> + <integer>1049</integer> </dict> <dict> <key>CF$UID</key> @@ -452,7 +448,7 @@ </dict> <dict> <key>CF$UID</key> - <integer>1051</integer> + <integer>1053</integer> </dict> <dict> <key>CF$UID</key> @@ -464,7 +460,7 @@ </dict> <dict> <key>CF$UID</key> - <integer>1058</integer> + <integer>1060</integer> </dict> <dict> <key>CF$UID</key> @@ -472,19 +468,19 @@ </dict> <dict> <key>CF$UID</key> - <integer>1066</integer> + <integer>1064</integer> </dict> <dict> <key>CF$UID</key> - <integer>1067</integer> + <integer>1069</integer> </dict> <dict> <key>CF$UID</key> - <integer>1068</integer> + <integer>1070</integer> </dict> <dict> <key>CF$UID</key> - <integer>1069</integer> + <integer>1071</integer> </dict> <dict> <key>CF$UID</key> @@ -496,35 +492,35 @@ </dict> <dict> <key>CF$UID</key> - <integer>1076</integer> + <integer>1078</integer> </dict> <dict> <key>CF$UID</key> - <integer>1081</integer> + <integer>1082</integer> </dict> <dict> <key>CF$UID</key> - <integer>1085</integer> + <integer>1087</integer> </dict> <dict> <key>CF$UID</key> - <integer>1090</integer> + <integer>1092</integer> </dict> <dict> <key>CF$UID</key> - <integer>1095</integer> + <integer>1096</integer> </dict> <dict> <key>CF$UID</key> - <integer>1099</integer> + <integer>1100</integer> </dict> <dict> <key>CF$UID</key> - <integer>1103</integer> + <integer>1102</integer> </dict> <dict> <key>CF$UID</key> - <integer>1105</integer> + <integer>1103</integer> </dict> <dict> <key>CF$UID</key> @@ -536,15 +532,15 @@ </dict> <dict> <key>CF$UID</key> - <integer>1112</integer> + <integer>1113</integer> </dict> <dict> <key>CF$UID</key> - <integer>1116</integer> + <integer>1115</integer> </dict> <dict> <key>CF$UID</key> - <integer>1118</integer> + <integer>1117</integer> </dict> <dict> <key>CF$UID</key> @@ -556,11 +552,11 @@ </dict> <dict> <key>CF$UID</key> - <integer>1126</integer> + <integer>1125</integer> </dict> <dict> <key>CF$UID</key> - <integer>1128</integer> + <integer>1127</integer> </dict> <dict> <key>CF$UID</key> @@ -580,19 +576,23 @@ </dict> <dict> <key>CF$UID</key> - <integer>1142</integer> + <integer>1141</integer> </dict> <dict> <key>CF$UID</key> + <integer>1143</integer> + </dict> + <dict> + <key>CF$UID</key> <integer>1144</integer> </dict> <dict> <key>CF$UID</key> - <integer>1146</integer> + <integer>1145</integer> </dict> <dict> <key>CF$UID</key> - <integer>1147</integer> + <integer>1146</integer> </dict> <dict> <key>CF$UID</key> @@ -600,19 +600,19 @@ </dict> <dict> <key>CF$UID</key> - <integer>1149</integer> + <integer>1150</integer> </dict> <dict> <key>CF$UID</key> - <integer>1151</integer> + <integer>1152</integer> </dict> <dict> <key>CF$UID</key> - <integer>1153</integer> + <integer>1154</integer> </dict> <dict> <key>CF$UID</key> - <integer>1155</integer> + <integer>1158</integer> </dict> </array> </dict> @@ -673,12 +673,12 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>154</integer> + <integer>118</integer> </dict> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>256</integer> + <integer>304</integer> </dict> <key>NSNextResponder</key> <dict> @@ -688,7 +688,7 @@ <key>NSSubviews</key> <dict> <key>CF$UID</key> - <integer>159</integer> + <integer>207</integer> </dict> </dict> <string>{{18, 103}, {105, 18}}</string> @@ -1195,7 +1195,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>154</integer> + <integer>118</integer> </dict> <key>NSFrame</key> <dict> @@ -1217,7 +1217,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>73</integer> + <integer>75</integer> </dict> <key>NS.objects</key> <array> @@ -1253,7 +1253,7 @@ <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>155</integer> + <integer>203</integer> </dict> <key>NSNextResponder</key> <dict> @@ -1263,7 +1263,7 @@ <key>NSSelectedTabViewItem</key> <dict> <key>CF$UID</key> - <integer>725</integer> + <integer>536</integer> </dict> <key>NSSubviews</key> <dict> @@ -1278,7 +1278,7 @@ <key>NSTabViewItems</key> <dict> <key>CF$UID</key> - <integer>156</integer> + <integer>204</integer> </dict> <key>NSTvFlags</key> <integer>4</integer> @@ -1287,7 +1287,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>73</integer> + <integer>75</integer> </dict> <key>NS.objects</key> <array> @@ -1301,12 +1301,12 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>154</integer> + <integer>118</integer> </dict> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>153</integer> + <integer>202</integer> </dict> <key>NSNextResponder</key> <dict> @@ -1328,7 +1328,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>73</integer> + <integer>75</integer> </dict> <key>NS.objects</key> <array> @@ -1336,213 +1336,247 @@ <key>CF$UID</key> <integer>52</integer> </dict> + <dict> + <key>CF$UID</key> + <integer>129</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>172</integer> + </dict> </array> </dict> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>152</integer> + <integer>128</integer> </dict> - <key>NSBackgroundColor</key> + <key>NSBorderType</key> + <integer>3</integer> + <key>NSBoxType</key> + <integer>0</integer> + <key>NSContentView</key> <dict> <key>CF$UID</key> - <integer>147</integer> + <integer>54</integer> </dict> - <key>NSCellBackgroundColor</key> + <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>151</integer> + <integer>119</integer> </dict> - <key>NSCellClass</key> + <key>NSNextResponder</key> <dict> <key>CF$UID</key> - <integer>145</integer> + <integer>50</integer> </dict> - <key>NSCellSize</key> + <key>NSOffsets</key> <dict> <key>CF$UID</key> - <integer>143</integer> + <integer>120</integer> </dict> - <key>NSCells</key> + <key>NSSubviews</key> <dict> <key>CF$UID</key> - <integer>54</integer> + <integer>53</integer> </dict> - <key>NSEnabled</key> - <true/> - <key>NSFont</key> + <key>NSSuperview</key> <dict> <key>CF$UID</key> - <integer>15</integer> + <integer>50</integer> </dict> - <key>NSFrame</key> + <key>NSTitleCell</key> <dict> <key>CF$UID</key> - <integer>53</integer> + <integer>121</integer> </dict> - <key>NSIntercellSpacing</key> + <key>NSTitlePosition</key> + <integer>2</integer> + <key>NSTransparent</key> + <false/> + </dict> + <dict> + <key>$class</key> <dict> <key>CF$UID</key> - <integer>144</integer> + <integer>75</integer> </dict> - <key>NSMatrixFlags</key> - <integer>1143472128</integer> - <key>NSNextResponder</key> + <key>NS.objects</key> + <array> + <dict> + <key>CF$UID</key> + <integer>54</integer> + </dict> + </array> + </dict> + <dict> + <key>$class</key> <dict> <key>CF$UID</key> - <integer>50</integer> + <integer>118</integer> </dict> - <key>NSNumCols</key> - <integer>1</integer> - <key>NSNumRows</key> - <integer>13</integer> - <key>NSProtoCell</key> + <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>146</integer> + <integer>117</integer> </dict> - <key>NSSelectedCell</key> + <key>NSNextResponder</key> <dict> <key>CF$UID</key> + <integer>52</integer> + </dict> + <key>NSSubviews</key> + <dict> + <key>CF$UID</key> <integer>55</integer> </dict> <key>NSSuperview</key> <dict> <key>CF$UID</key> - <integer>50</integer> + <integer>52</integer> </dict> - <key>NSvFlags</key> - <integer>274</integer> </dict> - <string>{{18, 23}, {134, 258}}</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>73</integer> + <integer>75</integer> </dict> <key>NS.objects</key> <array> <dict> <key>CF$UID</key> - <integer>55</integer> + <integer>56</integer> </dict> <dict> <key>CF$UID</key> - <integer>60</integer> + <integer>79</integer> </dict> <dict> <key>CF$UID</key> - <integer>62</integer> + <integer>94</integer> </dict> <dict> <key>CF$UID</key> - <integer>77</integer> + <integer>108</integer> </dict> <dict> <key>CF$UID</key> - <integer>83</integer> + <integer>112</integer> </dict> - <dict> - <key>CF$UID</key> - <integer>85</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>87</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>95</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>103</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>111</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>119</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>127</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>135</integer> - </dict> </array> </dict> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>22</integer> + <integer>78</integer> </dict> + <key>NSCell</key> + <dict> + <key>CF$UID</key> + <integer>58</integer> + </dict> + <key>NSEnabled</key> + <true/> + <key>NSFrame</key> + <dict> + <key>CF$UID</key> + <integer>57</integer> + </dict> + <key>NSNextResponder</key> + <dict> + <key>CF$UID</key> + <integer>54</integer> + </dict> + <key>NSSuperview</key> + <dict> + <key>CF$UID</key> + <integer>54</integer> + </dict> + <key>NSvFlags</key> + <integer>256</integer> + </dict> + <string>{{144, 44}, {249, 26}}</string> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>77</integer> + </dict> <key>NSAlternateContents</key> <dict> <key>CF$UID</key> - <integer>21</integer> + <integer>60</integer> </dict> <key>NSAlternateImage</key> <dict> <key>CF$UID</key> - <integer>57</integer> + <integer>59</integer> </dict> + <key>NSAltersState</key> + <true/> + <key>NSArrowPosition</key> + <integer>1</integer> <key>NSButtonFlags</key> - <integer>1211912703</integer> + <integer>109199615</integer> <key>NSButtonFlags2</key> - <integer>0</integer> + <integer>1</integer> <key>NSCellFlags</key> - <integer>-2080244224</integer> + <integer>-2076049856</integer> <key>NSCellFlags2</key> - <integer>0</integer> - <key>NSContents</key> + <integer>134218752</integer> + <key>NSControlView</key> <dict> <key>CF$UID</key> <integer>56</integer> </dict> - <key>NSControlView</key> + <key>NSKeyEquivalent</key> <dict> <key>CF$UID</key> - <integer>52</integer> + <integer>61</integer> </dict> - <key>NSKeyEquivalent</key> + <key>NSMenu</key> <dict> <key>CF$UID</key> - <integer>59</integer> + <integer>63</integer> </dict> + <key>NSMenuItem</key> + <dict> + <key>CF$UID</key> + <integer>62</integer> + </dict> <key>NSPeriodicDelay</key> - <integer>200</integer> + <integer>400</integer> <key>NSPeriodicInterval</key> - <integer>25</integer> + <integer>75</integer> + <key>NSPreferredEdge</key> + <integer>3</integer> <key>NSSupport</key> <dict> <key>CF$UID</key> <integer>15</integer> </dict> - <key>NSTag</key> - <integer>8</integer> + <key>NSUsesItemFromMenu</key> + <true/> </dict> - <string>Spectrum 16K</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>20</integer> + <integer>17</integer> </dict> - <key>NSImageName</key> + <key>NSName</key> <dict> <key>CF$UID</key> - <integer>58</integer> + <integer>16</integer> </dict> + <key>NSSize</key> + <real>13</real> + <key>NSfFlags</key> + <integer>16</integer> </dict> - <string>NSRadioButton</string> <dict> <key>$class</key> <dict> @@ -1556,58 +1590,241 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>22</integer> + <integer>45</integer> </dict> - <key>NSAlternateContents</key> + <key>NS.string</key> + <string></string> + </dict> + <dict> + <key>$class</key> <dict> <key>CF$UID</key> + <integer>72</integer> + </dict> + <key>NSAction</key> + <dict> + <key>CF$UID</key> + <integer>71</integer> + </dict> + <key>NSKeyEquiv</key> + <dict> + <key>CF$UID</key> <integer>21</integer> </dict> - <key>NSAlternateImage</key> + <key>NSKeyEquivModMask</key> + <integer>1048576</integer> + <key>NSMenu</key> <dict> <key>CF$UID</key> - <integer>57</integer> + <integer>63</integer> </dict> - <key>NSButtonFlags</key> - <integer>1211912703</integer> - <key>NSButtonFlags2</key> - <integer>0</integer> - <key>NSCellFlags</key> - <integer>67239424</integer> - <key>NSCellFlags2</key> - <integer>0</integer> - <key>NSContents</key> + <key>NSMixedImage</key> <dict> <key>CF$UID</key> - <integer>61</integer> + <integer>69</integer> </dict> - <key>NSControlView</key> + <key>NSMnemonicLoc</key> + <integer>2147483647</integer> + <key>NSOnImage</key> <dict> <key>CF$UID</key> - <integer>52</integer> + <integer>65</integer> </dict> - <key>NSKeyEquivalent</key> + <key>NSState</key> + <integer>1</integer> + <key>NSTarget</key> <dict> <key>CF$UID</key> - <integer>59</integer> + <integer>58</integer> </dict> - <key>NSPeriodicDelay</key> - <integer>200</integer> - <key>NSPeriodicInterval</key> - <integer>25</integer> - <key>NSSupport</key> + <key>NSTitle</key> <dict> <key>CF$UID</key> - <integer>15</integer> + <integer>64</integer> </dict> </dict> - <string>Spectrum 48K</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>22</integer> + <integer>76</integer> </dict> + <key>NSMenuItems</key> + <dict> + <key>CF$UID</key> + <integer>74</integer> + </dict> + <key>NSTitle</key> + <dict> + <key>CF$UID</key> + <integer>73</integer> + </dict> + </dict> + <string>Item1</string> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>68</integer> + </dict> + <key>NSClassName</key> + <dict> + <key>CF$UID</key> + <integer>66</integer> + </dict> + <key>NSResourceName</key> + <dict> + <key>CF$UID</key> + <integer>67</integer> + </dict> + </dict> + <string>NSImage</string> + <string>NSMenuCheckmark</string> + <dict> + <key>$classes</key> + <array> + <string>NSCustomResource</string> + <string>%NSCustomResource</string> + <string>NSObject</string> + </array> + <key>$classname</key> + <string>NSCustomResource</string> + </dict> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>68</integer> + </dict> + <key>NSClassName</key> + <dict> + <key>CF$UID</key> + <integer>66</integer> + </dict> + <key>NSResourceName</key> + <dict> + <key>CF$UID</key> + <integer>70</integer> + </dict> + </dict> + <string>NSMenuMixedState</string> + <string>_popUpItemAction:</string> + <dict> + <key>$classes</key> + <array> + <string>NSMenuItem</string> + <string>NSObject</string> + </array> + <key>$classname</key> + <string>NSMenuItem</string> + </dict> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>45</integer> + </dict> + <key>NS.string</key> + <string>OtherViews</string> + </dict> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>75</integer> + </dict> + <key>NS.objects</key> + <array> + <dict> + <key>CF$UID</key> + <integer>62</integer> + </dict> + </array> + </dict> + <dict> + <key>$classes</key> + <array> + <string>NSMutableArray</string> + <string>NSArray</string> + <string>NSObject</string> + </array> + <key>$classname</key> + <string>NSMutableArray</string> + </dict> + <dict> + <key>$classes</key> + <array> + <string>NSMenu</string> + <string>NSObject</string> + </array> + <key>$classname</key> + <string>NSMenu</string> + </dict> + <dict> + <key>$classes</key> + <array> + <string>NSPopUpButtonCell</string> + <string>NSMenuItemCell</string> + <string>NSButtonCell</string> + <string>%NSButtonCell</string> + <string>NSActionCell</string> + <string>NSCell</string> + <string>NSObject</string> + </array> + <key>$classname</key> + <string>NSPopUpButtonCell</string> + </dict> + <dict> + <key>$classes</key> + <array> + <string>NSPopUpButton</string> + <string>NSButton</string> + <string>NSControl</string> + <string>NSView</string> + <string>NSResponder</string> + <string>NSObject</string> + </array> + <key>$classname</key> + <string>NSPopUpButton</string> + </dict> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>78</integer> + </dict> + <key>NSCell</key> + <dict> + <key>CF$UID</key> + <integer>81</integer> + </dict> + <key>NSEnabled</key> + <true/> + <key>NSFrame</key> + <dict> + <key>CF$UID</key> + <integer>80</integer> + </dict> + <key>NSNextResponder</key> + <dict> + <key>CF$UID</key> + <integer>54</integer> + </dict> + <key>NSSuperview</key> + <dict> + <key>CF$UID</key> + <integer>54</integer> + </dict> + <key>NSvFlags</key> + <integer>256</integer> + </dict> + <string>{{144, 12}, {125, 26}}</string> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>77</integer> + </dict> <key>NSAlternateContents</key> <dict> <key>CF$UID</key> @@ -1616,302 +1833,541 @@ <key>NSAlternateImage</key> <dict> <key>CF$UID</key> - <integer>57</integer> + <integer>59</integer> </dict> + <key>NSAltersState</key> + <true/> + <key>NSArrowPosition</key> + <integer>1</integer> <key>NSButtonFlags</key> - <integer>1211912703</integer> + <integer>109199615</integer> <key>NSButtonFlags2</key> - <integer>0</integer> + <integer>1</integer> <key>NSCellFlags</key> - <integer>67239424</integer> + <integer>-2076049856</integer> <key>NSCellFlags2</key> - <integer>0</integer> - <key>NSContents</key> + <integer>134218752</integer> + <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>63</integer> + <integer>79</integer> </dict> - <key>NSControlView</key> + <key>NSKeyEquivalent</key> <dict> <key>CF$UID</key> - <integer>52</integer> + <integer>82</integer> </dict> - <key>NSKeyEquivalent</key> + <key>NSMenu</key> <dict> <key>CF$UID</key> - <integer>21</integer> + <integer>84</integer> </dict> - <key>NSNormalImage</key> + <key>NSMenuItem</key> <dict> <key>CF$UID</key> - <integer>64</integer> + <integer>83</integer> </dict> <key>NSPeriodicDelay</key> <integer>400</integer> <key>NSPeriodicInterval</key> <integer>75</integer> + <key>NSPreferredEdge</key> + <integer>3</integer> <key>NSSupport</key> <dict> <key>CF$UID</key> <integer>15</integer> </dict> - <key>NSTag</key> - <integer>2</integer> + <key>NSUsesItemFromMenu</key> + <true/> </dict> - <string>Spectrum 128K</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>76</integer> + <integer>45</integer> </dict> - <key>NSColor</key> + <key>NS.string</key> + <string></string> + </dict> + <dict> + <key>$class</key> <dict> <key>CF$UID</key> - <integer>74</integer> + <integer>72</integer> </dict> - <key>NSImageFlags</key> - <integer>549453824</integer> - <key>NSReps</key> + <key>NSAction</key> <dict> <key>CF$UID</key> - <integer>66</integer> + <integer>85</integer> </dict> - <key>NSSize</key> + <key>NSKeyEquiv</key> <dict> <key>CF$UID</key> + <integer>21</integer> + </dict> + <key>NSKeyEquivModMask</key> + <integer>1048576</integer> + <key>NSMenu</key> + <dict> + <key>CF$UID</key> + <integer>84</integer> + </dict> + <key>NSMixedImage</key> + <dict> + <key>CF$UID</key> + <integer>69</integer> + </dict> + <key>NSMnemonicLoc</key> + <integer>2147483647</integer> + <key>NSOnImage</key> + <dict> + <key>CF$UID</key> <integer>65</integer> </dict> + <key>NSState</key> + <integer>1</integer> + <key>NSTarget</key> + <dict> + <key>CF$UID</key> + <integer>81</integer> + </dict> + <key>NSTitle</key> + <dict> + <key>CF$UID</key> + <integer>64</integer> + </dict> </dict> - <string>{18, 18}</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>73</integer> + <integer>76</integer> </dict> - <key>NS.objects</key> - <array> - <dict> - <key>CF$UID</key> - <integer>67</integer> - </dict> - </array> + <key>NSMenuItems</key> + <dict> + <key>CF$UID</key> + <integer>87</integer> + </dict> + <key>NSTitle</key> + <dict> + <key>CF$UID</key> + <integer>86</integer> + </dict> </dict> + <string>_popUpItemAction:</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>72</integer> + <integer>45</integer> </dict> + <key>NS.string</key> + <string>OtherViews</string> + </dict> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>75</integer> + </dict> <key>NS.objects</key> <array> <dict> <key>CF$UID</key> - <integer>68</integer> + <integer>83</integer> </dict> <dict> <key>CF$UID</key> - <integer>69</integer> + <integer>88</integer> </dict> + <dict> + <key>CF$UID</key> + <integer>91</integer> + </dict> </array> </dict> - <integer>0</integer> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>71</integer> + <integer>72</integer> </dict> - <key>NSTIFFRepresentation</key> + <key>NSAction</key> <dict> <key>CF$UID</key> - <integer>70</integer> + <integer>90</integer> </dict> + <key>NSKeyEquiv</key> + <dict> + <key>CF$UID</key> + <integer>21</integer> + </dict> + <key>NSKeyEquivModMask</key> + <integer>1048576</integer> + <key>NSMenu</key> + <dict> + <key>CF$UID</key> + <integer>84</integer> + </dict> + <key>NSMixedImage</key> + <dict> + <key>CF$UID</key> + <integer>69</integer> + </dict> + <key>NSMnemonicLoc</key> + <integer>2147483647</integer> + <key>NSOnImage</key> + <dict> + <key>CF$UID</key> + <integer>65</integer> + </dict> + <key>NSTarget</key> + <dict> + <key>CF$UID</key> + <integer>81</integer> + </dict> + <key>NSTitle</key> + <dict> + <key>CF$UID</key> + <integer>89</integer> + </dict> </dict> - <data> - TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMA - AAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXwIyMjyRwcHIsJCQk8AAAA - AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/ - 29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAUZGRl5dXV198PDw//8/Pz///////////////////////// - ///U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAAAAAAAxEREUZqamrmtbW1 - /+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG - AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z - 8/P/9fX1//Ly8v/u7u7/0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4 - eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/7e3t/+3t7f/i4uL/zs7O - /8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/ - 5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMA - AAADAAAALrCwsPrW1tb/3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn - 5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAADAAAALp2dnezg4OD/5eXl - /+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns - AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5 - +fn/9/f3//b29v/x8fH/6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4u - LpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7//v7+//v7+//19fX/8PDw - /8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/ - ///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAA - AAAAAAAAAwAAABcAAABlYmJi3NLS0v3///////////////////////////// - ///V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAAAAAAAAAAAAUAAAAfAAAA - ZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMA - AACzAAAAnwAAAHcAAABDAAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAuAAAAJAAAABcAAAAKAAAA - AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - DQEAAAMAAAABABIAAAEBAAMAAAABABIAAAECAAMAAAAEAAAFugEDAAMAAAAB - AAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAESAAMAAAABAAEAAAEVAAMA - AAABAAQAAAEWAAMAAAABBxwAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS - AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQAB - </data> + <string>Item2</string> + <string>_popUpItemAction:</string> <dict> - <key>$classes</key> - <array> - <string>NSBitmapImageRep</string> - <string>NSImageRep</string> - <string>NSObject</string> - </array> - <key>$classname</key> - <string>NSBitmapImageRep</string> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>72</integer> + </dict> + <key>NSAction</key> + <dict> + <key>CF$UID</key> + <integer>93</integer> + </dict> + <key>NSKeyEquiv</key> + <dict> + <key>CF$UID</key> + <integer>21</integer> + </dict> + <key>NSKeyEquivModMask</key> + <integer>1048576</integer> + <key>NSMenu</key> + <dict> + <key>CF$UID</key> + <integer>84</integer> + </dict> + <key>NSMixedImage</key> + <dict> + <key>CF$UID</key> + <integer>69</integer> + </dict> + <key>NSMnemonicLoc</key> + <integer>2147483647</integer> + <key>NSOnImage</key> + <dict> + <key>CF$UID</key> + <integer>65</integer> + </dict> + <key>NSTarget</key> + <dict> + <key>CF$UID</key> + <integer>81</integer> + </dict> + <key>NSTitle</key> + <dict> + <key>CF$UID</key> + <integer>92</integer> + </dict> </dict> + <string>Item3</string> + <string>_popUpItemAction:</string> <dict> - <key>$classes</key> - <array> - <string>NSArray</string> - <string>NSObject</string> - </array> - <key>$classname</key> - <string>NSArray</string> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>107</integer> + </dict> + <key>NSCell</key> + <dict> + <key>CF$UID</key> + <integer>96</integer> + </dict> + <key>NSEnabled</key> + <true/> + <key>NSFrame</key> + <dict> + <key>CF$UID</key> + <integer>95</integer> + </dict> + <key>NSNextResponder</key> + <dict> + <key>CF$UID</key> + <integer>54</integer> + </dict> + <key>NSSuperview</key> + <dict> + <key>CF$UID</key> + <integer>54</integer> + </dict> + <key>NSvFlags</key> + <integer>256</integer> </dict> + <string>{{11, 50}, {114, 17}}</string> <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>106</integer> + </dict> + <key>NSBackgroundColor</key> + <dict> + <key>CF$UID</key> + <integer>98</integer> + </dict> + <key>NSCellFlags</key> + <integer>67239424</integer> + <key>NSCellFlags2</key> + <integer>4194304</integer> + <key>NSContents</key> + <dict> + <key>CF$UID</key> + <integer>97</integer> + </dict> + <key>NSControlView</key> + <dict> + <key>CF$UID</key> + <integer>94</integer> + </dict> + <key>NSSupport</key> + <dict> + <key>CF$UID</key> + <integer>15</integer> + </dict> + <key>NSTextColor</key> + <dict> + <key>CF$UID</key> + <integer>103</integer> + </dict> + </dict> + <string>Real device: +</string> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>102</integer> + </dict> + <key>NSCatalogName</key> + <dict> + <key>CF$UID</key> + <integer>99</integer> + </dict> + <key>NSColor</key> + <dict> + <key>CF$UID</key> + <integer>101</integer> + </dict> + <key>NSColorName</key> + <dict> + <key>CF$UID</key> + <integer>100</integer> + </dict> + <key>NSColorSpace</key> + <integer>6</integer> + </dict> + <string>System</string> + <string>controlColor</string> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>102</integer> + </dict> + <key>NSColorSpace</key> + <integer>3</integer> + <key>NSWhite</key> + <data> + MC42NjY2NjY2OQA= + </data> + </dict> + <dict> <key>$classes</key> <array> - <string>NSMutableArray</string> - <string>NSArray</string> + <string>NSColor</string> <string>NSObject</string> </array> <key>$classname</key> - <string>NSMutableArray</string> + <string>NSColor</string> </dict> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>75</integer> + <integer>102</integer> </dict> + <key>NSCatalogName</key> + <dict> + <key>CF$UID</key> + <integer>99</integer> + </dict> + <key>NSColor</key> + <dict> + <key>CF$UID</key> + <integer>105</integer> + </dict> + <key>NSColorName</key> + <dict> + <key>CF$UID</key> + <integer>104</integer> + </dict> <key>NSColorSpace</key> + <integer>6</integer> + </dict> + <string>controlTextColor</string> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>102</integer> + </dict> + <key>NSColorSpace</key> <integer>3</integer> <key>NSWhite</key> <data> - MCAwAA== + MAA= </data> </dict> <dict> <key>$classes</key> <array> - <string>NSColor</string> + <string>NSTextFieldCell</string> + <string>NSActionCell</string> + <string>NSCell</string> <string>NSObject</string> </array> <key>$classname</key> - <string>NSColor</string> + <string>NSTextFieldCell</string> </dict> <dict> <key>$classes</key> <array> - <string>NSImage</string> - <string>%NSImage</string> + <string>NSTextField</string> + <string>%NSTextField</string> + <string>NSControl</string> + <string>NSView</string> + <string>NSResponder</string> <string>NSObject</string> </array> <key>$classname</key> - <string>NSImage</string> + <string>NSTextField</string> </dict> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>22</integer> + <integer>107</integer> </dict> - <key>NSAlternateContents</key> + <key>NSCell</key> <dict> <key>CF$UID</key> - <integer>21</integer> + <integer>110</integer> </dict> - <key>NSAlternateImage</key> + <key>NSEnabled</key> + <true/> + <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>57</integer> + <integer>109</integer> </dict> - <key>NSButtonFlags</key> - <integer>1211912703</integer> - <key>NSButtonFlags2</key> - <integer>2</integer> + <key>NSNextResponder</key> + <dict> + <key>CF$UID</key> + <integer>54</integer> + </dict> + <key>NSSuperview</key> + <dict> + <key>CF$UID</key> + <integer>54</integer> + </dict> + <key>NSvFlags</key> + <integer>256</integer> + </dict> + <string>{{11, 18}, {122, 17}}</string> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>106</integer> + </dict> + <key>NSBackgroundColor</key> + <dict> + <key>CF$UID</key> + <integer>98</integer> + </dict> <key>NSCellFlags</key> <integer>67239424</integer> <key>NSCellFlags2</key> - <integer>0</integer> + <integer>4194304</integer> <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>78</integer> + <integer>111</integer> </dict> <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>52</integer> + <integer>108</integer> </dict> - <key>NSKeyEquivalent</key> + <key>NSSupport</key> <dict> <key>CF$UID</key> - <integer>21</integer> + <integer>15</integer> </dict> - <key>NSNormalImage</key> + <key>NSTextColor</key> <dict> <key>CF$UID</key> - <integer>79</integer> + <integer>103</integer> </dict> - <key>NSPeriodicDelay</key> - <integer>400</integer> - <key>NSPeriodicInterval</key> - <integer>75</integer> - <key>NSSupport</key> - <dict> - <key>CF$UID</key> - <integer>15</integer> - </dict> - <key>NSTag</key> - <integer>3</integer> </dict> - <string>Spectrum +2</string> + <string>Emulated joystick: +</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>82</integer> + <integer>23</integer> </dict> - <key>NSClassName</key> + <key>NSCell</key> <dict> <key>CF$UID</key> - <integer>80</integer> + <integer>114</integer> </dict> - <key>NSResourceName</key> + <key>NSEnabled</key> + <true/> + <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>81</integer> + <integer>113</integer> </dict> + <key>NSNextResponder</key> + <dict> + <key>CF$UID</key> + <integer>54</integer> + </dict> + <key>NSSuperview</key> + <dict> + <key>CF$UID</key> + <integer>54</integer> + </dict> + <key>NSTag</key> + <integer>2</integer> + <key>NSvFlags</key> + <integer>256</integer> </dict> - <string>NSImage</string> - <string>NSRadioButton</string> + <string>{{392, 40}, {76, 32}}</string> <dict> - <key>$classes</key> - <array> - <string>NSCustomResource</string> - <string>%NSCustomResource</string> - <string>NSObject</string> - </array> - <key>$classname</key> - <string>NSCustomResource</string> - </dict> - <dict> <key>$class</key> <dict> <key>CF$UID</key> @@ -1925,69 +2381,77 @@ <key>NSAlternateImage</key> <dict> <key>CF$UID</key> - <integer>57</integer> + <integer>15</integer> </dict> <key>NSButtonFlags</key> - <integer>1211912703</integer> + <integer>-2038284033</integer> <key>NSButtonFlags2</key> - <integer>0</integer> + <integer>1</integer> <key>NSCellFlags</key> <integer>67239424</integer> <key>NSCellFlags2</key> - <integer>0</integer> + <integer>134217728</integer> <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>84</integer> + <integer>115</integer> </dict> <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>52</integer> + <integer>112</integer> </dict> <key>NSKeyEquivalent</key> <dict> <key>CF$UID</key> - <integer>21</integer> + <integer>116</integer> </dict> - <key>NSNormalImage</key> - <dict> - <key>CF$UID</key> - <integer>64</integer> - </dict> <key>NSPeriodicDelay</key> - <integer>400</integer> + <integer>200</integer> <key>NSPeriodicInterval</key> - <integer>75</integer> + <integer>25</integer> <key>NSSupport</key> <dict> <key>CF$UID</key> <integer>15</integer> </dict> <key>NSTag</key> - <integer>5</integer> + <integer>2</integer> </dict> - <string>Spectrum +2A</string> + <string>Setup</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>22</integer> + <integer>45</integer> </dict> - <key>NSAlternateContents</key> + <key>NS.string</key> + <string></string> + </dict> + <string>{{2, 2}, {477, 80}}</string> + <dict> + <key>$classes</key> + <array> + <string>NSView</string> + <string>NSResponder</string> + <string>NSObject</string> + </array> + <key>$classname</key> + <string>NSView</string> + </dict> + <string>{{17, -4}, {481, 100}}</string> + <string>{0, 0}</string> + <dict> + <key>$class</key> <dict> <key>CF$UID</key> - <integer>21</integer> + <integer>106</integer> </dict> - <key>NSAlternateImage</key> + <key>NSBackgroundColor</key> <dict> <key>CF$UID</key> - <integer>57</integer> + <integer>124</integer> </dict> - <key>NSButtonFlags</key> - <integer>1211912703</integer> - <key>NSButtonFlags2</key> - <integer>0</integer> <key>NSCellFlags</key> <integer>67239424</integer> <key>NSCellFlags2</key> @@ -1995,129 +2459,159 @@ <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>86</integer> + <integer>122</integer> </dict> - <key>NSControlView</key> + <key>NSSupport</key> <dict> <key>CF$UID</key> - <integer>52</integer> + <integer>123</integer> </dict> - <key>NSKeyEquivalent</key> + <key>NSTextColor</key> <dict> <key>CF$UID</key> - <integer>21</integer> + <integer>127</integer> </dict> - <key>NSNormalImage</key> + </dict> + <string>Joystick 2</string> + <dict> + <key>$class</key> <dict> <key>CF$UID</key> - <integer>64</integer> + <integer>17</integer> </dict> - <key>NSPeriodicDelay</key> - <integer>400</integer> - <key>NSPeriodicInterval</key> - <integer>75</integer> - <key>NSSupport</key> + <key>NSName</key> <dict> <key>CF$UID</key> - <integer>15</integer> + <integer>16</integer> </dict> - <key>NSTag</key> - <integer>6</integer> + <key>NSSize</key> + <real>13</real> + <key>NSfFlags</key> + <integer>1558</integer> </dict> - <string>Spectrum +3</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>22</integer> + <integer>102</integer> </dict> - <key>NSAlternateContents</key> + <key>NSCatalogName</key> <dict> <key>CF$UID</key> - <integer>21</integer> + <integer>99</integer> </dict> - <key>NSAlternateImage</key> + <key>NSColor</key> <dict> <key>CF$UID</key> - <integer>57</integer> + <integer>126</integer> </dict> - <key>NSButtonFlags</key> - <integer>1211912703</integer> - <key>NSButtonFlags2</key> - <integer>0</integer> - <key>NSCellFlags</key> - <integer>67239424</integer> - <key>NSCellFlags2</key> - <integer>0</integer> - <key>NSContents</key> + <key>NSColorName</key> <dict> <key>CF$UID</key> - <integer>88</integer> + <integer>125</integer> </dict> - <key>NSControlView</key> + <key>NSColorSpace</key> + <integer>6</integer> + </dict> + <string>textBackgroundColor</string> + <dict> + <key>$class</key> <dict> <key>CF$UID</key> - <integer>52</integer> + <integer>102</integer> </dict> - <key>NSKeyEquivalent</key> + <key>NSColorSpace</key> + <integer>3</integer> + <key>NSWhite</key> + <data> + MQA= + </data> + </dict> + <dict> + <key>$class</key> <dict> <key>CF$UID</key> - <integer>21</integer> + <integer>102</integer> </dict> - <key>NSNormalImage</key> + <key>NSColorSpace</key> + <integer>3</integer> + <key>NSWhite</key> + <data> + MCAwLjgwMDAwMDAxAA== + </data> + </dict> + <dict> + <key>$classes</key> + <array> + <string>NSBox</string> + <string>NSView</string> + <string>NSResponder</string> + <string>NSObject</string> + </array> + <key>$classname</key> + <string>NSBox</string> + </dict> + <dict> + <key>$class</key> <dict> <key>CF$UID</key> - <integer>89</integer> + <integer>128</integer> </dict> - <key>NSPeriodicDelay</key> - <integer>400</integer> - <key>NSPeriodicInterval</key> - <integer>75</integer> - <key>NSSupport</key> + <key>NSBorderType</key> + <integer>3</integer> + <key>NSBoxType</key> + <integer>0</integer> + <key>NSContentView</key> <dict> <key>CF$UID</key> - <integer>15</integer> + <integer>131</integer> </dict> - <key>NSTag</key> - <integer>11</integer> - </dict> - <string>Spectrum +3e</string> - <dict> - <key>$class</key> + <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>76</integer> + <integer>167</integer> </dict> - <key>NSColor</key> + <key>NSNextResponder</key> <dict> <key>CF$UID</key> - <integer>74</integer> + <integer>50</integer> </dict> - <key>NSImageFlags</key> - <integer>549453824</integer> - <key>NSReps</key> + <key>NSOffsets</key> <dict> <key>CF$UID</key> - <integer>91</integer> + <integer>168</integer> </dict> - <key>NSSize</key> + <key>NSSubviews</key> <dict> <key>CF$UID</key> - <integer>90</integer> + <integer>130</integer> </dict> + <key>NSSuperview</key> + <dict> + <key>CF$UID</key> + <integer>50</integer> + </dict> + <key>NSTitleCell</key> + <dict> + <key>CF$UID</key> + <integer>169</integer> + </dict> + <key>NSTitlePosition</key> + <integer>2</integer> + <key>NSTransparent</key> + <false/> </dict> - <string>{18, 18}</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>73</integer> + <integer>75</integer> </dict> <key>NS.objects</key> <array> <dict> <key>CF$UID</key> - <integer>92</integer> + <integer>131</integer> </dict> </array> </dict> @@ -2125,72 +2619,96 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>72</integer> + <integer>118</integer> </dict> + <key>NSFrame</key> + <dict> + <key>CF$UID</key> + <integer>166</integer> + </dict> + <key>NSNextResponder</key> + <dict> + <key>CF$UID</key> + <integer>129</integer> + </dict> + <key>NSSubviews</key> + <dict> + <key>CF$UID</key> + <integer>132</integer> + </dict> + <key>NSSuperview</key> + <dict> + <key>CF$UID</key> + <integer>129</integer> + </dict> + </dict> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>75</integer> + </dict> <key>NS.objects</key> <array> <dict> <key>CF$UID</key> - <integer>68</integer> + <integer>133</integer> </dict> <dict> <key>CF$UID</key> - <integer>93</integer> + <integer>142</integer> </dict> + <dict> + <key>CF$UID</key> + <integer>155</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>158</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>162</integer> + </dict> </array> </dict> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>71</integer> + <integer>78</integer> </dict> - <key>NSTIFFRepresentation</key> + <key>NSCell</key> <dict> <key>CF$UID</key> - <integer>94</integer> + <integer>135</integer> </dict> + <key>NSEnabled</key> + <true/> + <key>NSFrame</key> + <dict> + <key>CF$UID</key> + <integer>134</integer> + </dict> + <key>NSNextResponder</key> + <dict> + <key>CF$UID</key> + <integer>131</integer> + </dict> + <key>NSSuperview</key> + <dict> + <key>CF$UID</key> + <integer>131</integer> + </dict> + <key>NSvFlags</key> + <integer>256</integer> </dict> - <data> - TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMA - AAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXwIyMjyRwcHIsJCQk8AAAA - AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/ - 29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAUZGRl5dXV198PDw//8/Pz///////////////////////// - ///U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAAAAAAAxEREUZqamrmtbW1 - /+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG - AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z - 8/P/9fX1//Ly8v/u7u7/0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4 - eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/7e3t/+3t7f/i4uL/zs7O - /8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/ - 5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMA - AAADAAAALrCwsPrW1tb/3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn - 5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAADAAAALp2dnezg4OD/5eXl - /+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns - AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5 - +fn/9/f3//b29v/x8fH/6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4u - LpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7//v7+//v7+//19fX/8PDw - /8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/ - ///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAA - AAAAAAAAAwAAABcAAABlYmJi3NLS0v3///////////////////////////// - ///V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAAAAAAAAAAAAUAAAAfAAAA - ZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMA - AACzAAAAnwAAAHcAAABDAAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAuAAAAJAAAABcAAAAKAAAA - AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - DQEAAAMAAAABABIAAAEBAAMAAAABABIAAAECAAMAAAAEAAAFugEDAAMAAAAB - AAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAESAAMAAAABAAEAAAEVAAMA - AAABAAQAAAEWAAMAAAABBxwAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS - AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQAB - </data> + <string>{{141, 44}, {249, 26}}</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>22</integer> + <integer>77</integer> </dict> <key>NSAlternateContents</key> <dict> @@ -2200,158 +2718,189 @@ <key>NSAlternateImage</key> <dict> <key>CF$UID</key> - <integer>57</integer> + <integer>59</integer> </dict> + <key>NSAltersState</key> + <true/> + <key>NSArrowPosition</key> + <integer>1</integer> <key>NSButtonFlags</key> - <integer>1211912703</integer> + <integer>109199615</integer> <key>NSButtonFlags2</key> - <integer>0</integer> + <integer>1</integer> <key>NSCellFlags</key> - <integer>67239424</integer> + <integer>-2076049856</integer> <key>NSCellFlags2</key> - <integer>0</integer> - <key>NSContents</key> + <integer>134218752</integer> + <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>96</integer> + <integer>133</integer> </dict> - <key>NSControlView</key> + <key>NSKeyEquivalent</key> <dict> <key>CF$UID</key> - <integer>52</integer> + <integer>136</integer> </dict> - <key>NSKeyEquivalent</key> + <key>NSMenu</key> <dict> <key>CF$UID</key> - <integer>21</integer> + <integer>138</integer> </dict> - <key>NSNormalImage</key> + <key>NSMenuItem</key> <dict> <key>CF$UID</key> - <integer>97</integer> + <integer>137</integer> </dict> <key>NSPeriodicDelay</key> <integer>400</integer> <key>NSPeriodicInterval</key> <integer>75</integer> + <key>NSPreferredEdge</key> + <integer>3</integer> <key>NSSupport</key> <dict> <key>CF$UID</key> <integer>15</integer> </dict> - <key>NSTag</key> - <integer>1</integer> + <key>NSUsesItemFromMenu</key> + <true/> </dict> - <string>Timex TC2048</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>76</integer> + <integer>45</integer> </dict> - <key>NSColor</key> + <key>NS.string</key> + <string></string> + </dict> + <dict> + <key>$class</key> <dict> <key>CF$UID</key> - <integer>74</integer> + <integer>72</integer> </dict> - <key>NSImageFlags</key> - <integer>549453824</integer> - <key>NSReps</key> + <key>NSAction</key> <dict> <key>CF$UID</key> - <integer>99</integer> + <integer>139</integer> </dict> - <key>NSSize</key> + <key>NSKeyEquiv</key> <dict> <key>CF$UID</key> - <integer>98</integer> + <integer>21</integer> </dict> + <key>NSKeyEquivModMask</key> + <integer>1048576</integer> + <key>NSMenu</key> + <dict> + <key>CF$UID</key> + <integer>138</integer> + </dict> + <key>NSMixedImage</key> + <dict> + <key>CF$UID</key> + <integer>69</integer> + </dict> + <key>NSMnemonicLoc</key> + <integer>2147483647</integer> + <key>NSOnImage</key> + <dict> + <key>CF$UID</key> + <integer>65</integer> + </dict> + <key>NSState</key> + <integer>1</integer> + <key>NSTarget</key> + <dict> + <key>CF$UID</key> + <integer>135</integer> + </dict> + <key>NSTitle</key> + <dict> + <key>CF$UID</key> + <integer>64</integer> + </dict> </dict> - <string>{18, 18}</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>73</integer> + <integer>76</integer> </dict> - <key>NS.objects</key> - <array> - <dict> - <key>CF$UID</key> - <integer>100</integer> - </dict> - </array> + <key>NSMenuItems</key> + <dict> + <key>CF$UID</key> + <integer>141</integer> + </dict> + <key>NSTitle</key> + <dict> + <key>CF$UID</key> + <integer>140</integer> + </dict> </dict> + <string>_popUpItemAction:</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>72</integer> + <integer>45</integer> </dict> + <key>NS.string</key> + <string>OtherViews</string> + </dict> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>75</integer> + </dict> <key>NS.objects</key> <array> <dict> <key>CF$UID</key> - <integer>68</integer> + <integer>137</integer> </dict> - <dict> - <key>CF$UID</key> - <integer>101</integer> - </dict> </array> </dict> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>71</integer> + <integer>78</integer> </dict> - <key>NSTIFFRepresentation</key> + <key>NSCell</key> <dict> <key>CF$UID</key> - <integer>102</integer> + <integer>144</integer> </dict> + <key>NSEnabled</key> + <true/> + <key>NSFrame</key> + <dict> + <key>CF$UID</key> + <integer>143</integer> + </dict> + <key>NSNextResponder</key> + <dict> + <key>CF$UID</key> + <integer>131</integer> + </dict> + <key>NSSuperview</key> + <dict> + <key>CF$UID</key> + <integer>131</integer> + </dict> + <key>NSvFlags</key> + <integer>256</integer> </dict> - <data> - TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMA - AAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXwIyMjyRwcHIsJCQk8AAAA - AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/ - 29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAUZGRl5dXV198PDw//8/Pz///////////////////////// - ///U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAAAAAAAxEREUZqamrmtbW1 - /+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG - AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z - 8/P/9fX1//Ly8v/u7u7/0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4 - eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/7e3t/+3t7f/i4uL/zs7O - /8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/ - 5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMA - AAADAAAALrCwsPrW1tb/3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn - 5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAADAAAALp2dnezg4OD/5eXl - /+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns - AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5 - +fn/9/f3//b29v/x8fH/6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4u - LpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7//v7+//v7+//19fX/8PDw - /8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/ - ///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAA - AAAAAAAAAwAAABcAAABlYmJi3NLS0v3///////////////////////////// - ///V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAAAAAAAAAAAAUAAAAfAAAA - ZTMzM8KAgIDwv7+/... [truncated message content] |
From: <fr...@us...> - 2006-11-26 08:44:32
|
Revision: 239 http://svn.sourceforge.net/fuse-for-macosx/?rev=239&view=rev Author: fredm Date: 2006-11-26 00:44:30 -0800 (Sun, 26 Nov 2006) Log Message: ----------- Some updates to the Fuse manual. Modified Paths: -------------- trunk/fuse/fusepb/resources/Fuse Help/Fuse Help idx trunk/fuse/fusepb/resources/Fuse Help/html/emulation.html trunk/fuse/fusepb/resources/Fuse Help/html/mappings.html trunk/fuse/fusepb/resources/Fuse Help/html/menus.html trunk/fuse/fusepb/resources/Fuse Help/html/tocstart.html Added Paths: ----------- trunk/fuse/fusepb/resources/Fuse Help/Fuse Help.helpindex trunk/fuse/fusepb/resources/Fuse Help/html/preferences.html Modified: trunk/fuse/fusepb/resources/Fuse Help/Fuse Help idx =================================================================== (Binary files differ) Added: trunk/fuse/fusepb/resources/Fuse Help/Fuse Help.helpindex =================================================================== (Binary files differ) Property changes on: trunk/fuse/fusepb/resources/Fuse Help/Fuse Help.helpindex ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: trunk/fuse/fusepb/resources/Fuse Help/html/emulation.html =================================================================== --- trunk/fuse/fusepb/resources/Fuse Help/html/emulation.html 2006-11-26 08:35:28 UTC (rev 238) +++ trunk/fuse/fusepb/resources/Fuse Help/html/emulation.html 2006-11-26 08:44:30 UTC (rev 239) @@ -1,5 +1,11 @@ -<!-- AppleSegStart="The Emulated Spectrum" --><font - face="Lucida Grande,Helvetica,Arial"><a name="The Emulated Spectrum"></a><!-- AppleSegDescription="This section describes the machine as emulated by Fuse." --></font> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +<!-- AppleSegStart="The Emulated Spectrum" --> +</head> +<body> +<font face="Lucida Grande,Helvetica,Arial"><a + name="The Emulated Spectrum"></a><!-- AppleSegDescription="This section describes the machine as emulated by Fuse." --></font> <div class="refsect1" xml:lang="en" lang="en"> <h2><font face="Lucida Grande,Helvetica,Arial">The Emulated Spectrum</font></h2> @@ -13,11 +19,15 @@ :-)</font></p> <p> <font face="Lucida Grande,Helvetica,Arial">To emulate different kinds -of Spectrum, select the -<span class="emphasis"><em>Machine, Select...</em></span> menu -option.</font></p> +of Spectrum, use the +<span class="emphasis"><em>Machines</em></span> tab on the preferences +screen (available from the <span style="font-style: italic;">Fuse, +Preferences</span> +menu option).</font></p> <p> <font face="Lucida Grande,Helvetica,Arial">The Spectrum emulation is paused when any dialogs appear.</font></p> <!-- AppleSegEnd --> +</body> +</html> Modified: trunk/fuse/fusepb/resources/Fuse Help/html/mappings.html =================================================================== --- trunk/fuse/fusepb/resources/Fuse Help/html/mappings.html 2006-11-26 08:35:28 UTC (rev 238) +++ trunk/fuse/fusepb/resources/Fuse Help/html/mappings.html 2006-11-26 08:44:30 UTC (rev 239) @@ -1,70 +1,81 @@ -<!-- AppleSegStart="Key Mappings" --><font - face="Lucida Grande,Helvetica,Arial"><a name="Key Mappings"></a><!-- AppleSegDescription="This section describes the key mappings for the emulated computer." --></font> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +<!-- AppleSegStart="Key Mappings" --> +</head> +<body> +<font face="Lucida Grande,Helvetica,Arial"><a name= +"Key Mappings"></a><!-- AppleSegDescription="This section describes the key mappings for the emulated computer." --></font> <div class="refsect1" xml:lang="en" lang="en"> <h2><font face="Lucida Grande,Helvetica,Arial">Key Mappings</font></h2> </div> -<p> -<font face="Lucida Grande,Helvetica,Arial">When emulating the Spectrum, -the alphanumeric keys (along with -<span class="emphasis"><em>Enter</em></span> and -<span class="emphasis"><em>Space</em></span>) are mapped as-is to -the Spectrum keys. The other key mappings -are:</font></p> +<p><font face="Lucida Grande,Helvetica,Arial">When emulating the +Spectrum, the alphanumeric keys (along with <span class= +"emphasis"><em>Enter</em></span> and <span class= +"emphasis"><em>Space</em></span>) are mapped as-is to the Spectrum +keys. The other key mappings are:</font></p> <div class="variablelist"> <dl> - <dt> <span class="emphasis"><font - face="Lucida Grande,Helvetica,Arial"><em>Shift</em></font></span></dt> - <dd> - <p><font face="Lucida Grande,Helvetica,Arial">emulated as Caps +<dt><span class="emphasis"><font face= +"Lucida Grande,Helvetica,Arial"><em>Shift</em></font></span></dt> +<dd> +<p><font face="Lucida Grande,Helvetica,Arial">emulated as Caps Shift</font></p> - </dd> - <dt> <span class="term"><font face="Lucida Grande,Helvetica,Arial"><em>Control</em>, -and <span class="emphasis"><em>Option</em></span></font></span></dt> - <dd> - <p><font face="Lucida Grande,Helvetica,Arial">emulated as Symbol +</dd> +<dt><span class="term"><font face= +"Lucida Grande,Helvetica,Arial"><em>Control</em>, and <span class= +"emphasis"><em>Option</em></span></font></span></dt> +<dd> +<p><font face="Lucida Grande,Helvetica,Arial">emulated as Symbol Shift</font></p> - </dd> - <dt> <span class="term"><font face="Lucida Grande,Helvetica,Arial"><em>Delete</em></font></span></dt> - <dd> - <p><font face="Lucida Grande,Helvetica,Arial">emulated as Caps-0 +</dd> +<dt><span class="term"><font face= +"Lucida Grande,Helvetica,Arial"><em>Delete</em></font></span></dt> +<dd> +<p><font face="Lucida Grande,Helvetica,Arial">emulated as Caps-0 (Delete)</font></p> - </dd> - <dt> <span class="term"><font face="Lucida Grande,Helvetica,Arial"><em>Esc</em></font></span></dt> - <dd> - <p><font face="Lucida Grande,Helvetica,Arial">emulated as Caps-1 +</dd> +<dt><span class="term"><font face= +"Lucida Grande,Helvetica,Arial"><em>Esc</em></font></span></dt> +<dd> +<p><font face="Lucida Grande,Helvetica,Arial">emulated as Caps-1 (Edit)</font></p> - </dd> - <dt> <span class="term"><font face="Lucida Grande,Helvetica,Arial"><em>Caps +</dd> +<dt><span class="term"><font face= +"Lucida Grande,Helvetica,Arial"><em>Caps Lock</em></font></span></dt> - <dd> - <p><font face="Lucida Grande,Helvetica,Arial">emulated as +<dd> +<p><font face="Lucida Grande,Helvetica,Arial">emulated as Caps-2</font></p> - </dd> - <dt> <span class="term"><font face="Lucida Grande,Helvetica,Arial"><em>Cursor +</dd> +<dt><span class="term"><font face= +"Lucida Grande,Helvetica,Arial"><em>Cursor keys</em></font></span></dt> - <dd> - <p><font face="Lucida Grande,Helvetica,Arial">emulated as +<dd> +<p><font face="Lucida Grande,Helvetica,Arial">emulated as Caps-5/6/7/8 (as appropriate)</font></p> - </dd> - <dt> <span class="term"><font face="Lucida Grande,Helvetica,Arial"><em>Tab</em></font></span></dt> - <dd> - <p><font face="Lucida Grande,Helvetica,Arial">emulated as -emulated as Caps Shift-Symbol Shift (Extended Mode)</font></p> - </dd> +</dd> +<dt><span class="term"><font face= +"Lucida Grande,Helvetica,Arial"><em>Tab</em></font></span></dt> +<dd> +<p><font face="Lucida Grande,Helvetica,Arial">emulated as emulated +as Caps Shift-Symbol Shift (Extended Mode)</font></p> +</dd> </dl> </div> -<p> -<font face="Lucida Grande,Helvetica,Arial">Some further punctuation -keys are supported, if they exist on your -keyboard - `<span class="emphasis"><em>,</em></span>', -`<span class="emphasis"><em><tt class="literal">.</tt></em></span>', -`<span class="emphasis"><em>/</em></span>', -`<span class="emphasis"><em>;</em></span>', -`<span class="emphasis"><em>'</em></span>', -`<span class="emphasis"><em>#</em></span>', -`<span class="emphasis"><em>-</em></span>', and -`<span class="emphasis"><em>=</em></span>'. These are mapped to the -appropriate symbol-shifted keys on the +<p><font face="Lucida Grande,Helvetica,Arial">Some further +punctuation keys are supported, if they exist on your keyboard - +'<span class="emphasis"><em>,</em></span>', '<span class= +"emphasis"><em><tt class="literal">.</tt></em></span>', +'<span class="emphasis"><em>/</em></span>', '<span class= +"emphasis"><em>;</em></span>', '<span class= +"emphasis"><em>'</em></span>', '<span class= +"emphasis"><em>#</em></span>', '<span class= +"emphasis"><em>-</em></span>', '_', '+', ';', ':', ''', '"', +'<', '>' and '<span class="emphasis"><em>=</em></span>'. +These are mapped to the appropriate symbol-shifted keys on the Spectrum.</font></p> <!-- AppleSegEnd --> +</body> +</html> Modified: trunk/fuse/fusepb/resources/Fuse Help/html/menus.html =================================================================== --- trunk/fuse/fusepb/resources/Fuse Help/html/menus.html 2006-11-26 08:35:28 UTC (rev 238) +++ trunk/fuse/fusepb/resources/Fuse Help/html/menus.html 2006-11-26 08:44:30 UTC (rev 239) @@ -1,5 +1,10 @@ -<!-- AppleSegStart="Menus And Keys" --><font - face="Lucida Grande,Helvetica,Arial"><a name="Menus And Keys"></a><!-- AppleSegDescription="This section describes the Fuse menus and options." --></font> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +<!-- AppleSegStart="Menus And Keys" --> +</head> +<body> +<font face="Lucida Grande,Helvetica,Arial"><a name="Menus And Keys"></a><!-- AppleSegDescription="This section describes the Fuse menus and options." --></font> <div class="refsect1" xml:lang="en" lang="en"> <h2><font face="Lucida Grande,Helvetica,Arial">Menus And Keys</font></h2> @@ -106,467 +111,11 @@ of the Spectrum's memory to a file. Select the file you wish to save to, followed by the location and length of data you wish to save.</font></p> -<p> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Options, -General...</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">Display the General -Options dialog, letting you configure Fuse.</font></p> -<p><font face="Lucida Grande,Helvetica,Arial">The options available -are:</font></p> -<p> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Emulation -speed</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">Set how fast Fuse will -attempt to emulate the Spectrum, as a percentage of the speed at -which the real machine runs. If your machine isn't fast enough to -keep up with the requested speed, Fuse will just run as fast as it -can. Note that if the emulation speed is not exactly 100%, no sound -output will be produced.</font></p> -<p> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Screen -refresh rate</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">Specify the frame rate, -the ratio of spectrum frame updates to real frame updates. This is -useful if your machine is having trouble keeping up with the -spectrum screen updates.</font></p> -<p> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Issue -2 keyboard</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">Early versions of the -Spectrum used a different value for unused bits on the keyboard -input ports, and a few games depended on the old value of these -bits. Enabling this option switches to the old value, to let you -run them.</font></p> -<p> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Use -tape traps</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">Ordinarily, Fuse -intercepts calls to the ROM tape-loading routine in order to load -from tape files more quickly when possible. But this can (rarely) -interfere with TZX loading; disabling this option avoids the -problem at the cost of slower (i.e. always real-time) tape-loading. -When tape-loading traps are disabled, you need to start tape -playback manually, by choosing the<span class="emphasis"><em>Tape, -Play</em></span> menu item.</font></p> -<p> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Fastloading</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">If this option is -enabled, then Fuse will run at the fastest possible speed when the -virtual tape is playing, thus dramatically reducing the time it -takes to load programs. You may wish to disable this option if you -wish to stop the tape at a specific point.</font> -</p> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Auto-load -media</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">On many occasions when -you open a tape or disk file, it's because it's got a program in -you want to load and run. If this option is selected, this will -automatically happen for you when you open one of these files. To -use tapes or disks for saving data to, or for loading data into an -already running program, you'll want to turn this option -off.</font></p> -<p> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Use -.slt traps</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">The multi-load aspect of -SLT files requires a trap instruction to be supported. This -instruction is not generally used except for this trap, but since -it's not inconceivable that a program could be wanting to use the -real instruction instead, you can choose whether to support the -trap or not.</font></p> -<p> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Allow -writes to ROM</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">If this option is -selected, Fuse will happily allow programs to overwrite what would -normally be ROM. This probably isn't very useful in most -circumstances, especially as the 48K ROM overwrites parts of -itself.</font></p> -<p> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Auto-save -settings</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">If this option is -selected, Fuse will automatically write its currently selected -options to its configuration file on exit. If you turn this option -off, you'll have to manually use -<span class="emphasis"><em>Options, Save</em></span> afterwards to -ensure that this setting gets written to Fuse's configuration -file.</font></p> -<p> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Black -and white TV</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">This option allows you -to choose whether to simulate a colour or black and white -television.</font></p> -<p> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Show -tape/disk status</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">Enables the status icons -showing whether the disk and tape are being accessed.</font></p> -<p> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Options, -Sound...</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">Display the Sound -Options dialog, letting you configure Fuse's sound -output.</font></p> -<p> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Enabled</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">Specify whether sound -output should be enabled at all. When this option is disabled, Fuse -will not make any sound.</font></p> -<p> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Volume</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">Slider for overall Fuse -volume.</font></p> -<p> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Loading -sounds</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">Normally, Fuse emulates -tape-loading noise when loading from TAPs or TZXs in real-time, -albeit at a deliberately lower volume than on a real Spectrum. You -can disable this option to eliminate the loading noise -entirely.</font></p> -<p> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>AY -stereo separation</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">By default, the sound -output is mono, since this is all you got from an unmodified -Spectrum. But enabling this option gives you so-called ACB stereo -(for sound from the 128's AY-3-8912 sound chip). This actually -works a little better than ACB stereo modifications for the machine -itself, since it uses stereo positioning rather than simply playing -on one channel only.</font></p> -<p> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Beeper -pseudo-stereo</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">The Spectrum beeper is -inherently mono, but enabling this option adds a simple fake-stereo -effect. While the slight echo involved can sometimes make beeper -noise sound worse, in many cases it gives an acceptable -result.</font></p> -<p> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Options, -Peripherals...</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">Display the Peripherals -Options dialog, letting you configure the peripherals which Fuse -will consider to be attached to the emulated machines.</font></p> -<p> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Kempston -joystick</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">If this option is -selected, Fuse will emulate a Kempston joystick interface (probably -the most widely supported type on the Spectrum). Note that this -option is basically equivalent to plugging the interface itself -into a Spectrum, not to connecting a joystick; this affects how the -Spectrum responds to a read of input port 31. To use a Kempston -joystick in a game, this option must be enabled, and you must also -select a Kempston joystick the <span class="emphasis"><em>Options, -Joysticks...</em></span> menu.</font></p> -<p> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Command-J</em></font></span> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Keyboard -joystick</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">If this option is -selected and the Keyboard joystick is configured via the -<span class="emphasis"><em>Options, -Joysticks...</em></span> menu, -the q, a, o, p, and space keys will not have -their normal effect and will be used as the up, down, left, right and fire -buttons of the joystick respectively. This setting can be toggled with -<span class="emphasis"><em>Command-J</em></span>. -</font></p> -<p> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Interface -II</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">If this option is -selected, Fuse will emulate a cartridge port as found on the -Interface II. Cartridges can then be inserted and removed via the -<span class="emphasis"><em>Media, Cartridge, Interface -II</em></span> menu. Note that the Pentagon, Scorpion, Interface -II, ZXATASP and ZXCF all use the same hardware mechanism for -accessing some of their extended features, so only one of these -should be selected at once or unpredictable behaviour will -occur.</font></p> -<p> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Emulate -printers</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">Specify whether -emulation should include a printer. See the -<span class="emphasis"><em>Printer Emulation</em></span> section -for more details.</font></p> -<p> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Simple -8-bit IDE</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">If this option is -selected, Fuse will emulate the simple 8-bit IDE interface as used -by the Spectrum +3e, and allow hard disks to be connected and -disconnected via the <span class="emphasis"><em>Media, IDE, Simple -8-bit</em></span> menu.</font></p> -<p> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>ZXATASP -interface</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">If this option is -selected, Fuse will emulate the ZXATASP interface, which provides -both additional RAM and an IDE interface. See the -<span class="emphasis"><em>ZXATASP AND ZXCF</em></span> section for -more details.</font></p> -<p> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>ZXATASP -upload</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">This option controls the -state of the ZXATASP upload jumper. See the -<span class="emphasis"><em>ZXATASP AND ZXCF</em></span> section for -more details.</font></p> -<p> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>ZXATASP -write protect</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">This option controls the -state of the ZXATASP write protect jumper. See the -<span class="emphasis"><em>ZXATASP AND ZXCF</em></span> section for -more details.</font></p> -<p> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>ZXCF -interface</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">If this option is -selected, Fuse will emulate the ZXCF interface, which provides both -additional RAM and a CompactFlash interface. See the -<span class="emphasis"><em>ZXATASP AND ZXCF</em></span> section for -more details.</font></p> -<p> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>ZXCF -upload</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">This option controls the -state of the ZXCF upload jumper. See the -<span class="emphasis"><em>ZXATASP AND ZXCF</em></span> section for -more details.</font></p> -<p> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Options, -RZX</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">Display the RZX Options -dialog, letting you configure how Fuse's deals with RZX emulator -input recordings.</font></p> -<p> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Compress -data</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">If this option is -selected, any RZX files written by Fuse will be compressed. This is -generally a good thing as it makes the files significantly smaller, -and you probably want to turn it off only if you're debugging the -RZX files or there's some other program which doesn't support -compressed RZX files.</font></p> -<p> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Competition -mode</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">Any input recordings -which are started when this option is selected will be made in -`competition mode'. In essence, this means that Fuse will act just -like a real Spectrum would: you can't load snapshots, pause the -emulation in any way, change the speed or anything that you -couldn't do on the real machine. If any of these things are -attempted, or if the emulated Fuse is running more than 5% faster -or slower than normal Spectrum speed, then the recording will -immediately be stopped.</font></p> -<p><font face="Lucida Grande,Helvetica,Arial">Recordings made with -competition mode active will be digitally signed, in theory to -`certify' that it was made with the above restrictions in place. -<span class="emphasis"><em>However, this procedure is not secure -(and cannot be made so), so the presence of any signature on an RZX -file should not be taken as providing proof that it was made with -competition mode active.</em></span> This feature is included in -Fuse solely as it was one of the requirements for Fuse to be used -in an on-line tournament.</font></p> -<p> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Competition -code</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">The numeric code entered -here will be written into any RZX files made in competition mode. -This is another feature for on-line tournaments which can be used -to `prove' that the recording was made after a specific code was -released. If you're not playing in such a tournament, you can -safely ignore this option.</font></p> -<p> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Always -embed snapshot</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">Specify whether a -snapshot should be embedded in an RZX file when recording is -started from an existing snapshot.</font></p> -<p> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Options, -Joysticks...</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">Fuse can emulate many of -the common types of joystick which were available for the Spectrum. -The input for these emulated joysticks can be taken from real -joysticks attached to the emulating machine, or from the q, a, o, -p, and space keys on the emulating machines keyboard, configured -via the <span class="emphasis"><em>Real device</em></span> option. -You can also configure which joystick axes to use on gamepads with -more than one joystick/pad. Note that when using the keyboard to -emulate a joystick, the q, a, o, p, and space keys will not have -their normal effect (to avoid problems with games which do things -like use p for pause when using a joystick). See also the -<span class="emphasis"><em>Keyboard joystick</em></span> -option on the -<span class="emphasis"><em>Options, Peripherals...</em></span> -menu.</font></p> -<p><font face="Lucida Grande,Helvetica,Arial">Each of the joysticks -(including the `fake' keyboard joystick) can be configured to -emulate any one of the following joystick types:</font></p> -<p style="margin-left: 40px;"> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>None</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">No joystick: any input -will simply be ignored.</font></p> -<p style="margin-left: 40px;"> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Cursor</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">A cursor joystick, -equivalent to pressing 5 (left), 6 (down), 7 (up), 8 (right), and 0 -(fire).</font></p> -<p style="margin-left: 40px;"> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Kempston</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">A Kempston joystick, -read from input port 31. Note that the -<span class="emphasis"><em>Options, Peripherals, Kempston -interface</em></span> option must also be set for the input to be -recognised.</font></p> -<p style="margin-left: 40px;"> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Sinclair -1</em></font></span> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Sinclair -2</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">The `left' and `right' -Sinclair joysticks, equivalent to pressing 1 (left), 2 (right), 3 -(down), 4 (up), and 5 (fire), or 6 (left), 7 (right), 8 (down), 9 -(up), and 0 (fire) respectively.</font></p> -<p style="margin-left: 40px;"> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Timex -1</em></font></span> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Timex -2</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">The `left' and `right' -joysticks as attached to the TC2068's built-in joystick -interface.</font></p> -<p><font face="Lucida Grande,Helvetica,Arial">For the real -joysticks, it is also possible to configure what effect each button -on the joystick will have: this can be Joystick Fire, equivalent to -presing the emulated joystick's fire button, Nothing, meaning to -have no effect, or any Spectrum key, meaning that pressing that -button will be equivalent to pressing that Spectrum key.</font></p> -<p> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Options, -Select ROMs...</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">An individual dialog is -available for each Spectrum variant emulated by Fuse which allows -selection of the ROM(s) used by that machine. Simply select the ROM -you wish to use, and then reset the Spectrum for the change to take -effect.</font></p> -<p> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Options, -Graphics Filter...</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">Select the graphics -filter currently in use. See the -<span class="emphasis"><em>GRAPHICS FILTERS</em></span> section for -more details.</font></p> -<p> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Options, -Printer...</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">Display the Printer -Options dialog, letting you modify which files Fuse uses for -printer text and graphics output.</font></p> -<p> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Options, -Save</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">This will cause Fuse's -current preferences to be written to disk, from which they will be -picked up again when Fuse is restarted.</font></p> -<p> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Options, +<p><span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Machine, Reset</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">This will cause Fuse's -current preferences to be discarded and replaced with the default -values as shipped.</font></p> -<p> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Machine, -Reset</em></font></span> <font face="Lucida Grande,Helvetica,Arial">Reset the emulated Spectrum.</font></p> -<p> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Machine, -Select...</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">Choose a type of -Spectrum to emulate. An brief overview of the Sinclair, Amstrad and -Timex computers can be found at -<a - href="http://www.nvg.ntnu.no/sinclair/computers/zxspectrum/zxspectrum.htm">http://www.nvg.ntnu.no/sinclair/computers/zxspectrum/zxspectrum.htm</a>, -while more technical information can be found at -<a href="http://www.worldofspectrum.org/faq/reference/reference.htm">http://www.worldofspectrum.org/faq/reference/reference.htm</a>.</font></p> -<p style="margin-left: 40px;"> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Spectrum -16K</em></font></span> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Spectrum -48K</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">The original machines as -released by Sinclair in 1982 with 16 or 48K of RAM -respectively.</font></p> -<p style="margin-left: 40px;"> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Spectrum -128K</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">The 128K machine as -released by Sinclair in 1985 (Spain) or 1986 (UK).</font></p> -<p style="margin-left: 40px;"> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Spectrum -+2</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">The first machine -released by Amstrad, in 1986. From an emulation point of view, the -+2 is virtually identical to the 128K.</font></p> -<p style="margin-left: 40px;"> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Spectrum -+2A</em></font></span> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Spectrum -+3</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">The two machines -released by Amstrad in 1988. Technically very similar to each -other, except that the +3 features a 3" disk drive while the +2A -does not.</font></p> -<p style="margin-left: 40px;"> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Spectrum -+3e</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">A +3 with modified ROMs -allowing access to IDE hard disks via the simple 8-bit interface, -as activated from the <span class="emphasis"><em>Options, -Peripherals</em></span> dialog. See the -<a href="http://www.zxplus3e.plus.com/">http://www.zxplus3e.plus.com/</a> -for more details.</font></p> -<p style="margin-left: 40px;"> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Timex -TC2048</em></font></span> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Timex -TC2068</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">The variants of the -Spectrum as released by Timex in Portugal. See -<a href="http://www.worldofspectrum.org/faq/reference/tmxreference.htm">http://www.worldofspectrum.org/faq/reference/tmxreference.htm</a> -for more details.</font></p> -<p style="margin-left: 40px;"> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Pentagon -128K</em></font></span> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Scorpion -ZS 256</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">Two Russian clones of -the Spectrum. Some details can be found at -<a href="http://www.worldofspectrum.org/rusfaq/index.html">http://www.worldofspectrum.org/rusfaq/index.html</a>, -but possibly the most important thing to note about both these -machines is that they have built in 3.5" disk drives, accessed via -the Betadisk interface and TR-DOS (the Technology Research Disk -Operating System).</font></p> -<p style="margin-left: 40px;"> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Spectrum -SE</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">A recent variant -designed by Andrew Owen and Jarek Adamski, which is possibly best -thought of as a cross between the 128K machine and the Timex -variants, allowing 272K of RAM to be accessed. Some more details -are available at -<a href="http://www.worldofspectrum.org/faq/reference/sereference.htm">http://www.worldofspectrum.org/faq/reference/sereference.htm</a>.</font></p> -<p> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Machine, +<p><span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Machine, Debugger...</em></font></span> <font face="Lucida Grande,Helvetica,Arial">Start the monitor/debugger. See the @@ -839,3 +388,5 @@ generated with each key from (48K) BASIC.</font></span></p> <!-- AppleSegEnd --> +</body> +</html> Copied: trunk/fuse/fusepb/resources/Fuse Help/html/preferences.html (from rev 232, trunk/fuse/fusepb/resources/Fuse Help/html/menus.html) =================================================================== --- trunk/fuse/fusepb/resources/Fuse Help/html/preferences.html (rev 0) +++ trunk/fuse/fusepb/resources/Fuse Help/html/preferences.html 2006-11-26 08:44:30 UTC (rev 239) @@ -0,0 +1,531 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +<!-- AppleSegStart="Preferences" --> +</head> +<body> +<font face="Lucida Grande,Helvetica,Arial"><a name="Preferences"></a><!-- AppleSegDescription="This section describes the Fuse preferences dialog." --></font> +<div class="refsect1" xml:lang="en" lang="en"> +<h2><font face="Lucida Grande,Helvetica,Arial">Preferences</font></h2> +</div> +<p><font face="Lucida Grande,Helvetica,Arial">Fuse has many options to +control various details of the emulator and the machine being emulated.<br> +</font></p> +<p><span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Reset +Preferences</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">This is available at the +bottom of each peferences screen and will cause all of Fuse's +current preferences to be discarded and replaced with the default +values as shipped.</font></p> +<h3><font face="Lucida Grande,Helvetica,Arial">The <span + style="font-style: italic;">General</span> tab</font></h3> +<p><font face="Lucida Grande,Helvetica,Arial">The General +Options tab lets you configure miscellaneous Fuse options.</font></p> +<p> +<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Emulation +speed</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">Set how fast Fuse will +attempt to emulate the Spectrum, as a percentage of the speed at +which the real machine runs. If your machine isn't fast enough to +keep up with the requested speed, Fuse will just run as fast as it +can. Note that if the emulation speed is not exactly 100%, no sound +output will be produced.</font></p> +<p> +<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Screen +refresh rate</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">Specify the frame rate, +the ratio of spectrum frame updates to real frame updates. This is +useful if your machine is having trouble keeping up with the +spectrum screen updates.</font></p> +<p> +<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Issue +2 keyboard</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">Early versions of the +Spectrum used a different value for unused bits on the keyboard +input ports, and a few games depended on the old value of these +bits. Enabling this option switches to the old value, to let you +run those games.</font></p> +<p> +<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Use +tape traps</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">Ordinarily, Fuse +intercepts calls to the ROM tape-loading routine in order to load +from tape files more quickly when possible. But this can (rarely) +interfere with TZX loading; disabling this option avoids the +problem at the cost of slower (i.e. always real-time) tape-loading. +When tape-loading traps are disabled, you need to start tape +playback manually, by choosing the<span class="emphasis"><em>Tape, +Play</em></span> menu item.</font></p> +<p> +<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Fast +tape loading</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">If this option is +enabled, then Fuse will run at the fastest possible speed when the +virtual tape is playing, thus dramatically reducing the time it +takes to load programs. You may wish to disable this option if you +wish to stop the tape at a specific point.</font> +</p> +<p> +<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Detect +tape loaders</em></font></span> <font + face="Lucida Grande,Helvetica,Arial">If this option is enabled, Fuse +will attempt to detect when a loading routine is in progress, and then +automatically start the virtual tape<br> +to load the program in. This is done by using a heuristic to identify a +loading routine, so is by no means infalliable, but works in most cases.</font> +</p> +<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Auto-load +media</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">On many occasions when +you open a tape or disk file, it's because it's got a program in +you want to load and run. If this option is selected, this will +automatically happen for you when you open one of these files. To +use tapes or disks for saving data to, or for loading data into an +already running program, you'll want to turn this option +off.</font> +<p><span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Use +.slt traps</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">The multi-load aspect of +SLT files requires a trap instruction to be supported. This +instruction is not generally used except for this trap, but since +it's not inconceivable that a program could be wanting to use the +real instruction instead, you can choose whether to support the +trap or not.</font></p> +<p> +<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Confirm +actions </em></font></span><font face="Lucida Grande,Helvetica,Arial">Specify +whether `dangerous' actions (those which could cause data loss, for +example resetting the Spectrum) require confirmation before occuring.</font></p> +<p><span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Allow +writes to ROM</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">If this option is +selected, Fuse will happily allow programs to overwrite what would +normally be ROM. This probably isn't very useful in most +circumstances, especially as the 48K ROM overwrites parts of +itself.</font></p> +<p><span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Show +tape/disk status</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">Enables the status icons +showing whether the disk and tape are being accessed.</font></p> +<p><span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Set +joysticks on snapshot load</em></font></span> <font + face="Lucida Grande,Helvetica,Arial">Controls whether Fuse should +allow snapshot files to override your current joystick configuration.</font></p> +<h3><font face="Lucida Grande,Helvetica,Arial">The <span + style="font-style: italic;">Sound</span> tab</font></h3> +<p><font face="Lucida Grande,Helvetica,Arial">The Sound +Options tab lets you configure Fuse's sound +output.</font></p> +<p> +<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Enabled</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">Specify whether sound +output should be enabled at all. When this option is disabled, Fuse +will not make any sound.</font></p> +<p> +<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Volume</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">Slider for overall Fuse +volume.</font></p> +<p> +<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Loading +sounds</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">Normally, Fuse emulates +tape-loading noise when loading from TAPs or TZXs in real-time, +albeit at a deliberately lower volume than on a real Spectrum. You +can disable this option to eliminate the loading noise +entirely.</font></p> +<p> +<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>AY +stereo separation</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">By default, the sound +output is mono, since this is all you got from an unmodified +Spectrum. But enabling this option gives you so-called ACB stereo +(for sound from the 128's AY-3-8912 sound chip). This actually +works a little better than ACB stereo modifications for the machine +itself, since it uses stereo positioning rather than simply playing +on one channel only.</font></p> +<p> +<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Beeper +pseudo-stereo</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">The Spectrum beeper is +inherently mono, but enabling this option adds a simple fake-stereo +effect. While the slight echo involved can sometimes make beeper +noise sound worse, in many cases it gives an acceptable +result.<br> +</font></p> +<h3><font face="Lucida Grande,Helvetica,Arial">The <span + style="font-style: italic;">Peripherals</span> tab</font></h3> +<p> +<font face="Lucida Grande,Helvetica,Arial">The Peripherals tab, lets +you configure the peripherals which Fuse +will consider to be attached to the emulated machines.<br> +</font></p> +<h4><font face="Lucida Grande,Helvetica,Arial">Mass storage options</font></h4> +<p><span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>None</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">If this option is +selected, Fuse will not emulate any mass storage device (except for the +integrated disk devices on the +3, Pentagon and Scorpion).</font></p> +<p> +<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Interface +I</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">If this option is +selected, Fuse will emulate the Sinclair Interface I, and allow +microdrive cartriges to be inserted and removed via the <span + class="emphasis"><em>Media, Interface I, Microdrive</em></span> menus.</font></p> +<p> +<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Simple +8-bit IDE</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">If this option is +selected, Fuse will emulate the simple 8-bit IDE interface as used +by the Spectrum +3e, and allow hard disks to be connected and +disconnected via the <span class="emphasis"><em>Media, IDE, Simple +8-bit</em></span> menu.</font></p> +<p> +<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>ZXATASP +interface</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">If this option is +selected, Fuse will emulate the ZXATASP interface, which provides +both additional RAM and an IDE interface. See the +<span class="emphasis"><em>ZXATASP AND ZXCF</em></span> section for +more details.</font></p> +<p><span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>ZXCF +interface</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">If this option is +selected, Fuse will emulate the ZXCF interface, which provides both +additional RAM and a CompactFlash interface. See the +<span class="emphasis"><em>ZXATASP AND ZXCF</em></span> section for +more details.<br> +</font></p> +<p><span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>DivIDE +interface</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">If this option is +selected, Fuse will emulate the DivIDE interface, which provides both +additional RAM and a IDE interface. See the <span class="emphasis"><em>DivIDE</em></span> +section for +more details.</font></p> +<h5><font face="Lucida Grande,Helvetica,Arial">ZXATASP options</font></h5> +<p><span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>ZXATASP +upload</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">This option controls the +state of the ZXATASP upload jumper. See the +<span class="emphasis"><em>ZXATASP AND ZXCF</em></span> section for +more details.</font></p> +<p> +<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>ZXATASP +write protect</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">This option controls the +state of the ZXATASP write protect jumper. See the +<span class="emphasis"><em>ZXATASP AND ZXCF</em></span> section for +more details.</font></p> +<h5><font face="Lucida Grande,Helvetica,Arial">ZXCF options</font></h5> +<p> +<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>ZXCF +upload</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">This option controls the +state of the ZXCF upload jumper. See the +<span class="emphasis"><em>ZXATASP AND ZXCF</em></span> section for +more details.<br> +</font></p> +<h5><font face="Lucida Grande,Helvetica,Arial">DivIDE options</font></h5> +<p><span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>DivIDE +write protect</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">This option controls the +state of the DivIDE EEPROM write protect jumper (E). See the <span + class="emphasis"><em>DivIDE</em></span> section for +more details.<br> +</font></p> +<h5><font face="Lucida Grande,Helvetica,Arial">Interface I options</font></h5> +<p><span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>MDR +cartridge len</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">This option controls the +number of blocks in a new microdrive cartridge. 0 means select a random +capacity, otherwise selects the number of blocks available. See the <span + class="emphasis"><em>Interface I</em></span> section for +more details.<br> +</font></p> +<h4><font face="Lucida Grande,Helvetica,Arial">Printer options</font></h4> +<p><span class="emphasis"></span><font + face="Lucida Grande,Helvetica,Arial">See the +<span class="emphasis"><em>Printer Emulation</em></span> section +for more details.<br> +</font></p> +<p><span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Emulate +printers</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">Specify whether +emulation should include a printer.<br> +</font></p> +<p><span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Graphic +Output File</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">Specify the filename and +location for the printer graphics output file.<br> +</font></p> +<p><span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Text +Output File</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">Specify the filename and +location for the printer text output file.<br> +</font></p> +<h4><font face="Lucida Grande,Helvetica,Arial">Other options</font></h4> +<p> +<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Kempston +joystick interface</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">If this option is +selected, Fuse will emulate a Kempston joystick interface (probably +the most widely supported type on the Spectrum). Note that this +option is basically equivalent to plugging the interface itself +into a Spectrum, not to connecting a joystick; this affects how the +Spectrum responds to a read of input port 31. To use a Kempston +joystick in a game, this option must be enabled, and you must also +select a Kempston joystick the <span class="emphasis"><em>Options, +Joysticks...</em></span> menu.</font></p> +<p> +<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Kempston +mouse</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">If this option +is selected, Fuse will emulate a Kempston +mouse interface. +If you're using Fuse full-screen, your mouse is automatically used as +if +attached to the Kempston interface. Otherwise, you'll need to click on +the +Spectrum display in order to tell Fuse to grab the pointer (and make it +invisible); to tell Fuse to release it, +press Escape.</font></p> +<p><span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Interface +II</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">If this option is +selected, Fuse will emulate a cartridge port as found on the +Interface II. Cartridges can then be inserted and removed via the +<span class="emphasis"><em>Media, Cartridge, Interface +II</em></span> menu. Note that the Pentagon, Scorpion, Interface +II, ZXATASP and ZXCF all use the same hardware mechanism for +accessing some of their extended features, so only one of these +should be selected at once or unpredictable behaviour will +occur.<br> +</font></p> +<h3><font face="Lucida Grande,Helvetica,Arial">The <span + style="font-style: italic;">RZX</span> tab</font></h3> +<p><span class="emphasis"></span><font + face="Lucida Grande,Helvetica,Arial">The RZX options tab, lets you +configure how Fuse deals with RZX emulator +input recordings.</font></p> +<p> +<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Compress +data</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">If this option is +selected, any RZX files written by Fuse will be compressed. This is +generally a good thing as it makes the files significantly smaller, +and you probably want to turn it off only if you're debugging the +RZX files or there's some other program which doesn't support +compressed RZX files.</font></p> +<p> +<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Competition +mode</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">Any input recordings +which are started when this option is selected will be made in +`competition mode'. In essence, this means that Fuse will act just +like a real Spectrum would: you can't load snapshots, pause the +emulation in any way, change the speed or anything that you +couldn't do on the real machine. If any of these things are +attempted, or if the emulated Fuse is running more than 5% faster +or slower than normal Spectrum speed, then the recording will +immediately be stopped.</font></p> +<p><font face="Lucida Grande,Helvetica,Arial">Recordings made with +competition mode active will be digitally signed, in theory to +`certify' that it was made with the above restrictions in place. +<span class="emphasis"><em>However, this procedure is not secure +(and cannot be made so), so the presence of any signature on an RZX +file should not be taken as providing proof that it was made with +competition mode active.</em></span> This feature is included in +Fuse solely as it was one of the requirements for Fuse to be used +in an on-line tournament.</font></p> +<p> +<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Competition +code</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">The numeric code entered +here will be written into any RZX files made in competition mode. +This is another feature for on-line tournaments which can be used +to `prove' that the recording was made after a specific code was +released. If you're not playing in such a tournament, you can +safely ignore this option.</font></p> +<p> +<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Always +embed snapshot</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">Specify whether a +snapshot should be embedded in an RZX file when recording is +started from an existing snapshot.<br> +</font></p> +<h3><font face="Lucida Grande,Helvetica,Arial">The <span + style="font-style: italic;">Joysticks</span> tab</font></h3> +<p><font face="Lucida Grande,Helvetica,Arial">Fuse can emulate many of +the common types of joystick which were available for the Spectrum. +The input for these emulated joysticks can be taken from real +joysticks attached to the emulating machine, or from the q, a, o, +p, and space keys on the emulating machines keyboard, configured +via the <span class="emphasis"><em>Real device</em></span> option. +You can also configure which joystick axes to use on gamepads with +more than one joystick/pad. Note that when using the keyboard to +emulate a joystick, the q, a, o, p, and space keys will not have +their normal effect (to avoid problems with games which do things +like use p for pause when using a joystick). See also the +<span class="emphasis"><em>Keyboard joystick</em></span> +option.</font></p> +<p><font face="Lucida Grande,Helvetica,Arial">Each of the joysticks +(including the `fake' keyboard joystick) can be configured to +emulate any one of the following joystick types:</font></p> +<p style="margin-left: 40px;"> +<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>None</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">No joystick: any input +will simply be ignored.</font></p> +<p style="margin-left: 40px;"> +<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Cursor</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">A cursor joystick, +equivalent to pressing 5 (left), 6 (down), 7 (up), 8 (right), and 0 +(fire).</font></p> +<p style="margin-left: 40px;"> +<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Kempston</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">A Kempston joystick, +read from input port 31. Note that the +<span class="emphasis"><em>Options, Peripherals, Kempston +interface</em></span> option must also be set for the input to be +recognised.</font></p> +<p style="margin-left: 40px;"> +<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Sinclair +1</em></font></span> +<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Sinclair +2</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">The `left' and `right' +Sinclair joysticks, equivalent to pressing 1 (left), 2 (right), 3 +(down), 4 (up), and 5 (fire), or 6 (left), 7 (right), 8 (down), 9 +(up), and 0 (fire) respectively.</font></p> +<p style="margin-left: 40px;"> +<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Timex +1</em></font></span> +<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Timex +2</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">The `left' and `right' +joysticks as attached to the TC2068's built-in joystick +interface.</font></p> +<p><font face="Lucida Grande,Helvetica,Arial">For the real +joysticks, it is also possible to configure what effect each button +on the joystick will have: this can be Joystick Fire, equivalent to +presing the emulated joystick's fire button, Nothing, meaning to +have no effect, or any Spectrum key, meaning that pressing that +button will be equivalent to pressing that Spectrum key.<br> +</font></p> +<p><span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Command-J</em></font></span> +<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Keyboard +joystick</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">If this option is +selected and the Keyboard joystick is configured via the +<span class="emphasis"><em>Options, +Joysticks...</em></span> menu, +the q, a, o, p, and space keys will not have +their normal effect and will be used as the up, down, left, right and +fire +buttons of the joystick respectively. This setting can be toggled with +<span class="emphasis"><em>Command-J</em></span>.<br> +</font></p> +<h3><font face="Lucida Grande,Helvetica,Arial">The <span + style="font-style: italic;">ROMs</span> tab</font></h3> +<p><font face="Lucida Grande,Helvetica,Arial">An individual setting is +available for each Spectrum variant emulated by Fuse which allows +selection of the ROM(s) used by that machine. Simply select the ROM +you wish to use, and then reset the Spectrum for the change to take +effect.<br> +</font></p> +<h3><font face="Lucida Grande,Helvetica,Arial">The <span + style="font-style: italic;">Machine</span> tab</font></h3> +<p><font face="Lucida Grande,Helvetica,Arial">Choose a type of +Spectrum to emulate. An brief overview of the Sinclair, Amstrad and +Timex computers can be found at +<a + href="http://www.nvg.ntnu.no/sinclair/computers/zxspectrum/zxspectrum.htm">http://www.nvg.ntnu.no/sinclair/computers/zxspectrum/zxspectrum.htm</a>, +while more technical information can be found at +<a href="http://www.worldofspectrum.org/faq/reference/reference.htm">http://www.worldofspectrum.org/faq/reference/reference.htm</a>.</font></p> +<p style="margin-left: 40px;"> +<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Spectrum +16K</em></font></span> +<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Spectrum +48K</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">The original machines as +released by Sinclair in 1982 with 16 or 48K of RAM +respectively.</font></p> +<p style="margin-left: 40px;"> +<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Spectrum +128K</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">The 128K machine as +released by Sinclair in 1985 (Spain) or 1986 (UK).</font></p> +<p style="margin-left: 40px;"> +<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Spectrum ++2</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">The first machine +released by Amstrad, in 1986. From an emulation point of view, the ++2 is virtually identical to the 128K.</font></p> +<p style="margin-left: 40px;"> +<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Spectrum ++2A</em></font></span> +<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Spectrum ++3</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">The two machines +released by Amstrad in 1988. Technically very similar to each +other, except that the +3 features a 3" disk drive while the +2A +does not.</font></p> +<p style="margin-left: 40px;"> +<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Spectrum ++3e</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">A +3 with modified ROMs +allowing access to IDE hard disks via the simple 8-bit interface, +as activated from the <span class="emphasis"><em>Options, +Peripherals</em></span> dialog. See the +<a href="http://www.zxplus3e.plus.com/">http://www.zxplus3e.plus.com/</a> +for more details.<br> +</font></p> +<p style="margin-left: 40px;"><span class="emphasis"><font + face="Lucida Grande,Helvetica,Arial"><em>Timex +TS2068</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">The NTSC variant of the +Spectrum as released by Timex in North America.</font></p> +<p style="margin-left: 40px;"> +<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Timex +TC2048</em></font></span> +<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Timex +TC2068</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">The variants of the +Spectrum as released by Timex in Portugal. See +<a href="http://www.worl... [truncated message content] |
From: <fr...@us...> - 2006-11-26 08:35:32
|
Revision: 238 http://svn.sourceforge.net/fuse-for-macosx/?rev=238&view=rev Author: fredm Date: 2006-11-26 00:35:28 -0800 (Sun, 26 Nov 2006) Log Message: ----------- Remove "Auto-save settings" preference as we no longer have manual preference saving support as it is unlike the standard approach on OS X. Modified Paths: -------------- trunk/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib Modified: trunk/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib =================================================================== --- trunk/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib 2006-11-19 12:09:08 UTC (rev 237) +++ trunk/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib 2006-11-26 08:35:28 UTC (rev 238) @@ -11,32 +11,32 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>1551</integer> + <integer>1528</integer> </dict> <key>NSAccessibilityConnectors</key> <dict> <key>CF$UID</key> - <integer>1548</integer> + <integer>1525</integer> </dict> <key>NSAccessibilityOidsKeys</key> <dict> <key>CF$UID</key> - <integer>1549</integer> + <integer>1526</integer> </dict> <key>NSAccessibilityOidsValues</key> <dict> <key>CF$UID</key> - <integer>1550</integer> + <integer>1527</integer> </dict> <key>NSClassesKeys</key> <dict> <key>CF$UID</key> - <integer>1248</integer> + <integer>1227</integer> </dict> <key>NSClassesValues</key> <dict> <key>CF$UID</key> - <integer>1249</integer> + <integer>1228</integer> </dict> <key>NSConnections</key> <dict> @@ -56,34 +56,34 @@ <key>NSNamesKeys</key> <dict> <key>CF$UID</key> - <integer>1185</integer> + <integer>1164</integer> </dict> <key>NSNamesValues</key> <dict> <key>CF$UID</key> - <integer>1186</integer> + <integer>1165</integer> </dict> <key>NSNextOid</key> <integer>1012</integer> <key>NSObjectsKeys</key> <dict> <key>CF$UID</key> - <integer>1178</integer> + <integer>1157</integer> </dict> <key>NSObjectsValues</key> <dict> <key>CF$UID</key> - <integer>1184</integer> + <integer>1163</integer> </dict> <key>NSOidsKeys</key> <dict> <key>CF$UID</key> - <integer>1250</integer> + <integer>1229</integer> </dict> <key>NSOidsValues</key> <dict> <key>CF$UID</key> - <integer>1251</integer> + <integer>1230</integer> </dict> <key>NSRoot</key> <dict> @@ -142,7 +142,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>73</integer> </dict> <key>NS.objects</key> <array> @@ -160,103 +160,103 @@ </dict> <dict> <key>CF$UID</key> - <integer>823</integer> + <integer>819</integer> </dict> <dict> <key>CF$UID</key> - <integer>830</integer> + <integer>826</integer> </dict> <dict> <key>CF$UID</key> - <integer>831</integer> + <integer>827</integer> </dict> <dict> <key>CF$UID</key> - <integer>835</integer> + <integer>831</integer> </dict> <dict> <key>CF$UID</key> - <integer>838</integer> + <integer>834</integer> </dict> <dict> <key>CF$UID</key> - <integer>841</integer> + <integer>837</integer> </dict> <dict> <key>CF$UID</key> - <integer>844</integer> + <integer>840</integer> </dict> <dict> <key>CF$UID</key> - <integer>847</integer> + <integer>843</integer> </dict> <dict> <key>CF$UID</key> - <integer>850</integer> + <integer>846</integer> </dict> <dict> <key>CF$UID</key> - <integer>853</integer> + <integer>849</integer> </dict> <dict> <key>CF$UID</key> - <integer>856</integer> + <integer>852</integer> </dict> <dict> <key>CF$UID</key> - <integer>859</integer> + <integer>855</integer> </dict> <dict> <key>CF$UID</key> - <integer>862</integer> + <integer>858</integer> </dict> <dict> <key>CF$UID</key> - <integer>865</integer> + <integer>861</integer> </dict> <dict> <key>CF$UID</key> - <integer>868</integer> + <integer>864</integer> </dict> <dict> <key>CF$UID</key> - <integer>871</integer> + <integer>867</integer> </dict> <dict> <key>CF$UID</key> - <integer>874</integer> + <integer>870</integer> </dict> <dict> <key>CF$UID</key> - <integer>877</integer> + <integer>873</integer> </dict> <dict> <key>CF$UID</key> - <integer>880</integer> + <integer>876</integer> </dict> <dict> <key>CF$UID</key> - <integer>883</integer> + <integer>879</integer> </dict> <dict> <key>CF$UID</key> - <integer>886</integer> + <integer>882</integer> </dict> <dict> <key>CF$UID</key> - <integer>889</integer> + <integer>885</integer> </dict> <dict> <key>CF$UID</key> - <integer>892</integer> + <integer>888</integer> </dict> <dict> <key>CF$UID</key> - <integer>895</integer> + <integer>891</integer> </dict> <dict> <key>CF$UID</key> - <integer>898</integer> + <integer>899</integer> </dict> <dict> <key>CF$UID</key> @@ -264,87 +264,91 @@ </dict> <dict> <key>CF$UID</key> - <integer>913</integer> + <integer>908</integer> </dict> <dict> <key>CF$UID</key> - <integer>915</integer> + <integer>910</integer> </dict> <dict> <key>CF$UID</key> - <integer>917</integer> + <integer>913</integer> </dict> <dict> <key>CF$UID</key> - <integer>920</integer> + <integer>915</integer> </dict> <dict> <key>CF$UID</key> - <integer>922</integer> + <integer>917</integer> </dict> <dict> <key>CF$UID</key> - <integer>924</integer> + <integer>919</integer> </dict> <dict> <key>CF$UID</key> - <integer>926</integer> + <integer>921</integer> </dict> <dict> <key>CF$UID</key> - <integer>928</integer> + <integer>923</integer> </dict> <dict> <key>CF$UID</key> - <integer>930</integer> + <integer>925</integer> </dict> <dict> <key>CF$UID</key> - <integer>932</integer> + <integer>927</integer> </dict> <dict> <key>CF$UID</key> - <integer>934</integer> + <integer>929</integer> </dict> <dict> <key>CF$UID</key> - <integer>936</integer> + <integer>935</integer> </dict> <dict> <key>CF$UID</key> - <integer>942</integer> + <integer>938</integer> </dict> <dict> <key>CF$UID</key> - <integer>945</integer> + <integer>939</integer> </dict> <dict> <key>CF$UID</key> - <integer>946</integer> + <integer>941</integer> </dict> <dict> <key>CF$UID</key> - <integer>948</integer> + <integer>950</integer> </dict> <dict> <key>CF$UID</key> + <integer>953</integer> + </dict> + <dict> + <key>CF$UID</key> <integer>957</integer> </dict> <dict> <key>CF$UID</key> - <integer>960</integer> + <integer>973</integer> </dict> <dict> <key>CF$UID</key> - <integer>964</integer> + <integer>977</integer> </dict> <dict> <key>CF$UID</key> - <integer>980</integer> + <integer>981</integer> </dict> <dict> <key>CF$UID</key> - <integer>984</integer> + <integer>985</integer> </dict> <dict> <key>CF$UID</key> @@ -352,23 +356,23 @@ </dict> <dict> <key>CF$UID</key> - <integer>992</integer> + <integer>991</integer> </dict> <dict> <key>CF$UID</key> - <integer>995</integer> + <integer>994</integer> </dict> <dict> <key>CF$UID</key> - <integer>998</integer> + <integer>1000</integer> </dict> <dict> <key>CF$UID</key> - <integer>1001</integer> + <integer>1003</integer> </dict> <dict> <key>CF$UID</key> - <integer>1007</integer> + <integer>1006</integer> </dict> <dict> <key>CF$UID</key> @@ -376,78 +380,82 @@ </dict> <dict> <key>CF$UID</key> - <integer>1013</integer> + <integer>1012</integer> </dict> <dict> <key>CF$UID</key> - <integer>1017</integer> + <integer>1014</integer> </dict> <dict> <key>CF$UID</key> - <integer>1019</integer> + <integer>1016</integer> </dict> <dict> <key>CF$UID</key> - <integer>1021</integer> + <integer>1018</integer> </dict> <dict> <key>CF$UID</key> - <integer>1023</integer> + <integer>1020</integer> </dict> <dict> <key>CF$UID</key> - <integer>1025</integer> + <integer>1021</integer> </dict> <dict> <key>CF$UID</key> - <integer>1027</integer> + <integer>1022</integer> </dict> <dict> <key>CF$UID</key> - <integer>1028</integer> + <integer>1023</integer> </dict> <dict> <key>CF$UID</key> - <integer>1029</integer> + <integer>1025</integer> </dict> <dict> <key>CF$UID</key> - <integer>1030</integer> + <integer>1028</integer> </dict> <dict> <key>CF$UID</key> - <integer>1032</integer> + <integer>1031</integer> </dict> <dict> <key>CF$UID</key> - <integer>1035</integer> + <integer>1034</integer> </dict> <dict> <key>CF$UID</key> - <integer>1038</integer> + <integer>1037</integer> </dict> <dict> <key>CF$UID</key> - <integer>1041</integer> + <integer>1044</integer> </dict> <dict> <key>CF$UID</key> - <integer>1044</integer> + <integer>1045</integer> </dict> <dict> <key>CF$UID</key> - <integer>1051</integer> + <integer>1046</integer> </dict> <dict> <key>CF$UID</key> - <integer>1052</integer> + <integer>1047</integer> </dict> <dict> <key>CF$UID</key> - <integer>1053</integer> + <integer>1050</integer> </dict> <dict> <key>CF$UID</key> + <integer>1051</integer> + </dict> + <dict> + <key>CF$UID</key> <integer>1054</integer> </dict> <dict> @@ -464,11 +472,11 @@ </dict> <dict> <key>CF$UID</key> - <integer>1064</integer> + <integer>1066</integer> </dict> <dict> <key>CF$UID</key> - <integer>1065</integer> + <integer>1067</integer> </dict> <dict> <key>CF$UID</key> @@ -476,15 +484,15 @@ </dict> <dict> <key>CF$UID</key> - <integer>1073</integer> + <integer>1069</integer> </dict> <dict> <key>CF$UID</key> - <integer>1074</integer> + <integer>1072</integer> </dict> <dict> <key>CF$UID</key> - <integer>1075</integer> + <integer>1073</integer> </dict> <dict> <key>CF$UID</key> @@ -492,31 +500,31 @@ </dict> <dict> <key>CF$UID</key> - <integer>1079</integer> + <integer>1081</integer> </dict> <dict> <key>CF$UID</key> - <integer>1080</integer> + <integer>1085</integer> </dict> <dict> <key>CF$UID</key> - <integer>1083</integer> + <integer>1090</integer> </dict> <dict> <key>CF$UID</key> - <integer>1088</integer> + <integer>1095</integer> </dict> <dict> <key>CF$UID</key> - <integer>1092</integer> + <integer>1099</integer> </dict> <dict> <key>CF$UID</key> - <integer>1097</integer> + <integer>1103</integer> </dict> <dict> <key>CF$UID</key> - <integer>1102</integer> + <integer>1105</integer> </dict> <dict> <key>CF$UID</key> @@ -524,7 +532,7 @@ </dict> <dict> <key>CF$UID</key> - <integer>1110</integer> + <integer>1109</integer> </dict> <dict> <key>CF$UID</key> @@ -532,15 +540,15 @@ </dict> <dict> <key>CF$UID</key> - <integer>1113</integer> + <integer>1116</integer> </dict> <dict> <key>CF$UID</key> - <integer>1116</integer> + <integer>1118</integer> </dict> <dict> <key>CF$UID</key> - <integer>1119</integer> + <integer>1120</integer> </dict> <dict> <key>CF$UID</key> @@ -548,11 +556,11 @@ </dict> <dict> <key>CF$UID</key> - <integer>1125</integer> + <integer>1126</integer> </dict> <dict> <key>CF$UID</key> - <integer>1127</integer> + <integer>1128</integer> </dict> <dict> <key>CF$UID</key> @@ -564,19 +572,19 @@ </dict> <dict> <key>CF$UID</key> - <integer>1135</integer> + <integer>1136</integer> </dict> <dict> <key>CF$UID</key> - <integer>1137</integer> + <integer>1139</integer> </dict> <dict> <key>CF$UID</key> - <integer>1140</integer> + <integer>1142</integer> </dict> <dict> <key>CF$UID</key> - <integer>1143</integer> + <integer>1144</integer> </dict> <dict> <key>CF$UID</key> @@ -584,40 +592,28 @@ </dict> <dict> <key>CF$UID</key> - <integer>1149</integer> + <integer>1147</integer> </dict> <dict> <key>CF$UID</key> - <integer>1151</integer> + <integer>1148</integer> </dict> <dict> <key>CF$UID</key> - <integer>1153</integer> + <integer>1149</integer> </dict> <dict> <key>CF$UID</key> - <integer>1154</integer> + <integer>1151</integer> </dict> <dict> <key>CF$UID</key> - <integer>1155</integer> + <integer>1153</integer> </dict> <dict> <key>CF$UID</key> - <integer>1156</integer> + <integer>1155</integer> </dict> - <dict> - <key>CF$UID</key> - <integer>1163</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>1168</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>1173</integer> - </dict> </array> </dict> <dict> @@ -677,12 +673,12 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>167</integer> + <integer>154</integer> </dict> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>269</integer> + <integer>256</integer> </dict> <key>NSNextResponder</key> <dict> @@ -692,7 +688,7 @@ <key>NSSubviews</key> <dict> <key>CF$UID</key> - <integer>172</integer> + <integer>159</integer> </dict> </dict> <string>{{18, 103}, {105, 18}}</string> @@ -1112,7 +1108,7 @@ <key>NSLabel</key> <dict> <key>CF$UID</key> - <integer>822</integer> + <integer>818</integer> </dict> <key>NSSource</key> <dict> @@ -1124,22 +1120,22 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>821</integer> + <integer>817</integer> </dict> <key>NSMaxSize</key> <dict> <key>CF$UID</key> - <integer>820</integer> + <integer>816</integer> </dict> <key>NSMinSize</key> <dict> <key>CF$UID</key> - <integer>819</integer> + <integer>815</integer> </dict> <key>NSScreenRect</key> <dict> <key>CF$UID</key> - <integer>818</integer> + <integer>814</integer> </dict> <key>NSViewClass</key> <dict> @@ -1173,7 +1169,7 @@ <integer>46</integer> </dict> </dict> - <string>{{152, 335}, {634, 393}}</string> + <string>{{153, 336}, {634, 393}}</string> <string>Preferences</string> <string>NSPanel</string> <dict> @@ -1199,12 +1195,12 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>167</integer> + <integer>154</integer> </dict> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>817</integer> + <integer>813</integer> </dict> <key>NSNextResponder</key> <dict> @@ -1221,7 +1217,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>73</integer> </dict> <key>NS.objects</key> <array> @@ -1231,11 +1227,11 @@ </dict> <dict> <key>CF$UID</key> - <integer>779</integer> + <integer>775</integer> </dict> <dict> <key>CF$UID</key> - <integer>812</integer> + <integer>808</integer> </dict> </array> </dict> @@ -1243,7 +1239,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>778</integer> + <integer>774</integer> </dict> <key>NSAllowTruncatedLabels</key> <true/> @@ -1257,7 +1253,7 @@ <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>168</integer> + <integer>155</integer> </dict> <key>NSNextResponder</key> <dict> @@ -1267,7 +1263,7 @@ <key>NSSelectedTabViewItem</key> <dict> <key>CF$UID</key> - <integer>641</integer> + <integer>725</integer> </dict> <key>NSSubviews</key> <dict> @@ -1282,7 +1278,7 @@ <key>NSTabViewItems</key> <dict> <key>CF$UID</key> - <integer>169</integer> + <integer>156</integer> </dict> <key>NSTvFlags</key> <integer>4</integer> @@ -1291,7 +1287,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>73</integer> </dict> <key>NS.objects</key> <array> @@ -1305,12 +1301,12 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>167</integer> + <integer>154</integer> </dict> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>166</integer> + <integer>153</integer> </dict> <key>NSNextResponder</key> <dict> @@ -1332,7 +1328,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>73</integer> </dict> <key>NS.objects</key> <array> @@ -1340,209 +1336,152 @@ <key>CF$UID</key> <integer>52</integer> </dict> - <dict> - <key>CF$UID</key> - <integer>59</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>65</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>68</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>99</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>103</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>149</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>154</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>158</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>162</integer> - </dict> </array> </dict> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>23</integer> + <integer>152</integer> </dict> - <key>NSCell</key> + <key>NSBackgroundColor</key> <dict> <key>CF$UID</key> - <integer>54</integer> + <integer>147</integer> </dict> - <key>NSEnabled</key> - <true/> - <key>NSFrame</key> + <key>NSCellBackgroundColor</key> <dict> <key>CF$UID</key> - <integer>53</integer> + <integer>151</integer> </dict> - <key>NSNextResponder</key> + <key>NSCellClass</key> <dict> <key>CF$UID</key> - <integer>50</integer> + <integer>145</integer> </dict> - <key>NSSuperview</key> + <key>NSCellSize</key> <dict> <key>CF$UID</key> - <integer>50</integer> + <integer>143</integer> </dict> - <key>NSTag</key> - <integer>1</integer> - <key>NSvFlags</key> - <integer>256</integer> - </dict> - <string>{{460, 227}, {77, 28}}</string> - <dict> - <key>$class</key> + <key>NSCells</key> <dict> <key>CF$UID</key> - <integer>22</integer> + <integer>54</integer> </dict> - <key>NSAlternateContents</key> + <key>NSEnabled</key> + <true/> + <key>NSFont</key> <dict> <key>CF$UID</key> - <integer>21</integer> + <integer>15</integer> </dict> - <key>NSAlternateImage</key> + <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>57</integer> + <integer>53</integer> </dict> - <key>NSButtonFlags</key> - <integer>-2038284033</integer> - <key>NSButtonFlags2</key> - <integer>1</integer> - <key>NSCellFlags</key> - <integer>67239424</integer> - <key>NSCellFlags2</key> - <integer>134348800</integer> - <key>NSContents</key> + <key>NSIntercellSpacing</key> <dict> <key>CF$UID</key> - <integer>55</integer> + <integer>144</integer> </dict> - <key>NSControlView</key> + <key>NSMatrixFlags</key> + <integer>1143472128</integer> + <key>NSNextResponder</key> <dict> <key>CF$UID</key> - <integer>52</integer> + <integer>50</integer> </dict> - <key>NSKeyEquivalent</key> - <dict> - <key>CF$UID</key> - <integer>58</integer> - </dict> - <key>NSPeriodicDelay</key> - <integer>200</integer> - <key>NSPeriodicInterval</key> - <integer>25</integer> - <key>NSSupport</key> - <dict> - <key>CF$UID</key> - <integer>56</integer> - </dict> - <key>NSTag</key> + <key>NSNumCols</key> <integer>1</integer> - </dict> - <string>Choose...</string> - <dict> - <key>$class</key> + <key>NSNumRows</key> + <integer>13</integer> + <key>NSProtoCell</key> <dict> <key>CF$UID</key> - <integer>17</integer> + <integer>146</integer> </dict> - <key>NSName</key> + <key>NSSelectedCell</key> <dict> <key>CF$UID</key> - <integer>16</integer> + <integer>55</integer> </dict> - <key>NSSize</key> - <real>11</real> - <key>NSfFlags</key> - <integer>3100</integer> - </dict> - <dict> - <key>$class</key> + <key>NSSuperview</key> <dict> <key>CF$UID</key> - <integer>17</integer> + <integer>50</integer> </dict> - <key>NSName</key> - <dict> - <key>CF$UID</key> - <integer>16</integer> - </dict> - <key>NSSize</key> - <real>11</real> - <key>NSfFlags</key> - <integer>16</integer> + <key>NSvFlags</key> + <integer>274</integer> </dict> + <string>{{18, 23}, {134, 258}}</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>45</integer> + <integer>73</integer> </dict> - <key>NS.string</key> - <string></string> + <key>NS.objects</key> + <array> + <dict> + <key>CF$UID</key> + <integer>55</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>60</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>62</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>77</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>83</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>85</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>87</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>95</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>103</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>111</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>119</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>127</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>135</integer> + </dict> + </array> </dict> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>23</integer> - </dict> - <key>NSCell</key> - <dict> - <key>CF$UID</key> - <integer>61</integer> - </dict> - <key>NSEnabled</key> - <true/> - <key>NSFrame</key> - <dict> - <key>CF$UID</key> - <integer>60</integer> - </dict> - <key>NSNextResponder</key> - <dict> - <key>CF$UID</key> - <integer>50</integer> - </dict> - <key>NSSuperview</key> - <dict> - <key>CF$UID</key> - <integer>50</integer> - </dict> - <key>NSTag</key> - <integer>3</integer> - <key>NSvFlags</key> - <integer>256</integer> - </dict> - <string>{{460, 173}, {77, 28}}</string> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> <integer>22</integer> </dict> <key>NSAlternateContents</key> @@ -1553,30 +1492,30 @@ <key>NSAlternateImage</key> <dict> <key>CF$UID</key> - <integer>62</integer> + <integer>57</integer> </dict> <key>NSButtonFlags</key> - <integer>-2038284033</integer> + <integer>1211912703</integer> <key>NSButtonFlags2</key> - <integer>1</integer> + <integer>0</integer> <key>NSCellFlags</key> - <integer>67239424</integer> + <integer>-2080244224</integer> <key>NSCellFlags2</key> - <integer>138018816</integer> + <integer>0</integer> <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>55</integer> + <integer>56</integer> </dict> <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>59</integer> + <integer>52</integer> </dict> <key>NSKeyEquivalent</key> <dict> <key>CF$UID</key> - <integer>64</integer> + <integer>59</integer> </dict> <key>NSPeriodicDelay</key> <integer>200</integer> @@ -1585,28 +1524,25 @@ <key>NSSupport</key> <dict> <key>CF$UID</key> - <integer>56</integer> + <integer>15</integer> </dict> <key>NSTag</key> - <integer>3</integer> + <integer>8</integer> </dict> + <string>Spectrum 16K</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>17</integer> + <integer>20</integer> </dict> - <key>NSName</key> + <key>NSImageName</key> <dict> <key>CF$UID</key> - <integer>63</integer> + <integer>58</integer> </dict> - <key>NSSize</key> - <real>11</real> - <key>NSfFlags</key> - <integer>16</integer> </dict> - <string>Helvetica</string> + <string>NSRadioButton</string> <dict> <key>$class</key> <dict> @@ -1620,38 +1556,6 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>23</integer> - </dict> - <key>NSCell</key> - <dict> - <key>CF$UID</key> - <integer>67</integer> - </dict> - <key>NSEnabled</key> - <true/> - <key>NSFrame</key> - <dict> - <key>CF$UID</key> - <integer>66</integer> - </dict> - <key>NSNextResponder</key> - <dict> - <key>CF$UID</key> - <integer>50</integer> - </dict> - <key>NSSuperview</key> - <dict> - <key>CF$UID</key> - <integer>50</integer> - </dict> - <key>NSvFlags</key> - <integer>256</integer> - </dict> - <string>{{460, 254}, {77, 28}}</string> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> <integer>22</integer> </dict> <key>NSAlternateContents</key> @@ -1665,27 +1569,27 @@ <integer>57</integer> </dict> <key>NSButtonFlags</key> - <integer>-2038284033</integer> + <integer>1211912703</integer> <key>NSButtonFlags2</key> - <integer>1</integer> + <integer>0</integer> <key>NSCellFlags</key> <integer>67239424</integer> <key>NSCellFlags2</key> - <integer>134348800</integer> + <integer>0</integer> <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>55</integer> + <integer>61</integer> </dict> <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>65</integer> + <integer>52</integer> </dict> <key>NSKeyEquivalent</key> <dict> <key>CF$UID</key> - <integer>21</integer> + <integer>59</integer> </dict> <key>NSPeriodicDelay</key> <integer>200</integer> @@ -1694,186 +1598,200 @@ <key>NSSupport</key> <dict> <key>CF$UID</key> - <integer>56</integer> + <integer>15</integer> </dict> </dict> + <string>Spectrum 48K</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>98</integer> + <integer>22</integer> </dict> - <key>NSBackgroundColor</key> + <key>NSAlternateContents</key> <dict> <key>CF$UID</key> - <integer>92</integer> + <integer>21</integer> </dict> - <key>NSCellBackgroundColor</key> + <key>NSAlternateImage</key> <dict> <key>CF$UID</key> - <integer>97</integer> + <integer>57</integer> </dict> - <key>NSCellClass</key> + <key>NSButtonFlags</key> + <integer>1211912703</integer> + <key>NSButtonFlags2</key> + <integer>0</integer> + <key>NSCellFlags</key> + <integer>67239424</integer> + <key>NSCellFlags2</key> + <integer>0</integer> + <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>88</integer> + <integer>63</integer> </dict> - <key>NSCellSize</key> + <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>86</integer> + <integer>52</integer> </dict> - <key>NSCells</key> + <key>NSKeyEquivalent</key> <dict> <key>CF$UID</key> - <integer>70</integer> + <integer>21</integer> </dict> - <key>NSEnabled</key> - <true/> - <key>NSFont</key> + <key>NSNormalImage</key> <dict> <key>CF$UID</key> - <integer>15</integer> + <integer>64</integer> </dict> - <key>NSFrame</key> + <key>NSPeriodicDelay</key> + <integer>400</integer> + <key>NSPeriodicInterval</key> + <integer>75</integer> + <key>NSSupport</key> <dict> <key>CF$UID</key> - <integer>69</integer> + <integer>15</integer> </dict> - <key>NSIntercellSpacing</key> + <key>NSTag</key> + <integer>2</integer> + </dict> + <string>Spectrum 128K</string> + <dict> + <key>$class</key> <dict> <key>CF$UID</key> - <integer>87</integer> + <integer>76</integer> </dict> - <key>NSMatrixFlags</key> - <integer>67633152</integer> - <key>NSNextResponder</key> + <key>NSColor</key> <dict> <key>CF$UID</key> - <integer>50</integer> + <integer>74</integer> </dict> - <key>NSNumCols</key> - <integer>1</integer> - <key>NSNumRows</key> - <integer>4</integer> - <key>NSProtoCell</key> + <key>NSImageFlags</key> + <integer>549453824</integer> + <key>NSReps</key> <dict> <key>CF$UID</key> - <integer>89</integer> + <integer>66</integer> </dict> - <key>NSSelectedCol</key> - <integer>-1</integer> - <key>NSSelectedRow</key> - <integer>-1</integer> - <key>NSSuperview</key> + <key>NSSize</key> <dict> <key>CF$UID</key> - <integer>50</integer> + <integer>65</integer> </dict> - <key>NSvFlags</key> - <integer>256</integer> </dict> - <string>{{145, 179}, {312, 100}}</string> + <string>{18, 18}</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>73</integer> </dict> <key>NS.objects</key> <array> <dict> <key>CF$UID</key> - <integer>71</integer> + <integer>67</integer> </dict> + </array> + </dict> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>72</integer> + </dict> + <key>NS.objects</key> + <array> <dict> <key>CF$UID</key> - <integer>76</integer> + <integer>68</integer> </dict> <dict> <key>CF$UID</key> - <integer>79</integer> + <integer>69</integer> </dict> - <dict> - <key>CF$UID</key> - <integer>82</integer> - </dict> </array> </dict> + <integer>0</integer> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>75</integer> + <integer>71</integer> </dict> - <key>NSCellFlags</key> - <integer>74579521</integer> - <key>NSCellFlags2</key> - <integer>205521920</integer> - <key>NSContents</key> + <key>NSTIFFRepresentation</key> <dict> <key>CF$UID</key> - <integer>21</integer> + <integer>70</integer> </dict> - <key>NSControlView</key> - <dict> - <key>CF$UID</key> - <integer>68</integer> - </dict> - <key>NSSupport</key> - <dict> - <key>CF$UID</key> - <integer>56</integer> - </dict> - <key>NSTitleCell</key> - <dict> - <key>CF$UID</key> - <integer>72</integer> - </dict> - <key>NSTitleWidth</key> - <real>43</real> </dict> + <data> + TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMA + AAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXwIyMjyRwcHIsJCQk8AAAA + AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/ + 29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAUZGRl5dXV198PDw//8/Pz///////////////////////// + ///U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAAAAAAAxEREUZqamrmtbW1 + /+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG + AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z + 8/P/9fX1//Ly8v/u7u7/0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4 + eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/7e3t/+3t7f/i4uL/zs7O + /8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/ + 5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMA + AAADAAAALrCwsPrW1tb/3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn + 5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAADAAAALp2dnezg4OD/5eXl + /+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns + AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5 + +fn/9/f3//b29v/x8fH/6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4u + LpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7//v7+//v7+//19fX/8PDw + /8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/ + ///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAA + AAAAAAAAAwAAABcAAABlYmJi3NLS0v3///////////////////////////// + ///V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAAAAAAAAAAAAUAAAAfAAAA + ZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMA + AACzAAAAnwAAAHcAAABDAAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAuAAAAJAAAABcAAAAKAAAA + AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + DQEAAAMAAAABABIAAAEBAAMAAAABABIAAAECAAMAAAAEAAAFugEDAAMAAAAB + AAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAESAAMAAAABAAEAAAEVAAMA + AAABAAQAAAEWAAMAAAABBxwAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS + AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQAB + </data> <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>74</integer> - </dict> - <key>NSCellFlags</key> - <integer>67239424</integer> - <key>NSCellFlags2</key> - <integer>67108864</integer> - <key>NSContents</key> - <dict> - <key>CF$UID</key> - <integer>73</integer> - </dict> - <key>NSSupport</key> - <dict> - <key>CF$UID</key> - <integer>56</integer> - </dict> + <key>$classes</key> + <array> + <string>NSBitmapImageRep</string> + <string>NSImageRep</string> + <string>NSObject</string> + </array> + <key>$classname</key> + <string>NSBitmapImageRep</string> </dict> - <string>ROM 0:</string> <dict> <key>$classes</key> <array> - <string>NSCell</string> + <string>NSArray</string> <string>NSObject</string> </array> <key>$classname</key> - <string>NSCell</string> + <string>NSArray</string> </dict> <dict> <key>$classes</key> <array> - <string>NSFormCell</string> - <string>NSActionCell</string> - <string>NSCell</string> + <string>NSMutableArray</string> + <string>NSArray</string> <string>NSObject</string> </array> <key>$classname</key> - <string>NSFormCell</string> + <string>NSMutableArray</string> </dict> <dict> <key>$class</key> @@ -1881,343 +1799,232 @@ <key>CF$UID</key> <integer>75</integer> </dict> - <key>NSCellFlags</key> - <integer>74579521</integer> - <key>NSCellFlags2</key> - <integer>205521920</integer> - <key>NSContents</key> - <dict> - <key>CF$UID</key> - <integer>21</integer> - </dict> - <key>NSControlView</key> - <dict> - <key>CF$UID</key> - <integer>68</integer> - </dict> - <key>NSSupport</key> - <dict> - <key>CF$UID</key> - <integer>56</integer> - </dict> - <key>NSTag</key> - <integer>1</integer> - <key>NSTitleCell</key> - <dict> - <key>CF$UID</key> - <integer>77</integer> - </dict> - <key>NSTitleWidth</key> - <real>43</real> + <key>NSColorSpace</key> + <integer>3</integer> + <key>NSWhite</key> + <data> + MCAwAA== + </data> </dict> <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>74</integer> - </dict> - <key>NSCellFlags</key> - <integer>67239424</integer> - <key>NSCellFlags2</key> - <integer>67108864</integer> - <key>NSContents</key> - <dict> - <key>CF$UID</key> - <integer>78</integer> - </dict> - <key>NSSupport</key> - <dict> - <key>CF$UID</key> - <integer>56</integer> - </dict> + <key>$classes</key> + <array> + <string>NSColor</string> + <string>NSObject</string> + </array> + <key>$classname</key> + <string>NSColor</string> </dict> - <string>ROM 1:</string> <dict> + <key>$classes</key> + <array> + <string>NSImage</string> + <string>%NSImage</string> + <string>NSObject</string> + </array> + <key>$classname</key> + <string>NSImage</string> + </dict> + <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>75</integer> + <integer>22</integer> </dict> - <key>NSCellFlags</key> - <integer>74579521</integer> - <key>NSCellFlags2</key> - <integer>205521920</integer> - <key>NSContents</key> + <key>NSAlternateContents</key> <dict> <key>CF$UID</key> <integer>21</integer> </dict> - <key>NSControlView</key> + <key>NSAlternateImage</key> <dict> <key>CF$UID</key> - <integer>68</integer> + <integer>57</integer> </dict> - <key>NSSupport</key> - <dict> - <key>CF$UID</key> - <integer>56</integer> - </dict> - <key>NSTag</key> + <key>NSButtonFlags</key> + <integer>1211912703</integer> + <key>NSButtonFlags2</key> <integer>2</integer> - <key>NSTitleCell</key> - <dict> - <key>CF$UID</key> - <integer>80</integer> - </dict> - <key>NSTitleWidth</key> - <real>43</real> - </dict> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>74</integer> - </dict> <key>NSCellFlags</key> <integer>67239424</integer> <key>NSCellFlags2</key> - <integer>67108864</integer> + <integer>0</integer> <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>81</integer> + <integer>78</integer> </dict> - <key>NSSupport</key> + <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>56</integer> + <integer>52</integer> </dict> - </dict> - <string>ROM 2:</string> - <dict> - <key>$class</key> + <key>NSKeyEquivalent</key> <dict> <key>CF$UID</key> - <integer>75</integer> - </dict> - <key>NSCellFlags</key> - <integer>74579521</integer> - <key>NSCellFlags2</key> - <integer>205521920</integer> - <key>NSContents</key> - <dict> - <key>CF$UID</key> <integer>21</integer> </dict> - <key>NSControlView</key> + <key>NSNormalImage</key> <dict> <key>CF$UID</key> - <integer>68</integer> + <integer>79</integer> </dict> + <key>NSPeriodicDelay</key> + <integer>400</integer> + <key>NSPeriodicInterval</key> + <integer>75</integer> <key>NSSupport</key> <dict> <key>CF$UID</key> - <integer>56</integer> + <integer>15</integer> </dict> <key>NSTag</key> <integer>3</integer> - <key>NSTitleCell</key> - <dict> - <key>CF$UID</key> - <integer>83</integer> - </dict> - <key>NSTitleWidth</key> - <real>43</real> </dict> + <string>Spectrum +2</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>74</integer> + <integer>82</integer> </dict> - <key>NSCellFlags</key> - <integer>67239424</integer> - <key>NSCellFlags2</key> - <integer>67108864</integer> - <key>NSContents</key> + <key>NSClassName</key> <dict> <key>CF$UID</key> - <integer>84</integer> + <integer>80</integer> </dict> - <key>NSSupport</key> + <key>NSResourceName</key> <dict> <key>CF$UID</key> - <integer>56</integer> + <integer>81</integer> </dict> </dict> - <string>ROM 3:</string> + <string>NSImage</string> + <string>NSRadioButton</string> <dict> <key>$classes</key> <array> - <string>NSMutableArray</string> - <string>NSArray</string> + <string>NSCustomResource</string> + <string>%NSCustomResource</string> <string>NSObject</string> </array> <key>$classname</key> - <string>NSMutableArray</string> + <string>NSCustomResource</string> </dict> - <string>{312, 19}</string> - <string>{1, 8}</string> - <string>NSActionCell</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>75</integer> + <integer>22</integer> </dict> - <key>NSCellFlags</key> - <integer>343014976</integer> - <key>NSCellFlags2</key> - <integer>205521920</integer> - <key>NSContents</key> + <key>NSAlternateContents</key> <dict> <key>CF$UID</key> <integer>21</integer> </dict> - <key>NSSupport</key> + <key>NSAlternateImage</key> <dict> <key>CF$UID</key> - <integer>56</integer> + <integer>57</integer> </dict> - <key>NSTitleCell</key> - <dict> - <key>CF$UID</key> - <integer>90</integer> - </dict> - <key>NSTitleWidth</key> - <real>43</real> - </dict> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>74</integer> - </dict> + <key>NSButtonFlags</key> + <integer>1211912703</integer> + <key>NSButtonFlags2</key> + <integer>0</integer> <key>NSCellFlags</key> <integer>67239424</integer> <key>NSCellFlags2</key> - <integer>67108864</integer> + <integer>0</integer> <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>91</integer> + <integer>84</integer> </dict> - <key>NSSupport</key> + <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>56</integer> + <integer>52</integer> </dict> - </dict> - <string>Field:</string> - <dict> - <key>$class</key> + <key>NSKeyEquivalent</key> <dict> <key>CF$UID</key> - <integer>96</integer> + <integer>21</integer> </dict> - <key>NSCatalogName</key> + <key>NSNormalImage</key> <dict> <key>CF$UID</key> - <integer>93</integer> + <integer>64</integer> </dict> - <key>NSColor</key> + <key>NSPeriodicDelay</key> + <integer>400</integer> + <key>NSPeriodicInterval</key> + <integer>75</integer> + <key>NSSupport</key> <dict> <key>CF$UID</key> - <integer>95</integer> + <integer>15</integer> </dict> - <key>NSColorName</key> - <dict> - <key>CF$UID</key> - <integer>94</integer> - </dict> - <key>NSColorSpace</key> - <integer>6</integer> + <key>NSTag</key> + <integer>5</integer> </dict> - <string>System</string> - <string>controlColor</string> + <string>Spectrum +2A</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>96</integer> + <integer>22</integer> </dict> - <key>NSColorSpace</key> - <integer>3</integer> - <key>NSWhite</key> - <data> - MC42NjY2NjY2OQA= - </data> - </dict> - <dict> - <key>$classes</key> - <array> - <string>NSColor</string> - <string>NSObject</string> - </array> - <key>$classname</key> - <string>NSColor</string> - </dict> - <dict> - <key>$class</key> + <key>NSAlternateContents</key> <dict> <key>CF$UID</key> - <integer>96</integer> + <integer>21</integer> </dict> - <key>NSColorSpace</key> - <integer>3</integer> - <key>NSWhite</key> - <data> - MQA= - </data> - </dict> - <dict> - <key>$classes</key> - <array> - <string>NSForm</string> - <string>NSMatrix</string> - <string>%NSMatrix</string> - <string>NSControl</string> - <string>NSView</string> - <string>NSResponder</string> - <string>NSObject</string> - </array> - <key>$classname</key> - <string>NSForm</string> - </dict> - <dict> - <key>$class</key> + <key>NSAlternateImage</key> <dict> <key>CF$UID</key> - <integer>23</integer> + <integer>57</integer> </dict> - <key>NSCell</key> + <key>NSButtonFlags</key> + <integer>1211912703</integer> + <key>NSButtonFlags2</key> + <integer>0</integer> + <key>NSCellFlags</key> + <integer>67239424</integer> + <key>NSCellFlags2</key> + <integer>0</integer> + <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>101</integer> + <integer>86</integer> </dict> - <key>NSEnabled</key> - <true/> - <key>NSFrame</key> + <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>100</integer> + <integer>52</integer> </dict> - <key>NSNextResponder</key> + <key>NSKeyEquivalent</key> <dict> <key>CF$UID</key> - <integer>50</integer> + <integer>21</integer> </dict> - <key>NSSuperview</key> + <key>NSNormalImage</key> <dict> <key>CF$UID</key> - <integer>50</integer> + <integer>64</integer> </dict> + <key>NSPeriodicDelay</key> + <integer>400</integer> + <key>NSPeriodicInterval</key> + <integer>75</integer> + <key>NSSupport</key> + <dict> + <key>CF$UID</key> + <integer>15</integer> + </dict> <key>NSTag</key> - <integer>2</integer> - <key>NSvFlags</key> - <integer>256</integer> + <integer>6</integer> </dict> - <string>{{460, 200}, {77, 28}}</string> + <string>Spectrum +3</string> <dict> <key>$class</key> <dict> @@ -2232,848 +2039,797 @@ <key>NSAlternateImage</key> <dict> <key>CF$UID</key> - <integer>62</integer> + <integer>57</integer> </dict> <key>NSButtonFlags</key> - <integer>-2038284033</integer> + <integer>1211912703</integer> <key>NSButtonFlags2</key> - <integer>1</integer> + <integer>0</integer> <key>NSCellFlags</key> <integer>67239424</integer> <key>NSCellFlags2</key> - <integer>138018816</integer> + <integer>0</integer> <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>55</integer> + <integer>88</integer> </dict> <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>99</integer> + <integer>52</integer> </dict> <key>NSKeyEquivalent</key> <dict> <key>CF$UID</key> - <integer>102</integer> + <integer>21</integer> </dict> + <key>NSNormalImage</key> + <dict> + <key>CF$UID</key> + <integer>89</integer> + </dict> <key>NSPeriodicDelay</key> - <integer>200</integer> + <integer>400</integer> <key>NSPeriodicInterval</key> - <integer>25</integer> + <integer>75</integer> <key>NSSupport</key> <dict> <key>CF$UID</key> - <integer>56</integer> + <integer>15</integer> </dict> <key>NSTag</key> - <integer>2</integer> + <integer>11</integer> </dict> + <string>Spectrum +3e</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>45</integer> + <integer>76</integer> </dict> - <key>NS.string</key> - <string></string> - </dict> - <dict> - <key>$class</key> + <key>NSColor</key> <dict> <key>CF$UID</key> - <integer>148</integer> + <integer>74</integer> </dict> - <key>NSContentView</key> + <key>NSImageFlags</key> + <integer>549453824</integer> + <key>NSReps</key> <dict> <key>CF$UID</key> - <integer>105</integer> + <integer>91</integer> </dict> - <key>NSCornerView</key> + <key>NSSize</key> <dict> <key>CF$UID</key> - <integer>113</integer> + <integer>90</integer> </dict> - <key>NSFrameSize</key> - <dict> - <key>CF$UID</key> - <integer>147</integer> - </dict> - <key>NSHScroller</key> - <dict> - <key>CF$UID</key> - <integer>142</integer> - </dict> - <key>NSHeaderClipView</key> - <dict> - <key>CF$UID</key> - <integer>110</integer> - </dict> - <key>NSNextKeyView</key> - <dict> - <key>CF$UID</key> - <integer>105</integer> - </dict> - <key>NSNextResponder</key> - <dict> - <key>CF$UID</key> - <integer>50</integer> - </dict> - <key>NSScrollAmts</key> - <data> - QSAAAEEgAABBmAAAQZgAAA== - </data> - <key>NSSubviews</key> - <dict> - <key>CF$UID</key> - <integer>104</integer> - </dict> - <key>NSSuperview</key> - <dict> - <key>CF$UID</key> - <integer>50</integer> - </dict> - <key>NSVScroller</key> - <dict> - <key>CF$UID</key> - <integer>138</integer> - </dict> - <key>NSsFlags</key> - <integer>530</integer> - <key>NSvFlags</key> - <integer>256</integer> </dict> + <string>{18, 18}</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>73</integer> </dict> <key>NS.objects</key> <array> <dict> <key>CF$UID</key> - <integer>105</integer> + <integer>92</integer> </dict> - <dict> - <key>CF$UID</key> - <integer>138</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>142</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>110</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>113</integer> - </dict> </array> </dict> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>137</integer> + <integer>72</integer> </dict> - <key>NSBGColor</key> - <dict> - <key>CF$UID</key> - <integer>135</integer> - </dict> - <key>NSDocView</key> - <dict> - <key>CF$UID</key> - <integer>107</integer> - </dict> - <key>NSFrame</key> - <dict> - <key>CF$UID</key> - <integer>134</integer> - </dict> - <key>NSNextKeyView</key> - <dict> - <key>CF$UID</key> - <integer>107</integer> - </dict> - <key>NSNextResponder</key> - <dict> - <key>CF$UID</key> - <integer>103</integer> - </dict> - <key>NSSubviews</key> - <dict> - <key>CF$UID</key> - <integer>106</integer> - </dict> - <key>NSSuperview</key> - <dict> - <key>CF$UID</key> - <integer>103</integer> - </dict> - <key>NScvFlags</key> - <integer>4</integer> - <key>NSvFlags</key> - <integer>2304</integer> - </dict> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>85</integer> - </dict> <key>NS.objects</key> <array> <dict> <key>CF$UID</key> - <integer>107</integer> + <integer>68</integer> </dict> + <dict> + <key>CF$UID</key> + <integer>93</integer> + </dict> </array> </dict> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>133</integer> + <integer>71</integer> </dict> - <key>NSBackgroundColor</key> + <key>NSTIFFRepresentation</key> <dict> <key>CF$UID</key> - <integer>97</integer> + <integer>94</integer> </dict> - <key>NSColumnAutoresizingStyle</key> - <integer>1</integer> - <key>NSCornerView</key> + </dict> + <data> + TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMA + AAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXwIyMjyRwcHIsJCQk8AAAA + AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/ + 29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAUZGRl5dXV198PDw//8/Pz///////////////////////// + ///U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAAAAAAAxEREUZqamrmtbW1 + /+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG + AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z + 8/P/9fX1//Ly8v/u7u7/0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4 + eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/7e3t/+3t7f/i4uL/zs7O + /8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/ + 5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMA + AAADAAAALrCwsPrW1tb/3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn + 5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAADAAAALp2dnezg4OD/5eXl + /+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns + AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5 + +fn/9/f3//b29v/x8fH/6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4u + LpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7//v7+//v7+//19fX/8PDw + /8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/ + ///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAA + AAAAAAAAAwAAABcAAABlYmJi3NLS0v3///////////////////////////// + ///V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAAAAAAAAAAAAUAAAAfAAAA + ZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMA + AACzAAAAnwAAAHcAAABDAAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAuAAAAJAAAABcAAAAKAAAA + AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + DQEAAAMAAAABABIAAAEBAAMAAAABABIAAAECAAMAAAAEAAAFugEDAAMAAAAB + AAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAESAAMAAAABAAEAAAEVAAMA + AAABAAQAAAEWAAMAAAABBxwAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS + AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQAB + </data> + <dict> + <key>$class</key> <dict> <key>CF$UID</key> - <integer>113</integer> + <integer>22</integer> </dict> - <key>NSDraggingSourceMaskForLocal</key> - <integer>15</integer> - <key>NSDraggingSourceMaskForNonLocal</key> - <integer>0</integer> - <key>NSEnabled</key> - <true/> - <key>NSFrameSize</key> + <key>NSAlternateContents</key> <dict> <key>CF$UID</key> - <integer>108</integer> + <integer>21</integer> </dict> - <key>NSGridColor</key> + <key>NSAlternateImage</key> <dict> <key>CF$UID</key> - <integer>130</integer> + <integer>57</integer> </dict> - <key>NSHeaderView</key> + <key>NSButtonFlags</key> + <integer>1211912703</integer> + <key>NSButtonFlags2</key> + <integer>0</integer> + <key>NSCellFlags</key> + <integer>67239424</integer> + <key>NSCellFlags2</key> + <integer>0</integer> + <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>109</integer> + <integer>96</integer> </dict> - <key>NSIntercellSpacingHeight</key> - <real>2</real> - <key>NSIntercellSpacingWidth</key> - <real>3</real> - <key>NSNextResponder</key> + <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>105</integer> + <integer>52</integer> </dict> - <key>NSRowHeight</key> - <real>17</real> - <key>NSSuperview</key> + <key>NSKeyEquivalent</key> <dict> <key>CF$UID</key> - <integer>105</integer> + <integer>21</integer> </dict> - <key>NSTableColumns</key> + <key>NSNormalImage</key> <dict> <key>CF$UID</key> - <integer>116</integer> + <integer>97</integer> </dict> - <key>NSTvFlags</key> - <integer>35684352</integer> - <key>NSvFlags</key> - <integer>256</integer> - </dict> - <string>{135, 261}</string> - <dict> - <key>$class</key> + <key>NSPeriodicDelay</key> + <integer>400</integer> + <key>NSPeriodicInterval</key> + <integer>75</integer> + <key>NSSupport</key> <dict> <key>CF$UID</key> - <integer>112</integer> + <integer>15</integer> </dict> - <key>NSFrameSize</key> - <dict> - <key>CF$UID</key> - <integer>111</integer> - </dict> - <key>NSNextResponder</key> - <dict> - <key>CF$UID</key> - <integer>110</integer> - </dict> - <key>NSSuperview</key> - <dict> - <key>CF$UID</key> - <integer>110</integer> - </dict> - <key>NSTableView</key> - <dict> - <key>CF$UID</key> - <integer>107</integer> - </dict> - <key>NSvFlags</key> - <integer>256</integer> + <key>NSTag</key> + <integer>1</integer> </dict> + <string>Timex TC2048</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>137</integer> + <integer>76</integer> </dict> - <key>NSBGColor</key> + <key>NSColor</key> <dict> <key>CF$UID</key> - <integer>135</integer> + <integer>74</integer> </dict> - <key>NSDocView</key> + <key>NSImageFlags</key> + <integer>549453824</integer> + <key>NSReps</key> <dict> <key>CF$UID</key> - <integer>109</integer> + <integer>99</integer> </dict> - <key>NSFrame</key> + <key>NSSize</key> <dict> <key>CF$UID</key> - <integer>146</integer> + <integer>98</integer> </dict> - <key>NSNextKeyView</key> - <dict> - <key>CF$UID</key> - <integer>109</integer> - </dict> - <key>NSNextResponder</key> - <dict> - <key>CF$UID</key> - <integer>103</integer> - </dict> - <key>NSSubviews</key> - <dict> - <key>CF$UID</key> - <integer>145</integer> - </dict> - <key>NSSuperview</key> - <dict> - <key>CF$UID</key> - <integer>103</integer> - </dict> - <key>NScvFlags</key> - <integer>4</integer> - <key>NSvFlags</key> - <integer>2304</integer> </dict> - <string>{135, 17}</string> + <string>{18, 18}</string> <dict> - <key>$classes</key> - <array> - <string>NSTableHeaderView</string> - <string>NSView</string> - <string>NSResponder</string> - <string>NSObject</string> - </array> - <key>$classname</key> - <string>NSTableHeaderView</string> - </dict> - <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>115</integer> + <integer>73</integer> </dict> - <key>NSFrame</key> - <dict> - <key>CF$UID</key> - <integer>114</integer> - </dict> - <key>NSNextResponder</key> - <dict> - <key>CF$UID</key> - <integer>103</integer> - </dict> - <key>NSSuperview</key> - <dict> - <key>CF$UID</key> - <integer>103</integer> - </dict> - <key>NSvFlags</key> - <integer>-2147483392</integer> - </dict> - <string>{{-26, 0}, {16, 17}}</string> - <dict> - <key>$classes</key> + <key>NS.objects</key> <array> - <string>_NSCornerView</string> - <string>NSView</string> - <string>NSResponder</string> - <string>NSObject</string> + <dict> + <key>CF$UID</key> + <integer>100</integer> + </dict> </array> - <key>$classname</key> - <string>_NSCornerView</string> </dict> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>72</integer> </dict> <key>NS.objects</key> <array> <dict> <key>CF$UID</key> - <integer>117</integer> + <integer>68</integer> </dict> + <dict> + <key>CF$UID</key> + <integer>101</integer> + </dict> </array> </dict> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>129</integer> + <integer>71</integer> </dict> - <key>NSDataCell</key> + <key>NSTIFFRepresentation</key> <dict> <key>CF$UID</key> - <integer>125</integer> + <integer>102</integer> </dict> - <key>NSHeaderCell</key> - <dict> - <key>CF$UID</key> - <integer>118</integer> - </dict> - <key>NSMaxWidth</key> - <real>1000</real> - <key>NSMinWidth</key> - <real>57.751998901367188</real> - <key>NSTableView</key> - <dict> - <key>CF$UID</key> - <integer>107</integer> - </dict> - <key>NSWidth</key> - <real>116.75199890136719</real> </dict> + <data> + TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMA + AAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXwIyMjyRwcHIsJCQk8AAAA + AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/ + 29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAUZGRl5dXV198PDw//8/Pz///////////////////////// + ///U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAAAAAAAxEREUZqamrmtbW1 + /+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG + AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z + 8/P/9fX1//Ly8v/u7u7/0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4 + eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/7e3t/+3t7f/i4uL/zs7O + /8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/ + 5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMA + AAADAAAALrCwsPrW1tb/3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn + 5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAADAAAALp2dnezg4OD/5eXl + /+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns + AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r... [truncated message content] |