Implemented keyboard accelerator tables and a hashed global command table (should be ideal for eventual GUI extensions via plugin, and toolbars and other fanciness). Removed Pause menu and replaced it with a Suspend/Resume menu. Closing GS window behaves more nicely.

Projects: Removed FrameworkVersion descriptor, don't think it matters for C++ code.  Removed all translation files, since they're grossly out-dated and need to be remade anyway.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1894 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
Jake.Stine 2009-09-20 20:54:45 +00:00
parent 4e1e2b01ba
commit 0f259e62d5
74 changed files with 1334 additions and 1710 deletions

View File

@ -5,7 +5,6 @@
Name="SoundTouch"
ProjectGUID="{E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}"
RootNamespace="SoundTouch"
TargetFrameworkVersion="196613"
>
<Platforms>
<Platform

View File

@ -5,7 +5,6 @@
Name="bzip2"
ProjectGUID="{F4EB4AB2-C595-4B05-8BC0-059024BC796C}"
RootNamespace="bzip2"
TargetFrameworkVersion="196613"
>
<Platforms>
<Platform

View File

@ -5,7 +5,6 @@
Name="glew_static"
ProjectGUID="{067D7863-393B-494F-B296-4A8853EB3D1D}"
RootNamespace="glew_static"
TargetFrameworkVersion="196613"
>
<Platforms>
<Platform

View File

@ -6,7 +6,6 @@
ProjectGUID="{BC236261-77E8-4567-8D09-45CD02965EB6}"
RootNamespace="libjpeg"
Keyword="Win32Proj"
TargetFrameworkVersion="196613"
>
<Platforms>
<Platform

View File

@ -6,7 +6,6 @@
ProjectGUID="{26511268-2902-4997-8421-ECD7055F9E28}"
RootNamespace="pthreads"
Keyword="Win32Proj"
TargetFrameworkVersion="196613"
>
<Platforms>
<Platform

View File

@ -5,7 +5,6 @@
Name="wxAdv28"
ProjectGUID="{0E231FB1-F3C9-4724-ACCB-DE8BCB3C089E}"
RootNamespace="wxAdvanced"
TargetFrameworkVersion="131072"
>
<Platforms>
<Platform

View File

@ -5,7 +5,6 @@
Name="wxBase28"
ProjectGUID="{48AD7E0A-25B1-4974-A1E3-03F8C438D34F}"
RootNamespace="wxBase28"
TargetFrameworkVersion="131072"
>
<Platforms>
<Platform

View File

@ -5,7 +5,6 @@
Name="wxConfig28"
ProjectGUID="{C34487AF-228A-4D11-8E50-27803DF76873}"
RootNamespace="wxConfig"
TargetFrameworkVersion="196613"
>
<Platforms>
<Platform

View File

@ -5,7 +5,6 @@
Name="wxCore28"
ProjectGUID="{0318BA30-EF48-441A-9E10-DC85EFAE39F0}"
RootNamespace="wxCore"
TargetFrameworkVersion="131072"
>
<Platforms>
<Platform

View File

@ -5,7 +5,6 @@
Name="zlib"
ProjectGUID="{2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}"
RootNamespace="zlib"
TargetFrameworkVersion="196613"
>
<Platforms>
<Platform

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,868 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2006-11-17 02:05+0100\n"
"Last-Translator: Simon Lindell <Doomangel_91@hotmail.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "%s: Error loading %s: %s"
msgstr "%s: Kan ej ladda %s: %s"
msgid "&About..."
msgstr "&Om..."
msgid "&Arguments"
msgstr "&Argument"
msgid "&Config"
msgstr "&Konfiguration"
msgid "&Configure"
msgstr "&Konfigurera"
msgid "&Debug"
msgstr "&Debug"
msgid "&File"
msgstr "&Arkiv"
msgid "&Graphics"
msgstr "&Grafik"
msgid "&Help"
msgstr "&Hjälp"
msgid "&Language"
msgstr "&Språk"
msgid "&Load"
msgstr "&Ladda"
msgid "&Logging"
msgstr "&Loggar"
msgid "&Low"
msgstr "&Låg"
msgid "&Memcards"
msgstr "&Minneskort"
msgid "&Misc"
msgstr "&Övrigt"
msgid "&Open ELF File"
msgstr "&Öppna ELF fil"
msgid "&Other..."
msgstr "&Annat..."
msgid "&Patches"
msgstr "&Patchar"
msgid "&Process Priority"
msgstr "&Process Prioritet"
msgid "&Remote Debugging"
msgstr "&Fjärrstyrd Debug"
msgid "&Run"
msgstr "&Kör"
msgid "&Run CD"
msgstr "&Kör CD"
msgid "&Save"
msgstr "&Spara"
msgid "&Sound"
msgstr "&Ljud"
msgid "&States"
msgstr "Sparpunkter"
msgid "*PCSX2*: Error Loading State %d"
msgstr "*PCSX2*: Kan inte ladda sparpunkt %d"
msgid "*PCSX2*: Error Loading State %s"
msgstr "*PCSX2*: Kan inte ladda sparpunkt %s"
msgid "*PCSX2*: Error Saving State %d"
msgstr "*PCSX2*: Kan inte spara sparpunkt %d"
msgid "*PCSX2*: Error Saving State %s"
msgstr "*PCSX2*: Kan inte spara sparpunkt %s"
msgid "*PCSX2*: Loaded State %d"
msgstr "*PCSX2*: Sparpunkt laddad %d"
msgid "*PCSX2*: Loaded State %s"
msgstr "*PCSX2*: Sparpunkt laddad %s"
msgid "*PCSX2*: Saving State %d"
msgstr "*PCSX2*: Sparar punkt %d"
msgid "*PCSX2*: Saving State %s"
msgstr "*PCSX2*: Sparar punkt %s"
msgid "0x"
msgstr "0x"
msgid "About"
msgstr "Om"
msgid "About PCSX2"
msgstr "Om PCSX2"
msgid "About..."
msgstr "Om..."
msgid "Address "
msgstr "Address"
msgid "All Files"
msgstr "Alla Filer"
msgid "Arabic"
msgstr "Arabiska"
msgid "Arguments"
msgstr "Argument"
msgid "Bios"
msgstr "BIOS"
msgid "Bios Log"
msgstr "BIOS Log"
msgid "Bulgarian"
msgstr "Bulgariska"
msgid "C&dvdrom"
msgstr "C&DVDROM"
msgid "C&ontrollers"
msgstr "K&ontroller"
msgid "C&pu"
msgstr "C&PU"
msgid "CDVDinit error: %d"
msgstr "CDVD Initieringsfel: %d"
msgid "Cancel"
msgstr "Avbryt"
msgid "Cannot load '%s', wrong PS2E version (%x != %x)"
msgstr "Kan inte ladda '%s',Fel PS2E version (%x != %x)"
msgid "Catalan"
msgstr "Kataloniska"
msgid "Cdr Log"
msgstr "CDR Log"
msgid "Cdvdrom"
msgstr "CDVDROM"
msgid "Clear BPs"
msgstr "Rensa BPs"
msgid "Close"
msgstr "Stäng"
msgid "Conf"
msgstr "Konfiguration"
msgid "Configuration"
msgstr "Konfiguration"
msgid "Configure"
msgstr "Konfigurera"
msgid "Configure..."
msgstr "Konfigurera"
msgid "Controllers"
msgstr "Kontroller"
msgid "Cop0 Log"
msgstr "COP0 Log"
msgid "Could Not Load CDVD Plugin '%s': %s"
msgstr "Kunde inte ladda CDVD Plugin '%s': %s"
msgid "Could Not Load DEV9 Plugin '%s': %s"
msgstr "Kunde inte ladda DEV9 Plugin '%s': %s"
msgid "Could Not Load FW Plugin '%s': %s"
msgstr "Kunde inte ladda Firewire Plugin '%s': %s"
msgid "Could Not Load GS Plugin '%s': %s"
msgstr "Kunde inte ladda Grafik Plugin '%s': %s"
msgid "Could Not Load PAD1 Plugin '%s': %s"
msgstr "Kunde inte ladda PAD1 Plugin '%s': %s"
msgid "Could Not Load PAD2 Plugin '%s': %s"
msgstr "Kunde inte ladda PAD2 Plugin '%s': %s"
msgid "Could Not Load SPU2 Plugin '%s': %s"
msgstr "Kunde inte ladda SPU2 Plugin '%s': %s"
msgid "Could Not Load USB Plugin '%s': %s"
msgstr "Kunde inte ladda USB Plugin '%s': %s"
msgid "Could not create threads or event"
msgstr "Kunde inte skapa trådar eller händelse."
msgid "Could not open '%s' directory"
msgstr "Kunde inte öppna mappen '%s'"
msgid "Couldn't find pixmap file: %s"
msgstr "Kunde inte hitta pixmap filen: %s"
msgid "Cpu"
msgstr "CPU"
msgid "Cpu Config"
msgstr "CPU Konfiguration"
msgid "Cpu Log"
msgstr "CPU Log"
msgid "D&ev9"
msgstr "D&ev9"
msgid "DEV9init error: %d"
msgstr "DEV9 Initieringsfel: %d"
msgid "Data "
msgstr "Data"
msgid "Debug"
msgstr "Debug"
msgid "Dev9"
msgstr "Dev9"
msgid "Disable Recompiler"
msgstr "Avaktivera Omkompilerare"
msgid "Disable VUs recompilation"
msgstr "Inaktivera VUs omkompilation"
msgid "Dma Log"
msgstr "DMA Log"
msgid "Dump File = \"dump.txt\""
msgstr "Dumpa Fil = \"dump.txt\""
msgid "Dump code"
msgstr "Dumpa kod"
msgid "Dutch"
msgstr "Hollendska"
msgid "E&xecute"
msgstr "K&ör"
msgid "E&xit"
msgstr "&Avsluta"
msgid "EE Debug Mode"
msgstr "EE Debug Läge"
msgid "EE Logs"
msgstr "EE Logs"
msgid "Elf Log"
msgstr "ELF Log"
msgid "Emulator"
msgstr "Emulator"
msgid "Enable Console Output"
msgstr "Aktivera konsol"
msgid "Enable Patches"
msgstr "Aktivera patcher"
msgid "Enable Reg Caching"
msgstr "Aktivera Reg Cachning"
msgid "English"
msgstr "Engelska"
msgid "Enter &Debugger..."
msgstr "Starta &Debugger..."
msgid "Enter Debugger ..."
msgstr "Starta &Debugger"
msgid "Error Loading Symbol"
msgstr "Kunde inte ladda symbol"
msgid "Error Opening CDVD Plugin"
msgstr "Kunde inte öppna CD-ROM Plugin"
msgid "Error Opening DEV9 Plugin"
msgstr "Kunde inte öppna DEV9 Plugin"
msgid "Error Opening FW Plugin"
msgstr "Kunde inte öppna Firewire Plugin"
msgid "Error Opening GS Plugin"
msgstr "Kunde inte öppna Grafik Plugin"
msgid "Error Opening PAD1 Plugin"
msgstr "Kunde inte öppna PAD1 Plugin"
msgid "Error Opening PAD2 Plugin"
msgstr "Kunde inte öppna PAD2 Plugin"
msgid "Error Opening SPU2 Plugin"
msgstr "Kunde inte öppna SPU2 Plugin"
msgid "Error Opening USB Plugin"
msgstr "Kunde inte öppna USB Plugin"
msgid "Error allocating memory"
msgstr "Kunde inte allokollera minne"
msgid "Error initializing Recompiler, switching to Interpreter"
msgstr "Kunde inte initiera omkompilerare, går till Interpreter"
msgid "Error loading pixmap file: %s"
msgstr "Kunde inte öppna pixmap Fil: %s"
msgid "Exit"
msgstr "Avsluta"
msgid "FW"
msgstr "Firewire"
msgid "FWinit error: %d"
msgstr "Firewire Initieringsfel: %d"
msgid "Failed loading MemCard %s"
msgstr "Kunde inte ladda minneskort: %s"
msgid "File"
msgstr "Arkiv"
msgid "Fill in the command line arguments for opened program:"
msgstr "Fyll i kommando rads argumenten för det öppnade programmet:"
msgid "Fire&Wire"
msgstr "Fire&Wire"
msgid "First Controller"
msgstr "Första kontrollern"
msgid "Fpu Log"
msgstr "FPU Log"
msgid "French"
msgstr "Franska"
msgid "From 0x"
msgstr "Från 0x"
msgid "GIF Log"
msgstr "GIF Log"
msgid "GPU Log"
msgstr "GPU Log"
msgid "GSinit error: %d"
msgstr "Grafiska Syncen kunde inte initieras: %d"
msgid "German"
msgstr "Tyska"
msgid "Go"
msgstr "Starta"
msgid "Graphics"
msgstr "Grafik"
msgid "Greek"
msgstr "Grekiska"
msgid "Greets to:"
msgstr "Hälsningar till:"
msgid ""
"Greets to: Bobbi, Keith, CpUMasteR, Nave, Snake785, Raziel\n"
"Special thanks to: Sjeep, Dreamtime, F|RES, BGnome, MrBrown, \n"
"Seta-San, Skarmeth, blackd_wd, _Demo_\n"
"Credits: Hiryu && Sjeep for their libcdvd (iso parsing and filesystem driver code)\n"
"Some betatester/support dudes: bositman, Seta-san, falcon4ever, jegHegy, Razorblade, CKemu, Belmont, parotaku, crushtest, ChaosCode"
msgstr ""
"Hälsningar till: Bobbi, Keith, CpUMasteR, Nave, Snake785, Raziel\n"
"Danke an: Sjeep, Dreamtime, F|RES, BGnome, MrBrown, \n"
"Seta-San, Skarmeth, blackd_wd, _Demo_\n"
"Meriten: Hiryu && Sjeep fr Ihre libcdvd (ISO Parsing und Filesystem Treiber Code)\n"
"Einige Betatester/Hilfskrfte: bositman, Seta-san, falcon4ever, jegHegy, Razorblade, CKemu"
msgid "Gte Log"
msgstr "GTE Log"
msgid "Help"
msgstr "Hjälp"
msgid "High"
msgstr "Hög"
msgid "Hw Log"
msgstr "Hårdvaru Log"
msgid "IOP Debug Mode"
msgstr "IOP Debug läge"
msgid "IOP Log"
msgstr "IOP Log"
msgid "IOP Logs"
msgstr "IOP Log"
msgid "IPU Log"
msgstr "IPU Log"
msgid "If you don't know what to write leave it blank"
msgstr "Om du inte vet vad du ska skriva, lämna den tom"
msgid ""
"In debugger:\n"
"Put EE in stop state\n"
"and IOP in run state"
msgstr ""
"I Debugger: \n"
"Sätt EE i stoppad status\n"
"och IOP i pågående status"
msgid ""
"In debugger:\n"
"Put IOP in stop state\n"
"and EE in run state"
msgstr ""
"I Debugger: \n"
"Sätt IOP i stoppad status\n"
"och EE i pågående status"
msgid "Interpreter -The slowest but the most compatible cpu core"
msgstr "Interpreter -Den långsammaste men mest kompitabla cpu kärnan"
msgid "Italian"
msgstr "Italienska"
msgid "Japanese"
msgstr "Japanska"
msgid "Language"
msgstr "Språk"
msgid "Load"
msgstr "Ladda"
msgid "Load Elf"
msgstr "Ladda Elf"
msgid "Log"
msgstr "Log"
msgid "Log On/Off"
msgstr "Loggning På/Av"
msgid "Log to STDOUT"
msgstr "Logga till STDOUT"
msgid "Logging"
msgstr "Loggning"
msgid "MMI Log"
msgstr "MMI Log"
msgid "Mem Log"
msgstr "Minnes Log"
msgid "Memcard Manager"
msgstr "Minneskorts Skötare"
msgid "Memory Card 1"
msgstr "Minneskort 1"
msgid "Memory Card 2"
msgstr "Minneskort 2"
msgid "Memory Dump"
msgstr "Minnesdump"
msgid ""
"Nah, you have to be in\n"
"Interpreter Mode to debug"
msgstr ""
"Nej, du måste vara i\n"
"Interpreter läge för att debugga"
msgid "New Patch"
msgstr "Ny Patch"
msgid "Normal"
msgstr "Normal"
msgid "Not enough params for inicommand\n"
msgstr "Inte tillräckligt med parametrar för inikommando\n"
msgid "Note: this is intented for developers only."
msgstr "Notera: detta är endast menat för utvecklare."
msgid "Notice on debugging EE"
msgstr "Notis på EE debug"
msgid "Notice on debugging IOP"
msgstr "Notis på IOP debug"
msgid "OK"
msgstr "Ok"
msgid "Ok"
msgstr "Ok"
msgid "Options"
msgstr "Alternativ"
msgid "Other..."
msgstr "Annat..."
msgid "PAD1init error: %d"
msgstr "Kunde inte initiera Pad1: %d"
msgid "PAD2init error: %d"
msgstr "Kunde inte initiera pad2: %d"
msgid "PCSX"
msgstr "PCSX"
msgid ""
"PCSX2\r\r\r\n"
"Version x.x"
msgstr ""
"PCSX2\r\r\r\n"
"Version x.x"
msgid "PCSX2 %s Compile Date - %s %s"
msgstr "PCSX2 %s Kompilerat: %s %s"
msgid "PCSX2 Debugger"
msgstr "PCSX2 Debugger"
msgid "PCSX2 EMU\n"
msgstr "PCSX2 Emulator\n"
msgid ""
"PCSX2 For Linux\n"
"Version %s"
msgstr ""
"PCSX2 För Linux\n"
"Version %s"
msgid "PCSX2 Msg"
msgstr "PCSX2 Meddelande"
msgid "PCSX2 Quitting\n"
msgstr "PCSX2 Stänger\n"
msgid "PCSX2 State Format"
msgstr "PCSX2 Sparpunktsformat"
msgid ""
"PCSX2 a ps2 emulator\n"
"\n"
"written by:\n"
"linuzappz, shadow, florin,\n"
"alexey silinov, asadr, goldfinger,\n"
"nachbrenner, auMatt, loser\n"
"\n"
"Webmaster: Thorgal"
msgstr ""
"PCSX2 - En PS2 Emulator\n"
"\n"
"Skriven av:\n"
"linuzappz, shadow, florin,\n"
"alexey silinov, saqibakhtar, goldfinger,\n"
"Nachbrenner, auMatt, loser\n"
"\n"
"Webmaster: Thorgal"
msgid "Pad Log"
msgstr "PAD Log"
msgid "Patches Browser"
msgstr "Patch Utforskare"
msgid "Pcsx About"
msgstr "PCSX om"
msgid "Pcsx2 Msg"
msgstr "PCSX2 Meddelande"
msgid "Pcsx2 needs to be configured"
msgstr "PCSX2 måste konfigureras"
msgid "Plugins & Bios"
msgstr "Plugins & BIOS"
msgid "Portuguese"
msgstr "Portugisiska"
msgid "Processor doesn't supports MMX, can't run recompiler without that"
msgstr "Processorn är inte kompitabel med MMX, kan inte köra omkompilerare utan det."
msgid "Program arguments"
msgstr "ProgramArgument"
msgid "Ps2 Memory Card (*.ps2)"
msgstr "PS2 Minneskort (*.ps2)"
msgid "Ps2 Output"
msgstr "PS2 Konsol"
msgid "RPC Log"
msgstr "RPC Log"
msgid "Raw Dump"
msgstr "Rådata dump"
msgid "Re&set"
msgstr "&Starta om"
msgid "Ready"
msgstr "Redo"
msgid "Recompiler - Much faster than Intepreter(Needs MMX)"
msgstr "Omkompilerare - Mycket snabbare än Interpreter(Kräver MMX)"
msgid "Recompiler Options"
msgstr "Omkompilerarens alternativ"
msgid "Recompiler+VuRecs - The fastest setting (Needs SSE,SSE2)"
msgstr "Omkompilerare + VuRecs - Snabbaste alternativer (Kräver SSE,SSE2)"
msgid "Refresh List"
msgstr "Uppdatera Lista"
msgid "Reset"
msgstr "Starta om"
msgid "Resetting..."
msgstr "Startar om..."
msgid "Romanian"
msgstr "Rumenska"
msgid "Run"
msgstr "Kör"
msgid "Run CD"
msgstr "Kör CD"
msgid "Russian"
msgstr "Ryska"
msgid "SPR Log"
msgstr "SPR Log"
msgid "SPU2init error: %d"
msgstr "Kunde inte initiera SPU2: %d"
msgid "SYMs Log"
msgstr "SYMs Log"
msgid "Save"
msgstr "Spara"
msgid "Save Patch"
msgstr "Spara Patch"
msgid "Search game name patch:"
msgstr "Sök efter spelpatch:"
msgid "Second Controller"
msgstr "Andra kontrollern"
msgid "Select Bios Dir"
msgstr "Välj BIOS mapp"
msgid "Select Bios Directory"
msgstr "Välj BIOS mapp"
msgid "Select Mcd"
msgstr "Välj Mcd"
msgid "Select Plugins Dir"
msgstr "Välj plugin mapp"
msgid "Select Plugins Directory"
msgstr "Välj pluginmapp"
msgid "Select Psx Elf File"
msgstr "Välj PSX Elf Fil"
msgid "Select State File"
msgstr "Välj sparpunktsfil"
msgid "Set BP Addr"
msgstr "Set BP Address"
msgid "Set BP Count"
msgstr "Set BP Räknare"
msgid "Set Bios Directory"
msgstr "Set BIOS mapp"
msgid "Set Dump Addr (in Hex):"
msgstr "Set Dump Address (i hexadecimalt tal):"
msgid "Set New BP Address (in Hex):"
msgstr "Set ny BP Address (i hexadecimalt tal)"
msgid "Set New BP Count (in Hex):"
msgstr "Set ny BP räkning (i hexadecimalt tal):"
msgid "Set New PC Address (in Hex):"
msgstr "Set ny PC address (i hexadecimalt tal):"
msgid "Set PC"
msgstr "Set PC"
msgid "Set Plugins Directory"
msgstr "Set Plugin Mapp"
msgid "SetBreakPoint Addr"
msgstr "Set BP Address"
msgid "SetPCDlg"
msgstr "Set PC Dialog"
msgid "Sif Log"
msgstr "SIF Log"
msgid "Skip"
msgstr "Skippa"
msgid "Slot &1"
msgstr "Slot &1"
msgid "Slot &2"
msgstr "Slot &2"
msgid "Slot &3"
msgstr "Slot &3"
msgid "Slot &4"
msgstr "Slot &4"
msgid "Slot &5"
msgstr "Slot &5"
msgid "Slot 1"
msgstr "Slot 1"
msgid "Slot 2"
msgstr "Slot 2"
msgid "Slot 3"
msgstr "Slot 3"
msgid "Slot 4"
msgstr "Slot 4"
msgid "Slot 5"
msgstr "Slot 5"
msgid "Sound"
msgstr "Ljud"
msgid "Spanish"
msgstr "Spanska"
msgid "States"
msgstr "Sparpunkter"
msgid "Step"
msgstr "Steg"
msgid "Test"
msgstr "Test"
msgid "Test..."
msgstr "Test"
msgid "This plugin reports that should not work correctly"
msgstr "Denna plugin rapporterar att den funkar bra"
msgid "This plugin reports that should work correctly"
msgstr "Denna plugin rapporterar att den funkar bra"
msgid ""
"Tip: If you don't know what to write\n"
"leave it blank"
msgstr ""
"Tips: Om du inte vet vad du ska skriva\n"
"lämna den tom"
msgid "To 0x"
msgstr "Till 0x"
msgid "Turkish"
msgstr "Turkiska"
msgid "U&SB"
msgstr "U&SB"
msgid "USBinit error: %d"
msgstr "Kunde inte initiera Usb: %d"
msgid "Unable to hack in %s%s\n"
msgstr ""
"Kunde inte hacka %s%s \n"
"\n"
msgid "Unable to load bios: '%s', PCSX2 can't run without that"
msgstr "Kunde inte ladda BIOS: '%s', PCSX2 Kan inte funka utan det!"
msgid "Unrecoverable error while running recompiler"
msgstr "Ireparabelt fel under omkompilerarens körning"
msgid "Usb"
msgstr "USB"
msgid "VU Micro Log"
msgstr "VU Micro Log"
msgid "VU0 Log"
msgstr "VU0 Log"
msgid "Vif Log"
msgstr "VIF Log"
msgid "button69"
msgstr "Knapp 69"
msgid "button70"
msgstr "Knapp70"
msgid "memWrite32"
msgstr "memWrite32"
msgid "patch file for this game not found. Can't apply any patches\n"
msgstr "Hittade ingen patch för detta spel. Kan inte applicera patch. \n"
msgid "written by..."
msgstr "Skrivet av..."

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -6,7 +6,7 @@
ProjectGUID="{4639972E-424E-4E13-8B07-CA403C481346}"
RootNamespace="x86emitter"
Keyword="Win32Proj"
TargetFrameworkVersion="196613"
TargetFrameworkVersion="0"
>
<Platforms>
<Platform
@ -225,6 +225,10 @@
RelativePath="..\..\src\Utilities\vssprintf.cpp"
>
</File>
<File
RelativePath="..\..\src\Utilities\wxGuiTools.cpp"
>
</File>
<Filter
Name="Linux"
>

View File

@ -6,7 +6,6 @@
ProjectGUID="{A51123F5-9505-4EAE-85E7-D320290A272C}"
RootNamespace="x86emitter"
Keyword="Win32Proj"
TargetFrameworkVersion="196613"
>
<Platforms>
<Platform

View File

@ -17,7 +17,7 @@
#include "Dependencies.h"
extern void DevAssert( bool condition, const char* msg );
extern bool DevAssert( bool condition, const char* msg );
// --------------------------------------------------------------------------------------
// DESTRUCTOR_CATCHALL - safe destructor helper

View File

@ -26,8 +26,9 @@
// them. For tools which require only wxBase, see wxBaseTools.h
// ----------------------------------------------------------------------------
//////////////////////////////////////////////////////////////////////////////////////////
// pxTextWrapperBase
// --------------------------------------------------------------------------------------
// pxTextWrapperBase
// --------------------------------------------------------------------------------------
// this class is used to wrap the text on word boundary: wrapping is done by calling
// OnStartLine() and OnOutputLine() functions. This class by itself can be used as a
// line counting tool, but produces no formatted text output.
@ -87,8 +88,9 @@ protected:
}
};
//////////////////////////////////////////////////////////////////////////////////////////
// pxTextWrapper
// --------------------------------------------------------------------------------------
// pxTextWrapper
// --------------------------------------------------------------------------------------
// This class extends pxTextWrapperBase and adds the ability to retrieve the formatted
// result of word wrapping.
//
@ -119,3 +121,7 @@ protected:
m_text += L'\n';
}
};
extern bool pxIsValidWindowPosition( const wxWindow& window, const wxPoint& windowPos );
extern wxRect wxGetDisplayArea();

View File

@ -48,137 +48,143 @@ wxString GetTranslation( const char* msg )
// information for troubleshooting purposes.
//
// From a debugging environment, you can trap your DevAssert by either breakpointing the
// exception throw below, or by adding either Exception::AssertionFailure or
// Exception::LogicError to your First-Chance Exception catch list (Visual Studio, under
// the Debug->Exceptions menu/dialog).
// exception throw below, or by adding Exception::LogicError to your First-Chance Exception
// catch list (Visual Studio, under the Debug->Exceptions menu/dialog). You should have
// LogicErrors enabled as First-Chance exceptions regardless, so do it now. :)
//
DEVASSERT_INLINE void DevAssert( bool condition, const char* msg )
// Returns:
// FALSE if the assertion succeeded (condition is valid), or true if the assertion
// failed. The true clause is only reachable in release builds, and can be used by code
// to provide a "stable" escape clause for unexpected behavior.
//
DEVASSERT_INLINE bool DevAssert( bool condition, const char* msg )
{
if( IsDevBuild && !condition )
{
if( condition ) return false;
if( IsDevBuild )
throw Exception::LogicError( msg );
}
wxASSERT_MSG_A( false, msg );
return true;
}
//////////////////////////////////////////////////////////////////////////////////////////
//
namespace Exception
// --------------------------------------------------------------------------------------
// Exception Namespace Implementations (Format message handlers for general exceptions)
// --------------------------------------------------------------------------------------
Exception::BaseException::~BaseException() throw() {}
void Exception::BaseException::InitBaseEx( const wxString& msg_eng, const wxString& msg_xlt )
{
BaseException::~BaseException() throw() {}
m_message_diag = msg_eng;
m_message_user = msg_xlt;
void BaseException::InitBaseEx( const wxString& msg_eng, const wxString& msg_xlt )
{
m_message_diag = msg_eng;
m_message_user = msg_xlt;
// Linux/GCC exception handling is still suspect (this is likely to do with GCC more
// than linux), and fails to propagate exceptions up the stack from EErec code. This
// could likely be because of the EErec using EBP. So to ensure the user at least
// gets a log of the error, we output to console here in the constructor.
// Linux/GCC exception handling is still suspect (this is likely to do with GCC more
// than linux), and fails to propagate exceptions up the stack from EErec code. This
// could likely be because of the EErec using EBP. So to ensure the user at least
// gets a log of the error, we output to console here in the constructor.
#ifdef __LINUX__
//wxLogError( msg_eng.c_str() );
Console::Error( msg_eng );
//wxLogError( msg_eng.c_str() );
Console::Error( msg_eng );
#endif
}
// given message is assumed to be a translation key, and will be stored in translated
// and untranslated forms.
void BaseException::InitBaseEx( const char* msg_eng )
{
m_message_diag = GetEnglish( msg_eng );
m_message_user = GetTranslation( msg_eng );
#ifdef __LINUX__
//wxLogError( m_message_diag.c_str() );
Console::Error( msg_eng );
#endif
}
wxString BaseException::FormatDiagnosticMessage() const
{
return m_message_diag + L"\n\n" + m_stacktrace;
}
// ------------------------------------------------------------------------
wxString ObjectIsNull::FormatDiagnosticMessage() const
{
return wxsFormat(
L"An attempted reference to the %s has failed; the frame does not exist or it's handle is null.",
m_message_diag.c_str()
) + m_stacktrace;
}
wxString ObjectIsNull::FormatDisplayMessage() const
{
return wxsFormat(
L"An attempted reference to the %s has failed; the frame does not exist or it's handle is null.",
m_message_diag.c_str()
);
}
// ------------------------------------------------------------------------
wxString Stream::FormatDiagnosticMessage() const
{
return wxsFormat(
L"Stream exception: %s\n\tFile/Object: %s",
m_message_diag.c_str(), StreamName.c_str()
) + m_stacktrace;
}
wxString Stream::FormatDisplayMessage() const
{
return m_message_user + L"\n\n" +
wxsFormat( _("Name: %s"), StreamName.c_str() );
}
// ------------------------------------------------------------------------
wxString UnsupportedStateVersion::FormatDiagnosticMessage() const
{
// Note: no stacktrace needed for this one...
return wxsFormat( L"Unknown or unsupported savestate version: 0x%x", Version );
}
wxString UnsupportedStateVersion::FormatDisplayMessage() const
{
// m_message_user contains a recoverable savestate error which is helpful to the user.
return wxsFormat(
m_message_user + L"\n\n" +
wxsFormat( _("Cannot load savestate. It is of an unknown or unsupported version."), Version )
);
}
// ------------------------------------------------------------------------
wxString StateCrcMismatch::FormatDiagnosticMessage() const
{
// Note: no stacktrace needed for this one...
return wxsFormat(
L"Game/CDVD does not match the savestate CRC.\n"
L"\tCdvd CRC: 0x%X\n\tGame CRC: 0x%X\n",
Crc_Savestate, Crc_Cdvd
);
}
wxString StateCrcMismatch::FormatDisplayMessage() const
{
return wxsFormat(
m_message_user + L"\n\n" +
wxsFormat(
L"Savestate game/crc mismatch. Cdvd CRC: 0x%X Game CRC: 0x%X\n",
Crc_Savestate, Crc_Cdvd
)
);
}
// ------------------------------------------------------------------------
wxString IndexBoundsFault::FormatDiagnosticMessage() const
{
return L"Index out of bounds on SafeArray: " + ArrayName +
wxsFormat( L"(index=%d, size=%d)", BadIndex, ArrayLength );
}
wxString IndexBoundsFault::FormatDisplayMessage() const
{
return m_message_user;
}
}
// given message is assumed to be a translation key, and will be stored in translated
// and untranslated forms.
void Exception::BaseException::InitBaseEx( const char* msg_eng )
{
m_message_diag = GetEnglish( msg_eng );
m_message_user = GetTranslation( msg_eng );
#ifdef __LINUX__
//wxLogError( m_message_diag.c_str() );
Console::Error( msg_eng );
#endif
}
wxString Exception::BaseException::FormatDiagnosticMessage() const
{
return m_message_diag + L"\n\n" + m_stacktrace;
}
// ------------------------------------------------------------------------
wxString Exception::ObjectIsNull::FormatDiagnosticMessage() const
{
return wxsFormat(
L"An attempted reference to the %s has failed; the frame does not exist or it's handle is null.",
m_message_diag.c_str()
) + m_stacktrace;
}
wxString Exception::ObjectIsNull::FormatDisplayMessage() const
{
return wxsFormat(
L"An attempted reference to the %s has failed; the frame does not exist or it's handle is null.",
m_message_diag.c_str()
);
}
// ------------------------------------------------------------------------
wxString Exception::Stream::FormatDiagnosticMessage() const
{
return wxsFormat(
L"Stream exception: %s\n\tFile/Object: %s",
m_message_diag.c_str(), StreamName.c_str()
) + m_stacktrace;
}
wxString Exception::Stream::FormatDisplayMessage() const
{
return m_message_user + L"\n\n" +
wxsFormat( _("Name: %s"), StreamName.c_str() );
}
// ------------------------------------------------------------------------
wxString Exception::UnsupportedStateVersion::FormatDiagnosticMessage() const
{
// Note: no stacktrace needed for this one...
return wxsFormat( L"Unknown or unsupported savestate version: 0x%x", Version );
}
wxString Exception::UnsupportedStateVersion::FormatDisplayMessage() const
{
// m_message_user contains a recoverable savestate error which is helpful to the user.
return wxsFormat(
m_message_user + L"\n\n" +
wxsFormat( _("Cannot load savestate. It is of an unknown or unsupported version."), Version )
);
}
// ------------------------------------------------------------------------
wxString Exception::StateCrcMismatch::FormatDiagnosticMessage() const
{
// Note: no stacktrace needed for this one...
return wxsFormat(
L"Game/CDVD does not match the savestate CRC.\n"
L"\tCdvd CRC: 0x%X\n\tGame CRC: 0x%X\n",
Crc_Savestate, Crc_Cdvd
);
}
wxString Exception::StateCrcMismatch::FormatDisplayMessage() const
{
return wxsFormat(
m_message_user + L"\n\n" +
wxsFormat(
L"Savestate game/crc mismatch. Cdvd CRC: 0x%X Game CRC: 0x%X\n",
Crc_Savestate, Crc_Cdvd
)
);
}
// ------------------------------------------------------------------------
wxString Exception::IndexBoundsFault::FormatDiagnosticMessage() const
{
return L"Index out of bounds on SafeArray: " + ArrayName +
wxsFormat( L"(index=%d, size=%d)", BadIndex, ArrayLength );
}
wxString Exception::IndexBoundsFault::FormatDisplayMessage() const
{
return m_message_user;
}

View File

@ -0,0 +1,41 @@
/* PCSX2 - PS2 Emulator for PCs
* Copyright (C) 2002-2009 PCSX2 Dev Team
*
* PCSX2 is free software: you can redistribute it and/or modify it under the terms
* of the GNU Lesser General Public License as published by the Free Software Found-
* ation, either version 3 of the License, or (at your option) any later version.
*
* PCSX2 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 PCSX2.
* If not, see <http://www.gnu.org/licenses/>.
*/
#include "PrecompiledHeader.h"
#include "wxGuiTools.h"
#include <wx/window.h>
// Returns FALSE if the window position is considered invalid, which means that it's title
// bar is most likely not easily grabble. Such a window should be moved to a valid or
// default position.
bool pxIsValidWindowPosition( const wxWindow& window, const wxPoint& windowPos )
{
// The height of the window is only revlevant to the height of a title bar, which is
// all we need visible for the user to be able to drag the window into view. But
// there's no way to get that info from wx, so we'll just have to guesstimate...
wxSize sizeMatters( window.GetSize().GetWidth(), 32 ); // if some gui has 32 pixels of undraggable title bar, the user deserves to suffer.
return wxGetDisplayArea().Contains( wxRect( windowPos, sizeMatters ) );
}
// Retrieves the area of the screen, which can be used to enforce a valid zone for
// window positioning. (top/left coords are almost always (0,0) and bottom/right
// is the resolution of the desktop).
wxRect wxGetDisplayArea()
{
return wxRect( wxPoint(), wxGetDisplaySize() );
}

View File

@ -30,10 +30,11 @@
; ----------------------------------------
!define APP_NAME "PCSX2 Beta r${SVNREV}"
!define APP_NAME "PCSX2 0.9.7.r${SVNREV}"
!define APP_FILENAME "pcsx2-0.9.7.r${SVNREV}"
!define INSTDIR_REG_ROOT "HKLM"
!define INSTDIR_REG_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\PCSX2-beta-r${SVNREV}"
!define INSTDIR_REG_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}"
; ----------------------------------------
@ -52,7 +53,7 @@ Function CheckVCRedist
ClearErrors
ReadRegDword $R0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{9A25302D-30C0-39D9-BD6F-21E6EC160475}" "Version"
; if VS 2005+ redist SP1 not installed, install it
; if VS 2008+ redist SP1 not installed, install it
IfErrors 0 VSRedistInstalled
StrCpy $R0 "-1"
@ -61,21 +62,39 @@ VSRedistInstalled:
FunctionEnd
; -------------------------------------
; Safe directory deletion code. :)
;
Function un.DeleteDirIfEmpty
FindFirst $R0 $R1 "$0\*.*"
strcmp $R1 "." 0 NoDelete
FindNext $R0 $R1
strcmp $R1 ".." 0 NoDelete
ClearErrors
FindNext $R0 $R1
IfErrors 0 NoDelete
FindClose $R0
Sleep 1000
RMDir "$0"
NoDelete:
FindClose $R0
FunctionEnd
; ----------------------------------------
; The name of the installer
Name "PCSX2 Beta r${SVNREV}"
Name "${APP_NAME}"
OutFile "pcsx2-beta-${SVNREV}-setup.exe"
OutFile "${APP_FILENAME}-setup.exe"
; The default installation directory
InstallDir "$PROGRAMFILES\pcsx2-r${SVNREV}"
InstallDir "$PROGRAMFILES\PCSX2 0.9.7 beta"
; Registry key to check for directory (so if you install again, it will
; overwrite the old one automatically)
InstallDirRegKey HKLM "Software\pcsx2" "Install_Dir"
; Request application privileges for Windows Vista
RequestExecutionLevel admin
; Request application privileges for Windows Vista (shouldn't be needed anymore! -- air)
;RequestExecutionLevel admin
; Pages
@ -92,37 +111,48 @@ RequestExecutionLevel admin
; ----------------------------------------
; Basic section (emulation proper)
Section "PCSX2 Beta r${SVNREV} (required)"
Section "${APP_NAME} (required)"
SectionIn RO
; Put file there. It's catched by the uninstaller script
SetOutPath $INSTDIR
!insertmacro UNINSTALL.LOG_OPEN_INSTALL
SetOutPath $INSTDIR
File /oname=pcsx2-r${SVNREV}.exe ..\bin\pcsx2.exe
File ..\bin\w32pthreads.dll
File ..\bin\gnu_gettext.dll
File /oname=pcsx2-r${SVNREV}.exe ..\bin\pcsx2.exe
File /nonfatal /oname=pcsx2-dev-r${SVNREV}.exe ..\bin\pcsx2-dev.exe
File ..\bin\w32pthreads.v2.dll
!insertmacro UNINSTALL.LOG_CLOSE_INSTALL
; -- Languages and Patches --
SetOutPath $INSTDIR\Langs
File /r ..\bin\Langs\*.mo
!insertmacro UNINSTALL.LOG_OPEN_INSTALL
File /nonfatal /r ..\bin\Langs\*.mo
!insertmacro UNINSTALL.LOG_CLOSE_INSTALL
SetOutPath $INSTDIR\Patches
!insertmacro UNINSTALL.LOG_OPEN_INSTALL
File /r ..\bin\Patches\*.pnach
!insertmacro UNINSTALL.LOG_CLOSE_INSTALL
; NULL plugins are required, and really there should be more but we don't have working
; SPU2 or GS null plugins right now.
; SPU2 or GS null plugins right now. (note: no install logging performed here -- nulls
; are removed manually by name)
SetOutPath $INSTDIR\Plugins
File ..\bin\Plugins\USBnull.dll
File ..\bin\Plugins\DEV9null.dll
File ..\bin\Plugins\FWnull.dll
File ..\bin\Plugins\CDVDnull.dll
; -- Other plugins --
!ifdef INC_PLUGINS
SetOutPath $INSTDIR\Plugins
!insertmacro UNINSTALL.LOG_OPEN_INSTALL
File /nonfatal /oname=gsdx-sse2-r${SVNREV_GSDX}.dll ..\bin\Plugins\gsdx-sse2.dll
File /nonfatal /oname=gsdx-ssse3-r${SVNREV_GSDX}.dll ..\bin\Plugins\gsdx-ssse3.dll
File /nonfatal /oname=gsdx-sse4-r${SVNREV_GSDX}.dll ..\bin\Plugins\gsdx-sse4.dll
@ -132,20 +162,19 @@ Section "PCSX2 Beta r${SVNREV} (required)"
File /nonfatal /oname=zerogs-r${SVNREV_ZEROGS}.dll ..\bin\Plugins\zerogs.dll
File /nonfatal /oname=zerospu2-r${SVNREV_ZEROSPU2}.dll ..\bin\Plugins\zerospu2.dll
!insertmacro UNINSTALL.LOG_CLOSE_INSTALL
!endif
SetOutPath $INSTDIR
!insertmacro UNINSTALL.LOG_CLOSE_INSTALL
; Write the installation path into the registry
WriteRegStr HKLM Software\pcsx2 "Install_Dir" "$INSTDIR"
; Write the uninstall keys for Windows
WriteRegStr HKLM "${INSTDIR_REG_KEY}" "DisplayName" "PCSX2 - Playstation 2 Emulator"
WriteRegStr HKLM "${INSTDIR_REG_KEY}" "UninstallString" '"$INSTDIR\uninstall-r${SVNREV}.exe"'
WriteRegStr HKLM "${INSTDIR_REG_KEY}" "UninstallString" '"$INSTDIR\${UNINST_EXE}-r${SVNREV}.exe"'
WriteRegDWORD HKLM "${INSTDIR_REG_KEY}" "NoModify" 1
WriteRegDWORD HKLM "${INSTDIR_REG_KEY}" "NoRepair" 1
WriteUninstaller "uninstall-r${SVNREV}.exe"
WriteUninstaller "${UNINST_EXE}-r${SVNREV}.exe"
SectionEnd
@ -175,12 +204,13 @@ Section "Start Menu Shortcuts"
SetOutPath $INSTDIR
; Need to change name too, for each version
CreateDirectory "$SMPROGRAMS\pcsx2"
CreateShortCut "$SMPROGRAMS\pcsx2\Uninstall-r${SVNREV}.lnk" "$INSTDIR\uninstall-r${SVNREV}.exe" "" "$INSTDIR\uninstall-r${SVNREV}.exe" 0
CreateShortCut "$SMPROGRAMS\pcsx2\pcsx2-r${SVNREV}.lnk" "$INSTDIR\pcsx2-r${SVNREV}.exe" "" "$INSTDIR\pcsx2-r${SVNREV}.exe" 0
CreateShortCut "$SMPROGRAMS\pcsx2\pcsx2-dev-r${SVNREV}.lnk" "$INSTDIR\pcsx2-dev-r${SVNREV}.exe" "" "$INSTDIR\pcsx2-dev-r${SVNREV}.exe" 0 "" "" \
"PCSX2 Devel (has debugging and memory dumping)"
CreateShortCut "$SMPROGRAMS\pcsx2\${UNINST_EXE}-r${SVNREV}.lnk" "$INSTDIR\${UNINST_EXE}-r${SVNREV}.exe" "" "$INSTDIR\${UNINST_EXE}-r${SVNREV}.exe" 0
CreateShortCut "$SMPROGRAMS\pcsx2\pcsx2-r${SVNREV}.lnk" "$INSTDIR\pcsx2-r${SVNREV}.exe" "" "$INSTDIR\pcsx2-r${SVNREV}.exe" 0
IfFileExists ..\bin\pcsx2-dev.exe 0 +2
CreateShortCut "$SMPROGRAMS\pcsx2\pcsx2-dev-r${SVNREV}.lnk" "$INSTDIR\pcsx2-dev-r${SVNREV}.exe" "" "$INSTDIR\pcsx2-dev-r${SVNREV}.exe" 0 "" "" \
"PCSX2 Devel (has additional logging support)"
SectionEnd
@ -205,34 +235,71 @@ FunctionEnd
; --------------------------------------
; Uninstaller
Section "Un.Safe uninstall (Removes only files installed by this installer)"
Function .removeShorties
; Remove shortcuts, if any
Delete "$SMPROGRAMS\pcsx2\${UNINST_EXE}-r${SVNREV}.lnk"
Delete "$SMPROGRAMS\pcsx2\pcsx2-r${SVNREV}.lnk"
Delete "$SMPROGRAMS\pcsx2\pcsx2-dev-r${SVNREV}.lnk"
StrCpy $0 "$SMPROGRAMS\pcsx2"
Call un.DeleteDirIfEmpty
FunctionEnd
; Languages, patches, and null plugins should only be removed if all previous versions of
; PCSX2 have been uninstalled. And we know that's happened when the pcsx2\versions registry
; key is empty.
Function .removeSharedJunk
!insertmacro UNINSTALL.LOG_UNINSTALL "$INSTDIR\Langs"
!insertmacro UNINSTALL.LOG_UNINSTALL "$INSTDIR\Patches"
Delete "$INSTDIR\Plugins\USBnull.dll"
Delete "$INSTDIR\Plugins\DEV9null.dll"
Delete "$INSTDIR\Plugins\FWnull.dll"
Delete "$INSTDIR\Plugins\CDVDnull.dll"
FunctionEnd
Section "Un.Basic Removal (removes only files installed by this package) ${APP_NAME}"
!insertmacro UNINSTALL.LOG_UNINSTALL "$INSTDIR"
MessageBox MB_YESNO "Also remove plugins that were installed with this package?" IDYES true IDNO false
true:
!insertmacro UNINSTALL.LOG_UNINSTALL "$INSTDIR\Plugins"
false:
!insertmacro UNINSTALL.LOG_END_UNINSTALL
; Remove registry keys
DeleteRegKey HKLM ${INSTDIR_REG_KEY}
Call .removeShorties
DeleteRegKey ${INSTDIR_REG_ROOT} "${INSTDIR_REG_KEY}"
; And remove the install dir but only if it's clean of user content:
StrCpy $0 "$INSTDIR"
Call un.DeleteDirIfEmpty
SectionEnd
Section Un.Full Removal (completely removes all PCSX2 program files and folders)
MessageBox MB_YESNO "WARNING! This will remove *all* files in $INSTDIR -- are you sure you want to proceed?" IDYES true IDNO false
true:
RMDir /r "$INSTDIR"
Call .removeShorties
DeleteRegKey ${INSTDIR_REG_ROOT} "${INSTDIR_REG_KEY}"
DeleteRegKey HKLM Software\pcsx2
; Remove shortcuts, if any
Delete "$SMPROGRAMS\pcsx2\*.*"
RMDir "$SMPROGRAMS\pcsx2"
!insertmacro UNINSTALL.LOG_UNINSTALL "$INSTDIR"
DeleteRegKey ${INSTDIR_REG_ROOT} "${INSTDIR_REG_KEY}"
SectionEnd
; This option lets you COMPLETELY uninstall by deleting the main folder. Caution! :)
Section /o "Un.Complete Uninstall. *Completely* removes all files and folders."
MessageBox MB_YESNO "WANRING! You have chosen to remove ALL files in the installation folder, including all saves, screenshots, plugins, patches, and bios files. Do you want to proceed?" IDYES true IDNO false
true:
Delete "$SMPROGRAMS\pcsx2\*.*"
RMDir "$SMPROGRAMS\pcsx2"
RMDir /r "$INSTDIR"
DeleteRegKey ${INSTDIR_REG_ROOT} "${INSTDIR_REG_KEY}"
false:
SectionEnd
; --------------------------------------
Function UN.onInit
;begin uninstall, could be added on top of uninstall section instead

View File

@ -443,7 +443,7 @@ __forceinline void rcntUpdate_vSync()
if (vsyncCounter.Mode == MODE_VSYNC)
{
eeRecIsReset = false;
CoreEmuThread::Get().StateCheck();
SysCoreThread::Get().StateCheck();
if( eeRecIsReset )
{
eeRecIsReset = false;

View File

@ -54,39 +54,15 @@ public:
extern StartupParams g_Startup;
//////////////////////////////////////////////////////////////////////////////////////////
// Core Gui APIs (shared by all platforms)
//
// Most of these are implemented in SystemGui.cpp
extern void States_Load( const wxString& file );
extern void States_Save( const wxString& file );
extern void States_Load( int num );
extern void States_Save( int num );
extern bool States_isSlotUsed(int num);
//////////////////////////////////////////////////////////////////////////////////////////
// External Gui APIs (platform specific)
//
// The following section contains API declarations for GUI callback functions that the
// Pcsx2 core expects and needs to be implemented by Pcsx2 platform dependent code
// (Win32/Linux). If anything in this header comes up as a missing external during link,
// it means that the necessary platform dependent files are not being compiled, or the
// platform code is incomplete.
//
// These APIs have been namespaced to help simplify and organize the process of implementing
// them and resolving linker errors.
//
extern void States_FreezeCurrentSlot();
extern void States_DefrostCurrentSlot();
extern void States_FreezeCurrentSlot();
extern void States_CycleSlotForward();
extern void States_CycleSlotBackward();
// Namespace housing gui-level implementations relating to events and signals such
// as keyboard events, menu/status updates, and cpu execution invocation.
namespace HostGui
{
// For issuing notices to both the status bar and the console at the same time.
// Single-line text only please! Multi-line msgs should be directed to the
// console directly, thanks.
extern void Notice( const wxString& text );
// sets the contents of the pcsx2 window status bar.
extern void SetStatusMsg( const wxString& text );
};
extern void States_SetCurrentSlot( int slot );
extern int States_GetCurrentSlot( int slot );

View File

@ -81,12 +81,10 @@ __forceinline void GIFPath::PrepPackedRegs()
u32 tempreg = tag.REGS[0];
numregs = ((tag.NREG-1)&0xf) + 1;
hasADreg = 0;
for (u32 i = 0; i < numregs; i++) {
if (i == 8) tempreg = tag.REGS[1];
regs[i] = tempreg & 0xf;
if (regs[i] == 0x0e) hasADreg = 1;
tempreg >>= 4;
}
}
@ -107,7 +105,6 @@ static void _mtgsFreezeGIF( SaveStateBase& state, GIFPath (&paths)[3] )
state.Freeze( paths[i].nloop );
state.Freeze( paths[i].curreg );
state.Freeze( paths[i].numregs );
state.Freeze( paths[i].hasADreg );
}
for(int i=0; i<3; i++ )

View File

@ -109,7 +109,7 @@ static wxString GetMemoryErrorVM()
);
}
EmuCoreAllocations::EmuCoreAllocations()
SysCoreAllocations::SysCoreAllocations()
{
Console::Status( "Initializing PS2 virtual machine..." );
@ -203,7 +203,7 @@ EmuCoreAllocations::EmuCoreAllocations()
SuperVUDestroy( -1 );
}
void EmuCoreAllocations::CleanupMess() throw()
void SysCoreAllocations::CleanupMess() throw()
{
try
{
@ -224,12 +224,12 @@ void EmuCoreAllocations::CleanupMess() throw()
DESTRUCTOR_CATCHALL
}
EmuCoreAllocations::~EmuCoreAllocations() throw()
SysCoreAllocations::~SysCoreAllocations() throw()
{
CleanupMess();
}
bool EmuCoreAllocations::HadSomeFailures( const Pcsx2Config::RecompilerOptions& recOpts ) const
bool SysCoreAllocations::HadSomeFailures( const Pcsx2Config::RecompilerOptions& recOpts ) const
{
return (recOpts.EnableEE && !RecSuccess_EE) ||
(recOpts.EnableIOP && !RecSuccess_IOP) ||

View File

@ -23,12 +23,12 @@ static const int PCSX2_VersionHi = 0;
static const int PCSX2_VersionMid = 9;
static const int PCSX2_VersionLo = 7;
class CoreEmuThread;
class SysCoreThread;
// --------------------------------------------------------------------------------------
// EmuCoreAllocations class
// SysCoreAllocations class
// --------------------------------------------------------------------------------------
class EmuCoreAllocations
class SysCoreAllocations
{
public:
// This set of booleans defaults to false and are only set TRUE if the corresponding
@ -44,8 +44,8 @@ public:
protected:
public:
EmuCoreAllocations();
virtual ~EmuCoreAllocations() throw();
SysCoreAllocations();
virtual ~SysCoreAllocations() throw();
bool HadSomeFailures( const Pcsx2Config::RecompilerOptions& recOpts ) const;

View File

@ -19,18 +19,20 @@
#include <wx/fileconf.h>
#include <wx/imaglist.h>
#include <wx/docview.h>
#include <wx/apptrait.h>
class IniInterface;
class MainEmuFrame;
class GSFrame;
#include "Utilities/HashMap.h"
#include "Utilities/wxGuiTools.h"
#include "AppConfig.h"
#include "System.h"
#include "ConsoleLogger.h"
#include "ps2/CoreEmuThread.h"
#include "ps2/CoreEmuThread.h"
BEGIN_DECLARE_EVENT_TYPES()
DECLARE_EVENT_TYPE( pxEVT_SemaphorePing, -1 )
@ -71,7 +73,7 @@ enum MenuIdentifiers
MenuId_SkipBiosToggle, // enables the Bios Skip speedhack
MenuId_Emu_Pause, // suspends/resumes active emulation, retains plugin states
MenuId_Emu_SuspendResume, // suspends/resumes active emulation, retains plugin states
MenuId_Emu_Close, // Closes the emulator (states are preserved)
MenuId_Emu_Reset, // Issues a complete reset (wipes preserved states)
MenuId_Emu_LoadStates, // Opens load states submenu
@ -125,7 +127,7 @@ enum MenuIdentifiers
MenuId_Debug_Open, // opens the debugger window / starts a debug session
MenuId_Debug_MemoryDump,
MenuId_Debug_Logging, // dialog for selection additional log options
MenuId_Debug_Usermode,
MenuId_Config_ResetAll,
};
enum DialogIdentifiers
@ -136,6 +138,93 @@ enum DialogIdentifiers
DialogId_About,
};
// --------------------------------------------------------------------------------------
// KeyAcceleratorCode
// A custom keyboard accelerator that I like better than wx's wxAcceleratorEntry.
// --------------------------------------------------------------------------------------
struct KeyAcceleratorCode
{
union
{
struct
{
u16 keycode;
u16 win:1, // win32 only.
cmd:1, // ctrl in win32, Command in Mac
alt:1,
shift:1;
};
u32 val32;
};
KeyAcceleratorCode() : val32( 0 ) {}
KeyAcceleratorCode( const wxKeyEvent& evt );
KeyAcceleratorCode( wxKeyCode code )
{
val32 = 0;
keycode = code;
}
KeyAcceleratorCode& Shift()
{
shift = true;
return *this;
}
KeyAcceleratorCode& Alt()
{
alt = true;
return *this;
}
KeyAcceleratorCode& Win()
{
win = true;
return *this;
}
KeyAcceleratorCode& Cmd()
{
cmd = true;
return *this;
}
wxString ToString() const;
};
// --------------------------------------------------------------------------------------
// GlobalCommandDescriptor
// Describes a global command which can be invoked from the main GUI or GUI plugins.
// --------------------------------------------------------------------------------------
struct GlobalCommandDescriptor
{
const char* Id; // Identifier string
void (*Invoke)(); // Do it!! Do it NOW!!!
const char* Fullname; // Name displayed in pulldown menus
const char* Tooltip; // text displayed in toolbar tooltips and menu status bars.
int ToolbarIconId; // not implemented yet, leave 0 for now.
};
typedef HashTools::Dictionary<const GlobalCommandDescriptor*> CommandDictionary;
class AcceleratorDictionary : public HashTools::HashMap<int, const GlobalCommandDescriptor*>
{
protected:
public:
typedef HashMap<int, const GlobalCommandDescriptor*> _parent;
using _parent::operator[];
AcceleratorDictionary();
void Map( const KeyAcceleratorCode& acode, const char *searchfor );
};
// --------------------------------------------------------------------------------------
// AppImageIds - Config and Toolbar Images and Icons
// --------------------------------------------------------------------------------------
@ -198,17 +287,21 @@ struct MsgboxEventResult
class Pcsx2App : public wxApp
{
public:
CommandDictionary GlobalCommands;
AcceleratorDictionary GlobalAccels;
protected:
wxImageList m_ConfigImages;
wxScopedPtr<wxImageList> m_ToolbarImages;
wxScopedPtr<wxBitmap> m_Bitmap_Logo;
wxScopedPtr<EmuCoreAllocations> m_CoreAllocs;
wxScopedPtr<SysCoreAllocations> m_CoreAllocs;
public:
wxScopedPtr<PluginManager> m_CorePlugins;
wxScopedPtr<CoreEmuThread> m_CoreThread;
wxScopedPtr<SysCoreThread> m_CoreThread;
protected:
// Note: Pointers to frames should not be scoped because wxWidgets handles deletion
@ -226,6 +319,7 @@ public:
void ReloadPlugins();
void PostPadKey( wxKeyEvent& evt );
void PostMenuAction( MenuIdentifiers menu_id ) const;
int ThreadedModalDialog( DialogIdentifiers dialogId );
void Ping() const;
@ -266,13 +360,16 @@ public:
return *m_MainFrame;
}
CoreEmuThread& GetCoreThreadOrExcept() const
SysCoreThread& GetCoreThreadOrExcept() const
{
if( !m_CoreThread )
throw Exception::ObjectIsNull( "core emulation thread" );
return *m_CoreThread;
}
void OpenGsFrame();
void OnGsFrameClosed();
// --------------------------------------------------------------------------
// Overrides of wxApp virtuals:
@ -298,6 +395,8 @@ public:
void CloseProgramLog()
{
if( m_ProgramLogBox == NULL ) return;
m_ProgramLogBox->Close();
// disable future console log messages from being sent to the window.
@ -320,6 +419,8 @@ public:
//void SetConsoleFrame( ConsoleLogFrame& frame ) { m_ProgramLogBox = &frame; }
protected:
void InitDefaultGlobalAccelerators();
void BuildCommandHash();
void ReadUserModeSettings();
bool TryOpenConfigCwd();
void CleanupMess();
@ -354,15 +455,16 @@ protected:
// AppEmuThread class
// --------------------------------------------------------------------------------------
class AppEmuThread : public CoreEmuThread
class AppEmuThread : public SysCoreThread
{
protected:
wxKeyEvent m_kevt;
public:
AppEmuThread( PluginManager& plugins );
virtual ~AppEmuThread() throw() { }
virtual ~AppEmuThread() throw();
virtual void Suspend( bool isBlocking=true );
virtual void Resume();
virtual void StateCheck();
@ -385,32 +487,57 @@ public:
bool IsReentrant() const { return Counter > 1; }
};
extern int EnumeratePluginsInFolder( const wxDirName& searchPath, wxArrayString* dest );
extern void LoadPluginsPassive();
extern void LoadPluginsImmediate();
extern void UnloadPlugins();
extern wxRect wxGetDisplayArea();
extern bool pxIsValidWindowPosition( const wxWindow& window, const wxPoint& windowPos );
extern bool HandlePluginError( Exception::PluginError& ex );
extern bool EmulationInProgress();
#define TryInvoke( obj, runme ) \
{ \
try { \
wxGetApp().Get##obj##OrExcept().runme; \
} \
catch( Exception::ObjectIsNull& ) { } \
}
extern bool SysHasValidState();
extern void AppLoadSettings();
extern void AppSaveSettings();
extern void AppApplySettings( const AppConfig* oldconf=NULL );
extern void SysStatus( const wxString& text );
extern void SysSuspend();
extern void SysResume();
extern void SysReset();
extern void SysExecute();
extern void SysExecute( CDVD_SourceType cdvdsrc );
// --------------------------------------------------------------------------------------
// AppInvoke macro
// --------------------------------------------------------------------------------------
// This handy macro provides a safe way to invoke functions on objects that may or may not
// exist. If the object is null, the function is not called. Useful for calling things that
// are cosmetic optional, such as logging or status bars.
//
// Performance Note: This macro uses exception handling, and should not be used in the
// context of tight loops or performant code.
//
// Parameters:
// obj - name of the object. The name must have a matching accessor in Pcsx2App in the
// format of GetSomethingOrExcept(), where 'Something' would be the object name.
// runme - The function to call, complete with parameters. Note that parameters that
// perform actions (such as creating new objects or something) won't be run unless
// the 'obj' itself exists.
//
#define AppInvoke( obj, runme ) \
do { \
try { \
wxGetApp().Get##obj##OrExcept().runme; \
} \
catch( Exception::ObjectIsNull& ) { } \
} while( false )
#define AppInvokeBool( obj, runme, dest ) \
{ \
try { \
(dest) = wxGetApp().Get##obj##OrExcept().runme; \
} \
catch( Exception::ObjectIsNull& ) { } \
} while( false )

View File

@ -15,6 +15,7 @@
#include "PrecompiledHeader.h"
#include "App.h"
#include "MainFrame.h"
#include "IniInterface.h"
#include "Plugins.h"
@ -524,6 +525,8 @@ void AppConfig_OnChangedSettingsFolder( bool overwrite )
AppLoadSettings();
AppApplySettings();
AppInvoke( MainFrame, ReloadRecentLists() );
g_Conf->Folders.Logs.Mkdir();
wxString newlogname( Path::Combine( g_Conf->Folders.Logs.ToString(), L"emuLog.txt" ) );

View File

@ -17,6 +17,7 @@
#include "IniInterface.h"
#include "MainFrame.h"
#include "Plugins.h"
#include "SaveState.h"
#include "Dialogs/ModalPopups.h"
#include "Dialogs/ConfigurationDialog.h"
@ -63,15 +64,24 @@ namespace Exception
}
AppEmuThread::AppEmuThread( PluginManager& plugins ) :
CoreEmuThread( plugins )
SysCoreThread( plugins )
, m_kevt()
{
}
AppEmuThread::~AppEmuThread() throw()
{
AppInvoke( MainFrame, ApplySettings() );
}
void AppEmuThread::Suspend( bool isBlocking )
{
SysCoreThread::Suspend( isBlocking );
AppInvoke( MainFrame, ApplySettings() );
}
void AppEmuThread::Resume()
{
if( wxGetApp().GetMainFrame().IsPaused() ) return;
// Clear the sticky key statuses, because hell knows what's changed while the PAD
// plugin was suspended.
@ -81,12 +91,17 @@ void AppEmuThread::Resume()
ApplySettings( g_Conf->EmuOptions );
CoreEmuThread::Resume();
if( GSopen2 != NULL )
wxGetApp().OpenGsFrame();
SysCoreThread::Resume();
AppInvoke( MainFrame, ApplySettings() );
}
// fixme: this ID should be the ID of our wx-managed GS window (which is not
// wx-managed yet, so let's just use some arbitrary value...)
static const int pxID_Window_GS = 8030;
// This is used when the GS plugin is handling its own window. Messages from the PAD
// are piped through to an app-level message handler, which dispatches them through
// the universal Accelerator table.
static const int pxID_PadHandler_Keydown = 8030;
#ifdef __WXGTK__
extern int TranslateGDKtoWXK( u32 keysym );
@ -94,7 +109,7 @@ static const int pxID_Window_GS = 8030;
void AppEmuThread::StateCheck()
{
CoreEmuThread::StateCheck();
SysCoreThread::StateCheck();
const keyEvent* ev = PADkeyEvent();
@ -103,7 +118,6 @@ void AppEmuThread::StateCheck()
GetPluginManager().KeyEvent( *ev );
m_kevt.SetEventType( ( ev->evt == KEYPRESS ) ? wxEVT_KEY_DOWN : wxEVT_KEY_UP );
m_kevt.SetId( pxID_Window_GS );
const bool isDown = (ev->evt == KEYPRESS);
@ -122,14 +136,8 @@ void AppEmuThread::StateCheck()
case WXK_MENU: m_kevt.m_altDown = isDown; return;
}
// fixme: when the GS is wx-controlled, we should send the message to the GS window
// instead.
if( isDown )
{
m_kevt.m_keyCode = vkey;
wxGetApp().AddPendingEvent( m_kevt );
}
m_kevt.m_keyCode = vkey;
wxGetApp().PostPadKey( m_kevt );
}
__forceinline bool EmulationInProgress()
@ -137,6 +145,11 @@ __forceinline bool EmulationInProgress()
return wxGetApp().EmuInProgress();
}
__forceinline bool SysHasValidState()
{
return wxGetApp().EmuInProgress() || StateRecovery::HasState();
}
bool HandlePluginError( Exception::PluginError& ex )
{
@ -161,7 +174,7 @@ sptr AppEmuThread::ExecuteTask()
{
try
{
CoreEmuThread::ExecuteTask();
SysCoreThread::ExecuteTask();
}
// ----------------------------------------------------------------------------
catch( Exception::FileNotFound& ex )
@ -392,7 +405,7 @@ bool Pcsx2App::OnInit()
Connect( pxEVT_ReloadPlugins, wxCommandEventHandler( Pcsx2App::OnReloadPlugins ) );
Connect( pxEVT_LoadPluginsComplete, wxCommandEventHandler( Pcsx2App::OnLoadPluginsComplete ) );
Connect( pxID_Window_GS, wxEVT_KEY_DOWN, wxKeyEventHandler( Pcsx2App::OnEmuKeyDown ) );
Connect( pxID_PadHandler_Keydown, wxEVT_KEY_DOWN, wxKeyEventHandler( Pcsx2App::OnEmuKeyDown ) );
// User/Admin Mode Dual Setup:
// Pcsx2 now supports two fundamental modes of operation. The default is Classic mode,
@ -429,7 +442,7 @@ bool Pcsx2App::OnInit()
SysDetect();
AppApplySettings();
m_CoreAllocs.reset( new EmuCoreAllocations() );
m_CoreAllocs.reset( new SysCoreAllocations() );
if( m_CoreAllocs->HadSomeFailures( g_Conf->EmuOptions.Cpu.Recompiler ) )
{
@ -507,6 +520,20 @@ void Pcsx2App::PostMenuAction( MenuIdentifiers menu_id ) const
m_MainFrame->GetEventHandler()->AddPendingEvent( joe );
}
void Pcsx2App::PostPadKey( wxKeyEvent& evt )
{
if( m_gsFrame == NULL )
{
evt.SetId( pxID_PadHandler_Keydown );
wxGetApp().AddPendingEvent( evt );
}
else
{
evt.SetId( m_gsFrame->GetId() );
m_gsFrame->AddPendingEvent( evt );
}
}
int Pcsx2App::ThreadedModalDialog( DialogIdentifiers dialogId )
{
wxASSERT( !wxThread::IsMain() ); // don't call me from MainThread!
@ -594,6 +621,26 @@ void Pcsx2App::OnMessageBox( pxMessageBoxEvent& evt )
Msgbox::OnEvent( evt );
}
HashTools::HashMap<int, const GlobalCommandDescriptor*> GlobalAccels( 0, 0xffffffff );
void Pcsx2App::OnEmuKeyDown( wxKeyEvent& evt )
{
const GlobalCommandDescriptor* cmd = NULL;
GlobalAccels.TryGetValue( KeyAcceleratorCode( evt ).val32, cmd );
if( cmd == NULL )
{
evt.Skip();
return;
}
if( cmd != NULL )
{
DbgCon::WriteLn( "(app) Invoking command: %s", cmd->Id );
cmd->Invoke();
}
}
void Pcsx2App::CleanupMess()
{
if( m_CorePlugins )
@ -677,12 +724,14 @@ Pcsx2App::Pcsx2App() :
, m_Bitmap_Logo( NULL )
{
SetAppName( L"pcsx2" );
BuildCommandHash();
InitDefaultGlobalAccelerators();
}
Pcsx2App::~Pcsx2App()
{
// Typically OnExit cleans everything up before we get here, *unless* we cancel
// out of program startup in OnInit (return false) -- then remaning cleanup needs
// out of program startup in OnInit (return false) -- then remaining cleanup needs
// to happen here in the destructor.
CleanupMess();
@ -718,8 +767,8 @@ void AppApplySettings( const AppConfig* oldconf )
}
}
TryInvoke( MainFrame, ApplySettings() );
TryInvoke( CoreThread, ApplySettings( g_Conf->EmuOptions ) );
AppInvoke( MainFrame, ApplySettings() );
AppInvoke( CoreThread, ApplySettings( g_Conf->EmuOptions ) );
}
void AppLoadSettings()
@ -730,7 +779,7 @@ void AppLoadSettings()
IniLoader loader( *conf );
g_Conf->LoadSave( loader );
TryInvoke( MainFrame, LoadRecentIsoList( *conf ) );
AppInvoke( MainFrame, LoadRecentIsoList( *conf ) );
}
void AppSaveSettings()
@ -741,7 +790,7 @@ void AppSaveSettings()
IniSaver saver( *conf );
g_Conf->LoadSave( saver );
TryInvoke( MainFrame, SaveRecentIsoList( *conf ) );
AppInvoke( MainFrame, SaveRecentIsoList( *conf ) );
}
// --------------------------------------------------------------------------------------
@ -768,24 +817,39 @@ void Pcsx2App::SysExecute( CDVD_SourceType cdvdsrc )
CDVDsys_SetFile( CDVDsrc_Iso, g_Conf->CurrentIso );
CDVDsys_ChangeSource( cdvdsrc );
if( m_gsFrame == NULL && GSopen2 != NULL )
{
// Yay, we get to open and manage our OWN window!!!
// (work-in-progress)
m_gsFrame = new GSFrame( m_MainFrame, L"PCSX2" );
m_gsFrame->SetFocus();
pDsp = (uptr)m_gsFrame->GetHandle();
m_gsFrame->Show();
// The "in the main window" quickie hack...
//pDsp = (uptr)m_MainFrame->m_background.GetHandle();
}
m_CoreThread.reset( new AppEmuThread( *m_CorePlugins ) );
m_CoreThread->Resume();
}
void Pcsx2App::OpenGsFrame()
{
if( m_gsFrame != NULL ) return;
m_gsFrame = new GSFrame( m_MainFrame, L"PCSX2" );
m_gsFrame->SetFocus();
pDsp = (uptr)m_gsFrame->GetHandle();
m_gsFrame->Show();
// The "in the main window" quickie hack...
//pDsp = (uptr)m_MainFrame->m_background.GetHandle();
}
void Pcsx2App::OnGsFrameClosed()
{
if( m_CoreThread != NULL )
m_CoreThread->Suspend();
m_gsFrame = NULL;
}
// Writes text to console and updates the window status bar and/or HUD or whateverness.
void SysStatus( const wxString& text )
{
// mirror output to the console!
Console::Status( text.c_str() );
AppInvoke( MainFrame, SetStatusText( text ) );
}
// Executes the emulator using a saved/existing virtual machine state and currently
// configured CDVD source device.
void SysExecute()
@ -800,12 +864,12 @@ void SysExecute( CDVD_SourceType cdvdsrc )
void SysResume()
{
TryInvoke( CoreThread, Resume() );
AppInvoke( CoreThread, Resume() );
}
void SysSuspend()
{
TryInvoke( CoreThread, Suspend() );
AppInvoke( CoreThread, Suspend() );
}
void SysReset()

View File

@ -15,22 +15,67 @@
#include "PrecompiledHeader.h"
#include "MainFrame.h"
#include "GS.h"
#include "wx/utils.h"
void GSFrame::InitDefaultAccelerators()
{
typedef KeyAcceleratorCode AAC;
m_Accels.Map( AAC( WXK_F1 ), "States_FreezeCurrentSlot" );
m_Accels.Map( AAC( WXK_F3 ), "States_DefrostCurrentSlot");
m_Accels.Map( AAC( WXK_F2 ), "States_CycleSlotForward" );
m_Accels.Map( AAC( WXK_F2 ).Shift(), "States_CycleSlotBackward" );
m_Accels.Map( AAC( WXK_F4 ), "Frameskip_Toggle" );
m_Accels.Map( AAC( WXK_TAB ), "Framelimiter_TurboToggle" );
m_Accels.Map( AAC( WXK_TAB ).Shift(), "Framelimiter_MasterToggle" );
m_Accels.Map( AAC( WXK_ESCAPE ), "Emu_Suspend" );
m_Accels.Map( AAC( WXK_F8 ), "Emu_TakeSnapshot" );
m_Accels.Map( AAC( WXK_F9 ), "Emu_RenderswitchToggle" );
m_Accels.Map( AAC( WXK_F10 ), "Emu_LoggingToggle" );
m_Accels.Map( AAC( WXK_F11 ), "Emu_FreezeGS" );
m_Accels.Map( AAC( WXK_F12 ), "Emu_RecordingToggle" );
}
GSFrame::GSFrame(wxWindow* parent, const wxString& title):
wxFrame(parent, wxID_ANY, title, wxDefaultPosition, wxSize( 640, 480 ), wxDEFAULT_FRAME_STYLE )
{
InitDefaultAccelerators();
//new wxStaticText( "" );
//Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler(GSFrame::OnCloseWindow) );
Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler(GSFrame::OnCloseWindow) );
Connect( wxEVT_KEY_DOWN, wxKeyEventHandler(GSFrame::OnKeyDown) );
}
GSFrame::~GSFrame() throw()
{
AppInvoke( CoreThread, Suspend() ); // Just in case...!
}
/*void GSFrame::OnCloseWindow(wxCloseEvent& evt)
void GSFrame::OnCloseWindow(wxCloseEvent& evt)
{
evt.Skip();
wxGetApp().OnGsFrameClosed();
evt.Skip(); // and close it.
}
void GSFrame::OnKeyDown( wxKeyEvent& evt )
{
const GlobalCommandDescriptor* cmd = NULL;
m_Accels.TryGetValue( KeyAcceleratorCode( evt ).val32, cmd );
if( cmd == NULL )
{
evt.Skip(); // Let the global APP handle it if it wants
return;
}
if( cmd != NULL )
{
DbgCon::WriteLn( "(gsFrame) Invoking command: %s", cmd->Id );
cmd->Invoke();
}
}
*/

View File

@ -0,0 +1,310 @@
/* PCSX2 - PS2 Emulator for PCs
* Copyright (C) 2002-2009 PCSX2 Dev Team
*
* PCSX2 is free software: you can redistribute it and/or modify it under the terms
* of the GNU Lesser General Public License as published by the Free Software Found-
* ation, either version 3 of the License, or (at your option) any later version.
*
* PCSX2 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 PCSX2.
* If not, see <http://www.gnu.org/licenses/>.
*/
#include "PrecompiledHeader.h"
#include "MainFrame.h"
#include "HostGui.h"
#include "SaveState.h"
#include "GS.h"
#include "Dump.h"
#include "DebugTools/Debug.h"
using namespace HashTools;
// renderswitch - tells GSdx to go into dx9 sw if "renderswitch" is set.
bool renderswitch = false;
static int g_Pcsx2Recording = 0; // true 1 if recording video and sound
KeyAcceleratorCode::KeyAcceleratorCode( const wxKeyEvent& evt )
{
val32 = 0;
keycode = evt.GetKeyCode();
if( evt.AltDown() ) Alt();
if( evt.CmdDown() ) Cmd();
if( evt.ShiftDown() ) Shift();
}
wxString KeyAcceleratorCode::ToString() const
{
// Let's use wx's string formatter:
return wxAcceleratorEntry(
(cmd ? wxACCEL_CMD : 0) |
(shift ? wxACCEL_CMD : 0) |
(alt ? wxACCEL_CMD : 0),
keycode
).ToString();
}
namespace Implementations
{
void Frameskip_Toggle()
{
// FIXME : Reimplement framelimiting using new double-switch boolean system
}
void Framelimiter_TurboToggle()
{
}
void Framelimiter_MasterToggle()
{
}
void Emu_Suspend()
{
AppInvoke( CoreThread, Suspend() );
AppInvoke( MainFrame, ApplySettings() );
}
void Emu_Resume()
{
AppInvoke( CoreThread, Resume() );
AppInvoke( MainFrame, ApplySettings() );
}
void Emu_TakeSnapshot()
{
GSmakeSnapshot( g_Conf->Folders.Snapshots.ToAscii().data() );
}
void Emu_RenderToggle()
{
AppInvoke( CoreThread, Suspend() );
renderswitch = !renderswitch;
AppInvoke( CoreThread, Resume() );
}
void Emu_LoggingToggle()
{
#ifdef PCSX2_DEVBUILD
// There's likely a better way to implement this, but this seemed useful.
// I might add turning EE, VU0, and VU1 recs on and off by hotkey at some point, too.
// --arcum42
enableLogging = !enableLogging;
if (enableLogging)
GSprintf(10, "Logging Enabled.");
else
GSprintf(10,"Logging Disabled.");
#endif
}
void Emu_FreezeGS()
{
// fixme : fix up gsstate mess and make it mtgs compatible -- air
#ifdef _STGS_GSSTATE_CODE
wxString Text;
if( strgametitle[0] != 0 )
{
// only take the first two words
wxString gsText;
wxStringTokenizer parts( strgametitle, L" " );
wxString name( parts.GetNextToken() ); // first part
wxString part2( parts.GetNextToken() );
if( !!part2 )
name += L"_" + part2;
gsText.Printf( L"%s.%d.gs", name.c_str(), StatesC );
Text = Path::Combine( g_Conf->Folders.Savestates, gsText );
}
else
{
Text = GetGSStateFilename();
}
#endif
}
void Emu_RecordingToggle()
{
g_Pcsx2Recording ^= 1;
mtgsThread->SendSimplePacket(GS_RINGTYPE_RECORD, g_Pcsx2Recording, 0, 0);
if( SPU2setupRecording != NULL ) SPU2setupRecording(g_Pcsx2Recording, NULL);
}
void Cpu_DumpRegisters()
{
#ifdef PCSX2_DEVBUILD
iDumpRegisters(cpuRegs.pc, 0);
Console::Notice("hardware registers dumped EE:%x, IOP:%x\n", cpuRegs.pc, psxRegs.pc);
#endif
}
}
// --------------------------------------------------------------------------------------
// CommandDeclarations table
// --------------------------------------------------------------------------------------
static const GlobalCommandDescriptor CommandDeclarations[] =
{
{ "States_FreezeCurrentSlot",
States_FreezeCurrentSlot,
wxLt( "Save state" ),
wxLt( "Saves the virtual machine state to the current slot." ),
},
{ "States_DefrostCurrentSlot",
States_DefrostCurrentSlot,
wxLt( "Load state" ),
wxLt( "Loads a virtual machine state from the current slot." ),
},
{ "States_CycleSlotForward",
States_CycleSlotForward,
wxLt( "Cycle to next slot" ),
wxLt( "Cycles the current save slot in +1 fashion!" ),
},
{ "States_CycleSlotBackward",
States_CycleSlotBackward,
wxLt( "Cycle to prev slot" ),
wxLt( "Cycles the current save slot in -1 fashion!" ),
},
{ "Frameskip_Toggle",
Implementations::Frameskip_Toggle,
NULL,
NULL,
},
{ "Framelimiter_TurboToggle",
Implementations::Framelimiter_TurboToggle,
NULL,
NULL,
},
{ "Framelimiter_MasterToggle",
Implementations::Framelimiter_MasterToggle,
NULL,
NULL,
},
{ "Emu_Suspend",
Implementations::Emu_Suspend,
NULL,
NULL,
},
{ "Emu_TakeSnapshot",
Implementations::Emu_TakeSnapshot,
NULL,
NULL,
},
{ "Emu_RenderswitchToggle",
Implementations::Emu_RenderToggle,
NULL,
NULL,
},
{ "Emu_LoggingToggle",
Implementations::Emu_LoggingToggle,
NULL,
NULL,
},
{ "Emu_FreezeGS",
Implementations::Emu_FreezeGS,
NULL,
NULL,
},
{ "Emu_RecordingToggle",
Implementations::Emu_RecordingToggle,
NULL,
NULL,
},
// Command Declarations terminator:
// (must always be last in list!!)
{ NULL }
};
AcceleratorDictionary::AcceleratorDictionary() :
HashMap( 0, 0xffffffff )
{
}
void AcceleratorDictionary::Map( const KeyAcceleratorCode& acode, const char *searchfor )
{
const GlobalCommandDescriptor* result = NULL;
TryGetValue( acode.val32, result );
if( result != NULL )
{
Console::Notice( wxsFormat(
L"Kbd Accelerator '%s' is mapped multiple times.\n"
L"\t'Command %s' is being replaced by '%s'",
acode.ToString().c_str(), wxString::FromUTF8( result->Id ).c_str(), searchfor )
);
}
wxGetApp().GlobalCommands.TryGetValue( searchfor, result );
if( result == NULL )
{
Console::Notice( wxsFormat( L"Kbd Accelerator '%s' is mapped to unknown command '%s'",
acode.ToString().c_str(), wxString::FromUTF8( searchfor ).c_str() )
);
}
else
{
operator[](acode.val32) = result;
}
}
void Pcsx2App::BuildCommandHash()
{
const GlobalCommandDescriptor* curcmd = CommandDeclarations;
while( curcmd->Invoke != NULL )
{
GlobalCommands[curcmd->Id] = curcmd;
curcmd++;
}
}
void Pcsx2App::InitDefaultGlobalAccelerators()
{
typedef KeyAcceleratorCode AAC;
GlobalAccels.Map( AAC( WXK_F1 ), "States_FreezeCurrentSlot" );
GlobalAccels.Map( AAC( WXK_F3 ), "States_DefrostCurrentSlot" );
GlobalAccels.Map( AAC( WXK_F2 ), "States_CycleSlotForward" );
GlobalAccels.Map( AAC( WXK_F2 ).Shift(), "States_CycleSlotBackward" );
GlobalAccels.Map( AAC( WXK_F4 ), "Frameskip_Toggle");
GlobalAccels.Map( AAC( WXK_TAB ), "Framelimiter_TurboToggle" );
GlobalAccels.Map( AAC( WXK_TAB ).Shift(), "Framelimiter_MasterToggle" );
GlobalAccels.Map( AAC( WXK_ESCAPE ), "Emu_Suspend");
GlobalAccels.Map( AAC( WXK_F8 ), "Emu_TakeSnapshot");
GlobalAccels.Map( AAC( WXK_F9 ), "Emu_RenderswitchToggle");
GlobalAccels.Map( AAC( WXK_F10 ), "Emu_LoggingToggle");
GlobalAccels.Map( AAC( WXK_F11 ), "Emu_FreezeGS");
GlobalAccels.Map( AAC( WXK_F12 ), "Emu_RecordingToggle");
}

View File

@ -1,168 +0,0 @@
/* PCSX2 - PS2 Emulator for PCs
* Copyright (C) 2002-2009 PCSX2 Dev Team
*
* PCSX2 is free software: you can redistribute it and/or modify it under the terms
* of the GNU Lesser General Public License as published by the Free Software Found-
* ation, either version 3 of the License, or (at your option) any later version.
*
* PCSX2 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 PCSX2.
* If not, see <http://www.gnu.org/licenses/>.
*/
#include "PrecompiledHeader.h"
#include "HostGui.h"
#include "MainFrame.h"
#include "Dump.h"
#include "Elfheader.h"
#include "SaveState.h"
#include "GS.h"
// This API is likely obsolete for the most part, so I've just included a few dummies
// to keep things compiling until I can get to the point of tying up loose ends.
// renderswitch - tells GSdx to go into dx9 sw if "renderswitch" is set.
bool renderswitch = false;
namespace HostGui
{
// Sets the status bar message without mirroring the output to the console.
void SetStatusMsg( const wxString& text )
{
wxGetApp().GetMainFrame().SetStatusText( text );
}
void Notice( const wxString& text )
{
// mirror output to the console!
Console::Status( text.c_str() );
SetStatusMsg( text );
}
}
static const int NUM_STATES = 10;
static int StatesC = 0;
static int g_Pcsx2Recording = 0; // true 1 if recording video and sound
static wxString GetGSStateFilename()
{
return Path::Combine( g_Conf->Folders.Savestates, wxsFormat( L"/%8.8X.%d.gs", ElfCRC, StatesC ) );
}
// This handles KeyDown messages from the emu/gs window.
void Pcsx2App::OnEmuKeyDown( wxKeyEvent& evt )
{
// Block "Stray" messages, which get sent after the emulation state has been killed off.
// (happens when user hits multiple keys quickly before the emu thread can respond)
if( !EmulationInProgress() ) return;
switch( evt.GetKeyCode() )
{
case WXK_ESCAPE:
GetMainFrame().GetMenuBar()->Check( MenuId_Emu_Pause, true );
m_CoreThread->Suspend();
break;
case WXK_F1:
States_Save( StatesC );
break;
case WXK_F2:
if( evt.GetModifiers() & wxMOD_SHIFT )
StatesC = (StatesC+NUM_STATES-1) % NUM_STATES;
else
StatesC = (StatesC+1) % NUM_STATES;
Console::Notice( " > Selected savestate slot %d", StatesC);
if( GSchangeSaveState != NULL )
GSchangeSaveState(StatesC, SaveStateBase::GetFilename(StatesC).mb_str());
break;
case WXK_F3:
States_Load( StatesC );
break;
case WXK_F4:
// FIXME : Reimplement framelimiting using new oolean system
//CycleFrameLimit(keymod->shift ? -1 : 1);
break;
// note: VK_F5-VK_F7 are reserved for GS
case WXK_F8:
GSmakeSnapshot( g_Conf->Folders.Snapshots.ToAscii().data() );
break;
case WXK_F9: //gsdx "on the fly" renderer switching
m_CoreThread->Suspend();
m_CorePlugins->Close( PluginId_GS );
renderswitch = !renderswitch;
m_CoreThread->Resume();
break;
#ifdef PCSX2_DEVBUILD
case WXK_F10:
// There's likely a better way to implement this, but this seemed useful.
// I might add turning EE, VU0, and VU1 recs on and off by hotkey at some point, too.
// --arcum42
enableLogging = !enableLogging;
if (enableLogging)
GSprintf(10, "Logging Enabled.");
else
GSprintf(10,"Logging Disabled.");
break;
case WXK_F11:
Console::Notice( "Cannot make gsstates in MTGS mode" );
// fixme : fix up gsstate mess and make it mtgs compatible -- air
#ifdef _STGS_GSSTATE_CODE
wxString Text;
if( strgametitle[0] != 0 )
{
// only take the first two words
wxString gsText;
wxStringTokenizer parts( strgametitle, L" " );
wxString name( parts.GetNextToken() ); // first part
wxString part2( parts.GetNextToken() );
if( !!part2 )
name += L"_" + part2;
gsText.Printf( L"%s.%d.gs", name.c_str(), StatesC );
Text = Path::Combine( g_Conf->Folders.Savestates, gsText );
}
else
{
Text = GetGSStateFilename();
}
break;
#endif
#endif
case WXK_F12:
if( evt.GetModifiers() & wxMOD_SHIFT )
{
#ifdef PCSX2_DEVBUILD
iDumpRegisters(cpuRegs.pc, 0);
Console::Notice("hardware registers dumped EE:%x, IOP:%x\n", cpuRegs.pc, psxRegs.pc);
#endif
}
else
{
g_Pcsx2Recording ^= 1;
mtgsThread->SendSimplePacket(GS_RINGTYPE_RECORD, g_Pcsx2Recording, 0, 0);
if( SPU2setupRecording != NULL ) SPU2setupRecording(g_Pcsx2Recording, NULL);
}
break;
}
}

View File

@ -207,8 +207,7 @@ void MainEmuFrame::ConnectMenus()
ConnectMenu( MenuId_SkipBiosToggle, Menu_SkipBiosToggle_Click );
ConnectMenu( MenuId_Exit, Menu_Exit_Click );
ConnectMenu( MenuId_Emu_Pause, Menu_EmuPause_Click );
ConnectMenu( MenuId_Emu_Close, Menu_EmuClose_Click );
ConnectMenu( MenuId_Emu_SuspendResume, Menu_SuspendResume_Click );
ConnectMenu( MenuId_Emu_Reset, Menu_EmuReset_Click );
ConnectMenu( MenuId_State_LoadOther, Menu_LoadStateOther_Click );
@ -364,17 +363,14 @@ MainEmuFrame::MainEmuFrame(wxWindow* parent, const wxString& title):
_("Closing PCSX2 may be hazardous to your health"));
// ------------------------------------------------------------------------
m_menuEmu.Append(MenuId_Emu_Pause, _("Pause"),
_("Stops emulation dead in its tracks"), wxITEM_CHECK );
m_menuEmu.Append(MenuId_Emu_SuspendResume, _("Suspend"),
_("Stops emulation dead in its tracks") )->Enable( SysHasValidState() );
m_menuEmu.AppendSeparator();
m_menuEmu.Append(MenuId_Emu_Reset, _("Reset"),
_("Resets emulation state and re-runs current image"));
m_menuEmu.Append(MenuId_Emu_Close, _("Close"),
_("Stops emulation and closes the GS window."));
//m_menuEmu.Append(MenuId_Emu_Close, _("Close"),
// _("Stops emulation and closes the GS window."));
m_menuEmu.AppendSeparator();
m_menuEmu.Append(MenuId_Emu_LoadStates, _("Load state"), &m_LoadStatesSubmenu);
m_menuEmu.Append(MenuId_Emu_SaveStates, _("Save state"), &m_SaveStatesSubmenu);
@ -382,6 +378,10 @@ MainEmuFrame::MainEmuFrame(wxWindow* parent, const wxString& title):
m_menuEmu.Append(MenuId_EnablePatches, _("Enable Patches"),
wxEmptyString, wxITEM_CHECK);
m_menuEmu.AppendSeparator();
m_menuEmu.Append(MenuId_Emu_Reset, _("Reset"),
_("Resets emulation state and re-runs current image"));
// ------------------------------------------------------------------------
m_menuConfig.Append(MenuId_Config_Settings, _("General Settings") );
@ -399,6 +399,10 @@ MainEmuFrame::MainEmuFrame(wxWindow* parent, const wxString& title):
m_menuConfig.Append(MenuId_Config_Patches, _("Patches"), wxEmptyString);
m_menuConfig.Append(MenuId_Config_BIOS, _("BIOS") );
m_menuConfig.AppendSeparator();
m_menuConfig.Append(MenuId_Config_ResetAll, _("Reset all..."),
_("Clears all PCSX2 settings and re-runs the startup wizard."));
// ------------------------------------------------------------------------
PopulateVideoMenu();
@ -426,10 +430,6 @@ MainEmuFrame::MainEmuFrame(wxWindow* parent, const wxString& title):
m_menuDebug.Append(MenuId_Debug_MemoryDump, _("Memory Dump..."), wxEmptyString);
m_menuDebug.Append(MenuId_Debug_Logging, _("Logging..."), wxEmptyString);
m_menuDebug.AppendSeparator();
m_menuDebug.Append(MenuId_Debug_Usermode, _("Change Usermode..."),
_(" Advanced feature for managing multiple concurrent PCSX2 environments."));
m_MenuItem_Console.Check( g_Conf->ProgLogBox.Visible );
ConnectMenus();
@ -449,10 +449,10 @@ MainEmuFrame::~MainEmuFrame() throw()
DESTRUCTOR_CATCHALL
}
void MainEmuFrame::ApplySettings()
// This should be called whenever major changes to the ini configs have occurred,
// or when the recent file count mismatches the max filecount.
void MainEmuFrame::ReloadRecentLists()
{
GetMenuBar()->Check( MenuId_SkipBiosToggle, g_Conf->EmuOptions.SkipBiosSplash );
// Always perform delete and reload of the Recent Iso List. This handles cases where
// the recent file count has been changed, and it's a helluva lot easier than trying
// to make a clone copy of this complex object. ;)
@ -468,3 +468,19 @@ void MainEmuFrame::ApplySettings()
UpdateIsoSrcFile();
cfg->Flush();
}
void MainEmuFrame::ApplySettings()
{
GetMenuBar()->Check( MenuId_SkipBiosToggle, g_Conf->EmuOptions.SkipBiosSplash );
GetMenuBar()->Enable( MenuId_Emu_SuspendResume, SysHasValidState() );
bool result = false;
AppInvokeBool( CoreThread, IsSuspended(), result );
GetMenuBar()->SetLabel( MenuId_Emu_SuspendResume, result ? _("Resume") :_("Suspend") );
if( m_RecentIsoList )
{
if( m_RecentIsoList->GetMaxFiles() != g_Conf->RecentFileCount )
ReloadRecentLists();
}
}

View File

@ -24,10 +24,16 @@
class GSFrame : public wxFrame
{
protected:
AcceleratorDictionary m_Accels;
public:
GSFrame(wxWindow* parent, const wxString& title);
virtual ~GSFrame() throw();
protected:
void InitDefaultAccelerators();
void OnCloseWindow( wxCloseEvent& evt );
void OnKeyDown( wxKeyEvent& evt );
};
class MainEmuFrame : public wxFrame
@ -68,10 +74,11 @@ public:
void OnLogBoxHidden();
bool IsPaused() const { return GetMenuBar()->IsChecked( MenuId_Emu_Pause ); }
bool IsPaused() const { return GetMenuBar()->IsChecked( MenuId_Emu_SuspendResume ); }
void UpdateIsoSrcFile();
void UpdateIsoSrcSelection();
void ApplySettings();
void ReloadRecentLists();
void LoadRecentIsoList( wxConfigBase& conf );
void SaveRecentIsoList( wxConfigBase& conf );
@ -99,8 +106,7 @@ protected:
void Menu_SaveStateOther_Click(wxCommandEvent &event);
void Menu_Exit_Click(wxCommandEvent &event);
void Menu_EmuPause_Click(wxCommandEvent &event);
void Menu_EmuClose_Click(wxCommandEvent &event);
void Menu_SuspendResume_Click(wxCommandEvent &event);
void Menu_EmuReset_Click(wxCommandEvent &event);
void Menu_ConfigPlugin_Click(wxCommandEvent &event);

View File

@ -155,16 +155,14 @@ void MainEmuFrame::Menu_OpenELF_Click(wxCommandEvent &event)
void MainEmuFrame::Menu_LoadStates_Click(wxCommandEvent &event)
{
int id = event.GetId() - MenuId_State_Load01 - 1;
Console::WriteLn("Loading slot %d.", id);
States_Load(id);
States_SetCurrentSlot( event.GetId() - MenuId_State_Load01 - 1 );
States_DefrostCurrentSlot();
}
void MainEmuFrame::Menu_SaveStates_Click(wxCommandEvent &event)
{
int id = event.GetId() - MenuId_State_Save01 - 1;
Console::WriteLn("Saving to slot %d.", id);
States_Save(id);
States_SetCurrentSlot( event.GetId() - MenuId_State_Load01 - 1 );
States_FreezeCurrentSlot();
}
void MainEmuFrame::Menu_LoadStateOther_Click(wxCommandEvent &event)
@ -182,28 +180,29 @@ void MainEmuFrame::Menu_Exit_Click(wxCommandEvent &event)
Close();
}
void MainEmuFrame::Menu_EmuClose_Click(wxCommandEvent &event)
void MainEmuFrame::Menu_SuspendResume_Click(wxCommandEvent &event)
{
//wxGetApp()->
GetMenuBar()->Check( MenuId_Emu_Pause, false );
}
if( !SysHasValidState() ) return;
void MainEmuFrame::Menu_EmuPause_Click(wxCommandEvent &event)
{
if( event.IsChecked() )
SysSuspend();
else
bool result = false;
AppInvokeBool( CoreThread, IsSuspended(), result );
if( result )
SysResume();
else
SysSuspend();
}
void MainEmuFrame::Menu_EmuReset_Click(wxCommandEvent &event)
{
bool wasRunning = EmulationInProgress();
bool wasInProgress = EmulationInProgress();
bool wasSuspended;
AppInvokeBool( CoreThread, IsSuspended(), wasSuspended );
SysReset();
GetMenuBar()->Check( MenuId_Emu_Pause, false );
if( !wasRunning ) return;
if( !wasInProgress || wasSuspended ) return;
SysExecute();
}

View File

@ -34,17 +34,13 @@ bool States_isSlotUsed(int num)
return wxFileExists( SaveStateBase::GetFilename( num ) );
}
//////////////////////////////////////////////////////////////////////////////////////////
// Save state load-from-file (or slot) helpers.
// returns true if the new state was loaded, or false if nothing happened.
void States_Load( const wxString& file )
{
try
{
SysLoadState( file );
HostGui::Notice( wxsFormat( _("Loaded State %s"),
wxFileName( file ).GetFullName().c_str() ) );
SysStatus( wxsFormat( _("Loaded State %s"), wxFileName( file ).GetFullName().c_str() ) );
}
catch( Exception::BadSavedState& ex)
{
@ -63,24 +59,7 @@ void States_Load( const wxString& file )
SysExecute();
}
void States_Load(int num)
{
wxString file( SaveStateBase::GetFilename( num ) );
if( !wxFileExists( file ) )
{
Console::Notice( "Savestate slot %d is empty.", num );
return;
}
Console::Status( "Loading savestate from slot %d...", num );
States_Load( file );
HostGui::Notice( wxsFormat( _("Loaded State (slot %d)"), num ) );
}
//////////////////////////////////////////////////////////////////////////////////////////
// Save state save-to-file (or slot) helpers.
void States_Save( const wxString& file )
{
if( !EmulationInProgress() )
@ -93,7 +72,7 @@ void States_Save( const wxString& file )
{
Console::Status( wxsFormat( L"Saving savestate to file: %s", file.c_str() ) );
StateRecovery::SaveToFile( file );
HostGui::Notice( wxsFormat( _("State saved to file: %s"), wxFileName( file ).GetFullName().c_str() ) );
SysStatus( wxsFormat( _("State saved to file: %s"), wxFileName( file ).GetFullName().c_str() ) );
}
catch( Exception::BaseException& ex )
{
@ -115,8 +94,62 @@ void States_Save( const wxString& file )
}
}
void States_Save(int num)
// --------------------------------------------------------------------------------------
// Saveslot Section
// --------------------------------------------------------------------------------------
static int StatesC = 0;
static const int StateSlotsCount = 10;
void States_FreezeCurrentSlot()
{
Console::Status( "Saving savestate to slot %d...", num );
States_Save( SaveStateBase::GetFilename( num ) );
Console::Status( "Saving savestate to slot %d...", StatesC );
States_Save( SaveStateBase::GetFilename( StatesC ) );
}
void States_DefrostCurrentSlot()
{
wxString file( SaveStateBase::GetFilename( StatesC ) );
if( !wxFileExists( file ) )
{
Console::Notice( "Savestate slot %d is empty.", StatesC );
return;
}
Console::Status( "Loading savestate from slot %d...", StatesC );
States_Load( file );
SysStatus( wxsFormat( _("Loaded State (slot %d)"), StatesC ) );
}
static void OnSlotChanged()
{
Console::Notice( " > Selected savestate slot %d", StatesC);
if( GSchangeSaveState != NULL )
GSchangeSaveState(StatesC, SaveStateBase::GetFilename(StatesC).mb_str());
}
int States_GetCurrentSlot()
{
return StatesC;
}
void States_SetCurrentSlot( int slot )
{
StatesC = std::min( std::max( slot, 0 ), StateSlotsCount );
OnSlotChanged();
}
void States_CycleSlotForward()
{
StatesC = (StatesC+1) % StateSlotsCount;
OnSlotChanged();
}
void States_CycleSlotBackward()
{
StatesC = (StatesC+StateSlotsCount-1) % StateSlotsCount;
OnSlotChanged();
}

View File

@ -23,27 +23,6 @@
# include <wx/tooltip.h>
#endif
// Retrieves the area of the screen, which can be used to enforce a valid zone for
// window positioning. (top/left coords are almost always (0,0) and bottom/right
// is the resolution of the desktop).
wxRect wxGetDisplayArea()
{
return wxRect( wxPoint(), wxGetDisplaySize() );
}
// Returns FALSE if the window position is considered invalid, which means that it's title
// bar is most likely not easily grabble. Such a window should be moved to a valid or
// default position.
bool pxIsValidWindowPosition( const wxWindow& window, const wxPoint& windowPos )
{
// The height of the window is only revlevant to the height of a title bar, which is
// all we need visible for the user to be able to drag the window into view. But
// there's no way to get that info from wx, so we'll just have to guesstimate...
wxSize sizeMatters( window.GetSize().GetWidth(), 32 ); // if some gui has 32 pixels of undraggable title bar, the user deserves to suffer.
return wxGetDisplayArea().Contains( wxRect( windowPos, sizeMatters ) );
}
namespace wxHelpers
{
// ------------------------------------------------------------------------

View File

@ -46,8 +46,9 @@ namespace wxHelpers
};
}
//////////////////////////////////////////////////////////////////////////////////////////
//
// --------------------------------------------------------------------------------------
// wxDialogWithHelpers
// --------------------------------------------------------------------------------------
class wxDialogWithHelpers : public wxDialog
{
protected:
@ -64,8 +65,9 @@ public:
protected:
};
//////////////////////////////////////////////////////////////////////////////////////////
//
// --------------------------------------------------------------------------------------
// wxPanelWithHelpers
// --------------------------------------------------------------------------------------
class wxPanelWithHelpers : public wxPanel
{
protected:

View File

@ -25,15 +25,15 @@
#include "R3000A.h"
#include "VUmicro.h"
static __threadlocal CoreEmuThread* tls_coreThread = NULL;
static __threadlocal SysCoreThread* tls_coreThread = NULL;
CoreEmuThread& CoreEmuThread::Get()
SysCoreThread& SysCoreThread::Get()
{
wxASSERT_MSG( tls_coreThread != NULL, L"This function must be called from the context of a running CoreEmuThread." );
wxASSERT_MSG( tls_coreThread != NULL, L"This function must be called from the context of a running SysCoreThread." );
return *tls_coreThread;
}
void CoreEmuThread::CpuInitializeMess()
void SysCoreThread::CpuInitializeMess()
{
m_plugins.Open();
cpuReset();
@ -102,7 +102,7 @@ void CoreEmuThread::CpuInitializeMess()
// On Win32 this function invokes SEH, which requires it be in a function all by itself
// with inlining disabled.
__unique_stackframe
void CoreEmuThread::CpuExecute()
void SysCoreThread::CpuExecute()
{
PCSX2_MEM_PROTECT_BEGIN();
Cpu->Execute();
@ -111,10 +111,10 @@ void CoreEmuThread::CpuExecute()
static void _cet_callback_cleanup( void* handle )
{
((CoreEmuThread*)handle)->DoThreadCleanup();
((SysCoreThread*)handle)->DoThreadCleanup();
}
sptr CoreEmuThread::ExecuteTask()
sptr SysCoreThread::ExecuteTask()
{
tls_coreThread = this;
@ -130,7 +130,7 @@ sptr CoreEmuThread::ExecuteTask()
return 0;
}
void CoreEmuThread::StateCheck()
void SysCoreThread::StateCheck()
{
ScopedLock locker( m_lock_ExecMode );
@ -165,7 +165,7 @@ void CoreEmuThread::StateCheck()
}
}
CoreEmuThread::CoreEmuThread( PluginManager& plugins ) :
SysCoreThread::SysCoreThread( PluginManager& plugins ) :
m_ExecMode( ExecMode_NoThreadYet )
, m_lock_ExecMode()
@ -180,13 +180,13 @@ CoreEmuThread::CoreEmuThread( PluginManager& plugins ) :
}
// Invoked by the pthread_exit or pthread_cancel
void CoreEmuThread::DoThreadCleanup()
void SysCoreThread::DoThreadCleanup()
{
m_plugins.Shutdown();
PersistentThread::DoThreadCleanup();
}
CoreEmuThread::~CoreEmuThread() throw()
SysCoreThread::~SysCoreThread() throw()
{
PersistentThread::Cancel();
}
@ -200,7 +200,7 @@ CoreEmuThread::~CoreEmuThread() throw()
// on the first time the thread is resumed from it's initial idle state)
// ThreadCreationError - Insufficient system resources to create thread.
//
void CoreEmuThread::Resume()
void SysCoreThread::Resume()
{
if( IsSelf() ) return;
@ -259,7 +259,7 @@ void CoreEmuThread::Resume()
// is mostly useful for starting certain non-Emu related gui activities (improves gui
// responsiveness).
//
void CoreEmuThread::Suspend( bool isBlocking )
void SysCoreThread::Suspend( bool isBlocking )
{
if( IsSelf() || !IsRunning() ) return;
@ -281,7 +281,7 @@ void CoreEmuThread::Suspend( bool isBlocking )
// Applies a full suite of new settings, which will automatically facilitate the necessary
// resets of the core and components (including plugins, if needed). The scope of resetting
// is determined by comparing the current settings against the new settings.
void CoreEmuThread::ApplySettings( const Pcsx2Config& src )
void SysCoreThread::ApplySettings( const Pcsx2Config& src )
{
if( src == EmuConfig ) return;

View File

@ -20,9 +20,9 @@
using namespace Threading;
// --------------------------------------------------------------------------------------
// CoreEmuThread class
// SysCoreThread class
// --------------------------------------------------------------------------------------
class CoreEmuThread : public PersistentThread
class SysCoreThread : public PersistentThread
{
protected:
enum ExecutionMode
@ -46,11 +46,11 @@ protected:
Semaphore m_SuspendEvent;
public:
static CoreEmuThread& Get();
static SysCoreThread& Get();
public:
explicit CoreEmuThread( PluginManager& plugins );
virtual ~CoreEmuThread() throw();
explicit SysCoreThread( PluginManager& plugins );
virtual ~SysCoreThread() throw();
bool IsSuspended() const { return (m_ExecMode == ExecMode_Suspended); }
virtual void Suspend( bool isBlocking = true );

View File

@ -5,7 +5,7 @@
Name="pcsx2"
ProjectGUID="{1CEFD830-2B76-4596-A4EE-BCD7280A60BD}"
RootNamespace="pcsx2"
TargetFrameworkVersion="131072"
TargetFrameworkVersion="0"
>
<Platforms>
<Platform
@ -1923,7 +1923,7 @@
>
</File>
<File
RelativePath="..\..\gui\HostGui.cpp"
RelativePath="..\..\gui\GlobalCommands.cpp"
>
</File>
<File

View File

@ -5,7 +5,7 @@
Name="CDVDiso"
ProjectGUID="{5F78E90B-BD22-47B1-9CA5-7A80F4DF5EF3}"
RootNamespace="CDVDiso"
TargetFrameworkVersion="131072"
TargetFrameworkVersion="0"
>
<Platforms>
<Platform
@ -58,7 +58,6 @@
Name="VCLinkerTool"
AdditionalDependencies="bzip2.lib zlib.lib"
OutputFile="$(OutDir)\$(ProjectName)-dbg.dll"
GenerateManifest="false"
ModuleDefinitionFile=".\CDVDiso.def"
TargetMachine="1"
/>
@ -197,7 +196,6 @@
AdditionalDependencies="bzip2.lib zlib.lib"
OutputFile="$(OutDir)\$(ProjectName).dll"
LinkIncremental="2"
GenerateManifest="false"
ModuleDefinitionFile=".\CDVDiso.def"
GenerateDebugInformation="true"
TargetMachine="1"

View File

@ -5,7 +5,6 @@
Name="CDVDnull"
ProjectGUID="{F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}"
RootNamespace="CDVDnull"
TargetFrameworkVersion="131072"
>
<Platforms>
<Platform

View File

@ -6,7 +6,6 @@
ProjectGUID="{FCDF5AE2-EA47-4CC6-9F20-23A0517FEBCB}"
RootNamespace="cdvd"
Keyword="Win32Proj"
TargetFrameworkVersion="196613"
>
<Platforms>
<Platform

View File

@ -6,7 +6,6 @@
ProjectGUID="{3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}"
RootNamespace="FWnull"
Keyword="Win32Proj"
TargetFrameworkVersion="131072"
>
<Platforms>
<Platform

View File

@ -87,11 +87,11 @@ void GSSettingsDlg::OnInit()
uint32 h = theApp.GetConfig("ModeHeight", 0);
uint32 hz = theApp.GetConfig("ModeRefreshRate", 0);
uint32 n = d3d->GetAdapterModeCount(D3DADAPTER_DEFAULT, D3DFMT_X8R8G8B8);
uint32 n = d3d->GetAdapterModeCount(D3DADAPTER_DEFAULT, D3DFMT_R5G6B5);
for(uint32 i = 0; i < n; i++)
{
if(S_OK == d3d->EnumAdapterModes(D3DADAPTER_DEFAULT, D3DFMT_X8R8G8B8, i, &mode))
if(S_OK == d3d->EnumAdapterModes(D3DADAPTER_DEFAULT, D3DFMT_R5G6B5, i, &mode))
{
m_modes.push_back(mode);

View File

@ -813,6 +813,7 @@
<ClInclude Include="GSDevice11.h" />
<ClInclude Include="GSDevice7.h" />
<ClInclude Include="GSDevice9.h" />
<ClInclude Include="GSDeviceDX.h" />
<ClInclude Include="GSDeviceNull.h" />
<ClInclude Include="GSDeviceOGL.h" />
<ClInclude Include="GSDialog.h" />

View File

@ -476,6 +476,9 @@
<ClInclude Include="GSDevice9.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="GSDeviceDX.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="GSDeviceNull.h">
<Filter>Header Files</Filter>
</ClInclude>

View File

@ -6,7 +6,6 @@
ProjectGUID="{18E42F6F-3A62-41EE-B42F-79366C4F1E95}"
RootNamespace="GSdx"
Keyword="Win32Proj"
TargetFrameworkVersion="196613"
>
<Platforms>
<Platform

View File

@ -5,7 +5,7 @@
Name="LilyPad"
ProjectGUID="{E4081455-398C-4610-A87C-90A8A7D72DC3}"
RootNamespace="LilyPad"
TargetFrameworkVersion="131072"
TargetFrameworkVersion="0"
>
<Platforms>
<Platform
@ -21,7 +21,7 @@
<Configuration
Name="Debug|Win32"
ConfigurationType="2"
InheritedPropertySheets=".\ProjectRootDir.vsprops;..\..\common\vsprops\BaseProperties.vsprops;..\..\common\vsprops\CodeGen_Debug.vsprops"
InheritedPropertySheets=".\ProjectRootDir.vsprops;..\..\common\vsprops\BaseProperties.vsprops;..\..\common\vsprops\CodeGen_Debug.vsprops;..\..\common\vsprops\IncrementalLinking.vsprops"
UseOfMFC="0"
CharacterSet="2"
>
@ -47,7 +47,6 @@
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
PreprocessorDefinitions="_USRDLL;TEST_EXPORTS"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="Global.h"
@ -68,10 +67,8 @@
Name="VCLinkerTool"
AdditionalDependencies="Setupapi.lib Winmm.lib ole32.lib advapi32.lib user32.lib kernel32.lib Comdlg32.lib dinput8.lib dxguid.lib comctl32.lib"
OutputFile="$(OutDir)\$(ProjectName)-dbg.dll"
LinkIncremental="2"
SuppressStartupBanner="true"
LinkIncremental="1"
ModuleDefinitionFile=".\LilyPad.def"
GenerateDebugInformation="true"
RandomizedBaseAddress="1"
TargetMachine="1"
/>
@ -99,89 +96,6 @@
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|x64"
ConfigurationType="2"
InheritedPropertySheets="..\..\common\vsprops\plugin_svnroot.vsprops;.\ProjectRootDir.vsprops;..\..\common\vsprops\BaseProperties.vsprops;..\..\common\vsprops\3rdpartyDeps.vsprops"
UseOfMFC="0"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="true"
SuppressStartupBanner="true"
TargetEnvironment="3"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;TEST_EXPORTS"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="Global.h"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="3"
DisableSpecificWarnings="4995, 4996"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="odbc32.lib odbccp32.lib dinput8.lib dxguid.lib comctl32.lib"
LinkIncremental="2"
SuppressStartupBanner="true"
GenerateDebugInformation="true"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
ConfigurationType="2"
@ -240,6 +154,7 @@
EnableCOMDATFolding="2"
EntryPointSymbol=""
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
TargetMachine="1"
/>
<Tool
@ -265,6 +180,177 @@
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release No CRT|Win32"
ConfigurationType="2"
InheritedPropertySheets=".\ProjectRootDir.vsprops;..\..\common\vsprops\BaseProperties.vsprops;..\..\common\vsprops\CodeGen_Release.vsprops"
UseOfMFC="0"
CharacterSet="2"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="true"
SuppressStartupBanner="true"
TargetEnvironment="1"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="3"
WholeProgramOptimization="false"
PreprocessorDefinitions="NDEBUG;_USRDLL;TEST_EXPORTS;NO_CRT"
ExceptionHandling="0"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="Global.h"
CallingConvention="1"
DisableSpecificWarnings="4995, 4996"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ntdll.lib Setupapi.lib Winmm.lib ole32.lib advapi32.lib user32.lib kernel32.lib Comdlg32.lib dinput8.lib dxguid.lib comctl32.lib"
OutputFile="$(OutDir)\$(ProjectName)-no CRT.dll"
LinkIncremental="1"
SuppressStartupBanner="true"
IgnoreAllDefaultLibraries="true"
ModuleDefinitionFile=".\LilyPad.def"
OptimizeReferences="2"
EnableCOMDATFolding="2"
LinkTimeCodeGeneration="0"
EntryPointSymbol="DllMain"
RandomizedBaseAddress="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|x64"
ConfigurationType="2"
InheritedPropertySheets="..\..\common\vsprops\plugin_svnroot.vsprops;.\ProjectRootDir.vsprops;..\..\common\vsprops\BaseProperties.vsprops;..\..\common\vsprops\3rdpartyDeps.vsprops"
UseOfMFC="0"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="true"
SuppressStartupBanner="true"
TargetEnvironment="3"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;TEST_EXPORTS"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="Global.h"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="3"
DisableSpecificWarnings="4995, 4996"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ntdll.lib Setupapi.lib Winmm.lib ole32.lib advapi32.lib user32.lib kernel32.lib Comdlg32.lib dinput8.lib dxguid.lib comctl32.lib"
LinkIncremental="2"
SuppressStartupBanner="true"
GenerateDebugInformation="true"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|x64"
ConfigurationType="2"
@ -329,22 +415,23 @@
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ntdll.lib Setupapi.lib Winmm.lib ole32.lib advapi32.lib user32.lib kernel32.lib Comdlg32.lib dinput8.lib dxguid.lib comctl32.lib"
AdditionalDependencies="odbc32.lib odbccp32.lib dinput8.lib dxguid.lib comctl32.lib"
OutputFile="$(OutDir)\$(ProjectName)64.dll"
LinkIncremental="1"
SuppressStartupBanner="true"
ModuleDefinitionFile=".\LilyPad.def"
OptimizeReferences="2"
EnableCOMDATFolding="2"
EntryPointSymbol=""
BaseAddress="0x15000000"
TargetMachine="17"
EntryPointSymbol="DllMain"
RandomizedBaseAddress="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
EmbedManifest="false"
/>
<Tool
Name="VCXDCMakeTool"
@ -366,95 +453,6 @@
ExcludedFromBuild="true"
/>
</Configuration>
<Configuration
Name="Release No CRT|Win32"
ConfigurationType="2"
InheritedPropertySheets=".\ProjectRootDir.vsprops;..\..\common\vsprops\BaseProperties.vsprops;..\..\common\vsprops\CodeGen_Release.vsprops"
UseOfMFC="0"
CharacterSet="2"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="true"
SuppressStartupBanner="true"
TargetEnvironment="1"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="3"
WholeProgramOptimization="false"
PreprocessorDefinitions="NDEBUG;_USRDLL;TEST_EXPORTS;NO_CRT"
ExceptionHandling="0"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="Global.h"
CallingConvention="1"
DisableSpecificWarnings="4995, 4996"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ntdll.lib Setupapi.lib Winmm.lib ole32.lib advapi32.lib user32.lib kernel32.lib Comdlg32.lib dinput8.lib dxguid.lib comctl32.lib"
OutputFile="$(OutDir)\$(ProjectName)-no CRT.dll"
LinkIncremental="1"
SuppressStartupBanner="true"
IgnoreAllDefaultLibraries="true"
ModuleDefinitionFile=".\LilyPad.def"
OptimizeReferences="2"
EnableCOMDATFolding="2"
LinkTimeCodeGeneration="0"
EntryPointSymbol="DllMain"
RandomizedBaseAddress="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
EmbedManifest="false"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release No CRT|x64"
ConfigurationType="2"
@ -574,14 +572,6 @@
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCCLCompilerTool"
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
@ -591,6 +581,23 @@
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release No CRT|Win32"
>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCCLCompilerTool"
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
@ -601,15 +608,6 @@
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release No CRT|Win32"
>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release No CRT|x64"
>
@ -644,14 +642,6 @@
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCCLCompilerTool"
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
@ -661,6 +651,23 @@
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release No CRT|Win32"
>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCCLCompilerTool"
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
@ -671,15 +678,6 @@
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release No CRT|Win32"
>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release No CRT|x64"
>
@ -707,14 +705,6 @@
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
@ -724,7 +714,7 @@
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
Name="Release No CRT|Win32"
>
<Tool
Name="VCCLCompilerTool"
@ -732,7 +722,15 @@
/>
</FileConfiguration>
<FileConfiguration
Name="Release No CRT|Win32"
Name="Debug|x64"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCLCompilerTool"
@ -780,14 +778,6 @@
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
@ -797,7 +787,7 @@
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
Name="Release No CRT|Win32"
>
<Tool
Name="VCResourceCompilerTool"
@ -805,7 +795,15 @@
/>
</FileConfiguration>
<FileConfiguration
Name="Release No CRT|Win32"
Name="Debug|x64"
>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCResourceCompilerTool"
@ -940,14 +938,6 @@
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCCLCompilerTool"
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
@ -957,6 +947,23 @@
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release No CRT|Win32"
>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCCLCompilerTool"
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
@ -967,15 +974,6 @@
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release No CRT|Win32"
>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release No CRT|x64"
>

View File

@ -6,7 +6,6 @@
ProjectGUID="{BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}"
RootNamespace="USBnull"
Keyword="Win32Proj"
TargetFrameworkVersion="131072"
>
<Platforms>
<Platform

View File

@ -6,7 +6,6 @@
ProjectGUID="{04439C5F-05FB-4A9C-AAD1-5388C25377DB}"
RootNamespace="DEV9null"
Keyword="Win32Proj"
TargetFrameworkVersion="131072"
>
<Platforms>
<Platform

View File

@ -5,7 +5,6 @@
Name="SPU2-X"
ProjectGUID="{5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}"
RootNamespace="spu2x"
TargetFrameworkVersion="131072"
>
<Platforms>
<Platform

View File

@ -6,7 +6,6 @@
ProjectGUID="{6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}"
RootNamespace="xpad"
Keyword="Win32Proj"
TargetFrameworkVersion="196613"
>
<Platforms>
<Platform

View File

@ -5,7 +5,6 @@
Name="ZeroGS"
ProjectGUID="{5C6B7D28-E73D-4F71-8FC0-17ADA640EBD8}"
RootNamespace="ZeroGS"
TargetFrameworkVersion="131072"
>
<Platforms>
<Platform

View File

@ -6,7 +6,6 @@
ProjectGUID="{7F059854-568D-4E08-9D00-1E78E203E4DC}"
RootNamespace="ZeroSPU2"
Keyword="Win32Proj"
TargetFrameworkVersion="131072"
>
<Platforms>
<Platform