diff options
| author | SND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97> | 2009-06-09 11:34:52 +0000 |
|---|---|---|
| committer | SND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97> | 2009-06-09 11:34:52 +0000 |
| commit | 10eac4b4928e7dd9f79de454641889f2a0b77250 (patch) | |
| tree | 0f9c98f659552ed2406a6159bc123889ca46b919 | |
| parent | 568526e291e9743751d8632327b94e01e7181efc (diff) | |
| download | pcsxr-10eac4b4928e7dd9f79de454641889f2a0b77250.tar.gz | |
added prelimiary Mac OS X port (still not working)
git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@23667 e17a0e51-4ae3-4d35-97c3-1a29b211df97
42 files changed, 4309 insertions, 844 deletions
@@ -1,3 +1,13 @@ +June 9, 2009 Wei Mingzhi <weimingzhi@gmail.com> + + * macosx/*: Added preliminary Mac OS X port. Code copied from PCSX Mac + Project (Still not working). + +June 4, 2009 Wei Mingzhi <weimingzhi@gmail.com> + + * po/zh_CN.po, po/zh_TW.po: Don't use UTF-8. + * debian/changelog: Bumped version. + June 2, 2009 Wei Mingzhi <weimingzhi@gmail.com> * plugins/peopsxgl/interface.c: Tweaked UI. diff --git a/debian/changelog b/debian/changelog index da91b975..1b69ba7b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -pcsxr (2:1.0~alpha2-1) unstable; urgency=low +pcsxr (2:1.0~beta1-1) unstable; urgency=low * Initial Release. diff --git a/macosx/ConfigurationController.h b/macosx/ConfigurationController.h new file mode 100644 index 00000000..a85c2579 --- /dev/null +++ b/macosx/ConfigurationController.h @@ -0,0 +1,36 @@ +/* ConfigurationController */ + +#import <Cocoa/Cocoa.h> +#import "PluginController.h" +#import "PluginList.h" + +@interface ConfigurationController : NSWindowController +{ + IBOutlet PluginController *cdromPlugin; + IBOutlet PluginController *graphicsPlugin; + IBOutlet PluginController *padPlugin; + IBOutlet PluginController *soundPlugin; + + IBOutlet id noXaAudioCell; + IBOutlet id sioIrqAlwaysCell; + IBOutlet id bwMdecCell; + IBOutlet id autoVTypeCell; + IBOutlet id vTypePALCell; + IBOutlet id noCDAudioCell; + IBOutlet id usesHleCell; + IBOutlet id usesDynarecCell; + IBOutlet id consoleOutputCell; + IBOutlet id spuIrqAlwaysCell; + IBOutlet id rCountFixCell; + IBOutlet id vSyncWAFixCell; + IBOutlet id noFastBootCell; + + NSMutableDictionary *checkBoxDefaults; +} +- (IBAction)setCheckbox:(id)sender; +- (IBAction)setCheckboxInverse:(id)sender; +- (IBAction)setVideoType:(id)sender; + +- (NSString *)keyForSender:(id)sender; + +@end diff --git a/macosx/ConfigurationController.m b/macosx/ConfigurationController.m new file mode 100644 index 00000000..d5e4cd8d --- /dev/null +++ b/macosx/ConfigurationController.m @@ -0,0 +1,144 @@ +#import "ConfigurationController.h" +#import "PcsxController.h" +#import "PluginList.h" +#import "PcsxPlugin.h" +#include "psxcommon.h" +#include "plugins.h" + +@implementation ConfigurationController + +- (IBAction)setCheckbox:(id)sender +{ + if ([sender isKindOfClass:[NSMatrix class]]) { + sender = [sender selectedCell]; + } + + NSString *key = [self keyForSender:sender]; + if (key) { + [[NSUserDefaults standardUserDefaults] setInteger:[sender intValue] forKey:key]; + [PcsxController setConfigFromDefaults]; + } +} + +- (IBAction)setCheckboxInverse:(id)sender +{ + if ([sender isKindOfClass:[NSMatrix class]]) { + sender = [sender selectedCell]; + } + + NSString *key = [self keyForSender:sender]; + if (key) { + [[NSUserDefaults standardUserDefaults] setInteger:![sender intValue] forKey:key]; + [PcsxController setConfigFromDefaults]; + } +} + +- (IBAction)setVideoType:(id)sender +{ + int tag = [[sender selectedItem] tag]; + + if (3 == tag) { + [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"AutoDetectVideoType"]; + } else if (1 == tag || 2 == tag) { + [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"AutoDetectVideoType"]; + [[NSUserDefaults standardUserDefaults] setBool:tag==2 forKey:@"VideoTypePAL"]; + } else { + return; + } + [PcsxController setConfigFromDefaults]; + + if ([sender pullsDown]) { + NSArray *items = [sender itemArray]; + int i; + + for (i=0; i<[items count]; i++) + [[items objectAtIndex:i] setState:NSOffState]; + + [[sender selectedItem] setState:NSOnState]; + } +} + +- (void)awakeFromNib +{ + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + + [[self window] center]; + + // setup checkboxes + checkBoxDefaults = [[NSMutableDictionary alloc] init]; + + // check that the outlets are active before adding them + if (noXaAudioCell) [checkBoxDefaults setObject:noXaAudioCell forKey:@"NoXaAudio"]; + if (sioIrqAlwaysCell) [checkBoxDefaults setObject:sioIrqAlwaysCell forKey:@"SioIrqAlways"]; + if (bwMdecCell) [checkBoxDefaults setObject:bwMdecCell forKey:@"BlackAndWhiteMDECVideo"]; + if (autoVTypeCell) [checkBoxDefaults setObject:autoVTypeCell forKey:@"AutoDetectVideoType"]; + if (vTypePALCell) [checkBoxDefaults setObject:vTypePALCell forKey:@"VideoTypePAL"]; + if (noCDAudioCell) [checkBoxDefaults setObject:noCDAudioCell forKey:@"NoCDAudio"]; + if (usesHleCell) [checkBoxDefaults setObject:usesHleCell forKey:@"UseHLE"]; + if (usesDynarecCell) [checkBoxDefaults setObject:usesDynarecCell forKey:@"NoDynarec"]; + if (consoleOutputCell) [checkBoxDefaults setObject:consoleOutputCell forKey:@"ConsoleOutput"]; + if (spuIrqAlwaysCell) [checkBoxDefaults setObject:spuIrqAlwaysCell forKey:@"SpuIrqAlways"]; + if (rCountFixCell) [checkBoxDefaults setObject:rCountFixCell forKey:@"RootCounterFix"]; + if (vSyncWAFixCell) [checkBoxDefaults setObject:vSyncWAFixCell forKey:@"VideoSyncWAFix"]; + if (noFastBootCell) [checkBoxDefaults setObject:noFastBootCell forKey:@"NoFastBoot"]; + + // make the visuals match the defaults + NSEnumerator *enumerator= [checkBoxDefaults keyEnumerator]; + id key; + while ((key = [enumerator nextObject])) { + if ([defaults integerForKey:key]) { + [[checkBoxDefaults objectForKey:key] setNextState]; + } + } + + // special cases + if (![PcsxController biosAvailable]) { + // no bios means always use HLE + [usesHleCell setState:NSOnState]; + [usesHleCell setEnabled:NO]; + } + + int tag = [defaults integerForKey:@"AutoDetectVideoType"]; + if (tag) + tag = 3; + else { + tag = [defaults integerForKey:@"VideoTypePAL"]+1; + } + [vTypePALCell setAutoenablesItems:NO]; + if ([vTypePALCell pullsDown]) { + [[vTypePALCell itemAtIndex:[vTypePALCell indexOfItemWithTag:tag]] setState:NSOnState]; + } else { + [vTypePALCell selectItemAtIndex:[vTypePALCell indexOfItemWithTag:tag]]; + } + + // setup plugin lists + PluginList *list = [PluginList list]; + + [list refreshPlugins]; + [graphicsPlugin setPluginsTo:[list pluginsForType:PSE_LT_GPU] withType: PSE_LT_GPU]; + [soundPlugin setPluginsTo:[list pluginsForType:PSE_LT_SPU] withType: PSE_LT_SPU]; + [padPlugin setPluginsTo:[list pluginsForType:PSE_LT_PAD] withType: PSE_LT_PAD]; + [cdromPlugin setPluginsTo:[list pluginsForType:PSE_LT_CDR] withType: PSE_LT_CDR]; +} + +- (void)dealloc +{ + [checkBoxDefaults release]; + + [super dealloc]; +} + +- (NSString *)keyForSender:(id)sender +{ + NSEnumerator *enumerator= [checkBoxDefaults keyEnumerator]; + id key; + while ((key = [enumerator nextObject])) { + id object = [checkBoxDefaults objectForKey:key]; + if ([object isEqual:sender]) + return key; + } + + return nil; +} + +@end diff --git a/macosx/EmuThread.h b/macosx/EmuThread.h new file mode 100644 index 00000000..7a88c444 --- /dev/null +++ b/macosx/EmuThread.h @@ -0,0 +1,37 @@ +// +// EmuThread.h +// Pcsx +// +// Created by Gil Pedersen on Sun Sep 21 2003. +// Copyright (c) 2003 __MyCompanyName__. All rights reserved. +// + +#import <Foundation/Foundation.h> +#include <setjmp.h> + +@interface EmuThread : NSObject { + NSAutoreleasePool *pool; + jmp_buf restartJmp; + BOOL wasPaused; +} + +- (void)EmuThreadRun:(id)anObject; +- (void)handleEvents; + ++ (void)run; ++ (void)stop; ++ (BOOL)pause; ++ (BOOL)pauseSafe; ++ (void)resume; ++ (void)resetNow; ++ (void)reset; + ++ (BOOL)isPaused; ++ (BOOL)active; + ++ (void)freezeAt:(NSString *)path which:(int)num; ++ (BOOL)defrostAt:(NSString *)path; + +@end + +extern EmuThread *emuThread; diff --git a/macosx/EmuThread.m b/macosx/EmuThread.m new file mode 100644 index 00000000..dbe33864 --- /dev/null +++ b/macosx/EmuThread.m @@ -0,0 +1,330 @@ +// +// EmuThread.m +// Pcsx +// +// Created by Gil Pedersen on Sun Sep 21 2003. +// Copyright (c) 2003 __MyCompanyName__. All rights reserved. +// + +#import <ExceptionHandling/NSExceptionHandler.h> +#import <AppKit/NSApplication.h> +#include <pthread.h> +#include <setjmp.h> +#import "EmuThread.h" +#include "psxcommon.h" +#include "plugins.h" +#include "misc.h" + +EmuThread *emuThread; +NSString *defrostPath = nil; +static int safeEvent; +static int paused; + +static pthread_cond_t eventCond; +static pthread_mutex_t eventMutex; + +#define EMUEVENT_NONE 0 +#define EMUEVENT_PAUSE (1<<0) +#define EMUEVENT_RESET (1<<1) +#define EMUEVENT_STOP (1<<2) + +@implementation EmuThread + +- (void)EmuThreadRun:(id)anObject +{ + pool = [[NSAutoreleasePool alloc] init]; + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(emuWindowDidClose:) + name:@"emuWindowDidClose" object:nil]; + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(emuWindowWantPause:) + name:@"emuWindowWantPause" object:nil]; + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(emuWindowWantResume:) + name:@"emuWindowWantResume" object:nil]; + + // we shouldn't change the priority, since we might depend on subthreads + //[NSThread setThreadPriority:1.0-((1.0-[NSThread threadPriority])/4.0)]; + + // Do processing here + if (OpenPlugins() == -1) + goto done; + + if (setjmp(restartJmp) == 0) { + psxReset(); + } + + int res = CheckCdrom(); + if (res == -1) { + ClosePlugins(); + SysMessage(_("Could not load Cdrom\n")); + goto done; + } + + if (LoadCdrom() == -1) { + ClosePlugins(); + SysMessage(_("Could not load Cdrom\n")); + goto done; + } + + if (defrostPath) { + LoadState([defrostPath fileSystemRepresentation]); + [defrostPath release]; defrostPath = nil; + } + + psxCpu->Execute(); + +done: + [pool release]; pool = nil; + emuThread = nil; + + return; +} + +- (void)dealloc +{ + // remove all registered observers + [[NSNotificationCenter defaultCenter] removeObserver:self name:nil object:nil]; + + if (pool) + [pool release]; + + [super dealloc]; +} + +- (void)emuWindowDidClose:(NSNotification *)aNotification +{ + [EmuThread stop]; +} + +- (void)emuWindowWantPause:(NSNotification *)aNotification +{ + wasPaused = [EmuThread pause]; +} + +- (void)emuWindowWantResume:(NSNotification *)aNotification +{ + if (!wasPaused) { + [EmuThread resume]; + } + wasPaused = NO; +} + +/* called periodically from the emulation thread */ +- (void)handleEvents +{ + /* only do a trylock here, since we're not interested in blocking, + and we can just handle events next time round */ + if (pthread_mutex_trylock(&eventMutex) == 0) { + while (safeEvent) { + if (safeEvent & EMUEVENT_STOP) { + /* signify that the emulation has stopped */ + [emuThread autorelease]; + emuThread = nil; + paused = NO; + + /* better unlock the mutex before killing ourself */ + pthread_mutex_unlock(&eventMutex); + + ClosePlugins(); + SysClose(); + + //[[NSThread currentThread] autorelease]; + [NSThread exit]; + return; + } + + if (safeEvent & EMUEVENT_RESET) { +#if 1 + /* signify that the emulation has stopped */ + [emuThread autorelease]; + emuThread = nil; + + /* better unlock the mutex before killing ourself */ + pthread_mutex_unlock(&eventMutex); + + ClosePlugins(); + + // start a new emulation thread + [EmuThread run]; + + //[[NSThread currentThread] autorelease]; + [NSThread exit]; + return; +#else + safeEvent &= ~EMUEVENT_RESET; + pthread_mutex_unlock(&eventMutex); + + psxCpu->Reset(); + + longjmp(restartJmp, 0); +#endif + } + + if (safeEvent & EMUEVENT_PAUSE) { + paused = 2; + /* wait until we're signalled */ + pthread_cond_wait(&eventCond, &eventMutex); + } + } + pthread_mutex_unlock(&eventMutex); + } +} + + ++ (void)run +{ + int err; + + if (emuThread) { + [EmuThread resume]; + return; + } + + if (pthread_mutex_lock(&eventMutex) != 0) { + err = pthread_cond_init(&eventCond, NULL); + if (err) return; + + err = pthread_mutex_init(&eventMutex, NULL); + if (err) return; + + pthread_mutex_lock(&eventMutex); + } + + safeEvent = EMUEVENT_NONE; + paused = NO; + + if (SysInit() != 0) { + pthread_mutex_unlock(&eventMutex); + return; + } + + emuThread = [[EmuThread alloc] init]; + + [NSThread detachNewThreadSelector:@selector(EmuThreadRun:) + toTarget:emuThread withObject:nil]; + + pthread_mutex_unlock(&eventMutex); +} + ++ (void)stop +{ + pthread_mutex_lock(&eventMutex); + safeEvent = EMUEVENT_STOP; + pthread_mutex_unlock(&eventMutex); + + // wake it if it's sleeping + pthread_cond_broadcast(&eventCond); +} + ++ (BOOL)pause +{ + if (paused || ![EmuThread active]) + return YES; + + pthread_mutex_lock(&eventMutex); + safeEvent |= EMUEVENT_PAUSE; + paused = 1; + pthread_mutex_unlock(&eventMutex); + + pthread_cond_broadcast(&eventCond); + + return NO; +} + ++ (BOOL)pauseSafe +{ + if ((paused == 2) || ![EmuThread active]) + return YES; + + [EmuThread pause]; + while ([EmuThread isPaused] != 2) [NSThread sleepUntilDate:[[NSDate date] addTimeInterval:0.05]]; + + return NO; +} + ++ (void)resume +{ + if (!paused || ![EmuThread active]) + return; + + pthread_mutex_lock(&eventMutex); + + safeEvent &= ~EMUEVENT_PAUSE; + paused = NO; + pthread_mutex_unlock(&eventMutex); + + pthread_cond_broadcast(&eventCond); +} + ++ (void)reset +{ + pthread_mutex_lock(&eventMutex); + safeEvent = EMUEVENT_RESET; + pthread_mutex_unlock(&eventMutex); + + pthread_cond_broadcast(&eventCond); +} + +// must only be called from within the emulation thread!!! ++ (void)resetNow +{ + /* signify that the emulation has stopped */ + [emuThread autorelease]; + emuThread = nil; + + ClosePlugins(); + + // start a new emulation thread + [EmuThread run]; + + //[[NSThread currentThread] autorelease]; + [NSThread exit]; + return; +} + ++ (BOOL)isPaused +{ + return paused; +} + ++ (BOOL)active +{ + return emuThread ? YES : NO; +} + ++ (void)freezeAt:(NSString *)path which:(int)num +{ + BOOL emuWasPaused = [EmuThread pauseSafe]; + char Text[256]; + + GPU_freeze(2, (GPUFreeze_t *)&num); + int ret = SaveState([path fileSystemRepresentation]); + if (ret == 0) sprintf (Text, _("*PCSX*: Saved State %d"), num+1); + else sprintf (Text, _("*PCSX*: Error Saving State %d"), num+1); + GPU_displayText(Text); + + if (!emuWasPaused) { + [EmuThread resume]; + } +} + ++ (BOOL)defrostAt:(NSString *)path +{ + const char *cPath = [path fileSystemRepresentation]; + if (CheckState(cPath) != 0) + return NO; + + defrostPath = [path retain]; + + [EmuThread reset]; + + GPU_displayText(_("*PCSX*: Loaded State")); + + return YES; +} + +@end diff --git a/macosx/English.lproj/AddPluginSheet.nib/classes.nib b/macosx/English.lproj/AddPluginSheet.nib/classes.nib new file mode 100644 index 00000000..ae53771c --- /dev/null +++ b/macosx/English.lproj/AddPluginSheet.nib/classes.nib @@ -0,0 +1,14 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + { + ACTIONS = {closeAddPluginSheet = id; }; + CLASS = PcsxPluginDocument; + LANGUAGE = ObjC; + OUTLETS = {addPluginSheet = NSWindow; pluginName = NSTextField; }; + SUPERCLASS = NSDocument; + }, + {CLASS = "java.lang.Object"; LANGUAGE = Java; } + ); + IBVersion = 1; +}
\ No newline at end of file diff --git a/macosx/English.lproj/AddPluginSheet.nib/info.nib b/macosx/English.lproj/AddPluginSheet.nib/info.nib new file mode 100644 index 00000000..3af05e0c --- /dev/null +++ b/macosx/English.lproj/AddPluginSheet.nib/info.nib @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>IBDocumentLocation</key> + <string>69 10 356 240 0 0 1024 746 </string> + <key>IBFramework Version</key> + <string>364.0</string> + <key>IBOpenObjects</key> + <array> + <integer>10</integer> + </array> + <key>IBSystem Version</key> + <string>7H63</string> +</dict> +</plist> diff --git a/macosx/English.lproj/AddPluginSheet.nib/keyedobjects.nib b/macosx/English.lproj/AddPluginSheet.nib/keyedobjects.nib Binary files differnew file mode 100644 index 00000000..60ed72e0 --- /dev/null +++ b/macosx/English.lproj/AddPluginSheet.nib/keyedobjects.nib diff --git a/macosx/English.lproj/Configuration.nib/classes.nib b/macosx/English.lproj/Configuration.nib/classes.nib new file mode 100644 index 00000000..e7e543b4 --- /dev/null +++ b/macosx/English.lproj/Configuration.nib/classes.nib @@ -0,0 +1,41 @@ +{ + IBClasses = ( + { + ACTIONS = {setCheckbox = id; setCheckboxInverse = id; setVideoType = id; }; + CLASS = ConfigurationController; + LANGUAGE = ObjC; + OUTLETS = { + autoVTypeCell = id; + bwMdecCell = id; + cdromPlugin = PluginController; + consoleOutputCell = id; + graphicsPlugin = PluginController; + noCDAudioCell = id; + noXaAudioCell = id; + padPlugin = PluginController; + rCountFixCell = id; + sioIrqAlwaysCell = id; + soundPlugin = PluginController; + spuIrqAlwaysCell = id; + usesDynarecCell = id; + usesHleCell = id; + vSyncWAFixCell = id; + vTypePALCell = id; + }; + SUPERCLASS = NSWindowController; + }, + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + { + ACTIONS = {doAbout = id; doConfigure = id; selectPlugin = id; }; + CLASS = PluginController; + LANGUAGE = ObjC; + OUTLETS = { + aboutButton = NSButton; + configureButton = NSButton; + pluginMenu = NSPopUpButton; + }; + SUPERCLASS = NSObject; + } + ); + IBVersion = 1; +}
\ No newline at end of file diff --git a/macosx/English.lproj/Configuration.nib/info.nib b/macosx/English.lproj/Configuration.nib/info.nib new file mode 100644 index 00000000..27b3f306 --- /dev/null +++ b/macosx/English.lproj/Configuration.nib/info.nib @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>IBDocumentLocation</key> + <string>79 74 486 240 0 0 1024 746 </string> + <key>IBFramework Version</key> + <string>364.0</string> + <key>IBLockedObjects</key> + <array/> + <key>IBOpenObjects</key> + <array> + <integer>21</integer> + </array> + <key>IBSystem Version</key> + <string>7S215</string> +</dict> +</plist> diff --git a/macosx/English.lproj/Configuration.nib/objects.nib b/macosx/English.lproj/Configuration.nib/objects.nib Binary files differnew file mode 100644 index 00000000..7d1aff12 --- /dev/null +++ b/macosx/English.lproj/Configuration.nib/objects.nib diff --git a/macosx/English.lproj/Credits.rtf b/macosx/English.lproj/Credits.rtf new file mode 100644 index 00000000..a7870f8a --- /dev/null +++ b/macosx/English.lproj/Credits.rtf @@ -0,0 +1,28 @@ +{\rtf1\mac\ansicpg10000\cocoartf102 +{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;\f1\fswiss\fcharset77 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\b\fs24 \cf0 Macintosh Port: +\f1\b0 \ + Gil Pedersen\ +\ + +\f0\b Icon Design: +\f1\b0 \ + Romain Lafourcade\ +\ + +\f0\b Original Coders: +\f1\b0 \ + Linuzappz\ + Shadow\ + Pete Bernert\ + NoComp\ + Nik3d\ +\ + +\f0\b Macintosh Testing: +\f1\b0 \ + Richard Banister\ + Many others}
\ No newline at end of file diff --git a/macosx/English.lproj/InfoPlist.strings b/macosx/English.lproj/InfoPlist.strings new file mode 100644 index 00000000..39649ac1 --- /dev/null +++ b/macosx/English.lproj/InfoPlist.strings @@ -0,0 +1,6 @@ +/* Localized versions of Info.plist keys */ + +CFBundleName = "PCSX"; +CFBundleShortVersionString = "PCSX version 1.5 test 3"; +CFBundleGetInfoString = "PCSX Playstation Emulator version 1.5 test 3, Copyright © 2005 Gil Pedersen."; +NSHumanReadableCopyright = "Copyright © 2005 Gil Pedersen.\nhttp://home.macvaerk.dtu.dk/~gil/pcsx/"; diff --git a/macosx/English.lproj/PCSX.nib/classes.nib b/macosx/English.lproj/PCSX.nib/classes.nib new file mode 100644 index 00000000..62f942f4 --- /dev/null +++ b/macosx/English.lproj/PCSX.nib/classes.nib @@ -0,0 +1,25 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + { + ACTIONS = { + defrost = id; + ejectCD = id; + freeze = id; + fullscreen = id; + memCardConfig = id; + pause = id; + preferences = id; + reset = id; + runBios = id; + runCD = id; + runExe = id; + }; + CLASS = PcsxController; + LANGUAGE = ObjC; + OUTLETS = {memCardWindow = NSWindow; preferenceWindow = NSWindow; }; + SUPERCLASS = NSObject; + } + ); + IBVersion = 1; +}
\ No newline at end of file diff --git a/macosx/English.lproj/PCSX.nib/info.nib b/macosx/English.lproj/PCSX.nib/info.nib new file mode 100644 index 00000000..ff999e10 --- /dev/null +++ b/macosx/English.lproj/PCSX.nib/info.nib @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>IBDocumentLocation</key> + <string>46 15 492 320 0 0 1024 746 </string> + <key>IBEditorPositions</key> + <dict> + <key>29</key> + <string>79 658 251 44 0 0 1024 746 </string> + </dict> + <key>IBFramework Version</key> + <string>364.0</string> + <key>IBOpenObjects</key> + <array> + <integer>29</integer> + </array> + <key>IBSystem Version</key> + <string>7R28</string> +</dict> +</plist> diff --git a/macosx/English.lproj/PCSX.nib/objects.nib b/macosx/English.lproj/PCSX.nib/objects.nib Binary files differnew file mode 100644 index 00000000..4d6fa523 --- /dev/null +++ b/macosx/English.lproj/PCSX.nib/objects.nib diff --git a/macosx/ExtendedKeys.h b/macosx/ExtendedKeys.h new file mode 100644 index 00000000..1b6475b8 --- /dev/null +++ b/macosx/ExtendedKeys.h @@ -0,0 +1,23 @@ + +#ifndef __EXTENDED_KEYS_H__ +#define __EXTENDED_KEYS_H__ + +enum { + PSX_FREEZE_KEY = 0xFFBE/*XK_F1*/, + PSX_NEXT_FREEZE_SLOT_KEY = 0xFFBF/*XK_F2*/, + PSX_DEFROST_KEY = 0xFFC0/*XK_F3*/, + PSX_SHOW_FREEZE_PIC_KEY = 0xFFC1/*XK_F4*/, + PSX_SIO_ALWAYS_ON_KEY = 0xFFC2/*XK_F5*/, + PSX_BW_MDEC_KEY = 0xFFC3/*XK_F6*/, + PSX_XA_AUDIO_ON_KEY = 0xFFC4/*XK_F7*/, + PSX_SNAPSHOT_KEY = 0xFFC5/*XK_F8*/, + PSX_OPEN_SHELL_KEY = 0xFFC6/*XK_F9*/, + PSX_CLOSE_SHELL_KEY = 0xFFC7/*XK_F10*/, + + PSX_STOP_KEY = 0xFF1B/*XK_Escape*/, + + GPU_FULLSCREEN_KEY = 0x0100, + GPU_FPS_DISPLAY_KEY = 0xFFFF/*XK_Delete*/ +}; + +#endif //__EXTENDED_KEYS_H__ diff --git a/macosx/Info.plist b/macosx/Info.plist new file mode 100644 index 00000000..8ab880a5 --- /dev/null +++ b/macosx/Info.plist @@ -0,0 +1,107 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>CFBundleDevelopmentRegion</key> + <string>English</string> + <key>CFBundleDocumentTypes</key> + <array> + <dict> + <key>CFBundleTypeExtensions</key> + <array> + <string>psxplugin</string> + </array> + <key>CFBundleTypeIconFile</key> + <string>psxplugin.icns</string> + <key>CFBundleTypeName</key> + <string>Playstation Emulator Plug-in</string> + <key>CFBundleTypeOSTypes</key> + <array> + <string>PsxP</string> + </array> + <key>CFBundleTypeRole</key> + <string>Viewer</string> + <key>LSTypeIsPackage</key> + <true/> + <key>NSDocumentClass</key> + <string>PcsxPluginDocument</string> + </dict> + <dict> + <key>CFBundleTypeExtensions</key> + <array> + <string>bin</string> + </array> + <key>CFBundleTypeIconFile</key> + <string>psxbios.icns</string> + <key>CFBundleTypeName</key> + <string>Playstation BIOS Image</string> + <key>CFBundleTypeOSTypes</key> + <array> + <string>PsxB</string> + </array> + <key>CFBundleTypeRole</key> + <string>Viewer</string> + <key>LSTypeIsPackage</key> + <false/> + </dict> + <dict> + <key>CFBundleTypeExtensions</key> + <array> + <string>mcr</string> + </array> + <key>CFBundleTypeIconFile</key> + <string>pcsxmemcard</string> + <key>CFBundleTypeName</key> + <string>PCSX Memory Card</string> + <key>CFBundleTypeOSTypes</key> + <array> + <string>Pmcr</string> + </array> + <key>CFBundleTypeRole</key> + <string>Viewer</string> + <key>LSTypeIsPackage</key> + <false/> + </dict> + <dict> + <key>CFBundleTypeExtensions</key> + <array> + <string>pcsxstate</string> + </array> + <key>CFBundleTypeIconFile</key> + <string>pcsxfreeze</string> + <key>CFBundleTypeName</key> + <string>PCSX Freeze State</string> + <key>CFBundleTypeOSTypes</key> + <array> + <string>Pfrz</string> + </array> + <key>CFBundleTypeRole</key> + <string>Viewer</string> + <key>LSTypeIsPackage</key> + <false/> + </dict> + </array> + <key>CFBundleExecutable</key> + <string>PCSX</string> + <key>CFBundleIconFile</key> + <string>PCSX.icns</string> + <key>CFBundleIdentifier</key> + <string>net.pcsx.Pcsx</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundleName</key> + <string>PCSX</string> + <key>CFBundlePackageType</key> + <string>APPL</string> + <key>CFBundleShortVersionString</key> + <string>PCSX 1.5 test 3</string> + <key>CFBundleSignature</key> + <string>Pcsx</string> + <key>CFBundleVersion</key> + <string>1.5.0 test 3</string> + <key>NSMainNibFile</key> + <string>PCSX.nib</string> + <key>NSPrincipalClass</key> + <string>NSApplication</string> +</dict> +</plist> diff --git a/macosx/Pcsx.xcodeproj/project.pbxproj b/macosx/Pcsx.xcodeproj/project.pbxproj new file mode 100644 index 00000000..478fa664 --- /dev/null +++ b/macosx/Pcsx.xcodeproj/project.pbxproj @@ -0,0 +1,698 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 42; + objects = { + +/* Begin PBXBuildFile section */ + 2B143D06078A2CBD00AF745A /* PCSX.icns in Resources */ = {isa = PBXBuildFile; fileRef = 2B143D01078A2CBD00AF745A /* PCSX.icns */; }; + 2B143D07078A2CBD00AF745A /* pcsxfreeze.icns in Resources */ = {isa = PBXBuildFile; fileRef = 2B143D02078A2CBD00AF745A /* pcsxfreeze.icns */; }; + 2B143D08078A2CBD00AF745A /* pcsxmemcard.icns in Resources */ = {isa = PBXBuildFile; fileRef = 2B143D03078A2CBD00AF745A /* pcsxmemcard.icns */; }; + 2B143D09078A2CBD00AF745A /* psxbios.icns in Resources */ = {isa = PBXBuildFile; fileRef = 2B143D04078A2CBD00AF745A /* psxbios.icns */; }; + 2B143D0A078A2CBD00AF745A /* psxplugin.icns in Resources */ = {isa = PBXBuildFile; fileRef = 2B143D05078A2CBD00AF745A /* psxplugin.icns */; }; + 2B3E356C06937D1C00763C7D /* PcsxPluginDocument.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B3E356A06937D1C00763C7D /* PcsxPluginDocument.h */; }; + 2B3E356D06937D1C00763C7D /* PcsxPluginDocument.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B3E356B06937D1C00763C7D /* PcsxPluginDocument.m */; }; + 2B3E35BC069384D100763C7D /* AddPluginSheet.nib in Resources */ = {isa = PBXBuildFile; fileRef = 2B3E35BA069384D100763C7D /* AddPluginSheet.nib */; }; + 2B400D910789F58A00BA271E /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2B02C04304E145D000880C5B /* Carbon.framework */; }; + 2B4DE99105FF9307003EFEF0 /* PluginController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B4DE98D05FF9307003EFEF0 /* PluginController.h */; }; + 2B4DE99205FF9307003EFEF0 /* PluginController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B4DE98E05FF9307003EFEF0 /* PluginController.m */; }; + 2BB3D69D05427FE200831ACB /* PcsxController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B75FD3C051C56D200D12034 /* PcsxController.h */; }; + 2BB3D69E05427FE200831ACB /* ConfigurationController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B75FD4A051C8A7400D12034 /* ConfigurationController.h */; }; + 2BB3D69F05427FE200831ACB /* PluginList.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BBB1126051DC00500B84448 /* PluginList.h */; }; + 2BB3D6A005427FE200831ACB /* EmuThread.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BBB1791051E113B00B84448 /* EmuThread.h */; }; + 2BB3D6A105427FE200831ACB /* PcsxPlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BA44360052DB2EA00E21DDD /* PcsxPlugin.h */; }; + 2BB3D6A305427FE200831ACB /* Configuration.nib in Resources */ = {isa = PBXBuildFile; fileRef = 2BA178B00514CE260026D74D /* Configuration.nib */; }; + 2BB3D6A405427FE200831ACB /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 2BA178B20514CE260026D74D /* InfoPlist.strings */; }; + 2BB3D6A505427FE200831ACB /* PCSX.nib in Resources */ = {isa = PBXBuildFile; fileRef = 2BA178B40514CE260026D74D /* PCSX.nib */; }; + 2BB3D6A705427FE200831ACB /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 2BBB1786051E0D9700B84448 /* Credits.rtf */; }; + 2BB3D6BE05427FE200831ACB /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BA178A505148D9D0026D74D /* main.m */; }; + 2BB3D6BF05427FE200831ACB /* PcsxController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B75FD3D051C56D200D12034 /* PcsxController.m */; }; + 2BB3D6C005427FE200831ACB /* ConfigurationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B75FD4B051C8A7400D12034 /* ConfigurationController.m */; }; + 2BB3D6C105427FE200831ACB /* PluginList.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BBB1127051DC00500B84448 /* PluginList.m */; }; + 2BB3D6C205427FE200831ACB /* EmuThread.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BBB1792051E113B00B84448 /* EmuThread.m */; }; + 2BB3D6C305427FE200831ACB /* Plugin.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BBB17DA051E4D0F00B84448 /* Plugin.c */; }; + 2BB3D6C405427FE200831ACB /* PcsxPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BA44361052DB2EA00E21DDD /* PcsxPlugin.m */; }; + 2BB3D6C605427FE200831ACB /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2BC4786204C7FD3600CAB520 /* Cocoa.framework */; }; + 2BB3D6C705427FE200831ACB /* System.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2B6E8AAE04C832040017A3B1 /* System.framework */; }; + 2BB3D6C805427FE200831ACB /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2B6E8AB404C8327C0017A3B1 /* IOKit.framework */; }; + 7161C2820FDED6D000225F97 /* config.h in Headers */ = {isa = PBXBuildFile; fileRef = 7161C2810FDED6D000225F97 /* config.h */; }; + 7161C2980FDED75300225F97 /* ExtendedKeys.h in Headers */ = {isa = PBXBuildFile; fileRef = 7161C2970FDED75300225F97 /* ExtendedKeys.h */; }; + 71F4C5890FDED12800529849 /* cdriso.c in Sources */ = {isa = PBXBuildFile; fileRef = 71F4C5600FDED12800529849 /* cdriso.c */; }; + 71F4C58A0FDED12800529849 /* cdriso.h in Headers */ = {isa = PBXBuildFile; fileRef = 71F4C5610FDED12800529849 /* cdriso.h */; }; + 71F4C58B0FDED12800529849 /* cdrom.c in Sources */ = {isa = PBXBuildFile; fileRef = 71F4C5620FDED12800529849 /* cdrom.c */; }; + 71F4C58C0FDED12800529849 /* cdrom.h in Headers */ = {isa = PBXBuildFile; fileRef = 71F4C5630FDED12800529849 /* cdrom.h */; }; + 71F4C58D0FDED12800529849 /* cheat.c in Sources */ = {isa = PBXBuildFile; fileRef = 71F4C5640FDED12800529849 /* cheat.c */; }; + 71F4C58E0FDED12800529849 /* cheat.h in Headers */ = {isa = PBXBuildFile; fileRef = 71F4C5650FDED12800529849 /* cheat.h */; }; + 71F4C58F0FDED12800529849 /* coff.h in Headers */ = {isa = PBXBuildFile; fileRef = 71F4C5660FDED12800529849 /* coff.h */; }; + 71F4C5900FDED12800529849 /* debug.h in Headers */ = {isa = PBXBuildFile; fileRef = 71F4C5670FDED12800529849 /* debug.h */; }; + 71F4C5910FDED12800529849 /* decode_xa.c in Sources */ = {isa = PBXBuildFile; fileRef = 71F4C5680FDED12800529849 /* decode_xa.c */; }; + 71F4C5920FDED12800529849 /* decode_xa.h in Headers */ = {isa = PBXBuildFile; fileRef = 71F4C5690FDED12800529849 /* decode_xa.h */; }; + 71F4C5930FDED12800529849 /* disr3000a.c in Sources */ = {isa = PBXBuildFile; fileRef = 71F4C56A0FDED12800529849 /* disr3000a.c */; }; + 71F4C5940FDED12800529849 /* gte.c in Sources */ = {isa = PBXBuildFile; fileRef = 71F4C56B0FDED12800529849 /* gte.c */; }; + 71F4C5950FDED12800529849 /* gte.h in Headers */ = {isa = PBXBuildFile; fileRef = 71F4C56C0FDED12800529849 /* gte.h */; }; + 71F4C5960FDED12800529849 /* mdec.c in Sources */ = {isa = PBXBuildFile; fileRef = 71F4C56D0FDED12800529849 /* mdec.c */; }; + 71F4C5970FDED12800529849 /* mdec.h in Headers */ = {isa = PBXBuildFile; fileRef = 71F4C56E0FDED12800529849 /* mdec.h */; }; + 71F4C5980FDED12800529849 /* misc.c in Sources */ = {isa = PBXBuildFile; fileRef = 71F4C56F0FDED12800529849 /* misc.c */; }; + 71F4C5990FDED12800529849 /* misc.h in Headers */ = {isa = PBXBuildFile; fileRef = 71F4C5700FDED12800529849 /* misc.h */; }; + 71F4C59A0FDED12800529849 /* plugins.c in Sources */ = {isa = PBXBuildFile; fileRef = 71F4C5710FDED12800529849 /* plugins.c */; }; + 71F4C59B0FDED12800529849 /* plugins.h in Headers */ = {isa = PBXBuildFile; fileRef = 71F4C5720FDED12800529849 /* plugins.h */; }; + 71F4C59C0FDED12800529849 /* psemu_plugin_defs.h in Headers */ = {isa = PBXBuildFile; fileRef = 71F4C5730FDED12800529849 /* psemu_plugin_defs.h */; }; + 71F4C59D0FDED12800529849 /* psxbios.c in Sources */ = {isa = PBXBuildFile; fileRef = 71F4C5740FDED12800529849 /* psxbios.c */; }; + 71F4C59E0FDED12800529849 /* psxbios.h in Headers */ = {isa = PBXBuildFile; fileRef = 71F4C5750FDED12800529849 /* psxbios.h */; }; + 71F4C59F0FDED12800529849 /* psxcommon.h in Headers */ = {isa = PBXBuildFile; fileRef = 71F4C5760FDED12800529849 /* psxcommon.h */; }; + 71F4C5A00FDED12800529849 /* psxcounters.c in Sources */ = {isa = PBXBuildFile; fileRef = 71F4C5770FDED12800529849 /* psxcounters.c */; }; + 71F4C5A10FDED12800529849 /* psxcounters.h in Headers */ = {isa = PBXBuildFile; fileRef = 71F4C5780FDED12800529849 /* psxcounters.h */; }; + 71F4C5A20FDED12800529849 /* psxdma.c in Sources */ = {isa = PBXBuildFile; fileRef = 71F4C5790FDED12800529849 /* psxdma.c */; }; + 71F4C5A30FDED12800529849 /* psxdma.h in Headers */ = {isa = PBXBuildFile; fileRef = 71F4C57A0FDED12800529849 /* psxdma.h */; }; + 71F4C5A40FDED12800529849 /* psxhle.c in Sources */ = {isa = PBXBuildFile; fileRef = 71F4C57B0FDED12800529849 /* psxhle.c */; }; + 71F4C5A50FDED12800529849 /* psxhle.h in Headers */ = {isa = PBXBuildFile; fileRef = 71F4C57C0FDED12800529849 /* psxhle.h */; }; + 71F4C5A60FDED12800529849 /* psxhw.c in Sources */ = {isa = PBXBuildFile; fileRef = 71F4C57D0FDED12800529849 /* psxhw.c */; }; + 71F4C5A70FDED12800529849 /* psxhw.h in Headers */ = {isa = PBXBuildFile; fileRef = 71F4C57E0FDED12800529849 /* psxhw.h */; }; + 71F4C5A80FDED12800529849 /* psxinterpreter.c in Sources */ = {isa = PBXBuildFile; fileRef = 71F4C57F0FDED12800529849 /* psxinterpreter.c */; }; + 71F4C5A90FDED12800529849 /* psxmem.c in Sources */ = {isa = PBXBuildFile; fileRef = 71F4C5800FDED12800529849 /* psxmem.c */; }; + 71F4C5AA0FDED12800529849 /* psxmem.h in Headers */ = {isa = PBXBuildFile; fileRef = 71F4C5810FDED12800529849 /* psxmem.h */; }; + 71F4C5AB0FDED12800529849 /* r3000a.c in Sources */ = {isa = PBXBuildFile; fileRef = 71F4C5820FDED12800529849 /* r3000a.c */; }; + 71F4C5AC0FDED12800529849 /* r3000a.h in Headers */ = {isa = PBXBuildFile; fileRef = 71F4C5830FDED12800529849 /* r3000a.h */; }; + 71F4C5AD0FDED12800529849 /* sio.c in Sources */ = {isa = PBXBuildFile; fileRef = 71F4C5840FDED12800529849 /* sio.c */; }; + 71F4C5AE0FDED12800529849 /* sio.h in Headers */ = {isa = PBXBuildFile; fileRef = 71F4C5850FDED12800529849 /* sio.h */; }; + 71F4C5AF0FDED12800529849 /* spu.c in Sources */ = {isa = PBXBuildFile; fileRef = 71F4C5860FDED12800529849 /* spu.c */; }; + 71F4C5B00FDED12800529849 /* spu.h in Headers */ = {isa = PBXBuildFile; fileRef = 71F4C5870FDED12800529849 /* spu.h */; }; + 71F4C5B10FDED12800529849 /* system.h in Headers */ = {isa = PBXBuildFile; fileRef = 71F4C5880FDED12800529849 /* system.h */; }; + 71F4C5B80FDED16D00529849 /* iGte.h in Headers */ = {isa = PBXBuildFile; fileRef = 71F4C5B40FDED16D00529849 /* iGte.h */; }; + 71F4C5B90FDED16D00529849 /* iR3000A.c in Sources */ = {isa = PBXBuildFile; fileRef = 71F4C5B50FDED16D00529849 /* iR3000A.c */; }; + 71F4C5BA0FDED16D00529849 /* ix86.c in Sources */ = {isa = PBXBuildFile; fileRef = 71F4C5B60FDED16D00529849 /* ix86.c */; }; + 71F4C5BB0FDED16D00529849 /* ix86.h in Headers */ = {isa = PBXBuildFile; fileRef = 71F4C5B70FDED16D00529849 /* ix86.h */; }; +/* End PBXBuildFile section */ + +/* Begin PBXBuildRule section */ + 2BB3D6D005427FE200831ACB /* PBXBuildRule */ = { + isa = PBXBuildRule; + compilerSpec = com.apple.compilers.gcc; + fileType = sourcecode.c; + isEditable = 1; + outputFiles = ( + ); + }; + 2BD707B705559AE300CB5D9B /* PBXBuildRule */ = { + isa = PBXBuildRule; + compilerSpec = com.apple.compilers.gcc; + filePatterns = pasm.s; + fileType = sourcecode.asm; + isEditable = 1; + outputFiles = ( + "$(DERIVED_FILES_DIR)/$(INPUT_FILE_BASE).o", + ); + script = "as -o $(DERIVED_FILES_DIR)/$(INPUT_FILE_BASE).o $(INPUT_FILE_PATH)"; + }; +/* End PBXBuildRule section */ + +/* Begin PBXFileReference section */ + 2B02C04304E145D000880C5B /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; }; + 2B143D01078A2CBD00AF745A /* PCSX.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = PCSX.icns; sourceTree = "<group>"; }; + 2B143D02078A2CBD00AF745A /* pcsxfreeze.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = pcsxfreeze.icns; sourceTree = "<group>"; }; + 2B143D03078A2CBD00AF745A /* pcsxmemcard.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = pcsxmemcard.icns; sourceTree = "<group>"; }; + 2B143D04078A2CBD00AF745A /* psxbios.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = psxbios.icns; sourceTree = "<group>"; }; + 2B143D05078A2CBD00AF745A /* psxplugin.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = psxplugin.icns; sourceTree = "<group>"; }; + 2B2189D204D96C7A00179945 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = "<absolute>"; }; + 2B3E356A06937D1C00763C7D /* PcsxPluginDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PcsxPluginDocument.h; sourceTree = "<group>"; }; + 2B3E356B06937D1C00763C7D /* PcsxPluginDocument.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PcsxPluginDocument.m; sourceTree = "<group>"; }; + 2B3E35BB069384D100763C7D /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = AddPluginSheet.nib; sourceTree = "<group>"; }; + 2B4DE98D05FF9307003EFEF0 /* PluginController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PluginController.h; sourceTree = "<group>"; }; + 2B4DE98E05FF9307003EFEF0 /* PluginController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PluginController.m; sourceTree = "<group>"; }; + 2B690C760635C65C00CDA575 /* ExceptionHandling.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ExceptionHandling.framework; path = /System/Library/Frameworks/ExceptionHandling.framework; sourceTree = "<absolute>"; }; + 2B6E8AAE04C832040017A3B1 /* System.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = System.framework; path = /System/Library/Frameworks/System.framework; sourceTree = "<absolute>"; }; + 2B6E8AB404C8327C0017A3B1 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = "<absolute>"; }; + 2B75FD3C051C56D200D12034 /* PcsxController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PcsxController.h; sourceTree = "<group>"; }; + 2B75FD3D051C56D200D12034 /* PcsxController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PcsxController.m; sourceTree = "<group>"; }; + 2B75FD4A051C8A7400D12034 /* ConfigurationController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ConfigurationController.h; sourceTree = "<group>"; }; + 2B75FD4B051C8A7400D12034 /* ConfigurationController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = ConfigurationController.m; sourceTree = "<group>"; }; + 2B976C00074C14B4007C050A /* Kernel.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Kernel.framework; path = /System/Library/Frameworks/Kernel.framework; sourceTree = "<absolute>"; }; + 2BA178A505148D9D0026D74D /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; }; + 2BA178B10514CE260026D74D /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = Configuration.nib; sourceTree = "<group>"; }; + 2BA178B30514CE260026D74D /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = InfoPlist.strings; sourceTree = "<group>"; }; + 2BA178B50514CE260026D74D /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = PCSX.nib; sourceTree = "<group>"; }; + 2BA44360052DB2EA00E21DDD /* PcsxPlugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PcsxPlugin.h; sourceTree = "<group>"; }; + 2BA44361052DB2EA00E21DDD /* PcsxPlugin.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = PcsxPlugin.m; sourceTree = "<group>"; tabWidth = 4; usesTabs = 0; }; + 2BB3D6CF05427FE200831ACB /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = Info.plist; sourceTree = "<group>"; }; + 2BB3D6D105427FE200831ACB /* PCSX.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PCSX.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 2BBB1126051DC00500B84448 /* PluginList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PluginList.h; sourceTree = "<group>"; }; + 2BBB1127051DC00500B84448 /* PluginList.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PluginList.m; sourceTree = "<group>"; }; + 2BBB1787051E0D9700B84448 /* English */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = English; path = Credits.rtf; sourceTree = "<group>"; }; + 2BBB1791051E113B00B84448 /* EmuThread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EmuThread.h; sourceTree = "<group>"; }; + 2BBB1792051E113B00B84448 /* EmuThread.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EmuThread.m; sourceTree = "<group>"; }; + 2BBB17DA051E4D0F00B84448 /* Plugin.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = Plugin.c; sourceTree = SOURCE_ROOT; }; + 2BC4786204C7FD3600CAB520 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; }; + 7161C2810FDED6D000225F97 /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = "<group>"; }; + 7161C2970FDED75300225F97 /* ExtendedKeys.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExtendedKeys.h; sourceTree = "<group>"; }; + 71F4C5600FDED12800529849 /* cdriso.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cdriso.c; path = ../libpcsxcore/cdriso.c; sourceTree = SOURCE_ROOT; }; + 71F4C5610FDED12800529849 /* cdriso.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = cdriso.h; path = ../libpcsxcore/cdriso.h; sourceTree = SOURCE_ROOT; }; + 71F4C5620FDED12800529849 /* cdrom.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cdrom.c; path = ../libpcsxcore/cdrom.c; sourceTree = SOURCE_ROOT; }; + 71F4C5630FDED12800529849 /* cdrom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = cdrom.h; path = ../libpcsxcore/cdrom.h; sourceTree = SOURCE_ROOT; }; + 71F4C5640FDED12800529849 /* cheat.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cheat.c; path = ../libpcsxcore/cheat.c; sourceTree = SOURCE_ROOT; }; + 71F4C5650FDED12800529849 /* cheat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = cheat.h; path = ../libpcsxcore/cheat.h; sourceTree = SOURCE_ROOT; }; + 71F4C5660FDED12800529849 /* coff.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = coff.h; path = ../libpcsxcore/coff.h; sourceTree = SOURCE_ROOT; }; + 71F4C5670FDED12800529849 /* debug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = debug.h; path = ../libpcsxcore/debug.h; sourceTree = SOURCE_ROOT; }; + 71F4C5680FDED12800529849 /* decode_xa.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = decode_xa.c; path = ../libpcsxcore/decode_xa.c; sourceTree = SOURCE_ROOT; }; + 71F4C5690FDED12800529849 /* decode_xa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = decode_xa.h; path = ../libpcsxcore/decode_xa.h; sourceTree = SOURCE_ROOT; }; + 71F4C56A0FDED12800529849 /* disr3000a.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = disr3000a.c; path = ../libpcsxcore/disr3000a.c; sourceTree = SOURCE_ROOT; }; + 71F4C56B0FDED12800529849 /* gte.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = gte.c; path = ../libpcsxcore/gte.c; sourceTree = SOURCE_ROOT; }; + 71F4C56C0FDED12800529849 /* gte.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = gte.h; path = ../libpcsxcore/gte.h; sourceTree = SOURCE_ROOT; }; + 71F4C56D0FDED12800529849 /* mdec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = mdec.c; path = ../libpcsxcore/mdec.c; sourceTree = SOURCE_ROOT; }; + 71F4C56E0FDED12800529849 /* mdec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = mdec.h; path = ../libpcsxcore/mdec.h; sourceTree = SOURCE_ROOT; }; + 71F4C56F0FDED12800529849 /* misc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = misc.c; path = ../libpcsxcore/misc.c; sourceTree = SOURCE_ROOT; }; + 71F4C5700FDED12800529849 /* misc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = misc.h; path = ../libpcsxcore/misc.h; sourceTree = SOURCE_ROOT; }; + 71F4C5710FDED12800529849 /* plugins.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = plugins.c; path = ../libpcsxcore/plugins.c; sourceTree = SOURCE_ROOT; }; + 71F4C5720FDED12800529849 /* plugins.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = plugins.h; path = ../libpcsxcore/plugins.h; sourceTree = SOURCE_ROOT; }; + 71F4C5730FDED12800529849 /* psemu_plugin_defs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = psemu_plugin_defs.h; path = ../libpcsxcore/psemu_plugin_defs.h; sourceTree = SOURCE_ROOT; }; + 71F4C5740FDED12800529849 /* psxbios.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = psxbios.c; path = ../libpcsxcore/psxbios.c; sourceTree = SOURCE_ROOT; }; + 71F4C5750FDED12800529849 /* psxbios.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = psxbios.h; path = ../libpcsxcore/psxbios.h; sourceTree = SOURCE_ROOT; }; + 71F4C5760FDED12800529849 /* psxcommon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = psxcommon.h; path = ../libpcsxcore/psxcommon.h; sourceTree = SOURCE_ROOT; }; + 71F4C5770FDED12800529849 /* psxcounters.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = psxcounters.c; path = ../libpcsxcore/psxcounters.c; sourceTree = SOURCE_ROOT; }; + 71F4C5780FDED12800529849 /* psxcounters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = psxcounters.h; path = ../libpcsxcore/psxcounters.h; sourceTree = SOURCE_ROOT; }; + 71F4C5790FDED12800529849 /* psxdma.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = psxdma.c; path = ../libpcsxcore/psxdma.c; sourceTree = SOURCE_ROOT; }; + 71F4C57A0FDED12800529849 /* psxdma.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = psxdma.h; path = ../libpcsxcore/psxdma.h; sourceTree = SOURCE_ROOT; }; + 71F4C57B0FDED12800529849 /* psxhle.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = psxhle.c; path = ../libpcsxcore/psxhle.c; sourceTree = SOURCE_ROOT; }; + 71F4C57C0FDED12800529849 /* psxhle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = psxhle.h; path = ../libpcsxcore/psxhle.h; sourceTree = SOURCE_ROOT; }; + 71F4C57D0FDED12800529849 /* psxhw.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = psxhw.c; path = ../libpcsxcore/psxhw.c; sourceTree = SOURCE_ROOT; }; + 71F4C57E0FDED12800529849 /* psxhw.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = psxhw.h; path = ../libpcsxcore/psxhw.h; sourceTree = SOURCE_ROOT; }; + 71F4C57F0FDED12800529849 /* psxinterpreter.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = psxinterpreter.c; path = ../libpcsxcore/psxinterpreter.c; sourceTree = SOURCE_ROOT; }; + 71F4C5800FDED12800529849 /* psxmem.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = psxmem.c; path = ../libpcsxcore/psxmem.c; sourceTree = SOURCE_ROOT; }; + 71F4C5810FDED12800529849 /* psxmem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = psxmem.h; path = ../libpcsxcore/psxmem.h; sourceTree = SOURCE_ROOT; }; + 71F4C5820FDED12800529849 /* r3000a.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = r3000a.c; path = ../libpcsxcore/r3000a.c; sourceTree = SOURCE_ROOT; }; + 71F4C5830FDED12800529849 /* r3000a.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = r3000a.h; path = ../libpcsxcore/r3000a.h; sourceTree = SOURCE_ROOT; }; + 71F4C5840FDED12800529849 /* sio.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sio.c; path = ../libpcsxcore/sio.c; sourceTree = SOURCE_ROOT; }; + 71F4C5850FDED12800529849 /* sio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sio.h; path = ../libpcsxcore/sio.h; sourceTree = SOURCE_ROOT; }; + 71F4C5860FDED12800529849 /* spu.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = spu.c; path = ../libpcsxcore/spu.c; sourceTree = SOURCE_ROOT; }; + 71F4C5870FDED12800529849 /* spu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = spu.h; path = ../libpcsxcore/spu.h; sourceTree = SOURCE_ROOT; }; + 71F4C5880FDED12800529849 /* system.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = system.h; path = ../libpcsxcore/system.h; sourceTree = SOURCE_ROOT; }; + 71F4C5B40FDED16D00529849 /* iGte.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = iGte.h; path = ../libpcsxcore/ix86/iGte.h; sourceTree = SOURCE_ROOT; }; + 71F4C5B50FDED16D00529849 /* iR3000A.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = iR3000A.c; path = ../libpcsxcore/ix86/iR3000A.c; sourceTree = SOURCE_ROOT; }; + 71F4C5B60FDED16D00529849 /* ix86.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ix86.c; path = ../libpcsxcore/ix86/ix86.c; sourceTree = SOURCE_ROOT; }; + 71F4C5B70FDED16D00529849 /* ix86.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ix86.h; path = ../libpcsxcore/ix86/ix86.h; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 2BB3D6C505427FE200831ACB /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 2BB3D6C605427FE200831ACB /* Cocoa.framework in Frameworks */, + 2BB3D6C705427FE200831ACB /* System.framework in Frameworks */, + 2BB3D6C805427FE200831ACB /* IOKit.framework in Frameworks */, + 2B400D910789F58A00BA271E /* Carbon.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 0249A662FF388D9811CA2CEA /* External Frameworks and Libraries */ = { + isa = PBXGroup; + children = ( + 2B976C00074C14B4007C050A /* Kernel.framework */, + 2B02C04304E145D000880C5B /* Carbon.framework */, + 2BC4786204C7FD3600CAB520 /* Cocoa.framework */, + 2B6E8AAE04C832040017A3B1 /* System.framework */, + 2B6E8AB404C8327C0017A3B1 /* IOKit.framework */, + 2B2189D204D96C7A00179945 /* CoreFoundation.framework */, + 2B690C760635C65C00CDA575 /* ExceptionHandling.framework */, + ); + name = "External Frameworks and Libraries"; + sourceTree = "<group>"; + }; + 08FB7794FE84155DC02AAC07 /* Pcsx */ = { + isa = PBXGroup; + children = ( + 08FB7795FE84155DC02AAC07 /* Source */, + 0249A662FF388D9811CA2CEA /* External Frameworks and Libraries */, + 1AB674ADFE9D54B511CA2CBB /* Products */, + 2BB3D6CF05427FE200831ACB /* Info.plist */, + ); + name = Pcsx; + sourceTree = "<group>"; + }; + 08FB7795FE84155DC02AAC07 /* Source */ = { + isa = PBXGroup; + children = ( + 2BCE23B204C6B52C007C2DA3 /* libpcsxcore */, + 2BC4787804C7FDBD00CAB520 /* MacOSX */, + ); + name = Source; + sourceTree = "<group>"; + }; + 1AB674ADFE9D54B511CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 2BBD6C1D04C893F500A83E33 /* Plugin */, + 2BB3D6D105427FE200831ACB /* PCSX.app */, + ); + name = Products; + sourceTree = "<group>"; + }; + 2B143D00078A2CBD00AF745A /* icons */ = { + isa = PBXGroup; + children = ( + 2B143D01078A2CBD00AF745A /* PCSX.icns */, + 2B143D02078A2CBD00AF745A /* pcsxfreeze.icns */, + 2B143D03078A2CBD00AF745A /* pcsxmemcard.icns */, + 2B143D04078A2CBD00AF745A /* psxbios.icns */, + 2B143D05078A2CBD00AF745A /* psxplugin.icns */, + ); + path = icons; + sourceTree = "<group>"; + }; + 2BA178AD0514CE260026D74D /* English.lproj */ = { + isa = PBXGroup; + children = ( + 2BBB1786051E0D9700B84448 /* Credits.rtf */, + 2BA178B00514CE260026D74D /* Configuration.nib */, + 2BA178B20514CE260026D74D /* InfoPlist.strings */, + 2BA178B40514CE260026D74D /* PCSX.nib */, + 2B3E35BA069384D100763C7D /* AddPluginSheet.nib */, + ); + path = English.lproj; + sourceTree = "<group>"; + }; + 2BBD6C1D04C893F500A83E33 /* Plugin */ = { + isa = PBXGroup; + children = ( + ); + name = Plugin; + sourceTree = "<group>"; + }; + 2BC4787804C7FDBD00CAB520 /* MacOSX */ = { + isa = PBXGroup; + children = ( + 2BA178AD0514CE260026D74D /* English.lproj */, + 2B143D00078A2CBD00AF745A /* icons */, + 7161C2810FDED6D000225F97 /* config.h */, + 2BA178A505148D9D0026D74D /* main.m */, + 2BBB17DA051E4D0F00B84448 /* Plugin.c */, + 2B75FD3C051C56D200D12034 /* PcsxController.h */, + 2B75FD3D051C56D200D12034 /* PcsxController.m */, + 2B75FD4A051C8A7400D12034 /* ConfigurationController.h */, + 2B75FD4B051C8A7400D12034 /* ConfigurationController.m */, + 2B4DE98D05FF9307003EFEF0 /* PluginController.h */, + 2B4DE98E05FF9307003EFEF0 /* PluginController.m */, + 2BBB1791051E113B00B84448 /* EmuThread.h */, + 2BBB1792051E113B00B84448 /* EmuThread.m */, + 7161C2970FDED75300225F97 /* ExtendedKeys.h */, + 2BBB1126051DC00500B84448 /* PluginList.h */, + 2BBB1127051DC00500B84448 /* PluginList.m */, + 2BA44360052DB2EA00E21DDD /* PcsxPlugin.h */, + 2BA44361052DB2EA00E21DDD /* PcsxPlugin.m */, + 2B3E356A06937D1C00763C7D /* PcsxPluginDocument.h */, + 2B3E356B06937D1C00763C7D /* PcsxPluginDocument.m */, + ); + name = MacOSX; + sourceTree = "<group>"; + }; + 2BCE23B204C6B52C007C2DA3 /* libpcsxcore */ = { + isa = PBXGroup; + children = ( + 71F4C5B30FDED15800529849 /* ix86 */, + 71F4C5600FDED12800529849 /* cdriso.c */, + 71F4C5610FDED12800529849 /* cdriso.h */, + 71F4C5620FDED12800529849 /* cdrom.c */, + 71F4C5630FDED12800529849 /* cdrom.h */, + 71F4C5640FDED12800529849 /* cheat.c */, + 71F4C5650FDED12800529849 /* cheat.h */, + 71F4C5660FDED12800529849 /* coff.h */, + 71F4C5670FDED12800529849 /* debug.h */, + 71F4C5680FDED12800529849 /* decode_xa.c */, + 71F4C5690FDED12800529849 /* decode_xa.h */, + 71F4C56A0FDED12800529849 /* disr3000a.c */, + 71F4C56B0FDED12800529849 /* gte.c */, + 71F4C56C0FDED12800529849 /* gte.h */, + 71F4C56D0FDED12800529849 /* mdec.c */, + 71F4C56E0FDED12800529849 /* mdec.h */, + 71F4C56F0FDED12800529849 /* misc.c */, + 71F4C5700FDED12800529849 /* misc.h */, + 71F4C5710FDED12800529849 /* plugins.c */, + 71F4C5720FDED12800529849 /* plugins.h */, + 71F4C5730FDED12800529849 /* psemu_plugin_defs.h */, + 71F4C5740FDED12800529849 /* psxbios.c */, + 71F4C5750FDED12800529849 /* psxbios.h */, + 71F4C5760FDED12800529849 /* psxcommon.h */, + 71F4C5770FDED12800529849 /* psxcounters.c */, + 71F4C5780FDED12800529849 /* psxcounters.h */, + 71F4C5790FDED12800529849 /* psxdma.c */, + 71F4C57A0FDED12800529849 /* psxdma.h */, + 71F4C57B0FDED12800529849 /* psxhle.c */, + 71F4C57C0FDED12800529849 /* psxhle.h */, + 71F4C57D0FDED12800529849 /* psxhw.c */, + 71F4C57E0FDED12800529849 /* psxhw.h */, + 71F4C57F0FDED12800529849 /* psxinterpreter.c */, + 71F4C5800FDED12800529849 /* psxmem.c */, + 71F4C5810FDED12800529849 /* psxmem.h */, + 71F4C5820FDED12800529849 /* r3000a.c */, + 71F4C5830FDED12800529849 /* r3000a.h */, + 71F4C5840FDED12800529849 /* sio.c */, + 71F4C5850FDED12800529849 /* sio.h */, + 71F4C5860FDED12800529849 /* spu.c */, + 71F4C5870FDED12800529849 /* spu.h */, + 71F4C5880FDED12800529849 /* system.h */, + ); + name = libpcsxcore; + sourceTree = "<group>"; + }; + 71F4C5B30FDED15800529849 /* ix86 */ = { + isa = PBXGroup; + children = ( + 71F4C5B40FDED16D00529849 /* iGte.h */, + 71F4C5B50FDED16D00529849 /* iR3000A.c */, + 71F4C5B60FDED16D00529849 /* ix86.c */, + 71F4C5B70FDED16D00529849 /* ix86.h */, + ); + name = ix86; + sourceTree = "<group>"; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 2BB3D68305427FE200831ACB /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 2BB3D69D05427FE200831ACB /* PcsxController.h in Headers */, + 2BB3D69E05427FE200831ACB /* ConfigurationController.h in Headers */, + 2BB3D69F05427FE200831ACB /* PluginList.h in Headers */, + 2BB3D6A005427FE200831ACB /* EmuThread.h in Headers */, + 2BB3D6A105427FE200831ACB /* PcsxPlugin.h in Headers */, + 2B4DE99105FF9307003EFEF0 /* PluginController.h in Headers */, + 2B3E356C06937D1C00763C7D /* PcsxPluginDocument.h in Headers */, + 71F4C58A0FDED12800529849 /* cdriso.h in Headers */, + 71F4C58C0FDED12800529849 /* cdrom.h in Headers */, + 71F4C58E0FDED12800529849 /* cheat.h in Headers */, + 71F4C58F0FDED12800529849 /* coff.h in Headers */, + 71F4C5900FDED12800529849 /* debug.h in Headers */, + 71F4C5920FDED12800529849 /* decode_xa.h in Headers */, + 71F4C5950FDED12800529849 /* gte.h in Headers */, + 71F4C5970FDED12800529849 /* mdec.h in Headers */, + 71F4C5990FDED12800529849 /* misc.h in Headers */, + 71F4C59B0FDED12800529849 /* plugins.h in Headers */, + 71F4C59C0FDED12800529849 /* psemu_plugin_defs.h in Headers */, + 71F4C59E0FDED12800529849 /* psxbios.h in Headers */, + 71F4C59F0FDED12800529849 /* psxcommon.h in Headers */, + 71F4C5A10FDED12800529849 /* psxcounters.h in Headers */, + 71F4C5A30FDED12800529849 /* psxdma.h in Headers */, + 71F4C5A50FDED12800529849 /* psxhle.h in Headers */, + 71F4C5A70FDED12800529849 /* psxhw.h in Headers */, + 71F4C5AA0FDED12800529849 /* psxmem.h in Headers */, + 71F4C5AC0FDED12800529849 /* r3000a.h in Headers */, + 71F4C5AE0FDED12800529849 /* sio.h in Headers */, + 71F4C5B00FDED12800529849 /* spu.h in Headers */, + 71F4C5B10FDED12800529849 /* system.h in Headers */, + 71F4C5B80FDED16D00529849 /* iGte.h in Headers */, + 71F4C5BB0FDED16D00529849 /* ix86.h in Headers */, + 7161C2820FDED6D000225F97 /* config.h in Headers */, + 7161C2980FDED75300225F97 /* ExtendedKeys.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 2BB3D68205427FE200831ACB /* PCSX */ = { + isa = PBXNativeTarget; + buildConfigurationList = 71F353F30FD98DFE00CBEC28 /* Build configuration list for PBXNativeTarget "PCSX" */; + buildPhases = ( + 2BB3D68305427FE200831ACB /* Headers */, + 2BB3D6A205427FE200831ACB /* Resources */, + 2BB3D6A805427FE200831ACB /* Sources */, + 2BB3D6C505427FE200831ACB /* Frameworks */, + 2BB3D6CD05427FE200831ACB /* Rez */, + ); + buildRules = ( + 2BD707B705559AE300CB5D9B /* PBXBuildRule */, + 2BB3D6D005427FE200831ACB /* PBXBuildRule */, + ); + dependencies = ( + ); + name = PCSX; + productInstallPath = "$(USER_APPS_DIR)"; + productName = "Pcsx-MacOSX"; + productReference = 2BB3D6D105427FE200831ACB /* PCSX.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 71F353F80FD98DFE00CBEC28 /* Build configuration list for PBXProject "Pcsx" */; + hasScannedForEncodings = 1; + mainGroup = 08FB7794FE84155DC02AAC07 /* Pcsx */; + projectDirPath = ""; + targets = ( + 2BB3D68205427FE200831ACB /* PCSX */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 2BB3D6A205427FE200831ACB /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2BB3D6A305427FE200831ACB /* Configuration.nib in Resources */, + 2BB3D6A405427FE200831ACB /* InfoPlist.strings in Resources */, + 2BB3D6A505427FE200831ACB /* PCSX.nib in Resources */, + 2BB3D6A705427FE200831ACB /* Credits.rtf in Resources */, + 2B3E35BC069384D100763C7D /* AddPluginSheet.nib in Resources */, + 2B143D06078A2CBD00AF745A /* PCSX.icns in Resources */, + 2B143D07078A2CBD00AF745A /* pcsxfreeze.icns in Resources */, + 2B143D08078A2CBD00AF745A /* pcsxmemcard.icns in Resources */, + 2B143D09078A2CBD00AF745A /* psxbios.icns in Resources */, + 2B143D0A078A2CBD00AF745A /* psxplugin.icns in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXRezBuildPhase section */ + 2BB3D6CD05427FE200831ACB /* Rez */ = { + isa = PBXRezBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXRezBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 2BB3D6A805427FE200831ACB /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2BB3D6BE05427FE200831ACB /* main.m in Sources */, + 2BB3D6BF05427FE200831ACB /* PcsxController.m in Sources */, + 2BB3D6C005427FE200831ACB /* ConfigurationController.m in Sources */, + 2BB3D6C105427FE200831ACB /* PluginList.m in Sources */, + 2BB3D6C205427FE200831ACB /* EmuThread.m in Sources */, + 2BB3D6C305427FE200831ACB /* Plugin.c in Sources */, + 2BB3D6C405427FE200831ACB /* PcsxPlugin.m in Sources */, + 2B4DE99205FF9307003EFEF0 /* PluginController.m in Sources */, + 2B3E356D06937D1C00763C7D /* PcsxPluginDocument.m in Sources */, + 71F4C5890FDED12800529849 /* cdriso.c in Sources */, + 71F4C58B0FDED12800529849 /* cdrom.c in Sources */, + 71F4C58D0FDED12800529849 /* cheat.c in Sources */, + 71F4C5910FDED12800529849 /* decode_xa.c in Sources */, + 71F4C5930FDED12800529849 /* disr3000a.c in Sources */, + 71F4C5940FDED12800529849 /* gte.c in Sources */, + 71F4C5960FDED12800529849 /* mdec.c in Sources */, + 71F4C5980FDED12800529849 /* misc.c in Sources */, + 71F4C59A0FDED12800529849 /* plugins.c in Sources */, + 71F4C59D0FDED12800529849 /* psxbios.c in Sources */, + 71F4C5A00FDED12800529849 /* psxcounters.c in Sources */, + 71F4C5A20FDED12800529849 /* psxdma.c in Sources */, + 71F4C5A40FDED12800529849 /* psxhle.c in Sources */, + 71F4C5A60FDED12800529849 /* psxhw.c in Sources */, + 71F4C5A80FDED12800529849 /* psxinterpreter.c in Sources */, + 71F4C5A90FDED12800529849 /* psxmem.c in Sources */, + 71F4C5AB0FDED12800529849 /* r3000a.c in Sources */, + 71F4C5AD0FDED12800529849 /* sio.c in Sources */, + 71F4C5AF0FDED12800529849 /* spu.c in Sources */, + 71F4C5B90FDED16D00529849 /* iR3000A.c in Sources */, + 71F4C5BA0FDED16D00529849 /* ix86.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 2B3E35BA069384D100763C7D /* AddPluginSheet.nib */ = { + isa = PBXVariantGroup; + children = ( + 2B3E35BB069384D100763C7D /* English */, + ); + name = AddPluginSheet.nib; + sourceTree = "<group>"; + }; + 2BA178B00514CE260026D74D /* Configuration.nib */ = { + isa = PBXVariantGroup; + children = ( + 2BA178B10514CE260026D74D /* English */, + ); + name = Configuration.nib; + sourceTree = "<group>"; + }; + 2BA178B20514CE260026D74D /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 2BA178B30514CE260026D74D /* English */, + ); + name = InfoPlist.strings; + sourceTree = "<group>"; + }; + 2BA178B40514CE260026D74D /* PCSX.nib */ = { + isa = PBXVariantGroup; + children = ( + 2BA178B50514CE260026D74D /* English */, + ); + name = PCSX.nib; + sourceTree = "<group>"; + }; + 2BBB1786051E0D9700B84448 /* Credits.rtf */ = { + isa = PBXVariantGroup; + children = ( + 2BBB1787051E0D9700B84448 /* English */, + ); + name = Credits.rtf; + sourceTree = "<group>"; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 71F353F40FD98DFE00CBEC28 /* Development */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + DEBUGGING_SYMBOLS = YES; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_ASM_KEYWORD = YES; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_MODEL_CPU = G3; + GCC_MODEL_TUNING = G3; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "$(GCC_PREPROCESSOR_DEFINITIONS_QUOTED_1)", + __MACOSX__, + ); + GCC_PREPROCESSOR_DEFINITIONS_QUOTED_1 = "PCSX_VERSION=\\\"1.5\\\""; + GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO; + GCC_WARN_UNKNOWN_PRAGMAS = NO; + INFOPLIST_FILE = Info.plist; + OTHER_CFLAGS = ( + "-fomit-frame-pointer", + "-funroll-loops", + "-falign-loops=16", + ); + OTHER_REZFLAGS = ""; + PRODUCT_NAME = PCSX; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = "-Wmost"; + WRAPPER_EXTENSION = app; + ZERO_LINK = NO; + }; + name = Development; + }; + 71F353F50FD98DFE00CBEC28 /* Deployment */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = YES; + DEBUGGING_SYMBOLS = NO; + GCC_DYNAMIC_NO_PIC = YES; + GCC_ENABLE_ASM_KEYWORD = YES; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_MODEL_CPU = G3; + GCC_MODEL_TUNING = G3; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "$(GCC_PREPROCESSOR_DEFINITIONS_QUOTED_1)", + __MACOSX__, + ); + GCC_PREPROCESSOR_DEFINITIONS_QUOTED_1 = "PCSX_VERSION=\\\"1.5\\\""; + GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO; + GCC_WARN_UNKNOWN_PRAGMAS = NO; + INFOPLIST_FILE = Info.plist; + OTHER_CFLAGS = ( + "-fomit-frame-pointer", + "-funroll-loops", + "-falign-loops=16", + ); + OTHER_REZFLAGS = ""; + PRODUCT_NAME = PCSX; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = "-Wmost"; + WRAPPER_EXTENSION = app; + ZERO_LINK = NO; + }; + name = Deployment; + }; + 71F353F90FD98DFE00CBEC28 /* Development */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = i386; + GCC_MODEL_TUNING = ""; + HEADER_SEARCH_PATHS = ( + ../include, + ../libpcsxcore, + ../macosx, + ); + OTHER_LDFLAGS = ( + "-lz", + "-lSystemStubs", + ); + }; + name = Development; + }; + 71F353FA0FD98DFE00CBEC28 /* Deployment */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = i386; + GCC_MODEL_TUNING = ""; + GCC_OPTIMIZATION_LEVEL = 2; + HEADER_SEARCH_PATHS = ( + ../include, + ../libpcsxcore, + ../macosx, + ); + OTHER_LDFLAGS = ( + "-lz", + "-lSystemStubs", + ); + }; + name = Deployment; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 71F353F30FD98DFE00CBEC28 /* Build configuration list for PBXNativeTarget "PCSX" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 71F353F40FD98DFE00CBEC28 /* Development */, + 71F353F50FD98DFE00CBEC28 /* Deployment */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Development; + }; + 71F353F80FD98DFE00CBEC28 /* Build configuration list for PBXProject "Pcsx" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 71F353F90FD98DFE00CBEC28 /* Development */, + 71F353FA0FD98DFE00CBEC28 /* Deployment */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Development; + }; +/* End XCConfigurationList section */ + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/macosx/PcsxController.h b/macosx/PcsxController.h new file mode 100644 index 00000000..1e83aa81 --- /dev/null +++ b/macosx/PcsxController.h @@ -0,0 +1,35 @@ +/* PcsxController */ + +#import <Cocoa/Cocoa.h> +#import "EmuThread.h" +#import "PluginList.h" + +@interface PcsxController : NSObject +{ + NSWindowController *preferencesController; + NSWindowController *memCardController; + PluginList *pluginList; + + IBOutlet NSWindow *memCardWindow; + IBOutlet NSWindow *preferenceWindow; + + BOOL sleepInBackground; + BOOL wasPausedBeforeBGSwitch; +} +- (IBAction)ejectCD:(id)sender; +- (IBAction)memCardConfig:(id)sender; +- (IBAction)pause:(id)sender; +- (IBAction)preferences:(id)sender; +- (IBAction)reset:(id)sender; +- (IBAction)runCD:(id)sender; +- (IBAction)runBios:(id)sender; +- (IBAction)runExe:(id)sender; +- (IBAction)freeze:(id)sender; +- (IBAction)defrost:(id)sender; +- (IBAction)fullscreen:(id)sender; + ++ (void)setConfigFromDefaults; ++ (void)setDefaultFromConfig:(NSString *)defaultKey; ++ (BOOL)biosAvailable; + +@end diff --git a/macosx/PcsxController.m b/macosx/PcsxController.m new file mode 100644 index 00000000..b1502761 --- /dev/null +++ b/macosx/PcsxController.m @@ -0,0 +1,387 @@ +#import <Cocoa/Cocoa.h> +#import "PcsxController.h" +#import "ConfigurationController.h" +#import "EmuThread.h" +#include "psxcommon.h" +#include "plugins.h" +#include "misc.h" +#include "ExtendedKeys.h" + +NSDictionary *prefStringKeys; +NSDictionary *prefLongKeys; +NSMutableArray *biosList; +NSString *saveStatePath; + +@implementation PcsxController + +- (IBAction)ejectCD:(id)sender +{ + NSMutableString *deviceName; + NSTask *ejectTask; + NSRange rdiskRange; + + BOOL wasPaused = [EmuThread pauseSafe]; + + /* close connection to current cd */ + if ([EmuThread active]) + CDR_close(); + + if (CDR_getDriveLetter() != nil) { + deviceName = [NSMutableString stringWithCString:CDR_getDriveLetter()]; + + // delete the 'r' in 'rdisk' + rdiskRange = [deviceName rangeOfString:@"rdisk"]; + if (rdiskRange.length != 0) { + rdiskRange.length = 1; + [deviceName deleteCharactersInRange:rdiskRange]; + } + // execute hdiutil to eject the device + ejectTask = [NSTask launchedTaskWithLaunchPath:@"/usr/bin/hdiutil" arguments:[NSArray arrayWithObjects:@"eject", deviceName, nil]]; + [ejectTask waitUntilExit]; + } + + /* and open new cd */ + if ([EmuThread active]) + CDR_open(); + + if (!wasPaused) { + [EmuThread resume]; + } +} + +- (IBAction)memCardConfig:(id)sender +{ + NSRunAlertPanel(NSLocalizedString(@"Unimplemented feature", nil), + NSLocalizedString(@"Configuration of memory cards has not yet been implemented, but will be available in the future.", nil), + nil, nil, nil); +} + +- (IBAction)pause:(id)sender +{ + if ([EmuThread isPaused]) { + //[sender setState:NSOffState]; + [EmuThread resume]; + } + else { + //[sender setState:NSOnState]; + [EmuThread pause]; + } +} + +- (IBAction)preferences:(id)sender +{ + /* load the nib if it hasn't yet */ + if (preferenceWindow == nil) { + if (preferencesController == nil) { + preferencesController = [[ConfigurationController alloc] initWithWindowNibName:@"Configuration"]; + } + preferenceWindow = [preferencesController window]; + } + + /* show the window */ + [preferenceWindow makeKeyAndOrderFront:self]; + [preferencesController showWindow:self]; +} + +- (IBAction)reset:(id)sender +{ + [EmuThread reset]; +} + +- (IBAction)runCD:(id)sender +{ +// LoadCdBios = 0; + [EmuThread run]; +} + +- (IBAction)runBios:(id)sender +{ +// LoadCdBios = 1; + [EmuThread run]; +} + +- (IBAction)runExe:(id)sender +{ +} + +- (IBAction)freeze:(id)sender +{ + int num = [sender tag]; + NSString *path = [NSString stringWithFormat:@"%@/%s-%3.3d.pcsxstate", saveStatePath, CdromId, num]; + + [EmuThread freezeAt:path which:num-1]; +} + +- (IBAction)defrost:(id)sender +{ + NSString *path = [NSString stringWithFormat:@"%@/%s-%3.3d.pcsxstate", saveStatePath, CdromId, [sender tag]]; + [EmuThread defrostAt:path]; +} + +- (IBAction)fullscreen:(id)sender +{ + GPU_keypressed(GPU_FULLSCREEN_KEY); +} + + +- (BOOL)validateMenuItem:(id <NSMenuItem>)menuItem +{ + if ([menuItem action] == @selector(pause:)) { + [menuItem setState:([EmuThread isPaused] ? NSOnState : NSOffState)]; + } else if ([menuItem action] == @selector(runBios:)) { + return [PcsxController biosAvailable]; + } + + if ([menuItem action] == @selector(reset:) || [menuItem action] == @selector(pause:) || + [menuItem action] == @selector(ejectCD:) || [menuItem action] == @selector(freeze:) || + [menuItem action] == @selector(fullscreen:)) + return [EmuThread active]; + + if ([menuItem action] == @selector(defrost:)) { + if (![EmuThread active]) + return NO; + + NSString *path = [NSString stringWithFormat:@"%@/%s-%3.3d.pcsxstate", saveStatePath, CdromId, [menuItem tag]]; + return (CheckState([path fileSystemRepresentation]) == 0); + } + + return YES; +} + +- (void)applicationWillResignActive:(NSNotification *)aNotification +{ + wasPausedBeforeBGSwitch = [EmuThread isPaused]; + + if (sleepInBackground) { + [EmuThread pause]; + } +} + +- (void)applicationDidBecomeActive:(NSNotification *)aNotification +{ + if (sleepInBackground && !wasPausedBeforeBGSwitch) { + [EmuThread resume]; + } +} + +- (void)awakeFromNib +{ + pluginList = [[PluginList alloc] init]; + if (![pluginList configured] /*!Config.Gpu[0] || !Config.Spu[0] || !Config.Pad1[0] || !Config.Cdr[0]*/) { + // configure plugins + [self preferences:nil]; + + NSRunCriticalAlertPanel(NSLocalizedString(@"Missing plugins!", nil), + NSLocalizedString(@"Pcsx is missing one or more critical plugins. You will need to install these in order to play games.", nil), + nil, nil, nil); + } + + if (![PcsxController biosAvailable]) { + NSRunInformationalAlertPanel(NSLocalizedString(@"Missing BIOS!", nil), + NSLocalizedString(@"Pcsx wasn't able to locate any Playstation BIOS ROM files. This means that it will run in BIOS simulation mode which is less stable and compatible than using a real Playstation BIOS.\n" + @"If you have a BIOS available, please copy it to\n~/Library/Application Support/Pcsx/Bios/", nil), + nil, nil, nil); + } + + sleepInBackground = YES; +} + +- (void)dealloc +{ + [pluginList release]; + + [super dealloc]; +} + ++ (void)setConfigFromDefaults +{ + NSEnumerator *enumerator; + const char *str; + NSString *key; + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + + /* + enumerator = [prefStringKeys keyEnumerator]; + while ((key = [enumerator nextObject])) { + str = [[defaults stringForKey:key] fileSystemRepresentation]; + char *dst = (char *)[[prefStringKeys objectForKey:key] pointerValue]; + if (str != nil && dst != nil) strncpy(dst, str, 255); + }*/ + + enumerator = [prefLongKeys keyEnumerator]; + while ((key = [enumerator nextObject])) { + long *dst = (long *)[[prefLongKeys objectForKey:key] pointerValue]; + if (dst != nil) *dst = [defaults integerForKey:key]; + } + + // special cases + //str = [[defaults stringForKey:@"PluginPAD"] fileSystemRepresentation]; + //if (str != nil) strncpy(Config.Pad2, str, 255); + + str = [[defaults stringForKey:@"Bios"] fileSystemRepresentation]; + if (str) { + NSString *path = [defaults stringForKey:@"Bios"]; + int index = [biosList indexOfObject:path]; + + if (-1 == index) { + [biosList insertObject:path atIndex:0]; + } else if (0 < index) { + [biosList exchangeObjectAtIndex:index withObjectAtIndex:0]; + } + } + + if ([defaults boolForKey:@"UseHLE"] || 0 == [biosList count]) { + strcpy(Config.Bios, "HLE"); + } else { + str = [(NSString *)[biosList objectAtIndex:0] fileSystemRepresentation]; + if (str != nil) strncpy(Config.Bios, str, 255); + else strcpy(Config.Bios, "HLE"); + } + + // FIXME: hack + strcpy(Config.Net, "Disabled"); +} + ++ (void)setDefaultFromConfig:(NSString *)defaultKey +{ + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + + char *str = (char *)[[prefStringKeys objectForKey:defaultKey] pointerValue]; + if (str) { + [defaults setObject:[NSString stringWithCString:str] forKey:defaultKey]; + return; + } + + long *val = (long *)[[prefLongKeys objectForKey:defaultKey] pointerValue]; + if (val) { + [defaults setInteger:*val forKey:defaultKey]; + return; + } +} + ++ (BOOL)biosAvailable +{ + return ([biosList count] > 0); +} + +// called when class is initialized ++ (void)initialize +{ + NSString *path; + const char *str; + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + NSDictionary *appDefaults = [NSDictionary dictionaryWithObjectsAndKeys: + @"Disabled", @"PluginNET", + [NSNumber numberWithInt:0], @"NoDynarec", + [NSNumber numberWithInt:1], @"AutoDetectVideoType", +// @"HLE", @"Bios", + [NSNumber numberWithInt:0], @"UseHLE", + [NSNumber numberWithInt:1], @"CpuBiasShift", + nil]; + + [defaults registerDefaults:appDefaults]; + + prefStringKeys = [[NSDictionary alloc] initWithObjectsAndKeys: + [NSValue valueWithPointer:Config.Gpu], @"PluginGPU", + [NSValue valueWithPointer:Config.Spu], @"PluginSPU", + [NSValue valueWithPointer:Config.Pad1], @"PluginPAD", + [NSValue valueWithPointer:Config.Cdr], @"PluginCDR", + [NSValue valueWithPointer:Config.Net], @"PluginNET", +// [NSValue valueWithPointer:Config.Bios], @"Bios", + nil]; + + prefLongKeys = [[NSDictionary alloc] initWithObjectsAndKeys: + [NSValue valueWithPointer:&Config.Xa], @"NoXaAudio", + [NSValue valueWithPointer:&Config.Sio], @"SioIrqAlways", + [NSValue valueWithPointer:&Config.Mdec], @"BlackAndWhiteMDECVideo", + [NSValue valueWithPointer:&Config.PsxAuto], @"AutoDetectVideoType", + [NSValue valueWithPointer:&Config.PsxType], @"VideoTypePAL", + [NSValue valueWithPointer:&Config.Cdda], @"NoCDAudio", + [NSValue valueWithPointer:&Config.Cpu], @"NoDynarec", + [NSValue valueWithPointer:&Config.PsxOut], @"ConsoleOutput", + [NSValue valueWithPointer:&Config.SpuIrq], @"SpuIrqAlways", + [NSValue valueWithPointer:&Config.RCntFix], @"RootCounterFix", + [NSValue valueWithPointer:&Config.VSyncWA], @"VideoSyncWAFix", + nil]; + + // setup application support paths + NSArray *libPaths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES); + if ([libPaths count] > 0) { + NSString *path; + BOOL dir; + + // create them if needed + NSFileManager *dfm = [NSFileManager defaultManager]; + NSString *supportPath = [NSString stringWithFormat:@"%@/Application Support", [libPaths objectAtIndex:0]]; + if (![dfm fileExistsAtPath:supportPath isDirectory:&dir]) + [dfm createDirectoryAtPath:supportPath attributes:nil]; + + path = [NSString stringWithFormat:@"%@/Pcsx", supportPath]; + if (![dfm fileExistsAtPath:path isDirectory:&dir]) + [dfm createDirectoryAtPath:path attributes:nil]; + + path = [NSString stringWithFormat:@"%@/Pcsx/Bios", supportPath]; + if (![dfm fileExistsAtPath:path isDirectory:&dir]) + [dfm createDirectoryAtPath:path attributes:nil]; + + path = [NSString stringWithFormat:@"%@/Pcsx/Memory Cards", supportPath]; + if (![dfm fileExistsAtPath:path isDirectory:&dir]) + [dfm createDirectoryAtPath:path attributes:nil]; + + saveStatePath = [[NSString stringWithFormat:@"%@/Pcsx/Save States", supportPath] retain]; + if (![dfm fileExistsAtPath:saveStatePath isDirectory:&dir]) + [dfm createDirectoryAtPath:saveStatePath attributes:nil]; + + + path = [NSString stringWithFormat:@"%@/Pcsx/Memory Cards/Mcd001.mcr", supportPath]; + str = [path fileSystemRepresentation]; + if (str != nil) strncpy(Config.Mcd1, str, 255); + + path = [NSString stringWithFormat:@"%@/Pcsx/Memory Cards/Mcd002.mcr", supportPath]; + str = [path fileSystemRepresentation]; + if (str != nil) strncpy(Config.Mcd2, str, 255); + + path = [NSString stringWithFormat:@"%@/Pcsx/Bios/", supportPath]; + str = [path fileSystemRepresentation]; + if (str != nil) strncpy(Config.BiosDir, str, 255); + } else { + strcpy(Config.BiosDir, "Bios/"); + + saveStatePath = @"sstates"; + [saveStatePath retain]; + } + + // set plugin path + path = [[[NSBundle mainBundle] builtInPlugInsPath] stringByAppendingString:@"/"]; + str = [path fileSystemRepresentation]; + if (str != nil) strncpy(Config.PluginsDir, str, 255); + + // set font location +// path = [[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/GONZN16X.TLF"]; +// str = [path fileSystemRepresentation]; +// if (str != nil) strncpy(Config.BiosFont, str, 255); + + // locate a bios + biosList = [[NSMutableArray alloc] init]; + NSFileManager *manager = [NSFileManager defaultManager]; + NSArray *bioses = [manager directoryContentsAtPath:[NSString stringWithCString:Config.BiosDir]]; + if (bioses) { + int i; + for (i=0; i<[bioses count]; i++) { + NSString *file = [bioses objectAtIndex:i]; + NSDictionary *attrib = [manager fileAttributesAtPath:[NSString stringWithFormat:@"%s%@", Config.BiosDir, file] traverseLink:YES]; + + if ([[attrib fileType] isEqualToString:NSFileTypeRegular]) { + unsigned long long size = [attrib fileSize]; + if (([attrib fileSize] % (256*1024)) == 0 && size > 0) { + [biosList addObject:file]; + } + } + } + } + + [PcsxController setConfigFromDefaults]; +} + + +@end diff --git a/macosx/PcsxPlugin.h b/macosx/PcsxPlugin.h new file mode 100644 index 00000000..c8d47679 --- /dev/null +++ b/macosx/PcsxPlugin.h @@ -0,0 +1,41 @@ +// +// PcsxPlugin.h +// Pcsx +// +// Created by Gil Pedersen on Fri Oct 03 2003. +// Copyright (c) 2003 __MyCompanyName__. All rights reserved. +// + +#import <Foundation/Foundation.h> + + +@interface PcsxPlugin : NSObject { + CFBundleRef pluginRef; + + NSString *path; + NSDate *modDate; + NSString *name; + long version; + int type; + int active; +} + ++ (NSString *)getPrefixForType:(int)type; ++ (NSString *)getDefaultKeyForType:(int)type; ++ (char **)getConfigEntriesForType:(int)type; + +- (id)initWithPath:(NSString *)aPath; + +- (NSString *)getDisplayVersion; +- (int)getType; +- (NSString *)path; +- (NSString *)description; +- (BOOL)hasAboutAs:(int)type; +- (BOOL)hasConfigureAs:(int)type; +- (long)initAs:(int)aType; +- (long)shutdownAs:(int)aType; +- (void)aboutAs:(int)type; +- (void)configureAs:(int)type; +- (BOOL)verifyOK; + +@end diff --git a/macosx/PcsxPlugin.m b/macosx/PcsxPlugin.m new file mode 100644 index 00000000..9ee31112 --- /dev/null +++ b/macosx/PcsxPlugin.m @@ -0,0 +1,303 @@ +// +// PcsxPlugin.m +// Pcsx +// +// Created by Gil Pedersen on Fri Oct 03 2003. +// Copyright (c) 2003 __MyCompanyName__. All rights reserved. +// + +#import <Cocoa/Cocoa.h> +#import "PcsxPlugin.h" +#include "psxcommon.h" +#include "plugins.h" + +@implementation PcsxPlugin + ++ (NSString *)getPrefixForType:(int)aType +{ + switch (aType) { + case PSE_LT_GPU: return @"GPU"; + case PSE_LT_CDR: return @"CDR"; + case PSE_LT_SPU: return @"SPU"; + case PSE_LT_PAD: return @"PAD"; + case PSE_LT_NET: return @"NET"; + } + + return @""; +} + ++ (NSString *)getDefaultKeyForType:(int)aType +{ + //return @"Plugin" [PcsxPlugin getPrefixForType:aType]; + switch (aType) { + case PSE_LT_GPU: return @"PluginGPU"; + case PSE_LT_CDR: return @"PluginCDR"; + case PSE_LT_SPU: return @"PluginSPU"; + case PSE_LT_PAD: return @"PluginPAD"; + case PSE_LT_NET: return @"PluginNET"; + } + + return @""; +} + ++ (char **)getConfigEntriesForType:(int)aType +{ + static char *gpu[2] = {(char *)&Config.Gpu, NULL}; + static char *cdr[2] = {(char *)&Config.Cdr, NULL}; + static char *spu[2] = {(char *)&Config.Spu, NULL}; + static char *pad[3] = {(char *)&Config.Pad1, (char *)&Config.Pad2, NULL}; + static char *net[2] = {(char *)&Config.Net, NULL}; + + switch (aType) { + case PSE_LT_GPU: return (char **)gpu; + case PSE_LT_CDR: return (char **)cdr; + case PSE_LT_SPU: return (char **)spu; + case PSE_LT_PAD: return (char **)pad; + case PSE_LT_NET: return (char **)net; + } + + return nil; +} + +- (id)initWithPath:(NSString *)aPath +{ + if (!(self = [super init])) { + return nil; + } + + PSEgetLibType PSE_getLibType = NULL; + PSEgetLibVersion PSE_getLibVersion = NULL; + PSEgetLibName PSE_getLibName = NULL; + + pluginRef = nil; + name = nil; + path = [aPath retain]; + NSString *fullPath = [[NSString stringWithCString:Config.PluginsDir] stringByAppendingPathComponent:path]; + + pluginRef = SysLoadLibrary([fullPath fileSystemRepresentation]); + if (pluginRef == nil) { + [self release]; + return nil; + } + + // TODO: add support for plugins with multiple functionalities??? + PSE_getLibType = (PSEgetLibType) SysLoadSym(pluginRef, "PSEgetLibType"); + if (SysLibError() != nil) { + if (([path rangeOfString: @"gpu" options:NSCaseInsensitiveSearch]).length != 0) + type = PSE_LT_GPU; + else if (([path rangeOfString: @"cdr" options:NSCaseInsensitiveSearch]).length != 0) + type = PSE_LT_CDR; + else if (([path rangeOfString: @"spu" options:NSCaseInsensitiveSearch]).length != 0) + type = PSE_LT_SPU; + else if (([path rangeOfString: @"pad" options:NSCaseInsensitiveSearch]).length != 0) + type = PSE_LT_PAD; + else { + [self release]; + return nil; + } + } else { + type = (int)PSE_getLibType(); + if (type != PSE_LT_GPU && type != PSE_LT_CDR && type != PSE_LT_SPU && type != PSE_LT_PAD) { + [self release]; + return nil; + } + } + + PSE_getLibName = (PSEgetLibName) SysLoadSym(pluginRef, "PSEgetLibName"); + if (SysLibError() == nil) { + name = [[NSString alloc] initWithCString:PSE_getLibName()]; + } + + PSE_getLibVersion = (PSEgetLibVersion) SysLoadSym(pluginRef, "PSEgetLibVersion"); + if (SysLibError() == nil) { + version = PSE_getLibVersion(); + } + else { + version = -1; + } + + // save the current modification date + NSDictionary *fattrs = [[NSFileManager defaultManager] fileAttributesAtPath:fullPath traverseLink:YES]; + modDate = [[fattrs fileModificationDate] retain]; + + active = 0; + + return self; +} + +- (void)dealloc +{ + int i; + + // shutdown if we had previously been inited + for (i=0; i<32; i++) { + if (active & (1 << i)) { + [self shutdownAs:(1 << i)]; + } + } + + if (pluginRef) SysCloseLibrary(pluginRef); + + [path release]; + [name release]; + + [super dealloc]; +} + +- (void)runCommand:(id)arg +{ + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + NSString *funcName = [arg objectAtIndex:0]; + long (*func)(void); + + func = SysLoadSym(pluginRef, [funcName lossyCString]); + if (SysLibError() == nil) { + func(); + } else { + NSBeep(); + } + + [arg release]; + [pool release]; + return; +} + +- (long)initAs:(int)aType +{ + char symbol[255]; + long (*init)(void); + long (*initArg)(long arg); + int res = PSE_ERR_FATAL; + + if ((active & aType) == aType) { + return 0; + } + + sprintf(symbol, "%sinit", [[PcsxPlugin getPrefixForType:aType] lossyCString]); + init = initArg = SysLoadSym(pluginRef, symbol); + if (SysLibError() == nil) { + if (aType != PSE_LT_PAD) + res = init(); + else + res = initArg(1|2); + } + + if (0 == res) { + active |= aType; + } else { + NSRunCriticalAlertPanel(NSLocalizedString(@"Plugin Initialization Failed!", nil), + [NSString stringWithFormat:NSLocalizedString(@"Pcsx failed to initialize the selected %s plugin (error=%i).\nThe plugin might not work with your system.", nil), [PcsxPlugin getPrefixForType:aType], res], + nil, nil, nil); + } + + return res; +} + +- (long)shutdownAs:(int)aType +{ + char symbol[255]; + long (*shutdown)(void); + + sprintf(symbol, "%sshutdown", [[PcsxPlugin getPrefixForType:aType] lossyCString]); + shutdown = SysLoadSym(pluginRef, symbol); + if (SysLibError() == nil) { + active &= ~aType; + return shutdown(); + } + + return PSE_ERR_FATAL; +} + +- (BOOL)hasAboutAs:(int)aType +{ + char symbol[255]; + + sprintf(symbol, "%sabout", [[PcsxPlugin getPrefixForType:aType] lossyCString]); + SysLoadSym(pluginRef, symbol); + + return (SysLibError() == nil); +} + +- (BOOL)hasConfigureAs:(int)aType +{ + char symbol[255]; + + sprintf(symbol, "%sconfigure", [[PcsxPlugin getPrefixForType:aType] lossyCString]); + SysLoadSym(pluginRef, symbol); + + return (SysLibError() == nil); +} + +- (void)aboutAs:(int)aType +{ + NSArray *arg; + char symbol[255]; + + sprintf(symbol, "%sabout", [[PcsxPlugin getPrefixForType:aType] lossyCString]); + arg = [[NSArray alloc] initWithObjects:[NSString stringWithCString:symbol], + [NSNumber numberWithInt:0], nil]; + + // detach a new thread + [NSThread detachNewThreadSelector:@selector(runCommand:) toTarget:self + withObject:arg]; +} + +- (void)configureAs:(int)aType +{ + NSArray *arg; + char symbol[255]; + + sprintf(symbol, "%sconfigure", [[PcsxPlugin getPrefixForType:aType] lossyCString]); + arg = [[NSArray alloc] initWithObjects:[NSString stringWithCString:symbol], + [NSNumber numberWithInt:1], nil]; + + // detach a new thread + [NSThread detachNewThreadSelector:@selector(runCommand:) toTarget:self + withObject:arg]; +} + +- (NSString *)getDisplayVersion +{ + if (version == -1) + return @""; + + return [NSString stringWithFormat:@"v%ld.%ld.%ld", version>>16,(version>>8)&0xff,version&0xff]; +} + +- (int)getType +{ + return type; +} + +- (NSString *)path +{ + return path; +} + +- (unsigned)hash +{ + return [path hash]; +} + +- (NSString *)description +{ + if (name == nil) + return [path lastPathComponent]; + + return [NSString stringWithFormat:@"%@ %@ [%@]", name, [self getDisplayVersion], [path lastPathComponent]]; +} + +// the plugin will check if it's still valid and return the status +- (BOOL)verifyOK +{ + // check that the file is still there with the same modification date + NSFileManager *dfm = [NSFileManager defaultManager]; + NSString *fullPath = [[NSString stringWithCString:Config.PluginsDir] stringByAppendingPathComponent:path]; + if (![dfm fileExistsAtPath:fullPath]) + return NO; + + NSDictionary *fattrs = [dfm fileAttributesAtPath:fullPath traverseLink:YES]; + return [[fattrs fileModificationDate] isEqualToDate:modDate]; +} + +@end diff --git a/macosx/PcsxPluginDocument.h b/macosx/PcsxPluginDocument.h new file mode 100644 index 00000000..bf4f8028 --- /dev/null +++ b/macosx/PcsxPluginDocument.h @@ -0,0 +1,20 @@ +// +// PcsxPluginDocument.h +// Pcsx +// +// Created by Gil Pedersen on Thu Jul 01 2004. +// Copyright (c) 2004 __MyCompanyName__. All rights reserved. +// + +#import <AppKit/AppKit.h> + + +@interface PcsxPluginDocument : NSDocument { + IBOutlet NSWindow *addPluginSheet; + IBOutlet NSTextField *pluginName; + + BOOL moveOK; +} +- (IBAction)closeAddPluginSheet:(id)sender; + +@end diff --git a/macosx/PcsxPluginDocument.m b/macosx/PcsxPluginDocument.m new file mode 100644 index 00000000..6cbe0fae --- /dev/null +++ b/macosx/PcsxPluginDocument.m @@ -0,0 +1,95 @@ +// +// PcsxPluginDocument.m +// Pcsx +// +// Created by Gil Pedersen on Thu Jul 01 2004. +// Copyright (c) 2004 __MyCompanyName__. All rights reserved. +// + +#import "PcsxPluginDocument.h" + + +@implementation PcsxPluginDocument + +- (BOOL)showAddPluginSheet:(NSWindow *)window forName:(NSString *)name +// User has asked to see the custom display. Display it. +{ + if (!addPluginSheet) + [NSBundle loadNibNamed:@"AddPluginSheet" owner:self]; + + [pluginName setObjectValue:name]; + + [NSApp beginSheet:addPluginSheet + modalForWindow:window + modalDelegate:nil + didEndSelector:nil + contextInfo:nil]; + [NSApp runModalForWindow:addPluginSheet]; + // Sheet is up here. + [NSApp endSheet:addPluginSheet]; + [addPluginSheet orderOut:self]; + + return moveOK; +} + +- (IBAction)closeAddPluginSheet:(id)sender +{ + if ([[sender keyEquivalent] isEqualToString:@"\r"]) { + moveOK = YES; + } else { + moveOK = NO; + } + [NSApp stopModal]; +} + +- (BOOL)loadDataRepresentation:(NSData *)docData ofType:(NSString *)docType +{ + //NSLog(@"loadDataRepresentation"); + return NO; +} + +- (BOOL)loadFileWrapperRepresentation:(NSFileWrapper *)wrapper ofType:(NSString *)docType +{ + if ([self showAddPluginSheet:nil forName:[wrapper filename]]) { + NSString *dst = [NSString stringWithFormat:@"%@/%@", + [[NSBundle mainBundle] builtInPlugInsPath], + [wrapper filename]]; + + if ([wrapper writeToFile:dst atomically:NO updateFilenames:NO]) { + [[NSWorkspace sharedWorkspace] noteFileSystemChanged:[[NSBundle mainBundle] builtInPlugInsPath]]; + NSRunInformationalAlertPanel(NSLocalizedString(@"Installation Succesfull", nil), + NSLocalizedString(@"The installation of the specified plugin was succesfull. In order to use it, please restart the application.", nil), + nil, nil, nil); + } else { + NSRunAlertPanel(NSLocalizedString(@"Installation Failed!", nil), + NSLocalizedString(@"The installation of the specified plugin failed. Please try again, or make a manual install.", nil), + nil, nil, nil); + } + } + + // Tell the NSDocument that we can't handle the file, since we are already done with it + return NO; +} + +- (id)openDocumentWithContentsOfFile:(NSString *)fileName display:(BOOL)flag +{ + + return nil; +} + +- (NSString *)windowNibName { + // Implement this to return a nib to load OR implement -makeWindowControllers to manually create your controllers. + return @"PcsxPluginDocument"; +} + +- (NSData *)dataRepresentationOfType:(NSString *)type { + // Implement to provide a persistent data representation of your document OR remove this and implement the file-wrapper or file path based save methods. + return nil; +} +/* +- (BOOL)loadDataRepresentation:(NSData *)data ofType:(NSString *)type { + // Implement to load a persistent data representation of your document OR remove this and implement the file-wrapper or file path based load methods. + return YES; +}*/ + +@end diff --git a/macosx/Plugin.c b/macosx/Plugin.c new file mode 100644 index 00000000..3d7f0f73 --- /dev/null +++ b/macosx/Plugin.c @@ -0,0 +1,287 @@ +/* Pcsx - Pc Psx Emulator + * Copyright (C) 1999-2002 Pcsx Team + * + * 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 + */ + +#import <CoreFoundation/CoreFoundation.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <signal.h> + +#include "psxcommon.h" +#include "plugins.h" +#include "spu.h" + +void OnFile_Exit(); + +unsigned long gpuDisp; + +long SPU__open(void) { + return SPU_open(); +} + +int StatesC = 0; +extern int UseGui; +int ShowPic=0; + +void gpuShowPic() { +} + +void PADhandleKey(int key) { +/* char Text[255]; + int ret; + + switch (key) { + case 0: break; + case XK_F1: + sprintf(Text, "sstates/%10.10s.%3.3d", CdromLabel, StatesC); + GPU_freeze(2, (GPUFreeze_t *)&StatesC); + ret = SaveState(Text); + if (ret == 0) + sprintf(Text, _("*PCSX*: Saved State %d"), StatesC+1); + else sprintf(Text, _("*PCSX*: Error Saving State %d"), StatesC+1); + GPU_displayText(Text); + if (ShowPic) { ShowPic = 0; gpuShowPic(); } + break; + case XK_F2: + if (StatesC < 4) StatesC++; + else StatesC = 0; + GPU_freeze(2, (GPUFreeze_t *)&StatesC); + if (ShowPic) { ShowPic = 0; gpuShowPic(); } + break; + case XK_F3: + sprintf (Text, "sstates/%10.10s.%3.3d", CdromLabel, StatesC); + ret = LoadState(Text); + if (ret == 0) + sprintf(Text, _("*PCSX*: Loaded State %d"), StatesC+1); + else sprintf(Text, _("*PCSX*: Error Loading State %d"), StatesC+1); + GPU_displayText(Text); + break; + case XK_F4: + gpuShowPic(); + break; + case XK_F5: + Config.Sio ^= 0x1; + if (Config.Sio) + sprintf(Text, _("*PCSX*: Sio Irq Always Enabled")); + else sprintf(Text, _("*PCSX*: Sio Irq Not Always Enabled")); + GPU_displayText(Text); + break; + case XK_F6: + Config.Mdec ^= 0x1; + if (Config.Mdec) + sprintf(Text, _("*PCSX*: Black&White Mdecs Only Enabled")); + else sprintf(Text, _("*PCSX*: Black&White Mdecs Only Disabled")); + GPU_displayText(Text); + break; + case XK_F7: + Config.Xa ^= 0x1; + if (Config.Xa == 0) + sprintf (Text, _("*PCSX*: Xa Enabled")); + else sprintf (Text, _("*PCSX*: Xa Disabled")); + GPU_displayText(Text); + break; + case XK_F8: + GPU_makeSnapshot(); + break; + case XK_F9: + cdOpenCase = 1; + break; + case XK_F10: + cdOpenCase = 0; + break; + case XK_Escape: + ClosePlugins(); + UpdateMenuSlots(); + if (!UseGui) OnFile_Exit(); + RunGui(); + break; + default: + GPU_keypressed(key); + if (Config.UseNet) NET_keypressed(key); + }*/ +} + +long PAD1__open(void) { + return PAD1_open(&gpuDisp); +} + +long PAD2__open(void) { + return PAD2_open(&gpuDisp); +} + +void OnFile_Exit(); + +void SignalExit(int sig) { + ClosePlugins(); + OnFile_Exit(); +} + +void SPUirq(void); + +int NetOpened = 0; + +#define PARSEPATH(dst, src) \ + ptr = src + strlen(src); \ + while (*ptr != '\\' && ptr != src) ptr--; \ + if (ptr != src) { \ + strcpy(dst, ptr+1); \ + } + +int _OpenPlugins() { + static char path[1024]; + CFURLRef pathUrl; + int ret; + + //signal(SIGINT, SignalExit); + //signal(SIGPIPE, SignalExit); + + GPU_clearDynarec(clearDynarec); + + pathUrl = CFBundleCopyResourceURL(CFBundleGetMainBundle(), CFSTR("gpuPeopsSoftX.cfg"), NULL, NULL); + if (pathUrl) + CFURLGetFileSystemRepresentation(pathUrl, true, path, 1024); + + ret = CDR_open(); + if (ret < 0) { SysMessage(_("Error Opening CDR Plugin")); return -1; } + ret = SPU_open(); + if (ret < 0) { SysMessage(_("Error Opening SPU Plugin")); return -1; } + SPU_registerCallback(SPUirq); + ret = GPU_open(&gpuDisp, "PCSX", /*pathUrl ? path :*/ NULL); + if (ret < 0) { SysMessage(_("Error Opening GPU Plugin")); return -1; } + ret = PAD1_open(&gpuDisp); + if (ret < 0) { SysMessage(_("Error Opening PAD1 Plugin")); return -1; } + ret = PAD2_open(&gpuDisp); + if (ret < 0) { SysMessage(_("Error Opening PAD2 Plugin")); return -1; } + +/* if (Config.UseNet && NetOpened == 0) { + netInfo info; + char path[256]; + + strcpy(info.EmuName, "PCSX v" PCSX_VERSION); + strncpy(info.CdromID, CdromId, 9); + strncpy(info.CdromLabel, CdromLabel, 9); + info.psxMem = psxM; + info.GPU_showScreenPic = GPU_showScreenPic; + info.GPU_displayText = GPU_displayText; + info.GPU_showScreenPic = GPU_showScreenPic; + info.PAD_setSensitive = PAD1_setSensitive; + sprintf(path, "%s%s", Config.BiosDir, Config.Bios); + strcpy(info.BIOSpath, path); + strcpy(info.MCD1path, Config.Mcd1); + strcpy(info.MCD2path, Config.Mcd2); + sprintf(path, "%s%s", Config.PluginsDir, Config.Gpu); + strcpy(info.GPUpath, path); + sprintf(path, "%s%s", Config.PluginsDir, Config.Spu); + strcpy(info.SPUpath, path); + sprintf(path, "%s%s", Config.PluginsDir, Config.Cdr); + strcpy(info.CDRpath, path); + NET_setInfo(&info); + + ret = NET_open(&gpuDisp); + if (ret < 0) { + if (ret == -2) { + // -2 is returned when something in the info + // changed and needs to be synced + char *ptr; + + PARSEPATH(Config.Bios, info.BIOSpath); + PARSEPATH(Config.Gpu, info.GPUpath); + PARSEPATH(Config.Spu, info.SPUpath); + PARSEPATH(Config.Cdr, info.CDRpath); + + strcpy(Config.Mcd1, info.MCD1path); + strcpy(Config.Mcd2, info.MCD2path); + return -2; + } else { + Config.UseNet = 0; + } + } else { + if (NET_queryPlayer() == 1) { + if (SendPcsxInfo() == -1) Config.UseNet = 0; + } else { + if (RecvPcsxInfo() == -1) Config.UseNet = 0; + } + } + NetOpened = 1; + } else if (Config.UseNet) { + NET_resume(); + } +*/ + return 0; +} + +int OpenPlugins() { + int ret; + + while ((ret = _OpenPlugins()) == -2) { + ReleasePlugins(); + LoadMcds(Config.Mcd1, Config.Mcd2); + if (LoadPlugins() == -1) return -1; + } + return ret; +} + +void ClosePlugins() { + int ret; + + //signal(SIGINT, SIG_DFL); + //signal(SIGPIPE, SIG_DFL); + ret = CDR_close(); + if (ret < 0) { SysMessage(_("Error Closing CDR Plugin")); return; } + ret = SPU_close(); + if (ret < 0) { SysMessage(_("Error Closing SPU Plugin")); return; } + ret = PAD1_close(); + if (ret < 0) { SysMessage(_("Error Closing PAD1 Plugin")); return; } + ret = PAD2_close(); + if (ret < 0) { SysMessage(_("Error Closing PAD2 Plugin")); return; } + ret = GPU_close(); + if (ret < 0) { SysMessage(_("Error Closing GPU Plugin")); return; } + + /*if (Config.UseNet) { + NET_pause(); + }*/ +} + +void ResetPlugins() { + int ret; + + CDR_shutdown(); + GPU_shutdown(); + SPU_shutdown(); + PAD1_shutdown(); + PAD2_shutdown(); + //if (Config.UseNet) NET_shutdown(); + + ret = CDR_init(); + if (ret < 0) { SysMessage(_("CDRinit error: %d"), ret); return; } + ret = GPU_init(); + if (ret < 0) { SysMessage(_("GPUinit error: %d"), ret); return; } + ret = SPU_init(); + if (ret < 0) { SysMessage(_("SPUinit error: %d"), ret); return; } + ret = PAD1_init(1); + if (ret < 0) { SysMessage(_("PAD1init error: %d"), ret); return; } + ret = PAD2_init(2); + if (ret < 0) { SysMessage(_("PAD2init error: %d"), ret); return; } + /*if (Config.UseNet) { + ret = NET_init(); + if (ret < 0) { SysMessage(_("NETinit error: %d"), ret); return; } + }*/ + + NetOpened = 0; +} + diff --git a/macosx/PluginController.h b/macosx/PluginController.h new file mode 100644 index 00000000..e04f1525 --- /dev/null +++ b/macosx/PluginController.h @@ -0,0 +1,22 @@ +/* PluginController */ + +#import <Cocoa/Cocoa.h> +#import "PluginList.h" + +@interface PluginController : NSObject +{ + IBOutlet NSButton *aboutButton; + IBOutlet NSButton *configureButton; + IBOutlet NSPopUpButton *pluginMenu; + + int pluginType; + NSArray *plugins; + NSString *defaultKey; +} +- (IBAction)doAbout:(id)sender; +- (IBAction)doConfigure:(id)sender; +- (IBAction)selectPlugin:(id)sender; + +- (void)setPluginsTo:(NSArray *)list withType:(int)type; + +@end diff --git a/macosx/PluginController.m b/macosx/PluginController.m new file mode 100644 index 00000000..958cad3a --- /dev/null +++ b/macosx/PluginController.m @@ -0,0 +1,80 @@ +#import "PluginController.h" +#import "PcsxPlugin.h" + +@implementation PluginController + +- (IBAction)doAbout:(id)sender +{ + PcsxPlugin *plugin = [plugins objectAtIndex:[pluginMenu indexOfSelectedItem]]; + [plugin aboutAs:pluginType]; +} + +- (IBAction)doConfigure:(id)sender +{ + PcsxPlugin *plugin = [plugins objectAtIndex:[pluginMenu indexOfSelectedItem]]; + + [plugin configureAs:pluginType]; +} + +- (IBAction)selectPlugin:(id)sender +{ + if (sender==pluginMenu) { + int index = [pluginMenu indexOfSelectedItem]; + if (index != -1) { + PcsxPlugin *plugin = [plugins objectAtIndex:index]; + + if (![[PluginList list] setActivePlugin:plugin forType:pluginType]) { + /* plugin won't initialize */ + } + + // write selection to defaults + [[NSUserDefaults standardUserDefaults] setObject:[plugin path] forKey:defaultKey]; + + // set button states + [aboutButton setEnabled:[plugin hasAboutAs:pluginType]]; + [configureButton setEnabled:[plugin hasConfigureAs:pluginType]]; + } else { + // set button states + [aboutButton setEnabled:NO]; + [configureButton setEnabled:NO]; + } + } +} + +// must be called before anything else +- (void)setPluginsTo:(NSArray *)list withType:(int)type +{ + NSString *sel; + int i; + + // remember the list + pluginType = type; + plugins = [list retain]; + defaultKey = [[PcsxPlugin getDefaultKeyForType:pluginType] retain]; + + // clear the previous menu items + [pluginMenu removeAllItems]; + + // load the currently selected plugin + sel = [[NSUserDefaults standardUserDefaults] stringForKey:defaultKey]; + + // add the menu entries + for (i=0; i<[plugins count]; i++) { + [pluginMenu addItemWithTitle:[[plugins objectAtIndex:i] description]]; + + // make sure the currently selected is set as such + if ([sel isEqualToString:[[plugins objectAtIndex:i] path]]) { + [pluginMenu selectItemAtIndex:i]; + } + } + + [self selectPlugin:pluginMenu]; +} + +- (void)dealloc +{ + if (plugins) [plugins release]; + if (defaultKey) [defaultKey release]; +} + +@end diff --git a/macosx/PluginList.h b/macosx/PluginList.h new file mode 100644 index 00000000..fecc4b13 --- /dev/null +++ b/macosx/PluginList.h @@ -0,0 +1,36 @@ +// +// PluginList.h +// Pcsx +// +// Created by Gil Pedersen on Sun Sep 21 2003. +// Copyright (c) 2003 __MyCompanyName__. All rights reserved. +// + +#import <Cocoa/Cocoa.h> +#import "PcsxPlugin.h" + +//extern NSMutableArray *plugins; + +@interface PluginList : NSObject { + + @private + NSMutableArray *pluginList; + + PcsxPlugin *activeGpuPlugin; + PcsxPlugin *activeSpuPlugin; + PcsxPlugin *activeCdrPlugin; + PcsxPlugin *activePadPlugin; + + BOOL missingPlugins; +} + ++ (PluginList *)list; + +- (void)refreshPlugins; +- (NSArray *)pluginsForType:(int)typeMask; +- (BOOL)hasPluginAtPath:(NSString *)path; +- (BOOL)configured; +- (PcsxPlugin *)activePluginForType:(int)type; +- (BOOL)setActivePlugin:(PcsxPlugin *)plugin forType:(int)type; + +@end diff --git a/macosx/PluginList.m b/macosx/PluginList.m new file mode 100644 index 00000000..62c877c1 --- /dev/null +++ b/macosx/PluginList.m @@ -0,0 +1,324 @@ +// +// PluginList.m +// Pcsx +// +// Created by Gil Pedersen on Sun Sep 21 2003. +// Copyright (c) 2003 __MyCompanyName__. All rights reserved. +// + +#import "EmuThread.h" +#import "PluginList.h" +#import "PcsxPlugin.h" +#include "psxcommon.h" +#include "plugins.h" + +//NSMutableArray *plugins; +static PluginList *sPluginList = nil; +const static int typeList[4] = {PSE_LT_GPU, PSE_LT_SPU, PSE_LT_CDR, PSE_LT_PAD}; + +@implementation PluginList + ++ (PluginList *)list +{ + return sPluginList; +} + +#if 0 ++ (void)loadPlugins +{ + NSDirectoryEnumerator *dirEnum; + NSString *pname, *dir; + + // Make sure we only load the plugins once + if (plugins != nil) + return; + + plugins = [[NSMutableArray alloc] initWithCapacity: 20]; + + dir = [NSString stringWithCString:Config.PluginsDir]; + dirEnum = [[NSFileManager defaultManager] enumeratorAtPath:dir]; + + while (pname = [dirEnum nextObject]) { + if ([[pname pathExtension] isEqualToString:@"psxplugin"] || + [[pname pathExtension] isEqualToString:@"so"]) { + [dirEnum skipDescendents]; /* don't enumerate this + directory */ + + PcsxPlugin *plugin = [[PcsxPlugin alloc] initWithPath:pname]; + if (plugin != nil) { + [plugins addObject:plugin]; + } + } + } +} + +- (id)initWithType:(int)typeMask +{ + unsigned int i; + + self = [super init]; + + [PluginList loadPlugins]; + list = [[NSMutableArray alloc] initWithCapacity: 5]; + + type = typeMask; + for (i=0; i<[plugins count]; i++) { + PcsxPlugin *plugin = [plugins objectAtIndex:i]; + if ([plugin getType] == type) { + [list addObject:plugin]; + } + } + + return self; +} + +- (int)numberOfItems +{ + return [list count]; +} + +- (id)objectAtIndex:(unsigned)index +{ + return [list objectAtIndex:index]; +} +#endif + + + +- (id)init +{ + int i; + + if (!(self = [super init])) + return nil; + + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + pluginList = [[NSMutableArray alloc] initWithCapacity:20]; + + activeGpuPlugin = activeSpuPlugin = activeCdrPlugin = activePadPlugin = nil; + + missingPlugins = NO; + for (i=0; i<sizeof(*typeList); i++) { + NSString *path = [defaults stringForKey:[PcsxPlugin getDefaultKeyForType:typeList[i]]]; + if (nil == path) { + missingPlugins = YES; + continue; + } + if ([path isEqualToString:@"Disabled"]) + continue; + + if (![self hasPluginAtPath:path]) { + PcsxPlugin *plugin = [[PcsxPlugin alloc] initWithPath:path]; + if (plugin) { + [pluginList addObject:plugin]; + if (![self setActivePlugin:plugin forType:typeList[i]]) + missingPlugins = YES; + } else { + missingPlugins = YES; + } + } + } + + if (missingPlugins) { + [self refreshPlugins]; + } + + sPluginList = self; + + return self; +} + +- (void)dealloc +{ + [activeGpuPlugin release]; + [activeSpuPlugin release]; + [activeCdrPlugin release]; + [activePadPlugin release]; + + [pluginList release]; + + if (sPluginList == self) + sPluginList = nil; + + [super dealloc]; +} + +- (void)refreshPlugins +{ + NSDirectoryEnumerator *dirEnum; + NSString *pname, *dir; + int i; + + // verify that the ones that are in list still works + for (i=0; i<[pluginList count]; i++) { + if (![[pluginList objectAtIndex:i] verifyOK]) { + [pluginList removeObjectAtIndex:i]; i--; + } + } + + // look for new ones in the plugin directory + dir = [NSString stringWithCString:Config.PluginsDir]; + dirEnum = [[NSFileManager defaultManager] enumeratorAtPath:dir]; + + while (pname = [dirEnum nextObject]) { + if ([[pname pathExtension] isEqualToString:@"psxplugin"] || + [[pname pathExtension] isEqualToString:@"so"]) { + [dirEnum skipDescendents]; /* don't enumerate this + directory */ + + if (![self hasPluginAtPath:pname]) { + PcsxPlugin *plugin = [[PcsxPlugin alloc] initWithPath:pname]; + if (plugin != nil) { + [pluginList addObject:plugin]; + } + } + } + } + + // check the we have the needed plugins + missingPlugins = NO; + for (i=0; i<sizeof(*typeList); i++) { + PcsxPlugin *plugin = [self activePluginForType:typeList[i]]; + if (nil == plugin) { + NSArray *list = [self pluginsForType:typeList[i]]; + int j; + + for (j=0; j<[list count]; j++) { + if ([self setActivePlugin:[list objectAtIndex:j] forType:typeList[i]]) + break; + } + if (j == [list count]) + missingPlugins = YES; + } + } +} + +- (NSArray *)pluginsForType:(int)typeMask +{ + NSMutableArray *types = [NSMutableArray array]; + int i; + + for (i=0; i<[pluginList count]; i++) { + PcsxPlugin *plugin = [pluginList objectAtIndex:i]; + + if ([plugin getType] & typeMask) { + [types addObject:plugin]; + } + } + + return types; +} + +- (BOOL)hasPluginAtPath:(NSString *)path +{ + if (nil == path) + return NO; + + int i; + for (i=0; i<[pluginList count]; i++) { + if ([[[pluginList objectAtIndex:i] path] isEqualToString:path]) + return YES; + } + + return NO; +} + +// returns if all the required plugins are available +- (BOOL)configured +{ + return !missingPlugins; +} + +- (BOOL)doInitPlugins +{ + BOOL bad = NO; + + if ([activeGpuPlugin initAs:PSE_LT_GPU] != 0) bad = YES; + if ([activeSpuPlugin initAs:PSE_LT_SPU] != 0) bad = YES; + if ([activeCdrPlugin initAs:PSE_LT_CDR] != 0) bad = YES; + if ([activePadPlugin initAs:PSE_LT_PAD] != 0) bad = YES; + + return !bad; +} + +- (PcsxPlugin *)activePluginForType:(int)type +{ + switch (type) { + case PSE_LT_GPU: return activeGpuPlugin; + case PSE_LT_CDR: return activeCdrPlugin; + case PSE_LT_SPU: return activeSpuPlugin; + case PSE_LT_PAD: return activePadPlugin; +// case PSE_LT_NET: return activeNetPlugin; + } + + return nil; +} + +- (BOOL)setActivePlugin:(PcsxPlugin *)plugin forType:(int)type +{ + PcsxPlugin **pluginPtr; + switch (type) { + case PSE_LT_GPU: pluginPtr = &activeGpuPlugin; break; + case PSE_LT_CDR: pluginPtr = &activeCdrPlugin; break; + case PSE_LT_SPU: pluginPtr = &activeSpuPlugin; break; + case PSE_LT_PAD: pluginPtr = &activePadPlugin; break; +// case PSE_LT_NET: pluginPtr = &activeNetPlugin; break; + default: return NO; + } + + if (plugin == *pluginPtr) + return YES; + + BOOL active = (*pluginPtr) && [EmuThread active]; + BOOL wasPaused = NO; + if (active) { + // TODO: temporary freeze? + wasPaused = [EmuThread pauseSafe]; + ClosePlugins(); + ReleasePlugins(); + } + + // stop the old plugin and start the new one + if (*pluginPtr) { + [*pluginPtr shutdownAs:type]; + + [*pluginPtr release]; + } + *pluginPtr = [plugin retain]; + if (*pluginPtr) { + if ([*pluginPtr initAs:type] != 0) { + [*pluginPtr release]; + *pluginPtr = nil; + } + } + + // write path to the correct config entry + const char *str; + if (*pluginPtr != nil) { + str = [[plugin path] fileSystemRepresentation]; + if (str == nil) { + str = "Invalid Plugin"; + } + } else { + str = "Invalid Plugin"; + } + + char **dst = [PcsxPlugin getConfigEntriesForType:type]; + while (*dst) { + strncpy(*dst, str, 255); + dst++; + } + + if (active) { + LoadPlugins(); + OpenPlugins(); + + if (!wasPaused) { + [EmuThread resume]; + } + } + + return *pluginPtr != nil; +} + +@end diff --git a/macosx/config.h b/macosx/config.h new file mode 100644 index 00000000..483c79b1 --- /dev/null +++ b/macosx/config.h @@ -0,0 +1,31 @@ +// +// Copyright (c) 2008, Wei Mingzhi. All rights reserved. +// +// Use, redistribution and modification of this code is unrestricted as long as this +// notice is preserved. +// + +#ifndef CONFIG_H +#define CONFIG_H + +#ifndef MAXPATHLEN +#define MAXPATHLEN 256 +#endif + +#ifndef PACKAGE_VERSION +#define PACKAGE_VERSION "1.9" +#endif + +#ifndef PREFIX +#define PREFIX "./" +#endif + +#ifndef inline +#ifdef _DEBUG +#define inline /* */ +#else +#define inline __inline__ +#endif +#endif + +#endif diff --git a/macosx/icons/PCSX.icns b/macosx/icons/PCSX.icns Binary files differnew file mode 100644 index 00000000..3f57a340 --- /dev/null +++ b/macosx/icons/PCSX.icns diff --git a/macosx/icons/pcsxfreeze.icns b/macosx/icons/pcsxfreeze.icns Binary files differnew file mode 100644 index 00000000..bcb21e60 --- /dev/null +++ b/macosx/icons/pcsxfreeze.icns diff --git a/macosx/icons/pcsxmemcard.icns b/macosx/icons/pcsxmemcard.icns Binary files differnew file mode 100644 index 00000000..f3e47b9b --- /dev/null +++ b/macosx/icons/pcsxmemcard.icns diff --git a/macosx/icons/psxbios.icns b/macosx/icons/psxbios.icns Binary files differnew file mode 100644 index 00000000..47baf9fe --- /dev/null +++ b/macosx/icons/psxbios.icns diff --git a/macosx/icons/psxplugin.icns b/macosx/icons/psxplugin.icns Binary files differnew file mode 100644 index 00000000..01a3c933 --- /dev/null +++ b/macosx/icons/psxplugin.icns diff --git a/macosx/main.m b/macosx/main.m new file mode 100644 index 00000000..472ba4a0 --- /dev/null +++ b/macosx/main.m @@ -0,0 +1,250 @@ +// +// main.m +// +// Created by Gil Pedersen on Fri Jun 06 2003. +// Copyright (c) 2003 SoftWorkz. All rights reserved. +// + +#import <Cocoa/Cocoa.h> +#import <Carbon/Carbon.h> +#import "EmuThread.h" +#include <dlfcn.h> +//#import <sys/param.h> +#import <unistd.h> +#include "psxcommon.h" +#include "sio.h" + +int sysInited = 0; +long LoadCdBios; + +//#define EMU_LOG + +int main(int argc, const char *argv[]) +{ + if ( argc >= 2 && strncmp (argv[1], "-psn", 4) == 0 ) { + char parentdir[MAXPATHLEN]; + char *c; + + strncpy ( parentdir, argv[0], sizeof(parentdir) ); + c = (char*) parentdir; + + while (*c != '\0') /* go to end */ + c++; + + while (*c != '/') /* back up to parent */ + c--; + + *c++ = '\0'; /* cut off last part (binary name) */ + + assert ( chdir (parentdir) == 0 ); /* chdir to the binary app's parent */ + assert ( chdir ("../../../") == 0 ); /* chdir to the .app's parent */ + } + + // TODO: make this redundant + strcpy(Config.BiosDir, "Bios/"); + + // Setup the X11 window + if (getenv("DISPLAY") == NULL) + setenv("DISPLAY", ":0.0", 0); // Default to first local display + + return NSApplicationMain(argc, argv); +} + + +int SysInit() +{ + if (sysInited) + return 0; + +#ifdef GTE_DUMP + gteLog = fopen("gteLog.txt","wb"); + setvbuf(gteLog, NULL, _IONBF, 0); +#endif + +#ifdef EMU_LOG +#ifndef LOG_STDOUT + emuLog = fopen("emuLog.txt","wb"); +#else + emuLog = stdout; +#endif + setvbuf(emuLog, NULL, _IONBF, 0); +#endif + + if (psxInit() != 0) + return -1; + + while (LoadPlugins() == -1) { + return -1; + //CancelQuit = 1; + //ConfigurePlugins(); + //CancelQuit = 0; + } + + LoadMcds(Config.Mcd1, Config.Mcd2); + + sysInited = 1; + + return 0; +} + +void SysReset() { + [EmuThread resetNow]; + //psxReset(); +} + +void SysPrintf(char *fmt, ...) +{ + va_list list; + char msg[512]; + + va_start(list, fmt); + vsprintf(msg, fmt, list); + va_end(list); + + if (Config.PsxOut) printf ("%s", msg); +#ifdef EMU_LOG +#ifndef LOG_STDOUT + fprintf(emuLog, "%s", msg); +#endif +#endif +} + +void SysMessage(char *fmt, ...) +{ + va_list list; + char msg[512]; + + NSString *locFmtString = NSLocalizedString([NSString stringWithCString:fmt], nil); + + va_start(list, fmt); + vsprintf(msg, [locFmtString lossyCString], list); + va_end(list); + + NSRunAlertPanel(NSLocalizedString(@"Error!", nil), + [NSString stringWithCString:msg], + nil, nil, nil); +} + +#if 1 +void *SysLoadLibrary(char *lib) { + NSBundle *bundle = [NSBundle bundleWithPath:[NSString stringWithCString:lib]]; + if (bundle != nil) { + return dlopen([[bundle executablePath] fileSystemRepresentation], RTLD_LAZY /*RTLD_NOW*/); + } + return dlopen(lib, RTLD_LAZY); +} + +void *SysLoadSym(void *lib, char *sym) { + return dlsym(lib, sym); +} + +const char *SysLibError() { + return dlerror(); +} + +void SysCloseLibrary(void *lib) { + //dlclose(lib); +} +#else +static int LoadResult = 0; +void *SysLoadLibrary(char *lib) +{ + CFBundleRef myBundle; + CFURLRef bundleURL; + CFStringRef path; + + path = CFStringCreateWithCString(kCFAllocatorDefault, lib, CFStringGetSystemEncoding()); + if (!path) + goto error; + + bundleURL = CFURLCreateWithFileSystemPath( + kCFAllocatorDefault, + path, + kCFURLPOSIXPathStyle, + true ); + if (!bundleURL) + goto error; + + myBundle = CFBundleCreate( kCFAllocatorDefault, bundleURL ); + + if (!CFBundleLoadExecutable(myBundle)) + goto error; + +good: + if (path) CFRelease(path); + if (bundleURL) CFRelease(bundleURL); + + return myBundle; + +error: + if (LoadResult == 0) LoadResult = -1; + myBundle = NULL; + goto good; +} + +void *SysLoadSym(void *lib, char *sym) +{ + CFStringRef funcName; + void *func; + + funcName = CFStringCreateWithCString(kCFAllocatorDefault, sym, CFStringGetSystemEncoding()); + func = CFBundleGetFunctionPointerForName((CFBundleRef)lib, funcName); + if (func == nil) { + LoadResult = -2; + } + + CFRelease(funcName); + return func; +} + +const char *SysLibError() +{ + char *result = NULL; + + if (LoadResult != 0) + result = "Error loading code"; + + LoadResult = 0; + return result; +} +void SysCloseLibrary(void *lib) +{ + if (lib) { + CFBundleUnloadExecutable((CFBundleRef)lib); + CFRelease((CFBundleRef)lib); + } +} +#endif + +void PADhandleKey(int key); + +// Called periodically from the emu thread +void SysUpdate() +{ + UpdateSystemActivity(UsrActivity); + + PADhandleKey(PAD1_keypressed()); + //PADhandleKey(PAD2_keypressed()); + + [emuThread handleEvents]; +} + +void SysRunGui() // Returns to the Gui +{ + +} +void SysClose() // Close mem and plugins +{ + psxShutdown(); + ReleasePlugins(); + + if (emuLog != NULL) fclose(emuLog); + + sysInited = false; +} + +void OnFile_Exit() +{ + SysClose(); + exit(0); +}
\ No newline at end of file diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo Binary files differindex f1f2e8c6..dbc6a4ee 100755 --- a/po/zh_CN.gmo +++ b/po/zh_CN.gmo diff --git a/po/zh_CN.po b/po/zh_CN.po index 2623d688..8ea7d798 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -12,7 +12,7 @@ msgstr "" "Last-Translator: Wei Mingzhi <whistler@openoffice.org>\n" "Language-Team: Simplified Chinese <whistler@openoffice.org>\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" +"Content-Type: text/plain; charset=gbk\n" "Content-Transfer-Encoding: 8bit\n" #: ../win32/gui/AboutDlg.c:26 @@ -25,13 +25,13 @@ msgid "" "ex-coders: Nocomp, Pete Bernett, nik3d\n" "Webmaster: AkumaX" msgstr "" -"PCSX - 一个 PlayStation 模拟器\n" +"PCSX - һ PlayStation ģ\n" "\n" -"原作者:\n" -"主程序员: linuzappz\n" -"辅助程序员: shadow\n" -"前程序员: Nocomp, Pete Bernett, nik3d\n" -"网络管理: AkumaX" +"ԭ:\n" +"Ա: linuzappz\n" +"Ա: shadow\n" +"ǰԱ: Nocomp, Pete Bernett, nik3d\n" +": AkumaX" #: ../win32/gui/AboutDlg.c:35 msgid "" @@ -44,18 +44,18 @@ msgid "" "\n" "http://www.codeplex.com/pcsxr" msgstr "" -"PCSX-df 开发者:\n" +"PCSX-df :\n" "Ryan Schultz, Andrew Burton, Stephen Chao,\n" "Marcus Comstedt, Stefan Sikora\n" "\n" -"PCSX Reloaded 开发者:\n" +"PCSX Reloaded :\n" "Wei Mingzhi\n" "\n" "http://www.codeplex.com/pcsxr" #: ../win32/gui/AboutDlg.c:46 msgid "About" -msgstr "关于 PCSX" +msgstr " PCSX" #: ../win32/gui/AboutDlg.c:48 #: ../win32/gui/AboutDlg.c:52 @@ -65,23 +65,23 @@ msgstr "关于 PCSX" #: ../win32/gui/WndMain.c:1142 #: ../plugins/peopsxgl/gpucfg/interface.c:129 msgid "OK" -msgstr "确定" +msgstr "ȷ" #: ../win32/gui/AboutDlg.c:49 msgid "PCSX EMU\n" -msgstr "PCSX 模拟器\n" +msgstr "PCSX ģ\n" #: ../win32/gui/ConfigurePlugins.c:385 msgid "This plugin reports that should work correctly" -msgstr "此插件报告其可正常工作。" +msgstr "˲" #: ../win32/gui/ConfigurePlugins.c:386 msgid "This plugin reports that should not work correctly" -msgstr "此插件报告其不可正常工作。" +msgstr "˲䲻" #: ../win32/gui/ConfigurePlugins.c:460 msgid "Configuration" -msgstr "配置" +msgstr "" #: ../win32/gui/ConfigurePlugins.c:463 #: ../win32/gui/ConfigurePlugins.c:594 @@ -89,23 +89,23 @@ msgstr "配置" #: ../win32/gui/WndMain.c:1143 #: ../plugins/peopsxgl/gpucfg/interface.c:337 msgid "Cancel" -msgstr "取消" +msgstr "ȡ" #: ../win32/gui/ConfigurePlugins.c:464 msgid "Graphics" -msgstr "图像" +msgstr "ͼ" #: ../win32/gui/ConfigurePlugins.c:465 msgid "First Controller" -msgstr "主控制器" +msgstr "" #: ../win32/gui/ConfigurePlugins.c:466 msgid "Second Controller" -msgstr "辅控制器" +msgstr "" #: ../win32/gui/ConfigurePlugins.c:467 msgid "Sound" -msgstr "声音" +msgstr "" #: ../win32/gui/ConfigurePlugins.c:468 msgid "Cdrom" @@ -117,11 +117,11 @@ msgstr "BIOS" #: ../win32/gui/ConfigurePlugins.c:470 msgid "Set Bios Directory" -msgstr "设置 BIOS 目录" +msgstr " BIOS Ŀ¼" #: ../win32/gui/ConfigurePlugins.c:471 msgid "Set Plugins Directory" -msgstr "设置插件目录" +msgstr "òĿ¼" #: ../win32/gui/ConfigurePlugins.c:472 #: ../win32/gui/ConfigurePlugins.c:475 @@ -130,7 +130,7 @@ msgstr "设置插件目录" #: ../win32/gui/ConfigurePlugins.c:484 #: ../win32/gui/ConfigurePlugins.c:596 msgid "Configure..." -msgstr "配置..." +msgstr "..." #: ../win32/gui/ConfigurePlugins.c:473 #: ../win32/gui/ConfigurePlugins.c:476 @@ -139,7 +139,7 @@ msgstr "配置..." #: ../win32/gui/ConfigurePlugins.c:485 #: ../win32/gui/ConfigurePlugins.c:597 msgid "Test..." -msgstr "测试..." +msgstr "..." #: ../win32/gui/ConfigurePlugins.c:474 #: ../win32/gui/ConfigurePlugins.c:477 @@ -148,19 +148,19 @@ msgstr "测试..." #: ../win32/gui/ConfigurePlugins.c:486 #: ../win32/gui/ConfigurePlugins.c:598 msgid "About..." -msgstr "关于..." +msgstr "..." #: ../win32/gui/ConfigurePlugins.c:591 msgid "NetPlay Configuration" -msgstr "联网游戏配置" +msgstr "Ϸ" #: ../win32/gui/ConfigurePlugins.c:595 msgid "NetPlay" -msgstr "联网游戏" +msgstr "Ϸ" #: ../win32/gui/ConfigurePlugins.c:599 msgid "Note: The NetPlay Plugin Directory should be the same as the other Plugins." -msgstr "注意: 联网游戏插件应和其它插件放在同一目录中。" +msgstr "ע: ϷӦͬһĿ¼С" #: ../win32/gui/plugin.c:90 #: ../win32/gui/WndMain.c:235 @@ -226,162 +226,162 @@ msgstr "*PCSX*: CdRom Case Closed" #: ../win32/gui/plugin.c:177 msgid "Connecting..." -msgstr "正在连接..." +msgstr "..." #: ../win32/gui/plugin.c:179 #: ../win32/gui/plugin.c:186 #, c-format msgid "Please wait while connecting... %c\n" -msgstr "请稍候,正在连接... %c\n" +msgstr "Ժ... %c\n" #: ../win32/gui/plugin.c:216 msgid "Error Opening CDR Plugin" -msgstr "无法打开 CDR 插件" +msgstr " CDR " #: ../win32/gui/plugin.c:279 #, c-format msgid "Error Opening GPU Plugin (%d)" -msgstr "无法打开 GPU 插件 (%d)" +msgstr " GPU (%d)" #: ../win32/gui/plugin.c:281 #, c-format msgid "Error Opening SPU Plugin (%d)" -msgstr "无法打开 SPU 插件 (%d)" +msgstr " SPU (%d)" #: ../win32/gui/plugin.c:284 #, c-format msgid "Error Opening PAD1 Plugin (%d)" -msgstr "无法打开 PAD1 插件 (%d)" +msgstr " PAD1 (%d)" #: ../win32/gui/plugin.c:286 #, c-format msgid "Error Opening PAD2 Plugin (%d)" -msgstr "无法打开 PAD2 插件 (%d)" +msgstr " PAD2 (%d)" #: ../win32/gui/plugin.c:309 msgid "Error Closing CDR Plugin" -msgstr "无法关闭 CD-ROM 插件 (%d)" +msgstr "ر CD-ROM (%d)" #: ../win32/gui/plugin.c:311 msgid "Error Closing GPU Plugin" -msgstr "无法关闭 GPU 插件" +msgstr "ر GPU " #: ../win32/gui/plugin.c:313 msgid "Error Closing SPU Plugin" -msgstr "无法关闭 SPU 插件" +msgstr "ر SPU " #: ../win32/gui/plugin.c:315 msgid "Error Closing PAD1 Plugin" -msgstr "无法关闭 PAD1 插件" +msgstr "ر PAD1 " #: ../win32/gui/plugin.c:317 msgid "Error Closing PAD2 Plugin" -msgstr "无法关闭 PAD2 插件!" +msgstr "ر PAD2 !" #: ../win32/gui/plugin.c:335 #, c-format msgid "CDRinit error: %d" -msgstr "CDRinit 错误: %d" +msgstr "CDRinit : %d" #: ../win32/gui/plugin.c:337 #, c-format msgid "GPUinit error: %d" -msgstr "GPUinit 错误: %d" +msgstr "GPUinit : %d" #: ../win32/gui/plugin.c:339 #, c-format msgid "SPUinit error: %d" -msgstr "SPUinit 错误: %d" +msgstr "SPUinit : %d" #: ../win32/gui/plugin.c:341 #, c-format msgid "PAD1init error: %d" -msgstr "PAD1init 错误: %d" +msgstr "PAD1init : %d" #: ../win32/gui/plugin.c:343 #, c-format msgid "PAD2init error: %d" -msgstr "PAD2init 错误: %d" +msgstr "PAD2init : %d" #: ../win32/gui/plugin.c:346 #, c-format msgid "NETinit error: %d" -msgstr "NETinit 错误: %d" +msgstr "NETinit : %d" #: ../win32/gui/WndMain.c:74 msgid "Arabic" -msgstr "阿拉伯语" +msgstr "" #: ../win32/gui/WndMain.c:75 msgid "Catalan" -msgstr "加泰隆尼亚语" +msgstr "̩¡" #: ../win32/gui/WndMain.c:76 msgid "German" -msgstr "德语" +msgstr "" #: ../win32/gui/WndMain.c:77 msgid "Greek" -msgstr "希腊语" +msgstr "ϣ" #: ../win32/gui/WndMain.c:78 #: ../win32/gui/WndMain.c:1471 #: ../win32/gui/WndMain.c:1473 msgid "English" -msgstr "英语" +msgstr "Ӣ" #: ../win32/gui/WndMain.c:79 msgid "Spanish" -msgstr "西班牙语" +msgstr "" #: ../win32/gui/WndMain.c:80 msgid "French" -msgstr "法语" +msgstr "" #: ../win32/gui/WndMain.c:81 msgid "Italian" -msgstr "意大利语" +msgstr "" #: ../win32/gui/WndMain.c:82 msgid "Portuguese" -msgstr "葡萄牙语" +msgstr "" #: ../win32/gui/WndMain.c:83 msgid "Romanian" -msgstr "罗马尼亚语" +msgstr "" #: ../win32/gui/WndMain.c:84 msgid "Russian" -msgstr "俄语" +msgstr "" #: ../win32/gui/WndMain.c:85 msgid "Simplified Chinese" -msgstr "简体中文" +msgstr "" #: ../win32/gui/WndMain.c:86 msgid "Traditional Chinese" -msgstr "繁体中文" +msgstr "" #: ../win32/gui/WndMain.c:87 msgid "Japanese" -msgstr "日语" +msgstr "" #: ../win32/gui/WndMain.c:88 msgid "Korean" -msgstr "朝鲜语" +msgstr "" #: ../win32/gui/WndMain.c:129 msgid "Pcsx needs to be configured" -msgstr "PCSX 需要被配置。" +msgstr "PCSX Ҫá" #: ../win32/gui/WndMain.c:133 msgid "Pcsx now will quit, restart it" -msgstr "PCSX 将退出,请重新启动它。" +msgstr "PCSX ˳" #: ../win32/gui/WndMain.c:253 #: ../win32/gui/WndMain.c:305 msgid "PCSX State Format" -msgstr "PCSX 存档格式" +msgstr "PCSX 浵ʽ" #: ../win32/gui/WndMain.c:280 #, c-format @@ -408,36 +408,36 @@ msgstr "*PCSX*: Error Saving State %s" #: ../gui/Gtk2Gui.c:552 #: ../gui/Gtk2Gui.c:675 msgid "The CD does not appear to be a valid Playstation CD" -msgstr "此光盘不是一张合法的 PlayStation 光盘。" +msgstr "˹̲һźϷ PlayStation ̡" #: ../win32/gui/WndMain.c:388 #: ../win32/gui/WndMain.c:437 #: ../gui/Gtk2Gui.c:560 #: ../gui/Gtk2Gui.c:683 msgid "Could not load CD-ROM!" -msgstr "无法加载光盘!" +msgstr "ع!" #: ../win32/gui/WndMain.c:398 msgid "Running BIOS is not supported with Internal HLE Bios." -msgstr "内部 HLE BIOS 不支持直接运行。" +msgstr "ڲ HLE BIOS ֱ֧С" #: ../win32/gui/WndMain.c:604 #: ../gui/Gtk2Gui.c:1046 msgid "Title" -msgstr "标题" +msgstr "" #: ../win32/gui/WndMain.c:610 #: ../gui/Gtk2Gui.c:1052 msgid "Status" -msgstr "状态" +msgstr "״̬" #: ../win32/gui/WndMain.c:616 msgid "Game ID" -msgstr "游戏 ID" +msgstr "Ϸ ID" #: ../win32/gui/WndMain.c:622 msgid "Game" -msgstr "游戏" +msgstr "Ϸ" #: ../win32/gui/WndMain.c:796 msgid "mid link block" @@ -450,267 +450,267 @@ msgstr "terminiting link block" #: ../win32/gui/WndMain.c:807 #: ../gui/Gtk2Gui.c:1126 msgid "Deleted" -msgstr "已删除" +msgstr "ɾ" #: ../win32/gui/WndMain.c:808 #: ../win32/gui/WndMain.c:811 #: ../gui/Gtk2Gui.c:1128 #: ../gui/Gtk2Gui.c:1132 msgid "Free" -msgstr "空闲" +msgstr "" #: ../win32/gui/WndMain.c:810 #: ../gui/Gtk2Gui.c:1130 msgid "Used" -msgstr "已使用" +msgstr "ʹ" #: ../win32/gui/WndMain.c:904 msgid "Memcard Manager" -msgstr "记忆卡管理器" +msgstr "俨" #: ../win32/gui/WndMain.c:908 #: ../win32/gui/WndMain.c:911 msgid "Select Mcd" -msgstr "选择" +msgstr "ѡ" #: ../win32/gui/WndMain.c:909 #: ../win32/gui/WndMain.c:912 msgid "Format Mcd" -msgstr "格式化" +msgstr "ʽ" #: ../win32/gui/WndMain.c:910 #: ../win32/gui/WndMain.c:913 msgid "Reload Mcd" -msgstr "重新加载" +msgstr "¼" #: ../win32/gui/WndMain.c:914 msgid "-> Copy ->" -msgstr "-> 复制 ->" +msgstr "-> ->" #: ../win32/gui/WndMain.c:915 msgid "<- Copy <-" -msgstr "<- 复制 <-" +msgstr "<- <-" #: ../win32/gui/WndMain.c:916 msgid "Paste" -msgstr "粘贴" +msgstr "ճ" #: ../win32/gui/WndMain.c:917 msgid "<- Un/Delete" -msgstr "<- 删除/恢复" +msgstr "<- ɾ/ָ" #: ../win32/gui/WndMain.c:918 msgid "Un/Delete ->" -msgstr "删除/恢复 ->" +msgstr "ɾ/ָ ->" #: ../win32/gui/WndMain.c:920 msgid "Memory Card 1" -msgstr "记忆卡 1" +msgstr "俨 1" #: ../win32/gui/WndMain.c:921 msgid "Memory Card 2" -msgstr "记忆卡 2" +msgstr "俨 2" #: ../win32/gui/WndMain.c:976 msgid "Are you sure you want to paste this selection?" -msgstr "是否确认粘贴此选中内容?" +msgstr "Ƿȷճѡ?" #: ../win32/gui/WndMain.c:976 #: ../win32/gui/WndMain.c:1087 #: ../win32/gui/WndMain.c:1094 msgid "Confirmation" -msgstr "确认" +msgstr "ȷ" #: ../win32/gui/WndMain.c:1087 #: ../win32/gui/WndMain.c:1094 msgid "Are you sure you want to format this Memory Card?" -msgstr "是否确认格式化此记忆卡?" +msgstr "Ƿȷϸʽ˼俨?" #: ../win32/gui/WndMain.c:1140 msgid "Cpu Config" -msgstr "CPU 配置" +msgstr "CPU " #: ../win32/gui/WndMain.c:1145 msgid "Disable Xa Decoding" -msgstr "禁用 XA 解码" +msgstr " XA " #: ../win32/gui/WndMain.c:1146 msgid "Sio Irq Always Enabled" -msgstr "SIO IRQ 总是启用" +msgstr "SIO IRQ " #: ../win32/gui/WndMain.c:1147 msgid "Black && White Movies" -msgstr "黑白电影" +msgstr "ڰӰ" #: ../win32/gui/WndMain.c:1148 msgid "Disable Cd audio" -msgstr "禁用 CD 音频" +msgstr " CD Ƶ" #: ../win32/gui/WndMain.c:1149 #: ../data/pcsx.glade2:1321 msgid "Autodetect" -msgstr "自动检测" +msgstr "Զ" #: ../win32/gui/WndMain.c:1150 msgid "Enable Interpreter Cpu" -msgstr "启用解释执行 CPU" +msgstr "ýִ CPU" #: ../win32/gui/WndMain.c:1151 #: ../data/pcsx.glade2:1183 msgid "Enable Console Output" -msgstr "启用控制台输出" +msgstr "ÿ̨" #: ../win32/gui/WndMain.c:1152 msgid "Spu Irq Always Enabled" -msgstr "SPU IRQ 总是启用" +msgstr "SPU IRQ " #: ../win32/gui/WndMain.c:1153 #: ../data/pcsx.glade2:1267 msgid "Parasite Eve 2, Vandal Hearts 1/2 Fix" -msgstr "Parasite Eve 2, Vandal Hearts 1/2 修正" +msgstr "Parasite Eve 2, Vandal Hearts 1/2 " #: ../win32/gui/WndMain.c:1154 #: ../data/pcsx.glade2:1282 msgid "InuYasha Sengoku Battle Fix" -msgstr "InuYasha Sengoku 战斗修正" +msgstr "InuYasha Sengoku ս" #: ../win32/gui/WndMain.c:1156 #: ../plugins/dfcdrom/interface.c:193 msgid "Options" -msgstr "选项" +msgstr "ѡ" #: ../win32/gui/WndMain.c:1157 msgid "Psx System Type" -msgstr "Psx 系统类型" +msgstr "Psx ϵͳ" #: ../win32/gui/WndMain.c:1229 msgid "Psx Mcd Format (*.mcr;*.mc;*.mem;*.vgs;*.mcd;*.gme;*.ddf)" -msgstr "Psx 记忆卡格式 (*.mcr;*.mc;*.mem;*.vgs;*.mcd;*.gme;*.ddf)" +msgstr "Psx 俨ʽ (*.mcr;*.mc;*.mem;*.vgs;*.mcd;*.gme;*.ddf)" #: ../win32/gui/WndMain.c:1234 msgid "Psx Memory Card (*.mcr;*.mc)" -msgstr "Psx 记忆卡 (*.mcr;*.mc)" +msgstr "Psx 俨 (*.mcr;*.mc)" #: ../win32/gui/WndMain.c:1239 msgid "CVGS Memory Card (*.mem;*.vgs)" -msgstr "VGS 记忆卡 (*.mem;*.vgs)" +msgstr "VGS 俨 (*.mem;*.vgs)" #: ../win32/gui/WndMain.c:1244 msgid "Bleem Memory Card (*.mcd)" -msgstr "Bleem 记忆卡 (*.mcd)" +msgstr "Bleem 俨 (*.mcd)" #: ../win32/gui/WndMain.c:1249 msgid "DexDrive Memory Card (*.gme)" -msgstr "DexDrive 记忆卡 (*.gme)" +msgstr "DexDrive 俨 (*.gme)" #: ../win32/gui/WndMain.c:1254 msgid "DataDeck Memory Card (*.ddf)" -msgstr "DataDeck 记忆卡 (*.ddl)" +msgstr "DataDeck 俨 (*.ddl)" #: ../win32/gui/WndMain.c:1259 #: ../win32/gui/WndMain.c:1340 #: ../gui/Cheat.c:372 #: ../gui/Gtk2Gui.c:626 msgid "All Files" -msgstr "所有文件" +msgstr "ļ" #: ../win32/gui/WndMain.c:1298 msgid "Psx Exe Format" -msgstr "PSX EXE 格式" +msgstr "PSX EXE ʽ" #: ../win32/gui/WndMain.c:1335 msgid "Psx Isos (*.iso;*.mdf;*.img;*.bin)" -msgstr "Psx 光盘镜像 (*.iso;*.mdf;*.img;*.bin)" +msgstr "Psx ̾ (*.iso;*.mdf;*.img;*.bin)" #: ../win32/gui/WndMain.c:1409 msgid "&File" -msgstr "文件(&F)" +msgstr "ļ(&F)" #: ../win32/gui/WndMain.c:1410 msgid "E&xit" -msgstr "退出(&X)" +msgstr "˳(&X)" #: ../win32/gui/WndMain.c:1412 msgid "&States" -msgstr "存档(&S)" +msgstr "浵(&S)" #: ../win32/gui/WndMain.c:1414 msgid "Run &EXE" -msgstr "运行 EXE(&E)" +msgstr " EXE(&E)" #: ../win32/gui/WndMain.c:1415 msgid "Run &BIOS" -msgstr "运行 BIOS(&B)" +msgstr " BIOS(&B)" #: ../win32/gui/WndMain.c:1416 msgid "Run &ISO" -msgstr "运行 ISO(&I)" +msgstr " ISO(&I)" #: ../win32/gui/WndMain.c:1417 msgid "Run &CD" -msgstr "运行光碟(&C)" +msgstr "й(&C)" #: ../win32/gui/WndMain.c:1418 msgid "&Save" -msgstr "保存(&S)" +msgstr "(&S)" #: ../win32/gui/WndMain.c:1419 msgid "&Load" -msgstr "读取(&L)" +msgstr "ȡ(&L)" #: ../win32/gui/WndMain.c:1420 #: ../win32/gui/WndMain.c:1426 msgid "&Other..." -msgstr "其它(&O)..." +msgstr "(&O)..." #: ../win32/gui/WndMain.c:1421 #: ../win32/gui/WndMain.c:1427 msgid "Slot &5" -msgstr "存档 5(&5)" +msgstr "浵 5(&5)" #: ../win32/gui/WndMain.c:1422 #: ../win32/gui/WndMain.c:1428 msgid "Slot &4" -msgstr "存档 4(&4)" +msgstr "浵 4(&4)" #: ../win32/gui/WndMain.c:1423 #: ../win32/gui/WndMain.c:1429 msgid "Slot &3" -msgstr "存档 3(&3)" +msgstr "浵 3(&3)" #: ../win32/gui/WndMain.c:1424 #: ../win32/gui/WndMain.c:1430 msgid "Slot &2" -msgstr "存档 2(&2)" +msgstr "浵 2(&2)" #: ../win32/gui/WndMain.c:1425 #: ../win32/gui/WndMain.c:1431 msgid "Slot &1" -msgstr "存档 1(&1)" +msgstr "浵 1(&1)" #: ../win32/gui/WndMain.c:1433 msgid "&Emulator" -msgstr "模拟器(&E)" +msgstr "ģ(&E)" #: ../win32/gui/WndMain.c:1434 msgid "S&witch ISO" -msgstr "更换 ISO(&W)" +msgstr " ISO(&W)" #: ../win32/gui/WndMain.c:1436 msgid "Re&set" -msgstr "复位(&S)" +msgstr "λ(&S)" #: ../win32/gui/WndMain.c:1437 msgid "&Run" -msgstr "运行(&R)" +msgstr "(&R)" #: ../win32/gui/WndMain.c:1439 msgid "&Configuration" -msgstr "配置(&C)" +msgstr "(&C)" #: ../win32/gui/WndMain.c:1440 msgid "&Memory cards" -msgstr "记忆卡(&M)" +msgstr "俨(&M)" #: ../win32/gui/WndMain.c:1441 msgid "C&PU" @@ -718,11 +718,11 @@ msgstr "CPU(&P)" #: ../win32/gui/WndMain.c:1443 msgid "&NetPlay" -msgstr "联网游戏(&N)" +msgstr "Ϸ(&N)" #: ../win32/gui/WndMain.c:1445 msgid "&Controllers" -msgstr "控制器(&C)" +msgstr "(&C)" #: ../win32/gui/WndMain.c:1446 msgid "CD-&ROM" @@ -730,185 +730,185 @@ msgstr "CD-ROM(&R)" #: ../win32/gui/WndMain.c:1447 msgid "&Sound" -msgstr "声音(&S)" +msgstr "(&S)" #: ../win32/gui/WndMain.c:1448 msgid "&Graphics" -msgstr "图像(&G)" +msgstr "ͼ(&G)" #: ../win32/gui/WndMain.c:1450 msgid "&Plugins && Bios" -msgstr "插件及 BIOS(&P)" +msgstr " BIOS(&P)" #: ../win32/gui/WndMain.c:1452 msgid "&Language" -msgstr "语言(&L)" +msgstr "(&L)" #: ../win32/gui/WndMain.c:1476 msgid "&Help" -msgstr "帮助(&H)" +msgstr "(&H)" #: ../win32/gui/WndMain.c:1477 msgid "&About..." -msgstr "关于(&A)..." +msgstr "(&A)..." #: ../win32/gui/WndMain.c:1654 msgid "Pcsx Msg" -msgstr "PCSX 消息" +msgstr "PCSX Ϣ" #: ../win32/gui/WndMain.c:1657 msgid "Error Loading Symbol" -msgstr "无法加载符号" +msgstr "ط" #: ../gui/Cheat.c:49 msgid " Yes" -msgstr " 是" +msgstr " " #: ../gui/Cheat.c:118 msgid "Add New Cheat" -msgstr "添加新作弊码" +msgstr "" #: ../gui/Cheat.c:126 #: ../gui/Cheat.c:210 msgid "Cheat Description:" -msgstr "作弊码描述:" +msgstr ":" #: ../gui/Cheat.c:134 #: ../gui/Cheat.c:219 msgid "Cheat Code:" -msgstr "作弊码:" +msgstr ":" #: ../gui/Cheat.c:164 #: ../gui/Cheat.c:259 #: ../gui/LnxMain.c:355 msgid "Error" -msgstr "错误" +msgstr "" #: ../gui/Cheat.c:164 #: ../gui/Cheat.c:259 msgid "Invalid cheat code!" -msgstr "非法作弊码!" +msgstr "Ƿ!" #: ../gui/Cheat.c:202 msgid "Edit Cheat" -msgstr "编辑作弊码" +msgstr "༭" #: ../gui/Cheat.c:357 msgid "Open Cheat File" -msgstr "打开作弊码文件" +msgstr "ļ" #: ../gui/Cheat.c:367 #: ../gui/Cheat.c:407 msgid "PCSX Cheat Code Files (*.cht)" -msgstr "PCSX 作弊码文件 (*.cht)" +msgstr "PCSX ļ (*.cht)" #: ../gui/Cheat.c:397 msgid "Save Cheat File" -msgstr "保存作弊码文件" +msgstr "ļ" #: ../gui/Cheat.c:412 msgid "All Files (*.*)" -msgstr "所有文件 (*.*)" +msgstr "ļ (*.*)" #: ../gui/Cheat.c:445 #: ../gui/Cheat.c:531 #: ../gui/Gtk2Gui.c:377 #: ../gui/Gtk2Gui.c:998 msgid "Error: Glade interface could not be loaded!" -msgstr "错误:无法加载 Glade 界面!" +msgstr " Glade !" #: ../gui/Cheat.c:450 msgid "Cheat Codes" -msgstr "作弊码" +msgstr "" #: ../gui/Cheat.c:456 #: ../data/pcsx.glade2:2253 msgid "Enable" -msgstr "启用" +msgstr "" #: ../gui/Cheat.c:462 msgid "Description" -msgstr "描述" +msgstr "" #: ../gui/Cheat.c:536 #: ../data/pcsx.glade2:2362 msgid "Cheat Search" -msgstr "查找作弊码" +msgstr "" #: ../gui/Gtk2Gui.c:385 #: ../data/pcsx.glade2:517 msgid "Configure PCSX" -msgstr "配置 PCSX" +msgstr " PCSX" #: ../gui/Gtk2Gui.c:471 msgid "Select PSX EXE File" -msgstr "选择 PSX EXE 文件" +msgstr "ѡ PSX EXE ļ" #: ../gui/Gtk2Gui.c:481 msgid "PlayStation Executable Files" -msgstr "PlayStation 可执行文件" +msgstr "PlayStation ִļ" #: ../gui/Gtk2Gui.c:521 msgid "Not a valid PSX file" -msgstr "不是一个合法的 PSX 文件" +msgstr "һϷ PSX ļ" #: ../gui/Gtk2Gui.c:521 msgid "The file does not appear to be a valid Playstation executable" -msgstr "此文件不是一个合法的 PlayStation 可执行文件" +msgstr "ļһϷ PlayStation ִļ" #: ../gui/Gtk2Gui.c:552 #: ../gui/Gtk2Gui.c:675 msgid "CD ROM failed" -msgstr "CD-ROM 失败" +msgstr "CD-ROM ʧ" #: ../gui/Gtk2Gui.c:560 msgid "The CD ROM could not be loaded" -msgstr "无法加载 CD-ROM" +msgstr " CD-ROM" #: ../gui/Gtk2Gui.c:575 msgid "Could not run BIOS" -msgstr "无法运行 BIOS" +msgstr " BIOS" #: ../gui/Gtk2Gui.c:575 msgid "Running BIOS is not supported with Internal HLE BIOS." -msgstr "内部 HLE BIOS 不支持直接运行。" +msgstr "ڲ HLE BIOS ֱ֧С" #: ../gui/Gtk2Gui.c:605 msgid "Open PSX Disc Image File" -msgstr "打开 PSX 光盘镜像文件" +msgstr " PSX ̾ļ" #: ../gui/Gtk2Gui.c:621 msgid "PSX Image Files (*.bin, *.img, *.mdf, *.iso)" -msgstr "PS 镜像文件 (*.bin, *.img, *.mdf, *.iso)" +msgstr "PS ļ (*.bin, *.img, *.mdf, *.iso)" #: ../gui/Gtk2Gui.c:857 #, c-format msgid "Loaded state %s." -msgstr "已读取存档 %s。" +msgstr "Ѷȡ浵 %s" #: ../gui/Gtk2Gui.c:862 #, c-format msgid "Error loading state %s!" -msgstr "读取存档 %s 时出错。" +msgstr "ȡ浵 %s ʱ" #: ../gui/Gtk2Gui.c:873 #, c-format msgid "Saved state %s." -msgstr "已保存存档 %s" +msgstr "ѱ浵 %s" #: ../gui/Gtk2Gui.c:875 #, c-format msgid "Error saving state %s!" -msgstr "保存存档 %s 时出错。" +msgstr "浵 %s ʱ" #: ../gui/Gtk2Gui.c:909 #: ../gui/Gtk2Gui.c:936 msgid "Select State File" -msgstr "选择存档文件" +msgstr "ѡ浵ļ" #: ../gui/Gtk2Gui.c:1040 msgid "Icon" -msgstr "图标" +msgstr "ͼ" #: ../gui/Gtk2Gui.c:1058 msgid "ID" @@ -916,60 +916,60 @@ msgstr "ID" #: ../gui/Gtk2Gui.c:1064 msgid "Name" -msgstr "名称" +msgstr "" #: ../gui/Gtk2Gui.c:1224 msgid "Format this Memory Card?" -msgstr "格式化此记忆卡?" +msgstr "ʽ˼俨?" #: ../gui/Gtk2Gui.c:1226 msgid "If you format the memory card, the card will be empty, and any existing data overwritten." -msgstr "如果您选择格式化记忆卡,记忆卡将被清空,并且任何现有数据都将被覆盖。" +msgstr "ѡʽ俨俨գκݶǡ" #: ../gui/Gtk2Gui.c:1229 msgid "Format card" -msgstr "格式化记忆卡" +msgstr "ʽ俨" #: ../gui/Gtk2Gui.c:1344 msgid "No space available in the target memory card!" -msgstr "目标记忆卡没有空余位置!" +msgstr "Ŀ俨ûпλ!" #: ../gui/Gtk2Gui.c:1489 msgid "Memory Card Manager" -msgstr "记忆卡管理器" +msgstr "俨" #: ../gui/Gtk2Gui.c:1758 msgid "No configuration required" -msgstr "不需要配置" +msgstr "Ҫ" #: ../gui/Gtk2Gui.c:1758 msgid "This plugin doesn't need to be configured." -msgstr "此插件需要被配置。" +msgstr "˲Ҫá" #: ../gui/Gtk2Gui.c:2017 #, c-format msgid "Could not open BIOS directory: '%s'\n" -msgstr "无法打开 BIOS 目录: \"%s\"\n" +msgstr " BIOS Ŀ¼: \"%s\"\n" #: ../gui/Gtk2Gui.c:2049 #: ../gui/Gtk2Gui.c:2142 #: ../gui/LnxMain.c:146 #, c-format msgid "Could not open directory: '%s'\n" -msgstr "无法打开目录: \"%s\"\n" +msgstr "Ŀ¼: \"%s\"\n" #: ../gui/Gtk2Gui.c:2111 msgid "Internal HLE Bios" -msgstr "内部 HLE-Bios" +msgstr "ڲ HLE-Bios" #: ../gui/Gtk2Gui.c:2203 msgid "Notice" -msgstr "警告" +msgstr "" #: ../gui/LnxMain.c:65 #, c-format msgid "Creating memory card: %s\n" -msgstr "建立记忆卡: %s\n" +msgstr "俨: %s\n" #: ../gui/LnxMain.c:262 msgid "" @@ -984,256 +984,256 @@ msgid "" "\t-h -help\tDisplay this message\n" "\tfile\t\tLoads file\n" msgstr "" -" pcsx [选项] [文件]\n" -"\t选项:\n" -"\t-runcd\t\t运行 CD-ROM\n" -"\t-cdfile 文件\t运行一个 CD 镜像文件\n" -"\t-nogui\t\t不使用 GTK 图形界面\n" -"\t-cfg 文件\t加载一个特定的配置文件 (默认为: ~/.pcsx/pcsx.cfg)\n" -"\t-psxout\t\t启用 PSX 输出\n" -"\t-load 编号\t加载指定编号的存档 (1-5)\n" -"\t-h -help\t显示此信息\n" -"\t文件\t\t加载文件\n" +" pcsx [ѡ] [ļ]\n" +"\tѡ:\n" +"\t-runcd\t\t CD-ROM\n" +"\t-cdfile ļ\tһ CD ļ\n" +"\t-nogui\t\tʹ GTK ͼν\n" +"\t-cfg ļ\tһضļ (ĬΪ: ~/.pcsx/pcsx.cfg)\n" +"\t-psxout\t\t PSX \n" +"\t-load \tָŵĴ浵 (1-5)\n" +"\t-h -help\tʾϢ\n" +"\tļ\t\tļ\n" #: ../gui/LnxMain.c:300 #, c-format msgid "PCSX cannot be configured without using the GUI -- you should restart without -nogui.\n" -msgstr "PCSX 不能在字符界面下配置 -- 请不使用 -nogui 参数重新启动程序\n" +msgstr "PCSX ַ -- 벻ʹ -nogui \n" #: ../gui/LnxMain.c:355 msgid "Failed loading plugins!" -msgstr "加载插件失败!" +msgstr "زʧ!" #: ../gui/LnxMain.c:372 #, c-format msgid "Could not load CD-ROM!\n" -msgstr "无法加载光盘。\n" +msgstr "ع̡\n" #: ../gui/LnxMain.c:411 #, c-format msgid "PSX emulator couldn't be initialized.\n" -msgstr "无法初始化 PSX 模拟器。\n" +msgstr "ʼ PSX ģ\n" #: ../gui/Plugin.c:204 #: ../data/pcsx.glade2:1219 #, c-format msgid "SIO IRQ Always Enabled" -msgstr "SIO IRQ 总是启用" +msgstr "SIO IRQ " #: ../gui/Plugin.c:205 #, c-format msgid "SIO IRQ Not Always Enabled" -msgstr "SIO IRQ 不总是启用" +msgstr "SIO IRQ " #: ../gui/Plugin.c:211 #, c-format msgid "Black & White Mdecs Only Enabled" -msgstr "Black & White Mdecs Only 启用" +msgstr "Black & White Mdecs Only " #: ../gui/Plugin.c:212 #, c-format msgid "Black & White Mdecs Only Disabled" -msgstr "Black & White Mdecs Only 禁用" +msgstr "Black & White Mdecs Only " #: ../gui/Plugin.c:218 #, c-format msgid "XA Enabled" -msgstr "XA 已启用" +msgstr "XA " #: ../gui/Plugin.c:219 #, c-format msgid "XA Disabled" -msgstr "XA 已禁用" +msgstr "XA ѽ" #: ../gui/Plugin.c:285 msgid "Error opening CD-ROM plugin!" -msgstr "无法打开CD-ROM 插件!" +msgstr "CD-ROM !" #: ../gui/Plugin.c:287 msgid "Error opening SPU plugin!" -msgstr "无法打开 SPU 插件!" +msgstr " SPU !" #: ../gui/Plugin.c:290 msgid "Error opening GPU plugin!" -msgstr "无法打开 GPU 插件!" +msgstr " GPU !" #: ../gui/Plugin.c:292 msgid "Error opening Controller 1 plugin!" -msgstr "无法打开 \"控制器 1\" 插件!" +msgstr " \" 1\" !" #: ../gui/Plugin.c:294 msgid "Error opening Controller 2 plugin!" -msgstr "无法打开 \"控制器 2\" 插件!" +msgstr " \" 2\" !" #: ../gui/Plugin.c:374 msgid "Error closing CD-ROM plugin!" -msgstr "无法关闭 CD-ROM 插件!" +msgstr "ر CD-ROM !" #: ../gui/Plugin.c:376 msgid "Error closing SPU plugin!" -msgstr "无法关闭 SPU 插件!" +msgstr "ر SPU !" #: ../gui/Plugin.c:378 msgid "Error closing Controller 1 Plugin!" -msgstr "无法关闭 \"控制器 1\" 插件!" +msgstr "ر \" 1\" !" #: ../gui/Plugin.c:380 msgid "Error closing Controller 2 plugin!" -msgstr "无法关闭 \"控制器 2\" 插件!" +msgstr "ر \" 2\" !" #: ../gui/Plugin.c:382 msgid "Error closing GPU plugin!" -msgstr "无法关闭 GPU 插件!" +msgstr "ر GPU !" #: ../libpcsxcore/cdriso.c:125 #, c-format msgid "Could not open %s.\n" -msgstr "无法打开 %s。\n" +msgstr " %s\n" #: ../libpcsxcore/cheat.c:335 #: ../libpcsxcore/cheat.c:454 msgid "(Untitled)" -msgstr "(未命名)" +msgstr "(δ)" #: ../libpcsxcore/misc.c:372 #, c-format msgid "Error opening file: %s" -msgstr "打开文件错误: %s!" +msgstr "ļ: %s!" #: ../libpcsxcore/misc.c:390 msgid "CPE files not supported." -msgstr "CPE 文件不被支持!" +msgstr "CPE ļ֧!" #: ../libpcsxcore/misc.c:394 msgid "COFF files not supported." -msgstr "COFF 文件不被支持!" +msgstr "COFF ļ֧!" #: ../libpcsxcore/misc.c:398 msgid "This file does not appear to be a valid PSX file." -msgstr "此文件不是一个合法的 PSX 文件。" +msgstr "ļһϷ PSX ļ" #: ../libpcsxcore/plugins.c:33 #, c-format msgid "Error loading %s: %s" -msgstr "无法加载 %s: %s" +msgstr " %s: %s" #: ../libpcsxcore/plugins.c:162 #, c-format msgid "Could not load GPU plugin %s!" -msgstr "无法加载 GPU 插件 %s!" +msgstr " GPU %s!" #: ../libpcsxcore/plugins.c:228 #, c-format msgid "Could not load CD-ROM plugin %s!" -msgstr "无法加载 CD-ROM 插件 %s!" +msgstr " CD-ROM %s!" #: ../libpcsxcore/plugins.c:467 #, c-format msgid "Could not load SPU plugin %s!" -msgstr "无法加载 SPU 插件 %s!" +msgstr " SPU %s!" #: ../libpcsxcore/plugins.c:615 #, c-format msgid "Could not load Controller 1 plugin %s!" -msgstr "无法加载 \"控制器1\" 插件 %s!" +msgstr " \"1\" %s!" #: ../libpcsxcore/plugins.c:669 #, c-format msgid "Could not load Controller 2 plugin %s!" -msgstr "无法加载 \"控制器2\" 插件 %s!" +msgstr " \"2\" %s!" #: ../libpcsxcore/plugins.c:712 #, c-format msgid "Could not load NetPlay plugin %s!" -msgstr "无法加载联网游戏插件 %s!" +msgstr "Ϸ %s!" #: ../libpcsxcore/plugins.c:775 #, c-format msgid "Error initializing CD-ROM plugin: %d" -msgstr "CD-ROM 插件初始化错误: %d" +msgstr "CD-ROM ʼ: %d" #: ../libpcsxcore/plugins.c:777 #, c-format msgid "Error initializing GPU plugin: %d" -msgstr "GPU 插件初始化错误: %d" +msgstr "GPU ʼ: %d" #: ../libpcsxcore/plugins.c:779 #, c-format msgid "Error initializing SPU plugin: %d" -msgstr "SPU 插件初始化错误: %d" +msgstr "SPU ʼ: %d" #: ../libpcsxcore/plugins.c:781 #, c-format msgid "Error initializing Controller 1 plugin: %d" -msgstr "\"控制器1\" 插件初始化错误: %d" +msgstr "\"1\" ʼ: %d" #: ../libpcsxcore/plugins.c:783 #, c-format msgid "Error initializing Controller 2 plugin: %d" -msgstr "\"控制器2\" 插件初始化错误: %d" +msgstr "\"2\" ʼ: %d" #: ../libpcsxcore/plugins.c:787 #, c-format msgid "Error initializing NetPlay plugin: %d" -msgstr "联网游戏插件初始化错误: %d" +msgstr "Ϸʼ: %d" #: ../libpcsxcore/plugins.c:790 msgid "Plugins loaded.\n" -msgstr "插件已加载。\n" +msgstr "Ѽء\n" #: ../libpcsxcore/psxmem.c:69 msgid "Error allocating memory!" -msgstr "分配内存错误!" +msgstr "ڴ!" #: ../libpcsxcore/psxmem.c:109 #, c-format msgid "Could not open BIOS:\"%s\". Enabling HLE Bios!\n" -msgstr "无法打开 BIOS: \"%s\"。使用内部 HLE Bios。\n" +msgstr " BIOS: \"%s\"ʹڲ HLE Bios\n" #: ../libpcsxcore/r3000a.c:34 #, c-format msgid "Running PCSX Version %s (%s).\n" -msgstr "正在运行 PCSX 版本 %s (%s)。\n" +msgstr " PCSX 汾 %s (%s)\n" #: ../libpcsxcore/sio.c:99 msgid "Connection closed!\n" -msgstr "连接被关闭!\n" +msgstr "ӱر!\n" #: ../libpcsxcore/sio.c:322 #, c-format msgid "No memory card value was specified - creating a default card %s\n" -msgstr "未指定记忆卡 - 创建一个默认的记忆卡 %s\n" +msgstr "δָ俨 - һĬϵļ俨 %s\n" #: ../libpcsxcore/sio.c:326 #, c-format msgid "The memory card %s doesn't exist - creating it\n" -msgstr "记忆卡 %s 不存在 - 正在创建\n" +msgstr "俨 %s - ڴ\n" #: ../libpcsxcore/sio.c:342 #, c-format msgid "Memory card %s failed to load!\n" -msgstr "记忆卡 %s 读取失败!\n" +msgstr "俨 %s ȡʧ!\n" #: ../libpcsxcore/sio.c:346 #, c-format msgid "Loading memory card %s\n" -msgstr "加载记忆卡 %s\n" +msgstr "ؼ俨 %s\n" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:8 msgid "Configure X11 Video" -msgstr "配置 X11 视频" +msgstr " X11 Ƶ" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:39 msgid "Initial Window Size:" -msgstr "初始窗口大小:" +msgstr "ʼڴС:" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:50 msgid "Stretching:" -msgstr "拉抻:" +msgstr ":" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:63 msgid "Dithering:" -msgstr "抖动:" +msgstr ":" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:76 msgid "" @@ -1264,7 +1264,7 @@ msgid "" "6: HQ2X\n" "7: HQ3X" msgstr "" -"0: 无\n" +"0: \n" "1: 2xSai\n" "2: 2xSuperSai\n" "3: SuperEagle\n" @@ -1279,54 +1279,54 @@ msgid "" "1: Game dependant\n" "2: Always" msgstr "" -"0: 关闭 (最快)\n" -"1: 取决于游戏\n" -"2: 总是" +"0: ر ()\n" +"1: ȡϷ\n" +"2: " #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:139 msgid "Maintain 4:3 Aspect Ratio" -msgstr "维持 4:3 宽高比" +msgstr "ά 4:3 ߱" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:153 msgid "Toggle windowed/fullscreen mode." -msgstr "切换窗口/全屏模式" +msgstr "л/ȫģʽ" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:154 #: ../plugins/peopsxgl/gpucfg/interface.c:321 msgid "Fullscreen" -msgstr "全屏" +msgstr "ȫ" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:177 msgid "<b>Screen</b>" -msgstr "<b>屏幕</b>" +msgstr "<b>Ļ</b>" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:203 msgid "Toggle whether the FPS will be shown." -msgstr "切换 FPS (每秒帧数) 是否将被显示。" +msgstr "л FPS (ÿ֡) Ƿʾ" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:204 msgid "Show FPS" -msgstr "显示 FPS" +msgstr "ʾ FPS" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:218 msgid "Enable this if games display too quickly." -msgstr "如果游戏运行得过快,请启用此项。" +msgstr "Ϸеù죬ô" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:219 msgid "Autodetect FPS limit" -msgstr "自动检测 FPS 界限" +msgstr "Զ FPS " #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:235 msgid "Skip frames when rendering." -msgstr "渲染时跳帧。" +msgstr "Ⱦʱ֡" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:236 msgid "Enable frame skipping" -msgstr "启用跳帧" +msgstr "֡" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:257 msgid "Set FPS" -msgstr "设置 FPS" +msgstr " FPS" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:272 msgid "200.0" @@ -1334,48 +1334,48 @@ msgstr "200.0" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:295 msgid "<b>Framerate</b>" -msgstr "<b>帧率</b>" +msgstr "<b>֡</b>" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:324 #: ../plugins/peopsxgl/gpucfg/interface.c:567 msgid "Use game fixes" -msgstr "使用特定游戏修正" +msgstr "ʹضϷ" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:348 msgid "better g-colors, worse textures" -msgstr "较好的 g-colors, 较差的纹理" +msgstr "Ϻõ g-colors, ϲ" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:363 msgid "Needed by Dark Forces" -msgstr "Dark Forces 运行需要" +msgstr "Dark Forces Ҫ" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:378 msgid "Draw quads with triangles" -msgstr "使用 quad 绘制三角形" +msgstr "ʹ quad " #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:394 msgid "Repeated flat tex triangles" -msgstr "重复平滑多边形纹理" +msgstr "ظƽ" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:410 msgid "Disable CPU Saving" -msgstr "禁用 CPU 保存" +msgstr " CPU " #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:426 msgid "Odd/even bit hack" -msgstr "奇/偶位 hack" +msgstr "/żλ hack" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:440 msgid "For precise framerate" -msgstr "精确帧率" +msgstr "ȷ֡" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:455 msgid "Better FPS limit in some" -msgstr "某些游戏中可取得较好的 FPS 界限值" +msgstr "ijЩϷпȡýϺõ FPS ֵ" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:470 msgid "PC FPS calculation" -msgstr "PC FPS 计算" +msgstr "PC FPS " #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:486 msgid "Pandemonium 2" @@ -1383,28 +1383,28 @@ msgstr "Pandemonium 2" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:501 msgid "Lazy screen update" -msgstr "懒惰的屏幕更新" +msgstr "Ļ" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:517 msgid "Skip every second frame" -msgstr "每两帧跳过一帧" +msgstr "ÿ֡һ֡" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:532 #: ../plugins/peopsxgl/gpucfg/interface.c:639 msgid "Old frame skipping" -msgstr "旧的跳帧方式" +msgstr "ɵ֡ʽ" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:548 msgid "Expand screen width" -msgstr "扩展屏幕宽度" +msgstr "չĻ" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:564 msgid "Ignore brightness color" -msgstr "忽略亮色" +msgstr "ɫ" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:580 msgid "Disable coordinate check" -msgstr "禁用坐标检查" +msgstr "" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:596 msgid "Chrono Cross" @@ -1412,34 +1412,34 @@ msgstr "Chrono Cross" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:609 msgid "Capcom fighting games" -msgstr "Capcom 格斗游戏" +msgstr "Capcom Ϸ" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:624 msgid "Black screens in Lunar" -msgstr "Lunar 中黑屏" +msgstr "Lunar к" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:639 msgid "Compatibility mode" -msgstr "兼容模式" +msgstr "ģʽ" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:664 #: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:428 msgid "<b>Compatibility</b>" -msgstr "<b>兼容性</b>" +msgstr "<b></b>" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:701 msgid "About X11 Video Plugin" -msgstr "关于 X11 视频插件" +msgstr " X11 Ƶ" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:714 #: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:516 msgid "Coded by: Pete Bernert and the P.E.Op.S. team" -msgstr "编写: Pete Bernert 以及 P.E.Op.S. 开发组" +msgstr "д: Pete Bernert Լ P.E.Op.S. " #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:725 #: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:541 msgid "Homepage: http://home.t-online.de/home/PeteBernert/" -msgstr "主页: http://home.t-online.de/home/PeteBernert/" +msgstr "ҳ: http://home.t-online.de/home/PeteBernert/" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:737 #: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:566 @@ -1448,19 +1448,19 @@ msgstr "EMail: BlackDove@addcom.de" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:750 msgid "Version: 1.15" -msgstr "版本: 1.15" +msgstr "汾: 1.15" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:762 msgid "Release date: 2003" -msgstr "发布日期: 2003" +msgstr ": 2003" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:774 msgid "<b>PCSX-df Video Plugin Adaption</b>" -msgstr "<b>PCSX-df 视频插件</b>" +msgstr "<b>PCSX-df Ƶ</b>" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:787 msgid "XVideo Support: Stephen Chao" -msgstr "XVideo 支持: Stephen Chao" +msgstr "XVideo ֧: Stephen Chao" #: ../data/pcsx.glade2:9 msgid "PCSX" @@ -1468,89 +1468,89 @@ msgstr "PCSX" #: ../data/pcsx.glade2:23 msgid "_File" -msgstr "文件(_F)" +msgstr "ļ(_F)" #: ../data/pcsx.glade2:30 msgid "Run _CD" -msgstr "运行光盘(_C)" +msgstr "й(_C)" #: ../data/pcsx.glade2:46 msgid "Run _ISO" -msgstr "运行 _ISO" +msgstr " _ISO" #: ../data/pcsx.glade2:62 msgid "Run _BIOS" -msgstr "运行 _BIOS" +msgstr " _BIOS" #: ../data/pcsx.glade2:78 msgid "Run _EXE" -msgstr "运行 _EXE" +msgstr " _EXE" #: ../data/pcsx.glade2:99 msgid "E_xit" -msgstr "退出(_X)" +msgstr "˳(_X)" #: ../data/pcsx.glade2:119 msgid "_Emulator" -msgstr "模拟器(_E)" +msgstr "ģ(_E)" #: ../data/pcsx.glade2:126 msgid "_Continue" -msgstr "继续(_C)" +msgstr "(_C)" #: ../data/pcsx.glade2:141 msgid "_Reset" -msgstr "复位(_R)" +msgstr "λ(_R)" #: ../data/pcsx.glade2:161 msgid "_Switch ISO" -msgstr "更换 ISO(_S)" +msgstr " ISO(_S)" #: ../data/pcsx.glade2:182 msgid "_Save State" -msgstr "即时存档(_S)" +msgstr "ʱ浵(_S)" #: ../data/pcsx.glade2:189 #: ../data/pcsx.glade2:268 msgid "Slot _1" -msgstr "存档 _1" +msgstr "浵 _1" #: ../data/pcsx.glade2:198 #: ../data/pcsx.glade2:277 msgid "Slot _2" -msgstr "存档 _2" +msgstr "浵 _2" #: ../data/pcsx.glade2:207 #: ../data/pcsx.glade2:286 msgid "Slot _3" -msgstr "存档 _3" +msgstr "浵 _3" #: ../data/pcsx.glade2:216 #: ../data/pcsx.glade2:295 msgid "Slot _4" -msgstr "存档 _4" +msgstr "浵 _4" #: ../data/pcsx.glade2:225 #: ../data/pcsx.glade2:304 msgid "Slot _5" -msgstr "存档 _5" +msgstr "浵 _5" #: ../data/pcsx.glade2:234 #: ../data/pcsx.glade2:313 msgid "_Other..." -msgstr "其它(_O)..." +msgstr "(_O)..." #: ../data/pcsx.glade2:261 msgid "_Load State" -msgstr "即时读档(_L)" +msgstr "ʱ(_L)" #: ../data/pcsx.glade2:344 msgid "_Configuration" -msgstr "配置(_C)" +msgstr "(_C)" #: ../data/pcsx.glade2:351 msgid "_Plugins & BIOS" -msgstr "插件及 BIOS(_P)" +msgstr " BIOS(_P)" #: ../data/pcsx.glade2:372 msgid "_CPU" @@ -1558,55 +1558,55 @@ msgstr "_CPU" #: ../data/pcsx.glade2:387 msgid "_Memory Cards" -msgstr "记忆卡(_M)" +msgstr "俨(_M)" #: ../data/pcsx.glade2:403 msgid "_Netplay" -msgstr "联网游戏(_N)" +msgstr "Ϸ(_N)" #: ../data/pcsx.glade2:423 msgid "Chea_t" -msgstr "作弊码(_T)" +msgstr "(_T)" #: ../data/pcsx.glade2:431 msgid "_Browse" -msgstr "浏览(_B)" +msgstr "(_B)" #: ../data/pcsx.glade2:445 msgid "_Search" -msgstr "查找(_S)" +msgstr "(_S)" #: ../data/pcsx.glade2:474 msgid "_Help" -msgstr "帮助(_H)" +msgstr "(_H)" #: ../data/pcsx.glade2:481 msgid "_About PCSX" -msgstr "关于 PCSX(_A)" +msgstr " PCSX(_A)" #: ../data/pcsx.glade2:617 msgid "Select Folder to Search" -msgstr "选择要查找的文件夹" +msgstr "ѡҪҵļ" #: ../data/pcsx.glade2:633 msgid "Search in:" -msgstr "在此处查找插件:" +msgstr "ڴ˴Ҳ:" #: ../data/pcsx.glade2:906 msgid "Graphics:" -msgstr "图像:" +msgstr "ͼ:" #: ../data/pcsx.glade2:919 msgid "Sound:" -msgstr "声音:" +msgstr ":" #: ../data/pcsx.glade2:934 msgid "Controller 1: " -msgstr "控制器 1:" +msgstr " 1:" #: ../data/pcsx.glade2:949 msgid "Controller 2:" -msgstr "控制器 2:" +msgstr " 2:" #: ../data/pcsx.glade2:964 msgid "CD-ROM:" @@ -1614,7 +1614,7 @@ msgstr "CD-ROM:" #: ../data/pcsx.glade2:1002 msgid "<b>Plugins</b>" -msgstr "<b>插件</b>" +msgstr "<b></b>" #: ../data/pcsx.glade2:1061 msgid "<b>BIOS</b>" @@ -1622,35 +1622,35 @@ msgstr "<b>BIOS</b>" #: ../data/pcsx.glade2:1106 msgid "Configure CPU" -msgstr "配置 CPU" +msgstr " CPU" #: ../data/pcsx.glade2:1133 msgid "Enable Debugger" -msgstr "启用调试器" +msgstr "õ" #: ../data/pcsx.glade2:1151 msgid "SPU IRQ Always Enabled" -msgstr "SPU IRQ 总是启用" +msgstr "SPU IRQ " #: ../data/pcsx.glade2:1167 msgid "Black & White Movies" -msgstr "黑白电影" +msgstr "ڰӰ" #: ../data/pcsx.glade2:1201 msgid "Enable Interpreter CPU" -msgstr "启用解释执行 CPU" +msgstr "ýִ CPU" #: ../data/pcsx.glade2:1235 msgid "Disable CD Audio" -msgstr "禁用 CD 音频" +msgstr " CD Ƶ" #: ../data/pcsx.glade2:1251 msgid "Disable XA Decoding" -msgstr "禁用 XA 解码" +msgstr " XA " #: ../data/pcsx.glade2:1298 msgid "<b>Options</b>" -msgstr "<b>选项</b>" +msgstr "<b>ѡ</b>" #: ../data/pcsx.glade2:1335 msgid "" @@ -1662,47 +1662,47 @@ msgstr "" #: ../data/pcsx.glade2:1349 msgid "<b>System Type</b>" -msgstr "<b>系统类型</b>" +msgstr "<b>ϵͳ</b>" #: ../data/pcsx.glade2:1391 msgid "Configure NetPlay" -msgstr "配置联网游戏" +msgstr "Ϸ" #: ../data/pcsx.glade2:1473 msgid "<b>NetPlay</b>" -msgstr "<b>联网游戏</b>" +msgstr "<b>Ϸ</b>" #: ../data/pcsx.glade2:1517 msgid "Configure Memory Cards" -msgstr "配置记忆卡" +msgstr "ü俨" #: ../data/pcsx.glade2:1587 #: ../data/pcsx.glade2:1951 msgid "Format" -msgstr "格式化" +msgstr "ʽ" #: ../data/pcsx.glade2:1631 #: ../data/pcsx.glade2:1995 msgid "Reload" -msgstr "重新加载" +msgstr "¼" #: ../data/pcsx.glade2:1673 msgid "<b>Memory Card 1</b>" -msgstr "<b>记忆卡 1</b>" +msgstr "<b>俨 1</b>" #: ../data/pcsx.glade2:1728 #: ../data/pcsx.glade2:1772 msgid "Copy" -msgstr "复制" +msgstr "" #: ../data/pcsx.glade2:1819 #: ../data/pcsx.glade2:1866 msgid "Un/Delete" -msgstr "删除/恢复" +msgstr "ɾ/ָ" #: ../data/pcsx.glade2:2037 msgid "<b>Memory Card 2</b>" -msgstr "<b>记忆卡 2</b>" +msgstr "<b>俨 2</b>" #: ../data/pcsx.glade2:2091 msgid "" @@ -1711,14 +1711,14 @@ msgid "" "(C) 2005-2006 Andrew Burton\n" "(C) 2008-2009 Wei Mingzhi" msgstr "" -"(C) 1999-2003 PCSX 开发组\n" +"(C) 1999-2003 PCSX \n" "(C) 2005-2006 Ryan Schultz\n" "(C) 2005-2006 Andrew Burton\n" "(C) 2008-2009 Wei Mingzhi" #: ../data/pcsx.glade2:2095 msgid "A PlayStation emulator." -msgstr "一个 PlayStation 模拟器。" +msgstr "һ PlayStation ģ" #: ../data/pcsx.glade2:2097 msgid "PCSX Reloaded" @@ -1750,11 +1750,11 @@ msgstr "Wei Mingzhi <whistler@openoffice.org>" #: ../data/pcsx.glade2:2148 msgid "Edit Cheat Codes" -msgstr "编辑作弊码" +msgstr "༭" #: ../data/pcsx.glade2:2185 msgid "<b>Cheat Codes</b>" -msgstr "<b>作弊码</b>" +msgstr "<b></b>" #: ../data/pcsx.glade2:2203 msgid "gtk-add" @@ -1770,7 +1770,7 @@ msgstr "gtk-delete" #: ../data/pcsx.glade2:2285 msgid "Disable" -msgstr "禁用" +msgstr "" #: ../data/pcsx.glade2:2303 msgid "gtk-open" @@ -1794,28 +1794,28 @@ msgid "" "Signed 16-bit\n" "Signed 32-bit" msgstr "" -"无符号 8 位\n" -"无符号 16 位\n" -"无符号 32 位\n" -"有符号 8 位\n" -"有符号 16 位\n" -"有符号 32 位" +" 8 λ\n" +" 16 λ\n" +" 32 λ\n" +"з 8 λ\n" +"з 16 λ\n" +"з 32 λ" #: ../data/pcsx.glade2:2415 msgid "Search For:" -msgstr "查找:" +msgstr ":" #: ../data/pcsx.glade2:2425 msgid "Data Type:" -msgstr "数据类型:" +msgstr ":" #: ../data/pcsx.glade2:2437 msgid "Value:" -msgstr "值:" +msgstr "ֵ:" #: ../data/pcsx.glade2:2449 msgid "Data Base:" -msgstr "数据基:" +msgstr "ݻ:" #: ../data/pcsx.glade2:2463 msgid "" @@ -1823,17 +1823,17 @@ msgid "" "Not Equal Value\n" "Range" msgstr "" -"等于数值\n" -"不等于数值\n" -"范围" +"ֵ\n" +"ֵ\n" +"Χ" #: ../data/pcsx.glade2:2489 msgid "" "Decimal\n" "Hexadecimal" msgstr "" -"十进制\n" -"十六进制" +"ʮ\n" +"ʮ" #: ../data/pcsx.glade2:2504 msgid "Big-Endian" @@ -1841,7 +1841,7 @@ msgstr "Big-Endian" #: ../data/pcsx.glade2:2517 msgid "To:" -msgstr "到:" +msgstr ":" #: ../data/pcsx.glade2:2589 #: ../data/pcsx.glade2:2618 @@ -1855,31 +1855,31 @@ msgstr "label_resultsfound" #: ../data/pcsx.glade2:2712 msgid "Search" -msgstr "查找" +msgstr "" #: ../data/pcsx.glade2:2741 msgid "Restart" -msgstr "复位" +msgstr "λ" #: ../data/pcsx.glade2:2768 msgid "<b>Cheat Search</b>" -msgstr "<b>作弊码查找</b>" +msgstr "<b></b>" #: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:9 msgid "Configure Sound" -msgstr "配置音频" +msgstr "Ƶ" #: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:62 msgid "Volume:" -msgstr "音量:" +msgstr ":" #: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:90 msgid "Interpolation:" -msgstr "插值:" +msgstr "ֵ:" #: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:118 msgid "Reverb:" -msgstr "回响:" +msgstr ":" #: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:146 msgid "" @@ -1888,10 +1888,10 @@ msgid "" "Loud\n" "Loudest" msgstr "" -"低\n" -"中\n" -"高\n" -"最高" +"\n" +"\n" +"\n" +"" #: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:165 msgid "" @@ -1899,8 +1899,8 @@ msgid "" "Simple\n" "Playstation" msgstr "" -"关\n" -"简易\n" +"\n" +"\n" "Playstation" #: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:184 @@ -1910,221 +1910,221 @@ msgid "" "Gaussian\n" "Cubic" msgstr "" -"无\n" -"简易\n" -"高斯\n" -"立方" +"\n" +"\n" +"˹\n" +"" #: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:208 msgid "<b>General</b>" -msgstr "<b>一般</b>" +msgstr "<b>һ</b>" #: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:264 msgid "Enable or disable XA music." -msgstr "启用或禁用 XA 音乐。" +msgstr "û XA ֡" #: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:266 msgid "Enable XA" -msgstr "启用 XA" +msgstr " XA" #: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:284 msgid "Choose this if XA music is played too quickly." -msgstr "如 XA 音乐播放得太快,请选择此项。" +msgstr " XA ֲŵ̫죬ѡ" #: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:286 msgid "Adjust XA speed" -msgstr "调整 XA 速度" +msgstr " XA ٶ" #: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:308 msgid "<b>XA Music</b>" -msgstr "<b>XA 音乐</b>" +msgstr "<b>XA </b>" #: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:364 msgid "Use the asynchronous SPU interface." -msgstr "使用异步 SPU 接口。" +msgstr "ʹ첽 SPU ӿڡ" #: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:366 msgid "High compatibility mode" -msgstr "高兼容性模式" +msgstr "ģʽ" #: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:384 msgid "Wait for CPU; only useful for some games." -msgstr "等待 CPU; 仅在部分游戏中有用处。" +msgstr "ȴ CPU; ڲϷô" #: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:386 msgid "SPU IRQ Wait" -msgstr "SPU IRQ 等待" +msgstr "SPU IRQ ȴ" #: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:404 msgid "Play only one channel for a performance boost." -msgstr "仅播放一个声道以提升性能。" +msgstr "һܡ" #: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:406 msgid "Single channel sound" -msgstr "单声道" +msgstr "" #: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:486 msgid "About Sound Plugin" -msgstr "关于音频插件" +msgstr "Ƶ" #: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:592 msgid "Version: 1.6" -msgstr "版本: 1.6" +msgstr "汾: 1.6" #: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:617 msgid "Release date: 05.04.2003" -msgstr "发布日期: 05.04.2003" +msgstr ": 05.04.2003" #: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:642 msgid "<b>PCSX-df Sound Plugin Adaption</b>" -msgstr "<b>PCSX-df 音频插件</b>" +msgstr "<b>PCSX-df Ƶ</b>" #: ../plugins/dfcdrom/interface.c:73 msgid "CDR configuration" -msgstr "CDR 配置" +msgstr "CDR " #: ../plugins/dfcdrom/interface.c:98 msgid "Choose your CD-ROM device or type its path if it's not listed" -msgstr "请选择您的 CD-ROM 设备或直接输入设备路径" +msgstr "ѡ CD-ROM 豸ֱ豸·" #: ../plugins/dfcdrom/interface.c:101 msgid "Select CD-ROM device" -msgstr "选择 CD-ROM 设备" +msgstr "ѡ CD-ROM 豸" #: ../plugins/dfcdrom/interface.c:119 msgid "Select read mode:" -msgstr "选择读取模式:" +msgstr "ѡȡģʽ:" #: ../plugins/dfcdrom/interface.c:132 msgid "Normal (No Cache)" -msgstr "正常 (无缓存)" +msgstr " ()" #: ../plugins/dfcdrom/interface.c:136 msgid "Threaded - Faster (With Cache)" -msgstr "多线程 - 较快 (使用缓存)" +msgstr "߳ - Ͽ (ʹû)" #: ../plugins/dfcdrom/interface.c:151 msgid "Cache Size (Def. 64): " -msgstr "缓存大小 (默认为 64):" +msgstr "С (ĬΪ 64):" #: ../plugins/dfcdrom/interface.c:172 msgid "Cdrom Speed (Def. 0 = MAX): " -msgstr "光驱速度 (默认 0 为最大速度):" +msgstr "ٶ (Ĭ 0 Ϊٶ):" #: ../plugins/dfcdrom/interface.c:188 msgid "Enable Subchannel read" -msgstr "启用子通道读取" +msgstr "ͨȡ" #: ../plugins/peopsxgl/gpucfg/interface.c:117 msgid "OpenGL Driver configuration" -msgstr "OpenGL 驱动程序配置" +msgstr "OpenGL " #: ../plugins/peopsxgl/gpucfg/interface.c:137 msgid "Textures" -msgstr "纹理" +msgstr "" #: ../plugins/peopsxgl/gpucfg/interface.c:160 msgid "Quality:" -msgstr "质量:" +msgstr ":" #: ../plugins/peopsxgl/gpucfg/interface.c:177 #: ../plugins/peopsxgl/gpucfg/interface.c:190 msgid "0: don't care - Use driver's default textures" -msgstr "0: 使用驱动程序的默认纹理" +msgstr "0: ʹĬ" #: ../plugins/peopsxgl/gpucfg/interface.c:178 msgid "1: 4444 - Fast, but less colorful" -msgstr "1: 4444 - 较快,较少颜色" +msgstr "1: 4444 - Ͽ죬ɫ" #: ../plugins/peopsxgl/gpucfg/interface.c:179 msgid "2: 5551 - Nice colors, bad transparency" -msgstr "2: 5551 - 较好的颜色,较差的透明效果" +msgstr "2: 5551 - ϺõɫϲЧ" #: ../plugins/peopsxgl/gpucfg/interface.c:180 msgid "3: 8888 - Best colors, more ram needed" -msgstr "3: 8888 - 最佳的颜色,需更多内存" +msgstr "3: 8888 - ѵɫڴ" #: ../plugins/peopsxgl/gpucfg/interface.c:181 msgid "4: BGR8888 - Faster on some cards" -msgstr "4: BGR8888 - 某些显卡较快" +msgstr "4: BGR8888 - ijЩԿϿ" #: ../plugins/peopsxgl/gpucfg/interface.c:192 msgid "VRam size in MBytes (0..1024, 0=auto):" -msgstr "显存大小,以 MB 为单位 (0..1024, 0=自动):" +msgstr "ԴС MB Ϊλ (0..1024, 0=Զ):" #: ../plugins/peopsxgl/gpucfg/interface.c:209 #: ../plugins/peopsxgl/gpucfg/interface.c:224 msgid "0: None" -msgstr "0: 无" +msgstr "0: " #: ../plugins/peopsxgl/gpucfg/interface.c:210 msgid "1: Standard - Glitches will happen" -msgstr "1: 标准 - 可能会发生问题" +msgstr "1: - ܻᷢ" #: ../plugins/peopsxgl/gpucfg/interface.c:211 msgid "2: Extended - No black borders" -msgstr "2: 增强 - 去除黑框" +msgstr "2: ǿ - ȥڿ" #: ../plugins/peopsxgl/gpucfg/interface.c:212 msgid "3: Standard without sprites - unfiltered 2D" -msgstr "3: 标准,不含贴图 - 未过滤的 2D" +msgstr "3: ͼ - δ˵ 2D" #: ../plugins/peopsxgl/gpucfg/interface.c:213 msgid "4: Extended without sprites - unfiltered 2D" -msgstr "4: 增强,不含贴图 - 未过滤的 2D" +msgstr "4: ǿͼ - δ˵ 2D" #: ../plugins/peopsxgl/gpucfg/interface.c:214 msgid "5: Standard + smoothed sprites" -msgstr "5: 标准 + 平滑贴图" +msgstr "5: + ƽͼ" #: ../plugins/peopsxgl/gpucfg/interface.c:215 msgid "6: Extended + smoothed sprites" -msgstr "6: 增强 + 平滑贴图" +msgstr "6: ǿ + ƽͼ" #: ../plugins/peopsxgl/gpucfg/interface.c:226 msgid "Filtering:" -msgstr "过滤:" +msgstr ":" #: ../plugins/peopsxgl/gpucfg/interface.c:234 msgid "HiRes Tex:" -msgstr "高分纹理:" +msgstr "߷:" #: ../plugins/peopsxgl/gpucfg/interface.c:251 #: ../plugins/peopsxgl/gpucfg/interface.c:262 msgid "0: None (standard)" -msgstr "0: 无 (标准)" +msgstr "0: ()" #: ../plugins/peopsxgl/gpucfg/interface.c:252 msgid "1: 2xSaI (much vram needed)" -msgstr "1: 2xSaI (需较多显存)" +msgstr "1: 2xSaI (϶Դ)" #: ../plugins/peopsxgl/gpucfg/interface.c:253 msgid "2: Scaled (needs tex filtering)" -msgstr "2: 拉伸 (需要纹理过滤)" +msgstr "2: (Ҫ)" #: ../plugins/peopsxgl/gpucfg/interface.c:264 msgid "Window options" -msgstr "窗口选项" +msgstr "ѡ" #: ../plugins/peopsxgl/gpucfg/interface.c:295 msgid "Width:" -msgstr "宽度:" +msgstr ":" #: ../plugins/peopsxgl/gpucfg/interface.c:304 msgid "Height:" -msgstr "高度" +msgstr "߶" #: ../plugins/peopsxgl/gpucfg/interface.c:313 msgid "Keep psx aspect ratio" -msgstr "保持 psx 纵横比" +msgstr " psx ݺ" #: ../plugins/peopsxgl/gpucfg/interface.c:329 msgid "Dithering" -msgstr "抖动" +msgstr "" #: ../plugins/peopsxgl/gpucfg/interface.c:345 msgid "Framerate" -msgstr "帧率" +msgstr "֡" #: ../plugins/peopsxgl/gpucfg/interface.c:368 msgid "FPS" @@ -2132,226 +2132,226 @@ msgstr "FPS" #: ../plugins/peopsxgl/gpucfg/interface.c:376 msgid "FPS limit manual" -msgstr "手动设置 FPS 界限" +msgstr "ֶ FPS " #: ../plugins/peopsxgl/gpucfg/interface.c:385 msgid "Show FPS display on startup" -msgstr "启动时显示 FPS" +msgstr "ʱʾ FPS" #: ../plugins/peopsxgl/gpucfg/interface.c:393 msgid "Use FPS limit" -msgstr "启用 FPS 界限" +msgstr " FPS " #: ../plugins/peopsxgl/gpucfg/interface.c:401 msgid "FPS limit auto-detection" -msgstr "FPS 界限自动检测" +msgstr "FPS Զ" #: ../plugins/peopsxgl/gpucfg/interface.c:410 msgid "Use Frame skipping" -msgstr "启用跳帧" +msgstr "֡" #: ../plugins/peopsxgl/gpucfg/interface.c:418 msgid "Compatibility" -msgstr "兼容性" +msgstr "" #: ../plugins/peopsxgl/gpucfg/interface.c:433 msgid "Advanced blending (Accurate psx color emulation)" -msgstr "高级混合 (精确的 psx 色彩模拟)" +msgstr " (ȷ psx ɫģ)" #: ../plugins/peopsxgl/gpucfg/interface.c:441 msgid "Framebuffer textures:" -msgstr "帧缓冲纹理:" +msgstr "֡:" #: ../plugins/peopsxgl/gpucfg/interface.c:449 msgid "Offscreen Drawing:" -msgstr "离屏描绘:" +msgstr ":" #: ../plugins/peopsxgl/gpucfg/interface.c:457 msgid "Framebuffer access:" -msgstr "帧缓冲访问:" +msgstr "֡:" #: ../plugins/peopsxgl/gpucfg/interface.c:465 msgid "Alpha Multipass (correct opaque texture areas)" -msgstr "半透明多通道 (更正不透明的纹理区域)" +msgstr "ͨ ()" #: ../plugins/peopsxgl/gpucfg/interface.c:473 msgid "Mask bit detection (needed by a few games, zbuffer)" -msgstr "屏蔽位检测 (某些游戏需要)" +msgstr "λ (ijЩϷҪ)" #: ../plugins/peopsxgl/gpucfg/interface.c:490 #: ../plugins/peopsxgl/gpucfg/interface.c:503 msgid "0: None - Fastest, most glitches" -msgstr "0: 无 - 最快,问题较多" +msgstr "0: - 죬϶" #: ../plugins/peopsxgl/gpucfg/interface.c:491 msgid "1: Minimum - Missing screens" -msgstr "1: 最小 - 丢失屏幕元素" +msgstr "1: С - ʧĻԪ" #: ../plugins/peopsxgl/gpucfg/interface.c:492 msgid "2: Standard - OK for most games" -msgstr "2: 标准 - 大多数游戏运行良好" +msgstr "2: - Ϸ" #: ../plugins/peopsxgl/gpucfg/interface.c:493 msgid "3: Enhanced - Shows more stuff" -msgstr "3: 增强 - 显示更多的东西" +msgstr "3: ǿ - ʾĶ" #: ../plugins/peopsxgl/gpucfg/interface.c:494 msgid "4: Extended - Causing garbage" -msgstr "4: 增强 - 可能导致错误" +msgstr "4: ǿ - ܵ´" #: ../plugins/peopsxgl/gpucfg/interface.c:514 #: ../plugins/peopsxgl/gpucfg/interface.c:526 msgid "0: Emulated vram - Needs FVP" -msgstr "0: 模拟 vram - 需 FVP" +msgstr "0: ģ vram - FVP" #: ../plugins/peopsxgl/gpucfg/interface.c:515 msgid "1: Black - Fast, no effects" -msgstr "1: 黑色 - 快,无特效" +msgstr "1: ɫ - 죬Ч" #: ../plugins/peopsxgl/gpucfg/interface.c:516 msgid "2: Gfx card buffer - Can be slow" -msgstr "2: Gfx 卡缓存 - 可能较慢" +msgstr "2: Gfx - ܽ" #: ../plugins/peopsxgl/gpucfg/interface.c:517 msgid "3: Gfx card & soft - slow" -msgstr "3: Gfx 卡缓存与软件 - 较慢" +msgstr "3: Gfx - " #: ../plugins/peopsxgl/gpucfg/interface.c:537 #: ../plugins/peopsxgl/gpucfg/interface.c:550 msgid "0: Emulated vram - ok most times" -msgstr "0: 模拟 vram - 大多数情况运行良好" +msgstr "0: ģ vram - " #: ../plugins/peopsxgl/gpucfg/interface.c:538 msgid "1: Gfx card buffer reads" -msgstr "1: Gfx 卡缓存读取" +msgstr "1: Gfx ȡ" #: ../plugins/peopsxgl/gpucfg/interface.c:539 msgid "2: Gfx card buffer moves" -msgstr "2: Gfx 卡缓存移动" +msgstr "2: Gfx ƶ" #: ../plugins/peopsxgl/gpucfg/interface.c:540 msgid "3: Gfx buffer reads & moves" -msgstr "3: Gfx 卡缓存读取与移动" +msgstr "3: Gfx ȡƶ" #: ../plugins/peopsxgl/gpucfg/interface.c:541 msgid "4: Full Software (FVP)" -msgstr "4: 纯软件 (FVP)" +msgstr "4: (FVP)" #: ../plugins/peopsxgl/gpucfg/interface.c:552 msgid "Special game fixes" -msgstr "特定游戏修正" +msgstr "ضϷ" #: ../plugins/peopsxgl/gpucfg/interface.c:575 msgid "Battle cursor (FF7)" -msgstr "战斗光标 (FF7)" +msgstr "ս (FF7)" #: ../plugins/peopsxgl/gpucfg/interface.c:583 msgid "Direct FB updates" -msgstr "直接 FB 更新" +msgstr "ֱ FB " #: ../plugins/peopsxgl/gpucfg/interface.c:591 msgid "Black brightness (Lunar)" -msgstr "黑色亮度 (Lunar)" +msgstr "ɫ (Lunar)" #: ../plugins/peopsxgl/gpucfg/interface.c:599 msgid "Swap front detection" -msgstr "Swap front 检测" +msgstr "Swap front " #: ../plugins/peopsxgl/gpucfg/interface.c:607 msgid "Disable coord check" -msgstr "禁用坐标检查" +msgstr "" #: ../plugins/peopsxgl/gpucfg/interface.c:615 msgid "No blue glitches (LoD)" -msgstr "去除蓝色干扰 (LoD)" +msgstr "ȥɫ (LoD)" #: ../plugins/peopsxgl/gpucfg/interface.c:623 msgid "Soft FB access" -msgstr "软件 FB 访问" +msgstr " FB " #: ../plugins/peopsxgl/gpucfg/interface.c:631 msgid "PC fps calculation" -msgstr "PC FPS 计算" +msgstr "PC FPS " #: ../plugins/peopsxgl/gpucfg/interface.c:647 msgid "Yellow rect (FF9)" -msgstr "黄色方块 (FF9)" +msgstr "ɫ (FF9)" #: ../plugins/peopsxgl/gpucfg/interface.c:655 msgid "No subtr. blending" -msgstr "无 subtr. 混合" +msgstr " subtr. " #: ../plugins/peopsxgl/gpucfg/interface.c:663 msgid "Lazy upload (DW7)" -msgstr "懒惰上传 (DW7)" +msgstr "ϴ (DW7)" #: ../plugins/peopsxgl/gpucfg/interface.c:671 msgid "Odd/even hack" -msgstr "奇/偶位 hack" +msgstr "/żλ hack" #: ../plugins/peopsxgl/gpucfg/interface.c:679 msgid "Adjust screen width" -msgstr "调整屏幕宽度" +msgstr "Ļ" #: ../plugins/peopsxgl/gpucfg/interface.c:687 msgid "Old texture filtering" -msgstr "旧的纹理过滤" +msgstr "ɵ" #: ../plugins/peopsxgl/gpucfg/interface.c:695 msgid "Additional uploads" -msgstr "附加上传" +msgstr "ϴ" #: ../plugins/peopsxgl/gpucfg/interface.c:703 msgid "unused" -msgstr "未使用" +msgstr "δʹ" #: ../plugins/peopsxgl/gpucfg/interface.c:711 msgid "Fake 'gpu busy'" -msgstr "欺骗 'gpu 忙' 状态" +msgstr "ƭ 'gpu æ' ״̬" #: ../plugins/peopsxgl/gpucfg/interface.c:719 msgid "Misc" -msgstr "杂项" +msgstr "" #: ../plugins/peopsxgl/gpucfg/interface.c:742 msgid "Scanlines" -msgstr "扫描线" +msgstr "ɨ" #: ../plugins/peopsxgl/gpucfg/interface.c:750 msgid "Blending (0..255, -1=dot):" -msgstr "混合 (0..255, -1=点阵):" +msgstr " (0..255, -1=):" #: ../plugins/peopsxgl/gpucfg/interface.c:758 msgid "Screen smoothing (can be slow or unsupported)" -msgstr "屏幕平滑 (可能较慢或不被支持)" +msgstr "Ļƽ (֧ܽ)" #: ../plugins/peopsxgl/gpucfg/interface.c:766 msgid "Use OpenGL extensions (recommended)" -msgstr "使用 OpenGL 扩展 (推荐)" +msgstr "ʹ OpenGL չ (Ƽ)" #: ../plugins/peopsxgl/gpucfg/interface.c:774 msgid "Polygon anti-aliasing (slow with most cards)" -msgstr "多边形抗锯齿 (对大多数显卡较慢)" +msgstr "ο (ԴԿ)" #: ../plugins/peopsxgl/gpucfg/interface.c:782 msgid "Line mode (polygons will not get filled)" -msgstr "框架模式 (不填充多边形)" +msgstr "ģʽ ()" #: ../plugins/peopsxgl/gpucfg/interface.c:790 msgid "Force 15 bit framebuffer updates (faster movies)" -msgstr "强制 15 位帧缓冲更新 (影片较快)" +msgstr "ǿ 15 λ֡ (ӰƬϿ)" #: ../plugins/peopsxgl/gpucfg/interface.c:798 msgid "Unfiltered MDECs (small movie speedup)" -msgstr "非过滤 MDEC (微小的影片加速)" +msgstr "ǹ MDEC (СӰƬ)" #: ../plugins/dfinput/dfinput.glade2:7 msgid "Configure Gamepad/Keyboard" -msgstr "配置手柄/键盘" +msgstr "ֱ/" #: ../plugins/dfinput/dfinput.glade2:25 msgid "Pad number:" -msgstr "手柄编号:" +msgstr "ֱ:" #: ../plugins/dfinput/dfinput.glade2:36 msgid "1" @@ -2363,44 +2363,44 @@ msgstr "2" #: ../plugins/dfinput/dfinput.glade2:73 msgid "Device file:" -msgstr "设备文件:" +msgstr "豸ļ:" #: ../plugins/dfinput/dfinput.glade2:104 msgid "Multi-threaded" -msgstr "多线程" +msgstr "߳" #: ../plugins/dfinput/dfinput.glade2:118 msgid "Analog" -msgstr "模拟" +msgstr "ģ" #: ../plugins/dfinput/dfinput.glade2:155 msgid "<b>Button Configuration</b>" -msgstr "<b>按键配置</b>" +msgstr "<b></b>" #: ../plugins/dfinput/dfinput.glade2:209 -msgid "Based on PadJoy by Erich Kitzmüller (ammoq@ammoq.com)" -msgstr "基于由 Erich Kitzmüller (ammoq@ammoq.com) 编写的 PadJoy" +msgid "Based on PadJoy by Erich Kitzmller (ammoq@ammoq.com)" +msgstr " Erich Kitzmller (ammoq@ammoq.com) д PadJoy" #~ msgid "_Load" -#~ msgstr "读取(_L)" +#~ msgstr "ȡ(_L)" #~ msgid "_Save" -#~ msgstr "保存(_S)" +#~ msgstr "(_S)" #~ msgid "_Run" -#~ msgstr "运行(_R)" +#~ msgstr "(_R)" #~ msgid "" #~ "PCSX is licensed under the GNU GPL; see the included COPYING file for " #~ "more detail." -#~ msgstr "PCSX 在 GNU GPL 条款下发布;请参看包含的 COPYING 文件。" +#~ msgstr "PCSX GNU GPL ·ο COPYING ļ" #~ msgid "This plugin reports that it should work correctly." -#~ msgstr "此插件报告其可正常工作。" +#~ msgstr "˲" #~ msgid "This plugin reports that it won't work correctly." -#~ msgstr "此插件报告其不可正常工作。" +#~ msgstr "˲䲻" #~ msgid "Could not load Cdrom" -#~ msgstr "无法加载光盘" +#~ msgstr "ع" #~ msgid "Could not open plugins directory: '%s'\n" -#~ msgstr "无法打开插件目录: \"%s\"\n" +#~ msgstr "Ŀ¼: \"%s\"\n" #~ msgid "Run CD Though &Bios" -#~ msgstr "使用 BIOS 运行光碟(&B)" +#~ msgstr "ʹ BIOS й(&B)" #~ msgid "Run CD Through BIOS" -#~ msgstr "使用 BIOS 运行光碟" +#~ msgstr "ʹ BIOS й" diff --git a/po/zh_TW.gmo b/po/zh_TW.gmo Binary files differindex 92f7ac9e..87a35089 100755 --- a/po/zh_TW.gmo +++ b/po/zh_TW.gmo diff --git a/po/zh_TW.po b/po/zh_TW.po index aef45602..1408b349 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -12,7 +12,7 @@ msgstr "" "Last-Translator: Wei Mingzhi <whistler@openoffice.org>\n" "Language-Team: Traditional Chinese <whistler@openoffice.org>\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" +"Content-Type: text/plain; charset=big5\n" "Content-Transfer-Encoding: 8bit\n" #: ../win32/gui/AboutDlg.c:26 @@ -25,13 +25,13 @@ msgid "" "ex-coders: Nocomp, Pete Bernett, nik3d\n" "Webmaster: AkumaX" msgstr "" -"PCSX - 一個 PlayStation 模擬器\n" +"PCSX - @ PlayStation \n" "\n" -"原作者:\n" -"主程式: linuzappz\n" -"輔助程式: shadow\n" -"前程式: Nocomp, Pete Bernett, nik3d\n" -"網絡管理: AkumaX" +"@:\n" +"D{: linuzappz\n" +"U{: shadow\n" +"e{: Nocomp, Pete Bernett, nik3d\n" +"z: AkumaX" #: ../win32/gui/AboutDlg.c:35 msgid "" @@ -44,63 +44,63 @@ msgid "" "\n" "http://www.codeplex.com/pcsxr" msgstr "" -"PCSX-df 開發者:\n" +"PCSX-df }o:\n" "Ryan Schultz, Andrew Burton, Stephen Chao,\n" "Marcus Comstedt, Stefan Sikora\n" "\n" -"PCSX Reloaded 開發者:\n" +"PCSX Reloaded }o:\n" "Wei Mingzhi\n" "\n" "http://www.codeplex.com/pcsxr" #: ../win32/gui/AboutDlg.c:46 msgid "About" -msgstr "關於 PCSX" +msgstr " PCSX" #: ../win32/gui/AboutDlg.c:48 ../win32/gui/AboutDlg.c:52 #: ../win32/gui/ConfigurePlugins.c:462 ../win32/gui/ConfigurePlugins.c:593 #: ../win32/gui/WndMain.c:906 ../win32/gui/WndMain.c:1142 #: ../plugins/peopsxgl/gpucfg/interface.c:129 msgid "OK" -msgstr "確定" +msgstr "Tw" #: ../win32/gui/AboutDlg.c:49 msgid "PCSX EMU\n" -msgstr "PCSX 模擬器\n" +msgstr "PCSX \n" #: ../win32/gui/ConfigurePlugins.c:385 msgid "This plugin reports that should work correctly" -msgstr "此外掛報告其可正常工作。" +msgstr "~ii`u@C" #: ../win32/gui/ConfigurePlugins.c:386 msgid "This plugin reports that should not work correctly" -msgstr "此外掛報告其不可正常工作。" +msgstr "~i䤣i`u@C" #: ../win32/gui/ConfigurePlugins.c:460 msgid "Configuration" -msgstr "配置" +msgstr "tm" #: ../win32/gui/ConfigurePlugins.c:463 ../win32/gui/ConfigurePlugins.c:594 #: ../win32/gui/WndMain.c:907 ../win32/gui/WndMain.c:1143 #: ../plugins/peopsxgl/gpucfg/interface.c:337 msgid "Cancel" -msgstr "取消" +msgstr "" #: ../win32/gui/ConfigurePlugins.c:464 msgid "Graphics" -msgstr "圖像" +msgstr "Ϲ" #: ../win32/gui/ConfigurePlugins.c:465 msgid "First Controller" -msgstr "主控制器" +msgstr "D" #: ../win32/gui/ConfigurePlugins.c:466 msgid "Second Controller" -msgstr "輔控制器" +msgstr "" #: ../win32/gui/ConfigurePlugins.c:467 msgid "Sound" -msgstr "聲音" +msgstr "n" #: ../win32/gui/ConfigurePlugins.c:468 msgid "Cdrom" @@ -112,42 +112,42 @@ msgstr "BIOS" #: ../win32/gui/ConfigurePlugins.c:470 msgid "Set Bios Directory" -msgstr "設置 BIOS 目錄" +msgstr "]m BIOS ؿ" #: ../win32/gui/ConfigurePlugins.c:471 msgid "Set Plugins Directory" -msgstr "設置外掛目錄" +msgstr "]m~ؿ" #: ../win32/gui/ConfigurePlugins.c:472 ../win32/gui/ConfigurePlugins.c:475 #: ../win32/gui/ConfigurePlugins.c:478 ../win32/gui/ConfigurePlugins.c:481 #: ../win32/gui/ConfigurePlugins.c:484 ../win32/gui/ConfigurePlugins.c:596 msgid "Configure..." -msgstr "配置..." +msgstr "tm..." #: ../win32/gui/ConfigurePlugins.c:473 ../win32/gui/ConfigurePlugins.c:476 #: ../win32/gui/ConfigurePlugins.c:479 ../win32/gui/ConfigurePlugins.c:482 #: ../win32/gui/ConfigurePlugins.c:485 ../win32/gui/ConfigurePlugins.c:597 msgid "Test..." -msgstr "測試..." +msgstr "..." #: ../win32/gui/ConfigurePlugins.c:474 ../win32/gui/ConfigurePlugins.c:477 #: ../win32/gui/ConfigurePlugins.c:480 ../win32/gui/ConfigurePlugins.c:483 #: ../win32/gui/ConfigurePlugins.c:486 ../win32/gui/ConfigurePlugins.c:598 msgid "About..." -msgstr "關於..." +msgstr "..." #: ../win32/gui/ConfigurePlugins.c:591 msgid "NetPlay Configuration" -msgstr "聯網遊戲配置" +msgstr "pCtm" #: ../win32/gui/ConfigurePlugins.c:595 msgid "NetPlay" -msgstr "聯網遊戲" +msgstr "pC" #: ../win32/gui/ConfigurePlugins.c:599 msgid "" "Note: The NetPlay Plugin Directory should be the same as the other Plugins." -msgstr "注意: 聯網遊戲外掛應和其它外掛放在同一資料夾中。" +msgstr "`N: pC~M䥦~bP@ƧC" #: ../win32/gui/plugin.c:90 ../win32/gui/WndMain.c:235 #, c-format @@ -209,159 +209,159 @@ msgstr "" #: ../win32/gui/plugin.c:177 msgid "Connecting..." -msgstr "正在連接..." +msgstr "bs..." #: ../win32/gui/plugin.c:179 ../win32/gui/plugin.c:186 #, c-format msgid "Please wait while connecting... %c\n" -msgstr "請稍候,正在連接... %c\n" +msgstr "еyԡAbs... %c\n" #: ../win32/gui/plugin.c:216 msgid "Error Opening CDR Plugin" -msgstr "無法開啟 CDR 外掛" +msgstr "Lk} CDR ~" #: ../win32/gui/plugin.c:279 #, c-format msgid "Error Opening GPU Plugin (%d)" -msgstr "無法開啟 GPU 外掛 (%d)" +msgstr "Lk} GPU ~ (%d)" #: ../win32/gui/plugin.c:281 #, c-format msgid "Error Opening SPU Plugin (%d)" -msgstr "無法開啟 SPU 外掛 (%d)" +msgstr "Lk} SPU ~ (%d)" #: ../win32/gui/plugin.c:284 #, c-format msgid "Error Opening PAD1 Plugin (%d)" -msgstr "無法開啟 PAD1 外掛 (%d)" +msgstr "Lk} PAD1 ~ (%d)" #: ../win32/gui/plugin.c:286 #, c-format msgid "Error Opening PAD2 Plugin (%d)" -msgstr "無法開啟 PAD2 外掛 (%d)" +msgstr "Lk} PAD2 ~ (%d)" #: ../win32/gui/plugin.c:309 msgid "Error Closing CDR Plugin" -msgstr "無法關閉 CD-ROM 外掛 (%d)" +msgstr "Lk CD-ROM ~ (%d)" #: ../win32/gui/plugin.c:311 msgid "Error Closing GPU Plugin" -msgstr "無法關閉 GPU 外掛" +msgstr "Lk GPU ~" #: ../win32/gui/plugin.c:313 msgid "Error Closing SPU Plugin" -msgstr "無法關閉 SPU 外掛" +msgstr "Lk SPU ~" #: ../win32/gui/plugin.c:315 msgid "Error Closing PAD1 Plugin" -msgstr "無法關閉 PAD1 外掛" +msgstr "Lk PAD1 ~" #: ../win32/gui/plugin.c:317 msgid "Error Closing PAD2 Plugin" -msgstr "無法關閉 PAD2 外掛!" +msgstr "Lk PAD2 ~!" #: ../win32/gui/plugin.c:335 #, c-format msgid "CDRinit error: %d" -msgstr "CDRinit 錯誤: %d" +msgstr "CDRinit ~: %d" #: ../win32/gui/plugin.c:337 #, c-format msgid "GPUinit error: %d" -msgstr "GPUinit 錯誤: %d" +msgstr "GPUinit ~: %d" #: ../win32/gui/plugin.c:339 #, c-format msgid "SPUinit error: %d" -msgstr "SPUinit 錯誤: %d" +msgstr "SPUinit ~: %d" #: ../win32/gui/plugin.c:341 #, c-format msgid "PAD1init error: %d" -msgstr "PAD1init 錯誤: %d" +msgstr "PAD1init ~: %d" #: ../win32/gui/plugin.c:343 #, c-format msgid "PAD2init error: %d" -msgstr "PAD2init 錯誤: %d" +msgstr "PAD2init ~: %d" #: ../win32/gui/plugin.c:346 #, c-format msgid "NETinit error: %d" -msgstr "NETinit 錯誤: %d" +msgstr "NETinit ~: %d" #: ../win32/gui/WndMain.c:74 msgid "Arabic" -msgstr "阿拉伯語" +msgstr "ԧBy" #: ../win32/gui/WndMain.c:75 msgid "Catalan" -msgstr "加泰隆尼亞語" +msgstr "[Ȼy" #: ../win32/gui/WndMain.c:76 msgid "German" -msgstr "德語" +msgstr "wy" #: ../win32/gui/WndMain.c:77 msgid "Greek" -msgstr "希臘語" +msgstr "þy" #: ../win32/gui/WndMain.c:78 ../win32/gui/WndMain.c:1471 #: ../win32/gui/WndMain.c:1473 msgid "English" -msgstr "英語" +msgstr "^y" #: ../win32/gui/WndMain.c:79 msgid "Spanish" -msgstr "西班牙語" +msgstr "Zy" #: ../win32/gui/WndMain.c:80 msgid "French" -msgstr "法語" +msgstr "ky" #: ../win32/gui/WndMain.c:81 msgid "Italian" -msgstr "意大利語" +msgstr "NjQy" #: ../win32/gui/WndMain.c:82 msgid "Portuguese" -msgstr "葡萄牙語" +msgstr "y" #: ../win32/gui/WndMain.c:83 msgid "Romanian" -msgstr "羅馬尼亞語" +msgstr "ùȻy" #: ../win32/gui/WndMain.c:84 msgid "Russian" -msgstr "俄語" +msgstr "Xy" #: ../win32/gui/WndMain.c:85 msgid "Simplified Chinese" -msgstr "簡體中文" +msgstr "²餤" #: ../win32/gui/WndMain.c:86 msgid "Traditional Chinese" -msgstr "繁體中文" +msgstr "c餤" #: ../win32/gui/WndMain.c:87 msgid "Japanese" -msgstr "日語" +msgstr "y" #: ../win32/gui/WndMain.c:88 msgid "Korean" -msgstr "韓國語" +msgstr "y" #: ../win32/gui/WndMain.c:129 msgid "Pcsx needs to be configured" -msgstr "Pcsx 需要被配置。" +msgstr "Pcsx ݭnQtmC" #: ../win32/gui/WndMain.c:133 msgid "Pcsx now will quit, restart it" -msgstr "PCSX 將關閉,請重新啟動它。" +msgstr "PCSX NAЭsҰʥC" #: ../win32/gui/WndMain.c:253 ../win32/gui/WndMain.c:305 msgid "PCSX State Format" -msgstr "PCSX 記錄格式" +msgstr "PCSX O榡" #: ../win32/gui/WndMain.c:280 #, c-format @@ -386,32 +386,32 @@ msgstr "" #: ../win32/gui/WndMain.c:382 ../win32/gui/WndMain.c:431 ../gui/Gtk2Gui.c:552 #: ../gui/Gtk2Gui.c:675 msgid "The CD does not appear to be a valid Playstation CD" -msgstr "此光碟不是一張合法的 PlayStation 光碟。" +msgstr "ФO@iXk PlayStation СC" #: ../win32/gui/WndMain.c:388 ../win32/gui/WndMain.c:437 ../gui/Gtk2Gui.c:560 #: ../gui/Gtk2Gui.c:683 msgid "Could not load CD-ROM!" -msgstr "無法加載光碟!" +msgstr "Lk[!" #: ../win32/gui/WndMain.c:398 msgid "Running BIOS is not supported with Internal HLE Bios." -msgstr "內部 HLE BIOS 不支援直接執行。" +msgstr " HLE BIOS 䴩C" #: ../win32/gui/WndMain.c:604 ../gui/Gtk2Gui.c:1046 msgid "Title" -msgstr "標題" +msgstr "D" #: ../win32/gui/WndMain.c:610 ../gui/Gtk2Gui.c:1052 msgid "Status" -msgstr "狀態" +msgstr "A" #: ../win32/gui/WndMain.c:616 msgid "Game ID" -msgstr "遊戲 ID" +msgstr "C ID" #: ../win32/gui/WndMain.c:622 msgid "Game" -msgstr "遊戲" +msgstr "C" #: ../win32/gui/WndMain.c:796 msgid "mid link block" @@ -423,246 +423,246 @@ msgstr "" #: ../win32/gui/WndMain.c:807 ../gui/Gtk2Gui.c:1126 msgid "Deleted" -msgstr "已刪除" +msgstr "wR" #: ../win32/gui/WndMain.c:808 ../win32/gui/WndMain.c:811 ../gui/Gtk2Gui.c:1128 #: ../gui/Gtk2Gui.c:1132 msgid "Free" -msgstr "空閑" +msgstr "Ŷ~" #: ../win32/gui/WndMain.c:810 ../gui/Gtk2Gui.c:1130 msgid "Used" -msgstr "已使用" +msgstr "wϥ" #: ../win32/gui/WndMain.c:904 msgid "Memcard Manager" -msgstr "記憶卡管理器" +msgstr "OХdz" #: ../win32/gui/WndMain.c:908 ../win32/gui/WndMain.c:911 msgid "Select Mcd" -msgstr "選擇" +msgstr "" #: ../win32/gui/WndMain.c:909 ../win32/gui/WndMain.c:912 msgid "Format Mcd" -msgstr "格式化" +msgstr "榡" #: ../win32/gui/WndMain.c:910 ../win32/gui/WndMain.c:913 msgid "Reload Mcd" -msgstr "重新加載" +msgstr "s[" #: ../win32/gui/WndMain.c:914 msgid "-> Copy ->" -msgstr "-> 複制 ->" +msgstr "-> ƨ ->" #: ../win32/gui/WndMain.c:915 msgid "<- Copy <-" -msgstr "<- 複制 <-" +msgstr "<- ƨ <-" #: ../win32/gui/WndMain.c:916 msgid "Paste" -msgstr "粘貼" +msgstr "߶K" #: ../win32/gui/WndMain.c:917 msgid "<- Un/Delete" -msgstr "<- 刪除/恢複" +msgstr "<- R/" #: ../win32/gui/WndMain.c:918 msgid "Un/Delete ->" -msgstr "刪除/恢複 ->" +msgstr "R/ ->" #: ../win32/gui/WndMain.c:920 msgid "Memory Card 1" -msgstr "記憶卡 1" +msgstr "OХd 1" #: ../win32/gui/WndMain.c:921 msgid "Memory Card 2" -msgstr "記憶卡 2" +msgstr "OХd 2" #: ../win32/gui/WndMain.c:976 msgid "Are you sure you want to paste this selection?" -msgstr "是否確認粘貼此選中內容?" +msgstr "O_T{߶K襤e?" #: ../win32/gui/WndMain.c:976 ../win32/gui/WndMain.c:1087 #: ../win32/gui/WndMain.c:1094 msgid "Confirmation" -msgstr "確認" +msgstr "T{" #: ../win32/gui/WndMain.c:1087 ../win32/gui/WndMain.c:1094 msgid "Are you sure you want to format this Memory Card?" -msgstr "是否確認格式化此記憶卡?" +msgstr "O_T{榡ƦOХd?" #: ../win32/gui/WndMain.c:1140 msgid "Cpu Config" -msgstr "CPU 配置" +msgstr "CPU tm" #: ../win32/gui/WndMain.c:1145 msgid "Disable Xa Decoding" -msgstr "禁用 XA 解碼" +msgstr "T XA ѽX" #: ../win32/gui/WndMain.c:1146 msgid "Sio Irq Always Enabled" -msgstr "SIO IRQ 總是啟用" +msgstr "SIO IRQ `Oҥ" #: ../win32/gui/WndMain.c:1147 msgid "Black && White Movies" -msgstr "黑白電影" +msgstr "¥չqv" #: ../win32/gui/WndMain.c:1148 msgid "Disable Cd audio" -msgstr "禁用 CD 音頻" +msgstr "T CD W" #: ../win32/gui/WndMain.c:1149 ../data/pcsx.glade2:1321 msgid "Autodetect" -msgstr "自動檢測" +msgstr "۰˴" #: ../win32/gui/WndMain.c:1150 msgid "Enable Interpreter Cpu" -msgstr "啟用解釋執行 CPU" +msgstr "ҥθ CPU" #: ../win32/gui/WndMain.c:1151 ../data/pcsx.glade2:1183 msgid "Enable Console Output" -msgstr "啟用控制台輸出" +msgstr "ҥαxX" #: ../win32/gui/WndMain.c:1152 msgid "Spu Irq Always Enabled" -msgstr "SPU IRQ 總是啟用" +msgstr "SPU IRQ `Oҥ" #: ../win32/gui/WndMain.c:1153 ../data/pcsx.glade2:1267 msgid "Parasite Eve 2, Vandal Hearts 1/2 Fix" -msgstr "Parasite Eve 2, Vandal Hearts 1/2 修正" +msgstr "Parasite Eve 2, Vandal Hearts 1/2 ץ" #: ../win32/gui/WndMain.c:1154 ../data/pcsx.glade2:1282 msgid "InuYasha Sengoku Battle Fix" -msgstr "InuYasha Sengoku 戰斗修正" +msgstr "InuYasha Sengoku Ԥץ" #: ../win32/gui/WndMain.c:1156 ../plugins/dfcdrom/interface.c:193 msgid "Options" -msgstr "選項" +msgstr "ﶵ" #: ../win32/gui/WndMain.c:1157 msgid "Psx System Type" -msgstr "Psx 系統類型" +msgstr "Psx t" #: ../win32/gui/WndMain.c:1229 msgid "Psx Mcd Format (*.mcr;*.mc;*.mem;*.vgs;*.mcd;*.gme;*.ddf)" -msgstr "Psx 記憶卡格式 (*.mcr;*.mc;*.mem;*.vgs;*.mcd;*.gme;*.ddf)" +msgstr "Psx OХd榡 (*.mcr;*.mc;*.mem;*.vgs;*.mcd;*.gme;*.ddf)" #: ../win32/gui/WndMain.c:1234 msgid "Psx Memory Card (*.mcr;*.mc)" -msgstr "Psx 記憶卡 (*.mcr;*.mc)" +msgstr "Psx OХd (*.mcr;*.mc)" #: ../win32/gui/WndMain.c:1239 msgid "CVGS Memory Card (*.mem;*.vgs)" -msgstr "VGS 記憶卡 (*.mem;*.vgs)" +msgstr "VGS OХd (*.mem;*.vgs)" #: ../win32/gui/WndMain.c:1244 msgid "Bleem Memory Card (*.mcd)" -msgstr "Bleem 記憶卡 (*.mcd)" +msgstr "Bleem OХd (*.mcd)" #: ../win32/gui/WndMain.c:1249 msgid "DexDrive Memory Card (*.gme)" -msgstr "DexDrive 記憶卡 (*.gme)" +msgstr "DexDrive OХd (*.gme)" #: ../win32/gui/WndMain.c:1254 msgid "DataDeck Memory Card (*.ddf)" -msgstr "DataDeck 記憶卡 (*.ddl)" +msgstr "DataDeck OХd (*.ddl)" #: ../win32/gui/WndMain.c:1259 ../win32/gui/WndMain.c:1340 ../gui/Cheat.c:372 #: ../gui/Gtk2Gui.c:626 msgid "All Files" -msgstr "所有檔案" +msgstr "Ҧɮ" #: ../win32/gui/WndMain.c:1298 msgid "Psx Exe Format" -msgstr "PSX EXE 格式" +msgstr "PSX EXE 榡" #: ../win32/gui/WndMain.c:1335 msgid "Psx Isos (*.iso;*.mdf;*.img;*.bin)" -msgstr "Psx 鏡像檔 (*.iso;*.mdf;*.img;*.bin)" +msgstr "Psx 蹳 (*.iso;*.mdf;*.img;*.bin)" #: ../win32/gui/WndMain.c:1409 msgid "&File" -msgstr "檔案(&F)" +msgstr "ɮ(&F)" #: ../win32/gui/WndMain.c:1410 msgid "E&xit" -msgstr "離開(&X)" +msgstr "}(&X)" #: ../win32/gui/WndMain.c:1412 msgid "&States" -msgstr "記錄(&S)" +msgstr "O(&S)" #: ../win32/gui/WndMain.c:1414 msgid "Run &EXE" -msgstr "執行 EXE(&E)" +msgstr " EXE(&E)" #: ../win32/gui/WndMain.c:1415 msgid "Run &BIOS" -msgstr "執行 BIOS(&B)" +msgstr " BIOS(&B)" #: ../win32/gui/WndMain.c:1416 msgid "Run &ISO" -msgstr "執行 ISO(&I)" +msgstr " ISO(&I)" #: ../win32/gui/WndMain.c:1417 msgid "Run &CD" -msgstr "執行光碟(&C)" +msgstr "(&C)" #: ../win32/gui/WndMain.c:1418 msgid "&Save" -msgstr "存儲(&S)" +msgstr "sx(&S)" #: ../win32/gui/WndMain.c:1419 msgid "&Load" -msgstr "讀取(&L)" +msgstr "Ū(&L)" #: ../win32/gui/WndMain.c:1420 ../win32/gui/WndMain.c:1426 msgid "&Other..." -msgstr "其它(&O)..." +msgstr "䥦(&O)..." #: ../win32/gui/WndMain.c:1421 ../win32/gui/WndMain.c:1427 msgid "Slot &5" -msgstr "記錄 5(&5)" +msgstr "O 5(&5)" #: ../win32/gui/WndMain.c:1422 ../win32/gui/WndMain.c:1428 msgid "Slot &4" -msgstr "記錄 4(&4)" +msgstr "O 4(&4)" #: ../win32/gui/WndMain.c:1423 ../win32/gui/WndMain.c:1429 msgid "Slot &3" -msgstr "記錄 3(&3)" +msgstr "O 3(&3)" #: ../win32/gui/WndMain.c:1424 ../win32/gui/WndMain.c:1430 msgid "Slot &2" -msgstr "記錄 2(&2)" +msgstr "O 2(&2)" #: ../win32/gui/WndMain.c:1425 ../win32/gui/WndMain.c:1431 msgid "Slot &1" -msgstr "記錄 1(&1)" +msgstr "O 1(&1)" #: ../win32/gui/WndMain.c:1433 msgid "&Emulator" -msgstr "模擬器(&E)" +msgstr "(&E)" #: ../win32/gui/WndMain.c:1434 msgid "S&witch ISO" -msgstr "更換 ISO(_W)" +msgstr " ISO(_W)" #: ../win32/gui/WndMain.c:1436 msgid "Re&set" -msgstr "複位(&S)" +msgstr "Ʀ(&S)" #: ../win32/gui/WndMain.c:1437 msgid "&Run" -msgstr "執行(&R)" +msgstr "(&R)" #: ../win32/gui/WndMain.c:1439 msgid "&Configuration" -msgstr "配置(&C)" +msgstr "tm(&C)" #: ../win32/gui/WndMain.c:1440 msgid "&Memory cards" -msgstr "記憶卡(&M)" +msgstr "OХd(&M)" #: ../win32/gui/WndMain.c:1441 msgid "C&PU" @@ -670,11 +670,11 @@ msgstr "CPU(&P)" #: ../win32/gui/WndMain.c:1443 msgid "&NetPlay" -msgstr "聯網遊戲(&N)" +msgstr "pC(&N)" #: ../win32/gui/WndMain.c:1445 msgid "&Controllers" -msgstr "控制器(&C)" +msgstr "(&C)" #: ../win32/gui/WndMain.c:1446 msgid "CD-&ROM" @@ -682,173 +682,173 @@ msgstr "CD-ROM(&R)" #: ../win32/gui/WndMain.c:1447 msgid "&Sound" -msgstr "聲音(&S)" +msgstr "n(&S)" #: ../win32/gui/WndMain.c:1448 msgid "&Graphics" -msgstr "圖像(&G)" +msgstr "Ϲ(&G)" #: ../win32/gui/WndMain.c:1450 msgid "&Plugins && Bios" -msgstr "外掛及 BIOS(&P)" +msgstr "~ BIOS(&P)" #: ../win32/gui/WndMain.c:1452 msgid "&Language" -msgstr "語言(&L)" +msgstr "y(&L)" #: ../win32/gui/WndMain.c:1476 msgid "&Help" -msgstr "說明(&H)" +msgstr "(&H)" #: ../win32/gui/WndMain.c:1477 msgid "&About..." -msgstr "關於(&A)..." +msgstr "(&A)..." #: ../win32/gui/WndMain.c:1654 msgid "Pcsx Msg" -msgstr "Pcsx 消息" +msgstr "Pcsx " #: ../win32/gui/WndMain.c:1657 msgid "Error Loading Symbol" -msgstr "無法加載符號" +msgstr "Lk[Ÿ" #: ../gui/Cheat.c:49 msgid " Yes" -msgstr " 是" +msgstr " O" #: ../gui/Cheat.c:118 msgid "Add New Cheat" -msgstr "添加新金手指" +msgstr "K[s" #: ../gui/Cheat.c:126 ../gui/Cheat.c:210 msgid "Cheat Description:" -msgstr "金手指描述:" +msgstr "yz:" #: ../gui/Cheat.c:134 ../gui/Cheat.c:219 msgid "Cheat Code:" -msgstr "金手指碼:" +msgstr "X:" #: ../gui/Cheat.c:164 ../gui/Cheat.c:259 ../gui/LnxMain.c:355 msgid "Error" -msgstr "錯誤" +msgstr "~" #: ../gui/Cheat.c:164 ../gui/Cheat.c:259 msgid "Invalid cheat code!" -msgstr "非法金手指碼!" +msgstr "DkX!" #: ../gui/Cheat.c:202 msgid "Edit Cheat" -msgstr "編輯金手指" +msgstr "s" #: ../gui/Cheat.c:357 msgid "Open Cheat File" -msgstr "打開金手指檔" +msgstr "}" #: ../gui/Cheat.c:367 ../gui/Cheat.c:407 msgid "PCSX Cheat Code Files (*.cht)" -msgstr "PCSX 金手指檔 (*.cht)" +msgstr "PCSX (*.cht)" #: ../gui/Cheat.c:397 msgid "Save Cheat File" -msgstr "儲存金手指檔" +msgstr "xs" #: ../gui/Cheat.c:412 msgid "All Files (*.*)" -msgstr "所有檔案 (*.*)" +msgstr "Ҧɮ (*.*)" #: ../gui/Cheat.c:445 ../gui/Cheat.c:531 ../gui/Gtk2Gui.c:377 #: ../gui/Gtk2Gui.c:998 msgid "Error: Glade interface could not be loaded!" -msgstr "錯誤:無法加載 Glade 界面!" +msgstr "~GLk[ Glade ɭ!" #: ../gui/Cheat.c:450 msgid "Cheat Codes" -msgstr "金手指碼" +msgstr "X" #: ../gui/Cheat.c:456 ../data/pcsx.glade2:2253 msgid "Enable" -msgstr "啟用" +msgstr "ҥ" #: ../gui/Cheat.c:462 msgid "Description" -msgstr "描述" +msgstr "yz" #: ../gui/Cheat.c:536 ../data/pcsx.glade2:2362 #, fuzzy msgid "Cheat Search" -msgstr "搜尋(_S)" +msgstr "jM(_S)" #: ../gui/Gtk2Gui.c:385 ../data/pcsx.glade2:517 msgid "Configure PCSX" -msgstr "配置 PCSX" +msgstr "tm PCSX" #: ../gui/Gtk2Gui.c:471 msgid "Select PSX EXE File" -msgstr "選擇 PS EXE 檔案" +msgstr " PS EXE ɮ" #: ../gui/Gtk2Gui.c:481 msgid "PlayStation Executable Files" -msgstr "PlayStation 執行檔" +msgstr "PlayStation " #: ../gui/Gtk2Gui.c:521 msgid "Not a valid PSX file" -msgstr "不是一個合法的 PSX 檔" +msgstr "O@ӦXk PSX " #: ../gui/Gtk2Gui.c:521 msgid "The file does not appear to be a valid Playstation executable" -msgstr "此文件不是一個合法的 PlayStation 執行檔" +msgstr "O@ӦXk PlayStation " #: ../gui/Gtk2Gui.c:552 ../gui/Gtk2Gui.c:675 msgid "CD ROM failed" -msgstr "CD-ROM 失敗" +msgstr "CD-ROM " #: ../gui/Gtk2Gui.c:560 msgid "The CD ROM could not be loaded" -msgstr "無法加載 CD-ROM" +msgstr "Lk[ CD-ROM" #: ../gui/Gtk2Gui.c:575 msgid "Could not run BIOS" -msgstr "無法執行 BIOS" +msgstr "Lk BIOS" #: ../gui/Gtk2Gui.c:575 msgid "Running BIOS is not supported with Internal HLE BIOS." -msgstr "內部 HLE BIOS 不支援直接執行。" +msgstr " HLE BIOS 䴩C" #: ../gui/Gtk2Gui.c:605 msgid "Open PSX Disc Image File" -msgstr "打開 PSX 光碟映像檔" +msgstr "} PSX ЬM" #: ../gui/Gtk2Gui.c:621 msgid "PSX Image Files (*.bin, *.img, *.mdf, *.iso)" -msgstr "PSX 鏡像檔 (*.bin, *.img, *.mdf, *.iso)" +msgstr "PSX 蹳 (*.bin, *.img, *.mdf, *.iso)" #: ../gui/Gtk2Gui.c:857 #, c-format msgid "Loaded state %s." -msgstr "已讀取記錄 %s。" +msgstr "wŪO %sC" #: ../gui/Gtk2Gui.c:862 #, c-format msgid "Error loading state %s!" -msgstr "讀取記錄 %s 時出錯。" +msgstr "ŪO %s ɥXC" #: ../gui/Gtk2Gui.c:873 #, c-format msgid "Saved state %s." -msgstr "已存儲記錄 %s" +msgstr "wsxO %s" #: ../gui/Gtk2Gui.c:875 #, c-format msgid "Error saving state %s!" -msgstr "存儲記錄 %s 時出錯。" +msgstr "sxO %s ɥXC" #: ../gui/Gtk2Gui.c:909 ../gui/Gtk2Gui.c:936 msgid "Select State File" -msgstr "選擇記錄檔案" +msgstr "ܰOɮ" #: ../gui/Gtk2Gui.c:1040 msgid "Icon" -msgstr "圖符" +msgstr "ϲ" #: ../gui/Gtk2Gui.c:1058 msgid "ID" @@ -856,60 +856,60 @@ msgstr "ID" #: ../gui/Gtk2Gui.c:1064 msgid "Name" -msgstr "名稱" +msgstr "W" #: ../gui/Gtk2Gui.c:1224 msgid "Format this Memory Card?" -msgstr "格式化此記憶卡?" +msgstr "榡ƦOХd?" #: ../gui/Gtk2Gui.c:1226 msgid "" "If you format the memory card, the card will be empty, and any existing data " "overwritten." -msgstr "如果您選擇格式化記憶卡,記憶卡將被清空,並且任何現有數據都將被覆蓋。" +msgstr "pGzܮ榡ưOХdAOХdNQMšAåB{ƾڳNQл\C" #: ../gui/Gtk2Gui.c:1229 msgid "Format card" -msgstr "格式化記憶卡" +msgstr "榡ưOХd" #: ../gui/Gtk2Gui.c:1344 msgid "No space available in the target memory card!" -msgstr "目標記憶卡沒有空餘位置!" +msgstr "ؼаOХdSžlm!" #: ../gui/Gtk2Gui.c:1489 msgid "Memory Card Manager" -msgstr "記憶卡管理器" +msgstr "OХdz" #: ../gui/Gtk2Gui.c:1758 msgid "No configuration required" -msgstr "不需要配置" +msgstr "ݭntm" #: ../gui/Gtk2Gui.c:1758 msgid "This plugin doesn't need to be configured." -msgstr "此外掛需要被配置。" +msgstr "~ݭnQtmC" #: ../gui/Gtk2Gui.c:2017 #, c-format msgid "Could not open BIOS directory: '%s'\n" -msgstr "無法開啟 BIOS 目錄: \"%s\"\n" +msgstr "Lk} BIOS ؿ: \"%s\"\n" #: ../gui/Gtk2Gui.c:2049 ../gui/Gtk2Gui.c:2142 ../gui/LnxMain.c:146 #, c-format msgid "Could not open directory: '%s'\n" -msgstr "無法開啟目錄: \"%s\"\n" +msgstr "Lk}ҥؿ: \"%s\"\n" #: ../gui/Gtk2Gui.c:2111 msgid "Internal HLE Bios" -msgstr "內部 HLE-Bios" +msgstr " HLE-Bios" #: ../gui/Gtk2Gui.c:2203 msgid "Notice" -msgstr "警告" +msgstr "ĵi" #: ../gui/LnxMain.c:65 #, c-format msgid "Creating memory card: %s\n" -msgstr "創建記憶卡: %s\n" +msgstr "ЫذOХd: %s\n" #: ../gui/LnxMain.c:262 msgid "" @@ -924,245 +924,245 @@ msgid "" "\t-h -help\tDisplay this message\n" "\tfile\t\tLoads file\n" msgstr "" -" pcsx [選項] [檔案]\n" -"\t選項:\n" -"\t-runcd\t\t執行 CD-ROM\n" -"\t-cdfile 檔案\t執行 CD 鏡像檔\n" -"\t-nogui\t\t不開啟 GTK GUI\n" -"\t-cfg 檔案\t加載一個特定的配置檔案 (默認為: ~/.pcsx/pcsx.cfg)\n" -"\t-psxout\t\t啟用 PSX 輸出\n" -"\t-load 編號\t加載指定編號的記錄 (1-5)\n" -"\t-h -help\t顯示此信息\n" -"\t檔案\t\t加載檔案\n" +" pcsx [ﶵ] [ɮ]\n" +"\tﶵ:\n" +"\t-runcd\t\t CD-ROM\n" +"\t-cdfile ɮ\t CD 蹳\n" +"\t-nogui\t\t} GTK GUI\n" +"\t-cfg ɮ\t[@ӯSwtmɮ (q{: ~/.pcsx/pcsx.cfg)\n" +"\t-psxout\t\tҥ PSX X\n" +"\t-load s\t[wsO (1-5)\n" +"\t-h -help\tܦH\n" +"\tɮ\t\t[ɮ\n" #: ../gui/LnxMain.c:300 #, c-format msgid "" "PCSX cannot be configured without using the GUI -- you should restart " "without -nogui.\n" -msgstr "PCSX 不能在字符界面下配置 -- 請不使用 -nogui 參數重新啟動程式\n" +msgstr "PCSX brŬɭUtm -- Фϥ -nogui ѼƭsҰʵ{\n" #: ../gui/LnxMain.c:355 msgid "Failed loading plugins!" -msgstr "外掛加載失敗" +msgstr "~[" #: ../gui/LnxMain.c:372 #, c-format msgid "Could not load CD-ROM!\n" -msgstr "無法加載光碟。\n" +msgstr "Lk[СC\n" #: ../gui/LnxMain.c:411 #, c-format msgid "PSX emulator couldn't be initialized.\n" -msgstr "PSX 模擬器無法初期化。\n" +msgstr "PSX LkơC\n" #: ../gui/Plugin.c:204 ../data/pcsx.glade2:1219 #, c-format msgid "SIO IRQ Always Enabled" -msgstr "SIO IRQ 總是啟用" +msgstr "SIO IRQ `Oҥ" #: ../gui/Plugin.c:205 #, c-format msgid "SIO IRQ Not Always Enabled" -msgstr "SIO IRQ 不總是啟用" +msgstr "SIO IRQ `Oҥ" #: ../gui/Plugin.c:211 #, c-format msgid "Black & White Mdecs Only Enabled" -msgstr "Black & White Mdecs Only 啟用" +msgstr "Black & White Mdecs Only ҥ" #: ../gui/Plugin.c:212 #, c-format msgid "Black & White Mdecs Only Disabled" -msgstr "Black & White Mdecs Only 禁用" +msgstr "Black & White Mdecs Only T" #: ../gui/Plugin.c:218 #, c-format msgid "XA Enabled" -msgstr "XA 已啟用" +msgstr "XA wҥ" #: ../gui/Plugin.c:219 #, c-format msgid "XA Disabled" -msgstr "XA 已禁用" +msgstr "XA wT" #: ../gui/Plugin.c:285 msgid "Error opening CD-ROM plugin!" -msgstr "無法開啟 CD-ROM 外掛!" +msgstr "Lk} CD-ROM ~!" #: ../gui/Plugin.c:287 msgid "Error opening SPU plugin!" -msgstr "無法開啟 SPU 外掛!" +msgstr "Lk} SPU ~!" #: ../gui/Plugin.c:290 msgid "Error opening GPU plugin!" -msgstr "無法開啟 GPU 外掛!" +msgstr "Lk} GPU ~!" #: ../gui/Plugin.c:292 msgid "Error opening Controller 1 plugin!" -msgstr "無法開啟 \"控制器 1\" 外掛!" +msgstr "Lk} \" 1\" ~!" #: ../gui/Plugin.c:294 msgid "Error opening Controller 2 plugin!" -msgstr "無法開啟 \"控制器 2\" 外掛!" +msgstr "Lk} \" 2\" ~!" #: ../gui/Plugin.c:374 msgid "Error closing CD-ROM plugin!" -msgstr "無法關閉 CD-ROM 外掛!" +msgstr "Lk CD-ROM ~!" #: ../gui/Plugin.c:376 msgid "Error closing SPU plugin!" -msgstr "無法關閉 SPU 外掛!" +msgstr "Lk SPU ~!" #: ../gui/Plugin.c:378 msgid "Error closing Controller 1 Plugin!" -msgstr "無法關閉 \"控制器 1\" 外掛!" +msgstr "Lk \" 1\" ~!" #: ../gui/Plugin.c:380 msgid "Error closing Controller 2 plugin!" -msgstr "無法關閉 \"控制器 2\" 外掛!" +msgstr "Lk \" 2\" ~!" #: ../gui/Plugin.c:382 msgid "Error closing GPU plugin!" -msgstr "無法關閉 GPU 外掛!" +msgstr "Lk GPU ~!" #: ../libpcsxcore/cdriso.c:125 #, c-format msgid "Could not open %s.\n" -msgstr "無法開啟 \"%s\"\n" +msgstr "Lk} \"%s\"\n" #: ../libpcsxcore/cheat.c:335 ../libpcsxcore/cheat.c:454 msgid "(Untitled)" -msgstr "(未定名)" +msgstr "(wW)" #: ../libpcsxcore/misc.c:372 #, c-format msgid "Error opening file: %s" -msgstr "開啟檔案錯誤: %s!" +msgstr "}ɮ~: %s!" #: ../libpcsxcore/misc.c:390 msgid "CPE files not supported." -msgstr "CPE 檔案不被支援!" +msgstr "CPE ɮפQ䴩!" #: ../libpcsxcore/misc.c:394 msgid "COFF files not supported." -msgstr "COFF 檔案不被支援!" +msgstr "COFF ɮפQ䴩!" #: ../libpcsxcore/misc.c:398 msgid "This file does not appear to be a valid PSX file." -msgstr "此檔案不是一個合法的 PSX 檔案。" +msgstr "ɮפO@ӦXk PSX ɮסC" #: ../libpcsxcore/plugins.c:33 #, c-format msgid "Error loading %s: %s" -msgstr "無法加載 %s: %s" +msgstr "Lk[ %s: %s" #: ../libpcsxcore/plugins.c:162 #, c-format msgid "Could not load GPU plugin %s!" -msgstr "無法加載 GPU 外掛 %s!" +msgstr "Lk[ GPU ~ %s!" #: ../libpcsxcore/plugins.c:228 #, c-format msgid "Could not load CD-ROM plugin %s!" -msgstr "無法加載 CD-ROM 外掛 %s!" +msgstr "Lk[ CD-ROM ~ %s!" #: ../libpcsxcore/plugins.c:467 #, c-format msgid "Could not load SPU plugin %s!" -msgstr "無法加載 SPU 外掛 %s!" +msgstr "Lk[ SPU ~ %s!" #: ../libpcsxcore/plugins.c:615 #, c-format msgid "Could not load Controller 1 plugin %s!" -msgstr "無法加載 \"控制器1\" 外掛 %s!" +msgstr "Lk[ \"1\" ~ %s!" #: ../libpcsxcore/plugins.c:669 #, c-format msgid "Could not load Controller 2 plugin %s!" -msgstr "無法加載 \"控制器2\" 外掛 %s!" +msgstr "Lk[ \"2\" ~ %s!" #: ../libpcsxcore/plugins.c:712 #, c-format msgid "Could not load NetPlay plugin %s!" -msgstr "無法加載聯網遊戲外掛 %s!" +msgstr "Lk[pC~ %s!" #: ../libpcsxcore/plugins.c:775 #, c-format msgid "Error initializing CD-ROM plugin: %d" -msgstr "CD-ROM 外掛初始化錯誤: %d" +msgstr "CD-ROM ~lƿ~: %d" #: ../libpcsxcore/plugins.c:777 #, c-format msgid "Error initializing GPU plugin: %d" -msgstr "GPU 外掛初始化錯誤: %d" +msgstr "GPU ~lƿ~: %d" #: ../libpcsxcore/plugins.c:779 #, c-format msgid "Error initializing SPU plugin: %d" -msgstr "SPU 外掛初始化錯誤: %d" +msgstr "SPU ~lƿ~: %d" #: ../libpcsxcore/plugins.c:781 #, c-format msgid "Error initializing Controller 1 plugin: %d" -msgstr "\"控制器1\" 外掛初始化錯誤: %d" +msgstr "\"1\" ~lƿ~: %d" #: ../libpcsxcore/plugins.c:783 #, c-format msgid "Error initializing Controller 2 plugin: %d" -msgstr "\"控制器2\" 外掛初始化錯誤: %d" +msgstr "\"2\" ~lƿ~: %d" #: ../libpcsxcore/plugins.c:787 #, c-format msgid "Error initializing NetPlay plugin: %d" -msgstr "聯網遊戲外掛初始化錯誤: %d" +msgstr "pC~lƿ~: %d" #: ../libpcsxcore/plugins.c:790 msgid "Plugins loaded.\n" -msgstr "外掛已加載。\n" +msgstr "~w[C\n" #: ../libpcsxcore/psxmem.c:69 msgid "Error allocating memory!" -msgstr "分配內存錯誤!" +msgstr "ts~!" #: ../libpcsxcore/psxmem.c:109 #, c-format msgid "Could not open BIOS:\"%s\". Enabling HLE Bios!\n" -msgstr "無法開啟 BIOS: \"%s\"。使用內部 HLE Bios。\n" +msgstr "Lk} BIOS: \"%s\"CϥΤ HLE BiosC\n" #: ../libpcsxcore/r3000a.c:34 #, c-format msgid "Running PCSX Version %s (%s).\n" -msgstr "PCSX 版本 %s (%s) 執行中。\n" +msgstr "PCSX %s (%s) 椤C\n" #: ../libpcsxcore/sio.c:99 msgid "Connection closed!\n" -msgstr "連接被關閉!\n" +msgstr "sQ!\n" #: ../libpcsxcore/sio.c:322 #, c-format msgid "No memory card value was specified - creating a default card %s\n" -msgstr "未指定記憶卡 - 創建一個新的記憶卡 %s\n" +msgstr "wOХd - Ыؤ@ӷsOХd %s\n" #: ../libpcsxcore/sio.c:326 #, c-format msgid "The memory card %s doesn't exist - creating it\n" -msgstr "記憶卡 %s 不存在 - 正在創建\n" +msgstr "OХd %s sb - bЫ\n" #: ../libpcsxcore/sio.c:342 #, c-format msgid "Memory card %s failed to load!\n" -msgstr "記憶卡 %s 讀取失敗!\n" +msgstr "OХd %s Ū!\n" #: ../libpcsxcore/sio.c:346 #, c-format msgid "Loading memory card %s\n" -msgstr "正在加載記憶卡 %s\n" +msgstr "b[OХd %s\n" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:8 #, fuzzy msgid "Configure X11 Video" -msgstr "配置 PCSX" +msgstr "tm PCSX" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:39 msgid "Initial Window Size:" @@ -1171,7 +1171,7 @@ msgstr "" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:50 #, fuzzy msgid "Stretching:" -msgstr "在此處查找外掛:" +msgstr "bBd~:" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:63 msgid "Dithering:" @@ -1240,7 +1240,7 @@ msgstr "" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:219 #, fuzzy msgid "Autodetect FPS limit" -msgstr "自動檢測" +msgstr "۰˴" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:235 msgid "Skip frames when rendering." @@ -1261,7 +1261,7 @@ msgstr "" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:295 #, fuzzy msgid "<b>Framerate</b>" -msgstr "<b>金手指碼</b>" +msgstr "<b>X</b>" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:324 #: ../plugins/peopsxgl/gpucfg/interface.c:567 @@ -1287,7 +1287,7 @@ msgstr "" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:410 #, fuzzy msgid "Disable CPU Saving" -msgstr "禁用 CD 音頻" +msgstr "T CD W" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:426 msgid "Odd/even bit hack" @@ -1333,7 +1333,7 @@ msgstr "" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:580 #, fuzzy msgid "Disable coordinate check" -msgstr "禁用 XA 解碼" +msgstr "T XA ѽX" #: ../plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2:596 msgid "Chrono Cross" @@ -1397,83 +1397,83 @@ msgstr "PCSX" #: ../data/pcsx.glade2:23 msgid "_File" -msgstr "檔案(_F)" +msgstr "ɮ(_F)" #: ../data/pcsx.glade2:30 msgid "Run _CD" -msgstr "執行光碟(_C)" +msgstr "(_C)" #: ../data/pcsx.glade2:46 msgid "Run _ISO" -msgstr "執行 _ISO" +msgstr " _ISO" #: ../data/pcsx.glade2:62 msgid "Run _BIOS" -msgstr "執行 _BIOS" +msgstr " _BIOS" #: ../data/pcsx.glade2:78 msgid "Run _EXE" -msgstr "執行 _EXE" +msgstr " _EXE" #: ../data/pcsx.glade2:99 msgid "E_xit" -msgstr "離開(_X)" +msgstr "}(_X)" #: ../data/pcsx.glade2:119 msgid "_Emulator" -msgstr "模擬器(_E)" +msgstr "(_E)" #: ../data/pcsx.glade2:126 msgid "_Continue" -msgstr "繼續(_C)" +msgstr "~(_C)" #: ../data/pcsx.glade2:141 msgid "_Reset" -msgstr "複位(_R)" +msgstr "Ʀ(_R)" #: ../data/pcsx.glade2:161 msgid "_Switch ISO" -msgstr "更換 ISO(_S)" +msgstr " ISO(_S)" #: ../data/pcsx.glade2:182 msgid "_Save State" -msgstr "存儲記錄(_S)" +msgstr "sxO(_S)" #: ../data/pcsx.glade2:189 ../data/pcsx.glade2:268 msgid "Slot _1" -msgstr "記錄 _1" +msgstr "O _1" #: ../data/pcsx.glade2:198 ../data/pcsx.glade2:277 msgid "Slot _2" -msgstr "記錄 _2" +msgstr "O _2" #: ../data/pcsx.glade2:207 ../data/pcsx.glade2:286 msgid "Slot _3" -msgstr "記錄 _3" +msgstr "O _3" #: ../data/pcsx.glade2:216 ../data/pcsx.glade2:295 msgid "Slot _4" -msgstr "記錄 _4" +msgstr "O _4" #: ../data/pcsx.glade2:225 ../data/pcsx.glade2:304 msgid "Slot _5" -msgstr "記錄 _5" +msgstr "O _5" #: ../data/pcsx.glade2:234 ../data/pcsx.glade2:313 msgid "_Other..." -msgstr "其它(_O)..." +msgstr "䥦(_O)..." #: ../data/pcsx.glade2:261 msgid "_Load State" -msgstr "讀取記錄(_L)" +msgstr "ŪO(_L)" #: ../data/pcsx.glade2:344 msgid "_Configuration" -msgstr "配置(_C)" +msgstr "tm(_C)" #: ../data/pcsx.glade2:351 msgid "_Plugins & BIOS" -msgstr "外掛及 BIOS(_P)" +msgstr "~ BIOS(_P)" #: ../data/pcsx.glade2:372 msgid "_CPU" @@ -1481,55 +1481,55 @@ msgstr "_CPU" #: ../data/pcsx.glade2:387 msgid "_Memory Cards" -msgstr "記憶卡(_M)" +msgstr "OХd(_M)" #: ../data/pcsx.glade2:403 msgid "_Netplay" -msgstr "聯網遊戲(_N)" +msgstr "pC(_N)" #: ../data/pcsx.glade2:423 msgid "Chea_t" -msgstr "金手指(_T)" +msgstr "(_T)" #: ../data/pcsx.glade2:431 msgid "_Browse" -msgstr "檢視(_B)" +msgstr "˵(_B)" #: ../data/pcsx.glade2:445 msgid "_Search" -msgstr "搜尋(_S)" +msgstr "jM(_S)" #: ../data/pcsx.glade2:474 msgid "_Help" -msgstr "說明(_H)" +msgstr "(_H)" #: ../data/pcsx.glade2:481 msgid "_About PCSX" -msgstr "關於 PCSX(_A)" +msgstr " PCSX(_A)" #: ../data/pcsx.glade2:617 msgid "Select Folder to Search" -msgstr "選擇要查找的資料夾" +msgstr "ܭnd䪺Ƨ" #: ../data/pcsx.glade2:633 msgid "Search in:" -msgstr "在此處查找外掛:" +msgstr "bBd~:" #: ../data/pcsx.glade2:906 msgid "Graphics:" -msgstr "圖像:" +msgstr "Ϲ:" #: ../data/pcsx.glade2:919 msgid "Sound:" -msgstr "聲音:" +msgstr "n:" #: ../data/pcsx.glade2:934 msgid "Controller 1: " -msgstr "控制器 1:" +msgstr " 1:" #: ../data/pcsx.glade2:949 msgid "Controller 2:" -msgstr "控制器 2:" +msgstr " 2:" #: ../data/pcsx.glade2:964 msgid "CD-ROM:" @@ -1537,7 +1537,7 @@ msgstr "CD-ROM:" #: ../data/pcsx.glade2:1002 msgid "<b>Plugins</b>" -msgstr "<b>外掛</b>" +msgstr "<b>~</b>" #: ../data/pcsx.glade2:1061 msgid "<b>BIOS</b>" @@ -1545,35 +1545,35 @@ msgstr "<b>BIOS</b>" #: ../data/pcsx.glade2:1106 msgid "Configure CPU" -msgstr "配置 CPU" +msgstr "tm CPU" #: ../data/pcsx.glade2:1133 msgid "Enable Debugger" -msgstr "啟用調試器" +msgstr "ҥνով" #: ../data/pcsx.glade2:1151 msgid "SPU IRQ Always Enabled" -msgstr "SPU IRQ 總是啟用" +msgstr "SPU IRQ `Oҥ" #: ../data/pcsx.glade2:1167 msgid "Black & White Movies" -msgstr "黑白電影" +msgstr "¥չqv" #: ../data/pcsx.glade2:1201 msgid "Enable Interpreter CPU" -msgstr "啟用解釋執行 CPU" +msgstr "ҥθ CPU" #: ../data/pcsx.glade2:1235 msgid "Disable CD Audio" -msgstr "禁用 CD 音頻" +msgstr "T CD W" #: ../data/pcsx.glade2:1251 msgid "Disable XA Decoding" -msgstr "禁用 XA 解碼" +msgstr "T XA ѽX" #: ../data/pcsx.glade2:1298 msgid "<b>Options</b>" -msgstr "<b>選項</b>" +msgstr "<b>ﶵ</b>" #: ../data/pcsx.glade2:1335 msgid "" @@ -1585,43 +1585,43 @@ msgstr "" #: ../data/pcsx.glade2:1349 msgid "<b>System Type</b>" -msgstr "<b>系統類型</b>" +msgstr "<b>t</b>" #: ../data/pcsx.glade2:1391 msgid "Configure NetPlay" -msgstr "配置聯網遊戲" +msgstr "tmpC" #: ../data/pcsx.glade2:1473 msgid "<b>NetPlay</b>" -msgstr "<b>聯網遊戲</b>" +msgstr "<b>pC</b>" #: ../data/pcsx.glade2:1517 msgid "Configure Memory Cards" -msgstr "配置記憶卡" +msgstr "tmOХd" #: ../data/pcsx.glade2:1587 ../data/pcsx.glade2:1951 msgid "Format" -msgstr "格式化" +msgstr "榡" #: ../data/pcsx.glade2:1631 ../data/pcsx.glade2:1995 msgid "Reload" -msgstr "重新加載" +msgstr "s[" #: ../data/pcsx.glade2:1673 msgid "<b>Memory Card 1</b>" -msgstr "<b>記憶卡 1</b>" +msgstr "<b>OХd 1</b>" #: ../data/pcsx.glade2:1728 ../data/pcsx.glade2:1772 msgid "Copy" -msgstr "複制" +msgstr "ƨ" #: ../data/pcsx.glade2:1819 ../data/pcsx.glade2:1866 msgid "Un/Delete" -msgstr "刪除/恢複" +msgstr "R/" #: ../data/pcsx.glade2:2037 msgid "<b>Memory Card 2</b>" -msgstr "<b>記憶卡 2</b>" +msgstr "<b>OХd 2</b>" #: ../data/pcsx.glade2:2091 msgid "" @@ -1630,14 +1630,14 @@ msgid "" "(C) 2005-2006 Andrew Burton\n" "(C) 2008-2009 Wei Mingzhi" msgstr "" -"(C) 1999-2003 PCSX 開發組\n" +"(C) 1999-2003 PCSX }o\n" "(C) 2005-2006 Ryan Schultz\n" "(C) 2005-2006 Andrew Burton\n" "(C) 2008-2009 Wei Mingzhi" #: ../data/pcsx.glade2:2095 msgid "A PlayStation emulator." -msgstr "一個 PlayStation 模擬器。" +msgstr "@ PlayStation C" #: ../data/pcsx.glade2:2097 msgid "PCSX Reloaded" @@ -1668,11 +1668,11 @@ msgstr "Wei Mingzhi <whistler@openoffice.org>" #: ../data/pcsx.glade2:2148 msgid "Edit Cheat Codes" -msgstr "編輯金手指" +msgstr "s" #: ../data/pcsx.glade2:2185 msgid "<b>Cheat Codes</b>" -msgstr "<b>金手指碼</b>" +msgstr "<b>X</b>" #: ../data/pcsx.glade2:2203 msgid "gtk-add" @@ -1688,7 +1688,7 @@ msgstr "" #: ../data/pcsx.glade2:2285 msgid "Disable" -msgstr "禁用" +msgstr "T" #: ../data/pcsx.glade2:2303 msgid "gtk-open" @@ -1715,7 +1715,7 @@ msgstr "" #: ../data/pcsx.glade2:2415 #, fuzzy msgid "Search For:" -msgstr "在此處查找外掛:" +msgstr "bBd~:" #: ../data/pcsx.glade2:2425 msgid "Data Type:" @@ -1761,22 +1761,22 @@ msgstr "" #: ../data/pcsx.glade2:2712 #, fuzzy msgid "Search" -msgstr "搜尋(_S)" +msgstr "jM(_S)" #: ../data/pcsx.glade2:2741 #, fuzzy msgid "Restart" -msgstr "複位(_R)" +msgstr "Ʀ(_R)" #: ../data/pcsx.glade2:2768 #, fuzzy msgid "<b>Cheat Search</b>" -msgstr "<b>金手指碼</b>" +msgstr "<b>X</b>" #: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:9 #, fuzzy msgid "Configure Sound" -msgstr "配置 PCSX" +msgstr "tm PCSX" #: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:62 msgid "Volume:" @@ -1816,7 +1816,7 @@ msgstr "" #: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:208 #, fuzzy msgid "<b>General</b>" -msgstr "<b>聯網遊戲</b>" +msgstr "<b>pC</b>" #: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:264 msgid "Enable or disable XA music." @@ -1825,7 +1825,7 @@ msgstr "" #: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:266 #, fuzzy msgid "Enable XA" -msgstr "啟用" +msgstr "ҥ" #: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:284 msgid "Choose this if XA music is played too quickly." @@ -1838,7 +1838,7 @@ msgstr "" #: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:308 #, fuzzy msgid "<b>XA Music</b>" -msgstr "<b>外掛</b>" +msgstr "<b>~</b>" #: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:364 msgid "Use the asynchronous SPU interface." @@ -1883,7 +1883,7 @@ msgstr "" #: ../plugins/dfcdrom/interface.c:73 #, fuzzy msgid "CDR configuration" -msgstr "配置" +msgstr "tm" #: ../plugins/dfcdrom/interface.c:98 msgid "Choose your CD-ROM device or type its path if it's not listed" @@ -1892,7 +1892,7 @@ msgstr "" #: ../plugins/dfcdrom/interface.c:101 #, fuzzy msgid "Select CD-ROM device" -msgstr "選擇" +msgstr "" #: ../plugins/dfcdrom/interface.c:119 msgid "Select read mode:" @@ -1921,7 +1921,7 @@ msgstr "" #: ../plugins/peopsxgl/gpucfg/interface.c:117 #, fuzzy msgid "OpenGL Driver configuration" -msgstr "配置" +msgstr "tm" #: ../plugins/peopsxgl/gpucfg/interface.c:137 msgid "Textures" @@ -2029,7 +2029,7 @@ msgstr "" #: ../plugins/peopsxgl/gpucfg/interface.c:345 #, fuzzy msgid "Framerate" -msgstr "<b>金手指碼</b>" +msgstr "<b>X</b>" #: ../plugins/peopsxgl/gpucfg/interface.c:368 msgid "FPS" @@ -2038,7 +2038,7 @@ msgstr "" #: ../plugins/peopsxgl/gpucfg/interface.c:376 #, fuzzy msgid "FPS limit manual" -msgstr "自動檢測" +msgstr "۰˴" #: ../plugins/peopsxgl/gpucfg/interface.c:385 msgid "Show FPS display on startup" @@ -2047,7 +2047,7 @@ msgstr "" #: ../plugins/peopsxgl/gpucfg/interface.c:393 #, fuzzy msgid "Use FPS limit" -msgstr "自動檢測" +msgstr "۰˴" #: ../plugins/peopsxgl/gpucfg/interface.c:401 msgid "FPS limit auto-detection" @@ -2167,7 +2167,7 @@ msgstr "" #: ../plugins/peopsxgl/gpucfg/interface.c:607 #, fuzzy msgid "Disable coord check" -msgstr "禁用 XA 解碼" +msgstr "T XA ѽX" #: ../plugins/peopsxgl/gpucfg/interface.c:615 msgid "No blue glitches (LoD)" @@ -2212,7 +2212,7 @@ msgstr "" #: ../plugins/peopsxgl/gpucfg/interface.c:703 #, fuzzy msgid "unused" -msgstr "已使用" +msgstr "wϥ" #: ../plugins/peopsxgl/gpucfg/interface.c:711 msgid "Fake 'gpu busy'" @@ -2225,7 +2225,7 @@ msgstr "" #: ../plugins/peopsxgl/gpucfg/interface.c:742 #, fuzzy msgid "Scanlines" -msgstr "西班牙語" +msgstr "Zy" #: ../plugins/peopsxgl/gpucfg/interface.c:750 msgid "Blending (0..255, -1=dot):" @@ -2258,7 +2258,7 @@ msgstr "" #: ../plugins/dfinput/dfinput.glade2:7 #, fuzzy msgid "Configure Gamepad/Keyboard" -msgstr "配置記憶卡" +msgstr "tmOХd" #: ../plugins/dfinput/dfinput.glade2:25 msgid "Pad number:" @@ -2287,40 +2287,40 @@ msgstr "" #: ../plugins/dfinput/dfinput.glade2:155 #, fuzzy msgid "<b>Button Configuration</b>" -msgstr "配置" +msgstr "tm" #: ../plugins/dfinput/dfinput.glade2:209 -msgid "Based on PadJoy by Erich Kitzmüller (ammoq@ammoq.com)" +msgid "Based on PadJoy by Erich Kitzmuller (ammoq@ammoq.com)" msgstr "" #~ msgid "_Load" -#~ msgstr "讀取(_L)" +#~ msgstr "Ū(_L)" #~ msgid "_Save" -#~ msgstr "存儲(_S)" +#~ msgstr "sx(_S)" #~ msgid "_Run" -#~ msgstr "執行(_R)" +#~ msgstr "(_R)" #~ msgid "" #~ "PCSX is licensed under the GNU GPL; see the included COPYING file for " #~ "more detail." -#~ msgstr "PCSX 在 GNU GPL 條款下發布;請參看包含的 COPYING 檔案。" +#~ msgstr "PCSX b GNU GPL ڤUoFаѬݥ]t COPYING ɮסC" #~ msgid "This plugin reports that it should work correctly." -#~ msgstr "此插件報告其可正常工作。" +#~ msgstr "ii`u@C" #~ msgid "This plugin reports that it won't work correctly." -#~ msgstr "此插件報告其不可正常工作。" +#~ msgstr "i䤣i`u@C" #~ msgid "Could not load Cdrom" -#~ msgstr "無法加載光碟" +#~ msgstr "Lk[" #~ msgid "Could not open plugins directory: '%s'\n" -#~ msgstr "無法開啟插件目錄: \"%s\"\n" +#~ msgstr "Lk}Ҵؿ: \"%s\"\n" #~ msgid "Run CD Though &Bios" -#~ msgstr "使用 BIOS 運行光碟(&B)" +#~ msgstr "ϥ BIOS B(&B)" #~ msgid "Run CD Through BIOS" -#~ msgstr "使用 BIOS 運行光碟" +#~ msgstr "ϥ BIOS B" |
