fuse-for-macosx-commits Mailing List for Fuse for macOS (Page 22)
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...> - 2007-03-31 05:24:09
|
Revision: 312 http://svn.sourceforge.net/fuse-for-macosx/?rev=312&view=rev Author: fredm Date: 2007-03-30 22:24:10 -0700 (Fri, 30 Mar 2007) Log Message: ----------- Restore joystick processing (by reusing SDL joystick input files from SDL). Modified Paths: -------------- branches/fusegl/fuse/TODO branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj branches/fusegl/fuse/fusepb/content_arrays/HIDJoysticks.m branches/fusegl/fuse/ui/cocoa/cocoajoystick.c Added Paths: ----------- branches/fusegl/fuse/ui/cocoa/SDL_joystick/ branches/fusegl/fuse/ui/cocoa/SDL_joystick/SDL_joystick.c branches/fusegl/fuse/ui/cocoa/SDL_joystick/SDL_joystick.h branches/fusegl/fuse/ui/cocoa/SDL_joystick/SDL_joystick_c.h branches/fusegl/fuse/ui/cocoa/SDL_joystick/SDL_sysjoystick.c branches/fusegl/fuse/ui/cocoa/SDL_joystick/SDL_sysjoystick.h Modified: branches/fusegl/fuse/TODO =================================================================== --- branches/fusegl/fuse/TODO 2007-03-10 12:53:34 UTC (rev 311) +++ branches/fusegl/fuse/TODO 2007-03-31 05:24:10 UTC (rev 312) @@ -23,18 +23,19 @@ X Fix screen updating during fastloading X Make sure that fuse_end is called somewhere on exit X Restore activity icons +X Restore joystick processing (re-use SDL joystick input files from SDL) * Make activity icons transparent * Use double buffered texture (in cocoadisplay have screen 0 and 1 for use of DisplayOpenGLView and flip between them on frame end), should also have a mutex taken while DisplayOpenGLView changes and cocoadisplay flips to prevent thread sync problems * Sort out remaining FuseController calls into emulator object/thread -* Add native joystick processing (removes SDL joystick input dependency from - Fuse) * Quit keyhandling when command key is pressed * Use sheets rather than modal dialogs (for Save As) * Put in latest hq[23]x filters (HQ2x_555 from ScummVM should do the trick) * Make border display optional * Figure out why minimise icon image is partially blanked when minimise starts +* Make sure that printer text is available as we go on OS X +* Allow Cmd-w to close as many operations as possible $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 2007-03-10 12:53:34 UTC (rev 311) +++ branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj 2007-03-31 05:24:10 UTC (rev 312) @@ -256,6 +256,11 @@ B650986E09366C8F003AF1BF /* rom.icns in Resources */ = {isa = PBXBuildFile; fileRef = B650986B09366C8F003AF1BF /* rom.icns */; }; B650986F09366C8F003AF1BF /* rzx.icns in Resources */ = {isa = PBXBuildFile; fileRef = B650986C09366C8F003AF1BF /* rzx.icns */; }; B650987109366CA2003AF1BF /* szx.icns in Resources */ = {isa = PBXBuildFile; fileRef = B650987009366CA2003AF1BF /* szx.icns */; }; + B65352DB0B8CF6780083F942 /* SDL_joystick.h in Headers */ = {isa = PBXBuildFile; fileRef = B65352BD0B89B8AA0083F942 /* SDL_joystick.h */; }; + B65352F20B8CF6CC0083F942 /* SDL_sysjoystick.c in Sources */ = {isa = PBXBuildFile; fileRef = B65352BE0B89B8AA0083F942 /* SDL_sysjoystick.c */; }; + B65352F30B8CF6CC0083F942 /* SDL_sysjoystick.h in Headers */ = {isa = PBXBuildFile; fileRef = B65352BF0B89B8AA0083F942 /* SDL_sysjoystick.h */; }; + B65353150B8FF3D20083F942 /* SDL_joystick.c in Sources */ = {isa = PBXBuildFile; fileRef = B65353140B8FF3D20083F942 /* SDL_joystick.c */; }; + B653532B0B902CB20083F942 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B653532A0B902CB20083F942 /* IOKit.framework */; }; B67DC2190B63835100FA31B6 /* cocoastatusbar.m in Sources */ = {isa = PBXBuildFile; fileRef = B67DC2180B63835100FA31B6 /* cocoastatusbar.m */; }; B6825549091817F30014B5EE /* divide.c in Sources */ = {isa = PBXBuildFile; fileRef = B6825547091817F30014B5EE /* divide.c */; }; B682554A091817F30014B5EE /* divide.h in Headers */ = {isa = PBXBuildFile; fileRef = B6825548091817F30014B5EE /* divide.h */; }; @@ -417,6 +422,11 @@ B650C40A0765988200DE7E81 /* tape_scorpion.szx */ = {isa = PBXFileReference; lastKnownFileType = file; name = tape_scorpion.szx; path = ../lib/compressed/tape_scorpion.szx; sourceTree = SOURCE_ROOT; }; 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; }; + B65352BD0B89B8AA0083F942 /* SDL_joystick.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SDL_joystick.h; sourceTree = "<group>"; }; + B65352BE0B89B8AA0083F942 /* SDL_sysjoystick.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = SDL_sysjoystick.c; sourceTree = "<group>"; }; + B65352BF0B89B8AA0083F942 /* SDL_sysjoystick.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SDL_sysjoystick.h; sourceTree = "<group>"; }; + B65353140B8FF3D20083F942 /* SDL_joystick.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = SDL_joystick.c; sourceTree = "<group>"; }; + B653532A0B902CB20083F942 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = "<absolute>"; }; 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; }; @@ -646,6 +656,7 @@ B6A6F0EE0B3D5F9E000B88E9 /* CoreAudio.framework in Frameworks */, B6A6F0F30B3D602F000B88E9 /* AudioUnit.framework in Frameworks */, B6A6F1060B3D60D0000B88E9 /* OpenGL.framework in Frameworks */, + B653532B0B902CB20083F942 /* IOKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -674,8 +685,9 @@ isa = PBXGroup; children = ( B6A6F0F20B3D602F000B88E9 /* AudioUnit.framework */, + B64E2A160A6534A3006863D9 /* Carbon.framework */, B6A6F0ED0B3D5F9E000B88E9 /* CoreAudio.framework */, - B64E2A160A6534A3006863D9 /* Carbon.framework */, + B653532A0B902CB20083F942 /* IOKit.framework */, B6202BD105BD43D800A1EA8F /* libbz2.framework */, 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */, F520C8BC038D022E01A804BA /* OpenGL.framework */, @@ -758,6 +770,17 @@ name = Frameworks; sourceTree = "<group>"; }; + B6042DBD0BBE2606000CC959 /* SDL_joystick */ = { + isa = PBXGroup; + children = ( + B65353140B8FF3D20083F942 /* SDL_joystick.c */, + B65352BD0B89B8AA0083F942 /* SDL_joystick.h */, + B65352BE0B89B8AA0083F942 /* SDL_sysjoystick.c */, + B65352BF0B89B8AA0083F942 /* SDL_sysjoystick.h */, + ); + path = SDL_joystick; + sourceTree = "<group>"; + }; B632C6AD03E5360C00A864FD /* Controllers */ = { isa = PBXGroup; children = ( @@ -920,6 +943,7 @@ B6CE7E8A0B28027000EB65B3 /* cocoa */ = { isa = PBXGroup; children = ( + B6042DBD0BBE2606000CC959 /* SDL_joystick */, B6CE7F3B0B2830A300EB65B3 /* cocoadisplay.h */, B6B99F890B5F798700EE408F /* cocoadisplay.m */, B6A6F10D0B3D6360000B88E9 /* cocoaerror.m */, @@ -1246,6 +1270,8 @@ B6A24E3C0B49C78700AD5B9D /* hq2x.h in Headers */, B6A24E3E0B49C78700AD5B9D /* hq3x.h in Headers */, B6B076B20B59FE9A00D4F95C /* Emulator.h in Headers */, + B65352DB0B8CF6780083F942 /* SDL_joystick.h in Headers */, + B65352F30B8CF6CC0083F942 /* SDL_sysjoystick.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1485,6 +1511,8 @@ B6B076B30B59FE9A00D4F95C /* Emulator.m in Sources */, B6B99F8A0B5F798700EE408F /* cocoadisplay.m in Sources */, B67DC2190B63835100FA31B6 /* cocoastatusbar.m in Sources */, + B65352F20B8CF6CC0083F942 /* SDL_sysjoystick.c in Sources */, + B65353150B8FF3D20083F942 /* SDL_joystick.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1505,10 +1533,7 @@ B61F46A609121DF100C8096C /* Development */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = ( - i386, - ppc, - ); + ARCHS = i386; COPY_PHASE_STRIP = NO; FRAMEWORK_SEARCH_PATHS = ( "$(HOME)/Library/Frameworks", @@ -1550,10 +1575,7 @@ B61F46A709121DF100C8096C /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = ( - i386, - ppc, - ); + ARCHS = i386; COPY_PHASE_STRIP = YES; FRAMEWORK_SEARCH_PATHS = ( "$(HOME)/Library/Frameworks", @@ -1594,10 +1616,7 @@ B61F46A809121DF100C8096C /* Default */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = ( - i386, - ppc, - ); + ARCHS = i386; FRAMEWORK_SEARCH_PATHS = ( "$(HOME)/Library/Frameworks", ../../libspectrum/build/Deployment, Modified: branches/fusegl/fuse/fusepb/content_arrays/HIDJoysticks.m =================================================================== --- branches/fusegl/fuse/fusepb/content_arrays/HIDJoysticks.m 2007-03-10 12:53:34 UTC (rev 311) +++ branches/fusegl/fuse/fusepb/content_arrays/HIDJoysticks.m 2007-03-31 05:24:10 UTC (rev 312) @@ -28,6 +28,7 @@ #include <libspectrum.h> +#include "ui/cocoa/SDL_joystick/SDL_sysjoystick.h" #include "joystick.h" @implementation HIDJoystick @@ -42,17 +43,15 @@ joysticks = [NSMutableArray arrayWithCapacity:joysticks_supported+1]; [joysticks addObject:[HIDJoystick joystickWithName:@"None" andType:0]]; -#if 0 if( joysticks_supported > 0 ){ for( i=0; i<joysticks_supported; i++ ) { [joysticks addObject: [HIDJoystick joystickWithName:[NSString stringWithUTF8String: - HID_JoystickName(i)] + SDL_SYS_JoystickName(i)] andType:i+1] ]; } } -#endif } return joysticks; } Added: branches/fusegl/fuse/ui/cocoa/SDL_joystick/SDL_joystick.c =================================================================== --- branches/fusegl/fuse/ui/cocoa/SDL_joystick/SDL_joystick.c (rev 0) +++ branches/fusegl/fuse/ui/cocoa/SDL_joystick/SDL_joystick.c 2007-03-31 05:24:10 UTC (rev 312) @@ -0,0 +1,582 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2006 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + sl...@li... +*/ +//#include "SDL_config.h" + +/* This is the joystick API for Simple DirectMedia Layer */ + +#include <string.h> +#include <stdlib.h> + +#include "ui.h" + +//#include "SDL_events.h" +#include "SDL_sysjoystick.h" +#include "SDL_joystick_c.h" +#if 0 +#include "../events/SDL_events_c.h" +#endif + +/* This is used for Quake III Arena */ +#if SDL_EVENTS_DISABLED +#define SDL_Lock_EventThread() +#define SDL_Unlock_EventThread() +#endif + +#define SDL_EVENTS_DISABLED 1 + +Uint8 SDL_numjoysticks = 0; +SDL_Joystick **SDL_joysticks = NULL; +static SDL_Joystick *default_joystick = NULL; + +int SDL_JoystickInit(void) +{ + int arraylen; + int status; + + SDL_numjoysticks = 0; + status = SDL_SYS_JoystickInit(); + if ( status >= 0 ) { + arraylen = (status+1)*sizeof(*SDL_joysticks); + SDL_joysticks = (SDL_Joystick **)malloc(arraylen); + if ( SDL_joysticks == NULL ) { + SDL_numjoysticks = 0; + } else { + memset(SDL_joysticks, 0, arraylen); + SDL_numjoysticks = status; + } + status = 0; + } + default_joystick = NULL; + return(status); +} + +/* + * Count the number of joysticks attached to the system + */ +int SDL_NumJoysticks(void) +{ + return SDL_numjoysticks; +} + +/* + * Get the implementation dependent name of a joystick + */ +const char *SDL_JoystickName(int device_index) +{ + if ( (device_index < 0) || (device_index >= SDL_numjoysticks) ) { + ui_error( UI_ERROR_ERROR, "There are %d joysticks available", + SDL_numjoysticks); + return(NULL); + } + return(SDL_SYS_JoystickName(device_index)); +} + +/* + * Open a joystick for use - the index passed as an argument refers to + * the N'th joystick on the system. This index is the value which will + * identify this joystick in future joystick events. + * + * This function returns a joystick identifier, or NULL if an error occurred. + */ +SDL_Joystick *SDL_JoystickOpen(int device_index) +{ + int i; + SDL_Joystick *joystick; + + if ( (device_index < 0) || (device_index >= SDL_numjoysticks) ) { + ui_error( UI_ERROR_ERROR, "There are %d joysticks available", + SDL_numjoysticks); + return(NULL); + } + + /* If the joystick is already open, return it */ + for ( i=0; SDL_joysticks[i]; ++i ) { + if ( device_index == SDL_joysticks[i]->index ) { + joystick = SDL_joysticks[i]; + ++joystick->ref_count; + return(joystick); + } + } + + /* Create and initialize the joystick */ + joystick = (SDL_Joystick *)malloc((sizeof *joystick)); + if ( joystick != NULL ) { + memset(joystick, 0, (sizeof *joystick)); + joystick->index = device_index; + if ( SDL_SYS_JoystickOpen(joystick) < 0 ) { + free(joystick); + joystick = NULL; + } else { + if ( joystick->naxes > 0 ) { + joystick->axes = (Sint16 *)malloc + (joystick->naxes*sizeof(Sint16)); + } + if ( joystick->nhats > 0 ) { + joystick->hats = (Uint8 *)malloc + (joystick->nhats*sizeof(Uint8)); + } + if ( joystick->nballs > 0 ) { + joystick->balls = (struct balldelta *)malloc + (joystick->nballs*sizeof(*joystick->balls)); + } + if ( joystick->nbuttons > 0 ) { + joystick->buttons = (Uint8 *)malloc + (joystick->nbuttons*sizeof(Uint8)); + } + if ( ((joystick->naxes > 0) && !joystick->axes) + || ((joystick->nhats > 0) && !joystick->hats) + || ((joystick->nballs > 0) && !joystick->balls) + || ((joystick->nbuttons > 0) && !joystick->buttons)) { + //SDL_OutOfMemory(); + SDL_JoystickClose(joystick); + joystick = NULL; + } + if ( joystick->axes ) { + memset(joystick->axes, 0, + joystick->naxes*sizeof(Sint16)); + } + if ( joystick->hats ) { + memset(joystick->hats, 0, + joystick->nhats*sizeof(Uint8)); + } + if ( joystick->balls ) { + memset(joystick->balls, 0, + joystick->nballs*sizeof(*joystick->balls)); + } + if ( joystick->buttons ) { + memset(joystick->buttons, 0, + joystick->nbuttons*sizeof(Uint8)); + } + } + } + if ( joystick ) { + /* Add joystick to list */ + ++joystick->ref_count; + //SDL_Lock_EventThread(); + for ( i=0; SDL_joysticks[i]; ++i ) + /* Skip to next joystick */; + SDL_joysticks[i] = joystick; + //SDL_Unlock_EventThread(); + } + return(joystick); +} + +/* + * Returns 1 if the joystick has been opened, or 0 if it has not. + */ +int SDL_JoystickOpened(int device_index) +{ + int i, opened; + + opened = 0; + for ( i=0; SDL_joysticks[i]; ++i ) { + if ( SDL_joysticks[i]->index == (Uint8)device_index ) { + opened = 1; + break; + } + } + return(opened); +} + +static int ValidJoystick(SDL_Joystick **joystick) +{ + int valid; + + if ( *joystick == NULL ) { + *joystick = default_joystick; + } + if ( *joystick == NULL ) { + ui_error( UI_ERROR_ERROR, "Joystick hasn't been opened yet"); + valid = 0; + } else { + valid = 1; + } + return valid; +} + +/* + * Get the device index of an opened joystick. + */ +int SDL_JoystickIndex(SDL_Joystick *joystick) +{ + if ( ! ValidJoystick(&joystick) ) { + return(-1); + } + return(joystick->index); +} + +/* + * Get the number of multi-dimensional axis controls on a joystick + */ +int SDL_JoystickNumAxes(SDL_Joystick *joystick) +{ + if ( ! ValidJoystick(&joystick) ) { + return(-1); + } + return(joystick->naxes); +} + +/* + * Get the number of hats on a joystick + */ +int SDL_JoystickNumHats(SDL_Joystick *joystick) +{ + if ( ! ValidJoystick(&joystick) ) { + return(-1); + } + return(joystick->nhats); +} + +/* + * Get the number of trackballs on a joystick + */ +int SDL_JoystickNumBalls(SDL_Joystick *joystick) +{ + if ( ! ValidJoystick(&joystick) ) { + return(-1); + } + return(joystick->nballs); +} + +/* + * Get the number of buttons on a joystick + */ +int SDL_JoystickNumButtons(SDL_Joystick *joystick) +{ + if ( ! ValidJoystick(&joystick) ) { + return(-1); + } + return(joystick->nbuttons); +} + +/* + * Get the current state of an axis control on a joystick + */ +Sint16 SDL_JoystickGetAxis(SDL_Joystick *joystick, int axis) +{ + Sint16 state; + + if ( ! ValidJoystick(&joystick) ) { + return(0); + } + if ( axis < joystick->naxes ) { + state = joystick->axes[axis]; + } else { + ui_error( UI_ERROR_ERROR, "Joystick only has %d axes", joystick->naxes); + state = 0; + } + return(state); +} + +/* + * Get the current state of a hat on a joystick + */ +Uint8 SDL_JoystickGetHat(SDL_Joystick *joystick, int hat) +{ + Uint8 state; + + if ( ! ValidJoystick(&joystick) ) { + return(0); + } + if ( hat < joystick->nhats ) { + state = joystick->hats[hat]; + } else { + ui_error( UI_ERROR_ERROR, "Joystick only has %d hats", joystick->nhats); + state = 0; + } + return(state); +} + +/* + * Get the ball axis change since the last poll + */ +int SDL_JoystickGetBall(SDL_Joystick *joystick, int ball, int *dx, int *dy) +{ + int retval; + + if ( ! ValidJoystick(&joystick) ) { + return(-1); + } + + retval = 0; + if ( ball < joystick->nballs ) { + if ( dx ) { + *dx = joystick->balls[ball].dx; + } + if ( dy ) { + *dy = joystick->balls[ball].dy; + } + joystick->balls[ball].dx = 0; + joystick->balls[ball].dy = 0; + } else { + ui_error( UI_ERROR_ERROR, "Joystick only has %d balls", joystick->nballs); + retval = -1; + } + return(retval); +} + +/* + * Get the current state of a button on a joystick + */ +Uint8 SDL_JoystickGetButton(SDL_Joystick *joystick, int button) +{ + Uint8 state; + + if ( ! ValidJoystick(&joystick) ) { + return(0); + } + if ( button < joystick->nbuttons ) { + state = joystick->buttons[button]; + } else { + ui_error( UI_ERROR_ERROR, "Joystick only has %d buttons",joystick->nbuttons); + state = 0; + } + return(state); +} + +/* + * Close a joystick previously opened with SDL_JoystickOpen() + */ +void SDL_JoystickClose(SDL_Joystick *joystick) +{ + int i; + + if ( ! ValidJoystick(&joystick) ) { + return; + } + + /* First decrement ref count */ + if ( --joystick->ref_count > 0 ) { + return; + } + + /* Lock the event queue - prevent joystick polling */ + //SDL_Lock_EventThread(); + + if ( joystick == default_joystick ) { + default_joystick = NULL; + } + SDL_SYS_JoystickClose(joystick); + + /* Remove joystick from list */ + for ( i=0; SDL_joysticks[i]; ++i ) { + if ( joystick == SDL_joysticks[i] ) { + memcpy(&SDL_joysticks[i], &SDL_joysticks[i+1], + (SDL_numjoysticks-i)*sizeof(joystick)); + break; + } + } + + /* Let the event thread keep running */ + //SDL_Unlock_EventThread(); + + /* Free the data associated with this joystick */ + if ( joystick->axes ) { + free(joystick->axes); + } + if ( joystick->hats ) { + free(joystick->hats); + } + if ( joystick->balls ) { + free(joystick->balls); + } + if ( joystick->buttons ) { + free(joystick->buttons); + } + free(joystick); +} + +void SDL_JoystickQuit(void) +{ + /* Stop the event polling */ + //SDL_Lock_EventThread(); + SDL_numjoysticks = 0; + //SDL_Unlock_EventThread(); + + /* Quit the joystick setup */ + SDL_SYS_JoystickQuit(); + if ( SDL_joysticks ) { + free(SDL_joysticks); + SDL_joysticks = NULL; + } +} + + +/* These are global for SDL_sysjoystick.c and SDL_events.c */ + +int SDL_PrivateJoystickAxis(SDL_Joystick *joystick, Uint8 axis, Sint16 value) +{ + int posted; + + /* Update internal joystick state */ + joystick->axes[axis] = value; + + /* Post the event, if desired */ + posted = 0; +#if 0 + if ( SDL_ProcessEvents[SDL_JOYAXISMOTION] == SDL_ENABLE ) { + SDL_Event event; + event.type = SDL_JOYAXISMOTION; + event.jaxis.which = joystick->index; + event.jaxis.axis = axis; + event.jaxis.value = value; + if ( (SDL_EventOK == NULL) || (*SDL_EventOK)(&event) ) { + posted = 1; + SDL_PushEvent(&event); + } + } +#endif /* !SDL_EVENTS_DISABLED */ + return(posted); +} + +int SDL_PrivateJoystickHat(SDL_Joystick *joystick, Uint8 hat, Uint8 value) +{ + int posted; + + /* Update internal joystick state */ + joystick->hats[hat] = value; + + /* Post the event, if desired */ + posted = 0; +#if 0 + if ( SDL_ProcessEvents[SDL_JOYHATMOTION] == SDL_ENABLE ) { + SDL_Event event; + event.jhat.type = SDL_JOYHATMOTION; + event.jhat.which = joystick->index; + event.jhat.hat = hat; + event.jhat.value = value; + if ( (SDL_EventOK == NULL) || (*SDL_EventOK)(&event) ) { + posted = 1; + SDL_PushEvent(&event); + } + } +#endif /* !SDL_EVENTS_DISABLED */ + return(posted); +} + +int SDL_PrivateJoystickBall(SDL_Joystick *joystick, Uint8 ball, + Sint16 xrel, Sint16 yrel) +{ + int posted; + + /* Update internal mouse state */ + joystick->balls[ball].dx += xrel; + joystick->balls[ball].dy += yrel; + + /* Post the event, if desired */ + posted = 0; +#if 0 + if ( SDL_ProcessEvents[SDL_JOYBALLMOTION] == SDL_ENABLE ) { + SDL_Event event; + event.jball.type = SDL_JOYBALLMOTION; + event.jball.which = joystick->index; + event.jball.ball = ball; + event.jball.xrel = xrel; + event.jball.yrel = yrel; + if ( (SDL_EventOK == NULL) || (*SDL_EventOK)(&event) ) { + posted = 1; + SDL_PushEvent(&event); + } + } +#endif /* !SDL_EVENTS_DISABLED */ + return(posted); +} + +int SDL_PrivateJoystickButton(SDL_Joystick *joystick, Uint8 button, Uint8 state) +{ + int posted; +#if 0 + SDL_Event event; + + switch ( state ) { + case SDL_PRESSED: + event.type = SDL_JOYBUTTONDOWN; + break; + case SDL_RELEASED: + event.type = SDL_JOYBUTTONUP; + break; + default: + /* Invalid state -- bail */ + return(0); + } +#endif /* !SDL_EVENTS_DISABLED */ + + /* Update internal joystick state */ + joystick->buttons[button] = state; + + /* Post the event, if desired */ + posted = 0; +#if 0 + if ( SDL_ProcessEvents[event.type] == SDL_ENABLE ) { + event.jbutton.which = joystick->index; + event.jbutton.button = button; + event.jbutton.state = state; + if ( (SDL_EventOK == NULL) || (*SDL_EventOK)(&event) ) { + posted = 1; + SDL_PushEvent(&event); + } + } +#endif /* !SDL_EVENTS_DISABLED */ + return(posted); +} + +void SDL_JoystickUpdate(void) +{ + int i; + + for ( i=0; SDL_joysticks[i]; ++i ) { + SDL_SYS_JoystickUpdate(SDL_joysticks[i]); + } +} + +#define SDL_IGNORE 0 + +int SDL_JoystickEventState(int state) +{ +#if SDL_EVENTS_DISABLED + return SDL_IGNORE; +#else + const Uint8 event_list[] = { + SDL_JOYAXISMOTION, SDL_JOYBALLMOTION, SDL_JOYHATMOTION, + SDL_JOYBUTTONDOWN, SDL_JOYBUTTONUP, + }; + unsigned int i; + + switch (state) { + case SDL_QUERY: + state = SDL_IGNORE; + for ( i=0; i<SDL_arraysize(event_list); ++i ) { + state = SDL_EventState(event_list[i],SDL_QUERY); + if ( state == SDL_ENABLE ) { + break; + } + } + break; + default: + for ( i=0; i<SDL_arraysize(event_list); ++i ) { + SDL_EventState(event_list[i], state); + } + break; + } + return(state); +#endif /* SDL_EVENTS_DISABLED */ +} Added: branches/fusegl/fuse/ui/cocoa/SDL_joystick/SDL_joystick.h =================================================================== --- branches/fusegl/fuse/ui/cocoa/SDL_joystick/SDL_joystick.h (rev 0) +++ branches/fusegl/fuse/ui/cocoa/SDL_joystick/SDL_joystick.h 2007-03-31 05:24:10 UTC (rev 312) @@ -0,0 +1,175 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2006 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + sl...@li... +*/ + +/* Include file for SDL joystick event handling */ + +#ifndef _SDL_joystick_h +#define _SDL_joystick_h + +//#include "SDL_stdinc.h" +//#include "SDL_error.h" + +//#include "begin_code.h" + +#include <sys/types.h> + +#define Sint16 int16_t +#define Uint8 uint8_t + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* In order to use these functions, SDL_Init() must have been called + with the SDL_INIT_JOYSTICK flag. This causes SDL to scan the system + for joysticks, and load appropriate drivers. +*/ + +/* The joystick structure used to identify an SDL joystick */ +struct _SDL_Joystick; +typedef struct _SDL_Joystick SDL_Joystick; + + +/* Function prototypes */ +int SDL_JoystickInit(void); +void SDL_JoystickQuit(void); +/* + * Count the number of joysticks attached to the system + */ +extern int SDL_NumJoysticks(void); + +/* + * Get the implementation dependent name of a joystick. + * This can be called before any joysticks are opened. + * If no name can be found, this function returns NULL. + */ +extern const char * SDL_JoystickName(int device_index); + +/* + * Open a joystick for use - the index passed as an argument refers to + * the N'th joystick on the system. This index is the value which will + * identify this joystick in future joystick events. + * + * This function returns a joystick identifier, or NULL if an error occurred. + */ +extern SDL_Joystick * SDL_JoystickOpen(int device_index); + +/* + * Returns 1 if the joystick has been opened, or 0 if it has not. + */ +extern int SDL_JoystickOpened(int device_index); + +/* + * Get the device index of an opened joystick. + */ +extern int SDL_JoystickIndex(SDL_Joystick *joystick); + +/* + * Get the number of general axis controls on a joystick + */ +extern int SDL_JoystickNumAxes(SDL_Joystick *joystick); + +/* + * Get the number of trackballs on a joystick + * Joystick trackballs have only relative motion events associated + * with them and their state cannot be polled. + */ +extern int SDL_JoystickNumBalls(SDL_Joystick *joystick); + +/* + * Get the number of POV hats on a joystick + */ +extern int SDL_JoystickNumHats(SDL_Joystick *joystick); + +/* + * Get the number of buttons on a joystick + */ +extern int SDL_JoystickNumButtons(SDL_Joystick *joystick); + +/* + * Update the current state of the open joysticks. + * This is called automatically by the event loop if any joystick + * events are enabled. + */ +extern void SDL_JoystickUpdate(void); + +/* + * Enable/disable joystick event polling. + * If joystick events are disabled, you must call SDL_JoystickUpdate() + * yourself and check the state of the joystick when you want joystick + * information. + * The state can be one of SDL_QUERY, SDL_ENABLE or SDL_IGNORE. + */ +extern int SDL_JoystickEventState(int state); + +/* + * Get the current state of an axis control on a joystick + * The state is a value ranging from -32768 to 32767. + * The axis indices start at index 0. + */ +extern Sint16 SDL_JoystickGetAxis(SDL_Joystick *joystick, int axis); + +/* + * Get the current state of a POV hat on a joystick + * The return value is one of the following positions: + */ +#define SDL_HAT_CENTERED 0x00 +#define SDL_HAT_UP 0x01 +#define SDL_HAT_RIGHT 0x02 +#define SDL_HAT_DOWN 0x04 +#define SDL_HAT_LEFT 0x08 +#define SDL_HAT_RIGHTUP (SDL_HAT_RIGHT|SDL_HAT_UP) +#define SDL_HAT_RIGHTDOWN (SDL_HAT_RIGHT|SDL_HAT_DOWN) +#define SDL_HAT_LEFTUP (SDL_HAT_LEFT|SDL_HAT_UP) +#define SDL_HAT_LEFTDOWN (SDL_HAT_LEFT|SDL_HAT_DOWN) +/* + * The hat indices start at index 0. + */ +extern Uint8 SDL_JoystickGetHat(SDL_Joystick *joystick, int hat); + +/* + * Get the ball axis change since the last poll + * This returns 0, or -1 if you passed it invalid parameters. + * The ball indices start at index 0. + */ +extern int SDL_JoystickGetBall(SDL_Joystick *joystick, int ball, int *dx, int *dy); + +/* + * Get the current state of a button on a joystick + * The button indices start at index 0. + */ +extern Uint8 SDL_JoystickGetButton(SDL_Joystick *joystick, int button); + +/* + * Close a joystick previously opened with SDL_JoystickOpen() + */ +extern void SDL_JoystickClose(SDL_Joystick *joystick); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +//#include "close_code.h" + +#endif /* _SDL_joystick_h */ Added: branches/fusegl/fuse/ui/cocoa/SDL_joystick/SDL_joystick_c.h =================================================================== --- branches/fusegl/fuse/ui/cocoa/SDL_joystick/SDL_joystick_c.h (rev 0) +++ branches/fusegl/fuse/ui/cocoa/SDL_joystick/SDL_joystick_c.h 2007-03-31 05:24:10 UTC (rev 312) @@ -0,0 +1,38 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2006 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + sl...@li... +*/ +//#include "SDL_config.h" + +/* Useful functions and variables from SDL_joystick.c */ +#include "SDL_joystick.h" + +/* The number of available joysticks on the system */ +extern Uint8 SDL_numjoysticks; + +/* Internal event queueing functions */ +extern int SDL_PrivateJoystickAxis(SDL_Joystick *joystick, + Uint8 axis, Sint16 value); +extern int SDL_PrivateJoystickBall(SDL_Joystick *joystick, + Uint8 ball, Sint16 xrel, Sint16 yrel); +extern int SDL_PrivateJoystickHat(SDL_Joystick *joystick, + Uint8 hat, Uint8 value); +extern int SDL_PrivateJoystickButton(SDL_Joystick *joystick, + Uint8 button, Uint8 state); Added: branches/fusegl/fuse/ui/cocoa/SDL_joystick/SDL_sysjoystick.c =================================================================== --- branches/fusegl/fuse/ui/cocoa/SDL_joystick/SDL_sysjoystick.c (rev 0) +++ branches/fusegl/fuse/ui/cocoa/SDL_joystick/SDL_sysjoystick.c 2007-03-31 05:24:10 UTC (rev 312) @@ -0,0 +1,840 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2004 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the Free + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Sam Lantinga + sl...@li... +*/ +//#include "SDL_config.h" + +/* SDL joystick driver for Darwin / Mac OS X, based on the IOKit HID API */ +/* Written 2001 by Max Horn */ + +#include <unistd.h> +#include <ctype.h> +#include <sysexits.h> +#include <mach/mach.h> +#include <mach/mach_error.h> +#include <IOKit/IOKitLib.h> +#include <IOKit/IOCFPlugIn.h> +#ifdef MACOS_10_0_4 +#include <IOKit/hidsystem/IOHIDUsageTables.h> +#else +/* The header was moved here in Mac OS X 10.1 */ +#include <Kernel/IOKit/hidsystem/IOHIDUsageTables.h> +#endif +#include <IOKit/hid/IOHIDLib.h> +#include <IOKit/hid/IOHIDKeys.h> +#include <CoreFoundation/CoreFoundation.h> +#include <Carbon/Carbon.h> /* for NewPtrClear, DisposePtr */ + +#include "SDL_joystick.h" +#include "SDL_sysjoystick.h" +#include "SDL_joystick_c.h" + +#include "ui/ui.h" + +struct recElement +{ + IOHIDElementCookie cookie; /* unique value which identifies element, will NOT change */ + long min; /* reported min value possible */ + long max; /* reported max value possible */ +#if 0 + /* TODO: maybe should handle the following stuff somehow? */ + + long scaledMin; /* reported scaled min value possible */ + long scaledMax; /* reported scaled max value possible */ + long size; /* size in bits of data return from element */ + Boolean relative; /* are reports relative to last report (deltas) */ + Boolean wrapping; /* does element wrap around (one value higher than max is min) */ + Boolean nonLinear; /* are the values reported non-linear relative to element movement */ + Boolean preferredState; /* does element have a preferred state (such as a button) */ + Boolean nullState; /* does element have null state */ +#endif /* 0 */ + + /* runtime variables used for auto-calibration */ + long minReport; /* min returned value */ + long maxReport; /* max returned value */ + + struct recElement * pNext; /* next element in list */ +}; +typedef struct recElement recElement; + +struct joystick_hwdata +{ + IOHIDDeviceInterface ** interface; /* interface to device, NULL = no interface */ + + char product[256]; /* name of product */ + long usage; /* usage page from IOUSBHID Parser.h which defines general usage */ + long usagePage; /* usage within above page from IOUSBHID Parser.h which defines specific usage */ + + long axes; /* number of axis (calculated, not reported by device) */ + long buttons; /* number of buttons (calculated, not reported by device) */ + long hats; /* number of hat switches (calculated, not reported by device) */ + long elements; /* number of total elements (shouldbe total of above) (calculated, not reported by device) */ + + recElement* firstAxis; + recElement* firstButton; + recElement* firstHat; + + int removed; + int uncentered; + + struct joystick_hwdata* pNext; /* next device */ +}; +typedef struct joystick_hwdata recDevice; + + +/* Linked list of all available devices */ +static recDevice *gpDeviceList = NULL; + + +static void HIDReportErrorNum (char * strError, long numError) +{ + ui_error( UI_ERROR_ERROR, strError); +} + +static void HIDGetCollectionElements (CFMutableDictionaryRef deviceProperties, recDevice *pDevice); + +/* returns current value for element, polling element + * will return 0 on error conditions which should be accounted for by application + */ + +static SInt32 HIDGetElementValue (recDevice *pDevice, recElement *pElement) +{ + IOReturn result = kIOReturnSuccess; + IOHIDEventStruct hidEvent; + hidEvent.value = 0; + + if (NULL != pDevice && NULL != pElement && NULL != pDevice->interface) + { + result = (*(pDevice->interface))->getElementValue(pDevice->interface, pElement->cookie, &hidEvent); + if (kIOReturnSuccess == result) + { + /* record min and max for auto calibration */ + if (hidEvent.value < pElement->minReport) + pElement->minReport = hidEvent.value; + if (hidEvent.value > pElement->maxReport) + pElement->maxReport = hidEvent.value; + } + } + + /* auto user scale */ + return hidEvent.value; +} + +static SInt32 HIDScaledCalibratedValue (recDevice *pDevice, recElement *pElement, long min, long max) +{ + float deviceScale = max - min; + float readScale = pElement->maxReport - pElement->minReport; + SInt32 value = HIDGetElementValue(pDevice, pElement); + if (readScale == 0) + return value; /* no scaling at all */ + else + return ((value - pElement->minReport) * deviceScale / readScale) + min; +} + + +static void HIDRemovalCallback(void * target, + IOReturn result, + void * refcon, + void * sender) +{ + recDevice *device = (recDevice *) refcon; + device->removed = 1; + device->uncentered = 1; +} + + + +/* Create and open an interface to device, required prior to extracting values or building queues. + * Note: appliction now owns the device and must close and release it prior to exiting + */ + +static IOReturn HIDCreateOpenDeviceInterface (io_object_t hidDevice, recDevice *pDevice) +{ + IOReturn result = kIOReturnSuccess; + HRESULT plugInResult = S_OK; + SInt32 score = 0; + IOCFPlugInInterface ** ppPlugInInterface = NULL; + + if (NULL == pDevice->interface) + { + result = IOCreatePlugInInterfaceForService (hidDevice, kIOHIDDeviceUserClientTypeID, + kIOCFPlugInInterfaceID, &ppPlugInInterface, &score); + if (kIOReturnSuccess == result) + { + /* Call a method of the intermediate plug-in to create the device interface */ + plugInResult = (*ppPlugInInterface)->QueryInterface (ppPlugInInterface, + CFUUIDGetUUIDBytes (kIOHIDDeviceInterfaceID), (void *) &(pDevice->interface)); + if (S_OK != plugInResult) + HIDReportErrorNum ("Couldn\xD5t query HID class device interface from plugInInterface", plugInResult); + (*ppPlugInInterface)->Release (ppPlugInInterface); + } + else + HIDReportErrorNum ("Failed to create **plugInInterface via IOCreatePlugInInterfaceForService.", result); + } + if (NULL != pDevice->interface) + { + result = (*(pDevice->interface))->open (pDevice->interface, 0); + if (kIOReturnSuccess != result) + HIDReportErrorNum ("Failed to open pDevice->interface via open.", result); + else + (*(pDevice->interface))->setRemovalCallback (pDevice->interface, HIDRemovalCallback, pDevice, pDevice); + + } + return result; +} + +/* Closes and releases interface to device, should be done prior to exting application + * Note: will have no affect if device or interface do not exist + * application will "own" the device if interface is not closed + * (device may have to be plug and re-plugged in different location to get it working again without a restart) + */ + +static IOReturn HIDCloseReleaseInterface (recDevice *pDevice) +{ + IOReturn result = kIOReturnSuccess; + + if ((NULL != pDevice) && (NULL != pDevice->interface)) + { + /* close the interface */ + result = (*(pDevice->interface))->close (pDevice->interface); + if (kIOReturnNotOpen == result) + { + /* do nothing as device was not opened, thus can't be closed */ + } + else if (kIOReturnSuccess != result) + HIDReportErrorNum ("Failed to close IOHIDDeviceInterface.", result); + /* release the interface */ + result = (*(pDevice->interface))->Release (pDevice->interface); + if (kIOReturnSuccess != result) + HIDReportErrorNum ("Failed to release IOHIDDeviceInterface.", result); + pDevice->interface = NULL; + } + return result; +} + +/* extracts actual specific element information from each element CF dictionary entry */ + +static void HIDGetElementInfo (CFTypeRef refElement, recElement *pElement) +{ + long number; + CFTypeRef refType; + + refType = CFDictionaryGetValue (refElement, CFSTR(kIOHIDElementCookieKey)); + if (refType && CFNumberGetValue (refType, kCFNumberLongType, &number)) + pElement->cookie = (IOHIDElementCookie) number; + refType = CFDictionaryGetValue (refElement, CFSTR(kIOHIDElementMinKey)); + if (refType && CFNumberGetValue (refType, kCFNumberLongType, &number)) + pElement->min = number; + pElement->maxReport = pElement->min; + refType = CFDictionaryGetValue (refElement, CFSTR(kIOHIDElementMaxKey)); + if (refType && CFNumberGetValue (refType, kCFNumberLongType, &number)) + pElement->max = number; + pElement->minReport = pElement->max; +/* + TODO: maybe should handle the following stuff somehow? + + refType = CFDictionaryGetValue (refElement, CFSTR(kIOHIDElementScaledMinKey)); + if (refType && CFNumberGetValue (refType, kCFNumberLongType, &number)) + pElement->scaledMin = number; + refType = CFDictionaryGetValue (refElement, CFSTR(kIOHIDElementScaledMaxKey)); + if (refType && CFNumberGetValue (refType, kCFNumberLongType, &number)) + pElement->scaledMax = number; + refType = CFDictionaryGetValue (refElement, CFSTR(kIOHIDElementSizeKey)); + if (refType && CFNumberGetValue (refType, kCFNumberLongType, &number)) + pElement->size = number; + refType = CFDictionaryGetValue (refElement, CFSTR(kIOHIDElementIsRelativeKey)); + if (refType) + pElement->relative = CFBooleanGetValue (refType); + refType = CFDictionaryGetValue (refElement, CFSTR(kIOHIDElementIsWrappingKey)); + if (refType) + pElement->wrapping = CFBooleanGetValue (refType); + refType = CFDictionaryGetValue (refElement, CFSTR(kIOHIDElementIsNonLinearKey)); + if (refType) + pElement->nonLinear = CFBooleanGetValue (refType); + refType = CFDictionaryGetValue (refElement, CFSTR(kIOHIDElementHasPreferedStateKey)); + if (refType) + pElement->preferredState = CFBooleanGetValue (refType); + refType = CFDictionaryGetValue (refElement, CFSTR(kIOHIDElementHasNullStateKey)); + if (refType) + pElement->nullState = CFBooleanGetValue (refType); +*/ +} + +/* examines CF dictionary vlaue in device element hierarchy to determine if it is element of interest or a collection of more elements + * if element of interest allocate storage, add to list and retrieve element specific info + * if collection then pass on to deconstruction collection into additional individual elements + */ + +static void HIDAddElement (CFTypeRef refElement, recDevice* pDevice) +{ + recElement* element = NULL; + recElement** headElement = NULL; + long elementType, usagePage, usage; + CFTypeRef refElementType = CFDictionaryGetValue (refElement, CFSTR(kIOHIDElementTypeKey)); + CFTypeRef refUsagePage = CFDictionaryGetValue (refElement, CFSTR(kIOHIDElementUsagePageKey)); + CFTypeRef refUsage = CFDictionaryGetValue (refElement, CFSTR(kIOHIDElementUsageKey)); + + + if ((refElementType) && (CFNumberGetValue (refElementType, kCFNumberLongType, &elementType))) + { + /* look at types of interest */ + if ((elementType == kIOHIDElementTypeInput_Misc) || (elementType == kIOHIDElementTypeInput_Button) || + (elementType == kIOHIDElementTypeInput_Axis)) + { + if (refUsagePage && CFNumberGetValue (refUsagePage, kCFNumberLongType, &usagePage) && + refUsage && CFNumberGetValue (refUsage, kCFNumberLongType, &usage)) + { + switch (usagePage) /* only interested in kHIDPage_GenericDesktop and kHIDPage_Button */ + { + case kHIDPage_GenericDesktop: + { + switch (usage) /* look at usage to determine function */ + { + case kHIDUsage_GD_X: + case kHIDUsage_GD_Y: + case kHIDUsage_GD_Z: + case kHIDUsage_GD_Rx: + case kHIDUsage_GD_Ry: + case kHIDUsage_GD_Rz: + case kHIDUsage_GD_Slider: + case kHIDUsage_GD_Dial: + case kHIDUsage_GD_Wheel: + element = (recElement *) NewPtrClear (sizeof (recElement)); + if (element) + { + pDevice->axes++; + headElement = &(pDevice->firstAxis); + } + break; + case kHIDUsage_GD_Hatswitch: + element = (recElement *) NewPtrClear (sizeof (recElement)); + if (element) + { + pDevice->hats++; + headElement = &(pDevice->firstHat); + } + break; + } + } + break; + case kHIDPage_Button: + element = (recElement *) NewPtrClear (sizeof (recElement)); + if (element) + { + pDevice->buttons++; + headElement = &(pDevice->firstButton); + } + break; + default: + break; + } + } + } + else if (kIOHIDElementTypeCollection == elementType) + HIDGetCollectionElements ((CFMutableDictionaryRef) refElement, pDevice); + } + + if (element && headElement) /* add to list */ + { + pDevice->elements++; + if (NULL == *headElement) + *headElement = element; + else + { + recElement *elementPrevious, *elementCurrent; + elementCurrent = *headElement; + while (elementCurrent) + { + elementPrevious = elementCurrent; + elementCurrent = elementPrevious->pNext; + } + elementPrevious->pNext = element; + } + element->pNext = NULL; + HIDGetElementInfo (refElement, element); + } +} + +/* collects information from each array member in device element list (each array memeber = element) */ + +static void HIDGetElementsCFArrayHandler (const void * value, void * parameter) +{ + if (CFGetTypeID (value) == CFDictionaryGetTypeID ()) + HIDAddElement ((CFTypeRef) value, (recDevice *) parameter); +} + +/* handles retrieval of element information from arrays of elements in device IO registry information */ + +static void HIDGetElements (CFTypeRef refElementCurrent, recDevice *pDevice) +{ + CFTypeID type = CFGetTypeID (refElementCurrent); + if (type == CFArrayGetTypeID()) /* if element is an array */ + { + CFRange range = {0, CFArrayGetCount (refElementCurrent)}; + /* CountElementsCFArrayHandler called for each array member */ + CFArrayApplyFunction (refElementCurrent, range, HIDGetElementsCFArrayHandler, pDevice); + } +} + +/* handles extracting element information from element collection CF types + * used from top level element decoding and hierarchy deconstruction to flatten device element list + */ + +static void HIDGetCollectionElements (CFMutableDictionaryRef deviceProperties, recDevice *pDevice) +{ + CFTypeRef refElementTop = CFDictionaryGetValue (deviceProperties, CFSTR(kIOHIDElementKey)); + if (refElementTop) + HIDGetElements (refElementTop, pDevice); +} + +/* use top level element usage page and usage to discern device usage page and usage setting appropriate vlaues in device record */ + +static void HIDTopLevelElementHandler (const void * value, void * parameter) +{ + CFTypeRef refCF = 0; + if (CFGetTypeID (value) != CFDictionaryGetTypeID ()) + return; + refCF = CFDictionaryGetValue (value, CFSTR(kIOHIDElementUsagePageKey)); + if (!CFNumberGetValue (refCF, kCFNumberLongType, &((recDevice *) parameter)->usagePage)) + ui_error( UI_ERROR_ERROR, "CFNumberGetValue error retrieving pDevice->usagePage."); + refCF = CFDictionaryGetValue (value, CFSTR(kIOHIDElementUsageKey)); + if (!CFNumberGetValue (refCF, kCFNumberLongType, &((recDevice *) parameter)->usage)) + ui_error( UI_ERROR_ERROR, "CFNumberGetValue error retrieving pDevice->usage."); +} + +/* extracts device info from CF dictionary records in IO registry */ + +static void HIDGetDeviceInfo (io_object_t hidDevice, CFMutableDictionaryRef hidProperties, recDevice *pDevice) +{ + CFMutableDictionaryRef usbProperties = 0; + io_registry_entry_t parent1, parent2; + + /* Mac OS X currently is not mirroring all USB properties to HID page so need to look at USB device page also + * get dictionary for usb properties: step up two levels and get CF dictionary for USB properties + */ + if ((KERN_SUCCESS == IORegistryEntryGetParentEntry (hidDevice, kIOServicePlane, &parent1)) && + (KERN_SUCCESS == IORegistryEntryGetParentEntry (parent1, kIOServicePlane, &parent2)) && + (KERN_SUCCESS == IORegistryEntryCreateCFProperties (parent2, &usbProperties, kCFAllocatorDefault, kNilOptions))) + { + if (usbProperties) + { + CFTypeRef refCF = 0; + /* get device info + * try hid dictionary first, if fail then go to usb dictionary + */ + + + /* get product name */ + refCF = CFDictionaryGetValue (hidProperties, CFSTR(kIOHIDProductKey)); + if (!refCF) + refCF = CFDictionaryGetValue (usbProperties, CFSTR("USB Product Name")); + if (refCF) + { + if (!CFStringGetCString (refCF, pDevice->product, 256, CFStringGetSystemEncoding ())) + ui_error( UI_ERROR_ERROR, "CFStringGetCString error retrieving pDevice->product."); + } + + /* get usage page and usage */ + refCF = CFDictionaryGetValue (hidProperties, CFSTR(kIOHIDPrimaryUsagePageKey)); + if (refCF) + { + if (!CFNumberGetValue (refCF, kCFNumberLongType, &pDevice->usagePage)) + ui_error( UI_ERROR_ERROR, "CFNumberGetValue error retrieving pDevice->usagePage."); + refCF = CFDictionaryGetValue (hidProperties, CFSTR(kIOHIDPrimaryUsageKey)); + if (refCF) + if (!CFNumberGetValue (refCF, kCFNumberLongType, &pDevice->usage)) + ui_error( UI_ERROR_ERROR, "CFNumberGetValue error retrieving pDevice->usage."); + } + + if (NULL == refCF) /* get top level element HID usage page or usage */ + { + /* use top level element instead */ + CFTypeRef refCFTopElement = 0; + refCFTopElement = CFDictionaryGetValue (hidProperties, CFSTR(kIOHIDElementKey)); + { + /* refCFTopElement points to an array of element dictionaries */ + CFRange range = {0, CFArrayGetCount (refCFTopElement)}; + CFArrayApplyFunction (refCFTopElement, range, HIDTopLevelElementHandler, pDevice); + } + } + + CFRelease (usbProperties); + } + else + ui_error( UI_ERROR_ERROR, "IORegistryEntryCreateCFProperties failed to create usbProperties."); + + if (kIOReturnSuccess != IOObjectRelease (parent2)) + ui_error( UI_ERROR_ERROR, "IOObjectRelease error with parent2."); + if (kIOReturnSuccess != IOObjectRelease (parent1)) + ui_error( UI_ERROR_ERROR, "IOObjectRelease error with parent1."); + } +} + + +static recDevice *HIDBuildDevice (io_object_t hidDevice) +{ + recDevice *pDevice = (recDevice *) NewPtrClear (sizeof (recDevice)); + if (pDevice) + { + /* get dictionary for HID properties */ + CFMutableDictionaryRef hidProperties = 0; + kern_return_t result = IORegistryEntryCreateCFProperties (hidDevice, &hidProperties, kCFAllocatorDefault, kNilOptions); + if ((result == KERN_SUCCESS) && hidProperties) + { + /* create device interface */ + result = HIDCreateOpenDeviceInterface (hidDevice, pDevice); + if (kIOReturnSuccess == result) + { + HIDGetDeviceInfo (hidDevice, hidProperties, pDevice); /* hidDevice used to find parents in registry tree */ + HIDGetCollectionElements (hidProperties, pDevice); + } + else + { + DisposePtr((Ptr)pDevice); + pDevice = NULL; + } + CFRelease (hidProperties); + } + else + { + DisposePtr((Ptr)pDevice); + pDevice = NULL; + } + } + return pDevice; +} + +/* disposes of the element list associated with a device and the memory associated with the list + */ + +static void HIDDisposeElementList (recElement **elementList) +{ + recElement *pElement = *elementList; + while (pElement) + { + recElement *pElementNext = pElement->pNext; + DisposePtr ((Ptr) pElement); + pElement = pElementNext; + } + *elementList = NULL; +} + +/* disposes of a single device, closing and releaseing interface, freeing memory fro device and elements, setting device pointer to NULL + * all your device no longer belong to us... (i.e., you do not 'own' the device anymore) + */ + +static recDevice *HIDDisposeDevice (recDevice **ppDevice) +{ + kern_return_t result = KERN_SUCCESS; + recDevice *pDeviceNext = NULL; + if (*ppDevice) + { + /* save next device prior to disposing of this device */ + pDeviceNext = (*ppDevice)->pNext; + + /* free element lists */ + HIDDisposeElementList (&(*ppDevice)->firstAxis); + HIDDisposeElementList (&(*ppDevice)->firstButton); + HIDDisposeElementList (&(*ppDevice)->firstHat); + + result = HIDCloseReleaseInterface (*ppDevice); /* function sanity checks interface value (now application does not own device) */ + if (kIOReturnSuccess != result) + HIDReportErrorNum ("HIDCloseReleaseInterface failed when trying to dipose device.", result); + DisposePtr ((Ptr)*ppDevice); + *ppDevice = NULL; + } + return pDeviceNext; +} + + +/* Function to scan the system for joysticks. + * Joystick 0 should be the system default joystick. + * This function should return the number of available joysticks, or -1 + * on an unrecoverable fatal error. + */ +int SDL_SYS_JoystickInit(void) +{ + IOReturn result = kIOReturnSuccess; + mach_port_t masterPort = 0; + io_iterator_t hidObjectIterator = 0; + CFMutableDictionaryRef hidMatchDictionary = NULL; + recDevice *device, *lastDevice; + io_object_t ioHIDDeviceObject = 0; + + SDL_numjoysticks = 0; + + if (gpDeviceList) + { + ui_error( UI_ERROR_ERROR, "Joystick: Device list already inited."); + return -1; + } + + result = IOMasterPort (bootstrap_port, &masterPort); + if (kIOReturnSuccess != result) + { + ui_error( UI_ERROR_ERROR, "Joystick: IOMasterPort error with bootstrap_port."); + return -1; + } + + /* Set up a matching dictionary to search I/O Registry by class name for all HID class devices. */ + hidMatchDictionary = IOServiceMatching (kIOHIDDeviceKey); + if (hidMatchDictionary) + { + /* Add key for device type (joystick, in this case) to refine the matching dictionary. */ + + /* NOTE: we now perform this filtering later + UInt32 usagePage = kHIDPage_GenericDesktop; + UInt32 usage = kHIDUsage_GD_Joystick; + CFNumberRef refUsage = NULL, refUsagePage = NULL; + + refUsage = CFNumberCreate (kCFAllocatorDefault, kCFNumberIntType, &usage); + CFDictionarySetValue (hidMatchDictionary, CFSTR (kIOHIDPrimaryUsageKey), refUsage); + refUsagePage = CFNumberCreate (kCFAllocatorDefault, kCFNumberIntType, &usagePage); + CFDictionarySetValue (hidMatchDictionary, CFSTR (kIOHIDPrimaryUsagePageKey), refUsagePage); + */ + } + else + { + ui_error( UI_ERROR_ERROR, "Joystick: Failed to get HID CFMutableDictionaryRef via IOServiceMatching."); + return -1; + } + + /*/ Now search I/O Registry for matching devices. */ + result = IOServiceGetMatchingServices (masterPort, hidMatchDictionary, &hidObjectIterator); + /* Check for errors */ + if (kIOReturnSuccess != result) + { + ui_error( UI_ERROR_ERROR, "Joystick: Couldn't create a HID object iterator."); + return -1; + } + if (!hidObjectIterator) /* there are no joysticks */ + { + gpDeviceList = NULL; + SDL_numjoysticks = 0; + return 0; + } + /* IOServiceGetMatchingServices consumes a reference to the dictionary, so we don't need to release the dictionary ref. */ + + /* build flat linked list of devices from device iterator */ + + gpDeviceList = lastDevice = NULL; + + while ((ioHIDDeviceObject = IOIteratorNext (hidObjectIterator))) + { + /* build a device record */ + device = HIDBuildDevice (ioHIDDeviceObject); + if (!device) + continue; + + /* dump device object, it is no longer needed */ + result = IOObjectRelease (ioHIDDeviceObject); +/* if (KERN_SUCCESS != result) + HIDReportErrorNum ("IOObjectRelease error with ioHIDDeviceObject.", result); +*/ + + /* Filter device list to non-keyboard/mouse stuff */ + if ( (device->usagePage != kHIDPage_GenericDesktop) || + ((device->usage != kHIDUsage_GD_Joystick && + device->usage != kHIDUsage_GD_GamePad)) ) { + + /* release memory for the device */ + HIDDisposeDevice (&device); + DisposePtr((Ptr)device); + continue; + } + + /* Add device to the end of the list */ + if (lastDevice) + lastDevice->pNext = device; + else + gpDeviceList = device; + lastDevice = device; + } + result = IOObjectRelease (hidObjectIterator); /* release the iterator */ + + /* Count the total number of devices we found */ + device = gpDeviceList; + while (device) + { + SDL_numjoysticks++; + device = device->pNext; + } + + return SDL_numjoysticks; +} + +/* Function to get the device-dependent name of a joystick */ +const char *SDL_SYS_JoystickName(int index) +{ + recDevice *device = gpDeviceList; + + for (; index > 0; index--) + device = device->pNext; + + return device->product; +} + +/* Function to open a joystick for use. + * The joystick to open is specified by the index field of the joystick. + * This should fill the nbuttons and naxes fields of the joystick structure. + * It returns 0, or -1 if there is an error. + */ +int SDL_SYS_JoystickOpen(SDL_Joystick *joystick) +{ + recDevice *device = gpDeviceList; + int index; + + for (index = joystick->index; index > 0; index--) + device = device->pNext; + + joystick->hwdata = device; + joystick->name = device->product; + + joystick->naxes = device->axes; + joystick->nhats = device->hats; + joystick->nballs = 0; + joystick->nbuttons = device->buttons; + + return 0; +} + +/* Function to update the state of a joystick - called as a device poll. + * This function shouldn't update the joystick structure directly, + * but instead should call SDL_PrivateJoystick*() to deliver events + * and update joystick device state. + */ +void SDL_SYS_JoystickUpdate(SDL_Joystick *joystick) +{ + recDevice *device = joystick->hwdata; + recElement *element; + SInt32 value; + int i; + + if (device->removed) /* device was unplugged; ignore it. */ + { + if (device->uncentered) + { + device->uncentered = 0; + + /* Tell the app that everything is centered/unpressed... */ + for (i = 0; i < device->axes; i++) + SDL_PrivateJoystickAxis(joystick, i, 0); + + for (i = 0; i < device->buttons; i++) + SDL_PrivateJoystickButton(joystick, i, 0); + + for (i = 0; i < device->hats; i++) + SDL_PrivateJoystickHat(joystick, i, SDL_HAT_CENTERED); + } + + return; + } + + element = device->firstAxis; + i = 0; + while (element) + { + value = HIDScaledCalibratedValue(device, element, -32768, 32767); + if ( value != joystick->axes[i] ) + SDL_PrivateJoystickAxis(joystick, i, value); + element = element->pNext; + ++i; + } + + element = device->firstButton; + i = 0; + while (element) + { + value = HIDGetElementValue(device, element); + if (value > 1) /* handle pressure-sensitive buttons */ + value = 1; + if ( value != joystick->buttons[i] ) + SDL_PrivateJoystickButton(joystick, i, value); + element = element->pNext; + ++i; + } + + element = device->firstHat; + i = 0; + while (element) + { + Uint8 pos = 0; + + value = HIDGetElementValue(device, element); + if (element->max == 3) /* 4 position hatswitch - scale up value */ + value *= 2; + else if (element->max != 7) /* Neither a 4 nor 8 positions - fall back to default position (centered) */ + value = -1; + switch(value) + { + case 0: + pos = SDL_HAT_UP; + break; + case 1: + pos = SDL_HAT_RIGHTUP; + break; + case 2: + pos = SDL_HAT_RIGHT; + break; + case 3: + pos = SDL_HAT_RIGHTDOWN; + break; + case 4: + pos = SDL_HAT_DOWN; + break; + case 5: + pos = SDL_HAT_LEFTDOWN; + break; + case 6: + pos = SDL_HAT_LEFT; + break; + case 7: + pos = SDL_HAT_LEFTUP; + break; + default: + /* Every other value is mapped to center. We do that because some + * joysticks use 8 and some 15 for this value, and apparently + * there are even more variants out there - so we try to be generous. + */ + pos = SDL_HAT_CENTERED; + break; + } + if ( pos != joystick->hats[i] ) + SDL_PrivateJoystickHat(joystick, i, pos); + element = element->pNext; + ++i; + } + + return; +} + +/* Function to... [truncated message content] |
From: <fr...@us...> - 2007-03-10 12:53:35
|
Revision: 311 http://svn.sourceforge.net/fuse-for-macosx/?rev=311&view=rev Author: fredm Date: 2007-03-10 04:53:34 -0800 (Sat, 10 Mar 2007) Log Message: ----------- Merge up to libspectrum-0.3.0-pre2 and fuse-20070310. Modified Paths: -------------- branches/Release-0_8_0/fuse/configure.in branches/Release-0_8_0/fuse/display.c branches/Release-0_8_0/fuse/fuse.cpp branches/Release-0_8_0/fuse/fusepb/English.lproj/InfoPlist.strings branches/Release-0_8_0/fuse/fusepb/Info-Fuse.plist branches/Release-0_8_0/fuse/fusepb/SDLMain.mm branches/Release-0_8_0/fuse/fusepb/resources/Fuse Help/html/divide.html branches/Release-0_8_0/fuse/hacking/ChangeLog branches/Release-0_8_0/fuse/hacking/cvs-tags branches/Release-0_8_0/fuse/if1.c branches/Release-0_8_0/fuse/man/fuse.1 branches/Release-0_8_0/fuse/rzx.c branches/Release-0_8_0/fuse/settings.dat branches/Release-0_8_0/fuse/sound/aosound.c branches/Release-0_8_0/fuse/sound/coreaudiosound.c branches/Release-0_8_0/fuse/sound/sdlsound.c branches/Release-0_8_0/fuse/sound.c branches/Release-0_8_0/fuse/ui/gtk/gtkui.c branches/Release-0_8_0/fuse/ui.c branches/Release-0_8_0/fuse/utils.c branches/Release-0_8_0/fuse/widget/filesel.c branches/Release-0_8_0/libspectrum/Info.plist branches/Release-0_8_0/libspectrum/libspectrum/ChangeLog branches/Release-0_8_0/libspectrum/libspectrum/doc/libspectrum.txt branches/Release-0_8_0/libspectrum/libspectrum/hacking/ChangeLog branches/Release-0_8_0/libspectrum/libspectrum/internals.h branches/Release-0_8_0/libspectrum/libspectrum/libspectrum.h.in branches/Release-0_8_0/libspectrum/libspectrum/rzx.c branches/Release-0_8_0/libspectrum/libspectrum/tzx_read.c branches/Release-0_8_0/libspectrum/libspectrum.h Modified: branches/Release-0_8_0/fuse/configure.in =================================================================== --- branches/Release-0_8_0/fuse/configure.in 2007-03-10 12:02:19 UTC (rev 310) +++ branches/Release-0_8_0/fuse/configure.in 2007-03-10 12:53:34 UTC (rev 311) @@ -1,5 +1,5 @@ dnl Process this file with autoconf to produce a configure script. -dnl $Id: configure.in,v 1.155 2007/02/02 16:21:50 pak21 Exp $ +dnl $Id: configure.in,v 1.155.2.1 2007/03/03 21:26:14 pak21 Exp $ dnl This program is free software; you can redistribute it and/or modify dnl it under the terms of the GNU General Public License as published by @@ -389,9 +389,9 @@ dnl Check if a version of libao which supplies ao_open_live is available AC_MSG_CHECKING(whether libao requested) AC_ARG_WITH(libao, -[ --without-libao don't use libao], +[ --with-libao use libao for sound output], if test "$withval" = no; then libao=no; else libao=yes; fi, -libao=yes) +libao=no) AC_MSG_RESULT($libao) if test "$libao" = yes; then AC_CHECK_LIB( ao, ao_open_live, Modified: branches/Release-0_8_0/fuse/display.c =================================================================== --- branches/Release-0_8_0/fuse/display.c 2007-03-10 12:02:19 UTC (rev 310) +++ branches/Release-0_8_0/fuse/display.c 2007-03-10 12:53:34 UTC (rev 311) @@ -2,7 +2,7 @@ Copyright (c) 1999-2006 Philip Kendall, Thomas Harte, Witold Filipczyk and Fredrick Meunier - $Id: display.c,v 1.59 2007/02/02 16:21:50 pak21 Exp $ + $Id: display.c,v 1.59.2.1 2007/03/06 11:39:47 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 @@ -657,7 +657,9 @@ *y = ( tstates - machine_current->line_times[ 0 ] ) / machine_current->timings.tstates_per_line; - *x = ( tstates - machine_current->line_times[ *y ] ) / 4; + if( *y >= 0 && *y <= DISPLAY_SCREEN_HEIGHT ) + *x = ( tstates - machine_current->line_times[ *y ] ) / 4; + else *x = 0; } void Modified: branches/Release-0_8_0/fuse/fuse.cpp =================================================================== --- branches/Release-0_8_0/fuse/fuse.cpp 2007-03-10 12:02:19 UTC (rev 310) +++ branches/Release-0_8_0/fuse/fuse.cpp 2007-03-10 12:53:34 UTC (rev 311) @@ -1,7 +1,7 @@ /* fuse.c: The Free Unix Spectrum Emulator Copyright (c) 1999-2005 Philip Kendall - $Id: fuse.c,v 1.133 2007/02/02 16:21:51 pak21 Exp $ + $Id: fuse.c,v 1.133.2.1 2007/02/17 17:12:29 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 @@ -115,6 +115,7 @@ const char *zxatasp_master, *zxatasp_slave; const char *zxcf; const char *divide_master, *divide_slave; + const char *mdr[8]; } start_files_t; @@ -477,6 +478,15 @@ start_files->divide_master = settings_current.divide_master_file; start_files->divide_slave = settings_current.divide_slave_file; + start_files->mdr[0] = settings_current.mdr_file; + start_files->mdr[1] = settings_current.mdr_file2; + start_files->mdr[2] = settings_current.mdr_file3; + start_files->mdr[3] = settings_current.mdr_file4; + start_files->mdr[4] = settings_current.mdr_file5; + start_files->mdr[5] = settings_current.mdr_file6; + start_files->mdr[6] = settings_current.mdr_file7; + start_files->mdr[7] = settings_current.mdr_file8; + return 0; } @@ -485,7 +495,7 @@ parse_nonoption_args( int argc, char **argv, int first_arg, start_files_t *start_files ) { - size_t i; + size_t i, j; const char *filename; utils_file file; libspectrum_id_t type; @@ -539,6 +549,15 @@ case LIBSPECTRUM_CLASS_SNAPSHOT: start_files->snapshot = filename; break; + case LIBSPECTRUM_CLASS_MICRODRIVE: + for( j = 0; j < 8; j++ ) { + if( !start_files->mdr[j] ) { + start_files->mdr[j] = filename; + break; + } + } + break; + case LIBSPECTRUM_CLASS_TAPE: start_files->tape = filename; break; @@ -561,7 +580,7 @@ static int do_start_files( start_files_t *start_files ) { - int autoload, error; + int autoload, error, i; /* Can't do both input recording and playback */ if( start_files->playback && start_files->recording ) { @@ -640,6 +659,15 @@ if( error ) return error; } + /* Microdrive cartridges */ + + for( i = 0; i < 8; i++ ) { + if( start_files->mdr[i] ) { + error = utils_open_file( start_files->mdr[i], autoload, NULL ); + if( error ) return error; + } + } + /* IDE hard disk images */ if( start_files->simpleide_master ) { Modified: branches/Release-0_8_0/fuse/fusepb/English.lproj/InfoPlist.strings =================================================================== (Binary files differ) Modified: branches/Release-0_8_0/fuse/fusepb/Info-Fuse.plist =================================================================== --- branches/Release-0_8_0/fuse/fusepb/Info-Fuse.plist 2007-03-10 12:02:19 UTC (rev 310) +++ branches/Release-0_8_0/fuse/fusepb/Info-Fuse.plist 2007-03-10 12:53:34 UTC (rev 311) @@ -361,11 +361,11 @@ <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleShortVersionString</key> - <string>0.8.0-pre1</string> + <string>0.8.0-pre2</string> <key>CFBundleSignature</key> <string>FUSE</string> <key>CFBundleVersion</key> - <string>0.8.0-pre1</string> + <string>0.8.0-pre2</string> <key>NSMainNibFile</key> <string>SDLMain</string> <key>NSPrincipalClass</key> Modified: branches/Release-0_8_0/fuse/fusepb/SDLMain.mm =================================================================== --- branches/Release-0_8_0/fuse/fusepb/SDLMain.mm 2007-03-10 12:02:19 UTC (rev 310) +++ branches/Release-0_8_0/fuse/fusepb/SDLMain.mm 2007-03-10 12:53:34 UTC (rev 311) @@ -24,6 +24,7 @@ #include "dck.h" #include "display.h" #include "fuse.h" +#include "if1.h" #include "if2.h" #include "machines/specplus3.h" #include "rzx.h" @@ -432,6 +433,10 @@ error = if2_insert( fsrep ); break; + case LIBSPECTRUM_CLASS_MICRODRIVE: + if1_mdr_insert( fsrep, -1 ); + break; + default: fprintf( stderr, "%s: loadFile: unknown class %d!\n", fuse_progname, type ); fuse_abort(); Modified: branches/Release-0_8_0/fuse/fusepb/resources/Fuse Help/html/divide.html =================================================================== --- branches/Release-0_8_0/fuse/fusepb/resources/Fuse Help/html/divide.html 2007-03-10 12:02:19 UTC (rev 310) +++ branches/Release-0_8_0/fuse/fusepb/resources/Fuse Help/html/divide.html 2007-03-10 12:53:34 UTC (rev 311) @@ -11,11 +11,11 @@ <p> <font face="Lucida Grande,Helvetica,Arial">The DivIDE is another IDE interface for the Spectrum, of which full details can be found at -http://insert.divide.url/. The interface can be activated via the </font><font +http://baze.au.com/divide/. The interface can be activated via the </font><font face="Lucida Grande,Helvetica,Arial"><span class="emphasis"><em>DivIDE interface</em></span></font><font face="Lucida Grande,Helvetica,Arial"> option on the </font><font face="Lucida Grande,Helvetica,Arial"><span - class="emphasis"><em>Options, + class="emphasis"><em>Preferences, Peripherals...</em></span></font><font face="Lucida Grande,Helvetica,Arial"> dialog, and the state of its write protect jumper controlled via the </font><font Modified: branches/Release-0_8_0/fuse/hacking/ChangeLog =================================================================== --- branches/Release-0_8_0/fuse/hacking/ChangeLog 2007-03-10 12:02:19 UTC (rev 310) +++ branches/Release-0_8_0/fuse/hacking/ChangeLog 2007-03-10 12:53:34 UTC (rev 311) @@ -1524,4 +1524,41 @@ 20070202 BRANCH: Release-0_8_0-branch 20070202 TAG: Release-0_8_0-pre1 (Release-0_8_0-branch) 20070204 sound.c: don't disable sound completely if we don't enable sound - after an unpause (fixes bug #1648246) (Fred). + after an unpause (fixes bug #1648246) (Release-0_8_0-branch) (Fred). +20070204 rzx.c: use new libspectrum_rzx_playback_frame() API to allow + loading of snapshots (necessary for playing back RZX files made with + SPIN's "RZX Pause" feature). +20070207 man/fuse.1: document that metacity needs --no-aspect-hint + (Thanks, Stuart Brady and dave in #spin) (Release-0_8_0-branch). +20070208 rzx.c: ensure tstates is sane after RZX completion + (bug #1654165) (Release-0_8_0-branch). +20070209 rzx.c: ensure tstates is sane after RZX desync + (Release-0_8_0-branch). +20070210 sound/{coreaudiosound.c,sdlsound.c}: make sound fifo two frames in + size rather than a multiple of the sound fragment size, make sound + callbacks run after some sound is available, calculate SDL fragment + size based on machine speed and output frequency + (Release-0_8_0-branch) (Fred). +20070217 widget/filesel.c: allow absolute pathnames to be used (fixes bug + #1651433) (Release-0_8_0-branch) (Gergely Szasz). +20070217 sound/aosound.c: stop possible segfaults (part of bug #1659865) + (Release-0_8_0-branch) (Gergely Szasz). +20070217 man/fuse.1: small ao improvements (rest of bug #1659865) + (Release-0_8_0-branch) (Gergely Szasz). +20070217 fuse.c,if1.c,settings.dat,utils.c: allow microdrive cartridge images + to be used on startup (bug #1660099) (Release-0_8_0-branch) + (Gergely Szasz). +20070303 settings.dat,man/fuse.1,ui/gtk/gtkui.c: new --strict-aspect-hint + option to improve situation with Metacity not being able to resize + or move GTK+ window (bug #1539655) (Release-0_8_0-branch). +20070303 configure.in: don't use libao by default (bug #1668916) + (Release-0_8_0-branch). +20070303 TAG: Release-0_8_0-pre2 (Release-0_8_0-branch) +20070303 man/fuse.1: document --rom-* options (bug #1262547) + (Release-0_8_0-branch). +20070304 ui.c: swap Kempston mouse buttons (bug #1507684) + (Release-0_8_0-branch). +20070306 sound.c: don't leak memory for tape_buf (Release-0_8_0-branch) (Fred). +20070306 display.c: don't overrun line_times array (Release-0_8_0-branch) + (Fred). +20070310 man/fuse.1: add divide url (Release-0_8_0-branch) (Fred). Modified: branches/Release-0_8_0/fuse/hacking/cvs-tags =================================================================== --- branches/Release-0_8_0/fuse/hacking/cvs-tags 2007-03-10 12:02:19 UTC (rev 310) +++ branches/Release-0_8_0/fuse/hacking/cvs-tags 2007-03-10 12:53:34 UTC (rev 311) @@ -1,6 +1,6 @@ CVS tags for Fuse -$Id: cvs-tags,v 1.32 2007/02/02 17:16:19 pak21 Exp $ +$Id: cvs-tags,v 1.32.2.1 2007/03/03 21:49:10 pak21 Exp $ | Release-0_3_1 | Release-0_3_2pre1 @@ -145,6 +145,7 @@ | +-\ | | Release-0_8_0-pre1 +| | Release-0_8_0-pre2 | | | | Release-0_8_0-branch | Modified: branches/Release-0_8_0/fuse/if1.c =================================================================== --- branches/Release-0_8_0/fuse/if1.c 2007-03-10 12:02:19 UTC (rev 310) +++ branches/Release-0_8_0/fuse/if1.c 2007-03-10 12:53:34 UTC (rev 311) @@ -1,7 +1,7 @@ /* if2.c: Interface I handling routines Copyright (c) 2004-2007 Gergely Szasz, Philip Kendall - $Id: if1.c,v 1.14 2007/01/20 17:54:51 pak21 Exp $ + $Id: if1.c,v 1.14.2.1 2007/02/17 17:12:29 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 @@ -788,8 +788,26 @@ void if1_mdr_insert( const char *filename, int drive ) { - microdrive_t *mdr = µdrive[drive]; + microdrive_t *mdr; + int i; + + if( drive == -1 ) { /* find an emtpty one */ + for( i = 0; i < 8; i++ ) { + if( !microdrive[i].inserted ) { + drive = i; + break; + } + } + } + + if( drive == -1 ) { + ui_error( UI_ERROR_ERROR, + "Cannot insert cartridge '%s', all microdrive loaded", filename ); + return; + } + mdr = µdrive[drive]; + if( mdr->inserted && if1_mdr_eject( NULL, drive ) ) { ui_error( UI_ERROR_ERROR, "New cartridge in drive, please eject manually" ); Modified: branches/Release-0_8_0/fuse/man/fuse.1 =================================================================== --- branches/Release-0_8_0/fuse/man/fuse.1 2007-03-10 12:02:19 UTC (rev 310) +++ branches/Release-0_8_0/fuse/man/fuse.1 2007-03-10 12:53:34 UTC (rev 311) @@ -83,15 +83,15 @@ .I \-\-aspect\-hint .RS Specify whether the GTK+ and Xlib user interfaces should `hint' to the -window manager about the preferred aspect ratio for the top-level +window manager about the preferred aspect ratio for the graphics window, thus preventing resizing to non-square sizes which lead to -Fuse not displaying correctly. However, with some window managers (for -example -.IR icewm (1)) -this prevents the window from being resized at all. (Enabled by +Fuse not displaying correctly. This option has been observed to cause +problems with some window managers when using the GTK+ UI which can +prevent the window from being resized or moved at all. (Enabled by default, but you can use .RI ` \-\-no\-aspect\-hint ' -to disable). +to disable). See also the +.RI ` \-\-strict\-aspect\-hint ' option. .RE .PP .I \-\-autosave\-settings @@ -406,6 +406,102 @@ Specify an RZX file to begin recording to. .RE .PP +.I "\-\-rom\-16 file" +.br +.I "\-\-rom\-48 file" +.br +.I "\-\-rom\-128-0 file" +.br +.I "\-\-rom\-128-1 file" +.br +.I "\-\-rom\-plus2-0 file" +.br +.I "\-\-rom\-plus2-1 file" +.br +.I "\-\-rom\-plus2a-0 file" +.br +.I "\-\-rom\-plus2a-1 file" +.br +.I "\-\-rom\-plus2a-2 file" +.br +.I "\-\-rom\-plus2a-3 file" +.br +.I "\-\-rom\-plus3-0 file" +.br +.I "\-\-rom\-plus3-1 file" +.br +.I "\-\-rom\-plus3-2 file" +.br +.I "\-\-rom\-plus3-3 file" +.br +.I "\-\-rom\-plus3e-0 file" +.br +.I "\-\-rom\-plus3e-1 file" +.br +.I "\-\-rom\-plus3e-2 file" +.br +.I "\-\-rom\-plus3e-3 file" +.br +.I "\-\-rom\-tc2048 file" +.br +.I "\-\-rom\-tc2068-0 file" +.br +.I "\-\-rom\-tc2068-1 file" +.br +.I "\-\-rom\-ts2068-0 file" +.br +.I "\-\-rom\-ts2068-1 file" +.br +.I "\-\-rom\-pentagon-0 file" +.br +.I "\-\-rom\-pentagon-1 file" +.br +.I "\-\-rom\-pentagon-2 file" +.br +.I "\-\-rom\-scorpion-0 file" +.br +.I "\-\-rom\-scorpion-1 file" +.br +.I "\-\-rom\-scorpion-2 file" +.br +.I "\-\-rom\-scorpion-3 file" +.br +.I "\-\-rom\-spec-se-0 file" +.br +.I "\-\-rom\-spec-se-1 file" +.br +.I "\-\-rom\-interface-1 file" +.RS +Specify the file to be used for ROM(s) used for each machine. The +options respectively refer to the 16K Spectrum +.RI ( 48.rom ), +48K Spectrum +.RI ( 48.rom ), +the two ROMs for the 128K Spectrum +.RI ( 128-0.rom " and " 128-1.rom ), +the two ROMs for the +2 +.RI ( plus2-0.rom " and " plus2-1.rom ), +the four ROMs for the +2A +.RI ( plus3-0.rom ", " plus3-1.rom ", " plus3-2.rom " and " plus3-3.rom ), +the four ROMs for the +3 +.RI ( plus3-0.rom ", " plus3-1.rom ", " plus3-2.rom " and " plus3-3.rom ), +the TC2048 ROM +.RI ( tc2048.rom ), +the two ROMs for the TC2068 +.RI ( tc2068-0.rom " and " tc2068-1.rom ), +the two ROMs for the TS2068 +.RI ( tc2068-0.rom " and " tc2068-1.rom ), +the two main ROMs and the TR-DOS ROM for the Pentagon 128 +.RI ( 128p-0.rom ", " 128p-1.rom " and " trdos.rom ), +the four ROMs for the Scorpion 256 +.RI ( 256s-0.rom ", " 256s-1.rom ", " 256s-2.rom " and " 256s-3.rom ), +the two ROMs for the Spectrum SE +.RI ( se-0.rom " and " se-1.rom ), +and the Interface I ROM +.RI ( if1-2.rom ). +The names in brackets denote the defaults. +.RE +.PP .I \-\-separation .RS Give stereo separation of the 128's AY sound channels. Same as the @@ -556,12 +652,16 @@ .RI buffer_time= num .br .RI ` num ' -gives the ALSA buffer time. +gives the ALSA buffer time in microseconds. .IP \[bu] .RI period_time= num .br .RI ` num ' -gives the ALSA period time. +gives the ALSA period time in microseconds. +.IP \[bu] +.RI use_mmap= yes|y|true|t|1 +.br +specifies that libao use memory mapped transfer. .RE .IP \[bu] .IR arts : @@ -691,6 +791,19 @@ option. .RE .PP +.I "\-\-strict\-aspect\-hint" +.RS +For the GTK+ UI, use stricter limits for the aspect ratio limits set +by the +.RI ` \-\-aspect\-hint ' +option. This can cause some window managers (for example, +.IR metacity (1)) +to not allow the window to be resized and moved, but is necessary to +prevent others (for example, +.IR fvwm (1)) +from being able resize the window away from square. +.RE +.PP .I "\-v mode" .br .I "\-\-svgamode mode" @@ -2358,7 +2471,7 @@ .SH "DIVIDE" The DivIDE is another IDE interface for the Spectrum, of which full details can be found at -.IR "http://insert.divide.url/" . +.IR "http://baze.au.com/divide/" . The interface can be activated via the .I "DivIDE interface" option from the Modified: branches/Release-0_8_0/fuse/rzx.c =================================================================== --- branches/Release-0_8_0/fuse/rzx.c 2007-03-10 12:02:19 UTC (rev 310) +++ branches/Release-0_8_0/fuse/rzx.c 2007-03-10 12:53:34 UTC (rev 311) @@ -1,7 +1,7 @@ /* rzx.c: .rzx files Copyright (c) 2002-2003 Philip Kendall - $Id: rzx.c,v 1.70 2007/02/02 16:21:51 pak21 Exp $ + $Id: rzx.c,v 1.70.2.3 2007/02/09 08:21:33 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 @@ -307,9 +307,22 @@ out of frames, as this occurs just before a normal end of frame and everything works normally as rzx_playback is now zero again */ if( add_interrupt ) { + error = event_add( machine_current->timings.tstates_per_frame, EVENT_TYPE_FRAME ); if( error ) return error; + + /* We're no longer doing RZX playback, so tstates now be <= the + normal frame count */ + if( tstates > machine_current->timings.tstates_per_frame ) + tstates = machine_current->timings.tstates_per_frame; + + } else { + + /* Ensure that tstates will be zero after it is reduced in + spectrum_frame() */ + tstates = machine_current->timings.tstates_per_frame; + } libspec_error = libspectrum_rzx_free( rzx ); @@ -360,8 +373,9 @@ static int playback_frame( void ) { int error, finished; + libspectrum_snap *snap; - error = libspectrum_rzx_playback_frame( rzx, &finished ); + error = libspectrum_rzx_playback_frame( rzx, &finished, &snap ); if( error ) return rzx_stop_playback( 0 ); if( finished ) { @@ -369,6 +383,11 @@ return rzx_stop_playback( 0 ); } + if( snap ) { + error = snapshot_copy_from( snap ); + if( error ) return rzx_stop_playback( 0 ); + } + /* If we've got another frame to do, fetch the new instruction count and continue */ rzx_instruction_count = libspectrum_rzx_instructions( rzx ); Modified: branches/Release-0_8_0/fuse/settings.dat =================================================================== --- branches/Release-0_8_0/fuse/settings.dat 2007-03-10 12:02:19 UTC (rev 310) +++ branches/Release-0_8_0/fuse/settings.dat 2007-03-10 12:53:34 UTC (rev 311) @@ -2,7 +2,7 @@ # Copyright (c) 2002-2004 Philip Kendall # Copyright (c) 2003-2005 Fredrick Meunier -# $Id: settings.dat,v 1.56 2007/02/02 16:21:52 pak21 Exp $ +# $Id: settings.dat,v 1.56.2.2 2007/03/03 21:02:01 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 @@ -117,6 +117,14 @@ dck_file, string, NULL,, dock if2_file, string, NULL,, if2cart +mdr_file, string, NULL,, microdrive-file +mdr_file2, string, NULL,, microdrive-2-file +mdr_file3, string, NULL,, microdrive-3-file +mdr_file4, string, NULL,, microdrive-4-file +mdr_file5, string, NULL,, microdrive-5-file +mdr_file6, string, NULL,, microdrive-6-file +mdr_file7, string, NULL,, microdrive-7-file +mdr_file8, string, NULL,, microdrive-8-file simpleide_active, boolean, 0,, simpleide simpleide_master_file, string, NULL,, simpleide-masterfile simpleide_slave_file, string, NULL,, simpleide-slavefile @@ -137,6 +145,7 @@ printer_text_filename, string, "printout.txt",, textfile aspect_hint, boolean, 1 +strict_aspect_hint, boolean, 0 svga_mode, numeric, 320, 'v', svgamode doublescan_mode, numeric, 1, 'D', doublescan-mode Modified: branches/Release-0_8_0/fuse/sound/aosound.c =================================================================== --- branches/Release-0_8_0/fuse/sound/aosound.c 2007-03-10 12:02:19 UTC (rev 310) +++ branches/Release-0_8_0/fuse/sound/aosound.c 2007-03-10 12:53:34 UTC (rev 311) @@ -1,7 +1,7 @@ /* aosound.c: libao sound I/O Copyright (c) 2004 Gergely Szasz, Philip Kendall - $Id: aosound.c,v 1.3 2007/02/02 16:21:55 pak21 Exp $ + $Id: aosound.c,v 1.3.2.1 2007/02/17 17:05:43 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 @@ -43,6 +43,7 @@ static int sixteenbit = 1; static char *filename = NULL; static const char *default_filename = "fuse-sound.ao"; +static int first_init = 1; static void driver_error( void ) @@ -87,6 +88,9 @@ char *mutable, *option, *key, *value; /* Get a copy of the device string we can modify */ + if( !device || *device == '\0' ) + return 0; + mutable = strdup( device ); if( !mutable ) { ui_error( UI_ERROR_ERROR, "out of memory at %s:%d", __FILE__, __LINE__ ); @@ -97,7 +101,8 @@ option = strchr( mutable, ':' ); if( option ) *option++ = '\0'; - *driver_id = ao_driver_id( mutable ); + if( *mutable ) /* ! \0 */ + *driver_id = ao_driver_id( mutable ); /* Now parse any further options */ while( option ) { @@ -118,8 +123,11 @@ free( mutable ); return 1; } - } else { + } else if( key && value) { ao_append_option( options, key, value ); + } else if ( first_init ) { + ui_error( UI_ERROR_ERROR, "ignoring badly formed libao option (%s%s)", + key ? key : "", value ? value : "" ); } } @@ -148,21 +156,16 @@ ao_initialize(); - if( !device || *device == '\0' ) { + error = parse_driver_options( device, &driver_id, &options ); + if( error ) { + settings_current.sound = 0; + sound_lowlevel_init_in_progress = 0; + return error; + } + if( driver_id == -1 ) driver_id = ao_default_driver_id(); - } else { - - error = parse_driver_options( device, &driver_id, &options ); - if( error ) { - settings_current.sound = 0; - sound_lowlevel_init_in_progress = 0; - return error; - } - - } - if( driver_id == -1 ) { ui_error( UI_ERROR_ERROR, "ao: driver '%s' unknown", device ); @@ -191,7 +194,7 @@ } else { - if( !filename ) filename = default_filename; + if( !filename ) filename = (char *)default_filename; dev_for_ao = ao_open_file( driver_id, filename, 1, &format, options); } @@ -206,6 +209,7 @@ ao_free_options( options ); sound_lowlevel_init_in_progress = 0; + first_init = 0; return 0; } @@ -221,8 +225,8 @@ void sound_lowlevel_frame( libspectrum_signed_word *data, int len ) { - static unsigned char buf8[4096]; - signed char *data8 = ( signed char* )data; + static signed char buf8[4096]; + void *data8 = data; len <<= 1; /* now in bytes */ Modified: branches/Release-0_8_0/fuse/sound/coreaudiosound.c =================================================================== --- branches/Release-0_8_0/fuse/sound/coreaudiosound.c 2007-03-10 12:02:19 UTC (rev 310) +++ branches/Release-0_8_0/fuse/sound/coreaudiosound.c 2007-03-10 12:53:34 UTC (rev 311) @@ -28,12 +28,16 @@ #include <CoreAudio/AudioHardware.h> #include <AudioUnit/AudioUnit.h> +#include "settings.h" #include "sfifo.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, @@ -49,6 +53,9 @@ */ static AudioUnit gOutputUnit; +/* Records sound writer status information */ +static int audio_output_started; + int sound_lowlevel_init( const char *dev, int *freqptr, int *stereoptr ) { @@ -58,6 +65,8 @@ UInt32 deviceBufferSize; /* bufferSize returned by kAudioDevicePropertyBufferSize */ int error; + float hz; + int sound_framesiz; /* get the default output device for the HAL */ count = sizeof( device ); @@ -158,21 +167,21 @@ return 1; } - if( ( error = sfifo_init( &sound_fifo, 2 * deviceFormat.mChannelsPerFrame - * deviceBufferSize + 1 ) ) ) { + hz = (float)machine_current->timings.processor_speed / + machine_current->timings.tstates_per_frame; + sound_framesiz = deviceFormat.mSampleRate / 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; } - /* 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; - } + /* wait to run sound until we have some sound to play */ + audio_output_started = 0; return 0; } @@ -182,7 +191,8 @@ { OSStatus err; - verify_noerr( AudioOutputUnitStop( gOutputUnit ) ); + if( audio_output_started ) + verify_noerr( AudioOutputUnitStop( gOutputUnit ) ); err = AudioUnitUninitialize( gOutputUnit ); if( err ) { @@ -218,6 +228,19 @@ ui_error( UI_ERROR_ERROR, "Couldn't write sound fifo: %s", strerror( i ) ); } + + if( !audio_output_started ) { + /* Start the rendering + The DefaultOutputUnit will do any format conversions to the format of the + default device */ + OSStatus err = AudioOutputUnitStart( gOutputUnit ); + if( err ) { + ui_error( UI_ERROR_ERROR, "AudioOutputUnitStart=%ld", err ); + return; + } + + audio_output_started = 1; + } } /* This is the audio processing callback. */ Modified: branches/Release-0_8_0/fuse/sound/sdlsound.c =================================================================== --- branches/Release-0_8_0/fuse/sound/sdlsound.c 2007-03-10 12:02:19 UTC (rev 310) +++ branches/Release-0_8_0/fuse/sound/sdlsound.c 2007-03-10 12:53:34 UTC (rev 311) @@ -2,7 +2,7 @@ Copyright (c) 2002-2004 Alexander Yurchenko, Russell Marks, Philip Kendall, Fredrick Meunier - $Id: sdlsound.c,v 1.18 2006/12/22 10:55:46 fredm Exp $ + $Id: sdlsound.c,v 1.18.2.1 2007/02/10 00:59:36 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 @@ -28,6 +28,7 @@ #include <errno.h> #include <fcntl.h> +#include <math.h> #include <string.h> #include <stdlib.h> #include <unistd.h> @@ -41,19 +42,23 @@ #include "sound.h" #include "ui/ui.h" -/* using (7) 32 byte frags for 8kHz, scale up for higher */ -#define BASE_SOUND_FRAG_PWR 7 - static void sdlwrite( void *userdata, Uint8 *stream, int len ); sfifo_t sound_fifo; +/* Number of Spectrum frames audio latency to use */ +#define NUM_FRAMES 2 + +/* Records sound writer status information */ +static int audio_output_started; + int sound_lowlevel_init( const char *device, int *freqptr, int *stereoptr ) { SDL_AudioSpec requested, received; - int frag; int error; + float hz; + int sound_framesiz; /* I'd rather just use setenv, but Windows doesn't have it */ if( device ) { @@ -80,16 +85,11 @@ requested.format = AUDIO_S16SYS; requested.callback = sdlwrite; - frag = BASE_SOUND_FRAG_PWR; - if (*freqptr > 8250) - frag++; - if (*freqptr > 16500) - frag++; - if (*freqptr > 33000) - frag++; + hz = (float)machine_current->timings.processor_speed / + machine_current->timings.tstates_per_frame; + sound_framesiz = *freqptr / hz; + requested.samples = pow(2.0, floor(log2(sound_framesiz))); - requested.samples = 1 << frag; - if ( SDL_OpenAudio( &requested, &received ) < 0 ) { settings_current.sound = 0; ui_error( UI_ERROR_ERROR, "Couldn't open sound device: %s", @@ -106,39 +106,36 @@ requested.freq = *freqptr; - frag = BASE_SOUND_FRAG_PWR; - if (*freqptr > 8250) - frag++; - if (*freqptr > 16500) - frag++; - if (*freqptr > 33000) - frag++; + hz = (float)machine_current->timings.processor_speed / + machine_current->timings.tstates_per_frame; + sound_framesiz = *freqptr / hz; + requested.samples = pow(2.0, floor(log2(sound_framesiz))); - requested.samples = 1 << frag; - if( SDL_OpenAudio( &requested, NULL ) < 0 ) { settings_current.sound = 0; ui_error( UI_ERROR_ERROR, "Couldn't open sound device: %s", SDL_GetError() ); return 1; } - - /* Convert from 16-bit stereo samples to bytes plus some headroom */ - frag = 1 << (frag+3); - } else { - *freqptr = received.freq; *stereoptr = received.channels == 1 ? 0 : 1; - frag = received.size; } - if( ( error = sfifo_init( &sound_fifo, 2 * frag + 1 ) ) ) { + hz = (float)machine_current->timings.processor_speed / + machine_current->timings.tstates_per_frame; + sound_framesiz = *freqptr / hz; + sound_framesiz <<= 1; + + if( ( error = sfifo_init( &sound_fifo, NUM_FRAMES + * received.channels + * sound_framesiz + 1 ) ) ) { ui_error( UI_ERROR_ERROR, "Problem initialising sound fifo: %s", strerror ( error ) ); return 1; } - SDL_PauseAudio( 0 ); + /* wait to run sound until we have some sound to play */ + audio_output_started = 0; return 0; } @@ -182,6 +179,11 @@ ui_error( UI_ERROR_ERROR, "Couldn't write sound fifo: %s\n", strerror( i ) ); } + + if( !audio_output_started ) { + SDL_PauseAudio( 0 ); + audio_output_started = 1; + } } /* Write len samples from fifo into stream */ Modified: branches/Release-0_8_0/fuse/sound.c =================================================================== --- branches/Release-0_8_0/fuse/sound.c 2007-03-10 12:02:19 UTC (rev 310) +++ branches/Release-0_8_0/fuse/sound.c 2007-03-10 12:53:34 UTC (rev 311) @@ -1,7 +1,7 @@ /* sound.c: Sound support Copyright (c) 2000-2005 Russell Marks, Matan Ziv-Av, Philip Kendall - $Id: sound.c,v 1.49.2.1 2007/02/04 06:35:04 fredm Exp $ + $Id: sound.c,v 1.49.2.2 2007/03/06 11:36:23 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 @@ -278,7 +278,12 @@ if(sound_enabled) { if(sound_buf) + { free(sound_buf); + sound_buf=NULL; + free(tape_buf); + tape_buf=NULL; + } sound_lowlevel_end(); sound_enabled=0; } Modified: branches/Release-0_8_0/fuse/ui/gtk/gtkui.c =================================================================== --- branches/Release-0_8_0/fuse/ui/gtk/gtkui.c 2007-03-10 12:02:19 UTC (rev 310) +++ branches/Release-0_8_0/fuse/ui/gtk/gtkui.c 2007-03-10 12:53:34 UTC (rev 311) @@ -1,7 +1,7 @@ /* gtkui.c: GTK+ routines for dealing with the user interface Copyright (c) 2000-2005 Philip Kendall, Russell Marks - $Id: gtkui.c,v 1.162 2007/02/02 16:21:59 pak21 Exp $ + $Id: gtkui.c,v 1.162.2.1 2007/03/03 21:02:01 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 @@ -187,11 +187,17 @@ if( settings_current.aspect_hint ) { hints |= GDK_HINT_ASPECT; - geometry.min_aspect = geometry.max_aspect = - ((float)DISPLAY_ASPECT_WIDTH)/DISPLAY_SCREEN_HEIGHT; + if( settings_current.strict_aspect_hint ) { + geometry.min_aspect = geometry.max_aspect = + (float)DISPLAY_ASPECT_WIDTH / DISPLAY_SCREEN_HEIGHT; + } else { + geometry.min_aspect = 1.2; + geometry.max_aspect = 1.5; + } } - gtk_window_set_geometry_hints( GTK_WINDOW(gtkui_window), gtkui_drawing_area, + gtk_window_set_geometry_hints( GTK_WINDOW(gtkui_window), + GTK_WIDGET(gtkui_drawing_area), &geometry, hints ); if( gtkdisplay_init() ) return 1; Modified: branches/Release-0_8_0/fuse/ui.c =================================================================== --- branches/Release-0_8_0/fuse/ui.c 2007-03-10 12:02:19 UTC (rev 310) +++ branches/Release-0_8_0/fuse/ui.c 2007-03-10 12:53:34 UTC (rev 311) @@ -1,7 +1,7 @@ /* ui.c: User interface routines, but those which are independent of any UI Copyright (c) 2002 Philip Kendall - $Id: ui.c,v 1.26 2007/02/02 16:21:52 pak21 Exp $ + $Id: ui.c,v 1.26.2.1 2007/03/04 12:27:24 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 @@ -144,8 +144,8 @@ /* Possibly we'll end up handling _more_ than one mouse interface... */ switch( button ) { - case 1: if( ui_mouse_grabbed ) kempmouse_update( 0, 0, 0, down ); break; - case 3: if( ui_mouse_grabbed ) kempmouse_update( 0, 0, 1, down ); break; + case 1: if( ui_mouse_grabbed ) kempmouse_update( 0, 0, 1, down ); break; + case 3: if( ui_mouse_grabbed ) kempmouse_update( 0, 0, 0, down ); break; case 2: if( ui_mouse_present && settings_current.kempston_mouse && !down && !mouse_grab_suspended ) Modified: branches/Release-0_8_0/fuse/utils.c =================================================================== --- branches/Release-0_8_0/fuse/utils.c 2007-03-10 12:02:19 UTC (rev 310) +++ branches/Release-0_8_0/fuse/utils.c 2007-03-10 12:53:34 UTC (rev 311) @@ -1,7 +1,7 @@ /* utils.c: some useful helper functions Copyright (c) 1999-2005 Philip Kendall, Fredrick Meunier - $Id: utils.c,v 1.59 2007/02/02 16:21:52 pak21 Exp $ + $Id: utils.c,v 1.59.2.1 2007/02/17 17:12:29 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 @@ -150,7 +150,7 @@ break; case LIBSPECTRUM_CLASS_MICRODRIVE: - if1_mdr_insert( filename, 0 ); + if1_mdr_insert( filename, -1 ); break; case LIBSPECTRUM_CLASS_CARTRIDGE_TIMEX: Modified: branches/Release-0_8_0/fuse/widget/filesel.c =================================================================== --- branches/Release-0_8_0/fuse/widget/filesel.c 2007-03-10 12:02:19 UTC (rev 310) +++ branches/Release-0_8_0/fuse/widget/filesel.c 2007-03-10 12:53:34 UTC (rev 311) @@ -2,7 +2,7 @@ Copyright (c) 2001-2005 Matan Ziv-Av, Philip Kendall, Russell Marks, Marek Januszewski - $Id: filesel.c,v 1.34 2007/02/02 16:22:00 pak21 Exp $ + $Id: filesel.c,v 1.34.2.1 2007/02/17 16:40:36 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 @@ -520,26 +520,33 @@ break; case INPUT_KEY_Tab: - if( is_saving ) - { + if( is_saving ) { widget_text_t text_data; text_data.title = title; text_data.allow = WIDGET_INPUT_ASCII; text_data.text[0] = 0; - if( widget_do( WIDGET_TYPE_TEXT, &text_data ) - || !widget_text_text || !*widget_text_text ) + if( widget_do( WIDGET_TYPE_TEXT, &text_data ) || + !widget_text_text || !*widget_text_text ) break; - /* Get current dir name and allocate space for the leafname */ - fn = widget_getcwd(); - if( fn ) - fn = realloc( fn, strlen( fn ) + strlen( widget_text_text ) + 2 ); - if( !fn ) { - widget_end_widget( WIDGET_FINISHED_CANCEL ); - return; + if( *widget_text_text != '/' ) { /* relative name */ + /* Get current dir name and allocate space for the leafname */ + fn = widget_getcwd(); + if( fn ) + fn = realloc( fn, strlen( fn ) + strlen( widget_text_text ) + 2 ); + if( !fn ) { + widget_end_widget( WIDGET_FINISHED_CANCEL ); + return; + } + /* Append the leafname and return it */ + strcat( fn, "/" ); + strcat( fn, widget_text_text ); + } else { /* absolute name */ + fn = strdup( widget_text_text ); + if( !fn ) { + widget_end_widget( WIDGET_FINISHED_CANCEL ); + return; + } } - /* Append the leafname and return it */ - strcat( fn, "/" ); - strcat( fn, widget_text_text ); widget_filesel_name = fn; if( exit_all_widgets ) { widget_end_all( WIDGET_FINISHED_OK ); Modified: branches/Release-0_8_0/libspectrum/Info.plist =================================================================== --- branches/Release-0_8_0/libspectrum/Info.plist 2007-03-10 12:02:19 UTC (rev 310) +++ branches/Release-0_8_0/libspectrum/Info.plist 2007-03-10 12:53:34 UTC (rev 311) @@ -23,6 +23,6 @@ <key>CFBundleSignature</key> <string>????</string> <key>CFBundleVersion</key> - <string>0.2.2</string> + <string>0.3.0-pre2</string> </dict> </plist> Modified: branches/Release-0_8_0/libspectrum/libspectrum/ChangeLog =================================================================== --- branches/Release-0_8_0/libspectrum/libspectrum/ChangeLog 2007-03-10 12:02:19 UTC (rev 310) +++ branches/Release-0_8_0/libspectrum/libspectrum/ChangeLog 2007-03-10 12:53:34 UTC (rev 311) @@ -12,12 +12,12 @@ * TZX Generalized Data Block support. (Philip Kendall). - * Support for Z80Em and CSW tape files (Darren Salt, Fredrick Meunier). + * Support for Z80Em and CSW tape files (Darren Salt). * Support for the TS2068 (Fredrick Meunier). - * Support for connected joystick information in snapshots (Philip - Kendall). + * Support for connected joystick information in snapshots (Fredrick + Meunier). * Add interrupt length to timing information (Philip Kendall). @@ -188,4 +188,4 @@ * libspectrum separated from Fuse just before the 0.5.0 release of Fuse; see Fuse's ChangeLog for changes up to this point -$Id: ChangeLog,v 1.12 2007/02/02 16:35:42 pak21 Exp $ +$Id: ChangeLog,v 1.12.2.1 2007/02/04 08:54:43 fredm Exp $ Modified: branches/Release-0_8_0/libspectrum/libspectrum/doc/libspectrum.txt =================================================================== --- branches/Release-0_8_0/libspectrum/libspectrum/doc/libspectrum.txt 2007-03-10 12:02:19 UTC (rev 310) +++ branches/Release-0_8_0/libspectrum/libspectrum/doc/libspectrum.txt 2007-03-10 12:53:34 UTC (rev 311) @@ -1184,11 +1184,14 @@ Prepare to start playback of the input recording `rzx'. libspectrum_error libspectrum_rzx_playback_frame( libspectrum_rzx *rzx, - int *finished ) + int *finished, + libspectrum_snap **snap ) Move onto the next frame of playback from the input recording `rzx'. If the last frame has now been played, `*finished' will be -non-zero, otherwise it will be zero. +non-zero, otherwise it will be zero. If a snap is present in the input +recording before the next frame, this will be returned in `*snap', +otherwise `*snap' will be NULL. If the correct number of bytes were not read from `rzx' during the frame via `libspectrum_rzx_playback', an error will be given. @@ -1628,4 +1631,4 @@ Write `data' to register `reg' of the IDE channgel `chn'. -$Id: libspectrum.txt,v 1.30 2007/01/20 17:53:54 pak21 Exp $ +$Id: libspectrum.txt,v 1.30.2.1 2007/02/04 18:32:36 pak21 Exp $ Modified: branches/Release-0_8_0/libspectrum/libspectrum/hacking/ChangeLog =================================================================== --- branches/Release-0_8_0/libspectrum/libspectrum/hacking/ChangeLog 2007-03-10 12:02:19 UTC (rev 310) +++ branches/Release-0_8_0/libspectrum/libspectrum/hacking/ChangeLog 2007-03-10 12:53:34 UTC (rev 311) @@ -393,3 +393,11 @@ 20070202 TAG: libspectrum_0_3_0-trunk 20070202 BRANCH: libspectrum_0_3_0-branch 20070202 TAG: libspectrum_0_3_0-pre1 (libspectrum_0_3_0-branch) +20070204 ChangeLog: fix some attributions (Fred). +20070204 libspectrum.h.in,rzx.c,doc/libspectrum.txt: make + libspectrum_rzx_playback_frame able to return a snap (necessary + for supporting RZXs made with SPIN's "RZX Pause" feature) + (libspectrum_0_3_0-branch). +20070217 tzx_read.c: do allocate memory if we have no data but some padding + in tzx_read_data() (libspectrum_0_3_0-branch). +20070303 TAG: libspectrum_0_3_0-pre2 (libspectrum_0_3_0-branch) Modified: branches/Release-0_8_0/libspectrum/libspectrum/internals.h =================================================================== --- branches/Release-0_8_0/libspectrum/libspectrum/internals.h 2007-03-10 12:02:19 UTC (rev 310) +++ branches/Release-0_8_0/libspectrum/libspectrum/internals.h 2007-03-10 12:53:34 UTC (rev 311) @@ -162,6 +162,16 @@ libspectrum_tape_generalised_data_symbol_table *table, const libspectrum_byte **ptr, size_t length ); +/* Format specific tape routines */ + +libspectrum_error +libspectrum_z80em_read( libspectrum_tape *tape, + const libspectrum_byte *buffer, size_t length ); + +libspectrum_error +libspectrum_csw_read( libspectrum_tape *tape, + const libspectrum_byte *buffer, size_t length ); + /* Crypto functions */ libspectrum_error Modified: branches/Release-0_8_0/libspectrum/libspectrum/libspectrum.h.in =================================================================== --- branches/Release-0_8_0/libspectrum/libspectrum/libspectrum.h.in 2007-03-10 12:02:19 UTC (rev 310) +++ branches/Release-0_8_0/libspectrum/libspectrum/libspectrum.h.in 2007-03-10 12:53:34 UTC (rev 311) @@ -1,7 +1,7 @@ /* libspectrum.h: the library for dealing with ZX Spectrum emulator files Copyright (c) 2001-2007 Philip Kendall, Darren Salt, Fredrick Meunier - $Id: libspectrum.h.in,v 1.141 2007/02/02 16:35:42 pak21 Exp $ + $Id: libspectrum.h.in,v 1.141.2.1 2007/02/04 18:32:36 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 @@ -672,7 +672,7 @@ libspectrum_rzx_start_playback( libspectrum_rzx *rzx, int which, libspectrum_snap **snap ); libspectrum_error WIN32_DLL -libspectrum_rzx_playback_frame( libspectrum_rzx *rzx, int *finished ); +libspectrum_rzx_playback_frame( libspectrum_rzx *rzx, int *finished, libspectrum_snap **snap ); libspectrum_error WIN32_DLL libspectrum_rzx_playback( libspectrum_rzx *rzx, libspectrum_byte *byte ); Modified: branches/Release-0_8_0/libspectrum/libspectrum/rzx.c =================================================================== --- branches/Release-0_8_0/libspectrum/libspectrum/rzx.c 2007-03-10 12:02:19 UTC (rev 310) +++ branches/Release-0_8_0/libspectrum/libspectrum/rzx.c 2007-03-10 12:53:34 UTC (rev 311) @@ -1,7 +1,7 @@ /* rzx.c: routines for dealing with .rzx files Copyright (c) 2002-2005 Philip Kendall - $Id: rzx.c,v 1.69 2007/02/02 16:35:43 pak21 Exp $ + $Id: rzx.c,v 1.69.2.1 2007/02/04 18:32:36 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 @@ -530,8 +530,10 @@ } libspectrum_error -libspectrum_rzx_playback_frame( libspectrum_rzx *rzx, int *finished ) +libspectrum_rzx_playback_frame( libspectrum_rzx *rzx, int *finished, + libspectrum_snap **snap ) { + *snap = NULL; *finished = 0; /* Check we read the correct number of INs during this frame */ @@ -548,11 +550,22 @@ /* Increment the frame count and see if we've finished with this file */ if( ++rzx->current_frame >= rzx->current_input->count ) { - rzx->current_block = - g_slist_find_custom( rzx->current_block->next, - GINT_TO_POINTER( LIBSPECTRUM_RZX_INPUT_BLOCK ), - find_block ); - + GSList *it = rzx->current_block->next; + rzx->current_block = NULL; + + for( ; it; it = it->next ) { + + rzx_block_t *block = it->data; + + if( block->type == LIBSPECTRUM_RZX_INPUT_BLOCK ) { + rzx->current_block = it; + break; + } else if( block->type == LIBSPECTRUM_RZX_SNAPSHOT_BLOCK ) { + *snap = block->types.snap; + } + + } + if( rzx->current_block ) { rzx_block_t *block = rzx->current_block->data; Modified: branches/Release-0_8_0/libspectrum/libspectrum/tzx_read.c =================================================================== --- branches/Release-0_8_0/libspectrum/libspectrum/tzx_read.c 2007-03-10 12:02:19 UTC (rev 310) +++ branches/Release-0_8_0/libspectrum/libspectrum/tzx_read.c 2007-03-10 12:53:34 UTC (rev 311) @@ -1,7 +1,7 @@ /* tzx_read.c: Routines for reading .tzx files Copyright (c) 2001-2007 Philip Kendall, Darren Salt - $Id: tzx_read.c,v 1.65 2007/02/02 16:35:43 pak21 Exp $ + $Id: tzx_read.c,v 1.65.2.1 2007/02/17 19:11:05 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 @@ -1258,7 +1258,7 @@ /* Allocate memory for the data; the check for *length is to avoid the implementation-defined of malloc( 0 ) */ - if( *length ) { + if( *length || padding ) { *data = malloc( ( *length + padding ) * sizeof( libspectrum_byte ) ); if( !*data ) { Modified: branches/Release-0_8_0/libspectrum/libspectrum.h =================================================================== --- branches/Release-0_8_0/libspectrum/libspectrum.h 2007-03-10 12:02:19 UTC (rev 310) +++ branches/Release-0_8_0/libspectrum/libspectrum.h 2007-03-10 12:53:34 UTC (rev 311) @@ -1,7 +1,7 @@ /* libspectrum.h: the library for dealing with ZX Spectrum emulator files Copyright (c) 2001-2007 Philip Kendall, Darren Salt, Fredrick Meunier - $Id: libspectrum.h.in,v 1.141 2007/02/02 16:35:42 pak21 Exp $ + $Id: libspectrum.h.in,v 1.141.2.1 2007/02/04 18:32:36 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 @@ -968,7 +968,7 @@ libspectrum_rzx_start_playback( libspectrum_rzx *rzx, int which, libspectrum_snap **snap ); libspectrum_error WIN32_DLL -libspectrum_rzx_playback_frame( libspectrum_rzx *rzx, int *finished ); +libspectrum_rzx_playback_frame( libspectrum_rzx *rzx, int *finished, libspectrum_snap **snap ); libspectrum_error WIN32_DLL libspectrum_rzx_playback( libspectrum_rzx *rzx, libspectrum_byte *byte ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2007-03-10 12:02:30
|
Revision: 310 http://svn.sourceforge.net/fuse-for-macosx/?rev=310&view=rev Author: fredm Date: 2007-03-10 04:02:19 -0800 (Sat, 10 Mar 2007) Log Message: ----------- Tag vendor/fuse/current as vendor/fuse/fuse-20070310. Added Paths: ----------- vendor/fuse/fuse-20070310/ Copied: vendor/fuse/fuse-20070310 (from rev 309, vendor/fuse/current) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2007-03-10 12:02:08
|
Revision: 309 http://svn.sourceforge.net/fuse-for-macosx/?rev=309&view=rev Author: fredm Date: 2007-03-10 04:02:05 -0800 (Sat, 10 Mar 2007) Log Message: ----------- Load . into vendor/fuse/current. Modified Paths: -------------- vendor/fuse/current/configure.in vendor/fuse/current/display.c vendor/fuse/current/fuse.c vendor/fuse/current/hacking/ChangeLog vendor/fuse/current/hacking/cvs-tags vendor/fuse/current/if1.c vendor/fuse/current/man/fuse.1 vendor/fuse/current/rzx.c vendor/fuse/current/settings.dat vendor/fuse/current/sound/aosound.c vendor/fuse/current/sound/coreaudiosound.c vendor/fuse/current/sound/sdlsound.c vendor/fuse/current/sound.c vendor/fuse/current/ui/gtk/gtkui.c vendor/fuse/current/ui.c vendor/fuse/current/utils.c vendor/fuse/current/widget/filesel.c Modified: vendor/fuse/current/configure.in =================================================================== --- vendor/fuse/current/configure.in 2007-03-10 11:54:28 UTC (rev 308) +++ vendor/fuse/current/configure.in 2007-03-10 12:02:05 UTC (rev 309) @@ -1,5 +1,5 @@ dnl Process this file with autoconf to produce a configure script. -dnl $Id: configure.in,v 1.155 2007/02/02 16:21:50 pak21 Exp $ +dnl $Id: configure.in,v 1.155.2.1 2007/03/03 21:26:14 pak21 Exp $ dnl This program is free software; you can redistribute it and/or modify dnl it under the terms of the GNU General Public License as published by @@ -388,9 +388,9 @@ dnl Check if a version of libao which supplies ao_open_live is available AC_MSG_CHECKING(whether libao requested) AC_ARG_WITH(libao, -[ --without-libao don't use libao], +[ --with-libao use libao for sound output], if test "$withval" = no; then libao=no; else libao=yes; fi, -libao=yes) +libao=no) AC_MSG_RESULT($libao) if test "$libao" = yes; then AC_CHECK_LIB( ao, ao_open_live, Modified: vendor/fuse/current/display.c =================================================================== --- vendor/fuse/current/display.c 2007-03-10 11:54:28 UTC (rev 308) +++ vendor/fuse/current/display.c 2007-03-10 12:02:05 UTC (rev 309) @@ -2,7 +2,7 @@ Copyright (c) 1999-2006 Philip Kendall, Thomas Harte, Witold Filipczyk and Fredrick Meunier - $Id: display.c,v 1.59 2007/02/02 16:21:50 pak21 Exp $ + $Id: display.c,v 1.59.2.1 2007/03/06 11:39:47 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 @@ -651,7 +651,9 @@ *y = ( tstates - machine_current->line_times[ 0 ] ) / machine_current->timings.tstates_per_line; - *x = ( tstates - machine_current->line_times[ *y ] ) / 4; + if( *y >= 0 && *y <= DISPLAY_SCREEN_HEIGHT ) + *x = ( tstates - machine_current->line_times[ *y ] ) / 4; + else *x = 0; } void Modified: vendor/fuse/current/fuse.c =================================================================== --- vendor/fuse/current/fuse.c 2007-03-10 11:54:28 UTC (rev 308) +++ vendor/fuse/current/fuse.c 2007-03-10 12:02:05 UTC (rev 309) @@ -1,7 +1,7 @@ /* fuse.c: The Free Unix Spectrum Emulator Copyright (c) 1999-2005 Philip Kendall - $Id: fuse.c,v 1.133 2007/02/02 16:21:51 pak21 Exp $ + $Id: fuse.c,v 1.133.2.1 2007/02/17 17:12:29 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 @@ -113,6 +113,7 @@ const char *zxatasp_master, *zxatasp_slave; const char *zxcf; const char *divide_master, *divide_slave; + const char *mdr[8]; } start_files_t; @@ -474,6 +475,15 @@ start_files->divide_master = settings_current.divide_master_file; start_files->divide_slave = settings_current.divide_slave_file; + start_files->mdr[0] = settings_current.mdr_file; + start_files->mdr[1] = settings_current.mdr_file2; + start_files->mdr[2] = settings_current.mdr_file3; + start_files->mdr[3] = settings_current.mdr_file4; + start_files->mdr[4] = settings_current.mdr_file5; + start_files->mdr[5] = settings_current.mdr_file6; + start_files->mdr[6] = settings_current.mdr_file7; + start_files->mdr[7] = settings_current.mdr_file8; + return 0; } @@ -482,7 +492,7 @@ parse_nonoption_args( int argc, char **argv, int first_arg, start_files_t *start_files ) { - size_t i; + size_t i, j; const char *filename; utils_file file; libspectrum_id_t type; @@ -536,6 +546,15 @@ case LIBSPECTRUM_CLASS_SNAPSHOT: start_files->snapshot = filename; break; + case LIBSPECTRUM_CLASS_MICRODRIVE: + for( j = 0; j < 8; j++ ) { + if( !start_files->mdr[j] ) { + start_files->mdr[j] = filename; + break; + } + } + break; + case LIBSPECTRUM_CLASS_TAPE: start_files->tape = filename; break; @@ -558,7 +577,7 @@ static int do_start_files( start_files_t *start_files ) { - int autoload, error; + int autoload, error, i; /* Can't do both input recording and playback */ if( start_files->playback && start_files->recording ) { @@ -637,6 +656,15 @@ if( error ) return error; } + /* Microdrive cartridges */ + + for( i = 0; i < 8; i++ ) { + if( start_files->mdr[i] ) { + error = utils_open_file( start_files->mdr[i], autoload, NULL ); + if( error ) return error; + } + } + /* IDE hard disk images */ if( start_files->simpleide_master ) { Modified: vendor/fuse/current/hacking/ChangeLog =================================================================== --- vendor/fuse/current/hacking/ChangeLog 2007-03-10 11:54:28 UTC (rev 308) +++ vendor/fuse/current/hacking/ChangeLog 2007-03-10 12:02:05 UTC (rev 309) @@ -1524,4 +1524,41 @@ 20070202 BRANCH: Release-0_8_0-branch 20070202 TAG: Release-0_8_0-pre1 (Release-0_8_0-branch) 20070204 sound.c: don't disable sound completely if we don't enable sound - after an unpause (fixes bug #1648246) (Fred). + after an unpause (fixes bug #1648246) (Release-0_8_0-branch) (Fred). +20070204 rzx.c: use new libspectrum_rzx_playback_frame() API to allow + loading of snapshots (necessary for playing back RZX files made with + SPIN's "RZX Pause" feature). +20070207 man/fuse.1: document that metacity needs --no-aspect-hint + (Thanks, Stuart Brady and dave in #spin) (Release-0_8_0-branch). +20070208 rzx.c: ensure tstates is sane after RZX completion + (bug #1654165) (Release-0_8_0-branch). +20070209 rzx.c: ensure tstates is sane after RZX desync + (Release-0_8_0-branch). +20070210 sound/{coreaudiosound.c,sdlsound.c}: make sound fifo two frames in + size rather than a multiple of the sound fragment size, make sound + callbacks run after some sound is available, calculate SDL fragment + size based on machine speed and output frequency + (Release-0_8_0-branch) (Fred). +20070217 widget/filesel.c: allow absolute pathnames to be used (fixes bug + #1651433) (Release-0_8_0-branch) (Gergely Szasz). +20070217 sound/aosound.c: stop possible segfaults (part of bug #1659865) + (Release-0_8_0-branch) (Gergely Szasz). +20070217 man/fuse.1: small ao improvements (rest of bug #1659865) + (Release-0_8_0-branch) (Gergely Szasz). +20070217 fuse.c,if1.c,settings.dat,utils.c: allow microdrive cartridge images + to be used on startup (bug #1660099) (Release-0_8_0-branch) + (Gergely Szasz). +20070303 settings.dat,man/fuse.1,ui/gtk/gtkui.c: new --strict-aspect-hint + option to improve situation with Metacity not being able to resize + or move GTK+ window (bug #1539655) (Release-0_8_0-branch). +20070303 configure.in: don't use libao by default (bug #1668916) + (Release-0_8_0-branch). +20070303 TAG: Release-0_8_0-pre2 (Release-0_8_0-branch) +20070303 man/fuse.1: document --rom-* options (bug #1262547) + (Release-0_8_0-branch). +20070304 ui.c: swap Kempston mouse buttons (bug #1507684) + (Release-0_8_0-branch). +20070306 sound.c: don't leak memory for tape_buf (Release-0_8_0-branch) (Fred). +20070306 display.c: don't overrun line_times array (Release-0_8_0-branch) + (Fred). +20070310 man/fuse.1: add divide url (Release-0_8_0-branch) (Fred). Modified: vendor/fuse/current/hacking/cvs-tags =================================================================== --- vendor/fuse/current/hacking/cvs-tags 2007-03-10 11:54:28 UTC (rev 308) +++ vendor/fuse/current/hacking/cvs-tags 2007-03-10 12:02:05 UTC (rev 309) @@ -1,6 +1,6 @@ CVS tags for Fuse -$Id: cvs-tags,v 1.32 2007/02/02 17:16:19 pak21 Exp $ +$Id: cvs-tags,v 1.32.2.1 2007/03/03 21:49:10 pak21 Exp $ | Release-0_3_1 | Release-0_3_2pre1 @@ -145,6 +145,7 @@ | +-\ | | Release-0_8_0-pre1 +| | Release-0_8_0-pre2 | | | | Release-0_8_0-branch | Modified: vendor/fuse/current/if1.c =================================================================== --- vendor/fuse/current/if1.c 2007-03-10 11:54:28 UTC (rev 308) +++ vendor/fuse/current/if1.c 2007-03-10 12:02:05 UTC (rev 309) @@ -1,7 +1,7 @@ /* if2.c: Interface I handling routines Copyright (c) 2004-2007 Gergely Szasz, Philip Kendall - $Id: if1.c,v 1.14 2007/01/20 17:54:51 pak21 Exp $ + $Id: if1.c,v 1.14.2.1 2007/02/17 17:12:29 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 @@ -788,8 +788,26 @@ void if1_mdr_insert( const char *filename, int drive ) { - microdrive_t *mdr = µdrive[drive]; + microdrive_t *mdr; + int i; + + if( drive == -1 ) { /* find an emtpty one */ + for( i = 0; i < 8; i++ ) { + if( !microdrive[i].inserted ) { + drive = i; + break; + } + } + } + + if( drive == -1 ) { + ui_error( UI_ERROR_ERROR, + "Cannot insert cartridge '%s', all microdrive loaded", filename ); + return; + } + mdr = µdrive[drive]; + if( mdr->inserted && if1_mdr_eject( NULL, drive ) ) { ui_error( UI_ERROR_ERROR, "New cartridge in drive, please eject manually" ); Modified: vendor/fuse/current/man/fuse.1 =================================================================== --- vendor/fuse/current/man/fuse.1 2007-03-10 11:54:28 UTC (rev 308) +++ vendor/fuse/current/man/fuse.1 2007-03-10 12:02:05 UTC (rev 309) @@ -83,15 +83,15 @@ .I \-\-aspect\-hint .RS Specify whether the GTK+ and Xlib user interfaces should `hint' to the -window manager about the preferred aspect ratio for the top-level +window manager about the preferred aspect ratio for the graphics window, thus preventing resizing to non-square sizes which lead to -Fuse not displaying correctly. However, with some window managers (for -example -.IR icewm (1)) -this prevents the window from being resized at all. (Enabled by +Fuse not displaying correctly. This option has been observed to cause +problems with some window managers when using the GTK+ UI which can +prevent the window from being resized or moved at all. (Enabled by default, but you can use .RI ` \-\-no\-aspect\-hint ' -to disable). +to disable). See also the +.RI ` \-\-strict\-aspect\-hint ' option. .RE .PP .I \-\-autosave\-settings @@ -406,6 +406,102 @@ Specify an RZX file to begin recording to. .RE .PP +.I "\-\-rom\-16 file" +.br +.I "\-\-rom\-48 file" +.br +.I "\-\-rom\-128-0 file" +.br +.I "\-\-rom\-128-1 file" +.br +.I "\-\-rom\-plus2-0 file" +.br +.I "\-\-rom\-plus2-1 file" +.br +.I "\-\-rom\-plus2a-0 file" +.br +.I "\-\-rom\-plus2a-1 file" +.br +.I "\-\-rom\-plus2a-2 file" +.br +.I "\-\-rom\-plus2a-3 file" +.br +.I "\-\-rom\-plus3-0 file" +.br +.I "\-\-rom\-plus3-1 file" +.br +.I "\-\-rom\-plus3-2 file" +.br +.I "\-\-rom\-plus3-3 file" +.br +.I "\-\-rom\-plus3e-0 file" +.br +.I "\-\-rom\-plus3e-1 file" +.br +.I "\-\-rom\-plus3e-2 file" +.br +.I "\-\-rom\-plus3e-3 file" +.br +.I "\-\-rom\-tc2048 file" +.br +.I "\-\-rom\-tc2068-0 file" +.br +.I "\-\-rom\-tc2068-1 file" +.br +.I "\-\-rom\-ts2068-0 file" +.br +.I "\-\-rom\-ts2068-1 file" +.br +.I "\-\-rom\-pentagon-0 file" +.br +.I "\-\-rom\-pentagon-1 file" +.br +.I "\-\-rom\-pentagon-2 file" +.br +.I "\-\-rom\-scorpion-0 file" +.br +.I "\-\-rom\-scorpion-1 file" +.br +.I "\-\-rom\-scorpion-2 file" +.br +.I "\-\-rom\-scorpion-3 file" +.br +.I "\-\-rom\-spec-se-0 file" +.br +.I "\-\-rom\-spec-se-1 file" +.br +.I "\-\-rom\-interface-1 file" +.RS +Specify the file to be used for ROM(s) used for each machine. The +options respectively refer to the 16K Spectrum +.RI ( 48.rom ), +48K Spectrum +.RI ( 48.rom ), +the two ROMs for the 128K Spectrum +.RI ( 128-0.rom " and " 128-1.rom ), +the two ROMs for the +2 +.RI ( plus2-0.rom " and " plus2-1.rom ), +the four ROMs for the +2A +.RI ( plus3-0.rom ", " plus3-1.rom ", " plus3-2.rom " and " plus3-3.rom ), +the four ROMs for the +3 +.RI ( plus3-0.rom ", " plus3-1.rom ", " plus3-2.rom " and " plus3-3.rom ), +the TC2048 ROM +.RI ( tc2048.rom ), +the two ROMs for the TC2068 +.RI ( tc2068-0.rom " and " tc2068-1.rom ), +the two ROMs for the TS2068 +.RI ( tc2068-0.rom " and " tc2068-1.rom ), +the two main ROMs and the TR-DOS ROM for the Pentagon 128 +.RI ( 128p-0.rom ", " 128p-1.rom " and " trdos.rom ), +the four ROMs for the Scorpion 256 +.RI ( 256s-0.rom ", " 256s-1.rom ", " 256s-2.rom " and " 256s-3.rom ), +the two ROMs for the Spectrum SE +.RI ( se-0.rom " and " se-1.rom ), +and the Interface I ROM +.RI ( if1-2.rom ). +The names in brackets denote the defaults. +.RE +.PP .I \-\-separation .RS Give stereo separation of the 128's AY sound channels. Same as the @@ -556,12 +652,16 @@ .RI buffer_time= num .br .RI ` num ' -gives the ALSA buffer time. +gives the ALSA buffer time in microseconds. .IP \[bu] .RI period_time= num .br .RI ` num ' -gives the ALSA period time. +gives the ALSA period time in microseconds. +.IP \[bu] +.RI use_mmap= yes|y|true|t|1 +.br +specifies that libao use memory mapped transfer. .RE .IP \[bu] .IR arts : @@ -691,6 +791,19 @@ option. .RE .PP +.I "\-\-strict\-aspect\-hint" +.RS +For the GTK+ UI, use stricter limits for the aspect ratio limits set +by the +.RI ` \-\-aspect\-hint ' +option. This can cause some window managers (for example, +.IR metacity (1)) +to not allow the window to be resized and moved, but is necessary to +prevent others (for example, +.IR fvwm (1)) +from being able resize the window away from square. +.RE +.PP .I "\-v mode" .br .I "\-\-svgamode mode" @@ -2358,7 +2471,7 @@ .SH "DIVIDE" The DivIDE is another IDE interface for the Spectrum, of which full details can be found at -.IR "http://insert.divide.url/" . +.IR "http://baze.au.com/divide/" . The interface can be activated via the .I "DivIDE interface" option from the Modified: vendor/fuse/current/rzx.c =================================================================== --- vendor/fuse/current/rzx.c 2007-03-10 11:54:28 UTC (rev 308) +++ vendor/fuse/current/rzx.c 2007-03-10 12:02:05 UTC (rev 309) @@ -1,7 +1,7 @@ /* rzx.c: .rzx files Copyright (c) 2002-2003 Philip Kendall - $Id: rzx.c,v 1.70 2007/02/02 16:21:51 pak21 Exp $ + $Id: rzx.c,v 1.70.2.3 2007/02/09 08:21:33 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 @@ -307,9 +307,22 @@ out of frames, as this occurs just before a normal end of frame and everything works normally as rzx_playback is now zero again */ if( add_interrupt ) { + error = event_add( machine_current->timings.tstates_per_frame, EVENT_TYPE_FRAME ); if( error ) return error; + + /* We're no longer doing RZX playback, so tstates now be <= the + normal frame count */ + if( tstates > machine_current->timings.tstates_per_frame ) + tstates = machine_current->timings.tstates_per_frame; + + } else { + + /* Ensure that tstates will be zero after it is reduced in + spectrum_frame() */ + tstates = machine_current->timings.tstates_per_frame; + } libspec_error = libspectrum_rzx_free( rzx ); @@ -360,8 +373,9 @@ static int playback_frame( void ) { int error, finished; + libspectrum_snap *snap; - error = libspectrum_rzx_playback_frame( rzx, &finished ); + error = libspectrum_rzx_playback_frame( rzx, &finished, &snap ); if( error ) return rzx_stop_playback( 0 ); if( finished ) { @@ -369,6 +383,11 @@ return rzx_stop_playback( 0 ); } + if( snap ) { + error = snapshot_copy_from( snap ); + if( error ) return rzx_stop_playback( 0 ); + } + /* If we've got another frame to do, fetch the new instruction count and continue */ rzx_instruction_count = libspectrum_rzx_instructions( rzx ); Modified: vendor/fuse/current/settings.dat =================================================================== --- vendor/fuse/current/settings.dat 2007-03-10 11:54:28 UTC (rev 308) +++ vendor/fuse/current/settings.dat 2007-03-10 12:02:05 UTC (rev 309) @@ -1,7 +1,7 @@ # settings.dat: configuration options for Fuse # Copyright (c) 2002-2004 Philip Kendall -# $Id: settings.dat,v 1.56 2007/02/02 16:21:52 pak21 Exp $ +# $Id: settings.dat,v 1.56.2.2 2007/03/03 21:02:01 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 @@ -107,6 +107,14 @@ dck_file, string, NULL,, dock if2_file, string, NULL,, if2cart +mdr_file, string, NULL,, microdrive-file +mdr_file2, string, NULL,, microdrive-2-file +mdr_file3, string, NULL,, microdrive-3-file +mdr_file4, string, NULL,, microdrive-4-file +mdr_file5, string, NULL,, microdrive-5-file +mdr_file6, string, NULL,, microdrive-6-file +mdr_file7, string, NULL,, microdrive-7-file +mdr_file8, string, NULL,, microdrive-8-file simpleide_active, boolean, 0,, simpleide simpleide_master_file, string, NULL,, simpleide-masterfile simpleide_slave_file, string, NULL,, simpleide-slavefile @@ -127,6 +135,7 @@ printer_text_filename, string, "printout.txt",, textfile aspect_hint, boolean, 1 +strict_aspect_hint, boolean, 0 svga_mode, numeric, 320, 'v', svgamode doublescan_mode, numeric, 1, 'D', doublescan-mode Modified: vendor/fuse/current/sound/aosound.c =================================================================== --- vendor/fuse/current/sound/aosound.c 2007-03-10 11:54:28 UTC (rev 308) +++ vendor/fuse/current/sound/aosound.c 2007-03-10 12:02:05 UTC (rev 309) @@ -1,7 +1,7 @@ /* aosound.c: libao sound I/O Copyright (c) 2004 Gergely Szasz, Philip Kendall - $Id: aosound.c,v 1.3 2007/02/02 16:21:55 pak21 Exp $ + $Id: aosound.c,v 1.3.2.1 2007/02/17 17:05:43 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 @@ -43,6 +43,7 @@ static int sixteenbit = 1; static char *filename = NULL; static const char *default_filename = "fuse-sound.ao"; +static int first_init = 1; static void driver_error( void ) @@ -87,6 +88,9 @@ char *mutable, *option, *key, *value; /* Get a copy of the device string we can modify */ + if( !device || *device == '\0' ) + return 0; + mutable = strdup( device ); if( !mutable ) { ui_error( UI_ERROR_ERROR, "out of memory at %s:%d", __FILE__, __LINE__ ); @@ -97,7 +101,8 @@ option = strchr( mutable, ':' ); if( option ) *option++ = '\0'; - *driver_id = ao_driver_id( mutable ); + if( *mutable ) /* ! \0 */ + *driver_id = ao_driver_id( mutable ); /* Now parse any further options */ while( option ) { @@ -118,8 +123,11 @@ free( mutable ); return 1; } - } else { + } else if( key && value) { ao_append_option( options, key, value ); + } else if ( first_init ) { + ui_error( UI_ERROR_ERROR, "ignoring badly formed libao option (%s%s)", + key ? key : "", value ? value : "" ); } } @@ -148,21 +156,16 @@ ao_initialize(); - if( !device || *device == '\0' ) { + error = parse_driver_options( device, &driver_id, &options ); + if( error ) { + settings_current.sound = 0; + sound_lowlevel_init_in_progress = 0; + return error; + } + if( driver_id == -1 ) driver_id = ao_default_driver_id(); - } else { - - error = parse_driver_options( device, &driver_id, &options ); - if( error ) { - settings_current.sound = 0; - sound_lowlevel_init_in_progress = 0; - return error; - } - - } - if( driver_id == -1 ) { ui_error( UI_ERROR_ERROR, "ao: driver '%s' unknown", device ); @@ -191,7 +194,7 @@ } else { - if( !filename ) filename = default_filename; + if( !filename ) filename = (char *)default_filename; dev_for_ao = ao_open_file( driver_id, filename, 1, &format, options); } @@ -206,6 +209,7 @@ ao_free_options( options ); sound_lowlevel_init_in_progress = 0; + first_init = 0; return 0; } @@ -221,8 +225,8 @@ void sound_lowlevel_frame( libspectrum_signed_word *data, int len ) { - static unsigned char buf8[4096]; - signed char *data8 = ( signed char* )data; + static signed char buf8[4096]; + void *data8 = data; len <<= 1; /* now in bytes */ Modified: vendor/fuse/current/sound/coreaudiosound.c =================================================================== --- vendor/fuse/current/sound/coreaudiosound.c 2007-03-10 11:54:28 UTC (rev 308) +++ vendor/fuse/current/sound/coreaudiosound.c 2007-03-10 12:02:05 UTC (rev 309) @@ -28,12 +28,16 @@ #include <CoreAudio/AudioHardware.h> #include <AudioUnit/AudioUnit.h> +#include "settings.h" #include "sfifo.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, @@ -49,6 +53,9 @@ */ static AudioUnit gOutputUnit; +/* Records sound writer status information */ +static int audio_output_started; + int sound_lowlevel_init( const char *dev, int *freqptr, int *stereoptr ) { @@ -58,6 +65,8 @@ UInt32 deviceBufferSize; /* bufferSize returned by kAudioDevicePropertyBufferSize */ int error; + float hz; + int sound_framesiz; /* get the default output device for the HAL */ count = sizeof( device ); @@ -158,21 +167,21 @@ return 1; } - if( ( error = sfifo_init( &sound_fifo, 2 * deviceFormat.mChannelsPerFrame - * deviceBufferSize + 1 ) ) ) { + hz = (float)machine_current->timings.processor_speed / + machine_current->timings.tstates_per_frame; + sound_framesiz = deviceFormat.mSampleRate / 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; } - /* 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; - } + /* wait to run sound until we have some sound to play */ + audio_output_started = 0; return 0; } @@ -182,7 +191,8 @@ { OSStatus err; - verify_noerr( AudioOutputUnitStop( gOutputUnit ) ); + if( audio_output_started ) + verify_noerr( AudioOutputUnitStop( gOutputUnit ) ); err = AudioUnitUninitialize( gOutputUnit ); if( err ) { @@ -218,6 +228,19 @@ ui_error( UI_ERROR_ERROR, "Couldn't write sound fifo: %s", strerror( i ) ); } + + if( !audio_output_started ) { + /* Start the rendering + The DefaultOutputUnit will do any format conversions to the format of the + default device */ + OSStatus err = AudioOutputUnitStart( gOutputUnit ); + if( err ) { + ui_error( UI_ERROR_ERROR, "AudioOutputUnitStart=%ld", err ); + return; + } + + audio_output_started = 1; + } } /* This is the audio processing callback. */ Modified: vendor/fuse/current/sound/sdlsound.c =================================================================== --- vendor/fuse/current/sound/sdlsound.c 2007-03-10 11:54:28 UTC (rev 308) +++ vendor/fuse/current/sound/sdlsound.c 2007-03-10 12:02:05 UTC (rev 309) @@ -2,7 +2,7 @@ Copyright (c) 2002-2004 Alexander Yurchenko, Russell Marks, Philip Kendall, Fredrick Meunier - $Id: sdlsound.c,v 1.18 2006/12/22 10:55:46 fredm Exp $ + $Id: sdlsound.c,v 1.18.2.1 2007/02/10 00:59:36 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 @@ -28,6 +28,7 @@ #include <errno.h> #include <fcntl.h> +#include <math.h> #include <string.h> #include <stdlib.h> #include <unistd.h> @@ -41,19 +42,23 @@ #include "sound.h" #include "ui/ui.h" -/* using (7) 32 byte frags for 8kHz, scale up for higher */ -#define BASE_SOUND_FRAG_PWR 7 - static void sdlwrite( void *userdata, Uint8 *stream, int len ); sfifo_t sound_fifo; +/* Number of Spectrum frames audio latency to use */ +#define NUM_FRAMES 2 + +/* Records sound writer status information */ +static int audio_output_started; + int sound_lowlevel_init( const char *device, int *freqptr, int *stereoptr ) { SDL_AudioSpec requested, received; - int frag; int error; + float hz; + int sound_framesiz; /* I'd rather just use setenv, but Windows doesn't have it */ if( device ) { @@ -80,16 +85,11 @@ requested.format = AUDIO_S16SYS; requested.callback = sdlwrite; - frag = BASE_SOUND_FRAG_PWR; - if (*freqptr > 8250) - frag++; - if (*freqptr > 16500) - frag++; - if (*freqptr > 33000) - frag++; + hz = (float)machine_current->timings.processor_speed / + machine_current->timings.tstates_per_frame; + sound_framesiz = *freqptr / hz; + requested.samples = pow(2.0, floor(log2(sound_framesiz))); - requested.samples = 1 << frag; - if ( SDL_OpenAudio( &requested, &received ) < 0 ) { settings_current.sound = 0; ui_error( UI_ERROR_ERROR, "Couldn't open sound device: %s", @@ -106,39 +106,36 @@ requested.freq = *freqptr; - frag = BASE_SOUND_FRAG_PWR; - if (*freqptr > 8250) - frag++; - if (*freqptr > 16500) - frag++; - if (*freqptr > 33000) - frag++; + hz = (float)machine_current->timings.processor_speed / + machine_current->timings.tstates_per_frame; + sound_framesiz = *freqptr / hz; + requested.samples = pow(2.0, floor(log2(sound_framesiz))); - requested.samples = 1 << frag; - if( SDL_OpenAudio( &requested, NULL ) < 0 ) { settings_current.sound = 0; ui_error( UI_ERROR_ERROR, "Couldn't open sound device: %s", SDL_GetError() ); return 1; } - - /* Convert from 16-bit stereo samples to bytes plus some headroom */ - frag = 1 << (frag+3); - } else { - *freqptr = received.freq; *stereoptr = received.channels == 1 ? 0 : 1; - frag = received.size; } - if( ( error = sfifo_init( &sound_fifo, 2 * frag + 1 ) ) ) { + hz = (float)machine_current->timings.processor_speed / + machine_current->timings.tstates_per_frame; + sound_framesiz = *freqptr / hz; + sound_framesiz <<= 1; + + if( ( error = sfifo_init( &sound_fifo, NUM_FRAMES + * received.channels + * sound_framesiz + 1 ) ) ) { ui_error( UI_ERROR_ERROR, "Problem initialising sound fifo: %s", strerror ( error ) ); return 1; } - SDL_PauseAudio( 0 ); + /* wait to run sound until we have some sound to play */ + audio_output_started = 0; return 0; } @@ -177,6 +174,11 @@ ui_error( UI_ERROR_ERROR, "Couldn't write sound fifo: %s\n", strerror( i ) ); } + + if( !audio_output_started ) { + SDL_PauseAudio( 0 ); + audio_output_started = 1; + } } /* Write len samples from fifo into stream */ Modified: vendor/fuse/current/sound.c =================================================================== --- vendor/fuse/current/sound.c 2007-03-10 11:54:28 UTC (rev 308) +++ vendor/fuse/current/sound.c 2007-03-10 12:02:05 UTC (rev 309) @@ -1,7 +1,7 @@ /* sound.c: Sound support Copyright (c) 2000-2005 Russell Marks, Matan Ziv-Av, Philip Kendall - $Id: sound.c,v 1.49.2.1 2007/02/04 06:35:04 fredm Exp $ + $Id: sound.c,v 1.49.2.2 2007/03/06 11:36:23 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 @@ -278,7 +278,12 @@ if(sound_enabled) { if(sound_buf) + { free(sound_buf); + sound_buf=NULL; + free(tape_buf); + tape_buf=NULL; + } sound_lowlevel_end(); sound_enabled=0; } Modified: vendor/fuse/current/ui/gtk/gtkui.c =================================================================== --- vendor/fuse/current/ui/gtk/gtkui.c 2007-03-10 11:54:28 UTC (rev 308) +++ vendor/fuse/current/ui/gtk/gtkui.c 2007-03-10 12:02:05 UTC (rev 309) @@ -1,7 +1,7 @@ /* gtkui.c: GTK+ routines for dealing with the user interface Copyright (c) 2000-2005 Philip Kendall, Russell Marks - $Id: gtkui.c,v 1.162 2007/02/02 16:21:59 pak21 Exp $ + $Id: gtkui.c,v 1.162.2.1 2007/03/03 21:02:01 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 @@ -187,11 +187,17 @@ if( settings_current.aspect_hint ) { hints |= GDK_HINT_ASPECT; - geometry.min_aspect = geometry.max_aspect = - ((float)DISPLAY_ASPECT_WIDTH)/DISPLAY_SCREEN_HEIGHT; + if( settings_current.strict_aspect_hint ) { + geometry.min_aspect = geometry.max_aspect = + (float)DISPLAY_ASPECT_WIDTH / DISPLAY_SCREEN_HEIGHT; + } else { + geometry.min_aspect = 1.2; + geometry.max_aspect = 1.5; + } } - gtk_window_set_geometry_hints( GTK_WINDOW(gtkui_window), gtkui_drawing_area, + gtk_window_set_geometry_hints( GTK_WINDOW(gtkui_window), + GTK_WIDGET(gtkui_drawing_area), &geometry, hints ); if( gtkdisplay_init() ) return 1; Modified: vendor/fuse/current/ui.c =================================================================== --- vendor/fuse/current/ui.c 2007-03-10 11:54:28 UTC (rev 308) +++ vendor/fuse/current/ui.c 2007-03-10 12:02:05 UTC (rev 309) @@ -1,7 +1,7 @@ /* ui.c: User interface routines, but those which are independent of any UI Copyright (c) 2002 Philip Kendall - $Id: ui.c,v 1.26 2007/02/02 16:21:52 pak21 Exp $ + $Id: ui.c,v 1.26.2.1 2007/03/04 12:27:24 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 @@ -144,8 +144,8 @@ /* Possibly we'll end up handling _more_ than one mouse interface... */ switch( button ) { - case 1: if( ui_mouse_grabbed ) kempmouse_update( 0, 0, 0, down ); break; - case 3: if( ui_mouse_grabbed ) kempmouse_update( 0, 0, 1, down ); break; + case 1: if( ui_mouse_grabbed ) kempmouse_update( 0, 0, 1, down ); break; + case 3: if( ui_mouse_grabbed ) kempmouse_update( 0, 0, 0, down ); break; case 2: if( ui_mouse_present && settings_current.kempston_mouse && !down && !mouse_grab_suspended ) Modified: vendor/fuse/current/utils.c =================================================================== --- vendor/fuse/current/utils.c 2007-03-10 11:54:28 UTC (rev 308) +++ vendor/fuse/current/utils.c 2007-03-10 12:02:05 UTC (rev 309) @@ -1,7 +1,7 @@ /* utils.c: some useful helper functions Copyright (c) 1999-2005 Philip Kendall - $Id: utils.c,v 1.59 2007/02/02 16:21:52 pak21 Exp $ + $Id: utils.c,v 1.59.2.1 2007/02/17 17:12:29 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 @@ -153,7 +153,7 @@ break; case LIBSPECTRUM_CLASS_MICRODRIVE: - if1_mdr_insert( filename, 0 ); + if1_mdr_insert( filename, -1 ); break; case LIBSPECTRUM_CLASS_CARTRIDGE_TIMEX: Modified: vendor/fuse/current/widget/filesel.c =================================================================== --- vendor/fuse/current/widget/filesel.c 2007-03-10 11:54:28 UTC (rev 308) +++ vendor/fuse/current/widget/filesel.c 2007-03-10 12:02:05 UTC (rev 309) @@ -2,7 +2,7 @@ Copyright (c) 2001-2005 Matan Ziv-Av, Philip Kendall, Russell Marks, Marek Januszewski - $Id: filesel.c,v 1.34 2007/02/02 16:22:00 pak21 Exp $ + $Id: filesel.c,v 1.34.2.1 2007/02/17 16:40:36 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 @@ -520,26 +520,33 @@ break; case INPUT_KEY_Tab: - if( is_saving ) - { + if( is_saving ) { widget_text_t text_data; text_data.title = title; text_data.allow = WIDGET_INPUT_ASCII; text_data.text[0] = 0; - if( widget_do( WIDGET_TYPE_TEXT, &text_data ) - || !widget_text_text || !*widget_text_text ) + if( widget_do( WIDGET_TYPE_TEXT, &text_data ) || + !widget_text_text || !*widget_text_text ) break; - /* Get current dir name and allocate space for the leafname */ - fn = widget_getcwd(); - if( fn ) - fn = realloc( fn, strlen( fn ) + strlen( widget_text_text ) + 2 ); - if( !fn ) { - widget_end_widget( WIDGET_FINISHED_CANCEL ); - return; + if( *widget_text_text != '/' ) { /* relative name */ + /* Get current dir name and allocate space for the leafname */ + fn = widget_getcwd(); + if( fn ) + fn = realloc( fn, strlen( fn ) + strlen( widget_text_text ) + 2 ); + if( !fn ) { + widget_end_widget( WIDGET_FINISHED_CANCEL ); + return; + } + /* Append the leafname and return it */ + strcat( fn, "/" ); + strcat( fn, widget_text_text ); + } else { /* absolute name */ + fn = strdup( widget_text_text ); + if( !fn ) { + widget_end_widget( WIDGET_FINISHED_CANCEL ); + return; + } } - /* Append the leafname and return it */ - strcat( fn, "/" ); - strcat( fn, widget_text_text ); widget_filesel_name = fn; if( exit_all_widgets ) { widget_end_all( WIDGET_FINISHED_OK ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2007-03-10 11:54:27
|
Revision: 308 http://svn.sourceforge.net/fuse-for-macosx/?rev=308&view=rev Author: fredm Date: 2007-03-10 03:54:28 -0800 (Sat, 10 Mar 2007) Log Message: ----------- Tag vendor/libspectrum/current as vendor/libspectrum/libspectrum-0.3.0-pre2. Added Paths: ----------- vendor/libspectrum/libspectrum-0.3.0-pre2/ Copied: vendor/libspectrum/libspectrum-0.3.0-pre2 (from rev 307, vendor/libspectrum/current) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2007-03-10 11:54:15
|
Revision: 307 http://svn.sourceforge.net/fuse-for-macosx/?rev=307&view=rev Author: fredm Date: 2007-03-10 03:54:13 -0800 (Sat, 10 Mar 2007) Log Message: ----------- Load . into vendor/libspectrum/current. Modified Paths: -------------- vendor/libspectrum/current/ChangeLog vendor/libspectrum/current/doc/libspectrum.txt vendor/libspectrum/current/hacking/ChangeLog vendor/libspectrum/current/libspectrum.h.in vendor/libspectrum/current/rzx.c vendor/libspectrum/current/tzx_read.c Modified: vendor/libspectrum/current/ChangeLog =================================================================== --- vendor/libspectrum/current/ChangeLog 2007-02-14 10:54:11 UTC (rev 306) +++ vendor/libspectrum/current/ChangeLog 2007-03-10 11:54:13 UTC (rev 307) @@ -12,12 +12,12 @@ * TZX Generalized Data Block support. (Philip Kendall). - * Support for Z80Em and CSW tape files (Darren Salt, Fredrick Meunier). + * Support for Z80Em and CSW tape files (Darren Salt). * Support for the TS2068 (Fredrick Meunier). - * Support for connected joystick information in snapshots (Philip - Kendall). + * Support for connected joystick information in snapshots (Fredrick + Meunier). * Add interrupt length to timing information (Philip Kendall). @@ -188,4 +188,4 @@ * libspectrum separated from Fuse just before the 0.5.0 release of Fuse; see Fuse's ChangeLog for changes up to this point -$Id: ChangeLog,v 1.12 2007/02/02 16:35:42 pak21 Exp $ +$Id: ChangeLog,v 1.12.2.1 2007/02/04 08:54:43 fredm Exp $ Modified: vendor/libspectrum/current/doc/libspectrum.txt =================================================================== --- vendor/libspectrum/current/doc/libspectrum.txt 2007-02-14 10:54:11 UTC (rev 306) +++ vendor/libspectrum/current/doc/libspectrum.txt 2007-03-10 11:54:13 UTC (rev 307) @@ -1184,11 +1184,14 @@ Prepare to start playback of the input recording `rzx'. libspectrum_error libspectrum_rzx_playback_frame( libspectrum_rzx *rzx, - int *finished ) + int *finished, + libspectrum_snap **snap ) Move onto the next frame of playback from the input recording `rzx'. If the last frame has now been played, `*finished' will be -non-zero, otherwise it will be zero. +non-zero, otherwise it will be zero. If a snap is present in the input +recording before the next frame, this will be returned in `*snap', +otherwise `*snap' will be NULL. If the correct number of bytes were not read from `rzx' during the frame via `libspectrum_rzx_playback', an error will be given. @@ -1628,4 +1631,4 @@ Write `data' to register `reg' of the IDE channgel `chn'. -$Id: libspectrum.txt,v 1.30 2007/01/20 17:53:54 pak21 Exp $ +$Id: libspectrum.txt,v 1.30.2.1 2007/02/04 18:32:36 pak21 Exp $ Modified: vendor/libspectrum/current/hacking/ChangeLog =================================================================== --- vendor/libspectrum/current/hacking/ChangeLog 2007-02-14 10:54:11 UTC (rev 306) +++ vendor/libspectrum/current/hacking/ChangeLog 2007-03-10 11:54:13 UTC (rev 307) @@ -393,3 +393,11 @@ 20070202 TAG: libspectrum_0_3_0-trunk 20070202 BRANCH: libspectrum_0_3_0-branch 20070202 TAG: libspectrum_0_3_0-pre1 (libspectrum_0_3_0-branch) +20070204 ChangeLog: fix some attributions (Fred). +20070204 libspectrum.h.in,rzx.c,doc/libspectrum.txt: make + libspectrum_rzx_playback_frame able to return a snap (necessary + for supporting RZXs made with SPIN's "RZX Pause" feature) + (libspectrum_0_3_0-branch). +20070217 tzx_read.c: do allocate memory if we have no data but some padding + in tzx_read_data() (libspectrum_0_3_0-branch). +20070303 TAG: libspectrum_0_3_0-pre2 (libspectrum_0_3_0-branch) Modified: vendor/libspectrum/current/libspectrum.h.in =================================================================== --- vendor/libspectrum/current/libspectrum.h.in 2007-02-14 10:54:11 UTC (rev 306) +++ vendor/libspectrum/current/libspectrum.h.in 2007-03-10 11:54:13 UTC (rev 307) @@ -1,7 +1,7 @@ /* libspectrum.h: the library for dealing with ZX Spectrum emulator files Copyright (c) 2001-2007 Philip Kendall, Darren Salt, Fredrick Meunier - $Id: libspectrum.h.in,v 1.141 2007/02/02 16:35:42 pak21 Exp $ + $Id: libspectrum.h.in,v 1.141.2.1 2007/02/04 18:32:36 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 @@ -668,7 +668,7 @@ libspectrum_rzx_start_playback( libspectrum_rzx *rzx, int which, libspectrum_snap **snap ); libspectrum_error WIN32_DLL -libspectrum_rzx_playback_frame( libspectrum_rzx *rzx, int *finished ); +libspectrum_rzx_playback_frame( libspectrum_rzx *rzx, int *finished, libspectrum_snap **snap ); libspectrum_error WIN32_DLL libspectrum_rzx_playback( libspectrum_rzx *rzx, libspectrum_byte *byte ); Modified: vendor/libspectrum/current/rzx.c =================================================================== --- vendor/libspectrum/current/rzx.c 2007-02-14 10:54:11 UTC (rev 306) +++ vendor/libspectrum/current/rzx.c 2007-03-10 11:54:13 UTC (rev 307) @@ -1,7 +1,7 @@ /* rzx.c: routines for dealing with .rzx files Copyright (c) 2002-2005 Philip Kendall - $Id: rzx.c,v 1.69 2007/02/02 16:35:43 pak21 Exp $ + $Id: rzx.c,v 1.69.2.1 2007/02/04 18:32:36 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 @@ -530,8 +530,10 @@ } libspectrum_error -libspectrum_rzx_playback_frame( libspectrum_rzx *rzx, int *finished ) +libspectrum_rzx_playback_frame( libspectrum_rzx *rzx, int *finished, + libspectrum_snap **snap ) { + *snap = NULL; *finished = 0; /* Check we read the correct number of INs during this frame */ @@ -548,11 +550,22 @@ /* Increment the frame count and see if we've finished with this file */ if( ++rzx->current_frame >= rzx->current_input->count ) { - rzx->current_block = - g_slist_find_custom( rzx->current_block->next, - GINT_TO_POINTER( LIBSPECTRUM_RZX_INPUT_BLOCK ), - find_block ); - + GSList *it = rzx->current_block->next; + rzx->current_block = NULL; + + for( ; it; it = it->next ) { + + rzx_block_t *block = it->data; + + if( block->type == LIBSPECTRUM_RZX_INPUT_BLOCK ) { + rzx->current_block = it; + break; + } else if( block->type == LIBSPECTRUM_RZX_SNAPSHOT_BLOCK ) { + *snap = block->types.snap; + } + + } + if( rzx->current_block ) { rzx_block_t *block = rzx->current_block->data; Modified: vendor/libspectrum/current/tzx_read.c =================================================================== --- vendor/libspectrum/current/tzx_read.c 2007-02-14 10:54:11 UTC (rev 306) +++ vendor/libspectrum/current/tzx_read.c 2007-03-10 11:54:13 UTC (rev 307) @@ -1,7 +1,7 @@ /* tzx_read.c: Routines for reading .tzx files Copyright (c) 2001-2007 Philip Kendall, Darren Salt - $Id: tzx_read.c,v 1.65 2007/02/02 16:35:43 pak21 Exp $ + $Id: tzx_read.c,v 1.65.2.1 2007/02/17 19:11:05 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 @@ -1258,7 +1258,7 @@ /* Allocate memory for the data; the check for *length is to avoid the implementation-defined of malloc( 0 ) */ - if( *length ) { + if( *length || padding ) { *data = malloc( ( *length + padding ) * sizeof( libspectrum_byte ) ); if( !*data ) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2007-02-14 10:54:13
|
Revision: 306 http://svn.sourceforge.net/fuse-for-macosx/?rev=306&view=rev Author: fredm Date: 2007-02-14 02:54:11 -0800 (Wed, 14 Feb 2007) Log Message: ----------- Fix tape browser, restore tape/disk/mdr status icons, as a side effect Fuse is now 10.4 only. Modified Paths: -------------- branches/fusegl/fuse/TODO branches/fusegl/fuse/display.c branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj branches/fusegl/fuse/fusepb/controllers/FuseController.h branches/fusegl/fuse/fusepb/controllers/FuseController.m branches/fusegl/fuse/fusepb/controllers/TapeBrowserController.h branches/fusegl/fuse/fusepb/controllers/TapeBrowserController.m branches/fusegl/fuse/fusepb/models/Emulator.h branches/fusegl/fuse/fusepb/models/Emulator.m branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m branches/fusegl/fuse/ui/cocoa/cocoadisplay.h branches/fusegl/fuse/ui/cocoa/cocoadisplay.m Added Paths: ----------- branches/fusegl/fuse/ui/cocoa/cocoastatusbar.m Modified: branches/fusegl/fuse/TODO =================================================================== --- branches/fusegl/fuse/TODO 2007-02-06 11:48:10 UTC (rev 305) +++ branches/fusegl/fuse/TODO 2007-02-14 10:54:11 UTC (rev 306) @@ -22,13 +22,19 @@ when menus are selected or window is minimised X Fix screen updating during fastloading X Make sure that fuse_end is called somewhere on exit -* Use screenshot style code for minimise icon rather than reading out of GL texture -* Restore activity icons +X Restore activity icons +* Make activity icons transparent +* Use double buffered texture (in cocoadisplay have screen 0 and 1 for use of + DisplayOpenGLView and flip between them on frame end), should also have a + mutex taken while DisplayOpenGLView changes and cocoadisplay flips to + prevent thread sync problems +* Sort out remaining FuseController calls into emulator object/thread * Add native joystick processing (removes SDL joystick input dependency from Fuse) +* Quit keyhandling when command key is pressed * Use sheets rather than modal dialogs (for Save As) * Put in latest hq[23]x filters (HQ2x_555 from ScummVM should do the trick) * Make border display optional -* Quit keyhandling when command key is pressed +* Figure out why minimise icon image is partially blanked when minimise starts $Id: TODO,v 1.4 2004/03/02 13:38:08 pak21 Exp $ Modified: branches/fusegl/fuse/display.c =================================================================== --- branches/fusegl/fuse/display.c 2007-02-06 11:48:10 UTC (rev 305) +++ branches/fusegl/fuse/display.c 2007-02-14 10:54:11 UTC (rev 306) @@ -727,16 +727,7 @@ for( i = 0; i < 8; i++ ) display_dirty_chunk( x, y + i ); } -/* Get the attributes for the eight pixels starting at - ( (8*x) , y ) */ -static void -display_get_attr( int x, int y, - libspectrum_byte *ink, libspectrum_byte *paper ) -{ - display_parse_attr( display_get_attr_byte( x, y ), ink, paper ); -} - -void +inline void display_parse_attr( libspectrum_byte attr, libspectrum_byte *ink, libspectrum_byte *paper ) { @@ -749,7 +740,16 @@ } } +/* Get the attributes for the eight pixels starting at + ( (8*x) , y ) */ static void +display_get_attr( int x, int y, + libspectrum_byte *ink, libspectrum_byte *paper ) +{ + display_parse_attr( display_get_attr_byte( x, y ), ink, paper ); +} + +static void push_border_change( int colour ) { int beam_x, beam_y; Modified: branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj =================================================================== --- branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj 2007-02-06 11:48:10 UTC (rev 305) +++ branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj 2007-02-14 10:54:11 UTC (rev 306) @@ -256,6 +256,7 @@ B650986E09366C8F003AF1BF /* rom.icns in Resources */ = {isa = PBXBuildFile; fileRef = B650986B09366C8F003AF1BF /* rom.icns */; }; B650986F09366C8F003AF1BF /* rzx.icns in Resources */ = {isa = PBXBuildFile; fileRef = B650986C09366C8F003AF1BF /* rzx.icns */; }; B650987109366CA2003AF1BF /* szx.icns in Resources */ = {isa = PBXBuildFile; fileRef = B650987009366CA2003AF1BF /* szx.icns */; }; + B67DC2190B63835100FA31B6 /* cocoastatusbar.m in Sources */ = {isa = PBXBuildFile; fileRef = B67DC2180B63835100FA31B6 /* cocoastatusbar.m */; }; B6825549091817F30014B5EE /* divide.c in Sources */ = {isa = PBXBuildFile; fileRef = B6825547091817F30014B5EE /* divide.c */; }; B682554A091817F30014B5EE /* divide.h in Headers */ = {isa = PBXBuildFile; fileRef = B6825548091817F30014B5EE /* divide.h */; }; B6A24E330B49C67D00AD5B9D /* scalers16.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6A24E320B49C67D00AD5B9D /* scalers16.cpp */; }; @@ -433,6 +434,7 @@ B66EA7830401075300A864FD /* FuseMenus.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FuseMenus.h; sourceTree = SOURCE_ROOT; }; B66EA7840401075300A864FD /* FuseMenus.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = FuseMenus.m; sourceTree = SOURCE_ROOT; }; B678E4060608FB4300678A33 /* spec_se.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = spec_se.c; path = ../machines/spec_se.c; sourceTree = SOURCE_ROOT; }; + B67DC2180B63835100FA31B6 /* cocoastatusbar.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = cocoastatusbar.m; sourceTree = "<group>"; }; B67F204203D4B629007BE3A0 /* trdos.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = trdos.c; sourceTree = "<group>"; }; B67F204303D4B629007BE3A0 /* trdos.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = trdos.h; sourceTree = "<group>"; }; B67F3C1407ED1C9D0045339F /* ScalerNameToIdTransformer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ScalerNameToIdTransformer.h; path = transformers/ScalerNameToIdTransformer.h; sourceTree = SOURCE_ROOT; }; @@ -924,6 +926,7 @@ B6CE7F3C0B2830A300EB65B3 /* cocoajoystick.c */, B6A6F11D0B3EA737000B88E9 /* cocoascreenshot.h */, B6A6F11E0B3EA737000B88E9 /* cocoascreenshot.m */, + B67DC2180B63835100FA31B6 /* cocoastatusbar.m */, B6CE7F3E0B2830A300EB65B3 /* cocoaui.h */, B6A6F0D90B3D141B000B88E9 /* cocoaui.m */, B6E0252B0B38AFE500E23A0F /* keysyms.m */, @@ -1481,6 +1484,7 @@ B6A24E3D0B49C78700AD5B9D /* hq3x.cpp in Sources */, B6B076B30B59FE9A00D4F95C /* Emulator.m in Sources */, B6B99F8A0B5F798700EE408F /* cocoadisplay.m in Sources */, + B67DC2190B63835100FA31B6 /* cocoastatusbar.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1628,13 +1632,13 @@ B63319B4086803BA00732AA3 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { + ARCHS = ( + i386, + ppc, + ); DEAD_CODE_STRIPPING = YES; GCC_DYNAMIC_NO_PIC = YES; GCC_WARN_ABOUT_POINTER_SIGNEDNESS = NO; - MACOSX_DEPLOYMENT_TARGET_i386 = 10.4; - MACOSX_DEPLOYMENT_TARGET_ppc = 10.3; - SDKROOT_i386 = /Developer/SDKs/MacOSX10.4u.sdk; - SDKROOT_ppc = /Developer/SDKs/MacOSX10.3.9.sdk; YACCFLAGS = "-d"; YACC_GENERATED_FILE_STEM = InputFileStem; ZERO_LINK = YES; @@ -1644,13 +1648,13 @@ B63319B5086803BA00732AA3 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { + ARCHS = ( + i386, + ppc, + ); DEAD_CODE_STRIPPING = YES; GCC_DYNAMIC_NO_PIC = YES; GCC_WARN_ABOUT_POINTER_SIGNEDNESS = NO; - MACOSX_DEPLOYMENT_TARGET_i386 = 10.4; - MACOSX_DEPLOYMENT_TARGET_ppc = 10.3; - SDKROOT_i386 = /Developer/SDKs/MacOSX10.4u.sdk; - SDKROOT_ppc = /Developer/SDKs/MacOSX10.3.9.sdk; YACCFLAGS = "-d"; YACC_GENERATED_FILE_STEM = InputFileStem; ZERO_LINK = YES; @@ -1660,13 +1664,13 @@ B63319B6086803BA00732AA3 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { + ARCHS = ( + i386, + ppc, + ); DEAD_CODE_STRIPPING = YES; GCC_DYNAMIC_NO_PIC = YES; GCC_WARN_ABOUT_POINTER_SIGNEDNESS = NO; - MACOSX_DEPLOYMENT_TARGET_i386 = 10.4; - MACOSX_DEPLOYMENT_TARGET_ppc = 10.3; - SDKROOT_i386 = /Developer/SDKs/MacOSX10.4u.sdk; - SDKROOT_ppc = /Developer/SDKs/MacOSX10.3.9.sdk; YACCFLAGS = "-d"; YACC_GENERATED_FILE_STEM = InputFileStem; ZERO_LINK = YES; Modified: branches/fusegl/fuse/fusepb/controllers/FuseController.h =================================================================== --- branches/fusegl/fuse/fusepb/controllers/FuseController.h 2007-02-06 11:48:10 UTC (rev 305) +++ branches/fusegl/fuse/fusepb/controllers/FuseController.h 2007-02-14 10:54:11 UTC (rev 306) @@ -1,8 +1,6 @@ /* FuseController.h: Routines for dealing with the Cocoa UI - Copyright (c) 2002-2004 Fredrick Meunier + Copyright (c) 2002-2007 Fredrick Meunier - $Id: FuseController.h,v 1.3 2005/04/21 16:15:09 fred 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 @@ -156,7 +154,9 @@ - (void)openDisk:(specplus3_drive_number)drive; -- (void)setTapePlayMenu:(ui_statusbar_state)state; +- (void)setDiskState:(NSNumber*)state; +- (void)setTapeState:(NSNumber*)state; +- (void)setMdrState:(NSNumber*)state; - (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)theApplication; - (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender; Modified: branches/fusegl/fuse/fusepb/controllers/FuseController.m =================================================================== --- branches/fusegl/fuse/fusepb/controllers/FuseController.m 2007-02-06 11:48:10 UTC (rev 305) +++ branches/fusegl/fuse/fusepb/controllers/FuseController.m 2007-02-14 10:54:11 UTC (rev 306) @@ -1,5 +1,5 @@ /* FuseController.m: Routines for dealing with the Cocoa user interface - Copyright (c) 2000-2004 Philip Kendall, Russell Marks, Fredrick Meunier, + Copyright (c) 2000-2007 Philip Kendall, Russell Marks, Fredrick Meunier, Mark Grebe <ata...@co...> $Id: FuseController.m,v 1.3 2005/04/21 16:15:09 fred Exp $ @@ -43,7 +43,6 @@ #import "DisplayOpenGLView.h" #include "dck.h" -#include "debugger/debugger.h" #include "divide.h" #include "event.h" #include "fuse.h" @@ -55,10 +54,6 @@ #include "rzx.h" #include "screenshot.h" #include "ui/cocoa/cocoascreenshot.h" -#if 0 -#include "sdlui.h" -#include "sdldisplay.h" -#endif #include "settings.h" #include "settings_cocoa.h" #include "simpleide.h" @@ -788,12 +783,12 @@ - (IBAction)tape_play:(id)sender { - tape_toggle_play( 0 ); + [[DisplayOpenGLView instance] tapeTogglePlay]; } - (IBAction)tape_rewind:(id)sender { - tape_select_block( 0 ); + [[DisplayOpenGLView instance] tapeRewind]; } - (IBAction)tape_write:(id)sender @@ -803,7 +798,7 @@ - (IBAction)cocoa_break:(id)sender { - debugger_mode = DEBUGGER_MODE_HALTED; + [[DisplayOpenGLView instance] cocoaBreak]; } - (IBAction)showRollbackPane:(id)sender @@ -1307,11 +1302,19 @@ [[DisplayOpenGLView instance] unpause]; } -- (void)setTapePlayMenu:(ui_statusbar_state)state +- (void)setDiskState:(NSNumber*)state { - [tapePlay setTitle:state == UI_STATUSBAR_STATE_ACTIVE ? @"Pause" : @"Play"]; } +- (void)setTapeState:(NSNumber*)state +{ + [tapePlay setTitle:[state unsignedCharValue] == UI_STATUSBAR_STATE_ACTIVE ? @"Pause" : @"Play"]; +} + +- (void)setMdrState:(NSNumber*)state +{ +} + - (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)theApplication { return YES; @@ -1885,37 +1888,3 @@ return confirm; } - -/* The statusbar handling function */ -int -ui_statusbar_update( ui_statusbar_item item, ui_statusbar_state state ) -{ - switch( item ) { - - case UI_STATUSBAR_ITEM_DISK: - //sdl_disk_state = state; - return 0; - - case UI_STATUSBAR_ITEM_PAUSED: - /* We don't support pausing this version of Fuse */ - return 0; - - case UI_STATUSBAR_ITEM_TAPE: - //sdl_tape_state = state; - [[FuseController singleton] setTapePlayMenu:state]; - return 0; - - case UI_STATUSBAR_ITEM_MICRODRIVE: - //sdl_mdr_state = state; - return 0; - - case UI_STATUSBAR_ITEM_MOUSE: - /* We don't support showing a grab icon */ - return 0; - - } - - ui_error( UI_ERROR_ERROR, "Attempt to update unknown statusbar item %d", - item ); - return 1; -} Modified: branches/fusegl/fuse/fusepb/controllers/TapeBrowserController.h =================================================================== --- branches/fusegl/fuse/fusepb/controllers/TapeBrowserController.h 2007-02-06 11:48:10 UTC (rev 305) +++ branches/fusegl/fuse/fusepb/controllers/TapeBrowserController.h 2007-02-14 10:54:11 UTC (rev 306) @@ -41,7 +41,12 @@ - (IBAction)apply:(id)sender; - (void)showWindow:(id)sender; -- (void)update:(ui_tape_browser_update_type)change block:(libspectrum_tape_block *)block; +- (void)clearContents; +- (void)addObjectToTapeContents:(NSDictionary*)info; +- (void)addObjectToInfoContents:(NSDictionary*)info; +- (void)setTapeIndex:(NSNumber*)index; +- (void)setInitialising:(NSNumber*)value; + - (void)tableViewSelectionDidChange:(NSNotification *)aNotification; - (NSArrayController *)tapeController; Modified: branches/fusegl/fuse/fusepb/controllers/TapeBrowserController.m =================================================================== --- branches/fusegl/fuse/fusepb/controllers/TapeBrowserController.m 2007-02-06 11:48:10 UTC (rev 305) +++ branches/fusegl/fuse/fusepb/controllers/TapeBrowserController.m 2007-02-14 10:54:11 UTC (rev 306) @@ -98,46 +98,35 @@ [super showWindow:sender]; - [self update:UI_TAPE_BROWSER_NEW_TAPE block:NULL]; + [[DisplayOpenGLView instance] tapeWindowInitialise]; [[DisplayOpenGLView instance] unpause]; } -- (void)update:(ui_tape_browser_update_type)change block:(libspectrum_tape_block *)block +- (void)clearContents { - int error; + [tapeController removeObjects:[tapeController arrangedObjects]]; + [infoController removeObjects:[infoController arrangedObjects]]; +} - [[DisplayOpenGLView instance] pause]; +- (void)addObjectToTapeContents:(NSDictionary*)info +{ + [tapeController addObject:info]; +} - if( change == UI_TAPE_BROWSER_NEW_TAPE ) { - [tapeController removeObjects:[tapeController arrangedObjects]]; - [infoController removeObjects:[infoController arrangedObjects]]; +- (void)addObjectToInfoContents:(NSDictionary*)info +{ + [infoController addObject:info]; +} - initialising = YES; - error = tape_foreach( add_block_details, self ); - initialising = NO; - if( error ) return; - } +- (void)setTapeIndex:(NSNumber*)index +{ + [tapeController setSelectionIndex:[index unsignedIntValue]]; +} - if( change == UI_TAPE_BROWSER_SELECT_BLOCK || - change == UI_TAPE_BROWSER_NEW_TAPE ) { - int current_block = tape_get_current_block(); - if(current_block >= 0) { - [tapeController setSelectionIndex:current_block]; - } - } - - if( change == UI_TAPE_BROWSER_NEW_BLOCK && block ) { - add_block_details( block, self ); - } - - if( tape_modified ) { - [[self window] setDocumentEdited:YES]; - } else { - [[self window] setDocumentEdited:NO]; - } - - [[DisplayOpenGLView instance] unpause]; +- (void)setInitialising:(NSNumber*)value +{ + initialising = [value boolValue]; } - (NSArrayController *)tapeController @@ -155,7 +144,7 @@ static void add_block_details( libspectrum_tape_block *block, void *user_data ) { - NSArrayController *tableContents = [(TapeBrowserController*)user_data tapeController]; + TapeBrowserController *tapeBrowserController = (TapeBrowserController*)user_data; NSString *type, *data; char buffer[256]; NSArray *keys = [NSArray arrayWithObjects: @"type", @"data", nil]; @@ -166,10 +155,13 @@ tape_block_details( buffer, 256, block ); data = [NSString stringWithUTF8String:buffer]; values = [NSArray arrayWithObjects: type, data, nil]; - [tableContents addObject:[NSMutableDictionary dictionaryWithObjects:values forKeys:keys]]; + [tapeBrowserController + performSelectorOnMainThread:@selector(addObjectToTapeContents:) + withObject:[NSDictionary dictionaryWithObjects:values forKeys:keys] + waitUntilDone:NO + ]; if( libspectrum_tape_block_type( block ) == LIBSPECTRUM_TAPE_BLOCK_ARCHIVE_INFO ) { - NSArrayController *infoContents = [(TapeBrowserController*)user_data infoController]; int i; for( i = 0; i < libspectrum_tape_block_count( block ); i++ ) { NSString *info; @@ -182,7 +174,11 @@ encoding:NSISOLatin1StringEncoding #endif ], nil]; - [infoContents addObject:[NSMutableDictionary dictionaryWithObjects:values forKeys:keys]]; + [tapeBrowserController + performSelectorOnMainThread:@selector(addObjectToInfoContents:) + withObject:[NSDictionary dictionaryWithObjects:values forKeys:keys] + waitUntilDone:NO + ]; break; case 1: info = [NSString stringWithCString: @@ -193,7 +189,11 @@ ]; values = [NSArray arrayWithObjects: @"Publishers", [[info componentsSeparatedByString:@"\n"] componentsJoinedByString:@", "], nil]; - [infoContents addObject:[NSMutableDictionary dictionaryWithObjects:values forKeys:keys]]; + [tapeBrowserController + performSelectorOnMainThread:@selector(addObjectToInfoContents:) + withObject:[NSDictionary dictionaryWithObjects:values forKeys:keys] + waitUntilDone:NO + ]; break; case 2: info = [NSString stringWithCString: @@ -204,7 +204,11 @@ ]; values = [NSArray arrayWithObjects: @"Authors", [[info componentsSeparatedByString:@"\n"] componentsJoinedByString:@", "], nil]; - [infoContents addObject:[NSMutableDictionary dictionaryWithObjects:values forKeys:keys]]; + [tapeBrowserController + performSelectorOnMainThread:@selector(addObjectToInfoContents:) + withObject:[NSDictionary dictionaryWithObjects:values forKeys:keys] + waitUntilDone:NO + ]; break; case 3: values = [NSArray arrayWithObjects: @"Year", @@ -215,7 +219,11 @@ encoding:NSISOLatin1StringEncoding #endif ] intValue]], nil]; - [infoContents addObject:[NSMutableDictionary dictionaryWithObjects:values forKeys:keys]]; + [tapeBrowserController + performSelectorOnMainThread:@selector(addObjectToInfoContents:) + withObject:[NSDictionary dictionaryWithObjects:values forKeys:keys] + waitUntilDone:NO + ]; break; case 4: info = [NSString stringWithCString: @@ -226,7 +234,11 @@ ]; values = [NSArray arrayWithObjects: @"Languages", [[info componentsSeparatedByString:@"\n"] componentsJoinedByString:@", "], nil]; - [infoContents addObject:[NSMutableDictionary dictionaryWithObjects:values forKeys:keys]]; + [tapeBrowserController + performSelectorOnMainThread:@selector(addObjectToInfoContents:) + withObject:[NSDictionary dictionaryWithObjects:values forKeys:keys] + waitUntilDone:NO + ]; break; case 5: values = [NSArray arrayWithObjects: @"Category", @@ -235,7 +247,11 @@ encoding:NSISOLatin1StringEncoding #endif ], nil]; - [infoContents addObject:[NSMutableDictionary dictionaryWithObjects:values forKeys:keys]]; + [tapeBrowserController + performSelectorOnMainThread:@selector(addObjectToInfoContents:) + withObject:[NSDictionary dictionaryWithObjects:values forKeys:keys] + waitUntilDone:NO + ]; break; case 6: values = [NSArray arrayWithObjects: @"Price", @@ -244,7 +260,11 @@ encoding:NSISOLatin1StringEncoding #endif ], nil]; - [infoContents addObject:[NSMutableDictionary dictionaryWithObjects:values forKeys:keys]]; + [tapeBrowserController + performSelectorOnMainThread:@selector(addObjectToInfoContents:) + withObject:[NSDictionary dictionaryWithObjects:values forKeys:keys] + waitUntilDone:NO + ]; break; case 7: values = [NSArray arrayWithObjects: @"Loader", @@ -253,7 +273,11 @@ encoding:NSISOLatin1StringEncoding #endif ], nil]; - [infoContents addObject:[NSMutableDictionary dictionaryWithObjects:values forKeys:keys]]; + [tapeBrowserController + performSelectorOnMainThread:@selector(addObjectToInfoContents:) + withObject:[NSDictionary dictionaryWithObjects:values forKeys:keys] + waitUntilDone:NO + ]; break; case 8: values = [NSArray arrayWithObjects: @"Origin", @@ -262,8 +286,11 @@ encoding:NSISOLatin1StringEncoding #endif ], nil]; - [infoContents addObject:[[NSMutableDictionary alloc] - initWithObjects:values forKeys:keys]]; + [tapeBrowserController + performSelectorOnMainThread:@selector(addObjectToInfoContents:) + withObject:[NSDictionary dictionaryWithObjects:values forKeys:keys] + waitUntilDone:NO + ]; break; case 255: values = [NSArray arrayWithObjects: @"Comment", @@ -272,7 +299,11 @@ encoding:NSISOLatin1StringEncoding #endif ], nil]; - [infoContents addObject:[NSMutableDictionary dictionaryWithObjects:values forKeys:keys]]; + [tapeBrowserController + performSelectorOnMainThread:@selector(addObjectToInfoContents:) + withObject:[NSDictionary dictionaryWithObjects:values forKeys:keys] + waitUntilDone:NO + ]; break; default: NSLog(@"(Unknown string): %s", (const char *)libspectrum_tape_block_texts( block, i )); @@ -286,9 +317,59 @@ ui_tape_browser_update( ui_tape_browser_update_type change, libspectrum_tape_block *block ) { + int error; + TapeBrowserController* tapeBrowserController; + if( !dialog_created ) return 0; - [[TapeBrowserController singleton] update:change block:block]; + fuse_emulation_pause(); + tapeBrowserController = [TapeBrowserController singleton]; + + if( change == UI_TAPE_BROWSER_NEW_TAPE ) { + [tapeBrowserController + performSelectorOnMainThread:@selector(clearContents) + withObject:nil + waitUntilDone:NO + ]; + + [tapeBrowserController + performSelectorOnMainThread:@selector(setInitialising:) + withObject:[NSNumber numberWithBool:YES] + waitUntilDone:NO + ]; + error = tape_foreach( add_block_details, tapeBrowserController ); + [tapeBrowserController + performSelectorOnMainThread:@selector(setInitialising:) + withObject:[NSNumber numberWithBool:NO] + waitUntilDone:NO + ]; + if( error ) return error; + } + + if( change == UI_TAPE_BROWSER_SELECT_BLOCK || + change == UI_TAPE_BROWSER_NEW_TAPE ) { + int current_block = tape_get_current_block(); + if(current_block >= 0) { + [tapeBrowserController + performSelectorOnMainThread:@selector(setTapeIndex:) + withObject:[NSNumber numberWithUnsignedInt:current_block] + waitUntilDone:NO + ]; + } + } + + if( change == UI_TAPE_BROWSER_NEW_BLOCK && block ) { + add_block_details( block, tapeBrowserController ); + } + + if( tape_modified ) { + [[tapeBrowserController window] setDocumentEdited:YES]; + } else { + [[tapeBrowserController window] setDocumentEdited:NO]; + } + + fuse_emulation_unpause(); + return 0; } Modified: branches/fusegl/fuse/fusepb/models/Emulator.h =================================================================== --- branches/fusegl/fuse/fusepb/models/Emulator.h 2007-02-06 11:48:10 UTC (rev 305) +++ branches/fusegl/fuse/fusepb/models/Emulator.h 2007-02-14 10:54:11 UTC (rev 306) @@ -64,6 +64,10 @@ -(id) init; -(void) openFile:(const char *)filename; +-(void) tapeTogglePlay; +-(void) tapeRewind; +-(void) tapeWindowInitialise; +-(void) cocoaBreak; -(void) pause; -(void) unpause; Modified: branches/fusegl/fuse/fusepb/models/Emulator.m =================================================================== --- branches/fusegl/fuse/fusepb/models/Emulator.m 2007-02-06 11:48:10 UTC (rev 305) +++ branches/fusegl/fuse/fusepb/models/Emulator.m 2007-02-14 10:54:11 UTC (rev 306) @@ -25,6 +25,7 @@ #import "DisplayOpenGLView.h" #import "Emulator.h" +#include "debugger/debugger.h" #include "event.h" #include "fuse.h" #include "fusepb/main.h" @@ -32,6 +33,7 @@ #include "machine.h" #include "settings.h" #include "sound.h" +#include "tape.h" #include "ui/ui.h" #include "utils.h" @@ -163,6 +165,26 @@ display_refresh_all(); } +-(void) tapeTogglePlay +{ + tape_toggle_play( 0 ); +} + +-(void) tapeRewind +{ + tape_select_block( 0 ); +} + +-(void) tapeWindowInitialise +{ + ui_tape_browser_update( UI_TAPE_BROWSER_NEW_TAPE, NULL ); +} + +-(void) cocoaBreak +{ + debugger_mode = DEBUGGER_MODE_HALTED; +} + -(void) pause { if( isEmulating ) { Modified: branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h 2007-02-06 11:48:10 UTC (rev 305) +++ branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h 2007-02-14 10:54:11 UTC (rev 306) @@ -24,10 +24,15 @@ #import <Cocoa/Cocoa.h> +#include <OpenGL/gl.h> +#include <OpenGL/glext.h> +#include <OpenGL/glu.h> + #include <libspectrum.h> #include "input.h" #include "ui/cocoa/cocoadisplay.h" +#include "ui/ui.h" @class Emulator; @@ -35,9 +40,27 @@ { /* Need texture size and dimensions and two backing textures */ Cocoa_Texture screenTex; /* Screen texture */ + GLuint screenTexId; + Cocoa_Texture redCassetteTex; + GLuint redCassette; + Cocoa_Texture greenCassetteTex; + GLuint greenCassette; + Cocoa_Texture redMdrTex; + GLuint redMdr; + Cocoa_Texture greenMdrTex; + GLuint greenMdr; + Cocoa_Texture redDiskTex; + GLuint redDisk; + Cocoa_Texture greenDiskTex; + GLuint greenDisk; + BOOL screenTexInitialised; + ui_statusbar_state disk_state; + ui_statusbar_state mdr_state; + ui_statusbar_state tape_state; + NSWindow *fullscreenWindow; NSWindow *windowedWindow; @@ -56,17 +79,38 @@ -(void) createTexture:(Cocoa_Texture*)newScreen; -(void) destroyTexture; +-(void) uploadIconTexture:(GLuint*)textureName + width:(GLsizei)width + height:(GLsizei)height + pixels:(unsigned char *)pixels; +-(void) blitIcon:(Cocoa_Texture*)texture name:(GLuint)textureName; -(void) setServer:(id)anObject; -(id) initWithFrame:(NSRect)frameRect; -(void) awakeFromNib; +-(void) loadPicture:(NSString *) name + greenTex:(Cocoa_Texture*)greenTexture + greenIcon:(GLuint*)greenTextureName + redTex:(Cocoa_Texture*)redTexture + redIcon:(GLuint*)redTextureName + xOrigin:(int)x + yOrigin:(int)y; + -(void) setNeedsDisplayYes; -(void) openFile:(const char *)filename; +-(void) tapeTogglePlay; +-(void) tapeRewind; +-(void) tapeWindowInitialise; +-(void) cocoaBreak; -(void) pause; -(void) unpause; +-(void) setDiskState:(NSNumber*)state; +-(void) setTapeState:(NSNumber*)state; +-(void) setMdrState:(NSNumber*)state; + -(void) mouseMoved:(NSEvent *)theEvent; -(void) mouseDown:(NSEvent *)theEvent; -(void) mouseUp:(NSEvent *)theEvent; Modified: branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2007-02-06 11:48:10 UTC (rev 305) +++ branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2007-02-14 10:54:11 UTC (rev 306) @@ -24,6 +24,7 @@ #import "DisplayOpenGLView.h" #import "Emulator.h" +#import "FuseController.h" #include <OpenGL/gl.h> #include <OpenGL/glext.h> @@ -33,6 +34,47 @@ #include "fusepb/main.h" #include "settings.h" +unsigned char * +NSBitmapImageRepToRGBAPixelArray(NSBitmapImageRep * bitmap, int red) +{ + unsigned char * pixels; + NSBitmapImageRep * bitmap2; + NSGraphicsContext * context; +#define BYTES_PER_PIXEL 4 + int targetWidth = [bitmap pixelsWide]; + int targetHeight = [bitmap pixelsHigh]; + + pixels = (unsigned char *) malloc(BYTES_PER_PIXEL * targetWidth * targetHeight); + bitmap2 = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes: &pixels + pixelsWide: targetWidth + pixelsHigh: targetHeight + bitsPerSample: 8 + samplesPerPixel: 4 + hasAlpha: YES + isPlanar: NO + colorSpaceName: NSDeviceRGBColorSpace + bitmapFormat: NSAlphaNonpremultipliedBitmapFormat + bytesPerRow: (targetWidth * BYTES_PER_PIXEL) + bitsPerPixel: (BYTES_PER_PIXEL * 8)]; + + context = [NSGraphicsContext graphicsContextWithBitmapImageRep: bitmap2]; + [NSGraphicsContext saveGraphicsState]; + [NSGraphicsContext setCurrentContext: context]; + [bitmap drawInRect: NSMakeRect(0, 0, targetWidth, targetHeight)]; + [NSGraphicsContext restoreGraphicsState]; + + int i; + for( i = 0; i < targetWidth * targetHeight; i++ ) { + pixels[i*4+0] = red ? pixels[i*4+0] : 0; // r on i386 + pixels[i*4+1] = red ? 0 : pixels[i*4+1]; // g on i386 + pixels[i*4+2] = 0; + } + + [bitmap2 release]; + + return pixels; +} + @implementation DisplayOpenGLView static DisplayOpenGLView *instance = nil; @@ -144,6 +186,24 @@ glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glColor4f(0.0f, 0.0f, 0.0f, 0.0f); + [self loadPicture: @"cassette" greenTex:&greenCassetteTex + greenIcon:&greenCassette + redTex:&redCassetteTex + redIcon:&redCassette + xOrigin:285 + yOrigin:220]; + [self loadPicture: @"microdrive" greenTex:&greenMdrTex + greenIcon:&greenMdr + redTex:&redMdrTex + redIcon:&redMdr + xOrigin:264 + yOrigin:218]; + [self loadPicture: @"plus3disk" greenTex:&greenDiskTex + greenIcon:&greenDisk + redTex:&redDiskTex + redIcon:&redDisk + xOrigin:243 + yOrigin:218]; screenTexInitialised = NO; target_ratio = 4.0f/3.0f; @@ -181,14 +241,135 @@ proxy_emulator = nil; [real_emulator release]; real_emulator = nil; + + glDeleteTextures(1, &redCassette); + redCassette = 0; + glDeleteTextures(1, &greenCassette); + greenCassette = 0; + glDeleteTextures(1, &redMdr); + redMdr = 0; + glDeleteTextures(1, &greenMdr); + greenMdr = 0; + glDeleteTextures(1, &redDisk); + redDisk = 0; + glDeleteTextures(1, &greenDisk); + greenDisk = 0; + [self release]; } +-(void) loadPicture: (NSString *) name + greenTex:(Cocoa_Texture*)greenTexture + greenIcon:(GLuint*)greenTextureName + redTex:(Cocoa_Texture*)redTexture + redIcon:(GLuint*)redTextureName + xOrigin:(int)x + yOrigin:(int)y +{ + NSBitmapImageRep *bitmap; + NSImage *image = [NSImage imageNamed: name]; + + /* create a bitmap with the correct image data */ + bitmap = [[NSBitmapImageRep alloc] initWithData:[image TIFFRepresentation]]; + if (bitmap == nil) NSLog(@"in loadPicture: NSBitmapImageRep not loaded"); + + /* Colour first image green */ + greenTexture->pixels = NSBitmapImageRepToRGBAPixelArray( bitmap, 0 ); + greenTexture->image_width = [bitmap pixelsWide]; + greenTexture->image_height = [bitmap pixelsHigh]; + greenTexture->image_xoffset = x; + greenTexture->image_yoffset = y; + + [self uploadIconTexture:greenTextureName + width:greenTexture->image_width + height:greenTexture->image_height + pixels:greenTexture->pixels]; + + /* Colour second image red */ + redTexture->pixels = NSBitmapImageRepToRGBAPixelArray( bitmap, 1 ); + redTexture->image_width = [bitmap pixelsWide]; + redTexture->image_height = [bitmap pixelsHigh]; + redTexture->image_xoffset = x; + redTexture->image_yoffset = y; + + [self uploadIconTexture:redTextureName + width:redTexture->image_width + height:redTexture->image_height + pixels:redTexture->pixels]; +} + -(void) setNeedsDisplayYes { [super setNeedsDisplay:YES]; } +-(void) blitIcon:(Cocoa_Texture*)texture name:(GLuint)textureName +{ + /* Map pixel icon position to appropriate position on -1.0 to 1.0 canvas */ + float target_x1 = texture->image_xoffset * 2.0f / (float)DISPLAY_ASPECT_WIDTH + - 1.0f; + float target_x2 = ( ( texture->image_xoffset + texture->image_width ) * 2.0f + / (float)DISPLAY_ASPECT_WIDTH ) - 1.0f; + float target_y1 = 1.0f - texture->image_yoffset * 2.0f / + (float)DISPLAY_SCREEN_HEIGHT; + float target_y2 = 1.0f - ( texture->image_yoffset + texture->image_height ) + * 2.0f / (float)DISPLAY_SCREEN_HEIGHT; + + /* Bind and draw icon */ + glBindTexture( GL_TEXTURE_RECTANGLE_EXT, textureName ); + + glBegin( GL_QUADS ); + + glTexCoord2f( (float)texture->image_width, 0.0f ); + glVertex2f( target_x2, target_y1 ); + + glTexCoord2f( (float)texture->image_width, (float)texture->image_height ); + glVertex2f( target_x2, target_y2 ); + + glTexCoord2f( 0.0f, (float)texture->image_height ); + glVertex2f( target_x1, target_y2 ); + + glTexCoord2f( 0.0f, 0.0f ); + glVertex2f( target_x1, target_y1 ); + + glEnd(); +} + +-(void) iconOverlay +{ + switch( disk_state ) { + case UI_STATUSBAR_STATE_ACTIVE: + [self blitIcon:&greenDiskTex name:greenDisk]; + break; + case UI_STATUSBAR_STATE_INACTIVE: + [self blitIcon:&redDiskTex name:redDisk]; + break; + case UI_STATUSBAR_STATE_NOT_AVAILABLE: + break; + } + + switch( mdr_state ) { + case UI_STATUSBAR_STATE_ACTIVE: + [self blitIcon:&greenMdrTex name:greenMdr]; + break; + case UI_STATUSBAR_STATE_INACTIVE: + [self blitIcon:&redMdrTex name:redMdr]; + break; + case UI_STATUSBAR_STATE_NOT_AVAILABLE: + break; + } + + switch( tape_state ) { + case UI_STATUSBAR_STATE_ACTIVE: + [self blitIcon:&greenCassetteTex name:greenCassette]; + break; + case UI_STATUSBAR_STATE_INACTIVE: + case UI_STATUSBAR_STATE_NOT_AVAILABLE: + [self blitIcon:&redCassetteTex name:redCassette]; + break; + } +} + -(void) drawRect:(NSRect)aRect { if( NO == screenTexInitialised ) return; @@ -205,7 +386,7 @@ glClear( GL_COLOR_BUFFER_BIT ); /* Bind, update and draw new image */ - glBindTexture( GL_TEXTURE_RECTANGLE_EXT, 1 ); + glBindTexture( GL_TEXTURE_RECTANGLE_EXT, screenTexId ); glTexSubImage2D( GL_TEXTURE_RECTANGLE_EXT, 0, 0, 0, screenTex.full_width, screenTex.full_height, GL_BGRA, GL_UNSIGNED_SHORT_1_5_5_5_REV, @@ -227,6 +408,8 @@ glEnd(); + if ( settings_current.statusbar ) [self iconOverlay]; + /* Swap buffer to screen */ [[self openGLContext] flushBuffer]; } @@ -299,10 +482,13 @@ if( screenTexInitialised == NO) return; /* FIXME: May want to have a double buffered texture later */ +#if 0 for(i = 0; i < 1; i++) { GLint dt = i+1; glDeleteTextures(1, &dt); } +#endif + glDeleteTextures( 1, &screenTexId ); screenTexInitialised = NO; } @@ -327,11 +513,12 @@ [[self openGLContext] update]; /* FIXME: May want to have a double buffered texture later */ - for(i = 0; i < 1; i++) - { + //for(i = 0; i < 1; i++) + //{ + glGenTextures( 1, &screenTexId ); glDisable( GL_TEXTURE_2D ); glEnable( GL_TEXTURE_RECTANGLE_EXT ); - glBindTexture( GL_TEXTURE_RECTANGLE_EXT, i+1 ); + glBindTexture( GL_TEXTURE_RECTANGLE_EXT, screenTexId ); glTextureRangeAPPLE( GL_TEXTURE_RECTANGLE_EXT, screenTex.full_width * screenTex.pitch, @@ -350,18 +537,61 @@ glTexImage2D( GL_TEXTURE_RECTANGLE_EXT, 0, GL_RGBA, screenTex.full_width, screenTex.full_height, 0, GL_BGRA, GL_UNSIGNED_SHORT_1_5_5_5_REV, screenTex.pixels ); - } + //} screenTexInitialised = YES; } +-(void) uploadIconTexture:(GLuint*)textureName + width:(GLsizei)width + height:(GLsizei)height + pixels:(unsigned char *)pixels +{ + glGenTextures(1, textureName); + + /* Set memory alignment parameters for unpacking the bitmap. */ + glPixelStorei( GL_UNPACK_ALIGNMENT, 1 ); + + /* Specify the texture's properties. */ + glBindTexture( GL_TEXTURE_RECTANGLE_EXT, *textureName ); + glTexParameteri( GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); + glTexParameteri( GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); + glTexParameteri( GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE ); + glTexParameteri( GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE ); + + /* Upload the texture bitmap. */ + glTexImage2D( GL_TEXTURE_RECTANGLE_EXT, 0, GL_RGBA, width, height, 0, GL_RGBA, + GL_UNSIGNED_INT_8_8_8_8_REV, pixels ); +} + -(void) openFile:(const char *)filename { [proxy_emulator openFile:filename]; } +-(void) tapeTogglePlay +{ + [proxy_emulator tapeTogglePlay]; +} + +-(void) tapeRewind +{ + [proxy_emulator tapeRewind]; +} + +-(void) tapeWindowInitialise +{ + [proxy_emulator tapeWindowInitialise]; +} + +-(void) cocoaBreak +{ + [proxy_emulator cocoaBreak]; +} + -(void) pause { [proxy_emulator pause]; + /* FIXME: Show paused status somehow */ } -(void) unpause @@ -369,6 +599,24 @@ [proxy_emulator unpause]; } +-(void) setDiskState:(NSNumber*)state +{ + disk_state = [state unsignedCharValue]; + //[[FuseController singleton] setDiskState:state]; +} + +-(void) setTapeState:(NSNumber*)state +{ + tape_state = [state unsignedCharValue]; + [[FuseController singleton] setTapeState:state]; +} + +-(void) setMdrState:(NSNumber*)state +{ + mdr_state = [state unsignedCharValue]; + //[[FuseController singleton] setMdrState:state]; +} + -(void) mouseMoved:(NSEvent *)theEvent { [proxy_emulator mouseMoved:theEvent]; Modified: branches/fusegl/fuse/ui/cocoa/cocoadisplay.h =================================================================== --- branches/fusegl/fuse/ui/cocoa/cocoadisplay.h 2007-02-06 11:48:10 UTC (rev 305) +++ branches/fusegl/fuse/ui/cocoa/cocoadisplay.h 2007-02-14 10:54:11 UTC (rev 306) @@ -43,6 +43,6 @@ /* Screen texture */ extern Cocoa_Texture* screen; -extern ui_statusbar_state cocoa_disk_state, cocoa_mdr_state, cocoa_tape_state; +void cocoadisplay_display_updated( void ); #endif /* #ifndef FUSE_COCOADISPLAY_H */ Modified: branches/fusegl/fuse/ui/cocoa/cocoadisplay.m =================================================================== --- branches/fusegl/fuse/ui/cocoa/cocoadisplay.m 2007-02-06 11:48:10 UTC (rev 305) +++ branches/fusegl/fuse/ui/cocoa/cocoadisplay.m 2007-02-14 10:54:11 UTC (rev 306) @@ -1,5 +1,5 @@ -/* cocoadisplay.c: Routines for dealing with the Cocoa display - Copyright (c) 2006 Fredrick Meunier +/* cocoadisplay.m: Routines for dealing with the Cocoa display + Copyright (c) 2006-2007 Fredrick Meunier $Id: sdldisplay.c,v 1.40 2006/08/14 13:37:39 fredm Exp $ @@ -31,10 +31,6 @@ #include <stdint.h> #include <string.h> -#include <OpenGL/gl.h> -#include <OpenGL/glext.h> -#include <OpenGL/glu.h> - #include <libspectrum.h> #import "DisplayOpenGLView.h" @@ -419,3 +415,9 @@ return 0; } + +void +cocoadisplay_display_updated( void ) +{ + display_updated=1; +} Added: branches/fusegl/fuse/ui/cocoa/cocoastatusbar.m =================================================================== --- branches/fusegl/fuse/ui/cocoa/cocoastatusbar.m (rev 0) +++ branches/fusegl/fuse/ui/cocoa/cocoastatusbar.m 2007-02-14 10:54:11 UTC (rev 306) @@ -0,0 +1,79 @@ +/* cocoastatusbar.m: Routines for dealing with Cocoa status feedback + Copyright (c) 2007 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: fr...@sp... + Postal address: 3/66 Roslyn Gardens, Ruscutters Bay, NSW 2011, Australia + +*/ + +#include <config.h> + +#import "DisplayOpenGLView.h" + +#include "cocoadisplay.h" +#include "settings.h" +#include "ui/ui.h" + +/* The statusbar handling function */ +int +ui_statusbar_update( ui_statusbar_item item, ui_statusbar_state state ) +{ + switch( item ) { + + case UI_STATUSBAR_ITEM_DISK: + [[DisplayOpenGLView instance] + performSelectorOnMainThread:@selector(setDiskState:) + withObject:[NSNumber numberWithUnsignedChar:state] + waitUntilDone:NO + ]; + if ( settings_current.statusbar ) cocoadisplay_display_updated(); + return 0; + + case UI_STATUSBAR_ITEM_PAUSED: + /* We don't support pausing this version of Fuse - but now we can! */ + return 0; + + case UI_STATUSBAR_ITEM_TAPE: + [[DisplayOpenGLView instance] + performSelectorOnMainThread:@selector(setTapeState:) + withObject:[NSNumber numberWithUnsignedChar:state] + waitUntilDone:NO + ]; + if ( settings_current.statusbar ) cocoadisplay_display_updated(); + return 0; + + case UI_STATUSBAR_ITEM_MICRODRIVE: + [[DisplayOpenGLView instance] + performSelectorOnMainThread:@selector(setMdrState:) + withObject:[NSNumber numberWithUnsignedChar:state] + waitUntilDone:NO + ]; + if ( settings_current.statusbar ) cocoadisplay_display_updated(); + return 0; + + case UI_STATUSBAR_ITEM_MOUSE: + /* We don't support showing a grab icon */ + return 0; + + } + + ui_error( UI_ERROR_ERROR, "Attempt to update unknown statusbar item %d", + item ); + return 1; +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2007-02-06 11:48:10
|
Revision: 305 http://svn.sourceforge.net/fuse-for-macosx/?rev=305&view=rev Author: fredm Date: 2007-02-06 03:48:10 -0800 (Tue, 06 Feb 2007) Log Message: ----------- Update copyright dates to 2007. Modified Paths: -------------- trunk/fuse/fusepb/English.lproj/InfoPlist.strings Modified: trunk/fuse/fusepb/English.lproj/InfoPlist.strings =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2007-02-06 10:08:30
|
Revision: 304 http://svn.sourceforge.net/fuse-for-macosx/?rev=304&view=rev Author: fredm Date: 2007-02-06 02:08:30 -0800 (Tue, 06 Feb 2007) Log Message: ----------- Add GNU style changelog. Added Paths: ----------- tags/Release-0_8_0-pre1/ChangeLog Added: tags/Release-0_8_0-pre1/ChangeLog =================================================================== --- tags/Release-0_8_0-pre1/ChangeLog (rev 0) +++ tags/Release-0_8_0-pre1/ChangeLog 2007-02-06 10:08:30 UTC (rev 304) @@ -0,0 +1,3637 @@ +2007-02-06 09:18 fredm + + * .: Make tag for 0.8.0-pre1 release. + +2007-02-06 09:16 fredm + + * branches/Release-0_8_0: Make branch for 0.8.0 release tree. + +2007-02-06 09:11 fredm + + * trunk/fuse/fusepb/resources/Fuse Help/html/changelog.html: Add + more to the changes list in the manual. + +2007-02-05 13:47 fredm + + * trunk/FuseImporter/FuseImporter.xcodeproj/project.pbxproj, + trunk/FuseImporter/LibspectrumMetadataImporter.m, + trunk/FuseImporter/libspectrum.h, trunk/fuse/ChangeLog, + trunk/fuse/Makefile.am, trunk/fuse/README, trunk/fuse/autogen.sh, + trunk/fuse/ay.c, trunk/fuse/ay.h, trunk/fuse/compat.h, + trunk/fuse/compat/Makefile.am, trunk/fuse/compat/dirname.c, + trunk/fuse/configure.in, trunk/fuse/dck.c, trunk/fuse/dck.h, + 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/Credits.html, + trunk/fuse/fusepb/English.lproj/InfoPlist.strings, + trunk/fuse/fusepb/Info-Fuse.plist, + trunk/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib, + 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/about.html, + trunk/fuse/fusepb/resources/Fuse Help/html/changelog.html, + trunk/fuse/fusepb/resources/Fuse Help/html/divide.html, + trunk/fuse/fusepb/resources/Fuse Help/html/filters.html, + trunk/fuse/fusepb/resources/Fuse Help/html/preferences.html, + trunk/fuse/fusepb/resources/Fuse Help/html/tocstart.html, + trunk/fuse/fusepb/settings_cocoa.h, trunk/fuse/hacking/ChangeLog, + trunk/fuse/hacking/Makefile.am, trunk/fuse/hacking/cvs-tags, + 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/keyboard.c, + trunk/fuse/keyboard.h, trunk/fuse/keysyms.dat, + trunk/fuse/keysyms.pl, trunk/fuse/lib/Makefile.am, + trunk/fuse/loader.c, trunk/fuse/loader.h, trunk/fuse/machine.c, + trunk/fuse/machine.h, 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/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/Fuse.pm, + trunk/fuse/perl/Fuse/Dialog.pm, trunk/fuse/perl/Fuse/Makefile.am, + trunk/fuse/perl/Makefile.am, trunk/fuse/perl/cpp-perl.pl, + 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/Makefile.am, + trunk/fuse/rzx.c, trunk/fuse/rzx.h, 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/simpleide.c, 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/Makefile.am, trunk/fuse/sound/aosound.c, + trunk/fuse/sound/coreaudiosound.c, trunk/fuse/sound/dxsound.c, + trunk/fuse/sound/lowlevel.h, trunk/fuse/sound/sdlsound.c, + trunk/fuse/sound/sfifo.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/Makefile.am, + 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/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/fbui.c, + 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/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/gtkui.c, trunk/fuse/ui/gtk/memory.c, + trunk/fuse/ui/gtk/options-header.pl, + trunk/fuse/ui/gtk/options.pl, 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/Makefile.am, + trunk/fuse/ui/scaler/scaler.c, trunk/fuse/ui/scaler/scaler.h, + trunk/fuse/ui/scaler/scaler_internals.h, + trunk/fuse/ui/scaler/scalers.cpp, 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/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/Makefile.am, trunk/fuse/ui/win32/debugger.c, + trunk/fuse/ui/win32/debugger.h, trunk/fuse/ui/win32/debugger.rc, + trunk/fuse/ui/win32/error.c, 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/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/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/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/menu.c, trunk/fuse/widget/options-header.pl, + trunk/fuse/widget/options.pl, trunk/fuse/widget/picture.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/Makefile.am, trunk/fuse/z80/coretest.c, + trunk/fuse/z80/harness.pl, trunk/fuse/z80/tests/Makefile.am, + trunk/fuse/z80/z80.c, trunk/fuse/z80/z80.h, + trunk/fuse/z80/z80.pl, trunk/fuse/z80/z80_macros.h, + trunk/fuse/z80/z80_ops.c, trunk/fuse/zxatasp.c, + trunk/fuse/zxatasp.h, trunk/fuse/zxcf.c, trunk/fuse/zxcf.h, + trunk/libspectrum/libspectrum.h, + trunk/libspectrum/libspectrum.xcodeproj/project.pbxproj, + trunk/libspectrum/libspectrum/ChangeLog, + trunk/libspectrum/libspectrum/Makefile.am, + trunk/libspectrum/libspectrum/README, + trunk/libspectrum/libspectrum/accessor.pl, + trunk/libspectrum/libspectrum/autogen.sh, + trunk/libspectrum/libspectrum/bzip2.c, + trunk/libspectrum/libspectrum/configure.in, + trunk/libspectrum/libspectrum/creator.c, + trunk/libspectrum/libspectrum/crypto.c, + trunk/libspectrum/libspectrum/dck.c, + trunk/libspectrum/libspectrum/dll.c, + trunk/libspectrum/libspectrum/doc/Makefile.am, + trunk/libspectrum/libspectrum/doc/cvs-tags, + trunk/libspectrum/libspectrum/doc/libspectrum.3, + trunk/libspectrum/libspectrum/doc/libspectrum.txt, + trunk/libspectrum/libspectrum/hacking/ChangeLog, + trunk/libspectrum/libspectrum/ide.c, + trunk/libspectrum/libspectrum/internals.h, + trunk/libspectrum/libspectrum/libspectrum.c, + trunk/libspectrum/libspectrum/libspectrum.h.in, + trunk/libspectrum/libspectrum/libspectrum.qpg.in, + trunk/libspectrum/libspectrum/make-perl.c, + trunk/libspectrum/libspectrum/microdrive.c, + trunk/libspectrum/libspectrum/myglib/Makefile.am, + trunk/libspectrum/libspectrum/myglib/ghash.c, + trunk/libspectrum/libspectrum/myglib/gslist.c, + trunk/libspectrum/libspectrum/plusd.c, + trunk/libspectrum/libspectrum/rzx.c, + trunk/libspectrum/libspectrum/sna.c, + trunk/libspectrum/libspectrum/snap_accessors.txt, + trunk/libspectrum/libspectrum/snapshot.c, + trunk/libspectrum/libspectrum/snp.c, + trunk/libspectrum/libspectrum/sp.c, + trunk/libspectrum/libspectrum/symbol_table.c, + trunk/libspectrum/libspectrum/szx.c, + trunk/libspectrum/libspectrum/tap.c, + trunk/libspectrum/libspectrum/tape.c, + trunk/libspectrum/libspectrum/tape_accessors.pl, + trunk/libspectrum/libspectrum/tape_accessors.txt, + trunk/libspectrum/libspectrum/tape_block.c, + trunk/libspectrum/libspectrum/tape_block.h, + trunk/libspectrum/libspectrum/tape_set.pl, + trunk/libspectrum/libspectrum/timings.c, + trunk/libspectrum/libspectrum/tzx_read.c, + trunk/libspectrum/libspectrum/tzx_write.c, + trunk/libspectrum/libspectrum/warajevo_read.c, + trunk/libspectrum/libspectrum/z80.c, + trunk/libspectrum/libspectrum/zlib.c, + trunk/libspectrum/libspectrum/zxs.c: Merge in vendor libspectrum + 0.3.0-pre1 and Fuse 0.8.0-pre1 versions. Update + documentation and make adjustments to compensate for upstream + changes. + +2007-01-09 21:02 fredm + + * trunk/fuse/fuse.cpp, trunk/fuse/fuse.h, trunk/fuse/machine.c, + trunk/fuse/sound.c, trunk/fuse/sound.h, trunk/fuse/tape.c: Fix + distorted AY sound on snapshot load. + +2007-01-09 21:00 fredm + + * trunk/fuse/fusepb/English.lproj/InfoPlist.strings, + trunk/fuse/fusepb/Info-Fuse.plist: Move version strings to + 20070110. + +2007-01-09 14:15 fredm + + * trunk/fuse/profile.c: Provide prototype for memset. + +2007-01-09 14:14 fredm + + * trunk/fuse/ui/sdl/sdlkeyboard.c: Also pass on native keysyms to + the input layer. + +2006-12-17 13:51 fredm + + * 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: Merge + up to fuse-20061217. + +2006-12-17 11:37 fredm + + * trunk/fuse/fusepb/controllers/FuseController.m: When starting an + RZX recording from a snapshot, be sure to pass through the + embed snapshot preference. + +2006-12-17 03:13 fredm + + * trunk/fuse/fusepb, trunk/fuse/fusepb/settings_cocoa.h: Don't + ignore settings_cocoa.h and check it in for easier builds from + scratch. + +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/z8... [truncated message content] |
From: <fr...@us...> - 2007-02-06 09:18:49
|
Revision: 303 http://svn.sourceforge.net/fuse-for-macosx/?rev=303&view=rev Author: fredm Date: 2007-02-06 01:18:50 -0800 (Tue, 06 Feb 2007) Log Message: ----------- Make tag for 0.8.0-pre1 release. Added Paths: ----------- tags/Release-0_8_0-pre1/ Copied: tags/Release-0_8_0-pre1 (from rev 302, branches/Release-0_8_0) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2007-02-06 09:16:44
|
Revision: 302 http://svn.sourceforge.net/fuse-for-macosx/?rev=302&view=rev Author: fredm Date: 2007-02-06 01:16:41 -0800 (Tue, 06 Feb 2007) Log Message: ----------- Make branch for 0.8.0 release tree. Added Paths: ----------- branches/Release-0_8_0/ Copied: branches/Release-0_8_0 (from rev 301, trunk) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2007-02-06 09:11:15
|
Revision: 301 http://svn.sourceforge.net/fuse-for-macosx/?rev=301&view=rev Author: fredm Date: 2007-02-06 01:11:11 -0800 (Tue, 06 Feb 2007) Log Message: ----------- Add more to the changes list in the manual. Modified Paths: -------------- trunk/fuse/fusepb/resources/Fuse Help/html/changelog.html Modified: trunk/fuse/fusepb/resources/Fuse Help/html/changelog.html =================================================================== --- trunk/fuse/fusepb/resources/Fuse Help/html/changelog.html 2007-02-05 13:47:35 UTC (rev 300) +++ trunk/fuse/fusepb/resources/Fuse Help/html/changelog.html 2007-02-06 09:11:11 UTC (rev 301) @@ -22,6 +22,8 @@ <li style="list-style-type: none; list-style-image: none; list-style-position: outside;"> <ul> + <li><font face="Lucida Grande,Helvetica,Arial">Fuse for Mac OS X +is now a Universal Binary (Fredrick Meunier).</font></li> <li><font face="Lucida Grande,Helvetica,Arial">Loader improvements: automatically run at full speed while a loader is in progress and automatically start/stop the tape when the @@ -31,7 +33,8 @@ <li><font face="Lucida Grande,Helvetica,Arial">DivIDE support (Matthew Westcott).<br> </font></li> - <li><font face="Lucida Grande,Helvetica,Arial">TS2068 support + <li><font face="Lucida Grande,Helvetica,Arial">Timex TS2068 +support (Fredrick Meunier).</font></li> <li><font face="Lucida Grande,Helvetica,Arial">Interface I and microdrive emulation (Gergely Szasz).</font></li> @@ -47,6 +50,8 @@ </font></li> <li><font face="Lucida Grande,Helvetica,Arial">Spotlight importer for emulator files (TZX, SZX etc.) (Fredrick Meunier).</font></li> + <li><font face="Lucida Grande,Helvetica,Arial">Unified +application preferences panel (Fredrick Meunier).</font></li> <li><font face="Lucida Grande,Helvetica,Arial">Save thumbnail icon images with snapshots and screenshots (Fredrick Meunier).</font></li> @@ -108,8 +113,24 @@ <li><font face="Lucida Grande,Helvetica,Arial">Fix behaviour of ZXATASP and ZXCF on reset (Garry Lancaster).</font></li> <li><font face="Lucida Grande,Helvetica,Arial">Improved -interaction between Media/Tape/Play and tape traps (Darren Salt).<br> - </font></li> +interaction between Media/Tape/Play and tape traps (Darren Salt).</font><br> + </li> + <li><font face="Lucida Grande,Helvetica,Arial">Fallback to the +default ROM if a custom ROM file cannot be found (Fredrick Meunier).</font></li> + <li><font face="Lucida Grande,Helvetica,Arial">Improve the +organisation of the Fuse Help (Fredrick Meunier).</font></li> + <li><font face="Lucida Grande,Helvetica,Arial">Add selection of +snapshot format on Save As... (Fredrick Meunier).</font></li> + <li><font face="Lucida Grande,Helvetica,Arial">Add support for +saving screenshots in png, tiff, jpg and gif formats (Fredrick Meunier).</font></li> + <li><font face="Lucida Grande,Helvetica,Arial">Add tape archive +info drawer to tape browser (Fredrick Meunier).</font></li> + <li><font face="Lucida Grande,Helvetica,Arial">New program icon +(Paul van der Laan).</font></li> + <li><font face="Lucida Grande,Helvetica,Arial">New document icons +(Andrew Owen).</font></li> + <li><font face="Lucida Grande,Helvetica,Arial">Allow custom ROMS +to be reset back to default individually (Fredrick Meunier).</font></li> </ul> </li> <li><font face="Lucida Grande,Helvetica,Arial">Various other minor This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2007-02-05 13:47:43
|
Revision: 300 http://svn.sourceforge.net/fuse-for-macosx/?rev=300&view=rev Author: fredm Date: 2007-02-05 05:47:35 -0800 (Mon, 05 Feb 2007) Log Message: ----------- Merge in vendor libspectrum 0.3.0-pre1 and Fuse 0.8.0-pre1 versions. Update documentation and make adjustments to compensate for upstream changes. Modified Paths: -------------- trunk/FuseImporter/FuseImporter.xcodeproj/project.pbxproj trunk/FuseImporter/LibspectrumMetadataImporter.m trunk/FuseImporter/libspectrum.h trunk/fuse/ChangeLog trunk/fuse/Makefile.am trunk/fuse/README trunk/fuse/autogen.sh trunk/fuse/ay.c trunk/fuse/ay.h trunk/fuse/compat/Makefile.am trunk/fuse/compat/dirname.c trunk/fuse/compat.h trunk/fuse/configure.in trunk/fuse/dck.c trunk/fuse/dck.h 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/Credits.html trunk/fuse/fusepb/English.lproj/InfoPlist.strings trunk/fuse/fusepb/Info-Fuse.plist trunk/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib 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/about.html trunk/fuse/fusepb/resources/Fuse Help/html/changelog.html trunk/fuse/fusepb/resources/Fuse Help/html/filters.html trunk/fuse/fusepb/resources/Fuse Help/html/preferences.html trunk/fuse/fusepb/resources/Fuse Help/html/tocstart.html trunk/fuse/fusepb/settings_cocoa.h trunk/fuse/hacking/ChangeLog trunk/fuse/hacking/Makefile.am trunk/fuse/hacking/cvs-tags 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/keyboard.c trunk/fuse/keyboard.h trunk/fuse/keysyms.dat trunk/fuse/keysyms.pl trunk/fuse/lib/Makefile.am trunk/fuse/loader.c trunk/fuse/loader.h trunk/fuse/machine.c trunk/fuse/machine.h 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/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/Fuse/Dialog.pm trunk/fuse/perl/Fuse/Makefile.am trunk/fuse/perl/Fuse.pm trunk/fuse/perl/Makefile.am trunk/fuse/perl/cpp-perl.pl 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/Makefile.am trunk/fuse/rzx.c trunk/fuse/rzx.h 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/simpleide.c trunk/fuse/slt.c trunk/fuse/slt.h trunk/fuse/snapshot.c trunk/fuse/snapshot.h trunk/fuse/sound/Makefile.am trunk/fuse/sound/aosound.c trunk/fuse/sound/dxsound.c trunk/fuse/sound/lowlevel.h trunk/fuse/sound/sdlsound.c trunk/fuse/sound/sfifo.c trunk/fuse/sound.c trunk/fuse/sound.h 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/Makefile.am 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/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/fbui.c 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/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/gtkui.c trunk/fuse/ui/gtk/memory.c trunk/fuse/ui/gtk/options-header.pl trunk/fuse/ui/gtk/options.pl 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/Makefile.am trunk/fuse/ui/scaler/scaler.c trunk/fuse/ui/scaler/scaler.h trunk/fuse/ui/scaler/scaler_internals.h trunk/fuse/ui/scaler/scalers.cpp 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/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/Makefile.am trunk/fuse/ui/win32/debugger.c trunk/fuse/ui/win32/debugger.h trunk/fuse/ui/win32/debugger.rc trunk/fuse/ui/win32/error.c 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/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/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/ui.c trunk/fuse/uidisplay.c trunk/fuse/ula.c trunk/fuse/ula.h trunk/fuse/utils.c trunk/fuse/utils.h 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/menu.c trunk/fuse/widget/options-header.pl trunk/fuse/widget/options.pl trunk/fuse/widget/picture.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/Makefile.am trunk/fuse/z80/coretest.c trunk/fuse/z80/harness.pl trunk/fuse/z80/tests/Makefile.am trunk/fuse/z80/z80.c trunk/fuse/z80/z80.h trunk/fuse/z80/z80.pl trunk/fuse/z80/z80_macros.h trunk/fuse/z80/z80_ops.c trunk/fuse/zxatasp.c trunk/fuse/zxatasp.h trunk/fuse/zxcf.c trunk/fuse/zxcf.h trunk/libspectrum/libspectrum/ChangeLog trunk/libspectrum/libspectrum/Makefile.am trunk/libspectrum/libspectrum/README trunk/libspectrum/libspectrum/accessor.pl trunk/libspectrum/libspectrum/autogen.sh trunk/libspectrum/libspectrum/bzip2.c trunk/libspectrum/libspectrum/configure.in trunk/libspectrum/libspectrum/creator.c trunk/libspectrum/libspectrum/crypto.c trunk/libspectrum/libspectrum/dck.c trunk/libspectrum/libspectrum/dll.c trunk/libspectrum/libspectrum/doc/Makefile.am trunk/libspectrum/libspectrum/doc/cvs-tags trunk/libspectrum/libspectrum/doc/libspectrum.3 trunk/libspectrum/libspectrum/doc/libspectrum.txt trunk/libspectrum/libspectrum/hacking/ChangeLog trunk/libspectrum/libspectrum/ide.c trunk/libspectrum/libspectrum/internals.h trunk/libspectrum/libspectrum/libspectrum.c trunk/libspectrum/libspectrum/libspectrum.h.in trunk/libspectrum/libspectrum/libspectrum.qpg.in trunk/libspectrum/libspectrum/make-perl.c trunk/libspectrum/libspectrum/microdrive.c trunk/libspectrum/libspectrum/myglib/Makefile.am trunk/libspectrum/libspectrum/myglib/ghash.c trunk/libspectrum/libspectrum/myglib/gslist.c trunk/libspectrum/libspectrum/plusd.c trunk/libspectrum/libspectrum/rzx.c trunk/libspectrum/libspectrum/sna.c trunk/libspectrum/libspectrum/snap_accessors.txt trunk/libspectrum/libspectrum/snapshot.c trunk/libspectrum/libspectrum/snp.c trunk/libspectrum/libspectrum/sp.c trunk/libspectrum/libspectrum/szx.c trunk/libspectrum/libspectrum/tap.c trunk/libspectrum/libspectrum/tape.c trunk/libspectrum/libspectrum/tape_accessors.pl trunk/libspectrum/libspectrum/tape_accessors.txt trunk/libspectrum/libspectrum/tape_block.c trunk/libspectrum/libspectrum/tape_block.h trunk/libspectrum/libspectrum/tape_set.pl trunk/libspectrum/libspectrum/timings.c trunk/libspectrum/libspectrum/tzx_read.c trunk/libspectrum/libspectrum/tzx_write.c trunk/libspectrum/libspectrum/warajevo_read.c trunk/libspectrum/libspectrum/z80.c trunk/libspectrum/libspectrum/zlib.c trunk/libspectrum/libspectrum/zxs.c trunk/libspectrum/libspectrum.h trunk/libspectrum/libspectrum.xcodeproj/project.pbxproj Added Paths: ----------- trunk/fuse/fusepb/resources/Fuse Help/html/divide.html trunk/fuse/sound/coreaudiosound.c trunk/libspectrum/libspectrum/symbol_table.c Modified: trunk/FuseImporter/FuseImporter.xcodeproj/project.pbxproj =================================================================== --- trunk/FuseImporter/FuseImporter.xcodeproj/project.pbxproj 2007-02-04 11:19:24 UTC (rev 299) +++ trunk/FuseImporter/FuseImporter.xcodeproj/project.pbxproj 2007-02-05 13:47:35 UTC (rev 300) @@ -11,6 +11,7 @@ 8D5B49A804867FD3000E48DA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 8D5B49A704867FD3000E48DA /* InfoPlist.strings */; }; B60E533A0827207800F2C004 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = B60E53390827207800F2C004 /* main.m */; }; B60E533C082720EC00F2C004 /* GetMetadataForFile.m in Sources */ = {isa = PBXBuildFile; fileRef = B60E533B082720EC00F2C004 /* GetMetadataForFile.m */; }; + B62C1CD00B761515000BA4E0 /* symbol_table.c in Sources */ = {isa = PBXBuildFile; fileRef = B62C1CCF0B761515000BA4E0 /* symbol_table.c */; }; B639B7930A6BB2C100927E24 /* z80em.c in Sources */ = {isa = PBXBuildFile; fileRef = B639B7920A6BB2C100927E24 /* z80em.c */; }; B6687E140A607F1D005D0FDE /* libspectrum.h.in in Resources */ = {isa = PBXBuildFile; fileRef = B6687E130A607F1D005D0FDE /* libspectrum.h.in */; }; B69709730827C03F00904D8F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B69709720827C03F00904D8F /* Foundation.framework */; }; @@ -110,6 +111,7 @@ 8D576317048677EA00EA77CD /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; }; B60E53390827207800F2C004 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; }; B60E533B082720EC00F2C004 /* GetMetadataForFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GetMetadataForFile.m; sourceTree = "<group>"; }; + B62C1CCF0B761515000BA4E0 /* symbol_table.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = symbol_table.c; path = ../../libspectrum/libspectrum/symbol_table.c; sourceTree = "<group>"; }; B639B7920A6BB2C100927E24 /* z80em.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = z80em.c; path = ../../libspectrum/libspectrum/z80em.c; sourceTree = "<group>"; }; B6687E130A607F1D005D0FDE /* libspectrum.h.in */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = libspectrum.h.in; path = ../../libspectrum/libspectrum/libspectrum.h.in; sourceTree = "<group>"; }; B69709720827C03F00904D8F /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; }; @@ -243,6 +245,7 @@ B6BF2A0B0A5FFD0100D16624 /* snapshot.c */, B6BF2A0C0A5FFD0100D16624 /* snp.c */, B6BF2A0D0A5FFD0100D16624 /* sp.c */, + B62C1CCF0B761515000BA4E0 /* symbol_table.c */, B6BF2A0E0A5FFD0100D16624 /* szx.c */, B6BF2A0F0A5FFD0100D16624 /* tap.c */, B6BF2A100A5FFD0100D16624 /* tape.c */, @@ -388,6 +391,7 @@ B6BF2A340A5FFD0100D16624 /* zlib.c in Sources */, B6BF2A350A5FFD0100D16624 /* zxs.c in Sources */, B639B7930A6BB2C100927E24 /* z80em.c in Sources */, + B62C1CD00B761515000BA4E0 /* symbol_table.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; Modified: trunk/FuseImporter/LibspectrumMetadataImporter.m =================================================================== --- trunk/FuseImporter/LibspectrumMetadataImporter.m 2007-02-04 11:19:24 UTC (rev 299) +++ trunk/FuseImporter/LibspectrumMetadataImporter.m 2007-02-05 13:47:35 UTC (rev 300) @@ -363,6 +363,9 @@ case LIBSPECTRUM_TAPE_BLOCK_RLE_PULSE: break; + + case LIBSPECTRUM_TAPE_BLOCK_GENERALISED_DATA: + break; default: NSLog(@"LibspectrumMetadataImporter: (Sorry -- can't handle that kind of block. Skipping it)\n"); Modified: trunk/FuseImporter/libspectrum.h =================================================================== --- trunk/FuseImporter/libspectrum.h 2007-02-04 11:19:24 UTC (rev 299) +++ trunk/FuseImporter/libspectrum.h 2007-02-05 13:47:35 UTC (rev 300) @@ -1,7 +1,7 @@ /* libspectrum.h: the library for dealing with ZX Spectrum emulator files - Copyright (c) 2001-2006 Philip Kendall, Darren Salt, Fredrick Meunier + Copyright (c) 2001-2007 Philip Kendall, Darren Salt, Fredrick Meunier - $Id: libspectrum.h.in,v 1.134 2006/08/12 13:09:23 pak21 Exp $ + $Id: libspectrum.h.in,v 1.141 2007/02/02 16:35:42 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ @@ -267,7 +266,7 @@ LIBSPECTRUM_ID_HARDDISK_HDF, /* .hdf hard disk image */ LIBSPECTRUM_ID_CARTRIDGE_IF2, /* .rom Interface II cartridge image */ - /* Below here, present only in [FIXME] and later */ + /* Below here, present only in 0.3.0 and later */ LIBSPECTRUM_ID_MICRODRIVE_MDR, /* .mdr microdrive cartridge */ LIBSPECTRUM_ID_TAPE_CSW, /* .csw tape image */ @@ -298,7 +297,7 @@ LIBSPECTRUM_CLASS_HARDDISK, /* A hard disk image */ LIBSPECTRUM_CLASS_CARTRIDGE_IF2, /* Interface II cartridges */ - /* Below here, present only in [FIXME] and later */ + /* Below here, present only in 0.3.0 and later */ LIBSPECTRUM_CLASS_MICRODRIVE, /* Microdrive cartridges */ @@ -688,6 +687,8 @@ LIBSPECTRUM_TAPE_BLOCK_PURE_DATA, LIBSPECTRUM_TAPE_BLOCK_RAW_DATA, + LIBSPECTRUM_TAPE_BLOCK_GENERALISED_DATA = 0x19, + LIBSPECTRUM_TAPE_BLOCK_PAUSE = 0x20, LIBSPECTRUM_TAPE_BLOCK_GROUP_START, LIBSPECTRUM_TAPE_BLOCK_GROUP_END, @@ -715,6 +716,7 @@ } libspectrum_tape_type; typedef struct libspectrum_tape_block libspectrum_tape_block; +typedef struct libspectrum_tape_generalised_data_symbol_table libspectrum_tape_generalised_data_symbol_table; /* Something to step through all the blocks in a tape */ typedef struct _GSList *libspectrum_tape_iterator; @@ -723,6 +725,9 @@ extern const int WIN32_DLL LIBSPECTRUM_TAPE_FLAGS_BLOCK; /* End of block */ extern const int WIN32_DLL LIBSPECTRUM_TAPE_FLAGS_STOP; /* Stop tape */ extern const int WIN32_DLL LIBSPECTRUM_TAPE_FLAGS_STOP48; /* Stop tape if in 48K mode */ +extern const int WIN32_DLL LIBSPECTRUM_TAPE_FLAGS_NO_EDGE; /* Edge isn't really an edge */ +extern const int WIN32_DLL LIBSPECTRUM_TAPE_FLAGS_LEVEL_LOW; /* Set level low */ +extern const int WIN32_DLL LIBSPECTRUM_TAPE_FLAGS_LEVEL_HIGH; /* Set level high */ /* The states which a block can be in */ typedef enum libspectrum_tape_state_type { @@ -769,12 +774,16 @@ libspectrum_error WIN32_DLL libspectrum_tape_block_set_bit1_length( libspectrum_tape_block *block, libspectrum_dword bit1_length ); size_t WIN32_DLL libspectrum_tape_block_bits_in_last_byte( libspectrum_tape_block *block ); libspectrum_error WIN32_DLL libspectrum_tape_block_set_bits_in_last_byte( libspectrum_tape_block *block, size_t bits_in_last_byte ); +size_t WIN32_DLL libspectrum_tape_block_bits_per_data_symbol( libspectrum_tape_block *block ); +libspectrum_error WIN32_DLL libspectrum_tape_block_set_bits_per_data_symbol( libspectrum_tape_block *block, size_t bits_per_data_symbol ); size_t WIN32_DLL libspectrum_tape_block_count( libspectrum_tape_block *block ); libspectrum_error WIN32_DLL libspectrum_tape_block_set_count( libspectrum_tape_block *block, size_t count ); libspectrum_byte WIN32_DLL * libspectrum_tape_block_data( libspectrum_tape_block *block ); libspectrum_error WIN32_DLL libspectrum_tape_block_set_data( libspectrum_tape_block *block, libspectrum_byte* data ); size_t WIN32_DLL libspectrum_tape_block_data_length( libspectrum_tape_block *block ); libspectrum_error WIN32_DLL libspectrum_tape_block_set_data_length( libspectrum_tape_block *block, size_t data_length ); +libspectrum_tape_generalised_data_symbol_table WIN32_DLL * libspectrum_tape_block_data_table( libspectrum_tape_block *block ); +libspectrum_error WIN32_DLL libspectrum_tape_block_set_data_table( libspectrum_tape_block *block, libspectrum_tape_generalised_data_symbol_table* data_table ); int WIN32_DLL libspectrum_tape_block_ids( libspectrum_tape_block *block, size_t idx ); libspectrum_error WIN32_DLL libspectrum_tape_block_set_ids( libspectrum_tape_block *block, int *ids ); int WIN32_DLL libspectrum_tape_block_offset( libspectrum_tape_block *block ); @@ -787,6 +796,12 @@ libspectrum_error WIN32_DLL libspectrum_tape_block_set_pilot_length( libspectrum_tape_block *block, libspectrum_dword pilot_length ); size_t WIN32_DLL libspectrum_tape_block_pilot_pulses( libspectrum_tape_block *block ); libspectrum_error WIN32_DLL libspectrum_tape_block_set_pilot_pulses( libspectrum_tape_block *block, size_t pilot_pulses ); +libspectrum_word WIN32_DLL libspectrum_tape_block_pilot_repeats( libspectrum_tape_block *block, size_t idx ); +libspectrum_error WIN32_DLL libspectrum_tape_block_set_pilot_repeats( libspectrum_tape_block *block, libspectrum_word *pilot_repeats ); +libspectrum_byte WIN32_DLL libspectrum_tape_block_pilot_symbols( libspectrum_tape_block *block, size_t idx ); +libspectrum_error WIN32_DLL libspectrum_tape_block_set_pilot_symbols( libspectrum_tape_block *block, libspectrum_byte *pilot_symbols ); +libspectrum_tape_generalised_data_symbol_table WIN32_DLL * libspectrum_tape_block_pilot_table( libspectrum_tape_block *block ); +libspectrum_error WIN32_DLL libspectrum_tape_block_set_pilot_table( libspectrum_tape_block *block, libspectrum_tape_generalised_data_symbol_table* pilot_table ); libspectrum_dword WIN32_DLL libspectrum_tape_block_pulse_length( libspectrum_tape_block *block ); libspectrum_error WIN32_DLL libspectrum_tape_block_set_pulse_length( libspectrum_tape_block *block, libspectrum_dword pulse_length ); libspectrum_dword WIN32_DLL libspectrum_tape_block_pulse_lengths( libspectrum_tape_block *block, size_t idx ); @@ -891,6 +906,8 @@ libspectrum_warajevo_read( libspectrum_tape *tape, const libspectrum_byte *buffer, size_t length ); +/*** Routines for iterating through a tape ***/ + libspectrum_tape_block WIN32_DLL * libspectrum_tape_iterator_init( libspectrum_tape_iterator *iterator, libspectrum_tape *tape ); @@ -898,6 +915,29 @@ libspectrum_tape_block WIN32_DLL * libspectrum_tape_iterator_next( libspectrum_tape_iterator *iterator ); +/*** Routines for handling the TZX generalised data block symbol table + structure ***/ + +typedef enum libspectrum_tape_generalised_data_symbol_edge_type { + + LIBSPECTRUM_TAPE_GENERALISED_DATA_SYMBOL_EDGE = 0x00, + LIBSPECTRUM_TAPE_GENERALISED_DATA_SYMBOL_NO_EDGE, + LIBSPECTRUM_TAPE_GENERALISED_DATA_SYMBOL_LOW, + LIBSPECTRUM_TAPE_GENERALISED_DATA_SYMBOL_HIGH, + +} libspectrum_tape_generalised_data_symbol_edge_type; + +typedef struct libspectrum_tape_generalised_data_symbol libspectrum_tape_generalised_data_symbol; + +libspectrum_dword libspectrum_tape_generalised_data_symbol_table_symbols_in_block( const libspectrum_tape_generalised_data_symbol_table *table ); +libspectrum_byte libspectrum_tape_generalised_data_symbol_table_max_pulses( const libspectrum_tape_generalised_data_symbol_table *table ); +libspectrum_word libspectrum_tape_generalised_data_symbol_table_symbols_in_table( const libspectrum_tape_generalised_data_symbol_table *table ); +libspectrum_tape_generalised_data_symbol* libspectrum_tape_generalised_data_symbol_table_symbol( const libspectrum_tape_generalised_data_symbol_table *table, size_t which ); + +libspectrum_tape_generalised_data_symbol_edge_type libspectrum_tape_generalised_data_symbol_type( const libspectrum_tape_generalised_data_symbol *symbol ); +libspectrum_word libspectrum_tape_generalised_data_symbol_pulse( const libspectrum_tape_generalised_data_symbol *symbol, size_t which ); + + /* * Input recording routines */ @@ -972,19 +1012,7 @@ libspectrum_error WIN32_DLL libspectrum_rzx_alloc( libspectrum_rzx **rzx ); -/*** Routines for Z80Em raw tape format files ***/ - -libspectrum_error -libspectrum_z80em_read( libspectrum_tape *tape, - const libspectrum_byte *buffer, size_t length ); - -/*** Routines for CSW raw tape format files ***/ - -libspectrum_error -libspectrum_csw_read( libspectrum_tape *tape, - const libspectrum_byte *buffer, size_t length ); - -/* Something to step through all the blocks in a tape */ +/* Something to step through all the blocks in an input recording */ typedef struct _GSList *libspectrum_rzx_iterator; /* The block types which can appear in RZX files */ @@ -1011,23 +1039,11 @@ size_t WIN32_DLL libspectrum_rzx_iterator_get_frames( libspectrum_rzx_iterator it ); -/*** Routines for Z80Em and CSW raw tape files ***/ - -libspectrum_error WIN32_DLL -libspectrum_z80em_create( libspectrum_tape *tape, - const libspectrum_byte *buffer, - const size_t length ); - -libspectrum_error WIN32_DLL -libspectrum_csw_create( libspectrum_tape *tape, - const libspectrum_byte *buffer, const size_t length ); - /* * Microdrive image handling routines */ typedef struct libspectrum_microdrive libspectrum_microdrive; -typedef struct libspectrum_microdrive_block libspectrum_microdrive_block; #define LIBSPECTRUM_MICRODRIVE_BLOCK_MAX 254 #define LIBSPECTRUM_MICRODRIVE_HEAD_LEN 15 @@ -1066,15 +1082,6 @@ libspectrum_microdrive_set_cartridge_len( libspectrum_microdrive *microdrive, libspectrum_byte len ); -void WIN32_DLL -libspectrum_microdrive_get_block( const libspectrum_microdrive *microdrive, - libspectrum_byte which, - libspectrum_microdrive_block *block ); -void WIN32_DLL -libspectrum_microdrive_set_block( libspectrum_microdrive *microdrive, - libspectrum_byte which, - libspectrum_microdrive_block *block ); - /* .mdr format routines */ int WIN32_DLL Modified: trunk/fuse/ChangeLog =================================================================== --- trunk/fuse/ChangeLog 2007-02-04 11:19:24 UTC (rev 299) +++ trunk/fuse/ChangeLog 2007-02-05 13:47:35 UTC (rev 300) @@ -1,30 +1,56 @@ -2005-??-?? Philip Kendall <pak...@sr...> +2007-??-?? Philip Kendall <phi...@sh...> + * Fuse 0.8.0 released + * New features: + * Loader improvements: automatically run at full speed while + a loader is in progress and automatically start/stop the tape + when the start/end of a loader is detected (Philip Kendall). * RZX 'rollback' support (Philip Kendall). + * DivIDE support (Matthew Westcott) + * Interface I and microdrive emulation (Gergely Szasz). * TS2068 support (Fredrick Meunier). - * Interface I and microdrive emulation (Gergely Szasz). * Kempston mouse emulation (Darren Salt). + * TZX generalized data block (0x19) support (Philip Kendall). + * Much improved widget UI, including allowing selection of + filenames (Darren Salt, Gergely Szasz). * Allow SDL full screen mode to be used (Darren Salt). * Add the ability to save 'movies' as collections of screenshots (Gergely Szasz). * Widget pokefinder (Darren Salt). * Add a simple code profiler (Philip Kendall). * New libao sound driver (Gergely Szasz). + * New CoreAudio sound driver (Fredrick Meunier). + * New PALTV 1-3x and TV3x graphics scalers (Gergely Szasz). * Emulation core improvements: * Improved screen rendering code (now character accurate rather - than line accurate) (Philip Kendall). + than line accurate) (Philip Kendall, Fredrick Meunier). + * Corrections to write ordering and contention for EX (SP),HL, + EX (SP),IX and EX (SP),IY (Philip Kendall; thanks, Mark + Woodmass). + * Corrections to contention for OTIR and OTDR (Philip Kendall; + thanks, Mark Woodmass). + * IR contention (Philip Kendall; thanks, Mark Woodmass). + * Flag bits 3 and 5 are copied on all BIT instructions (Philip + Kendall; thanks, Mark Woodmass). * Improved ULA emulation with respect to interrupt length (thanks, Jon Needle, Ramsoft and Mark Woodmass) (Philip Kendall). + * Fix timings of shifted no operation opcodes (Philip Kendall). + * An interrupt in IM 0 takes 13 tstates to acknowledge, not 12 + (Philip Kendall). * Improved speed control code (Fredrick Meunier). * Miscellaneous: - * Allow filenames to be selected from the widget UIs (Darren - Salt). * Add a 'save, don't save, cancel' confirmation dialog before any changes to media are lost under the GTK+ UIs (Philip Kendall). + * On the Pentagon, page in the TR-DOS ROM on NMI, allowing the + snapshot function to work (Philip Kendall). On the Scorpion, + page in ROM 2, allowing the monitor to work (thanks, Erik + Kunze). + * Default snapshot format is now .szx rather than .z80 (Fredrick + Meunier) * Store current joystick information in snapshots (Fredrick Meunier). * Optional use of doublescan modes in the framebuffer and @@ -35,11 +61,8 @@ * Use stock button icons in the GTK+ 2.x UI (Darren Salt). * Save/restore the 'issue 2 keyboard' flag from snapshots (Philip Kendall). - * Deactivate widget menu items when they are inappropriate - (Darren Salt). * Correctly quote '-' characters in the man page (needed for UTF-8 environments) (Darren Salt, Stuart Brady). - * Widget query confirmation dialog (Darren Salt). * Use separate menus for controlling +3 and TR-DOS disks (Philip Kendall). * Fix behaviour of ZXATASP and ZXCF on reset (Garry Lancaster). @@ -50,9 +73,13 @@ (Darren Salt). * Various minor improvements to the framebuffer UI (Darren Salt). + * Various fixes to allow compilation with gcc 4.x (Philip + Kendall). - * Various other minor bugfixes (Fredrick Meunier, Philip Kendall, - Mark Round, Darren Salt, Paul van der Laan). + * Various other minor bugfixes (Philip Kendall, Fredrick Meunier, + Jon Needle, Markus Oberhumer, Mark Round, Darren Salt, Gergely + Szasz, Paul van der Laan and other people to whom I apologise + for forgetting). 2004-07-16 Philip Kendall <pak...@sr...> @@ -756,4 +783,4 @@ * Version 0.1.0 released. -$Id: ChangeLog,v 1.42 2005/03/26 17:24:54 pak21 Exp $ +$Id: ChangeLog,v 1.46 2007/02/02 16:21:50 pak21 Exp $ Modified: trunk/fuse/Makefile.am =================================================================== --- trunk/fuse/Makefile.am 2007-02-04 11:19:24 UTC (rev 299) +++ trunk/fuse/Makefile.am 2007-02-05 13:47:35 UTC (rev 300) @@ -1,7 +1,7 @@ ## Process this file with automake to produce Makefile.in ## Copyright (c) 1999-2004 Philip Kendall -## $Id: Makefile.am,v 1.118 2006/07/30 19:00:40 pak21 Exp $ +## $Id: Makefile.am,v 1.120 2007/02/02 16:21:50 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 @@ -19,8 +19,7 @@ ## ## Author contact information: ## -## E-mail: pak...@sr... -## Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England +## E-mail: phi...@sh... AUTOMAKE_OPTIONS = foreign @@ -107,6 +106,7 @@ @GLIB_LIBS@ \ @PNG_LIBS@ \ @AO_LIBS@ \ +@COREAUDIO_LIBS@ \ @X_LIBS@ \ @XML_LIBS@ \ compat/libcompat.a Modified: trunk/fuse/README =================================================================== --- trunk/fuse/README 2007-02-04 11:19:24 UTC (rev 299) +++ trunk/fuse/README 2007-02-05 13:47:35 UTC (rev 300) @@ -136,7 +136,7 @@ the Usenet group 'comp.sys.sinclair', but do read the FAQ ( http://www.worldofspectrum.org/faq/index.html ) first! -Philip Kendall <pak...@sr...> +Philip Kendall <phi...@sh...> 16 July 2004 -$Id: README,v 1.39 2004/07/15 10:42:29 pak21 Exp $ +$Id: README,v 1.40 2007/02/02 16:21:50 pak21 Exp $ Modified: trunk/fuse/autogen.sh =================================================================== --- trunk/fuse/autogen.sh 2007-02-04 11:19:24 UTC (rev 299) +++ trunk/fuse/autogen.sh 2007-02-05 13:47:35 UTC (rev 300) @@ -3,7 +3,7 @@ # autogen.sh: autotools invocation # Copyright (c) 2004 Philip Kendall -# $Id: autogen.sh,v 1.4 2005/12/24 16:18:18 pak21 Exp $ +# $Id: autogen.sh,v 1.5 2007/02/02 16:21:50 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 @@ -21,8 +21,7 @@ # Author contact information: -# E-mail: Philip Kendall <pak...@sr...> -# Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England +# E-mail: Philip Kendall <phi...@sh...> # Exit on errors set -e Modified: trunk/fuse/ay.c =================================================================== --- trunk/fuse/ay.c 2007-02-04 11:19:24 UTC (rev 299) +++ trunk/fuse/ay.c 2007-02-05 13:47:35 UTC (rev 300) @@ -1,7 +1,7 @@ /* ay.c: AY-8-3912 routines Copyright (c) 1999-2004 Philip Kendall - $Id: ay.c,v 1.25 2004/06/15 09:48:40 pak21 Exp $ + $Id: ay.c,v 1.26 2007/02/02 16:21:50 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ Modified: trunk/fuse/ay.h =================================================================== --- trunk/fuse/ay.h 2007-02-04 11:19:24 UTC (rev 299) +++ trunk/fuse/ay.h 2007-02-05 13:47:35 UTC (rev 300) @@ -1,7 +1,7 @@ /* ay.h: AY-8-3912 routines Copyright (c) 1999-2004 Philip Kendall - $Id: ay.h,v 1.15 2004/06/15 09:48:40 pak21 Exp $ + $Id: ay.h,v 1.16 2007/02/02 16:21:50 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ Modified: trunk/fuse/compat/Makefile.am =================================================================== --- trunk/fuse/compat/Makefile.am 2007-02-04 11:19:24 UTC (rev 299) +++ trunk/fuse/compat/Makefile.am 2007-02-05 13:47:35 UTC (rev 300) @@ -1,7 +1,7 @@ ## Process this file with automake to produce Makefile.in ## Copyright (c) 2003 Philip Kendall -## $Id: Makefile.am,v 1.5 2004/03/28 09:55:50 pak21 Exp $ +## $Id: Makefile.am,v 1.6 2007/02/02 16:21:53 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 @@ -19,8 +19,7 @@ ## ## Author contact information: ## -## E-mail: pak...@sr... -## Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England +## E-mail: phi...@sh... AUTOMAKE_OPTIONS = foreign Modified: trunk/fuse/compat/dirname.c =================================================================== --- trunk/fuse/compat/dirname.c 2007-02-04 11:19:24 UTC (rev 299) +++ trunk/fuse/compat/dirname.c 2007-02-05 13:47:35 UTC (rev 300) @@ -20,8 +20,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ Modified: trunk/fuse/compat.h =================================================================== --- trunk/fuse/compat.h 2007-02-04 11:19:24 UTC (rev 299) +++ trunk/fuse/compat.h 2007-02-05 13:47:35 UTC (rev 300) @@ -1,7 +1,7 @@ /* compat.h: various compatbility bits Copyright (c) 2003 Philip Kendall - $Id: compat.h,v 1.6 2004/04/11 10:13:22 pak21 Exp $ + $Id: compat.h,v 1.7 2007/02/02 16:21:50 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ Modified: trunk/fuse/configure.in =================================================================== --- trunk/fuse/configure.in 2007-02-04 11:19:24 UTC (rev 299) +++ trunk/fuse/configure.in 2007-02-05 13:47:35 UTC (rev 300) @@ -1,5 +1,5 @@ dnl Process this file with autoconf to produce a configure script. -dnl $Id: configure.in,v 1.151 2005/03/06 05:30:27 fredm Exp $ +dnl $Id: configure.in,v 1.155 2007/02/02 16:21:50 pak21 Exp $ dnl This program is free software; you can redistribute it and/or modify dnl it under the terms of the GNU General Public License as published by @@ -17,8 +17,7 @@ dnl dnl Author contact information: dnl -dnl E-mail: pak...@sr... -dnl Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England +dnl E-mail: phi...@sh... AC_INIT(fuse.cpp) AM_CONFIG_HEADER(config.h) @@ -398,8 +397,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 +405,14 @@ AC_SUBST(AO_LIBS) fi +dnl Check if CoreAudio is available +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: trunk/fuse/dck.c =================================================================== --- trunk/fuse/dck.c 2007-02-04 11:19:24 UTC (rev 299) +++ trunk/fuse/dck.c 2007-02-05 13:47:35 UTC (rev 300) @@ -1,7 +1,7 @@ /* dck.c: dock snapshot (Warajevo .DCK) handling routines Copyright (c) 2003-2004 Darren Salt, Fredrick Meunier, Philip Kendall - $Id: dck.c,v 1.21 2004/05/25 10:05:05 fredm Exp $ + $Id: dck.c,v 1.22 2007/02/02 16:21:50 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 @@ -19,8 +19,7 @@ Author contact information: - Philip: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + Philip: phi...@sh... Darren: li...@yo... Fred: fr...@sp... Modified: trunk/fuse/dck.h =================================================================== --- trunk/fuse/dck.h 2007-02-04 11:19:24 UTC (rev 299) +++ trunk/fuse/dck.h 2007-02-05 13:47:35 UTC (rev 300) @@ -1,7 +1,7 @@ /* dck.c: dock snapshot (Warajevo .DCK) handling routines Copyright (c) 2003 Darren Salt, Fredrick Meunier - $Id: dck.h,v 1.2 2004/05/25 10:05:06 fredm Exp $ + $Id: dck.h,v 1.3 2007/02/02 16:21:50 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 @@ -19,8 +19,7 @@ Author contact information: - Philip: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + Philip: phi...@sh... Darren: li...@yo... Fred: fr...@sp... Modified: trunk/fuse/debugger/Makefile.am =================================================================== --- trunk/fuse/debugger/Makefile.am 2007-02-04 11:19:24 UTC (rev 299) +++ trunk/fuse/debugger/Makefile.am 2007-02-05 13:47:35 UTC (rev 300) @@ -1,7 +1,7 @@ ## Process this file with automake to produce Makefile.in ## Copyright (c) 2001-2004 Philip Kendall -## $Id: Makefile.am,v 1.12 2004/07/09 17:38:06 pak21 Exp $ +## $Id: Makefile.am,v 1.13 2007/02/02 16:21:53 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 @@ -19,8 +19,7 @@ ## ## Author contact information: ## -## E-mail: pak...@sr... -## Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England +## E-mail: phi...@sh... AUTOMAKE_OPTIONS = foreign Modified: trunk/fuse/debugger/breakpoint.c =================================================================== --- trunk/fuse/debugger/breakpoint.c 2007-02-04 11:19:24 UTC (rev 299) +++ trunk/fuse/debugger/breakpoint.c 2007-02-05 13:47:35 UTC (rev 300) @@ -1,7 +1,7 @@ /* breakpoint.c: a debugger breakpoint Copyright (c) 2002-2004 Philip Kendall - $Id: breakpoint.c,v 1.8 2006/12/15 20:50:47 pak21 Exp $ + $Id: breakpoint.c,v 1.9 2007/02/02 16:21:53 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ Modified: trunk/fuse/debugger/breakpoint.h =================================================================== --- trunk/fuse/debugger/breakpoint.h 2007-02-04 11:19:24 UTC (rev 299) +++ trunk/fuse/debugger/breakpoint.h 2007-02-05 13:47:35 UTC (rev 300) @@ -1,7 +1,7 @@ /* breakpoint.h: a debugger breakpoint Copyright (c) 2002-2004 Philip Kendall - $Id: breakpoint.h,v 1.4 2004/05/14 22:05:57 pak21 Exp $ + $Id: breakpoint.h,v 1.5 2007/02/02 16:21:53 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ Modified: trunk/fuse/debugger/command.c =================================================================== --- trunk/fuse/debugger/command.c 2007-02-04 11:19:24 UTC (rev 299) +++ trunk/fuse/debugger/command.c 2007-02-05 13:47:35 UTC (rev 300) @@ -1,7 +1,7 @@ /* command.c: Parse a debugger command Copyright (c) 2002 Philip Kendall - $Id: command.c,v 1.16 2003/12/02 14:56:32 pak21 Exp $ + $Id: command.c,v 1.17 2007/02/02 16:21:53 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ Modified: trunk/fuse/debugger/commandl.l =================================================================== --- trunk/fuse/debugger/commandl.l 2007-02-04 11:19:24 UTC (rev 299) +++ trunk/fuse/debugger/commandl.l 2007-02-05 13:47:35 UTC (rev 300) @@ -1,7 +1,7 @@ /* commandl.l: Debugger command lexical scanner Copyright (c) 2002 Philip Kendall - $Id: commandl.l,v 1.36 2004/06/16 14:46:34 pak21 Exp $ + $Id: commandl.l,v 1.37 2007/02/02 16:21:53 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ Modified: trunk/fuse/debugger/commandy.y =================================================================== --- trunk/fuse/debugger/commandy.y 2007-02-04 11:19:24 UTC (rev 299) +++ trunk/fuse/debugger/commandy.y 2007-02-05 13:47:35 UTC (rev 300) @@ -1,7 +1,7 @@ /* commandy.y: Parse a debugger command Copyright (c) 2002-2004 Philip Kendall - $Id: commandy.y,v 1.42 2004/06/16 14:46:34 pak21 Exp $ + $Id: commandy.y,v 1.43 2007/02/02 16:21:53 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ Modified: trunk/fuse/debugger/debugger.c =================================================================== --- trunk/fuse/debugger/debugger.c 2007-02-04 11:19:24 UTC (rev 299) +++ trunk/fuse/debugger/debugger.c 2007-02-05 13:47:35 UTC (rev 300) @@ -1,7 +1,7 @@ /* debugger.h: Fuse's monitor/debugger Copyright (c) 2002-2004 Philip Kendall - $Id: debugger.c,v 1.35 2004/12/29 13:11:16 pak21 Exp $ + $Id: debugger.c,v 1.36 2007/02/02 16:21:53 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ Modified: trunk/fuse/debugger/debugger.h =================================================================== --- trunk/fuse/debugger/debugger.h 2007-02-04 11:19:24 UTC (rev 299) +++ trunk/fuse/debugger/debugger.h 2007-02-05 13:47:35 UTC (rev 300) @@ -1,7 +1,7 @@ /* debugger.h: Fuse's monitor/debugger Copyright (c) 2002-2004 Philip Kendall - $Id: debugger.h,v 1.25 2004/02/26 20:03:09 pak21 Exp $ + $Id: debugger.h,v 1.26 2007/02/02 16:21:53 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ Modified: trunk/fuse/debugger/debugger_internals.h =================================================================== --- trunk/fuse/debugger/debugger_internals.h 2007-02-04 11:19:24 UTC (rev 299) +++ trunk/fuse/debugger/debugger_internals.h 2007-02-05 13:47:35 UTC (rev 300) @@ -1,7 +1,7 @@ /* debugger_internals.h: The internals of Fuse's monitor/debugger Copyright (c) 2002-2003 Philip Kendall - $Id: debugger_internals.h,v 1.25 2004/06/16 14:46:34 pak21 Exp $ + $Id: debugger_internals.h,v 1.26 2007/02/02 16:21:53 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ Modified: trunk/fuse/debugger/disassemble.c =================================================================== --- trunk/fuse/debugger/disassemble.c 2007-02-04 11:19:24 UTC (rev 299) +++ trunk/fuse/debugger/disassemble.c 2007-02-05 13:47:35 UTC (rev 300) @@ -1,7 +1,7 @@ /* disassemble.h: Fuse's disassembler Copyright (c) 2002-2003 Darren Salt, Philip Kendall - $Id: disassemble.c,v 1.10 2003/11/14 11:46:47 pak21 Exp $ + $Id: disassemble.c,v 1.11 2007/02/02 16:21:53 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 @@ -21,8 +21,7 @@ Darren: li...@yo... - Philip: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + Philip: phi...@sh... */ Modified: trunk/fuse/debugger/expression.c =================================================================== --- trunk/fuse/debugger/expression.c 2007-02-04 11:19:24 UTC (rev 299) +++ trunk/fuse/debugger/expression.c 2007-02-05 13:47:35 UTC (rev 300) @@ -1,7 +1,7 @@ /* expression.c: A numeric expression Copyright (c) 2003 Philip Kendall - $Id: expression.c,v 1.13 2004/06/16 14:05:38 pak21 Exp $ + $Id: expression.c,v 1.14 2007/02/02 16:21:53 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ Modified: trunk/fuse/display.c =================================================================== --- trunk/fuse/display.c 2007-02-04 11:19:24 UTC (rev 299) +++ trunk/fuse/display.c 2007-02-05 13:47:35 UTC (rev 300) @@ -2,7 +2,7 @@ Copyright (c) 1999-2006 Philip Kendall, Thomas Harte, Witold Filipczyk and Fredrick Meunier - $Id: display.c,v 1.57 2006/09/17 00:56:18 fredm Exp $ + $Id: display.c,v 1.59 2007/02/02 16:21:50 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 @@ -20,8 +20,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ @@ -647,7 +646,7 @@ critical_region_x = beam_x; } -static void +inline static void get_beam_position( int *x, int *y ) { if( tstates < machine_current->line_times[ 0 ] ) { @@ -691,7 +690,7 @@ /* Mark the 8-pixel chunk at (x,y) as maybe dirty and update the critical region as appropriate */ -static void +inline static void display_dirty_chunk( int x, int y ) { /* If the write is between the start of the critical region and the Modified: trunk/fuse/display.h =================================================================== --- trunk/fuse/display.h 2007-02-04 11:19:24 UTC (rev 299) +++ trunk/fuse/display.h 2007-02-05 13:47:35 UTC (rev 300) @@ -1,7 +1,7 @@ /* display.h: Routines for printing the Spectrum's screen Copyright (c) 1999-2006 Philip Kendall - $Id: display.h,v 1.26 2006/09/17 00:56:18 fredm Exp $ + $Id: display.h,v 1.27 2007/02/02 16:21:50 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ Modified: trunk/fuse/divide.c =================================================================== --- trunk/fuse/divide.c 2007-02-04 11:19:24 UTC (rev 299) +++ trunk/fuse/divide.c 2007-02-05 13:47:35 UTC (rev 300) @@ -1,7 +1,7 @@ /* divide.c: DivIDE interface routines Copyright (c) 2005 Matthew Westcott - $Id: divide.c,v 1.2 2005/10/31 12:09:10 pak21 Exp $ + $Id: divide.c,v 1.3 2007/02/02 16:21:51 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: Philip Kendall <pak...@sr...> - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: Philip Kendall <phi...@sh...> */ Modified: trunk/fuse/divide.h =================================================================== --- trunk/fuse/divide.h 2007-02-04 11:19:24 UTC (rev 299) +++ trunk/fuse/divide.h 2007-02-05 13:47:35 UTC (rev 300) @@ -17,8 +17,7 @@ Author contact information: - E-mail: Philip Kendall <pak...@sr...> - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: Philip Kendall <phi...@sh...> */ Modified: trunk/fuse/event.c =================================================================== --- trunk/fuse/event.c 2007-02-04 11:19:24 UTC (rev 299) +++ trunk/fuse/event.c 2007-02-05 13:47:35 UTC (rev 300) @@ -1,7 +1,7 @@ /* event.c: Routines needed for dealing with the event list Copyright (c) 2000-2004 Philip Kendall - $Id: event.c,v 1.56 2006/09/03 14:12:22 fredm Exp $ + $Id: event.c,v 1.57 2007/02/02 16:21:51 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ Modified: trunk/fuse/event.h =================================================================== --- trunk/fuse/event.h 2007-02-04 11:19:24 UTC (rev 299) +++ trunk/fuse/event.h 2007-02-05 13:47:35 UTC (rev 300) @@ -1,7 +1,7 @@ /* event.h: Routines needed for dealing with the event list Copyright (c) 2000-2004 Philip Kendall - $Id: event.h,v 1.24 2006/08/06 10:41:52 pak21 Exp $ + $Id: event.h,v 1.25 2007/02/02 16:21:51 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ Modified: trunk/fuse/fuse.cpp =================================================================== --- trunk/fuse/fuse.cpp 2007-02-04 11:19:24 UTC (rev 299) +++ trunk/fuse/fuse.cpp 2007-02-05 13:47:35 UTC (rev 300) @@ -1,7 +1,7 @@ /* fuse.c: The Free Unix Spectrum Emulator Copyright (c) 1999-2005 Philip Kendall - $Id: fuse.c,v 1.130 2006/07/28 15:06:14 fredm Exp $ + $Id: fuse.c,v 1.133 2007/02/02 16:21:51 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ @@ -370,7 +369,7 @@ printf( "\n" ); fuse_show_version(); printf( - "Copyright (c) 1999-2005 Philip Kendall <pak...@sr...>\n" + "Copyright (c) 1999-2005 Philip Kendall <phi...@sh...>\n" "and others; see the file 'AUTHORS' for more details.\n" "\n" "This program is distributed in the hope that it will be useful,\n" @@ -714,6 +713,7 @@ simpleide_end(); zxatasp_end(); zxcf_end(); + if1_end(); divide_end(); timer_end(); Modified: trunk/fuse/fuse.h =================================================================== --- trunk/fuse/fuse.h 2007-02-04 11:19:24 UTC (rev 299) +++ trunk/fuse/fuse.h 2007-02-05 13:47:35 UTC (rev 300) @@ -1,7 +1,7 @@ /* fuse.h: Variables exported from the main file Copyright (c) 2000-2003 Philip Kendall - $Id: fuse.h,v 1.18 2006/07/15 17:33:58 pak21 Exp $ + $Id: fuse.h,v 1.20 2007/02/02 16:21:51 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ Modified: trunk/fuse/fusepb/Credits.html =================================================================== --- trunk/fuse/fusepb/Credits.html 2007-02-04 11:19:24 UTC (rev 299) +++ trunk/fuse/fusepb/Credits.html 2007-02-05 13:47:35 UTC (rev 300) @@ -7,24 +7,15 @@ </head> <body> <p class="MsoNormal"><span style="font-family: Helvetica;" lang="EN-US">Fuse -has its own home page, which you can find at:<br> -<a href="http://fuse-emulator.sourceforge.net/">http://fuse-emulator.sourceforge.net/</a><br> -and contains much of the information listed here.<br> -<br> -News of new versions of Fuse (and other important Fuse-related -announcements) are distributed via the fuse-emulator-announce mailing -list on <a href="http://www.sourceforge.net/">SourceForge</a>; see<br> -<a - href="http://lists.sourceforge.net/lists/listinfo/fuse-emulator-announce">http://lists.sourceforge.net/lists/listinfo/fuse-emulator-announce</a><br> -for details on how to subscribe and the like.<br> -<br> -If you've got any bug reports, suggestions or the like for Fuse, or +for Mac OS X has a home page at:</span></p> +<p class="MsoNormal"><span style="font-family: Helvetica;" lang="EN-US"><a + href="http://fuse-for-macosx.sourceforge.net/">http://fuse-for-macosx.sourceforge.net/</a><br> +</span><br> +<span style="font-family: Helvetica;" lang="EN-US">If you've got any +bug reports, suggestions or the like for Fuse, or just want to get involved in the development, this is coordinated via -the fuse-emulator-devel mailing list,<br> -<a - href="http://lists.sourceforge.net/lists/listinfo/fuse-emulator-devel">http://lists.sourceforge.net/lists/listinfo/fuse-emulator-devel</a><br> -and the Fuse project page on SourceForge,<br> -<a href="http://sourceforge.net/projects/fuse-emulator/">http://sourceforge.net/projects/fuse-emulator/</a><br> +the Fuse for Mac OS X project page on SourceForge,<br> +<a href="http://sourceforge.net/projects/fuse-for-macosx/">http://sourceforge.net/projects/fuse-for-macosx/</a><br> <br> If you're interested in more general Speccy related discussions, visit the Usenet group '<a href="news:comp.sys.sinclair">comp.sys.sinclair</a>', @@ -50,7 +41,8 @@ <li><span style="font-family: Helvetica;" lang="EN-US">Darren Salt: the original versions of the code for +3 emulation, SLT support, MITSHM support (for the Xlib UI), TZX raw data blocks, Spectrum SE support, -and RZX embedded snapshots and compression.</span></li> +RZX embedded snapshots and compression, the Kempston mouse emulation +and made many improvements to the widget code.</span></li> <li><span style="font-family: Helvetica;" lang="EN-US">Alexander Yurchenko: the OpenBSD/Solaris-specific sound code.</span></li> <li><span style="font-family: Helvetica;" lang="EN-US">Fredrick @@ -75,8 +67,7 @@ Filipczyk: TC2068 support and more.</span></li> <li><span style="font-family: Helvetica;" lang="EN-US">Matthew -Wescott: -the AY logging code.</span></li> +Westcott: the AY logging code and the DivIDE emulation.</span></li> <li><span style="font-family: Helvetica;" lang="EN-US">Marek Januszewski: Some patches making Fuse much closer to compiling under Win32, and @@ -85,8 +76,13 @@ <li><span style="font-family: Helvetica;" lang="EN-US">Stuart Brady: for the Scorpion emulation and HP-UX sound support.</span></li> <li><span style="font-family: Helvetica;" lang="EN-US">Garry -Lancaster: The 8-bit IDE, ZXATASP and ZXCF interface +Lancaster: the 8-bit IDE, ZXATASP and ZXCF interface emulations.</span></li> + <li><span style="font-family: Helvetica;" lang="EN-US">Gergely Szasz: +the Interface I and microdrive emulation, the PAL TV scalers, the TV 3x +scaler, the movie logging code, the libao sound code, and made many +improvements to the widget code.<br> + </span></li> <li><span style="font-family: Helvetica;" lang="EN-US">Philip Kendall: everything else.</span></li> </ul> Modified: trunk/fuse/fusepb/English.lproj/InfoPlist.strings =================================================================== (Binary files differ) Modified: trunk/fuse/fusepb/Info-Fuse.plist =================================================================== --- trunk/fuse/fusepb/Info-Fuse.plist 2007-02-04 11:19:24 UTC (rev 299) +++ trunk/fuse/fusepb/Info-Fuse.plist 2007-02-05 13:47:35 UTC (rev 300) @@ -361,11 +361,11 @@ <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleShortVersionString</key> - <string>20070110</string> + <string>0.8.0-pre1</string> <key>CFBundleSignature</key> <string>FUSE</string> <key>CFBundleVersion</key> - <string>20070110... [truncated message content] |
From: <fr...@us...> - 2007-02-04 11:19:26
|
Revision: 299 http://svn.sourceforge.net/fuse-for-macosx/?rev=299&view=rev Author: fredm Date: 2007-02-04 03:19:24 -0800 (Sun, 04 Feb 2007) Log Message: ----------- Tag vendor/fuse/current as vendor/fuse/fuse-0.8.0-pre1. Added Paths: ----------- vendor/fuse/fuse-0.8.0-pre1/ Copied: vendor/fuse/fuse-0.8.0-pre1 (from rev 298, vendor/fuse/current) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2007-02-04 11:16:18
|
Revision: 298 http://svn.sourceforge.net/fuse-for-macosx/?rev=298&view=rev Author: fredm Date: 2007-02-04 03:14:46 -0800 (Sun, 04 Feb 2007) Log Message: ----------- Load . into vendor/fuse/current. Modified Paths: -------------- vendor/fuse/current/ChangeLog vendor/fuse/current/Makefile.am vendor/fuse/current/README vendor/fuse/current/autogen.sh vendor/fuse/current/ay.c vendor/fuse/current/ay.h vendor/fuse/current/compat/Makefile.am vendor/fuse/current/compat/dirname.c vendor/fuse/current/compat.h vendor/fuse/current/configure.in vendor/fuse/current/dck.c vendor/fuse/current/dck.h vendor/fuse/current/debugger/Makefile.am vendor/fuse/current/debugger/breakpoint.c vendor/fuse/current/debugger/breakpoint.h vendor/fuse/current/debugger/command.c vendor/fuse/current/debugger/commandl.l vendor/fuse/current/debugger/commandy.y vendor/fuse/current/debugger/debugger.c vendor/fuse/current/debugger/debugger.h vendor/fuse/current/debugger/debugger_internals.h vendor/fuse/current/debugger/disassemble.c vendor/fuse/current/debugger/expression.c vendor/fuse/current/display.c vendor/fuse/current/display.h vendor/fuse/current/divide.c vendor/fuse/current/divide.h vendor/fuse/current/event.c vendor/fuse/current/event.h vendor/fuse/current/fuse.c vendor/fuse/current/fuse.h vendor/fuse/current/hacking/ChangeLog vendor/fuse/current/hacking/Makefile.am vendor/fuse/current/hacking/cvs-tags vendor/fuse/current/ide.c vendor/fuse/current/ide.h vendor/fuse/current/if1.c vendor/fuse/current/if1.h vendor/fuse/current/if2.c vendor/fuse/current/if2.h vendor/fuse/current/input.c vendor/fuse/current/input.h vendor/fuse/current/joystick.c vendor/fuse/current/joystick.h vendor/fuse/current/keyboard.c vendor/fuse/current/keyboard.h vendor/fuse/current/keysyms.dat vendor/fuse/current/keysyms.pl vendor/fuse/current/lib/Makefile.am vendor/fuse/current/loader.c vendor/fuse/current/loader.h vendor/fuse/current/machine.c vendor/fuse/current/machine.h vendor/fuse/current/machines/Makefile.am vendor/fuse/current/machines/machines.h vendor/fuse/current/machines/pentagon.c vendor/fuse/current/machines/scorpion.c vendor/fuse/current/machines/scorpion.h vendor/fuse/current/machines/spec128.c vendor/fuse/current/machines/spec128.h vendor/fuse/current/machines/spec16.c vendor/fuse/current/machines/spec48.c vendor/fuse/current/machines/spec48.h vendor/fuse/current/machines/spec_se.c vendor/fuse/current/machines/specplus2.c vendor/fuse/current/machines/specplus2a.c vendor/fuse/current/machines/specplus3.c vendor/fuse/current/machines/specplus3.h vendor/fuse/current/machines/specplus3e.c vendor/fuse/current/machines/tc2048.c vendor/fuse/current/machines/tc2068.c vendor/fuse/current/machines/tc2068.h vendor/fuse/current/machines/ts2068.c vendor/fuse/current/man/Makefile.am vendor/fuse/current/man/fuse.1 vendor/fuse/current/memory.c vendor/fuse/current/memory.h vendor/fuse/current/menu.c vendor/fuse/current/menu.h vendor/fuse/current/menu_data.c vendor/fuse/current/menu_data.pl vendor/fuse/current/periph.c vendor/fuse/current/periph.h vendor/fuse/current/perl/Fuse/Dialog.pm vendor/fuse/current/perl/Fuse/Makefile.am vendor/fuse/current/perl/Fuse.pm vendor/fuse/current/perl/Makefile.am vendor/fuse/current/perl/cpp-perl.pl vendor/fuse/current/pokefinder/Makefile.am vendor/fuse/current/pokefinder/pokefinder.c vendor/fuse/current/pokefinder/pokefinder.h vendor/fuse/current/printer.c vendor/fuse/current/printer.h vendor/fuse/current/profile.c vendor/fuse/current/profile.h vendor/fuse/current/psg.c vendor/fuse/current/psg.h vendor/fuse/current/roms/Makefile.am vendor/fuse/current/rzx.c vendor/fuse/current/rzx.h vendor/fuse/current/scld.c vendor/fuse/current/screenshot.c vendor/fuse/current/screenshot.h vendor/fuse/current/settings-header.pl vendor/fuse/current/settings.dat vendor/fuse/current/settings.pl vendor/fuse/current/simpleide.c vendor/fuse/current/slt.c vendor/fuse/current/slt.h vendor/fuse/current/snapshot.c vendor/fuse/current/snapshot.h vendor/fuse/current/sound/Makefile.am vendor/fuse/current/sound/aosound.c vendor/fuse/current/sound/dxsound.c vendor/fuse/current/sound/lowlevel.h vendor/fuse/current/sound/sdlsound.c vendor/fuse/current/sound/sfifo.c vendor/fuse/current/sound.c vendor/fuse/current/sound.h vendor/fuse/current/spectrum.c vendor/fuse/current/spectrum.h vendor/fuse/current/tape.c vendor/fuse/current/tape.h vendor/fuse/current/timer.c vendor/fuse/current/timer.h vendor/fuse/current/trdos.c vendor/fuse/current/trdos.h vendor/fuse/current/ui/Makefile.am vendor/fuse/current/ui/aalib/Makefile.am vendor/fuse/current/ui/aalib/aalibdisplay.c vendor/fuse/current/ui/aalib/aalibkeyboard.c vendor/fuse/current/ui/aalib/aalibkeyboard.h vendor/fuse/current/ui/aalib/aalibui.c vendor/fuse/current/ui/aalib/aalibui.h vendor/fuse/current/ui/aalib/error.c vendor/fuse/current/ui/fb/Makefile.am vendor/fuse/current/ui/fb/fbdisplay.c vendor/fuse/current/ui/fb/fbdisplay.h vendor/fuse/current/ui/fb/fbjoystick.c vendor/fuse/current/ui/fb/fbkeyboard.c vendor/fuse/current/ui/fb/fbkeyboard.h vendor/fuse/current/ui/fb/fbui.c vendor/fuse/current/ui/ggi/Makefile.am vendor/fuse/current/ui/ggi/ggi_internals.h vendor/fuse/current/ui/ggi/ggidisplay.c vendor/fuse/current/ui/ggi/ggikeyboard.c vendor/fuse/current/ui/ggi/ggiui.c vendor/fuse/current/ui/gtk/Makefile.am vendor/fuse/current/ui/gtk/binary.c vendor/fuse/current/ui/gtk/browse.c vendor/fuse/current/ui/gtk/confirm.c vendor/fuse/current/ui/gtk/debugger.c vendor/fuse/current/ui/gtk/fileselector.c vendor/fuse/current/ui/gtk/gtkdisplay.c vendor/fuse/current/ui/gtk/gtkinternals.h vendor/fuse/current/ui/gtk/gtkjoystick.c vendor/fuse/current/ui/gtk/gtkkeyboard.c vendor/fuse/current/ui/gtk/gtkui.c vendor/fuse/current/ui/gtk/memory.c vendor/fuse/current/ui/gtk/options-header.pl vendor/fuse/current/ui/gtk/options.pl vendor/fuse/current/ui/gtk/picture.c vendor/fuse/current/ui/gtk/pixmaps.c vendor/fuse/current/ui/gtk/pokefinder.c vendor/fuse/current/ui/gtk/rollback.c vendor/fuse/current/ui/gtk/roms.c vendor/fuse/current/ui/gtk/statusbar.c vendor/fuse/current/ui/gtk/stock.c vendor/fuse/current/ui/options.dat vendor/fuse/current/ui/scaler/Makefile.am vendor/fuse/current/ui/scaler/scaler.c vendor/fuse/current/ui/scaler/scaler.h vendor/fuse/current/ui/scaler/scaler_internals.h vendor/fuse/current/ui/scaler/scalers.c vendor/fuse/current/ui/sdl/Makefile.am vendor/fuse/current/ui/sdl/sdldisplay.c vendor/fuse/current/ui/sdl/sdldisplay.h vendor/fuse/current/ui/sdl/sdljoystick.c vendor/fuse/current/ui/sdl/sdljoystick.h vendor/fuse/current/ui/sdl/sdlkeyboard.c vendor/fuse/current/ui/sdl/sdlkeyboard.h vendor/fuse/current/ui/sdl/sdlui.c vendor/fuse/current/ui/svga/Makefile.am vendor/fuse/current/ui/svga/svgadisplay.c vendor/fuse/current/ui/svga/svgadisplay.h vendor/fuse/current/ui/svga/svgajoystick.c vendor/fuse/current/ui/svga/svgakeyboard.c vendor/fuse/current/ui/svga/svgakeyboard.h vendor/fuse/current/ui/svga/svgaui.c vendor/fuse/current/ui/ui.h vendor/fuse/current/ui/uidisplay.h vendor/fuse/current/ui/uijoystick.c vendor/fuse/current/ui/uijoystick.h vendor/fuse/current/ui/win32/Makefile.am vendor/fuse/current/ui/win32/debugger.c vendor/fuse/current/ui/win32/debugger.h vendor/fuse/current/ui/win32/debugger.rc vendor/fuse/current/ui/win32/error.c vendor/fuse/current/ui/win32/keysyms.c vendor/fuse/current/ui/win32/menu_data.c vendor/fuse/current/ui/win32/menu_data.h vendor/fuse/current/ui/win32/menu_data.rc vendor/fuse/current/ui/win32/pokefinder.c vendor/fuse/current/ui/win32/pokefinder.h vendor/fuse/current/ui/win32/pokefinder.rc vendor/fuse/current/ui/win32/statusbar.c vendor/fuse/current/ui/win32/win32display.c vendor/fuse/current/ui/win32/win32display.h vendor/fuse/current/ui/win32/win32internals.h vendor/fuse/current/ui/win32/win32keyboard.c vendor/fuse/current/ui/win32/win32keyboard.h vendor/fuse/current/ui/win32/win32ui.c vendor/fuse/current/ui/win32/win32ui.rc vendor/fuse/current/ui/xlib/Makefile.am vendor/fuse/current/ui/xlib/xdisplay.c vendor/fuse/current/ui/xlib/xdisplay.h vendor/fuse/current/ui/xlib/xerror.c vendor/fuse/current/ui/xlib/xjoystick.c vendor/fuse/current/ui/xlib/xkeyboard.c vendor/fuse/current/ui/xlib/xkeyboard.h vendor/fuse/current/ui/xlib/xui.c vendor/fuse/current/ui/xlib/xui.h vendor/fuse/current/ui.c vendor/fuse/current/uidisplay.c vendor/fuse/current/ula.c vendor/fuse/current/ula.h vendor/fuse/current/utils.c vendor/fuse/current/utils.h vendor/fuse/current/widget/Makefile.am vendor/fuse/current/widget/browse.c vendor/fuse/current/widget/debugger.c vendor/fuse/current/widget/error.c vendor/fuse/current/widget/filesel.c vendor/fuse/current/widget/menu.c vendor/fuse/current/widget/options-header.pl vendor/fuse/current/widget/options.pl vendor/fuse/current/widget/picture.c vendor/fuse/current/widget/roms.c vendor/fuse/current/widget/select.c vendor/fuse/current/widget/text.c vendor/fuse/current/widget/widget.c vendor/fuse/current/widget/widget.h vendor/fuse/current/widget/widget_internals.h vendor/fuse/current/z80/Makefile.am vendor/fuse/current/z80/coretest.c vendor/fuse/current/z80/harness.pl vendor/fuse/current/z80/tests/Makefile.am vendor/fuse/current/z80/z80.c vendor/fuse/current/z80/z80.h vendor/fuse/current/z80/z80.pl vendor/fuse/current/z80/z80_macros.h vendor/fuse/current/z80/z80_ops.c vendor/fuse/current/zxatasp.c vendor/fuse/current/zxatasp.h vendor/fuse/current/zxcf.c vendor/fuse/current/zxcf.h Added Paths: ----------- vendor/fuse/current/sound/coreaudiosound.c Modified: vendor/fuse/current/ChangeLog =================================================================== --- vendor/fuse/current/ChangeLog 2007-02-04 08:40:22 UTC (rev 297) +++ vendor/fuse/current/ChangeLog 2007-02-04 11:14:46 UTC (rev 298) @@ -1,30 +1,56 @@ -2005-??-?? Philip Kendall <pak...@sr...> +2007-??-?? Philip Kendall <phi...@sh...> + * Fuse 0.8.0 released + * New features: + * Loader improvements: automatically run at full speed while + a loader is in progress and automatically start/stop the tape + when the start/end of a loader is detected (Philip Kendall). * RZX 'rollback' support (Philip Kendall). + * DivIDE support (Matthew Westcott) + * Interface I and microdrive emulation (Gergely Szasz). * TS2068 support (Fredrick Meunier). - * Interface I and microdrive emulation (Gergely Szasz). * Kempston mouse emulation (Darren Salt). + * TZX generalized data block (0x19) support (Philip Kendall). + * Much improved widget UI, including allowing selection of + filenames (Darren Salt, Gergely Szasz). * Allow SDL full screen mode to be used (Darren Salt). * Add the ability to save 'movies' as collections of screenshots (Gergely Szasz). * Widget pokefinder (Darren Salt). * Add a simple code profiler (Philip Kendall). * New libao sound driver (Gergely Szasz). + * New CoreAudio sound driver (Fredrick Meunier). + * New PALTV 1-3x and TV3x graphics scalers (Gergely Szasz). * Emulation core improvements: * Improved screen rendering code (now character accurate rather - than line accurate) (Philip Kendall). + than line accurate) (Philip Kendall, Fredrick Meunier). + * Corrections to write ordering and contention for EX (SP),HL, + EX (SP),IX and EX (SP),IY (Philip Kendall; thanks, Mark + Woodmass). + * Corrections to contention for OTIR and OTDR (Philip Kendall; + thanks, Mark Woodmass). + * IR contention (Philip Kendall; thanks, Mark Woodmass). + * Flag bits 3 and 5 are copied on all BIT instructions (Philip + Kendall; thanks, Mark Woodmass). * Improved ULA emulation with respect to interrupt length (thanks, Jon Needle, Ramsoft and Mark Woodmass) (Philip Kendall). + * Fix timings of shifted no operation opcodes (Philip Kendall). + * An interrupt in IM 0 takes 13 tstates to acknowledge, not 12 + (Philip Kendall). * Improved speed control code (Fredrick Meunier). * Miscellaneous: - * Allow filenames to be selected from the widget UIs (Darren - Salt). * Add a 'save, don't save, cancel' confirmation dialog before any changes to media are lost under the GTK+ UIs (Philip Kendall). + * On the Pentagon, page in the TR-DOS ROM on NMI, allowing the + snapshot function to work (Philip Kendall). On the Scorpion, + page in ROM 2, allowing the monitor to work (thanks, Erik + Kunze). + * Default snapshot format is now .szx rather than .z80 (Fredrick + Meunier) * Store current joystick information in snapshots (Fredrick Meunier). * Optional use of doublescan modes in the framebuffer and @@ -35,11 +61,8 @@ * Use stock button icons in the GTK+ 2.x UI (Darren Salt). * Save/restore the 'issue 2 keyboard' flag from snapshots (Philip Kendall). - * Deactivate widget menu items when they are inappropriate - (Darren Salt). * Correctly quote '-' characters in the man page (needed for UTF-8 environments) (Darren Salt, Stuart Brady). - * Widget query confirmation dialog (Darren Salt). * Use separate menus for controlling +3 and TR-DOS disks (Philip Kendall). * Fix behaviour of ZXATASP and ZXCF on reset (Garry Lancaster). @@ -50,9 +73,13 @@ (Darren Salt). * Various minor improvements to the framebuffer UI (Darren Salt). + * Various fixes to allow compilation with gcc 4.x (Philip + Kendall). - * Various other minor bugfixes (Fredrick Meunier, Philip Kendall, - Mark Round, Darren Salt, Paul van der Laan). + * Various other minor bugfixes (Philip Kendall, Fredrick Meunier, + Jon Needle, Markus Oberhumer, Mark Round, Darren Salt, Gergely + Szasz, Paul van der Laan and other people to whom I apologise + for forgetting). 2004-07-16 Philip Kendall <pak...@sr...> @@ -756,4 +783,4 @@ * Version 0.1.0 released. -$Id: ChangeLog,v 1.42 2005/03/26 17:24:54 pak21 Exp $ +$Id: ChangeLog,v 1.46 2007/02/02 16:21:50 pak21 Exp $ Modified: vendor/fuse/current/Makefile.am =================================================================== --- vendor/fuse/current/Makefile.am 2007-02-04 08:40:22 UTC (rev 297) +++ vendor/fuse/current/Makefile.am 2007-02-04 11:14:46 UTC (rev 298) @@ -1,7 +1,7 @@ ## Process this file with automake to produce Makefile.in ## Copyright (c) 1999-2004 Philip Kendall -## $Id: Makefile.am,v 1.118 2006/07/30 19:00:40 pak21 Exp $ +## $Id: Makefile.am,v 1.120 2007/02/02 16:21:50 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 @@ -19,8 +19,7 @@ ## ## Author contact information: ## -## E-mail: pak...@sr... -## Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England +## E-mail: phi...@sh... AUTOMAKE_OPTIONS = foreign @@ -107,6 +106,7 @@ @GLIB_LIBS@ \ @PNG_LIBS@ \ @AO_LIBS@ \ +@COREAUDIO_LIBS@ \ @X_LIBS@ \ @XML_LIBS@ \ compat/libcompat.a Modified: vendor/fuse/current/README =================================================================== --- vendor/fuse/current/README 2007-02-04 08:40:22 UTC (rev 297) +++ vendor/fuse/current/README 2007-02-04 11:14:46 UTC (rev 298) @@ -136,7 +136,7 @@ the Usenet group 'comp.sys.sinclair', but do read the FAQ ( http://www.worldofspectrum.org/faq/index.html ) first! -Philip Kendall <pak...@sr...> +Philip Kendall <phi...@sh...> 16 July 2004 -$Id: README,v 1.39 2004/07/15 10:42:29 pak21 Exp $ +$Id: README,v 1.40 2007/02/02 16:21:50 pak21 Exp $ Modified: vendor/fuse/current/autogen.sh =================================================================== --- vendor/fuse/current/autogen.sh 2007-02-04 08:40:22 UTC (rev 297) +++ vendor/fuse/current/autogen.sh 2007-02-04 11:14:46 UTC (rev 298) @@ -3,7 +3,7 @@ # autogen.sh: autotools invocation # Copyright (c) 2004 Philip Kendall -# $Id: autogen.sh,v 1.4 2005/12/24 16:18:18 pak21 Exp $ +# $Id: autogen.sh,v 1.5 2007/02/02 16:21:50 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 @@ -21,8 +21,7 @@ # Author contact information: -# E-mail: Philip Kendall <pak...@sr...> -# Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England +# E-mail: Philip Kendall <phi...@sh...> # Exit on errors set -e Modified: vendor/fuse/current/ay.c =================================================================== --- vendor/fuse/current/ay.c 2007-02-04 08:40:22 UTC (rev 297) +++ vendor/fuse/current/ay.c 2007-02-04 11:14:46 UTC (rev 298) @@ -1,7 +1,7 @@ /* ay.c: AY-8-3912 routines Copyright (c) 1999-2004 Philip Kendall - $Id: ay.c,v 1.25 2004/06/15 09:48:40 pak21 Exp $ + $Id: ay.c,v 1.26 2007/02/02 16:21:50 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ Modified: vendor/fuse/current/ay.h =================================================================== --- vendor/fuse/current/ay.h 2007-02-04 08:40:22 UTC (rev 297) +++ vendor/fuse/current/ay.h 2007-02-04 11:14:46 UTC (rev 298) @@ -1,7 +1,7 @@ /* ay.h: AY-8-3912 routines Copyright (c) 1999-2004 Philip Kendall - $Id: ay.h,v 1.15 2004/06/15 09:48:40 pak21 Exp $ + $Id: ay.h,v 1.16 2007/02/02 16:21:50 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ Modified: vendor/fuse/current/compat/Makefile.am =================================================================== --- vendor/fuse/current/compat/Makefile.am 2007-02-04 08:40:22 UTC (rev 297) +++ vendor/fuse/current/compat/Makefile.am 2007-02-04 11:14:46 UTC (rev 298) @@ -1,7 +1,7 @@ ## Process this file with automake to produce Makefile.in ## Copyright (c) 2003 Philip Kendall -## $Id: Makefile.am,v 1.5 2004/03/28 09:55:50 pak21 Exp $ +## $Id: Makefile.am,v 1.6 2007/02/02 16:21:53 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 @@ -19,8 +19,7 @@ ## ## Author contact information: ## -## E-mail: pak...@sr... -## Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England +## E-mail: phi...@sh... AUTOMAKE_OPTIONS = foreign Modified: vendor/fuse/current/compat/dirname.c =================================================================== --- vendor/fuse/current/compat/dirname.c 2007-02-04 08:40:22 UTC (rev 297) +++ vendor/fuse/current/compat/dirname.c 2007-02-04 11:14:46 UTC (rev 298) @@ -20,8 +20,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ Modified: vendor/fuse/current/compat.h =================================================================== --- vendor/fuse/current/compat.h 2007-02-04 08:40:22 UTC (rev 297) +++ vendor/fuse/current/compat.h 2007-02-04 11:14:46 UTC (rev 298) @@ -1,7 +1,7 @@ /* compat.h: various compatbility bits Copyright (c) 2003 Philip Kendall - $Id: compat.h,v 1.6 2004/04/11 10:13:22 pak21 Exp $ + $Id: compat.h,v 1.7 2007/02/02 16:21:50 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ Modified: vendor/fuse/current/configure.in =================================================================== --- vendor/fuse/current/configure.in 2007-02-04 08:40:22 UTC (rev 297) +++ vendor/fuse/current/configure.in 2007-02-04 11:14:46 UTC (rev 298) @@ -1,5 +1,5 @@ dnl Process this file with autoconf to produce a configure script. -dnl $Id: configure.in,v 1.151 2005/03/06 05:30:27 fredm Exp $ +dnl $Id: configure.in,v 1.155 2007/02/02 16:21:50 pak21 Exp $ dnl This program is free software; you can redistribute it and/or modify dnl it under the terms of the GNU General Public License as published by @@ -17,8 +17,7 @@ dnl dnl Author contact information: dnl -dnl E-mail: pak...@sr... -dnl Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England +dnl E-mail: phi...@sh... AC_INIT(fuse.c) AM_CONFIG_HEADER(config.h) @@ -397,8 +396,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)] @@ -406,6 +404,14 @@ AC_SUBST(AO_LIBS) fi +dnl Check if CoreAudio is available +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: vendor/fuse/current/dck.c =================================================================== --- vendor/fuse/current/dck.c 2007-02-04 08:40:22 UTC (rev 297) +++ vendor/fuse/current/dck.c 2007-02-04 11:14:46 UTC (rev 298) @@ -1,7 +1,7 @@ /* dck.c: dock snapshot (Warajevo .DCK) handling routines Copyright (c) 2003-2004 Darren Salt, Fredrick Meunier, Philip Kendall - $Id: dck.c,v 1.21 2004/05/25 10:05:05 fredm Exp $ + $Id: dck.c,v 1.22 2007/02/02 16:21:50 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 @@ -19,8 +19,7 @@ Author contact information: - Philip: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + Philip: phi...@sh... Darren: li...@yo... Fred: fr...@sp... Modified: vendor/fuse/current/dck.h =================================================================== --- vendor/fuse/current/dck.h 2007-02-04 08:40:22 UTC (rev 297) +++ vendor/fuse/current/dck.h 2007-02-04 11:14:46 UTC (rev 298) @@ -1,7 +1,7 @@ /* dck.c: dock snapshot (Warajevo .DCK) handling routines Copyright (c) 2003 Darren Salt, Fredrick Meunier - $Id: dck.h,v 1.2 2004/05/25 10:05:06 fredm Exp $ + $Id: dck.h,v 1.3 2007/02/02 16:21:50 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 @@ -19,8 +19,7 @@ Author contact information: - Philip: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + Philip: phi...@sh... Darren: li...@yo... Fred: fr...@sp... Modified: vendor/fuse/current/debugger/Makefile.am =================================================================== --- vendor/fuse/current/debugger/Makefile.am 2007-02-04 08:40:22 UTC (rev 297) +++ vendor/fuse/current/debugger/Makefile.am 2007-02-04 11:14:46 UTC (rev 298) @@ -1,7 +1,7 @@ ## Process this file with automake to produce Makefile.in ## Copyright (c) 2001-2004 Philip Kendall -## $Id: Makefile.am,v 1.12 2004/07/09 17:38:06 pak21 Exp $ +## $Id: Makefile.am,v 1.13 2007/02/02 16:21:53 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 @@ -19,8 +19,7 @@ ## ## Author contact information: ## -## E-mail: pak...@sr... -## Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England +## E-mail: phi...@sh... AUTOMAKE_OPTIONS = foreign Modified: vendor/fuse/current/debugger/breakpoint.c =================================================================== --- vendor/fuse/current/debugger/breakpoint.c 2007-02-04 08:40:22 UTC (rev 297) +++ vendor/fuse/current/debugger/breakpoint.c 2007-02-04 11:14:46 UTC (rev 298) @@ -1,7 +1,7 @@ /* breakpoint.c: a debugger breakpoint Copyright (c) 2002-2004 Philip Kendall - $Id: breakpoint.c,v 1.8 2006/12/15 20:50:47 pak21 Exp $ + $Id: breakpoint.c,v 1.9 2007/02/02 16:21:53 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ Modified: vendor/fuse/current/debugger/breakpoint.h =================================================================== --- vendor/fuse/current/debugger/breakpoint.h 2007-02-04 08:40:22 UTC (rev 297) +++ vendor/fuse/current/debugger/breakpoint.h 2007-02-04 11:14:46 UTC (rev 298) @@ -1,7 +1,7 @@ /* breakpoint.h: a debugger breakpoint Copyright (c) 2002-2004 Philip Kendall - $Id: breakpoint.h,v 1.4 2004/05/14 22:05:57 pak21 Exp $ + $Id: breakpoint.h,v 1.5 2007/02/02 16:21:53 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ Modified: vendor/fuse/current/debugger/command.c =================================================================== --- vendor/fuse/current/debugger/command.c 2007-02-04 08:40:22 UTC (rev 297) +++ vendor/fuse/current/debugger/command.c 2007-02-04 11:14:46 UTC (rev 298) @@ -1,7 +1,7 @@ /* command.c: Parse a debugger command Copyright (c) 2002 Philip Kendall - $Id: command.c,v 1.16 2003/12/02 14:56:32 pak21 Exp $ + $Id: command.c,v 1.17 2007/02/02 16:21:53 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ Modified: vendor/fuse/current/debugger/commandl.l =================================================================== --- vendor/fuse/current/debugger/commandl.l 2007-02-04 08:40:22 UTC (rev 297) +++ vendor/fuse/current/debugger/commandl.l 2007-02-04 11:14:46 UTC (rev 298) @@ -1,7 +1,7 @@ /* commandl.l: Debugger command lexical scanner Copyright (c) 2002 Philip Kendall - $Id: commandl.l,v 1.36 2004/06/16 14:46:34 pak21 Exp $ + $Id: commandl.l,v 1.37 2007/02/02 16:21:53 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ Modified: vendor/fuse/current/debugger/commandy.y =================================================================== --- vendor/fuse/current/debugger/commandy.y 2007-02-04 08:40:22 UTC (rev 297) +++ vendor/fuse/current/debugger/commandy.y 2007-02-04 11:14:46 UTC (rev 298) @@ -1,7 +1,7 @@ /* commandy.y: Parse a debugger command Copyright (c) 2002-2004 Philip Kendall - $Id: commandy.y,v 1.42 2004/06/16 14:46:34 pak21 Exp $ + $Id: commandy.y,v 1.43 2007/02/02 16:21:53 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ Modified: vendor/fuse/current/debugger/debugger.c =================================================================== --- vendor/fuse/current/debugger/debugger.c 2007-02-04 08:40:22 UTC (rev 297) +++ vendor/fuse/current/debugger/debugger.c 2007-02-04 11:14:46 UTC (rev 298) @@ -1,7 +1,7 @@ /* debugger.h: Fuse's monitor/debugger Copyright (c) 2002-2004 Philip Kendall - $Id: debugger.c,v 1.35 2004/12/29 13:11:16 pak21 Exp $ + $Id: debugger.c,v 1.36 2007/02/02 16:21:53 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ Modified: vendor/fuse/current/debugger/debugger.h =================================================================== --- vendor/fuse/current/debugger/debugger.h 2007-02-04 08:40:22 UTC (rev 297) +++ vendor/fuse/current/debugger/debugger.h 2007-02-04 11:14:46 UTC (rev 298) @@ -1,7 +1,7 @@ /* debugger.h: Fuse's monitor/debugger Copyright (c) 2002-2004 Philip Kendall - $Id: debugger.h,v 1.25 2004/02/26 20:03:09 pak21 Exp $ + $Id: debugger.h,v 1.26 2007/02/02 16:21:53 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ Modified: vendor/fuse/current/debugger/debugger_internals.h =================================================================== --- vendor/fuse/current/debugger/debugger_internals.h 2007-02-04 08:40:22 UTC (rev 297) +++ vendor/fuse/current/debugger/debugger_internals.h 2007-02-04 11:14:46 UTC (rev 298) @@ -1,7 +1,7 @@ /* debugger_internals.h: The internals of Fuse's monitor/debugger Copyright (c) 2002-2003 Philip Kendall - $Id: debugger_internals.h,v 1.25 2004/06/16 14:46:34 pak21 Exp $ + $Id: debugger_internals.h,v 1.26 2007/02/02 16:21:53 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ Modified: vendor/fuse/current/debugger/disassemble.c =================================================================== --- vendor/fuse/current/debugger/disassemble.c 2007-02-04 08:40:22 UTC (rev 297) +++ vendor/fuse/current/debugger/disassemble.c 2007-02-04 11:14:46 UTC (rev 298) @@ -1,7 +1,7 @@ /* disassemble.h: Fuse's disassembler Copyright (c) 2002-2003 Darren Salt, Philip Kendall - $Id: disassemble.c,v 1.10 2003/11/14 11:46:47 pak21 Exp $ + $Id: disassemble.c,v 1.11 2007/02/02 16:21:53 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 @@ -21,8 +21,7 @@ Darren: li...@yo... - Philip: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + Philip: phi...@sh... */ Modified: vendor/fuse/current/debugger/expression.c =================================================================== --- vendor/fuse/current/debugger/expression.c 2007-02-04 08:40:22 UTC (rev 297) +++ vendor/fuse/current/debugger/expression.c 2007-02-04 11:14:46 UTC (rev 298) @@ -1,7 +1,7 @@ /* expression.c: A numeric expression Copyright (c) 2003 Philip Kendall - $Id: expression.c,v 1.13 2004/06/16 14:05:38 pak21 Exp $ + $Id: expression.c,v 1.14 2007/02/02 16:21:53 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ Modified: vendor/fuse/current/display.c =================================================================== --- vendor/fuse/current/display.c 2007-02-04 08:40:22 UTC (rev 297) +++ vendor/fuse/current/display.c 2007-02-04 11:14:46 UTC (rev 298) @@ -2,7 +2,7 @@ Copyright (c) 1999-2006 Philip Kendall, Thomas Harte, Witold Filipczyk and Fredrick Meunier - $Id: display.c,v 1.57 2006/09/17 00:56:18 fredm Exp $ + $Id: display.c,v 1.59 2007/02/02 16:21:50 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 @@ -20,8 +20,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ @@ -641,7 +640,7 @@ critical_region_x = beam_x; } -static void +inline static void get_beam_position( int *x, int *y ) { if( tstates < machine_current->line_times[ 0 ] ) { @@ -685,7 +684,7 @@ /* Mark the 8-pixel chunk at (x,y) as maybe dirty and update the critical region as appropriate */ -static void +inline static void display_dirty_chunk( int x, int y ) { /* If the write is between the start of the critical region and the Modified: vendor/fuse/current/display.h =================================================================== --- vendor/fuse/current/display.h 2007-02-04 08:40:22 UTC (rev 297) +++ vendor/fuse/current/display.h 2007-02-04 11:14:46 UTC (rev 298) @@ -1,7 +1,7 @@ /* display.h: Routines for printing the Spectrum's screen Copyright (c) 1999-2006 Philip Kendall - $Id: display.h,v 1.26 2006/09/17 00:56:18 fredm Exp $ + $Id: display.h,v 1.27 2007/02/02 16:21:50 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ Modified: vendor/fuse/current/divide.c =================================================================== --- vendor/fuse/current/divide.c 2007-02-04 08:40:22 UTC (rev 297) +++ vendor/fuse/current/divide.c 2007-02-04 11:14:46 UTC (rev 298) @@ -1,7 +1,7 @@ /* divide.c: DivIDE interface routines Copyright (c) 2005 Matthew Westcott - $Id: divide.c,v 1.2 2005/10/31 12:09:10 pak21 Exp $ + $Id: divide.c,v 1.3 2007/02/02 16:21:51 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: Philip Kendall <pak...@sr...> - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: Philip Kendall <phi...@sh...> */ Modified: vendor/fuse/current/divide.h =================================================================== --- vendor/fuse/current/divide.h 2007-02-04 08:40:22 UTC (rev 297) +++ vendor/fuse/current/divide.h 2007-02-04 11:14:46 UTC (rev 298) @@ -17,8 +17,7 @@ Author contact information: - E-mail: Philip Kendall <pak...@sr...> - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: Philip Kendall <phi...@sh...> */ Modified: vendor/fuse/current/event.c =================================================================== --- vendor/fuse/current/event.c 2007-02-04 08:40:22 UTC (rev 297) +++ vendor/fuse/current/event.c 2007-02-04 11:14:46 UTC (rev 298) @@ -1,7 +1,7 @@ /* event.c: Routines needed for dealing with the event list Copyright (c) 2000-2004 Philip Kendall - $Id: event.c,v 1.56 2006/09/03 14:12:22 fredm Exp $ + $Id: event.c,v 1.57 2007/02/02 16:21:51 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ Modified: vendor/fuse/current/event.h =================================================================== --- vendor/fuse/current/event.h 2007-02-04 08:40:22 UTC (rev 297) +++ vendor/fuse/current/event.h 2007-02-04 11:14:46 UTC (rev 298) @@ -1,7 +1,7 @@ /* event.h: Routines needed for dealing with the event list Copyright (c) 2000-2004 Philip Kendall - $Id: event.h,v 1.24 2006/08/06 10:41:52 pak21 Exp $ + $Id: event.h,v 1.25 2007/02/02 16:21:51 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ Modified: vendor/fuse/current/fuse.c =================================================================== --- vendor/fuse/current/fuse.c 2007-02-04 08:40:22 UTC (rev 297) +++ vendor/fuse/current/fuse.c 2007-02-04 11:14:46 UTC (rev 298) @@ -1,7 +1,7 @@ /* fuse.c: The Free Unix Spectrum Emulator Copyright (c) 1999-2005 Philip Kendall - $Id: fuse.c,v 1.130 2006/07/28 15:06:14 fredm Exp $ + $Id: fuse.c,v 1.133 2007/02/02 16:21:51 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ @@ -92,12 +91,6 @@ /* Is Spectrum emulation currently paused, and if so, how many times? */ int fuse_emulation_paused; -/* Are we going to try and use the sound card; this differs from - sound.c:sound_enabled in that this gives a desire, whereas sound_enabled - is an actual state; when the Spectrum emulation is not running, this - stores whether we try to reenable the sound card afterwards */ -int fuse_sound_in_use; - /* The creator information we'll store in file formats that support this */ libspectrum_creator *fuse_creator; @@ -243,16 +236,6 @@ z80_init(); - fuse_sound_in_use = 0; - if( settings_current.sound && settings_current.emulation_speed == 100 ) - sound_init( settings_current.sound_device ); - - if( sound_enabled ) { - fuse_sound_in_use = 1; - } else { - settings_current.sound = 0; - } - if( timer_init() ) return 1; error = timer_estimate_reset(); if( error ) return error; @@ -383,7 +366,7 @@ printf( "\n" ); fuse_show_version(); printf( - "Copyright (c) 1999-2005 Philip Kendall <pak...@sr...>\n" + "Copyright (c) 1999-2005 Philip Kendall <phi...@sh...>\n" "and others; see the file 'AUTHORS' for more details.\n" "\n" "This program is distributed in the hope that it will be useful,\n" @@ -428,43 +411,6 @@ "--version Print version number and exit.\n\n" ); } -/* Start sound output */ -void -fuse_sound_enable(void) -{ - /* No sound if fastloading in progress */ - if( settings_current.fastload && tape_is_playing() ) return; - - /* If we now want sound, enable it */ - if( settings_current.sound && settings_current.emulation_speed == 100 ) { - - sound_init( settings_current.sound_device ); - sound_ay_reset(); - - /* If the sound code couldn't re-initialise, fall back to the - signal based routines */ - if( !sound_enabled ) { - /* Increment pause_count, report, decrement pause_count - * (i.e. avoid the effects of fuse_emulation_{,un}pause). - * Otherwise, we may be recursively reporting this error. */ - fuse_emulation_paused++; - fuse_emulation_paused--; - settings_current.sound = fuse_sound_in_use = 0; - - } - fuse_sound_in_use = sound_enabled; - } else if( fuse_sound_in_use ) { - fuse_sound_in_use = 0; - } -} - -/* Stop sound output */ -void -fuse_sound_disable(void) -{ - if( sound_enabled ) sound_end(); -} - /* Stop all activities associated with actual Spectrum emulation */ int fuse_emulation_pause(void) { @@ -482,7 +428,7 @@ /* If we had sound enabled (and hence doing the speed regulation), turn it off */ - if( sound_enabled ) sound_end(); + sound_pause(); return 0; } @@ -496,11 +442,12 @@ decrement the pause count */ if( --fuse_emulation_paused ) return 0; + /* If we now want sound, enable it */ + sound_unpause(); + /* Restart speed estimation with no information */ error = timer_estimate_reset(); if( error ) return error; - fuse_sound_enable(); - return 0; } @@ -763,6 +710,7 @@ simpleide_end(); zxatasp_end(); zxcf_end(); + if1_end(); divide_end(); machine_end(); Modified: vendor/fuse/current/fuse.h =================================================================== --- vendor/fuse/current/fuse.h 2007-02-04 08:40:22 UTC (rev 297) +++ vendor/fuse/current/fuse.h 2007-02-04 11:14:46 UTC (rev 298) @@ -1,7 +1,7 @@ /* fuse.h: Variables exported from the main file Copyright (c) 2000-2003 Philip Kendall - $Id: fuse.h,v 1.18 2006/07/15 17:33:58 pak21 Exp $ + $Id: fuse.h,v 1.20 2007/02/02 16:21:51 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ @@ -42,13 +41,8 @@ int fuse_emulation_pause(void); /* Stop and start emulation */ int fuse_emulation_unpause(void); -void fuse_sound_enable(); /* Start sound output */ -void fuse_sound_disable(); /* Stop sound output */ - void fuse_abort( void ) GCC_NORETURN; /* Emergency shutdown */ -extern int fuse_sound_in_use; /* Are we trying to produce sound? */ - extern libspectrum_creator *fuse_creator; /* Creator information for file formats which support this */ Modified: vendor/fuse/current/hacking/ChangeLog =================================================================== --- vendor/fuse/current/hacking/ChangeLog 2007-02-04 08:40:22 UTC (rev 297) +++ vendor/fuse/current/hacking/ChangeLog 2007-02-04 11:14:46 UTC (rev 298) @@ -1481,3 +1481,47 @@ Stuart Brady) 20061217 machine.c: load rom into correct memory bank (fixes If1 ROM paging) (Fred). +20061217 menu.c,rzx.[ch]: reset rzx_instructions_offset on rollback to fix + replay of rolled back recordings (and some refactoring). +20061222 sound/sdlsound.c: clear sound fifo before closing (Fred). +20061222 Makefile.am,configure.in,sound/{Makefile.am,coreaudiosound.c, + lowlevel.h,sfifo.c},timer.c: add CoreAudio sound driver for Mac OS X + (Fred). +20061223 configure.in: fix CoreAudio comment (Fred). +20061223 configure.in: fix typo in above! (Fred). +20070101 menu_data.c,ui.c,man/fuse.1: change capitalisation of + "Insert snapshot" command and document rollback commands. +20070106 tape.c: support "no edge", "level low" and "level high" from + tape edges. +20070111 tape.c: display vaguely useful information in the tape browser for + generalised data blocks. +20070113 ChangeLog: bring up to date. +20070115 fuse.[ch],machine.c,sound.[ch],tape.c: make the sound lifecycle be + treated more like the uidisplay - initialised and ended based on machine + lifecycle (fixes bug #1582087) (Fred). +20070115 ChangeLog: add reference to new CoreAudio sound driver (Fred). +20070117 fuse.c, if1.[ch]: free memory on exit. Use C89-style struct + initialisation (patch #1637020) (Gergely Szasz). +20070120 if1.c: reduce magic number count. +20070122 display.c: inline get_beam_position and display_dirty_chunk for more + speed (Fred). +20070128 settings.dat,ui/options.dat,ui/gtk/gtkdisplay.c,ui/sdl/sdldisplay.c, + ui/scaler/{scaler.[ch],scaler_internals.h,scalers.c}: add new PAL TV + scalers that attempt to reproduce TV-esque colour reproduction (patch + #1537920) (Gergely Szasz). +20070128 ChangeLog,man/fuse.1: add information about PAL scalers (Fred). +20070128 ui/{fb/fbdisplay.c,ggi/ggidisplay.c,gtk/gtkdisplay.c, + svga/svgadisplay.c,win32/win32display.c,xlib/xdisplay.c}: fix hires + Timex display (Fred). +20070128 man/fuse.1: updates. +20070129 man/fuse.1: add documentation for "MDR cartridge len" and "Snap + joystick prompt" (Fred). +20070129 ui/scaler/scalers.c: corrections to YUV to RGB conversions etc. + (more from patch #1537920) (Gergely Szasz). +20070202 <almost everything>: change my e-mail address to @shadowmagic and + remove my postal address. +20070202 TAG: Release-0_8_0-trunk +20070202 BRANCH: Release-0_8_0-branch +20070202 TAG: Release-0_8_0-pre1 (Release-0_8_0-branch) +20070204 sound.c: don't disable sound completely if we don't enable sound + after an unpause (fixes bug #1648246) (Fred). Modified: vendor/fuse/current/hacking/Makefile.am =================================================================== --- vendor/fuse/current/hacking/Makefile.am 2007-02-04 08:40:22 UTC (rev 297) +++ vendor/fuse/current/hacking/Makefile.am 2007-02-04 11:14:46 UTC (rev 298) @@ -1,7 +1,7 @@ ## Process this file with automake to produce Makefile.in ## Copyright (c) 2002 Philip Kendall -## $Id: Makefile.am,v 1.1 2002/08/18 14:14:07 pak21 Exp $ +## $Id: Makefile.am,v 1.2 2007/02/02 16:21:53 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 @@ -19,8 +19,7 @@ ## ## Author contact information: ## -## E-mail: pak...@sr... -## Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England +## E-mail: phi...@sh... AUTOMAKE_OPTIONS = foreign Modified: vendor/fuse/current/hacking/cvs-tags =================================================================== --- vendor/fuse/current/hacking/cvs-tags 2007-02-04 08:40:22 UTC (rev 297) +++ vendor/fuse/current/hacking/cvs-tags 2007-02-04 11:14:46 UTC (rev 298) @@ -1,6 +1,6 @@ CVS tags for Fuse -$Id: cvs-tags,v 1.31 2006/08/25 03:16:05 pak21 Exp $ +$Id: cvs-tags,v 1.32 2007/02/02 17:16:19 pak21 Exp $ | Release-0_3_1 | Release-0_3_2pre1 @@ -141,4 +141,11 @@ | | | | Release-0_7_0-disciple-branch | +| Release-0_8_0-trunk +| ++-\ +| | Release-0_8_0-pre1 +| | +| | Release-0_8_0-branch +| HEAD Modified: vendor/fuse/current/ide.c =================================================================== --- vendor/fuse/current/ide.c 2007-02-04 08:40:22 UTC (rev 297) +++ vendor/fuse/current/ide.c 2007-02-04 11:14:46 UTC (rev 298) @@ -1,7 +1,7 @@ /* ide.c: Generic routines shared between the various IDE devices Copyright (c) 2005 Philip Kendall - $Id: ide.c,v 1.3 2005/02/19 18:02:28 pak21 Exp $ + $Id: ide.c,v 1.4 2007/02/02 16:21:51 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: Philip Kendall <pak...@sr...> - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: Philip Kendall <phi...@sh...> */ Modified: vendor/fuse/current/ide.h =================================================================== --- vendor/fuse/current/ide.h 2007-02-04 08:40:22 UTC (rev 297) +++ vendor/fuse/current/ide.h 2007-02-04 11:14:46 UTC (rev 298) @@ -1,7 +1,7 @@ /* ide.h: Generic routines shared between the various IDE devices Copyright (c) 2005 Philip Kendall - $Id: ide.h,v 1.3 2005/02/19 18:02:28 pak21 Exp $ + $Id: ide.h,v 1.4 2007/02/02 16:21:51 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: Philip Kendall <pak...@sr...> - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: Philip Kendall <phi...@sh...> */ Modified: vendor/fuse/current/if1.c =================================================================== --- vendor/fuse/current/if1.c 2007-02-04 08:40:22 UTC (rev 297) +++ vendor/fuse/current/if1.c 2007-02-04 11:14:46 UTC (rev 298) @@ -1,7 +1,7 @@ /* if2.c: Interface I handling routines - Copyright (c) 2004-2005 Gergely Szasz, Philip Kendall + Copyright (c) 2004-2007 Gergely Szasz, Philip Kendall - $Id: if1.c,v 1.12 2006/10/21 05:28:33 fredm Exp $ + $Id: if1.c,v 1.14 2007/01/20 17:54:51 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 @@ -71,13 +71,13 @@ int fd_r; /* file descriptor for reading bytes or bits RS232 */ int fd_t; /* file descriptor for writing bytes or bits RS232 */ int fd_net; /* file descriptor for rw bytes or bits SinclairNET */ - int rs232_mode; /* comunication mode: RS232_RAW, RS232_INT */ - int s_net_mode; /* comunication mode: S_NET_RAW, S_NET_INT */ + int rs232_mode; /* communication mode: RS232_RAW, RS232_INT */ + int s_net_mode; /* communication mode: S_NET_RAW, S_NET_INT */ int status; /* if1_ula/SinclairNET */ - int comms_data; /* the previouse data comms state */ - int comms_clk; /* the previouse data comms state */ - int cts; /* CTS */ - int dtr; /* DTR */ + int comms_data; /* the previous data comms state */ + int comms_clk; /* the previous data comms state */ + int cts; /* CTS of peripheral */ + int dtr; /* DTR of peripheral */ int tx; /* TxD the name is very kind, because this is the read end of the TxD wire of DATA machine (really RxD the view of spectrum */ @@ -104,29 +104,9 @@ unsigned int mdr_seed; int rnd_factor = ( ( RAND_MAX >> 2 ) << 2 ) / 19 + 1; -static microdrive_t microdrive[8] = { - { .filename = NULL, .inserted = 0, .modified = 0 }, - { .filename = NULL, .inserted = 0, .modified = 0 }, - { .filename = NULL, .inserted = 0, .modified = 0 }, - { .filename = NULL, .inserted = 0, .modified = 0 }, - { .filename = NULL, .inserted = 0, .modified = 0 }, - { .filename = NULL, .inserted = 0, .modified = 0 }, - { .filename = NULL, .inserted = 0, .modified = 0 }, - { .filename = NULL, .inserted = 0, .modified = 0 } -}; /* We have 8 microdrive */ +static microdrive_t microdrive[8]; /* We have 8 microdrive */ +static if1_ula_t if1_ula; -static if1_ula_t if1_ula = { - .fd_r = -1, - .fd_t = -1, - .rs232_mode = RS232_INT, - .dtr = 0, - .comms_clk = 0, - .comms_data = 0, /* realy? */ - .fd_net = -1, - .s_net_mode = S_NET_INT, - .net = 0, -}; - static void microdrives_reset( void ); static void microdrives_restart( void ); static void increment_head( int m ); @@ -213,15 +193,42 @@ { size_t i; + if1_ula.fd_r = -1; + if1_ula.fd_t = -1; + if1_ula.rs232_mode = RS232_INT; + if1_ula.dtr = 0; + if1_ula.comms_clk = 0; + if1_ula.comms_data = 0; /* really? */ + if1_ula.fd_net = -1; + if1_ula.s_net_mode = S_NET_INT; + if1_ula.net = 0; + for( i = 0; i < 8; i++ ) { libspectrum_error error = libspectrum_microdrive_alloc( &( microdrive[i].cartridge ) ); if( error ) return error; + microdrive[i].filename = NULL; + microdrive[i].inserted = 0; + microdrive[i].modified = 0; } return 0; } +libspectrum_error +if1_end( void ) +{ + size_t i; + + for( i = 0; i < 8; i++ ) { + libspectrum_error error = + libspectrum_microdrive_free( microdrive[i].cartridge ); + if( error ) return error; + } + + return LIBSPECTRUM_ERROR_NONE; +} + void if1_update_menu( void ) { @@ -714,16 +721,16 @@ int m; for( m = 0; m < 8; m++ ) { - while( ( microdrive[m].head_pos % 543 ) != 0 && - ( microdrive[m].head_pos % 543 ) != 15 ) + while( ( microdrive[m].head_pos % LIBSPECTRUM_MICRODRIVE_BLOCK_LEN ) != 0 && + ( microdrive[m].head_pos % LIBSPECTRUM_MICRODRIVE_BLOCK_LEN ) != LIBSPECTRUM_MICRODRIVE_HEAD_LEN ) increment_head( m ); /* put head in the start of a block */ microdrive[m].transfered = 0; /* reset current number of bytes written */ - if( ( microdrive[m].head_pos % 543 ) == 0 ) { - microdrive[m].max_bytes = 15; /* up to 15 bytes for header blocks */ + if( ( microdrive[m].head_pos % LIBSPECTRUM_MICRODRIVE_BLOCK_LEN ) == 0 ) { + microdrive[m].max_bytes = LIBSPECTRUM_MICRODRIVE_HEAD_LEN; /* up to 15 bytes for header blocks */ } else { - microdrive[m].max_bytes = 528; /* up to 528 bytes for data blocks */ + microdrive[m].max_bytes = LIBSPECTRUM_MICRODRIVE_HEAD_LEN + LIBSPECTRUM_MICRODRIVE_DATA_LEN + 1; /* up to 528 bytes for data blocks */ } } } @@ -760,7 +767,7 @@ / rnd_factor; } else len = settings_current.mdr_len = settings_current.mdr_len < 10 ? 10 : - settings_current.mdr_len > 254 ? 254 : settings_current.mdr_len; + settings_current.mdr_len > LIBSPECTRUM_MICRODRIVE_BLOCK_MAX ? LIBSPECTRUM_MICRODRIVE_BLOCK_MAX : settings_current.mdr_len; /* Erase the entire cartridge */ libspectrum_microdrive_set_cartridge_len( mdr->cartridge, len ); Modified: vendor/fuse/current/if1.h =================================================================== --- vendor/fuse/current/if1.h 2007-02-04 08:40:22 UTC (rev 297) +++ vendor/fuse/current/if1.h 2007-02-04 11:14:46 UTC (rev 298) @@ -1,7 +1,7 @@ /* if2.c: Interface I handling routines Copyright (c) 2004-2005 Gergely Szasz, Philip Kendall - $Id: if1.h,v 1.5 2005/01/02 18:39:11 pak21 Exp $ + $Id: if1.h,v 1.6 2007/01/17 21:33:44 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 @@ -33,6 +33,7 @@ extern int if1_available; int if1_init( void ); +libspectrum_error if1_end( void ); int if1_reset( void ); void if1_page( void ); Modified: vendor/fuse/current/if2.c =================================================================== --- vendor/fuse/current/if2.c 2007-02-04 08:40:22 UTC (rev 297) +++ vendor/fuse/current/if2.c 2007-02-04 11:14:46 UTC (rev 298) @@ -2,7 +2,7 @@ Copyright (c) 2003 Darren Salt, Fredrick Meunier, Philip Kendall Copyright (c) 2004 Fredrick Meunier - $Id: if2.c,v 1.8 2006/10/21 05:28:33 fredm Exp $ + $Id: if2.c,v 1.9 2007/02/02 16:21:51 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 @@ -20,8 +20,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... Darren: li...@yo... Fred: fr...@sp... Modified: vendor/fuse/current/if2.h =================================================================== --- vendor/fuse/current/if2.h 2007-02-04 08:40:22 UTC (rev 297) +++ vendor/fuse/current/if2.h 2007-02-04 11:14:46 UTC (rev 298) @@ -1,7 +1,7 @@ /* if2.c: Interface II cartridge handling routines Copyright (c) 2004 Fredrick Meunier - $Id: if2.h,v 1.4 2004/06/06 22:31:14 pak21 Exp $ + $Id: if2.h,v 1.5 2007/02/02 16:21:51 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 @@ -19,8 +19,7 @@ Author contact information: - Philip: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + Philip: phi...@sh... Fred: fr...@sp... Modified: vendor/fuse/current/input.c =================================================================== --- vendor/fuse/current/input.c 2007-02-04 08:40:22 UTC (rev 297) +++ vendor/fuse/current/input.c 2007-02-04 11:14:46 UTC (rev 298) @@ -1,7 +1,7 @@ /* input.c: generalised input events layer for Fuse Copyright (c) 2004 Philip Kendall - $Id: input.c,v 1.17 2005/06/06 14:20:17 fredm Exp $ + $Id: input.c,v 1.18 2007/02/02 16:21:51 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ Modified: vendor/fuse/current/input.h =================================================================== --- vendor/fuse/current/input.h 2007-02-04 08:40:22 UTC (rev 297) +++ vendor/fuse/current/input.h 2007-02-04 11:14:46 UTC (rev 298) @@ -1,7 +1,7 @@ /* input.h: generalised input events layer for Fuse Copyright (c) 2004 Philip Kendall - $Id: input.h,v 1.8 2005/02/23 21:21:13 pak21 Exp $ + $Id: input.h,v 1.9 2007/02/02 16:21:51 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ Modified: vendor/fuse/current/joystick.c =================================================================== --- vendor/fuse/current/joystick.c 2007-02-04 08:40:22 UTC (rev 297) +++ vendor/fuse/current/joystick.c 2007-02-04 11:14:46 UTC (rev 298) @@ -2,7 +2,7 @... [truncated message content] |
From: <fr...@us...> - 2007-02-04 08:40:22
|
Revision: 297 http://svn.sourceforge.net/fuse-for-macosx/?rev=297&view=rev Author: fredm Date: 2007-02-04 00:40:22 -0800 (Sun, 04 Feb 2007) Log Message: ----------- Tag vendor/libspectrum/current as vendor/libspectrum/libspectrum-0.3.0-pre1. Added Paths: ----------- vendor/libspectrum/libspectrum-0.3.0-pre1/ Copied: vendor/libspectrum/libspectrum-0.3.0-pre1 (from rev 296, vendor/libspectrum/current) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2007-02-04 08:40:09
|
Revision: 296 http://svn.sourceforge.net/fuse-for-macosx/?rev=296&view=rev Author: fredm Date: 2007-02-04 00:40:03 -0800 (Sun, 04 Feb 2007) Log Message: ----------- Load . into vendor/libspectrum/current. Modified Paths: -------------- vendor/libspectrum/current/ChangeLog vendor/libspectrum/current/Makefile.am vendor/libspectrum/current/README vendor/libspectrum/current/accessor.pl vendor/libspectrum/current/autogen.sh vendor/libspectrum/current/bzip2.c vendor/libspectrum/current/configure.in vendor/libspectrum/current/creator.c vendor/libspectrum/current/crypto.c vendor/libspectrum/current/dck.c vendor/libspectrum/current/dll.c vendor/libspectrum/current/doc/Makefile.am vendor/libspectrum/current/doc/cvs-tags vendor/libspectrum/current/doc/libspectrum.3 vendor/libspectrum/current/doc/libspectrum.txt vendor/libspectrum/current/hacking/ChangeLog vendor/libspectrum/current/ide.c vendor/libspectrum/current/internals.h vendor/libspectrum/current/libspectrum.c vendor/libspectrum/current/libspectrum.h.in vendor/libspectrum/current/libspectrum.qpg.in vendor/libspectrum/current/make-perl.c vendor/libspectrum/current/microdrive.c vendor/libspectrum/current/myglib/Makefile.am vendor/libspectrum/current/myglib/ghash.c vendor/libspectrum/current/myglib/gslist.c vendor/libspectrum/current/plusd.c vendor/libspectrum/current/rzx.c vendor/libspectrum/current/sna.c vendor/libspectrum/current/snap_accessors.txt vendor/libspectrum/current/snapshot.c vendor/libspectrum/current/snp.c vendor/libspectrum/current/sp.c vendor/libspectrum/current/szx.c vendor/libspectrum/current/tap.c vendor/libspectrum/current/tape.c vendor/libspectrum/current/tape_accessors.pl vendor/libspectrum/current/tape_accessors.txt vendor/libspectrum/current/tape_block.c vendor/libspectrum/current/tape_block.h vendor/libspectrum/current/tape_set.pl vendor/libspectrum/current/timings.c vendor/libspectrum/current/tzx_read.c vendor/libspectrum/current/tzx_write.c vendor/libspectrum/current/warajevo_read.c vendor/libspectrum/current/z80.c vendor/libspectrum/current/zlib.c vendor/libspectrum/current/zxs.c Added Paths: ----------- vendor/libspectrum/current/symbol_table.c Modified: vendor/libspectrum/current/ChangeLog =================================================================== --- vendor/libspectrum/current/ChangeLog 2007-01-21 14:20:56 UTC (rev 295) +++ vendor/libspectrum/current/ChangeLog 2007-02-04 08:40:03 UTC (rev 296) @@ -1,3 +1,55 @@ +2007-07-16 Philip Kendall <phi...@sh...> + + * libspectrum 0.3.0 released. + + * Support for RZX rollback, including having snapshots and + multiple input recording blocks in input recording files (Philip + Kendall). + + * Improved IDE emulation (Matthew Westcott). + + * Support for microdrive images (Philip Kendall, Gergely Szasz). + + * TZX Generalized Data Block support. (Philip Kendall). + + * Support for Z80Em and CSW tape files (Darren Salt, Fredrick Meunier). + + * Support for the TS2068 (Fredrick Meunier). + + * Support for connected joystick information in snapshots (Philip + Kendall). + + * Add interrupt length to timing information (Philip Kendall). + + * Routines to add and remove a block from a tape image (Philip + Kendall). + + * Minor feature enhancements: + * Support for saving the Issue 2/3 keyboard state in snapshots + (Philip Kendall). + * Support for always compressing snapshots, even if this makes the + snapshot bigger (Philip Kendall). + * New function to indicate if an IDE image has been + modified (Philip Kendall). + * New function to indicate if a tape block consists solely of + metadata (Philip Kendall). + * Warn about deprecated interfaces when using gcc (Fredrick Meunier). + * Build process improvements (Fredrick Meunier, Markus Obermuller). + * Advertise if we support zlib (Fredrick Meunier). + * Fix gcc 4.x signedness warnings (Fredrick Meunier). + * Improvements to the glib emulation layer (Fredrick Meunier). + + * Minor bugfixes: + * Fix compilation when libgcrypt not present (thanks, Erik Kunze). + * Declare libspectrum_default_error_function before referring to it + (Fredrick Meunier). + * Fix Pentagon and Scorpion CPU speeds to give them 50Hz frame + rate (Fredrick Meunier). + * Fix compilation when zlib not present (Philip Kendall, + Fredrick Meunier). + * Two .szx snapshot fixes (Philip Kendall). + * Three .tzx tape image fixes (Philip Kendall). + 2004-07-16 Philip Kendall <pak...@sr...> * libspectrum 0.2.2 released. @@ -136,4 +188,4 @@ * libspectrum separated from Fuse just before the 0.5.0 release of Fuse; see Fuse's ChangeLog for changes up to this point -$Id: ChangeLog,v 1.9 2004/07/16 12:11:34 pak21 Exp $ +$Id: ChangeLog,v 1.12 2007/02/02 16:35:42 pak21 Exp $ Modified: vendor/libspectrum/current/Makefile.am =================================================================== --- vendor/libspectrum/current/Makefile.am 2007-01-21 14:20:56 UTC (rev 295) +++ vendor/libspectrum/current/Makefile.am 2007-02-04 08:40:03 UTC (rev 296) @@ -1,7 +1,7 @@ ## Process this file with automake to produce Makefile.in ## Copyright (c) 2001-2004 Philip Kendall -## $Id: Makefile.am,v 1.62 2005/12/20 13:20:49 pak21 Exp $ +## $Id: Makefile.am,v 1.65 2007/02/02 16:35:42 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 @@ -19,8 +19,7 @@ ## ## Author contact information: ## -## E-mail: pak...@sr... -## Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England +## E-mail: phi...@sh... AUTOMAKE_OPTIONS = foreign @@ -40,6 +39,7 @@ snapshot.c \ snap_accessors.c \ sp.c \ + symbol_table.c \ szx.c \ tap.c \ tape.c \ @@ -57,7 +57,7 @@ libspectrum_la_LDFLAGS = -version-info 4:0:2 -no-undefined -libspectrum_la_LIBADD = myglib/libmyglib.la +libspectrum_la_LIBADD = myglib/libmyglib.la -lm BUILT_SOURCES = libspectrum.h snap_accessors.c tape_accessors.c tape_set.c Modified: vendor/libspectrum/current/README =================================================================== --- vendor/libspectrum/current/README 2007-01-21 14:20:56 UTC (rev 295) +++ vendor/libspectrum/current/README 2007-02-04 08:40:03 UTC (rev 296) @@ -46,5 +46,5 @@ released tarballs, you'll need to run `autogen.sh' before running 'configure' for the first time. -Philip Kendall <pak...@sr...> +Philip Kendall <phi...@sh...> 16 July 2004 Modified: vendor/libspectrum/current/accessor.pl =================================================================== --- vendor/libspectrum/current/accessor.pl 2007-01-21 14:20:56 UTC (rev 295) +++ vendor/libspectrum/current/accessor.pl 2007-02-04 08:40:03 UTC (rev 296) @@ -3,7 +3,7 @@ # accessor.pl: generate accessor functions # Copyright (c) 2003-2004 Philip Kendall -# $Id: accessor.pl,v 1.16 2004/10/25 12:02:09 fredm Exp $ +# $Id: accessor.pl,v 1.17 2007/02/02 16:35:42 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 @@ -21,8 +21,7 @@ # Author contact information: -# E-mail: pak...@sr... -# Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England +# E-mail: phi...@sh... use strict; @@ -46,8 +45,7 @@ Author contact information: - E-mail: pak21-fuse\@srcf.ucam.org - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: philip-fuse\@shadowmagic.org.uk */ Modified: vendor/libspectrum/current/autogen.sh =================================================================== --- vendor/libspectrum/current/autogen.sh 2007-01-21 14:20:56 UTC (rev 295) +++ vendor/libspectrum/current/autogen.sh 2007-02-04 08:40:03 UTC (rev 296) @@ -3,7 +3,7 @@ # autogen.sh: autotools invocation # Copyright (c) 2004 Philip Kendall -# $Id: autogen.sh,v 1.4 2005/12/24 16:13:37 pak21 Exp $ +# $Id: autogen.sh,v 1.5 2007/02/02 16:35:42 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 @@ -21,8 +21,7 @@ # Author contact information: -# E-mail: Philip Kendall <pak...@sr...> -# Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England +# E-mail: Philip Kendall <phi...@sh...> # Exit on errors set -e Modified: vendor/libspectrum/current/bzip2.c =================================================================== --- vendor/libspectrum/current/bzip2.c 2007-01-21 14:20:56 UTC (rev 295) +++ vendor/libspectrum/current/bzip2.c 2007-02-04 08:40:03 UTC (rev 296) @@ -1,7 +1,7 @@ /* bzip2.c: routines for bzip2 decompression of data Copyright (c) 2003-2005 Philip Kendall - $Id: bzip2.c,v 1.4 2005/05/07 14:39:03 pak21 Exp $ + $Id: bzip2.c,v 1.5 2007/02/02 16:35:42 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ Modified: vendor/libspectrum/current/configure.in =================================================================== --- vendor/libspectrum/current/configure.in 2007-01-21 14:20:56 UTC (rev 295) +++ vendor/libspectrum/current/configure.in 2007-02-04 08:40:03 UTC (rev 296) @@ -1,7 +1,7 @@ dnl Process this file with autoconf to produce a configure script. dnl Copyright (c) 1999-2004 Philip Kendall -dnl $Id: configure.in,v 1.34 2005/02/05 04:19:54 fredm Exp $ +dnl $Id: configure.in,v 1.35 2007/02/02 16:35:42 pak21 Exp $ dnl This program is free software; you can redistribute it and/or modify dnl it under the terms of the GNU General Public License as published by @@ -19,8 +19,7 @@ dnl dnl Author contact information: dnl -dnl E-mail: pak...@sr... -dnl Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England +dnl E-mail: phi...@sh... AC_INIT(libspectrum.c) AM_CONFIG_HEADER(config.h) Modified: vendor/libspectrum/current/creator.c =================================================================== --- vendor/libspectrum/current/creator.c 2007-01-21 14:20:56 UTC (rev 295) +++ vendor/libspectrum/current/creator.c 2007-02-04 08:40:03 UTC (rev 296) @@ -1,7 +1,7 @@ /* creator.c: simple type for storing creator information Copyright (c) 2003-2005 Philip Kendall - $Id: creator.c,v 1.6 2005/09/22 11:56:01 fredm Exp $ + $Id: creator.c,v 1.7 2007/02/02 16:35:42 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ Modified: vendor/libspectrum/current/crypto.c =================================================================== --- vendor/libspectrum/current/crypto.c 2007-01-21 14:20:56 UTC (rev 295) +++ vendor/libspectrum/current/crypto.c 2007-02-04 08:40:03 UTC (rev 296) @@ -1,7 +1,7 @@ /* crypto.c: crytography-related functions Copyright (c) 2002-2005 Philip Kendall - $Id: crypto.c,v 1.10 2005/05/07 14:39:03 pak21 Exp $ + $Id: crypto.c,v 1.11 2007/02/02 16:35:42 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ Modified: vendor/libspectrum/current/dck.c =================================================================== --- vendor/libspectrum/current/dck.c 2007-01-21 14:20:56 UTC (rev 295) +++ vendor/libspectrum/current/dck.c 2007-02-04 08:40:03 UTC (rev 296) @@ -1,7 +1,7 @@ /* dck.c: Routines for handling Warajevo DCK files Copyright (c) 2003 Darren Salt, Fredrick Meunier - $Id: dck.c,v 1.5 2004/03/19 17:01:19 pak21 Exp $ + $Id: dck.c,v 1.6 2007/02/02 16:35:42 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Post: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... Darren: li...@yo... Modified: vendor/libspectrum/current/dll.c =================================================================== --- vendor/libspectrum/current/dll.c 2007-01-21 14:20:56 UTC (rev 295) +++ vendor/libspectrum/current/dll.c 2007-02-04 08:40:03 UTC (rev 296) @@ -1,7 +1,7 @@ /* dll.c: Visual C++ DLL entry point Copyright (c) 2004 Philip Kendall - $Id: dll.c,v 1.1 2004/08/14 17:33:09 pak21 Exp $ + $Id: dll.c,v 1.2 2007/02/02 16:35:42 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ Modified: vendor/libspectrum/current/doc/Makefile.am =================================================================== --- vendor/libspectrum/current/doc/Makefile.am 2007-01-21 14:20:56 UTC (rev 295) +++ vendor/libspectrum/current/doc/Makefile.am 2007-02-04 08:40:03 UTC (rev 296) @@ -1,7 +1,7 @@ ## Process this file with automake to produce Makefile.in ## Copyright (c) 2004 Philip Kendall -## $Id: Makefile.am,v 1.2 2004/02/23 16:47:05 pak21 Exp $ +## $Id: Makefile.am,v 1.3 2007/02/02 16:35:44 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 @@ -19,8 +19,7 @@ ## ## Author contact information: ## -## E-mail: pak...@sr... -## Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England +## E-mail: phi...@sh... AUTOMAKE_OPTIONS = foreign Modified: vendor/libspectrum/current/doc/cvs-tags =================================================================== --- vendor/libspectrum/current/doc/cvs-tags 2007-01-21 14:20:56 UTC (rev 295) +++ vendor/libspectrum/current/doc/cvs-tags 2007-02-04 08:40:03 UTC (rev 296) @@ -47,5 +47,13 @@ | | libspectrum_0_2_1-merge-1 | libspectrum_0_2_2pre1 +| libspectrum_0_2_2 | +| libspectrum_0_3_0-trunk +| ++-\ +| | libspectrum_0_3_0pre1 +| | +| | libspectrum_0_3_0-branch +| HEAD Modified: vendor/libspectrum/current/doc/libspectrum.3 =================================================================== --- vendor/libspectrum/current/doc/libspectrum.3 2007-01-21 14:20:56 UTC (rev 295) +++ vendor/libspectrum/current/doc/libspectrum.3 2007-02-04 08:40:03 UTC (rev 296) @@ -19,8 +19,7 @@ .\" .\" Author contact information: .\" -.\" E-mail: pak...@sr... -.\" Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England +.\" E-mail: phi...@sh... .\" .\" .TH libspectrum 3 "16th July, 2004" "Version 0.2.2" "Emulators" @@ -80,4 +79,4 @@ .\"------------------------------------------------------------------ .\" .SH AUTHOR -Philip Kendall (pak...@sr...) +Philip Kendall (phi...@sh...) Modified: vendor/libspectrum/current/doc/libspectrum.txt =================================================================== --- vendor/libspectrum/current/doc/libspectrum.txt 2007-01-21 14:20:56 UTC (rev 295) +++ vendor/libspectrum/current/doc/libspectrum.txt 2007-02-04 08:40:03 UTC (rev 296) @@ -1,4 +1,4 @@ -libspectrum 0.2.2 +libspectrum 0.3.0 ================= libspectrum is a fairly simple library designed to make the handling @@ -30,6 +30,15 @@ * In general, all output parameters (those which may be changed by the function) should be before all input parameters +Library capabilities +==================== + +If the library supports zlib compression (as is used, for instance in +SZX snapshots), then then the constant +LIBSPECTRUM_SUPPORTS_ZLIB_COMPRESSION will be defined and non-zero. If +the library does not support zlib compression, then the constant will +not be defined. + Defined types ============= @@ -88,6 +97,8 @@ LIBSPECTRUM_ERROR_SIGNATURE File does not have the right signature LIBSPECTRUM_ERROR_SLT Ugly kludge used to indicate that a .z80 file contains .slt data +LIBSPECTRUM_ERROR_INVALID An invalid parameter was supplied to a + function LIBSPECTRUM_ERROR_LOGIC An internal logic error has occured; should never be seen @@ -130,6 +141,7 @@ LIBSPECTRUM_MACHINE_PLUS3E Spectrum +3e LIBSPECTRUM_MACHINE_TC2048 Timex TC2048 LIBSPECTRUM_MACHINE_TC2068 Timex TC2068 +LIBSPECTRUM_MACHINE_TS2068 Timex TS2068 LIBSPECTRUM_MACHINE_PENT Pentagon 128 LIBSPECTRUM_MACHINE_SCORP Scorpion ZS 256 LIBSPECTRUM_MACHINE_SE Spectrum SE @@ -164,6 +176,9 @@ LIBSPECTRUM_MACHINE_CAPABILITY_KEMPSTON_JOYSTICK This machine has built-in Kempston joystick ports as on the TC2048. +LIBSPECTRUM_MACHINE_CAPABILITY_NTSC + This machine has an NTSC video output. + LIBSPECTRUM_MACHINE_CAPABILITY_PLUS3_MEMORY This machine can change into all-RAM configurations as the +2A/+3. @@ -228,6 +243,8 @@ LIBSPECTRUM_ID_HARDDISK_HDF A .hdf IDE hard disk image +LIBSPECTRUM_ID_MICRODRIVE_MDR A .mdf microdrive cartridge + LIBSPECTRUM_ID_RECORDING_RZX A .rzx input recording LIBSPECTRUM_ID_SNAPSHOT_PLUSD A +D snapshot @@ -238,9 +255,11 @@ LIBSPECTRUM_ID_SNAPSHOT_Z80 A .z80 snapshot LIBSPECTRUM_ID_SNAPSHOT_ZXS A .zxs snapshot (as used by zx32) +LIBSPECTRUM_ID_TAPE_CSW A .csw tape image LIBSPECTRUM_ID_TAPE_TAP A `normal' (Z80-style) .tap tape image LIBSPECTRUM_ID_TAPE_TZX A .tzx tape image LIBSPECTRUM_ID_TAPE_WARAJEVO A Warajevo-style .tap tape image +LIBSPECTRUM_ID_TAPE_Z80EM A Z80Em tape image `libspectrum_identify_file_raw' looks for defined signatures in the file as well as the extension of the filename and a couple of @@ -275,6 +294,7 @@ LIBSPECTRUM_CLASS_DISK_PLUS3 A +3 disk image LIBSPECTRUM_CLASS_DISK_TRDOS A TRDOS disk image LIBSPECTRUM_CLASS_HARDDISK An IDE hard disk image +LIBSPECTRUM_CLASS_MICRODRIVE A microdrive cartridge LIBSPECTRUM_CLASS_RECORDING An input recording LIBSPECTRUM_CLASS_SNAPSHOT A snapshot LIBSPECTRUM_CLASS_TAPE A tape image @@ -350,6 +370,12 @@ How many tstates after interrupt is the top-left pixel of the screen displayed. +libspectrum_word +libspectrum_timings_interrupt_length( libspectrum_machine machine ) + +How about t-states the machine holds /INT low for on a maskable +interrupt. + Creator information ------------------- @@ -358,43 +384,43 @@ libspectrum provides a `libspectrum_creator' structure to store this information. -libspectrum_error libspectrum_creator_alloc( libspectrum_creator **creator ); +libspectrum_error libspectrum_creator_alloc( libspectrum_creator **creator ) Allocate a new `libspectrum_creator' structure. -libspectrum_error libspectrum_creator_free( libspectrum_creator *creator ); +libspectrum_error libspectrum_creator_free( libspectrum_creator *creator ) Free the memory used by a `libspectrum_creator' structure. libspectrum_error libspectrum_creator_set_program( libspectrum_creator *creator, - const char *program ); + const char *program ) const libspectrum_byte* -libspectrum_creator_program( libspectrum_creator *creator ); +libspectrum_creator_program( libspectrum_creator *creator ) Set and retrieve the name of the program which created this file. libspectrum_error libspectrum_creator_set_major( libspectrum_creator *creator, - libspectrum_word major ); + libspectrum_word major ) libspectrum_word -libspectrum_creator_major( libspectrum_creator *creator ); +libspectrum_creator_major( libspectrum_creator *creator ) Set and retrieve the major version number of the program which created this file. libspectrum_error libspectrum_creator_set_minor( libspectrum_creator *creator, - libspectrum_word minor ); + libspectrum_word minor ) libspectrum_word -libspectrum_creator_minor( libspectrum_creator *creator ); +libspectrum_creator_minor( libspectrum_creator *creator ) Set and retrieve the minor version number of the program which created this file. libspectrum_error libspectrum_creator_set_competition_code( libspectrum_creator *creator, - libspectrum_dword competition_code ); + libspectrum_dword competition_code ) libspectrum_dword -libspectrum_creator_competition_code( libspectrum_creator *creator ); +libspectrum_creator_competition_code( libspectrum_creator *creator ) Set and retrieve the `competition code' of the program which created this file. The competition code can be used for on-line tournaments to @@ -402,6 +428,15 @@ released. If you don't understand the previous, you almost certainly don't need to worry about it! +libspectrum_error +libspectrum_creator_set_custom( libspectrum_creator *creator, + libspectrum_byte *data, size_t length ) +libspectrum_byte* libspectrum_creator_custom( libspectrum_creator *creator ) +size_t libspectrum_creator_custom_length( libspectrum_creator *creator ) + +Set and retrieve the (arbitrary) custom data from the program which +created this file. + Snapshot functions ================== @@ -520,9 +555,9 @@ * libspectrum_byte dock_ram[8] * libspectrum_byte* dock_cart[8] -* size_t joystick_active_count; -* libspectrum_joystick joystick_list[ SNAPSHOT_JOYSTICKS ]; -* int joystick_inputs[ SNAPSHOT_JOYSTICKS ]; +* size_t joystick_active_count +* libspectrum_joystick joystick_list[ SNAPSHOT_JOYSTICKS ] +* int joystick_inputs[ SNAPSHOT_JOYSTICKS ] Most of those should be fairly self-explanatory; those which may not be are: @@ -562,6 +597,26 @@ `joystick_inputs' gives the corresponding connections to the real machines keyboard and joysticks. + The available joystick types are defined by the libspectrum_joystick + enum, which can take the following values: + + LIBSPECTRUM_JOYSTICK_NONE No joystick connected + + LIBSPECTRUM_JOYSTICK_CURSOR Cursor joystick + LIBSPECTRUM_JOYSTICK_KEMPSTON Kempston joystick + LIBSPECTRUM_JOYSTICK_SINCLAIR_1 Sinclair joystick 1 + LIBSPECTRUM_JOYSTICK_SINCLAIR_2 Sinclair joystick 2 + LIBSPECTRUM_JOYSTICK_TIMEX_1 Timex joystick 1 + LIBSPECTRUM_JOYSTICK_TIMEX_2 Timex joystick 2 + LIBSPECTRUM_JOYSTICK_FULLER Fuller joystick + + The joystick input values can be any of: + + LIBSPECTRUM_JOYSTICK_INPUT_NONE Not connected + LIBSPECTRUM_JOYSTICK_INPUT_KEYBOARD Input from the real keyboard + LIBSPECTRUM_JOYSTICK_INPUT_JOYSTICK_1 Input from real joystick 1 + LIBSPECTRUM_JOYSTICK_INPUT_JOYSTICK_2 Input from real joystick 2 + With all those housekeeping routines out of the way, there are two main workhorses of the snapshot routines: @@ -582,7 +637,7 @@ libspectrum_snap_write( libspectrum_byte **buffer, size_t *length, int *out_flags, libspectrum_snap *snap, libspectrum_id_t type, libspectrum_creator *creator, - int in_flags ); + int in_flags ) Take the snapshot in `snap' and serialise it into `*buffer' as a snapshot of `type'. On entry, '*buffer' is assumed to be allocated @@ -711,6 +766,12 @@ 48K machine. The desired behaviour for things like the TC2048 is undefined in the .tzx format :-( +LIBSPECTRUM_TAPE_FLAGS_LEVEL_LOW The input signal from the tape should be + forced low at this edge +LIBSPECTRUM_TAPE_FLAGS_LEVEL_HIGH The input signal from the tape should be + forced high at this edge +LIBSPECTRUM_TAPE_FLAGS_NO_EDGE This "edge" isn't really an edge and doesn't + change the input signal from the tape. int libspectrum_tape_present( libspectrum_tape *tape ) @@ -739,13 +800,13 @@ Get the currently active block on the tape. libspectrum_tape_block* -libspectrum_tape_peek_next_block( libspectrum_tape *tape ); +libspectrum_tape_peek_next_block( libspectrum_tape *tape ) Get the next block on the tape, but don't move the tape along or initialise the block. libspectrum_tape_block* -libspectrum_tape_select_next_block( libspectrum_tape *tape ); +libspectrum_tape_select_next_block( libspectrum_tape *tape ) Move the tape along so it points to the next block, initialise that block and return it. @@ -832,6 +893,8 @@ LIBSPECTRUM_TAPE_BLOCK_PURE_DATA 0x14 LIBSPECTRUM_TAPE_BLOCK_RAW_DATA 0x15 +LIBSPECTRUM_TAPE_BLOCK_GENERALISED_DATA 0x19 + LIBSPECTRUM_TAPE_BLOCK_PAUSE 0x20 LIBSPECTRUM_TAPE_BLOCK_GROUP_START 0x21 LIBSPECTRUM_TAPE_BLOCK_GROUP_END 0x22 @@ -852,6 +915,10 @@ LIBSPECTRUM_TAPE_BLOCK_CONCAT 0x5a +The following block is not defined in the TZX format + +LIBSPECTRUM_TAPE_BLOCK_RLE_PULSE A run-length encoded list of pulses + These values are defined in the `libspectrum_tape_type' enumeration. The `concatenation' block (0x5a) is recognised on input, but just skipped; hence it wil never appear in a libspectrum_tape_block. @@ -962,6 +1029,9 @@ ROM TURBO +libspectrum_tape_generalised_data_symbol_table +data_table GENERALISED_DATA + int ids[] ARCHIVE_INFO HARDWARE @@ -980,6 +1050,13 @@ size_t pilot_pulses TURBO +libspectrum_word pilot_repeats GENERALISED_DATA + +libspectrum_word pilot_symbols GENERALISED_DATA + +libspectrum_tape_generalised_data_symbol_table +pilot_table GENERALISED_DATA + libspectrum_dword pulse_length LENGTH libspectrum_dword pulse_lengths[] PULSES @@ -1020,6 +1097,36 @@ flash-loading of tape blocks, and setting it should not be used unless absolutely necessary. +The libspectrum_tape_generalised_data_symbol_table is an opaque data +structure which represents the "symbol table" used in the TZX +generalised data block (ID 0x19). It can be accessed with the +following routines: + +libspectrum_dword libspectrum_tape_generalised_data_symbol_table_symbols_in_block( const libspectrum_tape_generalised_data_symbol_table *table ) +libspectrum_byte libspectrum_tape_generalised_data_symbol_table_max_pulses( cons +t libspectrum_tape_generalised_data_symbol_table *table ) +libspectrum_word libspectrum_tape_generalised_data_symbol_table_symbols_in_table +( const libspectrum_tape_generalised_data_symbol_table *table ) +libspectrum_tape_generalised_data_symbol* libspectrum_tape_generalised_data_symb +ol_table_symbol( const libspectrum_tape_generalised_data_symbol_table *table, si +ze_t which ) + +The libspectrum_tape_generalised_data_symbol represents one of the +symbols used in the generalised data block and can be accessed with +the following routines: + +libspectrum_tape_generalised_data_symbol_edge_type libspectrum_tape_generalised_ +data_symbol_type( const libspectrum_tape_generalised_data_symbol *symbol ) +libspectrum_word libspectrum_tape_generalised_data_symbol_pulse( const libspectr +um_tape_generalised_data_symbol *symbol, size_t which ) + +The following edge types are available: + + LIBSPECTRUM_TAPE_GENERALISED_DATA_SYMBOL_EDGE Invert signal polarity + LIBSPECTRUM_TAPE_GENERALISED_DATA_SYMBOL_NO_EDGE No polarity change + LIBSPECTRUM_TAPE_GENERALISED_DATA_SYMBOL_LOW Set signal low + LIBSPECTRUM_TAPE_GENERALISED_DATA_SYMBOL_HIGH Set signal high + Input recording functions ========================= @@ -1035,6 +1142,34 @@ Free the memory used by an input recording object as allocated by `libspectrum_rzx_alloc'. +libspectrum_error +libspectrum_rzx_start_input( libspectrum_rzx *rzx, libspectrum_dword tstates ) + +Start an input recording block int the object. + +libspectrum_error libspectrum_rzx_stop_input( libspectrum_rzx *rzx ) + +Stop the current input recording block. + +libspectrum_error +libspectrum_rzx_add_snap( libspectrum_rzx *rzx, libspectrum_snap *snap ) + +Add `snap' to the input recording at this point. + +libspectrum_error +libspectrum_rzx_rollback( libspectrum_rzx *rzx, libspectrum_snap **snap ) + +Return the input recording to the state it was at which the last +snapshot was inserted. That state is set up in `snap'. + +libspectrum_error +libspectrum_rzx_rollback_to( libspectrum_rzx *rzx, libspectrum_snap **snap, + size_t which ) + +Return the input recording to the state it was at which the <n>th +snapshot was inserted, where n is specified by `which'. That state is +set up in `snap'. + libspectrum_error libspectrum_rzx_store_frame( libspectrum_rzx *rzx, size_t instructions, size_t count, @@ -1064,7 +1199,7 @@ Return in `*byte' the next byte to be read from the IO ports from the current frame of `rzx'. -size_t libspectrum_rzx_tstates( libspectrum_rzx *rzx ); +size_t libspectrum_rzx_tstates( libspectrum_rzx *rzx ) Return the 'starting tstates' field of `rzx'. @@ -1114,6 +1249,41 @@ digitally signed using the specified DSA key; see below for more details. +Input recording iterators +------------------------- + +As with tapes, iterators are available to allow an application to +examine the structure of an input recording file. + +Such an iterator is initialised via + +libspectrum_rzx_iterator libspectrum_rzx_iterator_begin( libspectrum_rzx *rzx ) + +and moved to the next block via + +libspectrum_rzx_iterator +libspectrum_rzx_iterator_next( libspectrum_rzx_iterator it ) + +The type of block pointed to by the iterator can be obtained via the + +libspectrum_rzx_block_id +libspectrum_rzx_iterator_get_type( libspectrum_rzx_iterator it ) + +function. The return value will be one of: + + LIBSPECTRUM_RZX_CREATOR_BLOCK Creator information + LIBSPECTRUM_RZX_SIGN_START_BLOCK Start of signed information + LIBSPECTRUM_RZX_SIGN_END_BLOCK End of signed information + LIBSPECTRUM_RZX_SNAPSHOT_BLOCK Snapshot + LIBSPECTRUM_RZX_INPUT_BLOCK Input recording block + +If the iterator is pointing to a block of type LIBSPECTRUM_RZX_INPUT_BLOCK, +then the function + +size_t libspectrum_rzx_iterator_get_frames( libspectrum_rzx_iterator it ) + +can be used to obtain the number of frames stored in the block. + Digital signatures in RZX files ------------------------------- @@ -1208,14 +1378,110 @@ Exactly equivalent to libspectrum_rzx_write2( buffer, length, rzx, snap, LIBSPECTRUM_ID_SNAPSHOT_Z80, creator, compress, key ). +Microdrive handling functions +============================= + +Constants +--------- + +These are all #defines. + +LIBSPECTRUM_MICRODRIVE_BLOCK_MAX + +The maximum number of blocks which can be on a microdrive (254). + +LIBSPECTRUM_MICRODRIVE_HEAD_LEN + +The length in bytes of the header for a microdrive block in bytes +(15). + +LIBSPECTRUM_MICRODRIVE_DATA_LEN + +The length in bytes of the data for a microdrive block (512). + +LIBSPECTRUM_MICRODRIVE_BLOCK_LEN + +The total length in bytes of a microdrive block (2 * +LIBSPECTRUM_MICRODRIVE_HEAD_LEN + LISPECTRUM_MICRODRIVE_DATA_LEN + 1 = +543). + +LIBSPECTRUM_MICRODRIVE_CARTRIDGE_LENGTH + +The maximum length in bytes of a microdrive cartridge +(LIBSPECTRUM_MICRODRIVE_BLOCK_MAX * LIBSPECTRUM_MICRODRIVE_BLOCK_LEN = +137922). + +Routines +-------- + +Routines for handling images of microdrive cartridges. As usual, these +are accessed through an opaque structure, libspectrum_microdrive. + +libspectrum_error +libspectrum_microdrive_alloc( libspectrum_microdrive **microdrive ) + +Allocate a microdrive structure. + +libspectrum_error +libspectrum_microdrive_free( libspectrum_microdrive *microdrive ) + +Free a microdrive structure. + +libspectrum_byte +libspectrum_microdrive_data( const libspectrum_microdrive *microdrive, + size_t which ) +void +libspectrum_microdrive_set_data( libspectrum_microdrive *microdrive, + size_t which, libspectrum_byte data ) + +Return or set (respectively) the byte of data at offset `which' into +the cartridge. + +libspectrum_byte +libspectrum_microdrive_write_protect( const libspectrum_microdrive *microdrive ) +void WIN32_DLL +libspectrum_microdrive_set_write_protect( libspectrum_microdrive *microdrive, + int write_protect ) + +Return or set the state of the write protect tab of the microdrive. + +libspectrum_byte +libspectrum_microdrive_cartridge_len( const libspectrum_microdrive *microdrive ) + +void +libspectrum_microdrive_set_cartridge_len( libspectrum_microdrive *microdrive, + libspectrum_byte len ) + +Return or set the length in bytes of the cartridge in the drive. + +int +libspectrum_microdrive_checksum( libspectrum_microdrive *microdrive, + libspectrum_byte which ) + +Check whether the checksum for the <n>th block on the microdrive is +correct, where <n> is specified by `which'. + +.mdr file handling +------------------ + +libspectrum_error +libspectrum_microdrive_mdr_read( libspectrum_microdrive *microdrive, + libspectrum_byte *buffer, size_t length ) +libspectrum_error +libspectrum_microdrive_mdr_write( const libspectrum_microdrive *microdrive, + libspectrum_byte **buffer, size_t *length ) + +Read and write an image of a microdrive cartridge to a .mdr file. + Timex dock/exrom handling functions =================================== -The Timex TC2068 featured a cartridge port (the `dock') for which a -few pieces of software were made available. The Warajevo emulator -includes support for this feature, and uses the `.dck' extension for -images of these cartridges. Documentation on this format is available -at http://www.worldofspectrum.org/warajevo/Fformats.html#dck +The Timex TS2068 and TC2068 featured a cartridge port (the `dock') for +which a few pieces of software were made available. The Warajevo +emulator includes support for this feature, and uses the `.dck' +extension for images of these cartridges. Documentation on this format +is available at +http://www.worldofspectrum.org/warajevo/Fformats.html#dck Each .dck file can hold multiple 64Kb RAM banks, which are stored in a `libspectrum_dck' structure: @@ -1255,7 +1521,7 @@ Allocate a dock structure. -libspectrum_error libspectrum_dck_free( libspectrum_dck *dck, int keep_pages ); +libspectrum_error libspectrum_dck_free( libspectrum_dck *dck, int keep_pages ) Free a dock structure; if `keep_pages' is non-zero, any memory allocated to the structure will not be freed and can then be used by @@ -1263,7 +1529,7 @@ libspectrum_error libspectrum_dck_read( libspectrum_dck *dck, const libspectrum_byte *buffer, - size_t length ); + size_t length ) Read in a dock structure from the `length' byte long `buffer'. Images compressed with bzip2 or gzip will be automatically and transparently @@ -1362,4 +1628,4 @@ Write `data' to register `reg' of the IDE channgel `chn'. -$Id: libspectrum.txt,v 1.27 2006/08/12 13:09:23 pak21 Exp $ +$Id: libspectrum.txt,v 1.30 2007/01/20 17:53:54 pak21 Exp $ Modified: vendor/libspectrum/current/hacking/ChangeLog =================================================================== --- vendor/libspectrum/current/hacking/ChangeLog 2007-01-21 14:20:56 UTC (rev 295) +++ vendor/libspectrum/current/hacking/ChangeLog 2007-02-04 08:40:03 UTC (rev 296) @@ -349,4 +349,47 @@ 20060812 libspectrum.h.in,tape_block.c,doc/libspectrum.txt: add libspectrum_tape_block_metadata() function (needed to fix North and South and Super Hang-On; see bug #1531346). - +20070101 rzx.c: when rolling back, don't stop recording until we know + that the required snapshot exists. +20070102 tape.c,tape_block.[ch],tzx_read.c: stub support for TZX + "Generali[sz]ed Data" blocks (ID 0x19). +20070102 Makefile.am,internals.h,libspectrum.h.in,tape_accessors.{pl,txt}, + tape_block.[ch], tape_set.pl, tzx_read.c: sufficient 0x19 + functionality to allow tzxlist to do something with these blocks. +20070104 internals.h,libspectrum.h.in,symbol_table.c,tape_block.[ch], + tzx_read.c: next bit of 0x19 functionality. +20070104 libspectrum.h.in,symbol_table.c,tape_block.[ch]: symbol count of + 0 => 256 symbols in table. +20070104 tzx_read.c: generalised data block pilot data comes before the + data symbol table. +20070104 tape_accessors.c,tape_block.h,tzx_read.c: read pilot data from + generalised data blocks. +20070104 Makefile.am,tape_accessors.txt,tape_block.h,tzx_read.c: read data + stream from generalised data blocks. +20070104 internals.h,tape_block.c,tzx_read.c: free generalised block data + on success (tested) and failure (not tested). +20070105 tape.c,tape_block.[ch]: start of playback code for generalised + data blocks. +20070105 tape.c,tape_accessors.txt,tape_block.h,tzx_read.c: more playback + code for generalised data blocks; handles symbol type 0 only. +20070106 libspectrum.h.in,tape.c: playback for other generalised data + symbol types. +20070107 tape.c: set flags when playing back generalised data symbols as + well as the pilot. +20070117 microdrive.c: fix up checksum calculation (patch #1637011) + (Gergely Szasz). +20070119 libspectrum.h.in,doc/libspectrum.txt: tidy up and document in + preparation for a release. +20070120 doc/libspectrum.txt: document RZX iterators. +20070120 libspectrum.h.in,microdrive.c,doc/libspectrum.txt: tidy up and + document microdrive routines. +20070121 ChangeLog: bring up to date. +20070121 tzx_write.c: support for writing 0x19 blocks. +20070121 tzx_write.c: we now write TZX v1.20 files. +20070121 ChangeLog,tzx_write.c: length for archive info blocks was being + written out one byte too long. +20070202 <almost everything>: change URLs to sourceforge, my e-mail address + to @shadowmagic and remove my postal address. +20070202 TAG: libspectrum_0_3_0-trunk +20070202 BRANCH: libspectrum_0_3_0-branch +20070202 TAG: libspectrum_0_3_0-pre1 (libspectrum_0_3_0-branch) Modified: vendor/libspectrum/current/ide.c =================================================================== --- vendor/libspectrum/current/ide.c 2007-01-21 14:20:56 UTC (rev 295) +++ vendor/libspectrum/current/ide.c 2007-02-04 08:40:03 UTC (rev 296) @@ -2,7 +2,7 @@ Copyright (c) 2003-2004 Garry Lancaster, 2004 Philip Kendall - $Id: ide.c,v 1.6 2005/10/31 15:34:55 pak21 Exp $ + $Id: ide.c,v 1.7 2007/02/02 16:35:42 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 @@ -20,8 +20,7 @@ Author contact information: - E-mail: Philip Kendall <pak...@sr...> - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: Philip Kendall <phi...@sh...> */ Modified: vendor/libspectrum/current/internals.h =================================================================== --- vendor/libspectrum/current/internals.h 2007-01-21 14:20:56 UTC (rev 295) +++ vendor/libspectrum/current/internals.h 2007-02-04 08:40:03 UTC (rev 296) @@ -1,8 +1,8 @@ /* internals.h: functions which need to be called inter-file by libspectrum routines, but not by user code - Copyright (c) 2001-2005 Philip Kendall, Darren Salt + Copyright (c) 2001-2007 Philip Kendall, Darren Salt - $Id: internals.h,v 1.23 2005/05/07 14:39:03 pak21 Exp $ + $Id: internals.h,v 1.27 2007/02/02 16:35:42 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 @@ -20,8 +20,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ @@ -151,6 +150,18 @@ libspectrum_zxs_read( libspectrum_snap *snap, const libspectrum_byte *buffer, size_t buffer_length ); +/* Tape routines */ + +void libspectrum_tape_block_zero( libspectrum_tape_block *block ); + +libspectrum_error libspectrum_tape_block_read_symbol_table_parameters( + libspectrum_tape_block *block, int pilot, const libspectrum_byte **ptr ); + +libspectrum_error +libspectrum_tape_block_read_symbol_table( + libspectrum_tape_generalised_data_symbol_table *table, + const libspectrum_byte **ptr, size_t length ); + /* Crypto functions */ libspectrum_error Modified: vendor/libspectrum/current/libspectrum.c =================================================================== --- vendor/libspectrum/current/libspectrum.c 2007-01-21 14:20:56 UTC (rev 295) +++ vendor/libspectrum/current/libspectrum.c 2007-02-04 08:40:03 UTC (rev 296) @@ -1,7 +1,7 @@ /* libspectrum.c: Some general routines Copyright (c) 2001-2004 Philip Kendall, Darren Salt, Fredrick Meunier - $Id: libspectrum.c,v 1.83 2005/12/20 13:20:49 pak21 Exp $ + $Id: libspectrum.c,v 1.84 2007/02/02 16:35:42 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ Modified: vendor/libspectrum/current/libspectrum.h.in =================================================================== --- vendor/libspectrum/current/libspectrum.h.in 2007-01-21 14:20:56 UTC (rev 295) +++ vendor/libspectrum/current/libspectrum.h.in 2007-02-04 08:40:03 UTC (rev 296) @@ -1,7 +1,7 @@ /* libspectrum.h: the library for dealing with ZX Spectrum emulator files - Copyright (c) 2001-2006 Philip Kendall, Darren Salt, Fredrick Meunier + Copyright (c) 2001-2007 Philip Kendall, Darren Salt, Fredrick Meunier - $Id: libspectrum.h.in,v 1.134 2006/08/12 13:09:23 pak21 Exp $ + $Id: libspectrum.h.in,v 1.141 2007/02/02 16:35:42 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ @@ -160,7 +159,7 @@ LIBSPECTRUM_ID_HARDDISK_HDF, /* .hdf hard disk image */ LIBSPECTRUM_ID_CARTRIDGE_IF2, /* .rom Interface II cartridge image */ - /* Below here, present only in [FIXME] and later */ + /* Below here, present only in 0.3.0 and later */ LIBSPECTRUM_ID_MICRODRIVE_MDR, /* .mdr microdrive cartridge */ LIBSPECTRUM_ID_TAPE_CSW, /* .csw tape image */ @@ -189,7 +188,7 @@ LIBSPECTRUM_CLASS_HARDDISK, /* A hard disk image */ LIBSPECTRUM_CLASS_CARTRIDGE_IF2, /* Interface II cartridges */ - /* Below here, present only in [FIXME] and later */ + /* Below here, present only in 0.3.0 and later */ LIBSPECTRUM_CLASS_MICRODRIVE, /* Microdrive cartridges */ @@ -442,6 +441,8 @@ LIBSPECTRUM_TAPE_BLOCK_PURE_DATA, LIBSPECTRUM_TAPE_BLOCK_RAW_DATA, + LIBSPECTRUM_TAPE_BLOCK_GENERALISED_DATA = 0x19, + LIBSPECTRUM_TAPE_BLOCK_PAUSE = 0x20, LIBSPECTRUM_TAPE_BLOCK_GROUP_START, LIBSPECTRUM_TAPE_BLOCK_GROUP_END, @@ -469,6 +470,7 @@ } libspectrum_tape_type; typedef struct libspectrum_tape_block libspectrum_tape_block; +typedef struct libspectrum_tape_generalised_data_symbol_table libspectrum_tape_generalised_data_symbol_table; /* Something to step through all the blocks in a tape */ typedef struct _GSList *libspectrum_tape_iterator; @@ -477,6 +479,9 @@ extern const int WIN32_DLL LIBSPECTRUM_TAPE_FLAGS_BLOCK; /* End of block */ extern const int WIN32_DLL LIBSPECTRUM_TAPE_FLAGS_STOP; /* Stop tape */ extern const int WIN32_DLL LIBSPECTRUM_TAPE_FLAGS_STOP48; /* Stop tape if in 48K mode */ +extern const int WIN32_DLL LIBSPECTRUM_TAPE_FLAGS_NO_EDGE; /* Edge isn't really an edge */ +extern const int WIN32_DLL LIBSPECTRUM_TAPE_FLAGS_LEVEL_LOW; /* Set level low */ +extern const int WIN32_DLL LIBSPECTRUM_TAPE_FLAGS_LEVEL_HIGH; /* Set level high */ /* The states which a block can be in */ typedef enum libspectrum_tape_state_type { @@ -602,6 +607,8 @@ libspectrum_warajevo_read( libspectrum_tape *tape, const libspectrum_byte *buffer, size_t length ); +/*** Routines for iterating through a tape ***/ + libspectrum_tape_block WIN32_DLL * libspectrum_tape_iterator_init( libspectrum_tape_iterator *iterator, libspectrum_tape *tape ); @@ -609,6 +616,29 @@ libspectrum_tape_block WIN32_DLL * libspectrum_tape_iterator_next( libspectrum_tape_iterator *iterator ); +/*** Routines for handling the TZX generalised data block symbol table + structure ***/ + +typedef enum libspectrum_tape_generalised_data_symbol_edge_type { + + LIBSPECTRUM_TAPE_GENERALISED_DATA_SYMBOL_EDGE = 0x00, + LIBSPECTRUM_TAPE_GENERALISED_DATA_SYMBOL_NO_EDGE, + LIBSPECTRUM_TAPE_GENERALISED_DATA_SYMBOL_LOW, + LIBSPECTRUM_TAPE_GENERALISED_DATA_SYMBOL_HIGH, + +} libspectrum_tape_generalised_data_symbol_edge_type; + +typedef struct libspectrum_tape_generalised_data_symbol libspectrum_tape_generalised_data_symbol; + +libspectrum_dword libspectrum_tape_generalised_data_symbol_table_symbols_in_block( const libspectrum_tape_generalised_data_symbol_table *table ); +libspectrum_byte libspectrum_tape_generalised_data_symbol_table_max_pulses( const libspectrum_tape_generalised_data_symbol_table *table ); +libspectrum_word libspectrum_tape_generalised_data_symbol_table_symbols_in_table( const libspectrum_tape_generalised_data_symbol_table *table ); +libspectrum_tape_generalised_data_symbol* libspectrum_tape_generalised_data_symbol_table_symbol( const libspectrum_tape_generalised_data_symbol_table *table, size_t which ); + +libspectrum_tape_generalised_data_symbol_edge_type libspectrum_tape_generalised_data_symbol_type( const libspectrum_tape_generalised_data_symbol *symbol ); +libspectrum_word libspectrum_tape_generalised_data_symbol_pulse( const libspectrum_tape_generalised_data_symbol *symbol, size_t which ); + + /* * Input recording routines */ @@ -683,19 +713,7 @@ libspectrum_error WIN32_DLL libspectrum_rzx_alloc( libspectrum_rzx **rzx ); -/*** Routines for Z80Em raw tape format files ***/ - -libspectrum_error -libspectrum_z80em_read( libspectrum_tape *tape, - const libspectrum_byte *buffer, size_t length ); - -/*** Routines for CSW raw tape format files ***/ - -libspectrum_error -libspectrum_csw_read( libspectrum_tape *tape, - const libspectrum_byte *buffer, size_t length ); - -/* Something to step through all the blocks in a tape */ +/* Something to step through all the blocks in an input recording */ typedef struct _GSList *libspectrum_rzx_iterator; /* The block types which can appear in RZX files */ @@ -722,23 +740,11 @@ size_t WIN32_DLL libspectrum_rzx_iterator_get_frames( libspectrum_rzx_iterator it ); -/*** Routines for Z80Em and CSW raw tape files ***/ - -libspectrum_error WIN32_DLL -libspectrum_z80em_create( libspectrum_tape *tape, - const libspectrum_byte *buffer, - const size_t length ); - -libspectrum_error WIN32_DLL -libspectrum_csw_create( libspectrum_tape *tape, - const libspectrum_byte *buffer, const size_t length ); - /* * Microdrive image handling routines */ typedef struct libspectrum_microdrive libspectrum_microdrive; -typedef struct libspectrum_microdrive_block libspectrum_microdrive_block; #define LIBSPECTRUM_MICRODRIVE_BLOCK_MAX 254 #define LIBSPECTRUM_MICRODRIVE_HEAD_LEN 15 @@ -777,15 +783,6 @@ libspectrum_microdrive_set_cartridge_len( libspectrum_microdrive *microdrive, libspectrum_byte len ); -void WIN32_DLL -libspectrum_microdrive_get_block( const libspectrum_microdrive *microdrive, - libspectrum_byte which, - libspectrum_microdrive_block *block ); -void WIN32_DLL -libspectrum_microdrive_set_block( libspectrum_microdrive *microdrive, - libspectrum_byte which, - libspectrum_microdrive_block *block ); - /* .mdr format routines */ int WIN32_DLL Modified: vendor/libspectrum/current/libspectrum.qpg.in =================================================================== --- vendor/libspectrum/current/libspectrum.qpg.in 2007-01-21 14:20:56 UTC (rev 295) +++ vendor/libspectrum/current/libspectrum.qpg.in 2007-02-04 08:40:03 UTC (rev 296) @@ -50,21 +50,21 @@ <QPM:ProductDescription> <QPM:ProductName>libspectrum</QPM:ProductName> <QPM:ProductIdentifier>libspectrum</QPM:ProductIdentifier> - <QPM:ProductEmail>pak...@sr...</QPM:ProductEmail> + <QPM:ProductEmail>phi...@sh...</QPM:ProductEmail> <QPM:VendorName>public</QPM:VendorName> <QPM:VendorInstallName>public</QPM:VendorInstallName> - <QPM:VendorURL>http://www.srcf.ucam.org/~pak21/spectrum/libspectrum.html</QPM:VendorURL> + <QPM:VendorURL>http://fuse-emulator.sourceforge.net/libspectrum.php</QPM:VendorURL> <QPM:VendorEmbedURL/> - <QPM:VendorEmail>pak...@sr...</QPM:VendorEmail> + <QPM:VendorEmail>phi...@sh...</QPM:VendorEmail> <QPM:AuthorName>Philip Kendall</QPM:AuthorName> - <QPM:AuthorURL>http://www.srcf.ucam.org/~pak21/spectrum/libspectrum.html</QPM:AuthorURL> + <QPM:AuthorURL>http://fuse-emulator.sourceforge.net/libspectrum.php</QPM:AuthorURL> <QPM:AuthorEmbedURL/> - <QPM:AuthorEmail>pak...@sr...</QPM:AuthorEmail> + <QPM:AuthorEmail>phi...@sh...</QPM:AuthorEmail> <QPM:ProductIconSmall/> <QPM:ProductIconLarge/> <QPM:ProductDescriptionShort>libspectrum is a library which is designed to make the input and output of ZX Spectrum emulator files slightly easier than it would be otherwise.</QPM:ProductDescriptionShort> <QPM:ProductDescriptionLong>libspectrum is a library which is designed to make the input and output of ZX Spectrum emulator files slightly easier than it would be otherwise. Currently supported are: .z80, .szx, .sna, .zxs, .sp, .snp, .tzx, .tap, .rzx, .dck.</QPM:ProductDescriptionLong> - <QPM:ProductDescriptionURL>http://www.srcf.ucam.org/~pak21/spectrum/libspectrum.html</QPM:ProductDescriptionURL> + <QPM:ProductDescriptionURL>http://fuse-emulator.sourceforge.net/libspectrum.php</QPM:ProductDescriptionURL> <QPM:ProductDescriptionEmbedURL/> </QPM:ProductDescription> Modified: vendor/libspectrum/current/make-perl.c =================================================================== --- vendor/libspectrum/current/make-perl.c 2007-01-21 14:20:56 UTC (rev 295) +++ vendor/libspectrum/current/make-perl.c 2007-02-04 08:40:03 UTC (rev 296) @@ -1,7 +1,7 @@ /* make-sed.c: Generate a sed script to create the libspectrum_* typedefs Copyright (c) 2002-2003 Philip Kendall, Darren Salt - $Id: make-perl.c,v 1.17 2005/05/18 00:56:27 fredm Exp $ + $Id: make-perl.c,v 1.18 2007/02/02 16:35:43 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ Modified: vendor/libspectrum/current/microdrive.c =================================================================== --- vendor/libspectrum/current/microdrive.c 2007-01-21 14:20:56 UTC (rev 295) +++ vendor/libspectrum/current/microdrive.c 2007-02-04 08:40:03 UTC (rev 296) @@ -1,7 +1,7 @@ /* microdrive.c: Routines for handling microdrive images Copyright (c) 2004-2005 Philip Kendall - $Id: microdrive.c,v 1.3 2005/04/02 22:14:23 pak21 Exp $ + $Id: microdrive.c,v 1.6 2007/02/02 16:35:43 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Post: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ #include <config.h> @@ -39,7 +38,7 @@ }; -struct libspectrum_microdrive_block { +typedef struct libspectrum_microdrive_block { libspectrum_byte hdflag; /* bit0 = 1-head, ( 0 - data ) */ libspectrum_byte hdbnum; /* block num 1 -- 254 */ @@ -56,7 +55,7 @@ libspectrum_byte data[512]; /* data bytes */ libspectrum_byte datchk; /* data checksum */ -}; +} libspectrum_microdrive_block; const static size_t MDR_LENGTH = LIBSPECTRUM_MICRODRIVE_CARTRIDGE_LENGTH + 1; @@ -191,15 +190,9 @@ libspectrum_byte what ) { libspectrum_byte *data; - libspectrum_microdrive_block b; unsigned int checksum, carry; int i; - libspectrum_microdrive_get_block( microdrive, 0, &b ); - - if( ( b.recflg & 0x02 ) && b.reclen == 0 ) - return -1; /* BAD_BLOCK */ - #define DO_CHECK \ checksum += *data; /* LD A,E */ \ /* ADD A, (HL) */ \ @@ -239,24 +232,29 @@ return -1; /* PRESET BAD BLOCK */ } - checksum = 0; + checksum = 0; /* Block header */ for( i = LIBSPECTRUM_MICRODRIVE_HEAD_LEN; i > 1; i-- ) { DO_CHECK; } if( *(data++) != checksum ) return 1; - checksum = 0; + checksum = 0; /* Record header */ for( i = LIBSPECTRUM_MICRODRIVE_HEAD_LEN; i > 1; i-- ) { DO_CHECK; } if( *(data++) != checksum ) return 2; + if( ( *( data - 13 ) == 0 ) && ( *( data - 12 ) == 0 ) ) { + return 0; /* Erased / empty block: data checksum irrelevant */ + } + + checksum = 0; /* Data */ for( i = LIBSPECTRUM_MICRODRIVE_DATA_LEN; i > 0; i-- ) { DO_CHECK; } - if( *(data++) != checksum ) + if( *data != checksum ) return 3; return 0; Modified: vendor/libspectrum/current/myglib/Makefile.am =================================================================== --- vendor/libspectrum/current/myglib/Makefile.am 2007-01-21 14:20:56 UTC (rev 295) +++ vendor/libspectrum/current/myglib/Makefile.am 2007-02-04 08:40:03 UTC (rev 296) @@ -1,7 +1,7 @@ ## Process this file with automake to produce Makefile.in ## Copyright (c) 2004 Philip Kendall -## $Id: Makefile.am,v 1.3 2004/06/03 08:05:38 pak21 Exp $ +## $Id: Makefile.am,v 1.4 2007/02/02 16:35:45 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 @@ -19,8 +19,7 @@ ## ## Author contact information: ## -## E-mail: pak...@sr... -## Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England +## E-mail: phi...@sh... AUTOMAKE_OPTIONS = foreign Modified: vendor/libspectrum/current/myglib/ghash.c =================================================================== --- vendor/libspectrum/current/myglib/ghash.c 2007-01-21 14:20:56 UTC (rev 295) +++ vendor/libspectrum/current/myglib/ghash.c 2007-02-04 08:40:03 UTC (rev 296) @@ -10,7 +10,7 @@ Modified by Philip Kendall 2004. - $Id: ghash.c,v 1.4 2005/03/03 03:50:22 fredm Exp $ + $Id: ghash.c,v 1.5 2007/02/02 16:35:45 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 @@ -28,8 +28,7 @@ Author contact information: - Philip Kendall <pak...@sr...> - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + Philip Kendall <phi...@sh...> */ Modified: vendor/libspectrum/current/myglib/gslist.c =================================================================== --- vendor/libspectrum/current/myglib/gslist.c 2007-01-21 14:20:56 UTC (rev 295) +++ vendor/libspectrum/current/myglib/gslist.c 2007-02-04 08:40:03 UTC (rev 296) @@ -1,7 +1,7 @@ /* gslist.c: Minimal replacement for GSList Copyright (c) 2001-2004 Matan Ziv-Av, Philip Kendall, Marek Januszewski - $Id: gslist.c,v 1.19 2005/05/18 00:56:27 fredm Exp $ + $Id: gslist.c,v 1.20 2007/02/02 16:35:45 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ Modified: vendor/libspectrum/current/plusd.c =================================================================== --- vendor/libspectrum/current/plusd.c 2007-01-21 14:20:56 UTC (rev 295) +++ vendor/libspectrum/current/plusd.c 2007-02-04 08:40:03 UTC (rev 296) @@ -1,7 +1,7 @@ /* plusd.c: Routines for handling +D snapshots Copyright (c) 1998,2003 Philip Kendall - $Id: plusd.c,v 1.2 2003/08/14 13:28:16 pak21 Exp $ + $Id: plusd.c,v 1.3 2007/02/02 16:35:43 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ Modified: vendor/libspectrum/current/rzx.c =================================================================== --- vendor/libspectrum/current/rzx.c 2007-01-21 14:20:56 UTC (rev 295) +++ vendor/libspectrum/current/rzx.c 2007-02-04 08:40:03 UTC (rev 296) @@ -1,7 +1,7 @@ /* rzx.c: routines for dealing with .rzx files Copyright (c) 2002-2005 Philip Kendall - $Id: rzx.c,v 1.67 2005/05/07 14:39:03 pak21 Exp $ + $Id: rzx.c,v 1.69 2007/02/02 16:35:43 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 @@ -19,8 +19,7 @@ Author contact information: - E-mail: pak...@sr... - Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + E-mail: phi...@sh... */ @@ -331,11 +330,6 @@ GSList *previous, *list; rzx_block_t *block; - if( rzx->current_input ) { - libspectrum_error error; - error = libspectrum_rzx_stop_input( rzx ); if( error ) return error; - } - /* Find the last snapshot block in the file */ previous = NULL; list = rzx->blocks; @@ -357,6 +351,11 @@ return LIBSPECTRUM_ERROR_CORRUPT; } + if( rzx->current_input ) { + libspectrum_error error; + error = libspectrum_rzx_stop_input( rzx ); if( error ) return error; + } + /* Delete all blocks after the snapshot */ g_slist_foreach( previous->next, block_free_wrapper, NULL ); previous->next = NULL; @@ -375,11 +374,6 @@ rzx_block_t *block; size_t i; - if( rzx->current_input ) { - libspectrum_error error; - error = libspectrum_rzx_stop_input( rzx ); if( error ) return error; - } - /* Find the nth snapshot block in the file */ for( i = 0, list = rzx->blocks; i <= which; i++, list = list->next ) { list = @@ -396,6 +390,11 @@ previous = list; } + if( rzx->current_input ) { + libspectrum_error error; + error = libspectrum_rzx_stop_input( rzx ); if( error ) return error; + } + /* Delete all blocks after the snapshot */ g_slist_foreach( previous->next, block_free_wrapper, NULL ); previous->next = NULL; Modified: vendor/libspectrum/current/sna.c =================================================================== --- vendor/libspectrum/current/sna.c 2007-01-21 14:20:56 UTC (rev 295) +++ vendor/libspectrum/current/sna.c 2007-02-04 08:40:03 UTC (rev 296) @@ -1,7 +1,7 @@ /* sna.... [truncated message content] |
From: <fr...@us...> - 2007-01-21 14:20:56
|
Revision: 295 http://svn.sourceforge.net/fuse-for-macosx/?rev=295&view=rev Author: fredm Date: 2007-01-21 06:20:56 -0800 (Sun, 21 Jan 2007) Log Message: ----------- Make sure that the escape key works for ungrabbing the mouse again. Modified Paths: -------------- branches/fusegl/fuse/ui/cocoa/keysyms.m Modified: branches/fusegl/fuse/ui/cocoa/keysyms.m =================================================================== --- branches/fusegl/fuse/ui/cocoa/keysyms.m 2007-01-20 14:43:22 UTC (rev 294) +++ branches/fusegl/fuse/ui/cocoa/keysyms.m 2007-01-21 14:20:56 UTC (rev 295) @@ -34,7 +34,6 @@ virtual keyboard */ const keysyms_map_t keysyms_map[] = { - { 53, INPUT_KEY_Escape }, { 48, INPUT_KEY_Tab }, { 36, INPUT_KEY_Return }, { 51, INPUT_KEY_BackSpace }, @@ -103,6 +102,7 @@ non-extended mode Spectrum symbols present on keyboards */ const keysyms_map_t unicode_keysyms_map[] = { + { 27, INPUT_KEY_Escape }, { NSUpArrowFunctionKey, INPUT_KEY_Up }, { NSDownArrowFunctionKey, INPUT_KEY_Down }, { NSLeftArrowFunctionKey, INPUT_KEY_Left }, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2007-01-20 14:43:22
|
Revision: 294 http://svn.sourceforge.net/fuse-for-macosx/?rev=294&view=rev Author: fredm Date: 2007-01-20 06:43:22 -0800 (Sat, 20 Jan 2007) Log Message: ----------- * Move emulation object to it's own thread and call main thread methods with performSelectorOnMainThread:withObject:waitUntilDone:, call emulation thread methods with DO when emulation is not paused, this should avoid sound glitches when menus are selected or window is minimised * Fix screen updating during fastloading * Make sure that fuse_end is called somewhere on exit Modified Paths: -------------- branches/fusegl/fuse/TODO branches/fusegl/fuse/display.c 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/DebuggerController.m branches/fusegl/fuse/fusepb/controllers/FuseController.h branches/fusegl/fuse/fusepb/controllers/FuseController.m branches/fusegl/fuse/fusepb/controllers/LoadBinaryController.m branches/fusegl/fuse/fusepb/controllers/MemoryBrowserController.m branches/fusegl/fuse/fusepb/controllers/PokeFinderController.m branches/fusegl/fuse/fusepb/controllers/PreferencesController.m branches/fusegl/fuse/fusepb/controllers/RollbackController.m branches/fusegl/fuse/fusepb/controllers/SaveBinaryController.m branches/fusegl/fuse/fusepb/controllers/TapeBrowserController.m branches/fusegl/fuse/fusepb/models/Emulator.h branches/fusegl/fuse/fusepb/models/Emulator.m branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m branches/fusegl/fuse/settings.pl branches/fusegl/fuse/ui/cocoa/cocoaui.m Added Paths: ----------- branches/fusegl/fuse/ui/cocoa/cocoadisplay.m Removed Paths: ------------- branches/fusegl/fuse/ui/cocoa/cocoadisplay.c Modified: branches/fusegl/fuse/TODO =================================================================== --- branches/fusegl/fuse/TODO 2007-01-14 11:27:54 UTC (rev 293) +++ branches/fusegl/fuse/TODO 2007-01-20 14:43:22 UTC (rev 294) @@ -15,17 +15,18 @@ X Add support for bilinear etc. OpenGL filters X Add option to snap window size to 1x, 2x, 3x X Grab mouse in fullscreen mode -X Vend FuseController and DisplayOpenGLView -X Move emulation to it's own object and vend it -* Move emulation to it's own thread and call FuseController and DisplayOpenGLView - through their vended objects -* Use sheets rather than modal dialogs -* Run emulation in seperate thread to avoid sound glitches when menus are - selected or window is minimised +X Move emulation to it's own object +X Move emulation object to it's own thread and call main thread methods with + performSelectorOnMainThread:withObject:waitUntilDone:, call emulation thread + methods with DO when emulation is not paused, this should avoid sound glitches + when menus are selected or window is minimised +X Fix screen updating during fastloading +X Make sure that fuse_end is called somewhere on exit +* Use screenshot style code for minimise icon rather than reading out of GL texture * Restore activity icons * Add native joystick processing (removes SDL joystick input dependency from Fuse) -* Fix screen updating during fastloading +* Use sheets rather than modal dialogs (for Save As) * Put in latest hq[23]x filters (HQ2x_555 from ScummVM should do the trick) * Make border display optional * Quit keyhandling when command key is pressed Modified: branches/fusegl/fuse/display.c =================================================================== --- branches/fusegl/fuse/display.c 2007-01-14 11:27:54 UTC (rev 293) +++ branches/fusegl/fuse/display.c 2007-01-20 14:43:22 UTC (rev 294) @@ -641,7 +641,7 @@ critical_region_x = beam_x; } -static void +inline static void get_beam_position( int *x, int *y ) { if( tstates < machine_current->line_times[ 0 ] ) { @@ -655,8 +655,8 @@ *x = ( tstates - machine_current->line_times[ *y ] ) / 4; } -void -display_update_critical( int x, int y ) +inline static void +update_critical_internal( int x, int y ) { int beam_x, beam_y; @@ -683,9 +683,15 @@ copy_critical_region( beam_x, beam_y ); } +void +display_update_critical( int x, int y ) +{ + update_critical_internal( x, y ); +} + /* Mark the 8-pixel chunk at (x,y) as maybe dirty and update the critical region as appropriate */ -static void +inline static void display_dirty_chunk( int x, int y ) { /* If the write is between the start of the critical region and the @@ -693,7 +699,7 @@ if( y > critical_region_y || ( y == critical_region_y && x >= critical_region_x ) ) { - display_update_critical( x, y ); + update_critical_internal( x, y ); } display_maybe_dirty[y] |= ( (libspectrum_dword)1 << x ); Modified: branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj =================================================================== --- branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj 2007-01-14 11:27:54 UTC (rev 293) +++ branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj 2007-01-20 14:43:22 UTC (rev 294) @@ -273,7 +273,7 @@ B6A6F1200B3EA737000B88E9 /* cocoascreenshot.m in Sources */ = {isa = PBXBuildFile; fileRef = B6A6F11E0B3EA737000B88E9 /* cocoascreenshot.m */; }; B6B076B20B59FE9A00D4F95C /* Emulator.h in Headers */ = {isa = PBXBuildFile; fileRef = B6B076B00B59FE9A00D4F95C /* Emulator.h */; }; B6B076B30B59FE9A00D4F95C /* Emulator.m in Sources */ = {isa = PBXBuildFile; fileRef = B6B076B10B59FE9A00D4F95C /* Emulator.m */; }; - B6CE7F400B2830A300EB65B3 /* cocoadisplay.c in Sources */ = {isa = PBXBuildFile; fileRef = B6CE7F3A0B2830A300EB65B3 /* cocoadisplay.c */; }; + B6B99F8A0B5F798700EE408F /* cocoadisplay.m in Sources */ = {isa = PBXBuildFile; fileRef = B6B99F890B5F798700EE408F /* cocoadisplay.m */; }; B6CE7F410B2830A300EB65B3 /* cocoadisplay.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CE7F3B0B2830A300EB65B3 /* cocoadisplay.h */; }; B6CE7F420B2830A300EB65B3 /* cocoajoystick.c in Sources */ = {isa = PBXBuildFile; fileRef = B6CE7F3C0B2830A300EB65B3 /* cocoajoystick.c */; }; B6CE7F440B2830A300EB65B3 /* cocoaui.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CE7F3E0B2830A300EB65B3 /* cocoaui.h */; }; @@ -486,6 +486,7 @@ B6AF242A04156EE700F48F48 /* blank.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = blank.icns; path = resources/blank.icns; sourceTree = SOURCE_ROOT; }; B6B076B00B59FE9A00D4F95C /* Emulator.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Emulator.h; sourceTree = "<group>"; }; B6B076B10B59FE9A00D4F95C /* Emulator.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = Emulator.m; sourceTree = "<group>"; }; + B6B99F890B5F798700EE408F /* cocoadisplay.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = cocoadisplay.m; sourceTree = "<group>"; }; B6BA1A8B04E4F3290017354F /* gcrypt.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = gcrypt.framework; path = ../../libgcrypt/build/Deployment/gcrypt.framework; sourceTree = SOURCE_ROOT; }; B6BA1A9404E4F88F0017354F /* uijoystick.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = uijoystick.h; path = ../ui/uijoystick.h; sourceTree = SOURCE_ROOT; }; B6BA6F0207B1E04200E44C8D /* Preferences.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = Preferences.nib; path = nibs/Preferences.nib; sourceTree = "<group>"; }; @@ -503,7 +504,6 @@ 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>"; }; B6CE7F3E0B2830A300EB65B3 /* cocoaui.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cocoaui.h; sourceTree = "<group>"; }; @@ -918,8 +918,8 @@ B6CE7E8A0B28027000EB65B3 /* cocoa */ = { isa = PBXGroup; children = ( - B6CE7F3A0B2830A300EB65B3 /* cocoadisplay.c */, B6CE7F3B0B2830A300EB65B3 /* cocoadisplay.h */, + B6B99F890B5F798700EE408F /* cocoadisplay.m */, B6A6F10D0B3D6360000B88E9 /* cocoaerror.m */, B6CE7F3C0B2830A300EB65B3 /* cocoajoystick.c */, B6A6F11D0B3EA737000B88E9 /* cocoascreenshot.h */, @@ -1467,7 +1467,6 @@ 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 */, B6CE7F520B283A0700EB65B3 /* main.mm in Sources */, B6CE7FCE0B28FBD600EB65B3 /* DisplayOpenGLView.m in Sources */, @@ -1481,6 +1480,7 @@ B6A24E3B0B49C78700AD5B9D /* hq2x.cpp in Sources */, B6A24E3D0B49C78700AD5B9D /* hq3x.cpp in Sources */, B6B076B30B59FE9A00D4F95C /* Emulator.m in Sources */, + B6B99F8A0B5F798700EE408F /* cocoadisplay.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; Modified: branches/fusegl/fuse/fusepb/FuseMenus.h =================================================================== --- branches/fusegl/fuse/fusepb/FuseMenus.h 2007-01-14 11:27:54 UTC (rev 293) +++ branches/fusegl/fuse/fusepb/FuseMenus.h 2007-01-20 14:43:22 UTC (rev 294) @@ -30,19 +30,6 @@ #include "ui/cocoa/cocoadisplay.h" -void CreateTexture(Cocoa_Texture*); -void DestroyTexture(void); void SetEmulationHz(float); -void Hide(void); -void Open(void); -void SaveAs(void); -void Minimise(void); -void Help(void); -void Keyboard(void); -void TapePlay(void); -void RzxInsertSnap(void); -void RzxRollback(void); -void Preferences(void); - #endif /* #ifndef FUSEMENUS_H */ Modified: branches/fusegl/fuse/fusepb/FuseMenus.m =================================================================== --- branches/fusegl/fuse/fusepb/FuseMenus.m 2007-01-14 11:27:54 UTC (rev 293) +++ branches/fusegl/fuse/fusepb/FuseMenus.m 2007-01-20 14:43:22 UTC (rev 294) @@ -27,97 +27,11 @@ */ -#import "DisplayOpenGLView.h" #import "Emulator.h" #import "FuseController.h" #import "FuseMenus.h" -/* Definition of Mac native keycodes for characters used as menu shortcuts that - bring up a window. */ -#define QZ_m 0x2E -#define QZ_s 0x01 -#define QZ_h 0x04 -#define QZ_SLASH 0x2C -#define QZ_f 0x03 -#define QZ_o 0x1F -#define QZ_p 0x23 -#define QZ_b 0x0b -#define QZ_r 0x0f -#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 SetEmulationHz( float hz ) { [[Emulator instance] setEmulationHz:hz]; } - -void Hide(void) -{ - [NSApp hide:[FuseController singleton]]; - [[FuseController singleton] releaseCmdKeys:@"h":QZ_h]; -} - -void Open(void) -{ - [[FuseController singleton] open:nil]; - [[FuseController singleton] releaseCmdKeys:@"o":QZ_o]; -} - -void SaveAs(void) -{ - [[FuseController singleton] save_as:nil]; - [[FuseController singleton] releaseCmdKeys:@"s":QZ_s]; -} - -void Minimise(void) -{ - [[NSApp keyWindow] performMiniaturize:[FuseController singleton]]; - [[FuseController singleton] releaseCmdKeys:@"m":QZ_m]; -} - -void Help(void) -{ - [NSApp showHelp:[FuseController singleton]]; - [[FuseController singleton] releaseCmdKeys:@"?":QZ_SLASH]; -} - -void Keyboard(void) -{ - [[FuseController singleton] showKeyboardPane:nil]; - [[FuseController singleton] releaseCmdKeys:@"k":QZ_k]; -} - -void TapePlay(void) -{ - [[FuseController singleton] tape_play:nil]; - [[FuseController singleton] releaseCmdKeys:@"p":QZ_p]; -} - -void RzxInsertSnap(void) -{ - [[FuseController singleton] rzx_insert_snap:nil]; - [[FuseController singleton] releaseCmdKeys:@"b":QZ_b]; -} - -void RzxRollback(void) -{ - [[FuseController singleton] rzx_rollback:nil]; - [[FuseController singleton] releaseCmdKeys:@"r":QZ_r]; -} - -void Preferences(void) -{ - [[FuseController singleton] showPreferencesPane:nil]; - [[FuseController singleton] releaseCmdKeys:@",":QZ_COMMA]; -} Modified: branches/fusegl/fuse/fusepb/controllers/DebuggerController.m =================================================================== --- branches/fusegl/fuse/fusepb/controllers/DebuggerController.m 2007-01-14 11:27:54 UTC (rev 293) +++ branches/fusegl/fuse/fusepb/controllers/DebuggerController.m 2007-01-20 14:43:22 UTC (rev 294) @@ -25,6 +25,7 @@ */ #import "DebuggerController.h" +#import "DisplayOpenGLView.h" #include <config.h> @@ -163,7 +164,7 @@ - (void)debugger_activate:(id)sender { - fuse_emulation_pause(); + [[DisplayOpenGLView instance] pause]; [singleton showWindow:nil]; @@ -623,7 +624,7 @@ { [NSApp stopModal]; debugger_active = 0; - fuse_emulation_unpause(); + [[DisplayOpenGLView instance] unpause]; return 0; } Modified: branches/fusegl/fuse/fusepb/controllers/FuseController.h =================================================================== --- branches/fusegl/fuse/fusepb/controllers/FuseController.h 2007-01-14 11:27:54 UTC (rev 293) +++ branches/fusegl/fuse/fusepb/controllers/FuseController.h 2007-01-20 14:43:22 UTC (rev 294) @@ -128,8 +128,6 @@ - (IBAction)saveFileTypeClicked:(id)sender; -- (id)installServer; - - savePanelAccessoryView; - (NSPopUpButton*) saveFileType; @@ -148,12 +146,13 @@ - (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)openFile:(const char *)filename; - (void)openRecent:(id)sender; +- (void)addRecentSnapshotWithString:(NSString*)file; - (void)addRecentSnapshot:(const char *)filename; - (void)clearRecentSnapshots; +- (void)setTitle:(NSString*)title; - (void)openDisk:(specplus3_drive_number)drive; Modified: branches/fusegl/fuse/fusepb/controllers/FuseController.m =================================================================== --- branches/fusegl/fuse/fusepb/controllers/FuseController.m 2007-01-14 11:27:54 UTC (rev 293) +++ branches/fusegl/fuse/fusepb/controllers/FuseController.m 2007-01-20 14:43:22 UTC (rev 294) @@ -40,6 +40,8 @@ #import "SaveBinaryController.h" #import "TapeBrowserController.h" +#import "DisplayOpenGLView.h" + #include "dck.h" #include "debugger/debugger.h" #include "divide.h" @@ -141,22 +143,6 @@ return singleton ? singleton : [[self alloc] init]; } -- (id)installServer -{ - NSConnection *theConnection; - theConnection = [NSConnection defaultConnection]; - NSLog(@"Creating connection..."); - - [theConnection setRootObject:self]; - if ([theConnection registerName:@"FuseControllerSvr"] == NO) { - NSLog(@"FuseController failed to register name\n"); - } - - [theConnection retain]; - NSLog(@"done.\n"); - return self; -} - - (id)init { if ( singleton ) { @@ -228,8 +214,6 @@ recentSnapFileNames = [NSMutableArray arrayWithCapacity:NUM_RECENT_ITEMS]; [recentSnapFileNames retain]; - - [self installServer]; } return singleton; @@ -270,11 +254,11 @@ int error; char *filename = NULL; - fuse_emulation_pause(); + [[DisplayOpenGLView instance] pause]; filename = cocoaui_openpanel_get_filename( @"Insert Timex dock cartridge", dckFileTypes ); - if( !filename ) { fuse_emulation_unpause(); return; } + if( !filename ) { [[DisplayOpenGLView instance] unpause]; return; } error = dck_insert( filename ); if(error) goto error; @@ -284,16 +268,16 @@ error: free( filename ); - fuse_emulation_unpause(); + [[DisplayOpenGLView instance] unpause]; } - (IBAction)dock_eject:(id)sender { - fuse_emulation_pause(); + [[DisplayOpenGLView instance] pause]; dck_eject(); - fuse_emulation_unpause(); + [[DisplayOpenGLView instance] unpause]; } - (IBAction)if2_open:(id)sender @@ -301,11 +285,11 @@ int error; char *filename = NULL; - fuse_emulation_pause(); + [[DisplayOpenGLView instance] pause]; filename = cocoaui_openpanel_get_filename( @"Insert Interface II cartridge", romFileTypes ); - if( !filename ) { fuse_emulation_unpause(); return; } + if( !filename ) { [[DisplayOpenGLView instance] unpause]; return; } error = if2_insert( filename ); if(error) goto error; @@ -315,16 +299,16 @@ error: free( filename ); - fuse_emulation_unpause(); + [[DisplayOpenGLView instance] unpause]; } - (IBAction)if2_eject:(id)sender { - fuse_emulation_pause(); + [[DisplayOpenGLView instance] pause]; if2_eject(); - fuse_emulation_unpause(); + [[DisplayOpenGLView instance] unpause]; } - (IBAction)ide_insert:(id)sender @@ -332,11 +316,11 @@ int error=0; char *filename = NULL; - fuse_emulation_pause(); + [[DisplayOpenGLView instance] pause]; filename = cocoaui_openpanel_get_filename( @"Insert hard disk file", ideFileTypes ); - if( !filename ) { fuse_emulation_unpause(); return; } + if( !filename ) { [[DisplayOpenGLView instance] unpause]; return; } switch( [sender tag] ) { case 41: error = simpleide_insert( filename, LIBSPECTRUM_IDE_MASTER ); break; @@ -355,12 +339,12 @@ error: free( filename ); - fuse_emulation_unpause(); + [[DisplayOpenGLView instance] unpause]; } - (IBAction)ide_commit:(id)sender { - fuse_emulation_pause(); + [[DisplayOpenGLView instance] pause]; switch( [sender tag] ) { case 51: simpleide_commit( LIBSPECTRUM_IDE_MASTER ); break; @@ -372,7 +356,7 @@ case 57: divide_commit( LIBSPECTRUM_IDE_SLAVE ); break; } - fuse_emulation_unpause(); + [[DisplayOpenGLView instance] unpause]; } - (IBAction)ide_eject:(id)sender @@ -397,10 +381,10 @@ { char *filename = NULL; - fuse_emulation_pause(); + [[DisplayOpenGLView instance] pause]; filename = cocoaui_openpanel_get_filename( @"Insert microdrive disk file", mdrFileTypes ); - if( !filename ) { fuse_emulation_unpause(); return; } + if( !filename ) { [[DisplayOpenGLView instance] unpause]; return; } if1_mdr_insert( filename, [sender tag] - 30 ); @@ -408,7 +392,7 @@ free( filename ); - fuse_emulation_unpause(); + [[DisplayOpenGLView instance] unpause]; } - (IBAction)mdr_commit:(id)sender @@ -417,10 +401,10 @@ if( !if1_mdr_sync( NULL, [sender tag] - 30 ) ) return; - fuse_emulation_pause(); + [[DisplayOpenGLView instance] pause]; filename = cocoaui_savepanel_get_filename( @"Write Microdrive Cartridge As", [NSArray arrayWithObjects:@"mdr", nil] ); - if( !filename ) { fuse_emulation_unpause(); return; } + if( !filename ) { [[DisplayOpenGLView instance] unpause]; return; } if1_mdr_sync( filename, [sender tag] - 30 ); @@ -428,7 +412,7 @@ free( filename ); - fuse_emulation_unpause(); + [[DisplayOpenGLView instance] unpause]; } - (IBAction)mdr_eject:(id)sender @@ -437,10 +421,10 @@ if( !if1_mdr_eject( NULL, [sender tag] - 30 ) ) return; - fuse_emulation_pause(); + [[DisplayOpenGLView instance] pause]; filename = cocoaui_savepanel_get_filename( @"Write Microdrive Cartridge As", [NSArray arrayWithObjects:@"mdr", nil] ); - if( !filename ) { fuse_emulation_unpause(); return; } + if( !filename ) { [[DisplayOpenGLView instance] unpause]; return; } if1_mdr_eject( filename, [sender tag] - 30 ); @@ -448,7 +432,7 @@ free( filename ); - fuse_emulation_unpause(); + [[DisplayOpenGLView instance] unpause]; } - (IBAction)mdr_writep:(id)sender @@ -462,11 +446,11 @@ { char *filename = NULL; - fuse_emulation_pause(); + [[DisplayOpenGLView instance] pause]; filename = cocoaui_openpanel_get_filename( @"Open Spectrum File", allFileTypes ); - if( !filename ) { fuse_emulation_unpause(); return; } + if( !filename ) { [[DisplayOpenGLView instance] unpause]; return; } [self addRecentSnapshot:filename]; @@ -474,28 +458,28 @@ free(filename); - fuse_emulation_unpause(); + [[DisplayOpenGLView instance] unpause]; } - (IBAction)reset:(id)sender { - fuse_emulation_pause(); + [[DisplayOpenGLView instance] pause]; machine_reset(); - fuse_emulation_unpause(); + [[DisplayOpenGLView instance] unpause]; } - (IBAction)nmi:(id)sender { int error; - fuse_emulation_pause(); + [[DisplayOpenGLView instance] pause]; error = event_add( 0, EVENT_TYPE_NMI ); /* Complain if( error ) return error; */ - fuse_emulation_unpause(); + [[DisplayOpenGLView instance] unpause]; } - (IBAction)rzx_play:(id)sender @@ -504,11 +488,11 @@ if( rzx_playback || rzx_recording ) return; - fuse_emulation_pause(); + [[DisplayOpenGLView instance] pause]; recording = cocoaui_openpanel_get_filename( @"Start Replay", rzxFileTypes ); - if( !recording ) { fuse_emulation_unpause(); return; } + if( !recording ) { [[DisplayOpenGLView instance] unpause]; return; } [self addRecentSnapshot:recording]; @@ -520,7 +504,7 @@ ui_menu_activate( UI_MENU_ITEM_RECORDING, 1 ); - fuse_emulation_unpause(); + [[DisplayOpenGLView instance] unpause]; } - (IBAction)rzx_insert_snap:(id)sender @@ -550,18 +534,18 @@ if( !rzx_recording ) return; - fuse_emulation_pause(); + [[DisplayOpenGLView instance] pause]; error = libspectrum_rzx_rollback( rzx, &snap ); - if( error ) { fuse_emulation_unpause(); return; } + if( error ) { [[DisplayOpenGLView instance] unpause]; return; } error = snapshot_copy_from( snap ); - if( error ) { fuse_emulation_unpause(); return; } + if( error ) { [[DisplayOpenGLView instance] unpause]; return; } error = libspectrum_rzx_start_input( rzx, tstates ); - if( error ) { fuse_emulation_unpause(); return; } + if( error ) { [[DisplayOpenGLView instance] unpause]; return; } - fuse_emulation_unpause(); + [[DisplayOpenGLView instance] unpause]; } - (IBAction)rzx_start:(id)sender @@ -570,10 +554,10 @@ if( rzx_playback || rzx_recording ) return; - fuse_emulation_pause(); + [[DisplayOpenGLView instance] pause]; recording = cocoaui_savepanel_get_filename( @"Start Recording", [NSArray arrayWithObjects:@"rzx", nil] ); - if( !recording ) { fuse_emulation_unpause(); return; } + if( !recording ) { [[DisplayOpenGLView instance] unpause]; return; } rzx_start_recording( recording, 1 ); @@ -581,7 +565,7 @@ ui_menu_activate( UI_MENU_ITEM_RECORDING, 1 ); - fuse_emulation_unpause(); + [[DisplayOpenGLView instance] unpause]; } - (IBAction)rzx_start_snap:(id)sender @@ -590,16 +574,16 @@ if( rzx_playback || rzx_recording ) return; - fuse_emulation_pause(); + [[DisplayOpenGLView instance] pause]; snap = cocoaui_openpanel_get_filename( @"Load Snapshot", snapFileTypes ); - if( !snap ) { fuse_emulation_unpause(); return; } + if( !snap ) { [[DisplayOpenGLView instance] unpause]; return; } recording = cocoaui_savepanel_get_filename( @"Start Recording", [NSArray arrayWithObjects:@"rzx", nil] ); - if( !recording ) { free( snap ); fuse_emulation_unpause(); return; } + if( !recording ) { free( snap ); [[DisplayOpenGLView instance] unpause]; return; } if( snapshot_read( snap ) ) { - free( snap ); free( recording ); fuse_emulation_unpause(); return; + free( snap ); free( recording ); [[DisplayOpenGLView instance] unpause]; return; } rzx_start_recording( recording, settings_current.embed_snapshot ); @@ -610,7 +594,7 @@ ui_menu_activate( UI_MENU_ITEM_RECORDING, 1 ); - fuse_emulation_unpause(); + [[DisplayOpenGLView instance] unpause]; } - (IBAction)rzx_stop:(id)sender @@ -627,10 +611,10 @@ if( psg_recording ) return; - fuse_emulation_pause(); + [[DisplayOpenGLView instance] pause]; psgfile = cocoaui_savepanel_get_filename( @"Start AY Sound Recording", [NSArray arrayWithObjects:@"psg", nil] ); - if( !psgfile ) { fuse_emulation_unpause(); return; } + if( !psgfile ) { [[DisplayOpenGLView instance] unpause]; return; } psg_start_recording( psgfile ); @@ -640,7 +624,7 @@ ui_menu_activate( UI_MENU_ITEM_AY_LOGGING, 1 ); - fuse_emulation_unpause(); + [[DisplayOpenGLView instance] unpause]; } - (IBAction)psg_stop:(id)sender @@ -655,11 +639,11 @@ { char *filename = NULL; - fuse_emulation_pause(); + [[DisplayOpenGLView instance] pause]; filename = cocoaui_savepanel_get_filename( @"Save Snapshot As", [NSArray arrayWithObjects:@"szx", @"z80", @"sna", nil] ); - if( !filename ) { fuse_emulation_unpause(); return; } + if( !filename ) { [[DisplayOpenGLView instance] unpause]; return; } snapshot_write( filename ); @@ -670,18 +654,18 @@ free( filename ); - fuse_emulation_unpause(); + [[DisplayOpenGLView instance] unpause]; } - (IBAction)open_screen:(id)sender { char *filename = NULL; - fuse_emulation_pause(); + [[DisplayOpenGLView instance] pause]; filename = cocoaui_openpanel_get_filename( @"Open SCR Screenshot", scrFileType ); - if( !filename ) { fuse_emulation_unpause(); return; } + if( !filename ) { [[DisplayOpenGLView instance] unpause]; return; } screenshot_scr_read( filename ); @@ -691,7 +675,7 @@ display_refresh_all(); - fuse_emulation_unpause(); + [[DisplayOpenGLView instance] unpause]; } - (IBAction)profiler_start:(id)sender @@ -703,27 +687,27 @@ { char *filename = NULL; - fuse_emulation_pause(); + [[DisplayOpenGLView instance] pause]; filename = cocoaui_savepanel_get_filename( @"Save Profile Data As", [NSArray arrayWithObjects:@"profile", nil] ); - if( !filename ) { fuse_emulation_unpause(); return; } + if( !filename ) { [[DisplayOpenGLView instance] unpause]; return; } profile_finish( filename ); free( filename ); - fuse_emulation_unpause(); + [[DisplayOpenGLView instance] unpause]; } - (IBAction)save_screen:(id)sender { char *filename = NULL; - fuse_emulation_pause(); + [[DisplayOpenGLView instance] pause]; filename = cocoaui_savepanel_get_filename( @"Save Screenshot As", [NSArray arrayWithObjects:@"scr", nil] ); - if( !filename ) { fuse_emulation_unpause(); return; } + if( !filename ) { [[DisplayOpenGLView instance] unpause]; return; } screenshot_scr_write( filename ); @@ -734,18 +718,18 @@ free( filename ); - fuse_emulation_unpause(); + [[DisplayOpenGLView instance] unpause]; } - (IBAction)export_screen:(id)sender { char *filename = NULL; - fuse_emulation_pause(); + [[DisplayOpenGLView instance] pause]; filename = cocoaui_savepanel_get_filename( @"Export Screenshot", [NSArray arrayWithObjects:@"png", @"tiff", @"bmp", @"jpg", @"gif", nil] ); - if( !filename ) { fuse_emulation_unpause(); return; } + if( !filename ) { [[DisplayOpenGLView instance] unpause]; return; } screenshot_write( filename ); @@ -754,7 +738,7 @@ free( filename ); - fuse_emulation_unpause(); + [[DisplayOpenGLView instance] unpause]; } - (IBAction)save_options:(id)sender @@ -787,11 +771,11 @@ { char *filename = NULL; - fuse_emulation_pause(); + [[DisplayOpenGLView instance] pause]; filename = cocoaui_openpanel_get_filename( @"Open Tape", tapeFileTypes ); - if( !filename ) { fuse_emulation_unpause(); return; } + if( !filename ) { [[DisplayOpenGLView instance] unpause]; return; } tape_open_default_autoload( filename, NULL ); @@ -799,7 +783,7 @@ free( filename ); - fuse_emulation_unpause(); + [[DisplayOpenGLView instance] unpause]; } - (IBAction)tape_play:(id)sender @@ -1042,13 +1026,6 @@ [if1 setEnabled:active == 0 ? NO : YES]; } -- (int)ui_statusbar_update_speed:(float)speed -{ - [window setTitle:[NSString stringWithFormat:@"Fuse - %3.0f%%", speed]]; - - return 0; -} - - (BOOL)validateMenuItem:(id <NSMenuItem>)menuItem { switch( [menuItem tag] ) { @@ -1140,13 +1117,11 @@ } } -- (void)openFile:(char *)filename +- (void)openFile:(const char *)filename { - if( !filename ) { fuse_emulation_unpause(); return; } + if( !filename ) { [[DisplayOpenGLView instance] unpause]; return; } - utils_open_file( filename, settings_current.auto_load, NULL ); - - display_refresh_all(); + [[DisplayOpenGLView instance] openFile:filename]; } - (void)openRecent:(id)fileMenu @@ -1159,11 +1134,11 @@ [self addRecentSnapshot:filename]; - fuse_emulation_pause(); + [[DisplayOpenGLView instance] pause]; [self openFile:filename]; - fuse_emulation_unpause(); + [[DisplayOpenGLView instance] unpause]; } - (void)generateUniqueLabels:(NSString *)filename @@ -1229,14 +1204,13 @@ } } -- (void)addRecentSnapshot:(const char *)filename +- (void)addRecentSnapshotWithString:(NSString*)file { NSMenuItem *menuItem; - NSString *file = [NSString stringWithUTF8String:filename]; NSFileManager *manager = [NSFileManager defaultManager]; /* We only work with absolute paths */ - if(*filename != '/') return; + if([file characterAtIndex:0] != '/') return; if(![manager fileExistsAtPath:file]) return; @@ -1278,6 +1252,12 @@ } } +- (void)addRecentSnapshot:(const char *)filename +{ + NSString *file = [NSString stringWithUTF8String:filename]; + [self addRecentSnapshotWithString:file]; +} + - (void)clearRecentSnapshots { int numMenuItems = [recentSnaps numberOfItems]; @@ -1289,12 +1269,17 @@ [recentSnapFileNames removeAllObjects]; } +- (void)setTitle:(NSString*)title +{ + [window setTitle:title]; +} + - (void)openDisk:(specplus3_drive_number)drive { char *filename = NULL; NSArray *fileTypes; - fuse_emulation_pause(); + [[DisplayOpenGLView instance] pause]; if( machine_current->machine == LIBSPECTRUM_MACHINE_PLUS3 ) { fileTypes = plus3FileTypes; @@ -1307,7 +1292,7 @@ @"Insert disk into drive B:" ), fileTypes ); - if( !filename ) { fuse_emulation_unpause(); return; } + if( !filename ) { [[DisplayOpenGLView instance] unpause]; return; } [self addRecentSnapshot:filename]; @@ -1319,7 +1304,7 @@ free( filename ); - fuse_emulation_unpause(); + [[DisplayOpenGLView instance] unpause]; } - (void)setTapePlayMenu:(ui_statusbar_state)state @@ -1486,11 +1471,13 @@ static void cocoaui_disk_eject( specplus3_drive_number drive, int write ) { + [[DisplayOpenGLView instance] pause]; if( machine_current->machine == LIBSPECTRUM_MACHINE_PLUS3 ) { specplus3_disk_eject( drive, write ); } else { trdos_disk_eject( drive, write ); } + [[DisplayOpenGLView instance] unpause]; } int @@ -1681,11 +1668,11 @@ { char *filename = NULL; - fuse_emulation_pause(); + [[DisplayOpenGLView instance] pause]; filename = cocoaui_savepanel_get_filename( @"Write Tape As", [NSArray arrayWithObjects:@"tzx", @"tap", nil] ); - if( !filename ) { fuse_emulation_unpause(); return 1; } + if( !filename ) { [[DisplayOpenGLView instance] unpause]; return 1; } tape_write( filename ); @@ -1693,7 +1680,7 @@ free( filename ); - fuse_emulation_unpause(); + [[DisplayOpenGLView instance] unpause]; return 0; } @@ -1710,12 +1697,12 @@ return 0; } - fuse_emulation_pause(); + [[DisplayOpenGLView instance] pause]; NSString *title = [NSString stringWithFormat:@"Write +3 Disk %c: As", drive]; filename = cocoaui_savepanel_get_filename( title, [NSArray arrayWithObjects:@"dsk", nil] ); - if( !filename ) { fuse_emulation_unpause(); return 1; } + if( !filename ) { [[DisplayOpenGLView instance] unpause]; return 1; } specplus3_disk_write( which, filename ); @@ -1723,7 +1710,7 @@ free( filename ); - fuse_emulation_unpause(); + [[DisplayOpenGLView instance] unpause]; return 0; } @@ -1741,12 +1728,12 @@ default: drive = '?'; break; } - fuse_emulation_pause(); + [[DisplayOpenGLView instance] pause]; NSString *title = [NSString stringWithFormat:@"Write TR-DOS Disk %c: As", drive]; filename = cocoaui_savepanel_get_filename( title, [NSArray arrayWithObjects:@"trd", nil] ); - if( !filename ) { fuse_emulation_unpause(); return 1; } + if( !filename ) { [[DisplayOpenGLView instance] unpause]; return 1; } trdos_disk_write( which, filename ); @@ -1754,7 +1741,7 @@ free( filename ); - fuse_emulation_unpause(); + [[DisplayOpenGLView instance] unpause]; return 0; } @@ -1771,7 +1758,7 @@ if( ui_mouse_grabbed ) ui_mouse_grabbed = ui_mouse_release( 1 ); - fuse_emulation_pause(); + [[DisplayOpenGLView instance] pause]; confirm = UI_CONFIRM_SAVE_CANCEL; @@ -1790,7 +1777,7 @@ confirm = UI_CONFIRM_SAVE_CANCEL; } - fuse_emulation_unpause(); + [[DisplayOpenGLView instance] unpause]; return confirm; } @@ -1851,7 +1838,7 @@ if( ui_mouse_grabbed ) ui_mouse_grabbed = ui_mouse_release( 1 ); - fuse_emulation_pause(); + [[DisplayOpenGLView instance] pause]; confirm = UI_CONFIRM_JOYSTICK_NONE; @@ -1872,7 +1859,7 @@ [alert release]; - fuse_emulation_unpause(); + [[DisplayOpenGLView instance] unpause]; return confirm; } @@ -1887,14 +1874,14 @@ if( ui_mouse_grabbed ) ui_mouse_grabbed = ui_mouse_release( 1 ); - fuse_emulation_pause(); + [[DisplayOpenGLView instance] pause]; NSString *m = [NSString stringWithUTF8String:message]; result = NSRunAlertPanel(@"Confirm", m, @"OK", @"Cancel", nil); if( result == NSAlertDefaultReturn ) confirm = 1; - fuse_emulation_unpause(); + [[DisplayOpenGLView instance] unpause]; return confirm; } Modified: branches/fusegl/fuse/fusepb/controllers/LoadBinaryController.m =================================================================== --- branches/fusegl/fuse/fusepb/controllers/LoadBinaryController.m 2007-01-14 11:27:54 UTC (rev 293) +++ branches/fusegl/fuse/fusepb/controllers/LoadBinaryController.m 2007-01-20 14:43:22 UTC (rev 294) @@ -27,9 +27,9 @@ #include <config.h> #import "LoadBinaryController.h" +#import "DisplayOpenGLView.h" #import "NumberFormatter.h" -#include "fuse.h" #include "memory.h" #include "spectrum.h" #include <libspectrum.h> @@ -93,12 +93,12 @@ [NSApp stopModal]; [[self window] close]; - fuse_emulation_unpause(); + [[DisplayOpenGLView instance] unpause]; } - (void)showWindow:(id)sender { - fuse_emulation_pause(); + [[DisplayOpenGLView instance] pause]; [super showWindow:sender]; Modified: branches/fusegl/fuse/fusepb/controllers/MemoryBrowserController.m =================================================================== --- branches/fusegl/fuse/fusepb/controllers/MemoryBrowserController.m 2007-01-14 11:27:54 UTC (rev 293) +++ branches/fusegl/fuse/fusepb/controllers/MemoryBrowserController.m 2007-01-20 14:43:22 UTC (rev 294) @@ -26,7 +26,8 @@ #import "MemoryBrowserController.h" -#include "fuse.h" +#import "DisplayOpenGLView.h" + #include "memory.h" @implementation MemoryBrowserController @@ -67,7 +68,7 @@ [memoryBrowser reloadData]; - fuse_emulation_unpause(); + [[DisplayOpenGLView instance] unpause]; } - (void)showWindow:(id)sender @@ -76,7 +77,7 @@ NSString *address; NSMutableString *hex, *data; - fuse_emulation_pause(); + [[DisplayOpenGLView instance] pause]; tableContents = [NSMutableArray arrayWithCapacity:0xfff]; Modified: branches/fusegl/fuse/fusepb/controllers/PokeFinderController.m =================================================================== --- branches/fusegl/fuse/fusepb/controllers/PokeFinderController.m 2007-01-14 11:27:54 UTC (rev 293) +++ branches/fusegl/fuse/fusepb/controllers/PokeFinderController.m 2007-01-20 14:43:22 UTC (rev 294) @@ -28,6 +28,7 @@ #import "NumberFormatter.h" #import "PokeFinderController.h" +#import "DisplayOpenGLView.h" #include "fuse.h" #include "debugger/debugger.h" @@ -112,12 +113,12 @@ [matchList reloadData]; - fuse_emulation_unpause(); + [[DisplayOpenGLView instance] unpause]; } - (void)showWindow:(id)sender { - fuse_emulation_pause(); + [[DisplayOpenGLView instance] pause]; [super showWindow:sender]; Modified: branches/fusegl/fuse/fusepb/controllers/PreferencesController.m =================================================================== --- branches/fusegl/fuse/fusepb/controllers/PreferencesController.m 2007-01-14 11:27:54 UTC (rev 293) +++ branches/fusegl/fuse/fusepb/controllers/PreferencesController.m 2007-01-20 14:43:22 UTC (rev 294) @@ -114,7 +114,7 @@ - (void)showWindow:(id)sender { - fuse_emulation_pause(); + [[DisplayOpenGLView instance] pause]; /* Values in Fuse may have been updated, put them in saved settings */ settings_write_config( &settings_current ); @@ -166,11 +166,7 @@ fuse_joystick_end(); fuse_joystick_init(); - 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]; + [[DisplayOpenGLView instance] unpause]; } - (IBAction)chooseFile:(id)sender Modified: branches/fusegl/fuse/fusepb/controllers/RollbackController.m =================================================================== --- branches/fusegl/fuse/fusepb/controllers/RollbackController.m 2007-01-14 11:27:54 UTC (rev 293) +++ branches/fusegl/fuse/fusepb/controllers/RollbackController.m 2007-01-20 14:43:22 UTC (rev 294) @@ -28,10 +28,11 @@ #import "RollbackController.h" +#import "DisplayOpenGLView.h" + #include "machine.h" #include "rzx.h" #include "snapshot.h" -#include "fuse.h" static void add_point_details( gpointer data, void *user_data ); @@ -93,12 +94,12 @@ [NSApp stopModal]; [[self window] close]; - fuse_emulation_unpause(); + [[DisplayOpenGLView instance] unpause]; } - (void)showWindow:(id)sender { - fuse_emulation_pause(); + [[DisplayOpenGLView instance] pause]; [super showWindow:sender]; Modified: branches/fusegl/fuse/fusepb/controllers/SaveBinaryController.m =================================================================== --- branches/fusegl/fuse/fusepb/controllers/SaveBinaryController.m 2007-01-14 11:27:54 UTC (rev 293) +++ branches/fusegl/fuse/fusepb/controllers/SaveBinaryController.m 2007-01-20 14:43:22 UTC (rev 294) @@ -27,9 +27,9 @@ #include <config.h> #import "SaveBinaryController.h" +#import "DisplayOpenGLView.h" #import "NumberFormatter.h" -#include "fuse.h" #include "memory.h" #include "spectrum.h" #include <libspectrum.h> @@ -97,12 +97,12 @@ [NSApp stopModal]; [[self window] close]; - fuse_emulation_unpause(); + [[DisplayOpenGLView instance] unpause]; } - (void)showWindow:(id)sender { - fuse_emulation_pause(); + [[DisplayOpenGLView instance] pause]; [super showWindow:sender]; Modified: branches/fusegl/fuse/fusepb/controllers/TapeBrowserController.m =================================================================== --- branches/fusegl/fuse/fusepb/controllers/TapeBrowserController.m 2007-01-14 11:27:54 UTC (rev 293) +++ branches/fusegl/fuse/fusepb/controllers/TapeBrowserController.m 2007-01-20 14:43:22 UTC (rev 294) @@ -26,6 +26,7 @@ #include <config.h> +#import "DisplayOpenGLView.h" #import "TapeBrowserController.h" #include "tape.h" @@ -93,20 +94,20 @@ - (void)showWindow:(id)sender { - fuse_emulation_pause(); + [[DisplayOpenGLView instance] pause]; [super showWindow:sender]; [self update:UI_TAPE_BROWSER_NEW_TAPE block:NULL]; - fuse_emulation_unpause(); + [[DisplayOpenGLView instance] unpause]; } - (void)update:(ui_tape_browser_update_type)change block:(libspectrum_tape_block *)block { int error; - fuse_emulation_pause(); + [[DisplayOpenGLView instance] pause]; if( change == UI_TAPE_BROWSER_NEW_TAPE ) { [tapeController removeObjects:[tapeController arrangedObjects]]; @@ -136,7 +137,7 @@ [[self window] setDocumentEdited:NO]; } - fuse_emulation_unpause(); + [[DisplayOpenGLView instance] unpause]; } - (NSArrayController *)tapeController Modified: branches/fusegl/fuse/fusepb/models/Emulator.h =================================================================== --- branches/fusegl/fuse/fusepb/models/Emulator.h 2007-01-14 11:27:54 UTC (rev 293) +++ branches/fusegl/fuse/fusepb/models/Emulator.h 2007-01-20 14:43:22 UTC (rev 294) @@ -30,7 +30,10 @@ @interface Emulator : NSObject { + BOOL isEmulating; NSTimer* timer; + CFAbsoluteTime time; + float timerInterval; GHashTable *unicode_keysyms_hash; @@ -41,21 +44,29 @@ int cocoakeyboard_caps_shift_pressed; int cocoakeyboard_symbol_shift_pressed; input_key unicode_keysym; - - CFAbsoluteTime time; } +(Emulator *) instance; -- (id)installServer; +-(void) connectWithPorts:(NSArray *)portArray; +-(void) stop; +-(BOOL) isEmulating; + +-(void) startEmulationTimer; +-(void) stopEmulationTimer; + -(void) updateEmulation:(NSTimer*)theTimer; -(void) updateEmulationForTimeDelta:(CFAbsoluteTime)deltaTime; -(void) setEmulationHz:(float)hz; -/* FIXME: Could do with a setSettings? maybe we just update when paused? */ -/* probably means we need a pause and unpause method here */ +/* FIXME: Could do with a setSettings? maybe we just update settings when + emulation is paused? */ -(id) init; +-(void) openFile:(const char *)filename; +-(void) pause; +-(void) unpause; + -(void) mouseMoved:(NSEvent *)theEvent; -(void) mouseDown:(NSEvent *)theEvent; -(void) mouseUp:(NSEvent *)theEvent; Modified: branches/fusegl/fuse/fusepb/models/Emulator.m =================================================================== --- branches/fusegl/fuse/fusepb/models/Emulator.m 2007-01-14 11:27:54 UTC (rev 293) +++ branches/fusegl/fuse/fusepb/models/Emulator.m 2007-01-20 14:43:22 UTC (rev 294) @@ -33,6 +33,7 @@ #include "settings.h" #include "sound.h" #include "ui/ui.h" +#include "utils.h" extern keysyms_map_t unicode_keysyms_map[]; @@ -49,22 +50,44 @@ return instance; } -- (id)installServer +-(void) connectWithPorts:(NSArray *)portArray { - NSConnection *theConnection; - theConnection = [NSConnection defaultConnection]; - NSLog(@"Creating connection..."); + NSAutoreleasePool *pool; + NSConnection *serverConnection; - [theConnection setRootObject:self]; - if ([theConnection registerName:@"EmulatorSvr"] == NO) { - NSLog(@"Emulator failed to register name\n"); + pool = [[NSAutoreleasePool alloc] init]; + + serverConnection = [NSConnection + connectionWithReceivePort:[portArray objectAtIndex:0] + sendPort:[portArray objectAtIndex:1]]; + [serverConnection setRootObject:self]; + [(id)[serverConnection rootProxy] setServer:self]; + + if( fuse_init( ac, av ) ) { + fprintf( stderr, "%s: error initialising -- giving up!\n", fuse_progname ); } - [theConnection retain]; - NSLog(@"done.\n"); - return self; + while( !fuse_exiting ) { + [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode + beforeDate:[NSDate distantFuture]]; + } + + [serverConnection invalidate]; + + fuse_end(); + + instance = nil; + [pool release]; + + return; } +-(void) stop +{ + [self pause]; + fuse_exiting = 1; +} + -(id) init { if ( instance ) { @@ -74,12 +97,12 @@ self = [super init]; instance = self; - [self installServer]; - [self initKeyboard]; } timer = nil; + timerInterval = 1.0f / 50.0f; + isEmulating = NO; optDown = NO; ctrlDown = NO; @@ -102,7 +125,6 @@ [self updateEmulationForTimeDelta:deltaTime]; } time = nowTime; - [[DisplayOpenGLView instance] setNeedsDisplay:YES]; } /* given a delta time in seconds, update overall emulation state */ @@ -126,14 +148,64 @@ -(void) setEmulationHz:(float)hz { - [timer invalidate]; - [timer release]; + [self pause]; + /* Update emulation at double the emulated machines' frame rate for smoother + animation */ + hz = hz * 2.0f; + timerInterval = 1.0f / hz; + [self unpause]; +} - timer = [[NSTimer scheduledTimerWithTimeInterval: (1.0f / hz) - target:self selector:@selector(updateEmulation:) - userInfo:self repeats:true] retain]; +-(void) openFile:(const char *)filename +{ + utils_open_file( filename, settings_current.auto_load, NULL ); + + display_refresh_all(); } +-(void) pause +{ + if( isEmulating ) { + if( timer != nil ) { + [self stopEmulationTimer]; + fuse_emulation_pause(); + } + isEmulating = NO; + } +} + +-(void) unpause +{ + if( !isEmulating ) { + isEmulating = YES; + [self startEmulationTimer]; + fuse_emulation_unpause(); + } +} + +-(BOOL) isEmulating +{ + return isEmulating; +} + +-(void) startEmulationTimer +{ + if( timer == nil ) { + timer = [[NSTimer scheduledTimerWithTimeInterval: timerInterval + target:self selector:@selector(updateEmulation:) + userInfo:self repeats:true] retain]; + } +} + +-(void) stopEmulationTimer +{ + if( timer != nil ) { + [timer invalidate]; + [timer release]; + timer = nil; + } +} + -(void) mouseMoved:(NSEvent *)theEvent { if( ui_mouse_grabbed ) { Modified: branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h 2007-01-14 11:27:54 UTC (rev 293) +++ branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h 2007-01-20 14:43:22 UTC (rev 294) @@ -43,12 +43,12 @@ float target_ratio; - Emulator *emulator; + Emulator *real_emulator; + Emulator *proxy_emulator; + NSConnection *kitConnection; } +(DisplayOpenGLView *) instance; -- (id)installServer; - -(IBAction) fullscreen:(id)sender; -(IBAction) zoom:(id)sender; @@ -57,9 +57,16 @@ -(void) createTexture:(Cocoa_Texture*)newScreen; -(void) destroyTexture; +-(void) setServer:(id)anObject; -(id) initWithFrame:(NSRect)frameRect; -(void) awakeFromNib; +-(void) setNeedsDisplayYes; + +-(void) openFile:(const char *)filename; +-(void) pause; +-(void) unpause; + -(void) mouseMoved:(NSEvent *)theEvent; -(void) mouseDown:(NSEvent *)theEvent; -(void) mouseUp:(NSEvent *)theEvent; Modified: branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2007-01-14 11:27:54 UTC (rev 293) +++ branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2007-01-20 14:43:22 UTC (rev 294) @@ -29,11 +29,6 @@ #include <OpenGL/glext.h> #include <OpenGL/glu.h> -#if 0 -#include "event.h" -#include "keyboard.h" -#include "sound.h" -#endif #include "fuse.h" #include "fusepb/main.h" #include "settings.h" @@ -49,14 +44,15 @@ -(IBAction) fullscreen:(id)sender { - if( settings_current.full_screen == 1 ) { // we need to go back to non-full screen + if( settings_current.full_screen == 1 ) { + /* we need to go back to non-full screen */ [fullscreenWindow close]; [windowedWindow setContentView: self]; [windowedWindow makeKeyAndOrderFront: self]; [windowedWindow makeFirstResponder: self]; settings_current.full_screen = 0; if( ui_mouse_grabbed ) ui_mouse_grabbed = ui_mouse_release( 0 ); - } else { // settings_current.full_screen == 0 + } else { unsigned int windowStyle; NSRect contentRect; @@ -106,20 +102,9 @@ [[self window] setContentSize:size]; } -- (id)installServer +-(void)setServer:(id)anObject { - NSConnection *theConnection; - theConnection = [NSConnection defaultConnection]; - NSLog(@"Creating connection..."); - - [theConnection setRootObject:self]; - if ([theConnection registerName:@"DisplayOpenGLViewSvr"] == NO) { - NSLog(@"DisplayOpenGLView failed to register name\n"); - } - - [theConnection retain]; - NSLog(@"done.\n"); - return self; + proxy_emulator = [anObject retain]; } -(id) initWithFrame:(NSRect)frameRect @@ -146,9 +131,7 @@ self = [super initWithFrame:frameRect pixelFormat:pixFmt]; instance = self; - emulator = [[Emulator alloc] init]; - - [self installServer]; + real_emulator = [[Emulator alloc] init]; } [pixFmt release]; @@ -165,6 +148,22 @@ target_ratio = 4.0f/3.0f; + NSPort *port1; + NSPort *port2; + NSArray *portArray; + + port1 = [NSPort port]; + port2 = [NSPort port]; + + kitConnection = [[NSConnection alloc] initWithReceivePort:port1 sendPort:port2]; + [kitConnection setRootObject:self]; + + /* Ports switched here */ + portArray = [NSArray arrayWithObjects:port2, port1, nil]; + + [NSThread detachNewThreadSelector:@selector(connectWithPorts:) + toTarget:real_emulator withObject:portArray]; + return self; } @@ -172,13 +171,24 @@ { /* keep the window in the standard aspect ratio if the user resizes */ [[self window] setContentAspectRatio:NSMakeSize(4.0,3.0)]; +} - /* 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 ); - } +- (void)windowWillClose:(NSNotification *)notification +{ + [[self window] setDelegate:nil]; + [proxy_emulator stop]; + [proxy_emulator release]; + proxy_emulator = nil; + [real_emulator release]; + real_emulator = nil; + [self release]; } +-(void) setNeedsDisplayYes +{ + [super setNeedsDisplay:YES]; +} + -(void) drawRect:(NSRect)aRect { if( NO == screenTexInitialised ) return; @@ -330,7 +340,6 @@ glTexParameteri( GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_STORAGE_HINT_APPLE, GL_STORAGE_CACHED_APPLE ); glPixelStorei( GL_UNPACK_CLIENT_STORAGE_APPLE, GL_TRUE ); - /* FIXME: Want GL_NEAREST for exact pixel ratios, GL_LINEAR otherwise */ GLint filter = settings_current.bilinear_filter ? GL_LINEAR : GL_NEAREST; glTexParameteri( GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MIN_FILTER, filter ); glTexParameteri( GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MAG_FILTER, filter ); @@ -345,44 +354,59 @@ screenTexInitialised = YES; } +-(void) openFile:(const char *)filename +{ + [proxy_emulator openFile:filename]; +} + +-(void) pause +{ + [proxy_emulator pause]; +} + +-(void) unpause +{ + [proxy_emulator unpause]; +} + -(void) mouseMoved:(NSEvent *)theEvent { - [emulator mouseMoved:theEvent]; + [proxy_emulator mouseMoved:theEvent]; } -(void) mouseDown:(NSEvent *)theEvent { - [emulator mouseDown:theEvent]; + [proxy_emulator mouseDown:theEvent]; } -(void) mouseUp:(NSEvent *)theEvent { - [emulator mouseUp:theEvent]; + [proxy_emulator mouseUp:theEvent]; } -(void) rightMouseDown:(NSEvent *)theEvent { - [emulator rightMouseDown:theEvent]; + [proxy_emulator rightMouseDown:theEvent]; } -(void) rightMouseUp:(NSEvent *)theEvent { - [emulator rightMouseUp:theEvent]; + [proxy_emulator rightMouseUp:theEvent]; } -(void) otherMouseDown:(NSEvent *)theEvent { - [emulator otherMouseDown:theEvent]; + [proxy_emulator otherMouseDown:theEvent]; } -(void) otherMouseUp:(NSEvent *)theEvent { - [emulator otherMouseUp:theEvent]; + [proxy_emulator otherMouseUp:theEvent]; } -(void) flagsChanged:(NSEvent *)theEvent { - [emulator flagsChanged:theEvent]; + [proxy_emulator flagsChanged:theEvent]; } -(void) keyDown:(NSEvent *)theEvent @@ -390,19 +414,19 @@ if( settings_current.full_screen ) { unichar c = [[theEvent charactersIgnoringModifiers] characterAtIndex:0]; switch (c) { - // [Esc] exits fullScreen mode. + /* [Esc] exits fullScreen mode */ case 27: [self fullscreen:nil]; return; break; } } - [emulator keyDown:theEvent]; + [proxy_emulator keyDown:theEvent]; } -(void) keyUp:(NSEvent *)theEvent { - [emulator keyUp:theEvent]; + [proxy_emulator keyUp:theEvent]; } -(BOOL) acceptsFirstResponder @@ -425,7 +449,7 @@ return YES; } -- (void)copyGLToBackingStore +-(void) copyGLToBackingStore { [[self openGLContext] makeCurrentContext]; Modified: branches/fusegl/fuse/settings.pl =================================================================== --- branches/fusegl/fuse/settings.pl 2007-01-14 11:27:54 UTC (rev 293) +++ branches/fusegl/fuse/settings.pl 2007-01-20 14:43:22 UTC (rev 294) @@ -243,7 +243,8 @@ id recentFile; while ( (recentFile = [enumerator nextObject]) ) { - [[FuseController singleton] addRecentSnapshot:[recentFile UTF8String]]; + [[FuseController singleton] performSelectorOnMainThread:\@selector(addRecentSnapshotWithString:) + withObject:recentFile waitUntilDone:NO]; } } CODE Deleted: branches/fusegl/fuse/ui/cocoa/cocoadisplay.c =================================================================== --- branches/fusegl/fuse/ui/cocoa/cocoadisplay.c 2007-01-14 11:27:54 UTC (rev 293) +++ branches/fusegl/fuse/ui/cocoa/cocoadisplay.c 2007-01-20 14:43:22 UTC (rev 294) @@ -1,410 +0,0 @@ -/* cocoadisplay.c: Routines for dealing with the Cocoa display - Copyright (c) 2006 Fredrick Meunier - - $Id: sdldisplay.c,v 1.40 2006/08/14 13:37:39 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 <limits.h> -#include <stdio.h> -#include <stdint.h> -#include <string.h> - -#include <OpenGL/gl.h> -#include <OpenGL/glext.h> -#include <OpenGL/glu.h> - -#include <libspectrum.h> - -#include "FuseMenus.h" -#include "cocoadisplay.h" -#include "display.h" -#include "fuse.h" -#include "machine.h" -#include "scld.h" -#include "screenshot.h" -#include "settings.h" -#include "ui/ui.h" -#include "ui/scaler/scaler.h" -#include "ui/uidisplay.h" -#include "utils.h" - -/* The current size of the display (in units of DISPLAY_SCREEN_*) */ -static float display_current_size = 1.0f; - -static int image_width; -static int image_height; - -/* Screen texture */ -Cocoa_Texture* screen = NULL; - -/* Screen texture in native size */ -Cocoa_Texture unscaled_screen; - -/* Screen texture after scaling (only if a transforming scaler is in place) */ -Cocoa_Texture scaled_screen; - -/* Colours are in 1A 5R 5G 5B format */ -static uint16_t colour_values[] = { - 0x0000, - 0x0017, - 0x5c00, - 0x5c17, - 0x02e0, - 0x02f7, - 0x5ee0, - 0x5ef7, - 0x0000, - 0x001f, - 0x7c00, - 0x7c1f, - 0x03e0, - 0x03ff, - 0x7fe0, - 0x7fff -}; - -static uint16_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 ); - } - - scaler_select_bitformat( 555 ); -} - -static int -allocate_screen( Cocoa_Texture* screen, int height, int width, - float scaling_factor ) -{ - screen->image_width = image_width * display_current_size; - screen->image_height = image_height * display_current_size; - - /* Need some extra bytes around when using 2xSaI */ - screen->full_width = screen->image_width+3; - screen->image_xoffset = 1; - screen->full_height = screen->image_height+3; - screen->image_yoffset = 1; - - screen->pixels = calloc( screen->full_width*screen->full_height, sizeof(uint16_t) ); - if( !screen->pixels ) { - fprintf( stderr, "%s: couldn't create screen.pixels\n", fuse_progname ); - return 1; - } - - screen->pitch = screen->full_width * sizeof(uint16_t); - - return 0; -} - -static void -free_screen( Cocoa_Texture* screen ) -{ - if( screen->pixels ) { - free( screen->pixels ); - screen->pixels=NULL; - } -} - -static int -cocoadisplay_load_gfx_mode( void ) -{ - int error; - - display_current_size = scaler_get_scaling_factor( current_scaler ); - - error = allocate_screen( &unscaled_screen, image_height, image_width, 1.0f ); - if( error ) return error; - - screen = &unscaled_screen; - - if( current_scaler != SCALER_NORMAL ) { - error = allocate_screen( &scaled_screen, image_height, image_width, - display_current_size ); - if( error ) return error; - - screen = &scaled_screen; - } - - /* Create OpenGL textures for the image in DisplayOpenGLView */ - CreateTexture( screen ); - - /* Redraw the entire screen... */ - display_refresh_all(); - - return 0; -} - -static int -cocoadisplay_allocate_colours( int numColours, uint16_t *colour_values, - uint16_t *bw_values ) -{ - int i; - uint8_t red, green, blue, grey; - - for( i = 0; i < numColours; i++ ) { - red = (colour_values[i] >> 10) & 0x1f; - green = (colour_values[i] >> 5) & 0x1f; - blue = colour_values[i] & 0x1f; - - /* Addition of 0.5 is to avoid rounding errors */ - grey = ( 0.299 * red + 0.587 * green + 0.114 * blue ) + 0.5; - - bw_values[i] = (grey << 10) | (grey << 5) | grey; - } - - return 0; -} - -int -uidisplay_init( int width, int height ) -{ - int error; - error = cocoadisplay_allocate_colours( sizeof(colour_values) / sizeof(uint16_t), - colour_values, bw_values ); - - image_width = width; - image_height = height; - - init_scalers(); - - if ( scaler_select_scaler( current_scaler ) ) - scaler_select_scaler( SCALER_NORMAL ); - - cocoadisplay_load_gfx_mode(); - - /* We can now output error messages to our output device */ - display_ui_initialised = 1; - - return 0; -} - -void -uidisplay_hotswap_gfx_mode( void ) -{ - fuse_emulation_pause(); - - /* Free the old surfaces */ - free_screen( &unscaled_screen ); - free_screen( &scaled_screen ); - - /* Setup the new GFX mode */ - cocoadisplay_load_gfx_mode(); - - fuse_emulation_unpause(); -} - -/* Set one pixel in the display */ -void -uidisplay_putpixel( int x, int y, int colour ) -{ - uint16_t *dest_base, *dest; - uint16_t *palette_values = settings_current.bw_tv ? bw_values : colour_values; - - uint16_t palette_colour = palette_values[ colour ]; - - if( machine_current->timex ) { - x <<= 1; y <<= 1; - dest_base = dest = (uint16_t*)( (uint8_t*)unscaled_screen.pixels + - (x+unscaled_sc... [truncated message content] |
From: <fr...@us...> - 2007-01-14 11:28:02
|
Revision: 293 http://svn.sourceforge.net/fuse-for-macosx/?rev=293&view=rev Author: fredm Date: 2007-01-14 03:27:54 -0800 (Sun, 14 Jan 2007) Log Message: ----------- * Vend FuseController and DisplayOpenGLView * Move emulation to it's own object and vend it Modified Paths: -------------- branches/fusegl/fuse/TODO branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj branches/fusegl/fuse/fusepb/FuseMenus.m branches/fusegl/fuse/fusepb/controllers/FuseController.h branches/fusegl/fuse/fusepb/controllers/FuseController.m branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m Added Paths: ----------- branches/fusegl/fuse/fusepb/models/ branches/fusegl/fuse/fusepb/models/Emulator.h branches/fusegl/fuse/fusepb/models/Emulator.m Modified: branches/fusegl/fuse/TODO =================================================================== --- branches/fusegl/fuse/TODO 2007-01-10 12:01:12 UTC (rev 292) +++ branches/fusegl/fuse/TODO 2007-01-14 11:27:54 UTC (rev 293) @@ -15,6 +15,10 @@ X Add support for bilinear etc. OpenGL filters X Add option to snap window size to 1x, 2x, 3x X Grab mouse in fullscreen mode +X Vend FuseController and DisplayOpenGLView +X Move emulation to it's own object and vend it +* Move emulation to it's own thread and call FuseController and DisplayOpenGLView + through their vended objects * Use sheets rather than modal dialogs * Run emulation in seperate thread to avoid sound glitches when menus are selected or window is minimised Modified: branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj =================================================================== --- branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj 2007-01-10 12:01:12 UTC (rev 292) +++ branches/fusegl/fuse/fusepb/Fuse.xcodeproj/project.pbxproj 2007-01-14 11:27:54 UTC (rev 293) @@ -271,6 +271,8 @@ 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 */; }; + B6B076B20B59FE9A00D4F95C /* Emulator.h in Headers */ = {isa = PBXBuildFile; fileRef = B6B076B00B59FE9A00D4F95C /* Emulator.h */; }; + B6B076B30B59FE9A00D4F95C /* Emulator.m in Sources */ = {isa = PBXBuildFile; fileRef = B6B076B10B59FE9A00D4F95C /* Emulator.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 */; }; @@ -482,6 +484,8 @@ B6AE204307704CFD00990F65 /* if1-1.rom */ = {isa = PBXFileReference; lastKnownFileType = file; name = "if1-1.rom"; path = "../roms/if1-1.rom"; sourceTree = SOURCE_ROOT; }; B6AE204407704CFD00990F65 /* if1-2.rom */ = {isa = PBXFileReference; lastKnownFileType = file; name = "if1-2.rom"; path = "../roms/if1-2.rom"; sourceTree = SOURCE_ROOT; }; B6AF242A04156EE700F48F48 /* blank.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = blank.icns; path = resources/blank.icns; sourceTree = SOURCE_ROOT; }; + B6B076B00B59FE9A00D4F95C /* Emulator.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Emulator.h; sourceTree = "<group>"; }; + B6B076B10B59FE9A00D4F95C /* Emulator.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = Emulator.m; sourceTree = "<group>"; }; B6BA1A8B04E4F3290017354F /* gcrypt.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = gcrypt.framework; path = ../../libgcrypt/build/Deployment/gcrypt.framework; sourceTree = SOURCE_ROOT; }; B6BA1A9404E4F88F0017354F /* uijoystick.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = uijoystick.h; path = ../ui/uijoystick.h; sourceTree = SOURCE_ROOT; }; B6BA6F0207B1E04200E44C8D /* Preferences.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = Preferences.nib; path = nibs/Preferences.nib; sourceTree = "<group>"; }; @@ -649,6 +653,7 @@ 080E96DDFE201D6D7F000001 /* Classes */ = { isa = PBXGroup; children = ( + B6B076AB0B59FE7400D4F95C /* Models */, B6CE7FCF0B28FBEC00EB65B3 /* Views */, B6DD457908134943008E9F7E /* Content Arrays */, B67F3C4E07ED34260045339F /* Transformers */, @@ -900,6 +905,16 @@ name = machines; sourceTree = "<group>"; }; + B6B076AB0B59FE7400D4F95C /* Models */ = { + isa = PBXGroup; + children = ( + B6B076B00B59FE9A00D4F95C /* Emulator.h */, + B6B076B10B59FE9A00D4F95C /* Emulator.m */, + ); + name = Models; + path = models; + sourceTree = "<group>"; + }; B6CE7E8A0B28027000EB65B3 /* cocoa */ = { isa = PBXGroup; children = ( @@ -1227,6 +1242,7 @@ B615BFE70B4261E50082D535 /* HIDJoysticks.h in Headers */, B6A24E3C0B49C78700AD5B9D /* hq2x.h in Headers */, B6A24E3E0B49C78700AD5B9D /* hq3x.h in Headers */, + B6B076B20B59FE9A00D4F95C /* Emulator.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1464,6 +1480,7 @@ B6A24E330B49C67D00AD5B9D /* scalers16.cpp in Sources */, B6A24E3B0B49C78700AD5B9D /* hq2x.cpp in Sources */, B6A24E3D0B49C78700AD5B9D /* hq3x.cpp in Sources */, + B6B076B30B59FE9A00D4F95C /* Emulator.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; Modified: branches/fusegl/fuse/fusepb/FuseMenus.m =================================================================== --- branches/fusegl/fuse/fusepb/FuseMenus.m 2007-01-10 12:01:12 UTC (rev 292) +++ branches/fusegl/fuse/fusepb/FuseMenus.m 2007-01-14 11:27:54 UTC (rev 293) @@ -28,6 +28,7 @@ */ #import "DisplayOpenGLView.h" +#import "Emulator.h" #import "FuseController.h" #import "FuseMenus.h" @@ -58,7 +59,7 @@ void SetEmulationHz( float hz ) { - [[DisplayOpenGLView instance] setEmulationHz:hz]; + [[Emulator instance] setEmulationHz:hz]; } void Hide(void) Modified: branches/fusegl/fuse/fusepb/controllers/FuseController.h =================================================================== --- branches/fusegl/fuse/fusepb/controllers/FuseController.h 2007-01-10 12:01:12 UTC (rev 292) +++ branches/fusegl/fuse/fusepb/controllers/FuseController.h 2007-01-14 11:27:54 UTC (rev 293) @@ -128,6 +128,8 @@ - (IBAction)saveFileTypeClicked:(id)sender; +- (id)installServer; + - savePanelAccessoryView; - (NSPopUpButton*) saveFileType; Modified: branches/fusegl/fuse/fusepb/controllers/FuseController.m =================================================================== --- branches/fusegl/fuse/fusepb/controllers/FuseController.m 2007-01-10 12:01:12 UTC (rev 292) +++ branches/fusegl/fuse/fusepb/controllers/FuseController.m 2007-01-14 11:27:54 UTC (rev 293) @@ -141,6 +141,22 @@ return singleton ? singleton : [[self alloc] init]; } +- (id)installServer +{ + NSConnection *theConnection; + theConnection = [NSConnection defaultConnection]; + NSLog(@"Creating connection..."); + + [theConnection setRootObject:self]; + if ([theConnection registerName:@"FuseControllerSvr"] == NO) { + NSLog(@"FuseController failed to register name\n"); + } + + [theConnection retain]; + NSLog(@"done.\n"); + return self; +} + - (id)init { if ( singleton ) { @@ -212,6 +228,8 @@ recentSnapFileNames = [NSMutableArray arrayWithCapacity:NUM_RECENT_ITEMS]; [recentSnapFileNames retain]; + + [self installServer]; } return singleton; Copied: branches/fusegl/fuse/fusepb/models/Emulator.h (from rev 292, branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h) =================================================================== --- branches/fusegl/fuse/fusepb/models/Emulator.h (rev 0) +++ branches/fusegl/fuse/fusepb/models/Emulator.h 2007-01-14 11:27:54 UTC (rev 293) @@ -0,0 +1,75 @@ +/* Emulator.h: Implementation for the Emulator class + Copyright (c) 2006-2007 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: fr...@sp... + Postal address: 3/66 Roslyn Gardens, Ruscutters Bay, NSW 2011, Australia + +*/ + +#import <Cocoa/Cocoa.h> + +#include <libspectrum.h> + +#include "input.h" + +@interface Emulator : NSObject +{ + NSTimer* timer; + + GHashTable *unicode_keysyms_hash; + + BOOL optDown; + BOOL ctrlDown; + BOOL shiftDown; + + int cocoakeyboard_caps_shift_pressed; + int cocoakeyboard_symbol_shift_pressed; + input_key unicode_keysym; + + CFAbsoluteTime time; +} ++(Emulator *) instance; + +- (id)installServer; + +-(void) updateEmulation:(NSTimer*)theTimer; +-(void) updateEmulationForTimeDelta:(CFAbsoluteTime)deltaTime; +-(void) setEmulationHz:(float)hz; + +/* FIXME: Could do with a setSettings? maybe we just update when paused? */ +/* probably means we need a pause and unpause method here */ +-(id) init; + +-(void) mouseMoved:(NSEvent *)theEvent; +-(void) mouseDown:(NSEvent *)theEvent; +-(void) mouseUp:(NSEvent *)theEvent; +-(void) rightMouseDown:(NSEvent *)theEvent; +-(void) rightMouseUp:(NSEvent *)theEvent; +-(void) otherMouseDown:(NSEvent *)theEvent; +-(void) otherMouseUp:(NSEvent *)theEvent; + +-(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; + +@end Copied: branches/fusegl/fuse/fusepb/models/Emulator.m (from rev 292, branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m) =================================================================== --- branches/fusegl/fuse/fusepb/models/Emulator.m (rev 0) +++ branches/fusegl/fuse/fusepb/models/Emulator.m 2007-01-14 11:27:54 UTC (rev 293) @@ -0,0 +1,281 @@ +/* Emulator.m: Implementation for the Emulator class + Copyright (c) 2006-2007 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: fr...@sp... + Postal address: 3/66 Roslyn Gardens, Ruscutters Bay, NSW 2011, Australia + +*/ + +#import "DisplayOpenGLView.h" +#import "Emulator.h" + +#include "event.h" +#include "fuse.h" +#include "fusepb/main.h" +#include "keyboard.h" +#include "machine.h" +#include "settings.h" +#include "sound.h" +#include "ui/ui.h" + +extern keysyms_map_t unicode_keysyms_map[]; + +#include "sound/sfifo.h" + +extern sfifo_t sound_fifo; + +@implementation Emulator + +static Emulator *instance = nil; + ++(Emulator *) instance +{ + return instance; +} + +- (id)installServer +{ + NSConnection *theConnection; + theConnection = [NSConnection defaultConnection]; + NSLog(@"Creating connection..."); + + [theConnection setRootObject:self]; + if ([theConnection registerName:@"EmulatorSvr"] == NO) { + NSLog(@"Emulator failed to register name\n"); + } + + [theConnection retain]; + NSLog(@"done.\n"); + return self; +} + +-(id) init +{ + if ( instance ) { + [self dealloc]; + self = instance; + } else { + self = [super init]; + instance = self; + + [self installServer]; + + [self initKeyboard]; + } + + timer = nil; + + optDown = NO; + ctrlDown = NO; + shiftDown = NO; + + cocoakeyboard_caps_shift_pressed = 0; + cocoakeyboard_symbol_shift_pressed = 0; + unicode_keysym = INPUT_KEY_NONE; + + time = CFAbsoluteTimeGetCurrent(); /* set emulation time start time */ + + return self; +} + +-(void) updateEmulation:(NSTimer*)theTimer +{ + CFTimeInterval nowTime = CFAbsoluteTimeGetCurrent(); + CFTimeInterval deltaTime = nowTime - time; + if (deltaTime <= 1.0) { /* skip pauses */ + [self updateEmulationForTimeDelta:deltaTime]; + } + time = nowTime; + [[DisplayOpenGLView instance] setNeedsDisplay:YES]; +} + +/* given a delta time in seconds, update overall emulation state */ +-(void) updateEmulationForTimeDelta:(CFAbsoluteTime)deltaTime +{ + 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) setEmulationHz:(float)hz +{ + [timer invalidate]; + [timer release]; + + timer = [[NSTimer scheduledTimerWithTimeInterval: (1.0f / hz) + target:self selector:@selector(updateEmulation:) + userInfo:self repeats:true] retain]; +} + +-(void) mouseMoved:(NSEvent *)theEvent +{ + if( ui_mouse_grabbed ) { + int dx = [theEvent deltaX]; + int dy = [theEvent deltaY]; + + if( dx < -128 ) dx = -128; + else if( dx > 128 ) dx = 128; + + if( dy < -128 ) dy = -128; + else if( dy > 128 ) dy = 128; + + ui_mouse_motion( dx, dy ); + } +} + +-(void) mouseDown:(NSEvent *)theEvent +{ + ui_mouse_button( 1, 1 ); +} + +-(void) mouseUp:(NSEvent *)theEvent +{ + ui_mouse_button( 1, 0 ); +} + +-(void) rightMouseDown:(NSEvent *)theEvent +{ + ui_mouse_button( 3, 1 ); +} + +-(void) rightMouseUp:(NSEvent *)theEvent +{ + ui_mouse_button( 3, 0 ); +} + +-(void) otherMouseDown:(NSEvent *)theEvent +{ + ui_mouse_button( 2, 1 ); +} + +-(void) otherMouseUp:(NSEvent *)theEvent +{ + ui_mouse_button( 2, 0 ); +} + +-(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) modifierChange:(input_event_type)theType oldState:(BOOL)old newState:(BOOL)new +{ + if( old != new ) { + input_event_t fuse_event; + 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 ); + } +} + +-(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; + + [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]; + 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 = [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 + * 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; + if( unicode_keysym == INPUT_KEY_NONE ) + fuse_event.types.key.native_key = fuse_keysym; + else + fuse_event.types.key.native_key = unicode_keysym; + 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]; +} + +@end Modified: branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h 2007-01-10 12:01:12 UTC (rev 292) +++ branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h 2007-01-14 11:27:54 UTC (rev 293) @@ -1,5 +1,5 @@ /* DisplayOpenGLView.h: Implementation for the DisplayOpenGLView class - Copyright (c) 2006 Fredrick Meunier + Copyright (c) 2006-2007 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 @@ -29,34 +29,26 @@ #include "input.h" #include "ui/cocoa/cocoadisplay.h" +@class Emulator; + @interface DisplayOpenGLView : NSOpenGLView { - NSTimer* timer; - /* Need texture size and dimensions and two backing textures */ Cocoa_Texture screenTex; /* Screen texture */ BOOL screenTexInitialised; - GHashTable *unicode_keysyms_hash; - - BOOL optDown; - BOOL ctrlDown; - BOOL shiftDown; - - int cocoakeyboard_caps_shift_pressed; - int cocoakeyboard_symbol_shift_pressed; - input_key unicode_keysym; - - CFAbsoluteTime time; - NSWindow *fullscreenWindow; NSWindow *windowedWindow; float target_ratio; + + Emulator *emulator; } +(DisplayOpenGLView *) instance; +- (id)installServer; + -(IBAction) fullscreen:(id)sender; -(IBAction) zoom:(id)sender; @@ -65,9 +57,6 @@ -(void) createTexture:(Cocoa_Texture*)newScreen; -(void) destroyTexture; --(void) updateEmulationForTimeDelta:(CFAbsoluteTime)deltaTime; --(void) setEmulationHz:(float)hz; - -(id) initWithFrame:(NSRect)frameRect; -(void) awakeFromNib; @@ -79,11 +68,7 @@ -(void) otherMouseDown:(NSEvent *)theEvent; -(void) otherMouseUp:(NSEvent *)theEvent; --(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 2007-01-10 12:01:12 UTC (rev 292) +++ branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2007-01-14 11:27:54 UTC (rev 293) @@ -1,5 +1,5 @@ /* DisplayOpenGLView.m: Implementation for the DisplayOpenGLView class - Copyright (c) 2006 Fredrick Meunier + Copyright (c) 2006-2007 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 @@ -23,24 +23,21 @@ */ #import "DisplayOpenGLView.h" +#import "Emulator.h" #include <OpenGL/gl.h> #include <OpenGL/glext.h> #include <OpenGL/glu.h> +#if 0 #include "event.h" +#include "keyboard.h" +#include "sound.h" +#endif #include "fuse.h" #include "fusepb/main.h" -#include "keyboard.h" #include "settings.h" -#include "sound.h" -extern keysyms_map_t unicode_keysyms_map[]; - -#include "sound/sfifo.h" - -extern sfifo_t sound_fifo; - @implementation DisplayOpenGLView static DisplayOpenGLView *instance = nil; @@ -109,6 +106,22 @@ [[self window] setContentSize:size]; } +- (id)installServer +{ + NSConnection *theConnection; + theConnection = [NSConnection defaultConnection]; + NSLog(@"Creating connection..."); + + [theConnection setRootObject:self]; + if ([theConnection registerName:@"DisplayOpenGLViewSvr"] == NO) { + NSLog(@"DisplayOpenGLView failed to register name\n"); + } + + [theConnection retain]; + NSLog(@"done.\n"); + return self; +} + -(id) initWithFrame:(NSRect)frameRect { /* Init pixel format attribs */ @@ -132,14 +145,16 @@ } else { self = [super initWithFrame:frameRect pixelFormat:pixFmt]; instance = self; + + emulator = [[Emulator alloc] init]; + + [self installServer]; } [pixFmt release]; [[self openGLContext] makeCurrentContext]; - timer = nil; - /* Setup some basic OpenGL stuff */ glPixelStorei( GL_UNPACK_ALIGNMENT, 1 ); glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE ); @@ -148,14 +163,6 @@ screenTexInitialised = NO; - optDown = NO; - ctrlDown = NO; - shiftDown = NO; - - cocoakeyboard_caps_shift_pressed = 0; - cocoakeyboard_symbol_shift_pressed = 0; - unicode_keysym = INPUT_KEY_NONE; - target_ratio = 4.0f/3.0f; return self; @@ -170,25 +177,18 @@ 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 { - 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 */ + /* FIXME: lock screen - direct lock probably faster [emulation lockScreen]; */ + /* should draw directly from emulation screen instead of screenTex, switch between + buffers there */ memcpy( screenTex.pixels, screen->pixels, screenTex.pitch * screenTex.full_height ); + /* FIXME: unlock screen - direct lock probably faster [emulation unlockScreen]; */ [[self openGLContext] makeCurrentContext]; @@ -345,169 +345,46 @@ screenTexInitialised = YES; } -/* given a delta time in seconds, update overall emulation state */ --(void) updateEmulationForTimeDelta:(CFAbsoluteTime)deltaTime -{ - 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) setEmulationHz:(float)hz -{ - [timer invalidate]; - [timer release]; - - timer = [[NSTimer scheduledTimerWithTimeInterval: (1.0f / hz) - target:self selector:@selector(drawRect:) - userInfo:self repeats:true] retain]; -} - -(void) mouseMoved:(NSEvent *)theEvent { - if( ui_mouse_grabbed ) { - int dx = [theEvent deltaX]; - int dy = [theEvent deltaY]; - - if( dx < -128 ) dx = -128; - else if( dx > 128 ) dx = 128; - - if( dy < -128 ) dy = -128; - else if( dy > 128 ) dy = 128; - - ui_mouse_motion( dx, dy ); - } + [emulator mouseMoved:theEvent]; } -(void) mouseDown:(NSEvent *)theEvent { - ui_mouse_button( 1, 1 ); + [emulator mouseDown:theEvent]; } -(void) mouseUp:(NSEvent *)theEvent { - ui_mouse_button( 1, 0 ); + [emulator mouseUp:theEvent]; } -(void) rightMouseDown:(NSEvent *)theEvent { - ui_mouse_button( 3, 1 ); + [emulator rightMouseDown:theEvent]; } -(void) rightMouseUp:(NSEvent *)theEvent { - ui_mouse_button( 3, 0 ); + [emulator rightMouseUp:theEvent]; } -(void) otherMouseDown:(NSEvent *)theEvent { - ui_mouse_button( 2, 1 ); + [emulator otherMouseDown:theEvent]; } -(void) otherMouseUp:(NSEvent *)theEvent { - ui_mouse_button( 2, 0 ); + [emulator otherMouseUp:theEvent]; } --(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) modifierChange:(input_event_type)theType oldState:(BOOL)old newState:(BOOL)new -{ - if( old != new ) { - input_event_t fuse_event; - 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 ); - } -} - -(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; - - [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; + [emulator flagsChanged:theEvent]; } --(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]; - 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 = [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 - * 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; - if( unicode_keysym == INPUT_KEY_NONE ) - fuse_event.types.key.native_key = fuse_keysym; - else - fuse_event.types.key.native_key = unicode_keysym; - fuse_event.types.key.spectrum_key = fuse_keysym; - - input_event( &fuse_event ); - } -} - -(void) keyDown:(NSEvent *)theEvent { if( settings_current.full_screen ) { @@ -520,13 +397,12 @@ break; } } - - [self keyChange:theEvent type:INPUT_EVENT_KEYPRESS]; + [emulator keyDown:theEvent]; } -(void) keyUp:(NSEvent *)theEvent { - [self keyChange:theEvent type:INPUT_EVENT_KEYRELEASE]; + [emulator keyUp:theEvent]; } -(BOOL) acceptsFirstResponder This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2007-01-10 12:01:12
|
Revision: 292 http://svn.sourceforge.net/fuse-for-macosx/?rev=292&view=rev Author: fredm Date: 2007-01-10 04:01:12 -0800 (Wed, 10 Jan 2007) Log Message: ----------- Put in wrong directory! Added Paths: ----------- tags/FuseForMacOSX-20070110/ Removed Paths: ------------- branches/FuseForMacOSX-20070110/ Copied: tags/FuseForMacOSX-20070110 (from rev 291, branches/FuseForMacOSX-20070110) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2007-01-10 11:28:27
|
Revision: 291 http://svn.sourceforge.net/fuse-for-macosx/?rev=291&view=rev Author: fredm Date: 2007-01-10 03:28:26 -0800 (Wed, 10 Jan 2007) Log Message: ----------- Add GNU style changelog. Added Paths: ----------- branches/FuseForMacOSX-20070110/ChangeLog Added: branches/FuseForMacOSX-20070110/ChangeLog =================================================================== --- branches/FuseForMacOSX-20070110/ChangeLog (rev 0) +++ branches/FuseForMacOSX-20070110/ChangeLog 2007-01-10 11:28:26 UTC (rev 291) @@ -0,0 +1,3424 @@ +2007-01-10 11:15 fredm + + * .: Make tag for 20070110 release. + +2007-01-09 21:02 fredm + + * trunk/fuse/fuse.cpp, trunk/fuse/fuse.h, trunk/fuse/machine.c, + trunk/fuse/sound.c, trunk/fuse/sound.h, trunk/fuse/tape.c: Fix + distorted AY sound on snapshot load. + +2007-01-09 21:00 fredm + + * trunk/fuse/fusepb/English.lproj/InfoPlist.strings, + trunk/fuse/fusepb/Info-Fuse.plist: Move version strings to + 20070110. + +2007-01-09 14:15 fredm + + * trunk/fuse/profile.c: Provide prototype for memset. + +2007-01-09 14:14 fredm + + * trunk/fuse/ui/sdl/sdlkeyboard.c: Also pass on native keysyms to + the input layer. + +2006-12-17 13:51 fredm + + * 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: Merge + up to fuse-20061217. + +2006-12-17 11:37 fredm + + * trunk/fuse/fusepb/controllers/FuseController.m: When starting an + RZX recording from a snapshot, be sure to pass through the + embed snapshot preference. + +2006-12-17 03:13 fredm + + * trunk/fuse/fusepb, trunk/fuse/fusepb/settings_cocoa.h: Don't + ignore settings_cocoa.h and check it in for easier builds from + scratch. + +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/f... [truncated message content] |
From: <fr...@us...> - 2007-01-10 11:15:37
|
Revision: 290 http://svn.sourceforge.net/fuse-for-macosx/?rev=290&view=rev Author: fredm Date: 2007-01-10 03:15:38 -0800 (Wed, 10 Jan 2007) Log Message: ----------- Make tag for 20070110 release. Added Paths: ----------- branches/FuseForMacOSX-20070110/ Copied: branches/FuseForMacOSX-20070110 (from rev 289, trunk) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2007-01-10 10:49:58
|
Revision: 289 http://svn.sourceforge.net/fuse-for-macosx/?rev=289&view=rev Author: fredm Date: 2007-01-10 02:49:57 -0800 (Wed, 10 Jan 2007) Log Message: ----------- Merge in revisions 220:288 from the trunk branch. Modified Paths: -------------- branches/fusegl/fuse/debugger/breakpoint.c branches/fusegl/fuse/display.h branches/fusegl/fuse/event.c branches/fusegl/fuse/fuse.cpp branches/fusegl/fuse/fuse.h branches/fusegl/fuse/fusepb/English.lproj/InfoPlist.strings branches/fusegl/fuse/fusepb/Info-Fuse.plist branches/fusegl/fuse/fusepb/controllers/FuseController.m branches/fusegl/fuse/fusepb/controllers/PreferencesController.h branches/fusegl/fuse/fusepb/controllers/PreferencesController.m branches/fusegl/fuse/fusepb/nibs/Preferences.nib/classes.nib branches/fusegl/fuse/fusepb/nibs/Preferences.nib/info.nib branches/fusegl/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib branches/fusegl/fuse/fusepb/resources/Fuse Help/Fuse Help idx branches/fusegl/fuse/fusepb/resources/Fuse Help/html/emulation.html branches/fusegl/fuse/fusepb/resources/Fuse Help/html/mappings.html branches/fusegl/fuse/fusepb/resources/Fuse Help/html/menus.html branches/fusegl/fuse/fusepb/resources/Fuse Help/html/tocstart.html branches/fusegl/fuse/fusepb/settings-header.pl branches/fusegl/fuse/hacking/ChangeLog branches/fusegl/fuse/if1.c branches/fusegl/fuse/if2.c branches/fusegl/fuse/machine.c branches/fusegl/fuse/machine.h branches/fusegl/fuse/machines/pentagon.c branches/fusegl/fuse/machines/scorpion.c branches/fusegl/fuse/machines/spec128.c branches/fusegl/fuse/machines/spec16.c branches/fusegl/fuse/machines/spec48.c branches/fusegl/fuse/machines/spec_se.c branches/fusegl/fuse/machines/specplus2.c branches/fusegl/fuse/machines/specplus2a.c branches/fusegl/fuse/machines/specplus3.c branches/fusegl/fuse/machines/specplus3e.c branches/fusegl/fuse/machines/tc2048.c branches/fusegl/fuse/machines/tc2068.c branches/fusegl/fuse/machines/ts2068.c branches/fusegl/fuse/man/fuse.1 branches/fusegl/fuse/memory.c branches/fusegl/fuse/profile.c branches/fusegl/fuse/scld.c branches/fusegl/fuse/screenshot.c branches/fusegl/fuse/screenshot.h branches/fusegl/fuse/settings-header.pl branches/fusegl/fuse/settings.dat branches/fusegl/fuse/settings.pl branches/fusegl/fuse/snapshot.c branches/fusegl/fuse/sound/sdlsound.c branches/fusegl/fuse/sound.c branches/fusegl/fuse/sound.h branches/fusegl/fuse/tape.c branches/fusegl/fuse/ui/fb/fbdisplay.c branches/fusegl/fuse/ui/ggi/ggidisplay.c branches/fusegl/fuse/ui/gtk/gtkdisplay.c branches/fusegl/fuse/ui/gtk/gtkui.c branches/fusegl/fuse/ui/sdl/sdldisplay.c branches/fusegl/fuse/ui/sdl/sdljoystick.c branches/fusegl/fuse/ui/sdl/sdlkeyboard.c branches/fusegl/fuse/ui/svga/svgadisplay.c branches/fusegl/fuse/ui/uidisplay.h branches/fusegl/fuse/ui/win32/win32display.c branches/fusegl/fuse/ui/xlib/xdisplay.c branches/fusegl/fuse/uidisplay.c branches/fusegl/fuse/widget/menu.c branches/fusegl/fuse/widget/roms.c branches/fusegl/fuse/widget/widget.c Added Paths: ----------- branches/fusegl/fuse/fusepb/resources/Fuse Help/Fuse Help.helpindex branches/fusegl/fuse/fusepb/resources/Fuse Help/html/preferences.html branches/fusegl/fuse/fusepb/settings_cocoa.h Property Changed: ---------------- branches/fusegl/fuse/fusepb/ Modified: branches/fusegl/fuse/debugger/breakpoint.c =================================================================== --- branches/fusegl/fuse/debugger/breakpoint.c 2007-01-09 21:02:14 UTC (rev 288) +++ branches/fusegl/fuse/debugger/breakpoint.c 2007-01-10 10:49:57 UTC (rev 289) @@ -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: branches/fusegl/fuse/display.h =================================================================== --- branches/fusegl/fuse/display.h 2007-01-09 21:02:14 UTC (rev 288) +++ branches/fusegl/fuse/display.h 2007-01-10 10:49:57 UTC (rev 289) @@ -1,7 +1,7 @@ /* display.h: Routines for printing the Spectrum's screen Copyright (c) 1999-2006 Philip Kendall - $Id: display.h,v 1.23 2006/07/31 13:33:27 fredm Exp $ + $Id: display.h,v 1.26 2006/09/17 00:56:18 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 Modified: branches/fusegl/fuse/event.c =================================================================== --- branches/fusegl/fuse/event.c 2007-01-09 21:02:14 UTC (rev 288) +++ branches/fusegl/fuse/event.c 2007-01-10 10:49:57 UTC (rev 289) @@ -1,7 +1,7 @@ /* event.c: Routines needed for dealing with the event list Copyright (c) 2000-2004 Philip Kendall - $Id: event.c,v 1.55 2006/08/06 10:41:52 pak21 Exp $ + $Id: event.c,v 1.56 2006/09/03 14:12:22 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 Modified: branches/fusegl/fuse/fuse.cpp =================================================================== --- branches/fusegl/fuse/fuse.cpp 2007-01-09 21:02:14 UTC (rev 288) +++ branches/fusegl/fuse/fuse.cpp 2007-01-10 10:49:57 UTC (rev 289) @@ -94,12 +94,6 @@ /* Is Spectrum emulation currently paused, and if so, how many times? */ int fuse_emulation_paused; -/* Are we going to try and use the sound card; this differs from - sound.c:sound_enabled in that this gives a desire, whereas sound_enabled - is an actual state; when the Spectrum emulation is not running, this - stores whether we try to reenable the sound card afterwards */ -int fuse_sound_in_use; - /* The creator information we'll store in file formats that support this */ libspectrum_creator *fuse_creator; @@ -416,43 +410,6 @@ "--version Print version number and exit.\n\n" ); } -/* Start sound output */ -void -fuse_sound_enable(void) -{ - /* No sound if fastloading in progress */ - if( settings_current.fastload && tape_is_playing() ) return; - - /* If we now want sound, enable it */ - if( settings_current.sound && settings_current.emulation_speed == 100 ) { - - sound_init( settings_current.sound_device ); - sound_ay_reset(); - - /* If the sound code couldn't re-initialise, fall back to the - signal based routines */ - if( !sound_enabled ) { - /* Increment pause_count, report, decrement pause_count - * (i.e. avoid the effects of fuse_emulation_{,un}pause). - * Otherwise, we may be recursively reporting this error. */ - fuse_emulation_paused++; - fuse_emulation_paused--; - settings_current.sound = fuse_sound_in_use = 0; - - } - fuse_sound_in_use = sound_enabled; - } else if( fuse_sound_in_use ) { - fuse_sound_in_use = 0; - } -} - -/* Stop sound output */ -void -fuse_sound_disable(void) -{ - if( sound_enabled ) sound_end(); -} - /* Stop all activities associated with actual Spectrum emulation */ int fuse_emulation_pause(void) { @@ -470,7 +427,7 @@ /* If we had sound enabled (and hence doing the speed regulation), turn it off */ - if( sound_enabled ) sound_end(); + sound_pause(); return 0; } @@ -484,11 +441,12 @@ decrement the pause count */ if( --fuse_emulation_paused ) return 0; + /* If we now want sound, enable it */ + sound_unpause(); + /* Restart speed estimation with no information */ error = timer_estimate_reset(); if( error ) return error; - fuse_sound_enable(); - return 0; } Modified: branches/fusegl/fuse/fuse.h =================================================================== --- branches/fusegl/fuse/fuse.h 2007-01-09 21:02:14 UTC (rev 288) +++ branches/fusegl/fuse/fuse.h 2007-01-10 10:49:57 UTC (rev 289) @@ -43,9 +43,6 @@ int fuse_emulation_pause(void); /* Stop and start emulation */ int fuse_emulation_unpause(void); -void fuse_sound_enable(); /* Start sound output */ -void fuse_sound_disable(); /* Stop sound output */ - void fuse_abort( void ) GCC_NORETURN; /* Emergency shutdown */ int fuse_init(int argc, char **argv); @@ -53,8 +50,6 @@ 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 formats which support this */ Property changes on: branches/fusegl/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 Modified: branches/fusegl/fuse/fusepb/English.lproj/InfoPlist.strings =================================================================== (Binary files differ) Modified: branches/fusegl/fuse/fusepb/Info-Fuse.plist =================================================================== --- branches/fusegl/fuse/fusepb/Info-Fuse.plist 2007-01-09 21:02:14 UTC (rev 288) +++ branches/fusegl/fuse/fusepb/Info-Fuse.plist 2007-01-10 10:49:57 UTC (rev 289) @@ -361,11 +361,11 @@ <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleShortVersionString</key> - <string>20060718</string> + <string>20070110</string> <key>CFBundleSignature</key> <string>FUSE</string> <key>CFBundleVersion</key> - <string>20060718</string> + <string>20070110</string> <key>NSMainNibFile</key> <string>MainMenu</string> <key>NSPrincipalClass</key> Modified: branches/fusegl/fuse/fusepb/controllers/FuseController.m =================================================================== --- branches/fusegl/fuse/fusepb/controllers/FuseController.m 2007-01-09 21:02:14 UTC (rev 288) +++ branches/fusegl/fuse/fusepb/controllers/FuseController.m 2007-01-10 10:49:57 UTC (rev 289) @@ -584,7 +584,7 @@ free( snap ); free( recording ); fuse_emulation_unpause(); return; } - rzx_start_recording( recording, 0 ); + rzx_start_recording( recording, settings_current.embed_snapshot ); free( recording ); @@ -1872,9 +1872,9 @@ fuse_emulation_pause(); NSString *m = [NSString stringWithUTF8String:message]; - result = NSRunAlertPanel(@"Confirm", m, @"Cancel", @"OK", nil); + result = NSRunAlertPanel(@"Confirm", m, @"OK", @"Cancel", nil); - if( result != NSAlertDefaultReturn ) confirm = 1; + if( result == NSAlertDefaultReturn ) confirm = 1; fuse_emulation_unpause(); Modified: branches/fusegl/fuse/fusepb/controllers/PreferencesController.h =================================================================== --- branches/fusegl/fuse/fusepb/controllers/PreferencesController.h 2007-01-09 21:02:14 UTC (rev 288) +++ branches/fusegl/fuse/fusepb/controllers/PreferencesController.h 2007-01-10 10:49:57 UTC (rev 289) @@ -34,6 +34,7 @@ IBOutlet NSFormCell *rom1Filename; IBOutlet NSFormCell *rom2Filename; IBOutlet NSFormCell *rom3Filename; + IBOutlet NSArrayController *machineRomsController; IBOutlet NSMatrix *massStorageType; JoystickConfigurationController *joystickConfigurationController; @@ -52,6 +53,7 @@ - (NSArray *)joysticks; - (NSArray *)sdlJoysticks; - (IBAction)chooseROMFile:(id)sender; +- (IBAction)resetROMFile:(id)sender; - (IBAction)resetUserDefaults:(id)sender; - (IBAction)massStorageTypeClicked:(id)sender; - (void)setMassStorageType; Modified: branches/fusegl/fuse/fusepb/controllers/PreferencesController.m =================================================================== --- branches/fusegl/fuse/fusepb/controllers/PreferencesController.m 2007-01-09 21:02:14 UTC (rev 288) +++ branches/fusegl/fuse/fusepb/controllers/PreferencesController.m 2007-01-10 10:49:57 UTC (rev 289) @@ -163,6 +163,9 @@ settings_get_rom_array( &settings_current, machineRoms ); [machineRoms release]; + fuse_joystick_end(); + fuse_joystick_init(); + fuse_emulation_unpause(); /* If we've enabled sound we want to put some data in the buffers before @@ -235,36 +238,69 @@ { char buffer[PATH_MAX+1]; int result; - NSFormCell *currentField = nil; NSOpenPanel *oPanel = [NSOpenPanel openPanel]; NSArray *romFileTypes = [NSArray arrayWithObjects:@"rom", @"ROM", nil]; NSString *romString; result = [oPanel runModalForTypes:romFileTypes]; if (result == NSOKButton) { + NSString *key = NULL; NSString *oFile = [oPanel filename]; [oFile getFileSystemRepresentation:buffer maxLength:PATH_MAX]; + romString = [NSString stringWithUTF8String:buffer]; + switch( [sender tag] ) { case 0: - currentField = rom0Filename; + key = @"rom0"; break; case 1: - currentField = rom1Filename; + key = @"rom1"; break; case 2: - currentField = rom2Filename; + key = @"rom2"; break; case 3: - currentField = rom3Filename; + key = @"rom3"; break; } - romString = [NSString stringWithUTF8String:buffer]; - [currentField setStringValue:romString]; + // Update underlying model + [[machineRomsController selection] setValue:romString forKey:key]; } } +- (IBAction)resetROMFile:(id)sender +{ + NSString *romString; + NSString *source_key = nil; + NSString *dest_key = nil; + + switch( [sender tag] ) { + case 0: + source_key = @"default_rom0"; + dest_key = @"rom0"; + break; + case 1: + source_key = @"default_rom1"; + dest_key = @"rom1"; + break; + case 2: + source_key = @"default_rom2"; + dest_key = @"rom2"; + break; + case 3: + source_key = @"default_rom3"; + dest_key = @"rom3"; + break; + } + + romString = [[machineRomsController selection] valueForKey:source_key]; + + // Update underlying model + [[machineRomsController selection] setValue:romString forKey:dest_key]; +} + - (IBAction)resetUserDefaults:(id)sender { int error; Modified: branches/fusegl/fuse/fusepb/nibs/Preferences.nib/classes.nib =================================================================== --- branches/fusegl/fuse/fusepb/nibs/Preferences.nib/classes.nib 2007-01-09 21:02:14 UTC (rev 288) +++ branches/fusegl/fuse/fusepb/nibs/Preferences.nib/classes.nib 2007-01-10 10:49:57 UTC (rev 289) @@ -6,6 +6,7 @@ chooseFile = id; chooseROMFile = id; massStorageTypeClicked = id; + resetROMFile = id; resetUserDefaults = id; setup = id; showWindow = id; @@ -13,6 +14,7 @@ CLASS = PreferencesController; LANGUAGE = ObjC; OUTLETS = { + machineRomsController = NSArrayController; massStorageType = NSMatrix; rom0Filename = NSFormCell; rom1Filename = NSFormCell; Modified: branches/fusegl/fuse/fusepb/nibs/Preferences.nib/info.nib =================================================================== --- branches/fusegl/fuse/fusepb/nibs/Preferences.nib/info.nib 2007-01-09 21:02:14 UTC (rev 288) +++ branches/fusegl/fuse/fusepb/nibs/Preferences.nib/info.nib 2007-01-10 10:49:57 UTC (rev 289) @@ -3,21 +3,28 @@ <plist version="1.0"> <dict> <key>IBDocumentLocation</key> - <string>100 79 356 240 0 0 1440 878 </string> + <string>112 18 356 240 0 0 1440 878 </string> <key>IBFramework Version</key> <string>446.1</string> <key>IBGroupedObjects</key> <dict> - <key>1</key> + <key>3</key> <array> + <string>122</string> + <string>127</string> <string>121</string> - <string>122</string> <string>124</string> - <string>127</string> </array> + <key>4</key> + <array> + <string>993</string> + <string>995</string> + <string>992</string> + <string>994</string> + </array> </dict> <key>IBLastGroupID</key> - <string>2</string> + <string>5</string> <key>IBOldestOS</key> <integer>3</integer> <key>IBOpenObjects</key> Modified: branches/fusegl/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib =================================================================== --- branches/fusegl/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib 2007-01-09 21:02:14 UTC (rev 288) +++ branches/fusegl/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib 2007-01-10 10:49:57 UTC (rev 289) @@ -11,32 +11,32 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>1489</integer> + <integer>1524</integer> </dict> <key>NSAccessibilityConnectors</key> <dict> <key>CF$UID</key> - <integer>1486</integer> + <integer>1521</integer> </dict> <key>NSAccessibilityOidsKeys</key> <dict> <key>CF$UID</key> - <integer>1487</integer> + <integer>1522</integer> </dict> <key>NSAccessibilityOidsValues</key> <dict> <key>CF$UID</key> - <integer>1488</integer> + <integer>1523</integer> </dict> <key>NSClassesKeys</key> <dict> <key>CF$UID</key> - <integer>1203</integer> + <integer>1227</integer> </dict> <key>NSClassesValues</key> <dict> <key>CF$UID</key> - <integer>1204</integer> + <integer>1228</integer> </dict> <key>NSConnections</key> <dict> @@ -56,34 +56,34 @@ <key>NSNamesKeys</key> <dict> <key>CF$UID</key> - <integer>1143</integer> + <integer>1163</integer> </dict> <key>NSNamesValues</key> <dict> <key>CF$UID</key> - <integer>1144</integer> + <integer>1164</integer> </dict> <key>NSNextOid</key> - <integer>1061</integer> + <integer>1067</integer> <key>NSObjectsKeys</key> <dict> <key>CF$UID</key> - <integer>1136</integer> + <integer>1156</integer> </dict> <key>NSObjectsValues</key> <dict> <key>CF$UID</key> - <integer>1142</integer> + <integer>1162</integer> </dict> <key>NSOidsKeys</key> <dict> <key>CF$UID</key> - <integer>1205</integer> + <integer>1229</integer> </dict> <key>NSOidsValues</key> <dict> <key>CF$UID</key> - <integer>1206</integer> + <integer>1230</integer> </dict> <key>NSRoot</key> <dict> @@ -160,387 +160,387 @@ </dict> <dict> <key>CF$UID</key> - <integer>808</integer> + <integer>816</integer> </dict> <dict> <key>CF$UID</key> - <integer>817</integer> + <integer>825</integer> </dict> <dict> <key>CF$UID</key> - <integer>818</integer> + <integer>826</integer> </dict> <dict> <key>CF$UID</key> - <integer>822</integer> + <integer>830</integer> </dict> <dict> <key>CF$UID</key> - <integer>825</integer> + <integer>833</integer> </dict> <dict> <key>CF$UID</key> - <integer>828</integer> + <integer>836</integer> </dict> <dict> <key>CF$UID</key> - <integer>831</integer> + <integer>839</integer> </dict> <dict> <key>CF$UID</key> - <integer>834</integer> + <integer>842</integer> </dict> <dict> <key>CF$UID</key> - <integer>837</integer> + <integer>845</integer> </dict> <dict> <key>CF$UID</key> - <integer>840</integer> + <integer>848</integer> </dict> <dict> <key>CF$UID</key> - <integer>843</integer> + <integer>851</integer> </dict> <dict> <key>CF$UID</key> - <integer>846</integer> + <integer>854</integer> </dict> <dict> <key>CF$UID</key> - <integer>849</integer> + <integer>857</integer> </dict> <dict> <key>CF$UID</key> - <integer>852</integer> + <integer>860</integer> </dict> <dict> <key>CF$UID</key> - <integer>855</integer> + <integer>863</integer> </dict> <dict> <key>CF$UID</key> - <integer>858</integer> + <integer>866</integer> </dict> <dict> <key>CF$UID</key> - <integer>861</integer> + <integer>869</integer> </dict> <dict> <key>CF$UID</key> - <integer>864</integer> + <integer>872</integer> </dict> <dict> <key>CF$UID</key> - <integer>867</integer> + <integer>875</integer> </dict> <dict> <key>CF$UID</key> - <integer>870</integer> + <integer>878</integer> </dict> <dict> <key>CF$UID</key> - <integer>873</integer> + <integer>881</integer> </dict> <dict> <key>CF$UID</key> - <integer>876</integer> + <integer>884</integer> </dict> <dict> <key>CF$UID</key> - <integer>879</integer> + <integer>887</integer> </dict> <dict> <key>CF$UID</key> - <integer>882</integer> + <integer>890</integer> </dict> <dict> <key>CF$UID</key> - <integer>885</integer> + <integer>898</integer> </dict> <dict> <key>CF$UID</key> - <integer>893</integer> + <integer>905</integer> </dict> <dict> <key>CF$UID</key> - <integer>900</integer> + <integer>908</integer> </dict> <dict> <key>CF$UID</key> - <integer>903</integer> + <integer>909</integer> </dict> <dict> <key>CF$UID</key> - <integer>904</integer> + <integer>911</integer> </dict> <dict> <key>CF$UID</key> - <integer>906</integer> + <integer>920</integer> </dict> <dict> <key>CF$UID</key> - <integer>915</integer> + <integer>923</integer> </dict> <dict> <key>CF$UID</key> - <integer>918</integer> + <integer>927</integer> </dict> <dict> <key>CF$UID</key> - <integer>922</integer> + <integer>943</integer> </dict> <dict> <key>CF$UID</key> - <integer>938</integer> + <integer>947</integer> </dict> <dict> <key>CF$UID</key> - <integer>942</integer> + <integer>951</integer> </dict> <dict> <key>CF$UID</key> - <integer>946</integer> + <integer>956</integer> </dict> <dict> <key>CF$UID</key> - <integer>951</integer> + <integer>959</integer> </dict> <dict> <key>CF$UID</key> - <integer>954</integer> + <integer>962</integer> </dict> <dict> <key>CF$UID</key> - <integer>957</integer> + <integer>965</integer> </dict> <dict> <key>CF$UID</key> - <integer>960</integer> + <integer>971</integer> </dict> <dict> <key>CF$UID</key> - <integer>966</integer> + <integer>974</integer> </dict> <dict> <key>CF$UID</key> - <integer>969</integer> + <integer>977</integer> </dict> <dict> <key>CF$UID</key> - <integer>972</integer> + <integer>981</integer> </dict> <dict> <key>CF$UID</key> - <integer>976</integer> + <integer>983</integer> </dict> <dict> <key>CF$UID</key> - <integer>978</integer> + <integer>985</integer> </dict> <dict> <key>CF$UID</key> - <integer>980</integer> + <integer>987</integer> </dict> <dict> <key>CF$UID</key> - <integer>982</integer> + <integer>989</integer> </dict> <dict> <key>CF$UID</key> - <integer>984</integer> + <integer>991</integer> </dict> <dict> <key>CF$UID</key> - <integer>986</integer> + <integer>992</integer> </dict> <dict> <key>CF$UID</key> - <integer>987</integer> + <integer>993</integer> </dict> <dict> <key>CF$UID</key> - <integer>988</integer> + <integer>994</integer> </dict> <dict> <key>CF$UID</key> - <integer>989</integer> + <integer>996</integer> </dict> <dict> <key>CF$UID</key> - <integer>991</integer> + <integer>999</integer> </dict> <dict> <key>CF$UID</key> - <integer>994</integer> + <integer>1002</integer> </dict> <dict> <key>CF$UID</key> - <integer>997</integer> + <integer>1005</integer> </dict> <dict> <key>CF$UID</key> - <integer>1000</integer> + <integer>1008</integer> </dict> <dict> <key>CF$UID</key> - <integer>1003</integer> + <integer>1015</integer> </dict> <dict> <key>CF$UID</key> - <integer>1010</integer> + <integer>1016</integer> </dict> <dict> <key>CF$UID</key> - <integer>1011</integer> + <integer>1017</integer> </dict> <dict> <key>CF$UID</key> - <integer>1012</integer> + <integer>1018</integer> </dict> <dict> <key>CF$UID</key> - <integer>1013</integer> + <integer>1021</integer> </dict> <dict> <key>CF$UID</key> - <integer>1016</integer> + <integer>1022</integer> </dict> <dict> <key>CF$UID</key> - <integer>1017</integer> + <integer>1025</integer> </dict> <dict> <key>CF$UID</key> - <integer>1020</integer> + <integer>1028</integer> </dict> <dict> <key>CF$UID</key> - <integer>1023</integer> + <integer>1029</integer> </dict> <dict> <key>CF$UID</key> - <integer>1024</integer> + <integer>1032</integer> </dict> <dict> <key>CF$UID</key> - <integer>1027</integer> + <integer>1037</integer> </dict> <dict> <key>CF$UID</key> - <integer>1032</integer> + <integer>1038</integer> </dict> <dict> <key>CF$UID</key> - <integer>1033</integer> + <integer>1039</integer> </dict> <dict> <key>CF$UID</key> - <integer>1034</integer> + <integer>1040</integer> </dict> <dict> <key>CF$UID</key> - <integer>1035</integer> + <integer>1041</integer> </dict> <dict> <key>CF$UID</key> - <integer>1038</integer> + <integer>1046</integer> </dict> <dict> <key>CF$UID</key> - <integer>1039</integer> + <integer>1050</integer> </dict> <dict> <key>CF$UID</key> - <integer>1042</integer> + <integer>1056</integer> </dict> <dict> <key>CF$UID</key> - <integer>1047</integer> + <integer>1061</integer> </dict> <dict> <key>CF$UID</key> - <integer>1051</integer> + <integer>1065</integer> </dict> <dict> <key>CF$UID</key> - <integer>1057</integer> + <integer>1069</integer> </dict> <dict> <key>CF$UID</key> - <integer>1062</integer> + <integer>1071</integer> </dict> <dict> <key>CF$UID</key> - <integer>1066</integer> + <integer>1072</integer> </dict> <dict> <key>CF$UID</key> - <integer>1070</integer> + <integer>1075</integer> </dict> <dict> <key>CF$UID</key> - <integer>1072</integer> + <integer>1078</integer> </dict> <dict> <key>CF$UID</key> - <integer>1073</integer> + <integer>1082</integer> </dict> <dict> <key>CF$UID</key> - <integer>1076</integer> + <integer>1084</integer> </dict> <dict> <key>CF$UID</key> - <integer>1079</integer> + <integer>1086</integer> </dict> <dict> <key>CF$UID</key> - <integer>1083</integer> + <integer>1089</integer> </dict> <dict> <key>CF$UID</key> - <integer>1085</integer> + <integer>1092</integer> </dict> <dict> <key>CF$UID</key> - <integer>1087</integer> + <integer>1094</integer> </dict> <dict> <key>CF$UID</key> - <integer>1090</integer> + <integer>1096</integer> </dict> <dict> <key>CF$UID</key> - <integer>1093</integer> + <integer>1099</integer> </dict> <dict> <key>CF$UID</key> - <integer>1095</integer> + <integer>1102</integer> </dict> <dict> <key>CF$UID</key> - <integer>1097</integer> + <integer>1105</integer> </dict> <dict> <key>CF$UID</key> - <integer>1100</integer> + <integer>1108</integer> </dict> <dict> <key>CF$UID</key> - <integer>1103</integer> + <integer>1110</integer> </dict> <dict> <key>CF$UID</key> - <integer>1106</integer> + <integer>1112</integer> </dict> <dict> <key>CF$UID</key> - <integer>1109</integer> + <integer>1113</integer> </dict> <dict> <key>CF$UID</key> - <integer>1113</integer> + <integer>1114</integer> </dict> <dict> <key>CF$UID</key> @@ -564,20 +564,52 @@ </dict> <dict> <key>CF$UID</key> - <integer>1125</integer> + <integer>1126</integer> </dict> <dict> <key>CF$UID</key> - <integer>1128</integer> + <integer>1129</integer> </dict> <dict> <key>CF$UID</key> - <integer>1130</integer> + <integer>1133</integer> </dict> <dict> <key>CF$UID</key> - <integer>1132</integer> + <integer>1135</integer> </dict> + <dict> + <key>CF$UID</key> + <integer>1137</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>1140</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>1142</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>1144</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>1146</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>1148</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>1150</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>1152</integer> + </dict> </array> </dict> <dict> @@ -637,12 +669,12 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>114</integer> + <integer>103</integer> </dict> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>220</integer> + <integer>205</integer> </dict> <key>NSNextResponder</key> <dict> @@ -652,7 +684,7 @@ <key>NSSubviews</key> <dict> <key>CF$UID</key> - <integer>119</integer> + <integer>108</integer> </dict> </dict> <string>{{18, 103}, {105, 18}}</string> @@ -1072,7 +1104,7 @@ <key>NSLabel</key> <dict> <key>CF$UID</key> - <integer>807</integer> + <integer>815</integer> </dict> <key>NSSource</key> <dict> @@ -1084,22 +1116,22 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>806</integer> + <integer>814</integer> </dict> <key>NSMaxSize</key> <dict> <key>CF$UID</key> - <integer>805</integer> + <integer>813</integer> </dict> <key>NSMinSize</key> <dict> <key>CF$UID</key> - <integer>804</integer> + <integer>812</integer> </dict> <key>NSScreenRect</key> <dict> <key>CF$UID</key> - <integer>803</integer> + <integer>811</integer> </dict> <key>NSViewClass</key> <dict> @@ -1133,7 +1165,7 @@ <integer>46</integer> </dict> </dict> - <string>{{16, 167}, {634, 393}}</string> + <string>{{153, 336}, {634, 393}}</string> <string>Preferences</string> <string>NSPanel</string> <dict> @@ -1159,12 +1191,12 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>114</integer> + <integer>103</integer> </dict> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>802</integer> + <integer>810</integer> </dict> <key>NSNextResponder</key> <dict> @@ -1191,11 +1223,11 @@ </dict> <dict> <key>CF$UID</key> - <integer>764</integer> + <integer>772</integer> </dict> <dict> <key>CF$UID</key> - <integer>797</integer> + <integer>805</integer> </dict> </array> </dict> @@ -1203,7 +1235,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>763</integer> + <integer>771</integer> </dict> <key>NSAllowTruncatedLabels</key> <true/> @@ -1217,7 +1249,7 @@ <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>115</integer> + <integer>104</integer> </dict> <key>NSNextResponder</key> <dict> @@ -1227,7 +1259,7 @@ <key>NSSelectedTabViewItem</key> <dict> <key>CF$UID</key> - <integer>761</integer> + <integer>769</integer> </dict> <key>NSSubviews</key> <dict> @@ -1242,7 +1274,7 @@ <key>NSTabViewItems</key> <dict> <key>CF$UID</key> - <integer>116</integer> + <integer>105</integer> </dict> <key>NSTvFlags</key> <integer>4</integer> @@ -1265,12 +1297,12 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>114</integer> + <integer>103</integer> </dict> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>113</integer> + <integer>102</integer> </dict> <key>NSNextResponder</key> <dict> @@ -1302,11 +1334,11 @@ </dict> <dict> <key>CF$UID</key> - <integer>105</integer> + <integer>94</integer> </dict> <dict> <key>CF$UID</key> - <integer>109</integer> + <integer>98</integer> </dict> </array> </dict> @@ -1314,17 +1346,17 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>104</integer> + <integer>93</integer> </dict> <key>NSBackgroundColor</key> <dict> <key>CF$UID</key> - <integer>99</integer> + <integer>87</integer> </dict> <key>NSCellBackgroundColor</key> <dict> <key>CF$UID</key> - <integer>103</integer> + <integer>92</integer> </dict> <key>NSCellClass</key> <dict> @@ -1377,8 +1409,10 @@ <key>NSSelectedCell</key> <dict> <key>CF$UID</key> - <integer>55</integer> + <integer>61</integer> </dict> + <key>NSSelectedRow</key> + <integer>1</integer> <key>NSSuperview</key> <dict> <key>CF$UID</key> @@ -1387,7 +1421,7 @@ <key>NSvFlags</key> <integer>256</integer> </dict> - <string>{{18, 162}, {288, 118}}</string> + <string>{{13, 162}, {244, 118}}</string> <dict> <key>$class</key> <dict> @@ -1497,7 +1531,7 @@ <key>NSTag</key> <integer>2</integer> </dict> - <string>No filter</string> + <string>None</string> <dict> <key>$class</key> <dict> @@ -1768,9 +1802,9 @@ <integer>15</integer> </dict> <key>NSTag</key> - <integer>12</integer> + <integer>14</integer> </dict> - <string>Dot Matrix</string> + <string>HQ 2x</string> <dict> <key>$class</key> <dict> @@ -1872,9 +1906,9 @@ <integer>15</integer> </dict> <key>NSTag</key> - <integer>14</integer> + <integer>15</integer> </dict> - <string>HQ 2x</string> + <string>HQ 3x</string> <dict> <key>$class</key> <dict> @@ -1924,9 +1958,9 @@ <integer>15</integer> </dict> <key>NSTag</key> - <integer>8</integer> + <integer>9</integer> </dict> - <string>Scale 2x</string> + <string>AdvMAME 3x</string> <dict> <key>$class</key> <dict> @@ -1976,9 +2010,9 @@ <integer>15</integer> </dict> <key>NSTag</key> - <integer>15</integer> + <integer>12</integer> </dict> - <string>HQ 3x</string> + <string>Dot Matrix</string> <dict> <key>$class</key> <dict> @@ -2028,9 +2062,9 @@ <integer>15</integer> </dict> <key>NSTag</key> - <integer>9</integer> + <integer>8</integer> </dict> - <string>Scale 3x</string> + <string>AdvMAME 2x</string> <dict> <key>$class</key> <dict> @@ -2042,10 +2076,15 @@ <key>CF$UID</key> <integer>21</integer> </dict> + <key>NSAlternateImage</key> + <dict> + <key>CF$UID</key> + <integer>57</integer> + </dict> <key>NSButtonFlags</key> - <integer>-2034450177</integer> + <integer>1211945471</integer> <key>NSButtonFlags2</key> - <integer>7</integer> + <integer>0</integer> <key>NSCellFlags</key> <integer>67239424</integer> <key>NSCellFlags2</key> @@ -2075,7 +2114,7 @@ <integer>15</integer> </dict> </dict> - <string>Bilinear filter</string> + <string>Timex 1.5x</string> <dict> <key>$classes</key> <array> @@ -2086,7 +2125,7 @@ <key>$classname</key> <string>NSMutableArray</string> </dict> - <string>{142, 18}</string> + <string>{120, 18}</string> <string>{4, 2}</string> <string>NSActionCell</string> <dict> @@ -2113,11 +2152,6 @@ <key>CF$UID</key> <integer>86</integer> </dict> - <key>NSNormalImage</key> - <dict> - <key>CF$UID</key> - <integer>87</integer> - </dict> <key>NSPeriodicDelay</key> <integer>400</integer> <key>NSPeriodicInterval</key> @@ -2133,224 +2167,39 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>98</integer> + <integer>91</integer> </dict> - <key>NSColor</key> + <key>NSCatalogName</key> <dict> <key>CF$UID</key> - <integer>96</integer> - </dict> - <key>NSImageFlags</key> - <integer>549453824</integer> - <key>NSReps</key> - <dict> - <key>CF$UID</key> - <integer>89</integer> - </dict> - <key>NSSize</key> - <dict> - <key>CF$UID</key> <integer>88</integer> </dict> - </dict> - <string>{18, 18}</string> - <dict> - <key>$class</key> + <key>NSColor</key> <dict> <key>CF$UID</key> - <integer>81</integer> + <integer>90</integer> </dict> - <key>NS.objects</key> - <array> - <dict> - <key>CF$UID</key> - <integer>90</integer> - </dict> - </array> - </dict> - <dict> - <key>$class</key> + <key>NSColorName</key> <dict> <key>CF$UID</key> - <integer>95</integer> + <integer>89</integer> </dict> - <key>NS.objects</key> - <array> - <dict> - <key>CF$UID</key> - <integer>91</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>92</integer> - </dict> - </array> + <key>NSColorSpace</key> + <integer>6</integer> </dict> - <integer>0</integer> + <string>System</string> + <string>controlColor</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>94</integer> + <integer>91</integer> </dict> - <key>NSTIFFRepresentation</key> - <dict> - <key>CF$UID</key> - <integer>93</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 - DgEAAAMAAAABABIAAAEBAAMAAAABABIAAAECAAMAAAAEAAAFxgEDAAMAAAAB - AAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAESAAMAAAABAAEAAAEVAAMA - AAABAAQAAAEWAAMAAAABBxwAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS - AAMAAAABAAEAAAFTAAMAAAAEAAAFzodzAAcAAA8YAAAF1gAAAAAACAAIAAgA - CAABAAEAAQABAAAPGGFwcGwCAAAAbW50clJHQiBYWVogB9YAAwASABEAAQAd - YWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1h - cHBs24obgflnwSSLAY41ZDP3fwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAOclhZWgAAASwAAAAUZ1hZWgAAAUAAAAAUYlhZWgAAAVQAAAAUd3Rw - dAAAAWgAAAAUY2hhZAAAAXwAAAAsclRSQwAAAagAAAAOZ1RSQwAAAbgAAAAO - YlRSQwAAAcgAAAAOdmNndAAAAdgAAAYSbmRpbgAAB+wAAAY+ZGVzYwAADiwA - AABkZHNjbQAADpAAAAAubW1vZAAADsAAAAAoY3BydAAADugAAAAtWFlaIAAA - AAAAAFuKAAA0GQAACEtYWVogAAAAAAAAd5UAALWhAAAoTVhZWiAAAAAAAAAj - twAAFmEAAKKNWFlaIAAAAAAAAPNSAAEAAAABFs9zZjMyAAAAAAABDEIAAAXe - ///zJgAAB5IAAP2R///7ov///aMAAAPcAADAbGN1cnYAAAAAAAAAAQHNAABj - dXJ2AAAAAAAAAAEBzQAAY3VydgAAAAAAAAABAc0AAHZjZ3QAAAAAAAAAAAAD - AQAAAgAAASQBpgJ6A3wEfAV+BoAHggiDCUQJxQqHC4gMiQ2MDrYQaBGREpET - khSUFZUWlReXGMUabxubHJsdnR7IIHUhoiKjI88leyamJ9EpfiqrK9Ytgi6t - L9oxhzKyM981jDa2N+E5jjq6O+Y9kz6+P+pBlkLCQ+5FmkbGR/JJn0rKS/ZN - ok7OT9BQ0FHRUvxUqlXVVtZX11jYWgRbsVzcXd1e3l/fYOBiDGO5ZORl5Wbm - Z+do6GnpaxVswW3tbu5v73DwcfFy8nP0dPR19Xb2d/d4+Hn5evp7/Hz8ff1/ - KYDVggGDAoQDhQSGBYcGiAeJCIoJiwqMC40Mjg2PDpAPkRCSEZMSlBOVFJYV - lxaYF5kYmhmbGpwbnRyeHZ8eoB+hIKIhoyKkI6UkpiWnJ6gnqSiqKasqq+us - bK0sri2vL7AwsTGyMbMytDS1NbY2tva3drg3uTi6Ors7vDy9PL49vv6/f8A/ - wUDCQcNCxEPFBMWExkXHRshHyUnKScsKy4vMS81Mzk7PDs+P0FDRUdJS0xLT - ktRT1VTWVdcW15fYV9lY2lrbGtub3FzdXN5d3x7fn+Bf4WDiIeKi42LkY+Vk - 5iXmpudm6GfpaOop6qrrauxr7WzuLe6u727wb/Fw8jHysvNy9HP1dPY19rb3 - dvh4+Xn6efs6+7v8e/18/j3+vv//AAABIwIOAvADywSrBZMGfAdnCFQJQwo0 - CycMJw0YDhcPGBAYERUSJhMoFDgVTBZeF3MYjhmvGssb6R0THjYfZyCYIccj - ASQ9JXEmsSfvKSgqbCu7LQMuQS+RMOEyKTOGNNc2KjdwOMU6Fzt4PMw+Fj9v - QMJCJEN7RNFGHkd4SL1J+UsxTGVNlU7RUA5RR1J4U6VU1FYKV0BYcVmdWsZb - 710fXk9femCiYcVi6WQVZT9mWGd+aKBpwGrda/ltE24rb0RwaHF8cpBzonS1 - dch223fqePZ6A3sRfCB9LH41f0CAS4FPgluDYIRlhWyGdIdyiICJgIqDi4mM - ko2LjpqPmZCXkZGSnJOSlJaVmJaol6eYrpmomqubr5y8nbyexZ/MoNGh06LT - o9Ok26Xkpuen4qjlqe+q8avvrO6t8q7vr+uw7LHnsuGz4rTatdG2ybfAuLe5 - r7qcu5K8gL1tvlu/S8A8wSrCEsL5w+DEysW0xpPHcshTyTbKG8r/y9rMtM2K - zlrPI8/m0LPRfdJF0w7T3dSg1WrWM9b9183Yk9ld2ina89u63ILdS94U3t7f - qeBz4TviBOLK45TkXuUn5ezmuueB6ErpFend6qTrbOw17P7tye6S71vwJPDs - 8bPyfPNH9BL02PWl9m/3OfgD+Mf5kfpb+yP77fy2/YD+Sf8W//8AAACDAXgC - egM7A7oEfQU/Bb8GgQeFCEYIxQmGCocLigxKDMsNjQ6ND44QTxDPEZASkhOT - FJMVVBXUFpYXlhiYGZoamxubHJwdXB3dHp8foCChIaEioSOjJKQlpSamJ6co - qCmpKmkq6iuqLKwtrS6uL68wsDGxMrIzszS0NbY2tje2OHg4+Dm6Oro7uzy8 - Pb0+fj7+P79AwEHBQsJDw0SERQRFxUbGR8dIyEnJSspLi0wMTMxNzU7OT89Q - kFEQUdFS0lPTVNRV1laWVxZX11jYWdla2lubXBtc3F3dXt9f4GDgYaFiIWLi - Y+Nk5GXlZqZnJmfnaOhp6Wrqa6tsLGzsbe1u7m/vcPBx8XLyc/N09HX1dvZ3 - 93i4eTh5+Xr6e/t8/H39fv5//4EAggKDAoQDhQSGBYcHiAeJCInJikqLC4wM - jQyODY8PkBCREZIRkxKUE5UUlhaXF5gYmRiaGZsanBydHJ4dnx6gH6EgoiGi - 4qNjpCOlJKYmpyaoJ6koqimrKqwsrS2uLq8vsDCxMbIxszK0M7U0tjW3N7g3 - uTi6Obs7vDu9PL4+vz7AP8FAwkHDQsRDxUXGRsdGyEfJSMpJy0vMds4iz07Q - UNFQ0lHTfdUq1lbXV9iC2i/bWtyG3jPfieE14ozkZOY755Hpaetq7Wzvb/GK - 9Fr2j/mL/VL//wAAbmRpbgAAAAAAAAY2AACWKwAAVpoAAFOiAACGKwAAJ18A - ABaoAABQDQAAVDkAAgUeAAI9cAABSj0AAwEAAAIAAAABABAAHQAuAEIAWQBz - AJAAsAD4ASABSwF4AagBzgHnAg8CRwKBAr0C/AM9A4EDxgP8BCEEWQSmBPUF - RgWFBa8F7wZHBqEG5gcVB1wHvQgHCDkIhAjrCToJbwnACi0KgAq4Cw4LgQvZ - DBQMbgzoDUUNgw3hDmEOwg8DD2YP7BBREJYQ/RGJEfISOhKlEzcTpRPvFF8U - 9xVpFbYWKxbHF2YYBxiqGSUZdxn0Gp0bRxvzHKAdJB18HgEetR9qICEg2iGU - IiIigCMPI88kkSVVJhom4ierKEMoqSlCKhEq4SuzLIctXC4zLwwv5zDEMaIy - gjNkNEc1LDYTNvw35jiXOQ45wDqwO6E8lD2IPn8/d0BxQWxCaUNoRGhFa0Zu - R3RIe0mESo9Lm0ypTbhOyU/cUPFSB1MeVDhVU1ZwV45YrlnQWvNcGF0+XmZf - kGC7YehjF2RHZXlmrGkYalBrimzFbgJvQXCBccNzBnRLdZJ4JHlverx8Cn1a - fqx//4FUhAKFXIa3iBOJcYrRjZWO+ZBfkcaTL5Sal3OY45pTm8WerqAloZ2j - F6YQp46pDqqPrZevHbCksi21RLbRuGG58b0XvqzAQsN0xQ/GrMhKy4rNLc7R - 0HbTxtVw1xvYyNwm3djfiuE/5KzmZOgf6drtVu8W8NfymvRf9+z5tft//xj/ - /wAAAAIACgAXACkAPwBYAHUAlQC4AN4BBwEwAV8BjgG/AfMCKgJfApoC1AMP - A00DjAPNBA0ETwSVBNsFIAVpBbAF+AZDBo8G2QclB3UHwwgSCGQIuAkLCVwJ - rgoECl4KtAsKC2MLvwwVDHAMzQ0qDY0N7A5MDq8PDQ9vD9YQQBCkEQ4RdhHb - EkYSsRMgE5IT/hRzFO0VahXqFmwW8hd0F/YYehkBGYwaGhqqGzkbxhxWHOkd - gB4ZHrYfUR/qIIYhJiHIIm4jFyO+JGMlDCXBJm4nHyfSKIkpQin9KrsrfCw9 - LPctvy6IL1QwITDvMb8ykTNqNEQ1HjX7NtU3uTidOYE6ZztXPD09Lz4hPxJA - BEEDQfJC8UPvROtF5kbzR+tI9UoCSxRMF00xTj5PT1BSUWtSeVObVLJVzFbb - V/xZFFovW05ccV2ZXsVf52EJYjBjaGSaZb9m8GgpaWVql2vVbRtuVW+bcOhy - KHN2dMl2HXdzeMp6I3uOfOp+WX/IgTaCpYQShY6HEoiWihiLm401js6QZZH6 - k42VN5blmJ6aapxVnimgBaHso8KltaeZqYarY61cr0axOLM0tS63LbkouyW9 - KL8wwT/DSMVRx2zJccuRzaDPvNHe0//WH9g92mTci9664OzjGeVC54DpqOvk - 7hrwZvKe9Ob3KPlu+7b+Af//AAAABgAQAB0AQgBZAJAAsADSASABSwF4AagC - DwJHAoECvQM9A4EDxgQPBFkE9QVGBZoF7wZHBqEG/gdcCB8IhAjrCVQJwAot - CpwLDguBC/cMbgzoDWQOYQ7jD2YP7BBzEP0RiRIWEqUTNxPKFF8U9xWQFscX - ZhgHGKoZThn0G0cb8xygHVAeAR61ICEg2iGUIlEjDyPPJJEmGibiJ6sodilC - KuErsyyHLVwuMy8MMMQxojKCM2Q0RzYTNvw35jjSOcA6sDyUPYg+fz93QHFC - aUNoRGhFa0ZuSHtJhEqPS5tMqU24TslP3FDxUgdTHlQ4VVNXjliuWdBa81wY - XT5eZl+QYLth6GMXZEdleWasZ+FpGGpQbMVuAm9BcIFxw3MGdEt1knbaeCR5 - b3q8fAp9Wn6sf/+BVIKqhAKFXIa3iBOJcYrRjDKO+ZBfkcaTL5SalgaXc5jj - mlObxZ05nq6gJaGdoxekk6YQp46pDqqPrBKtl68dsKSyLbO4tUS20bhhufG7 - g70XvqzAQsHaw3TFD8asyErJ6cuKzMTNls7R0HbSHdPG1XDWsNeG2Mjadtwm - 3WveRN+K4T/ih+Ni5Kzl9ubT6B/pa+pJ6yjsB+1W7qbvhvBn8UjyKvML8+70 - 0PWz9pb3VPfs+IT5Qvon+ub7f/wY/J79Ef2E/ff+pP+L//8AAGRlc2MAAAAA - AAAACkNvbG9yIExDRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AABtbHVjAAAAAAAAAAEAAAAMZW5VUwAAABIAAAAcAEMAbwBsAG8AcgAgAEwA - QwBEAABtbW9kAAAAAAAABhAAAJxXAAAAAL/4e4AAAAAAAAAAAAAAAAAAAAAA - dGV4dAAAAABDb3B5cmlnaHQgQXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUA - AAAA - </data> - <dict> - <key>$classes</key> - <array> - <string>NSBitmapImageRep</string> - <string>NSImageRep</string> - <string>NSObject</string> - </array> - <key>$classname</key> - <string>NSBitmapImageRep</string> - </dict> - <dict> - <key>$classes</key> - <array> - <string>NSArray</string> - <string>NSObject</string> - </array> - <key>$classname</key> - <string>NSArray</string> - </dict> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>97</integer> - </dict> <key>NSColorSpace</key> <integer>3</integer> <key>NSWhite</key> <data> - MCAwAA== + MC42NjY2NjY2OQA= </data> </dict> <dict> @@ -2363,64 +2212,15 @@ <string>NSColor</string> </dict> <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>97</integer> + <integer>91</integer> </dict> - <key>NSCatalogName</key> - <dict> - <key>CF$UID</key> - <integer>100</integer> - </dict> - <key>NSColor</key> - <dict> - <key>CF$UID</key> - <integer>102</integer> - </dict> - <key>NSColorName</key> - <dict> - <key>CF$UID</key> - <integer>101</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>97</integer> - </dict> - <key>NSColorSpace</key> <integer>3</integer> <key>NSWhite</key> <data> - MC42NjY2NjY2OQA= - </data> - </dict> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>97</integer> - </dict> - <key>NSColorSpace</key> - <integer>3</integer> - <key>NSWhite</key> - <data> MQA= </data> </dict> @@ -2446,14 +2246,14 @@ <key>NSCell</key> <dict> <key>CF$UID</key> - <integer>107</integer> + <integer>96</integer> </dict> <key>NSEnabled</key> <true/> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>106</integer> + <integer>95</integer> </dict> <key>NSNextResponder</key> <dict> @@ -2468,7 +2268,7 @@ <key>NSvFlags</key> <integer>256</integer> </dict> - <string>{{18, 120}, {151, 18}}</string> + <string>{{13, 140}, {151, 18}}</string> <dict> <key>$class</key> <dict> @@ -2496,12 +2296,12 @@ <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>108</integer> + <integer>97</integer> </dict> <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>105</integer> + <integer>94</integer> </dict> <key>NSKeyEquivalent</key> <dict> @@ -2528,14 +2328,14 @@ <key>NSCell</key> <dict> <key>CF$UID</key> - <integer>111</integer> + <integer>100</integer> </dict> <key>NSEnabled</key> <true/> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>110</integer> + <integer>99</integer> </dict> <key>NSNextResponder</key> <dict> @@ -2550,7 +2350,7 @@ <key>NSvFlags</key> <integer>256</integer> </dict> - <string>{{18, 140}, {151, 18}}</string> + <string>{{137, 162}, {86, 18}}</string> <dict> <key>$class</key> <dict> @@ -2578,12 +2378,12 @@ <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>112</integer> + <integer>101</integer> </dict> <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>109</integer> + <integer>98</integer> </dict> <key>NSKeyEquivalent</key> <dict> @@ -2600,7 +2400,7 @@ <integer>15</integer> </dict> </dict> - <string>Bilinear filter</string> + <string>Bilinear</string> <string>{{10, 7}, {585, 299}}</string> <dict> <key>$classes</key> @@ -2623,35 +2423,35 @@ <array> <dict> <key>CF$UID</key> - <integer>117</integer> + <integer>106</integer> </dict> <dict> <key>CF$UID</key> - <integer>223</integer> + <integer>208</integer> </dict> <dict> <key>CF$UID</key> - <integer>262</integer> + <integer>247</integer> </dict> <dict> <key>CF$UID</key> - <integer>413</integer> + <integer>403</integer> </dict> <dict> <key>CF$UID</key> - <integer>451</integer> + <integer>441</integer> </dict> <dict> <key>CF$UID</key> - <integer>590</integer> + <integer>580</integer> </dict> <dict> <key>CF$UID</key> - <integer>673</integer> + <integer>681</integer> </dict> <dict> <key>CF$UID</key> - <integer>761</integer> + <integer>769</integer> </dict> </array> </dict> @@ -2659,22 +2459,22 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>222</integer> + <integer>207</integer> </dict> <key>NSColor</key> <dict> <key>CF$UID</key> - <integer>99</integer> + <integer>87</integer> </dict> <key>NSIdentifier</key> <dict> <key>CF$UID</key> - <integer>118</integer> + <integer>107</integer> </dict> <key>NSLabel</key> <dict> <key>CF$UID</key> - <integer>221</integer> + <integer>206</integer> </dict> <key>NSTabView</key> <dict> @@ -2706,15 +2506,15 @@ <array> <dict> <key>CF$UID</key> - <integer>120</integer> + <integer>109</integer> </dict> <dict> <key>CF$UID</key> - <integer>124</integer> + <integer>113</integer> </dict> <dict> <key>CF$UID</key> - <integer>128</integer> + <integer>117</integer> </dict> <dict> <key>CF$UID</key> @@ -2730,7 +2530,7 @@ </dict> <dict> <key>CF$UID</key> - <integer>132</integer> + <integer>121</integer> </dict> <dict> <key>CF$UID</key> @@ -2738,24 +2538,20 @@ </dict> <dict> <key>CF$UID</key> - <integer>136</integer> + <integer>125</integer> </dict> <dict> <key>CF$UID</key> - <integer>140</integer> + <integer>193</integer> </dict> <dict> <key>CF$UID</key> - <integer>208</integer> + <integer>197</integer> </dict> <dict> <key>CF$UID</key> - <integer>212</integer> + <integer>201</integer> </dict> - <dict> - <key>CF$UID</key> - <integer>216</integer> - </dict> </array> </dict> <dict> @@ -2767,14 +2563,14 @@ <key>NSCell</key> <dict> <key>CF$UID</key> - <integer>122</integer> + <integer>111</integer> </dict> <key>NSEnabled</key> <true/> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>121</integer> + <integer>110</integer> </dict> <key>NSNextResponder</key> <dict> @@ -2817,12 +2613,12 @@ <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>123</integer> + <integer>112</integer> </dict> <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>120</integer> + <integer>109</integer> </dict> <key>NSKeyEquivalent</key> <dict> @@ -2849,14 +2645,14 @@ <key>NSCell</key> <dict> <key>CF$UID</key> - <integer>126</integer> + <integer>115</integer> </dict> <key>NSEnabled</key> <true/> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>125</integer> + <integer>114</integer> </dict> <key>NSNextResponder</key> <dict> @@ -2899,12 +2695,12 @@ <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>127</integer> + <integer>116</integer> </dict> <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>124</integer> + <integer>113</integer> </dict> <key>NSKeyEquivalent</key> <dict> @@ -2931,14 +2727,14 @@ <key>NSCell</key> <dict> <key>CF$UID</key> - <integer>130</integer> + <integer>119</integer> </dict> <key>NSEnabled</key> <true/> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>129</integer> + <integer>118</integer> </dict> <key>NSNextResponder</key> <dict> @@ -2953,7 +2749,7 @@ <key>NSvFlags</key> <integer>256</integer> </dict> - <string>{{187, 143}, {168, 18}}</string> + <string>{{187, 163}, {168, 18}}</string> <dict> <key>$class</key> <dict> @@ -2981,12 +2777,12 @@ <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>131</integer> + <integer>120</integer> </dict> <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>128</integer> + <integer>117</integer> </dict> <key>NSKeyEquivalent</key> <dict> @@ -3013,14 +2809,14 @@ <key>NSCell</key> <dict> <key>CF$UID</key> - <integer>134</integer> + <integer>123</integer> </dict> <key>NSEnabled</key> <true/> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>133</integer> + <integer>122</integer> </dict> <key>NSNextResponder</key> <dict> @@ -3035,7 +2831,7 @@ <key>NSvFlags</key> <integer>256</integer> </dict> - <string>{{187, 123}, {214, 18}}</string> + <string>{{187, 143}, {214, 18}}</string> <dict> <key>$class</key> <dict> @@ -3063,12 +2859,12 @@ <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>135</integer> + <integer>124</integer> </dict> <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>132</integer> + <integer>121</integer> </dict> <key>NSKeyEquivalent</key> <dict> @@ -3090,114 +2886,32 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>23</integer> + <integer>192</integer> </dict> - <key>NSCell</key> - <dict> - <key>CF$UID</key> - <integer>138</integer> - </dict> - <key>NSEnabled</key> - <true/> - <key>NSFrame</key> - <dict> - <key>CF$UID</key> - <integer>137</integer> - </dict> - <key>NSNextResponder</key> - <dict> - <key>CF$UID</key> - <integer>11</integer> - </dict> - <key>NSSuperview</key> - <dict> - <key>CF$UID</key> - <integer>11</integer> - </dict> - <key>NSvFlags</key> - <integer>256</integer> - </dict> - <string>{{187, 163}, {142, 18}}</string> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>22</integer> - </dict> - <key>NSAlternateContents</key> - <dict> - <key>CF$UID</key> - <integer>21</integer> - </dict> - <key>NSAlternateImage</key> - <dict> - <key>CF$UID</key> - <integer>18</integer> - </dict> - <key>NSButtonFlags</key> - <integer>1211912703</integer> - <key>NSButtonFlags2</key> - <integer>2</integer> - <key>NSCellFlags</key> - <integer>67239424</integer> - <key>NSCellFlags2</key> - <integer>0</integer> - <key>NSContents</key> - <dict> - <key>CF$UID</key> - <integer>139</integer> - </dict> - <key>NSControlView</key> - <dict> - <key>CF$UID</key> - <integer>136</integer> - </dict> - <key>NSKeyEquivalent</key> - <dict> - <key>CF$UID</key> - <integer>21</integer> - </dict> - <key>NSPeriodicDelay</key> - <integer>200</integer> - <key>NSPeriodicInterval</key> - <integer>25</integer> - <key>NSSupport</key> - <dict> - <key>CF$UID</key> - <integer>15</integer> - </dict> - </dict> - <string>Auto-save settings</string> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>207</integer> - </dict> <key>NSBackgroundColor</key> <dict> <key>CF$UID</key> - <integer>99</integer> + <integer>87</integer> </dict> <key>NSCellBackgroundColor</key> <dict> <key>CF$UID</key> - <integer>103</integer> + <integer>92</integer> </dict> <key>NSCellClass</key> <dict> <key>CF$UID</key> - <integer>203</integer> + <integer>188</integer> </dict> <key>NSCellSize</key> <dict> <key>CF$UID</key> - <integer>201</integer> + <integer>186</integer> </dict> <key>NSCells</key> <dict> <key>CF$UID</key> - <integer>142</integer> + <integer>127</integer> </dict> <key>NSEnabled</key> <true/> @@ -3209,12 +2923,12 @@ <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>141</integer> + <integer>126</integer> </dict> <key>NSIntercellSpacing</key> <dict> <key>CF$UID</key> - <integer>202</integer> + <integer>187</integer> </dict> <key>NSMatrixFlags</key> <integer>67633152</integer> @@ -3230,7 +2944,7 @@ <key>NSProtoCell</key> <dict> <key>CF$UID</key> - <integer>204</integer> + <integer>189</integer> </dict> <key>NSSelectedCol</key> <integer>-1</integer> @@ -3255,11 +2969,11 @@ <array> <dict> <key>CF$UID</key> - <integer>143</integer> + <integer>128</integer> </dict> <dict> <key>CF$UID</key> - <integer>184</integer> + <integer>169</integer> </dict> </array> </dict> @@ -3267,7 +2981,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>183</integer> + <integer>168</integer> </dict> <key>NSCellFlags</key> <integer>343014977</integer> @@ -3281,12 +2995,12 @@ <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>140</integer> + <integer>125</integer> </dict> <key>NSFormatter</key> <dict> <key>CF$UID</key> - <integer>144</integer> + <integer>129</integer> </dict> <key>NSSupport</key> <dict> @@ -3296,7 +3010,7 @@ <key>NSTitleCell</key> <dict> <key>CF$UID</key> - <integer>180</integer> + <integer>165</integer> </dict> <key>NSTitleWidth</key> <real>161</real> @@ -3305,19 +3019,19 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>179</integer> + <integer>164</integer> </dict> <... [truncated message content] |
From: <fr...@us...> - 2007-01-09 21:02:26
|
Revision: 288 http://svn.sourceforge.net/fuse-for-macosx/?rev=288&view=rev Author: fredm Date: 2007-01-09 13:02:14 -0800 (Tue, 09 Jan 2007) Log Message: ----------- Fix distorted AY sound on snapshot load. Modified Paths: -------------- trunk/fuse/fuse.cpp trunk/fuse/fuse.h trunk/fuse/machine.c trunk/fuse/sound.c trunk/fuse/sound.h trunk/fuse/tape.c Modified: trunk/fuse/fuse.cpp =================================================================== --- trunk/fuse/fuse.cpp 2007-01-09 21:00:00 UTC (rev 287) +++ trunk/fuse/fuse.cpp 2007-01-09 21:02:14 UTC (rev 288) @@ -94,12 +94,6 @@ /* Is Spectrum emulation currently paused, and if so, how many times? */ int fuse_emulation_paused; -/* Are we going to try and use the sound card; this differs from - sound.c:sound_enabled in that this gives a desire, whereas sound_enabled - is an actual state; when the Spectrum emulation is not running, this - stores whether we try to reenable the sound card afterwards */ -int fuse_sound_in_use; - /* The creator information we'll store in file formats that support this */ libspectrum_creator *fuse_creator; @@ -245,16 +239,6 @@ z80_init(); - fuse_sound_in_use = 0; - if( settings_current.sound && settings_current.emulation_speed == 100 ) - sound_init( settings_current.sound_device ); - - if( sound_enabled ) { - fuse_sound_in_use = 1; - } else { - settings_current.sound = 0; - } - if( timer_init() ) return 1; error = timer_estimate_reset(); if( error ) return error; @@ -431,43 +415,6 @@ "--version Print version number and exit.\n\n" ); } -/* Start sound output */ -void -fuse_sound_enable(void) -{ - /* No sound if fastloading in progress */ - if( settings_current.fastload && tape_is_playing() ) return; - - /* If we now want sound, enable it */ - if( settings_current.sound && settings_current.emulation_speed == 100 ) { - - sound_init( settings_current.sound_device ); - sound_ay_reset(); - - /* If the sound code couldn't re-initialise, fall back to the - signal based routines */ - if( !sound_enabled ) { - /* Increment pause_count, report, decrement pause_count - * (i.e. avoid the effects of fuse_emulation_{,un}pause). - * Otherwise, we may be recursively reporting this error. */ - fuse_emulation_paused++; - fuse_emulation_paused--; - settings_current.sound = fuse_sound_in_use = 0; - - } - fuse_sound_in_use = sound_enabled; - } else if( fuse_sound_in_use ) { - fuse_sound_in_use = 0; - } -} - -/* Stop sound output */ -void -fuse_sound_disable(void) -{ - if( sound_enabled ) sound_end(); -} - /* Stop all activities associated with actual Spectrum emulation */ int fuse_emulation_pause(void) { @@ -485,7 +432,7 @@ /* If we had sound enabled (and hence doing the speed regulation), turn it off */ - if( sound_enabled ) sound_end(); + sound_pause(); return 0; } @@ -499,11 +446,12 @@ decrement the pause count */ if( --fuse_emulation_paused ) return 0; + /* If we now want sound, enable it */ + sound_unpause(); + /* Restart speed estimation with no information */ error = timer_estimate_reset(); if( error ) return error; - fuse_sound_enable(); - return 0; } Modified: trunk/fuse/fuse.h =================================================================== --- trunk/fuse/fuse.h 2007-01-09 21:00:00 UTC (rev 287) +++ trunk/fuse/fuse.h 2007-01-09 21:02:14 UTC (rev 288) @@ -43,13 +43,8 @@ int fuse_emulation_pause(void); /* Stop and start emulation */ int fuse_emulation_unpause(void); -void fuse_sound_enable(); /* Start sound output */ -void fuse_sound_disable(); /* Stop sound output */ - void fuse_abort( void ) GCC_NORETURN; /* Emergency shutdown */ -extern int fuse_sound_in_use; /* Are we trying to produce sound? */ - extern libspectrum_creator *fuse_creator; /* Creator information for file formats which support this */ Modified: trunk/fuse/machine.c =================================================================== --- trunk/fuse/machine.c 2007-01-09 21:00:00 UTC (rev 287) +++ trunk/fuse/machine.c 2007-01-09 21:02:14 UTC (rev 288) @@ -256,6 +256,8 @@ if( event_add( machine->timings.tstates_per_frame, EVENT_TYPE_FRAME ) ) return 1; + sound_end(); + if( uidisplay_end() ) return 1; capabilities = libspectrum_machine_capabilities( machine->machine ); @@ -271,6 +273,8 @@ if( uidisplay_init( width, height ) ) return 1; + sound_init( settings_current.sound_device ); + /* Mark RAM as not-present/read-only. The machine's reset function will * mark available pages as present/writeable. */ @@ -385,8 +389,6 @@ /* These things should happen on all resets */ z80_reset(); - /* sound_ay_reset() *absolutely must* be called before either - sound_frame() or sound_ay_write() */ sound_ay_reset(); printer_zxp_reset(); Modified: trunk/fuse/sound.c =================================================================== --- trunk/fuse/sound.c 2007-01-09 21:00:00 UTC (rev 287) +++ trunk/fuse/sound.c 2007-01-09 21:02:14 UTC (rev 288) @@ -44,13 +44,13 @@ #include "settings.h" #include "sound.h" #include "sound/lowlevel.h" +#include "tape.h" #include "ui/ui.h" /* Do we have any of our sound devices available? */ /* configuration */ -int sound_enabled=0; /* Are we currently using the sound card; - cf fuse.c:fuse_sound_in_use */ +int sound_enabled=0; /* Are we currently using the sound card */ int sound_enabled_ever=0; /* if it's *ever* been in use; see sound_ay_write() and sound_ay_reset() */ int sound_stereo=0; /* true for stereo *output sample* (only) */ @@ -147,10 +147,6 @@ for(f=0;f<3;f++) ay_tone_tick[f]=ay_tone_high[f]=0,ay_tone_period[f]=1; -ay_tick_incr=(int)(65536.* - libspectrum_timings_ay_speed(machine_current->machine)/ - settings_current.sound_freq); - ay_change_count=0; } @@ -159,20 +155,19 @@ { static int first_init=1; int f,ret; -int sound_max_framesiz; +float hz; /* if we don't have any sound I/O code compiled in, don't do sound */ #ifndef HAVE_SOUND return; #endif -if(sound_enabled) - { - ui_error(UI_ERROR_ERROR, - "sound_init() called with sound_enabled set, can't happen!" ); - sound_end(); +/* sound_enabled can be set here if we are in the SDL UI and have start + machine set, or if we have a snapshot set at the command line on + program start */ +if( !(!sound_enabled && settings_current.sound && + settings_current.emulation_speed == 100) ) return; - } sound_stereo_ay=settings_current.stereo_ay; sound_stereo_beeper=settings_current.stereo_beeper; @@ -199,11 +194,15 @@ sound_enabled=sound_enabled_ever=1; sound_channels=(sound_stereo?2:1); -sound_max_framesiz=settings_current.sound_freq/50; +hz = (float)machine_current->timings.processor_speed / + machine_current->timings.tstates_per_frame; + +sound_framesiz = settings_current.sound_freq / hz; + if((sound_buf=malloc(sizeof(libspectrum_signed_word)* - sound_max_framesiz*sound_channels))==NULL || - (tape_buf=malloc(sizeof(libspectrum_signed_word)*sound_max_framesiz))==NULL) + sound_framesiz*sound_channels))==NULL || + (tape_buf=malloc(sizeof(libspectrum_signed_word)*sound_framesiz))==NULL) { if(sound_buf) { @@ -258,10 +257,39 @@ rchan2pos=pos,rchan3pos=0; } -fuse_sound_in_use=1; +ay_tick_incr=(int)(65536.* + libspectrum_timings_ay_speed(machine_current->machine)/ + settings_current.sound_freq); } +void sound_pause(void) +{ +if(sound_enabled) sound_end(); +} + + +void sound_unpause(void) +{ +/* No sound if fastloading in progress */ +if( settings_current.fastload && tape_is_playing() ) return; + +sound_init( settings_current.sound_device ); + +/* If the sound code couldn't re-initialise, fall back to the + signal based routines */ +if(!sound_enabled) + { + /* Increment pause_count, report, decrement pause_count + * (i.e. avoid the effects of fuse_emulation_{,un}pause). + * Otherwise, we may be recursively reporting this error. */ + fuse_emulation_paused++; + fuse_emulation_paused--; + settings_current.sound = 0; + } +} + + void sound_end(void) { if(sound_enabled) @@ -605,11 +633,6 @@ */ void sound_ay_write(int reg,int val,libspectrum_dword now) { -/* have to allow it across pauses for snap-loading to work, - * so see if sound has *ever* been enabled. - */ -if(!sound_enabled_ever) return; - if(ay_change_count<AY_CHANGE_MAX) { ay_change[ay_change_count].tstates=now; @@ -626,11 +649,7 @@ void sound_ay_reset(void) { int f; -float hz = 50; -/* as above... */ -if(!sound_enabled_ever) return; - /* recalculate timings based on new machines ay clock */ sound_ay_init(); @@ -640,11 +659,6 @@ for(f=0;f<3;f++) ay_tone_high[f]=0; ay_tone_subcycles=ay_env_subcycles=0; - -hz = (float)machine_current->timings.processor_speed / - machine_current->timings.tstates_per_frame; - -sound_framesiz = settings_current.sound_freq / hz; } Modified: trunk/fuse/sound.h =================================================================== --- trunk/fuse/sound.h 2007-01-09 21:00:00 UTC (rev 287) +++ trunk/fuse/sound.h 2007-01-09 21:02:14 UTC (rev 288) @@ -30,6 +30,8 @@ #include <libspectrum.h> void sound_init( const char *device ); +void sound_pause( void ); +void sound_unpause( void ); void sound_end( void ); void sound_ay_write( int reg, int val, libspectrum_dword now ); void sound_ay_reset( void ); Modified: trunk/fuse/tape.c =================================================================== --- trunk/fuse/tape.c 2007-01-09 21:00:00 UTC (rev 287) +++ trunk/fuse/tape.c 2007-01-09 21:02:14 UTC (rev 288) @@ -600,7 +600,7 @@ sound_beeper( 1, tape_microphone ); /* If we're fastloading, turn sound off */ - if( settings_current.fastload ) fuse_sound_disable(); + if( settings_current.fastload ) sound_pause(); loader_tape_play(); @@ -639,7 +639,7 @@ /* If we were fastloading, sound was off, so turn it back on, and reset the speed counter */ if( settings_current.fastload ) { - fuse_sound_enable(); + sound_unpause(); timer_estimate_reset(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |