mirror of
https://github.com/PCSX2/pcsx2.git
synced 2026-01-31 01:15:24 +01:00
Compare commits
33 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
21012a8ec3 | ||
|
|
8f74b640f0 | ||
|
|
f3ba414443 | ||
|
|
e4c424896e | ||
|
|
c84ca53b4d | ||
|
|
9f7fd13875 | ||
|
|
4ee00501b2 | ||
|
|
a7b580da0c | ||
|
|
1b85d4403c | ||
|
|
12e97b66b0 | ||
|
|
f5f4fc9014 | ||
|
|
8e095ba8f8 | ||
|
|
a6ef814653 | ||
|
|
5a591dd650 | ||
|
|
884b2f4c4c | ||
|
|
5b157d03e7 | ||
|
|
bdf5be3111 | ||
|
|
ae5f302189 | ||
|
|
e99db4f6d6 | ||
|
|
cddc805dde | ||
|
|
7f32ba2e88 | ||
|
|
1501d7fe8a | ||
|
|
4f2a8161a7 | ||
|
|
81be817c39 | ||
|
|
8ba761d334 | ||
|
|
22880339b6 | ||
|
|
08724daf98 | ||
|
|
3d3b275410 | ||
|
|
f61c27ae20 | ||
|
|
6259e61792 | ||
|
|
c56994b6a9 | ||
|
|
ae763523d3 | ||
|
|
aca2f1434b |
@@ -107,18 +107,6 @@ Region = NTSC-J
|
||||
//eeClampMode = 3 // Text in races works
|
||||
vuClampMode = 2 // Text in GT mode works
|
||||
---------------------------------------------
|
||||
Serial = PBPX-95205
|
||||
Name = Playstation 2 - Demo Disc 2000
|
||||
Region = PAL-Unk
|
||||
---------------------------------------------
|
||||
Serial = SCED-51657
|
||||
Name = Official Playstation Magazine - Demo Disc 33
|
||||
Region = PAL-Unk
|
||||
Compat = 5
|
||||
[patches = 90C0E5F1]
|
||||
comment=Must enable FPU Negative Div Hack gamefix for Dakar 2 Demo
|
||||
[/patches]
|
||||
---------------------------------------------
|
||||
Serial = PBPX-95201
|
||||
Name = Dead or Alive 2
|
||||
Region = NTSC-J
|
||||
@@ -128,6 +116,10 @@ Compat = 5
|
||||
patch=0,EE,00290408,word,24060000
|
||||
[/patches]
|
||||
---------------------------------------------
|
||||
Serial = PBPX-95205
|
||||
Name = Playstation 2 - Demo Disc 2000
|
||||
Region = PAL-Unk
|
||||
---------------------------------------------
|
||||
Serial = PBPX-95503
|
||||
Name = Gran Turismo 3 - A-Spec [PS2 Bundle]
|
||||
Region = NTSC-U
|
||||
@@ -1133,6 +1125,14 @@ Serial = SCED-51537
|
||||
Name = Official PlayStation 2 Magazine Demo 37
|
||||
Region = PAL-M5
|
||||
---------------------------------------------
|
||||
Serial = SCED-51657
|
||||
Name = Official Playstation Magazine - Demo Disc 33
|
||||
Region = PAL-Unk
|
||||
Compat = 5
|
||||
[patches = 90C0E5F1]
|
||||
comment=Must enable FPU Negative Div Hack gamefix for Dakar 2 Demo
|
||||
[/patches]
|
||||
---------------------------------------------
|
||||
Serial = SCED-52436
|
||||
Name = Playstation2 UK Demo 7-2004
|
||||
Region = PAL-Unk
|
||||
@@ -1618,6 +1618,13 @@ Serial = SCES-51176
|
||||
Name = Disney's Treasure Planet
|
||||
Region = PAL-M4
|
||||
---------------------------------------------
|
||||
Serial = SCES-51177
|
||||
Name = Disney's Treasure Planet
|
||||
Region = PAL
|
||||
EETimingHack = 1 // Fixes hang before going ingame
|
||||
eeRoundMode = 0 // Fixes characters flying into sky
|
||||
eeClampMode = 3 // Required to load areas correctly
|
||||
---------------------------------------------
|
||||
Serial = SCES-51179
|
||||
Name = This is Football 2003
|
||||
Region = PAL-E
|
||||
@@ -1725,6 +1732,7 @@ Region = PAL-M5
|
||||
Serial = SCES-51684
|
||||
Name = World Rally Championship 3
|
||||
Region = PAL-M8
|
||||
Compat = 5
|
||||
XgKickHack = 1
|
||||
[patches = 80802EA9]
|
||||
comment= Patch By Prafull
|
||||
@@ -4589,13 +4597,6 @@ EETimingHack = 1 // Fixes hang before going ingame
|
||||
eeRoundMode = 0 // Fixes characters flying into sky
|
||||
eeClampMode = 3 // Required to load areas correctly
|
||||
---------------------------------------------
|
||||
Serial = SCES-51177
|
||||
Name = Disney's Treasure Planet
|
||||
Region = PAL
|
||||
EETimingHack = 1 // Fixes hang before going ingame
|
||||
eeRoundMode = 0 // Fixes characters flying into sky
|
||||
eeClampMode = 3 // Required to load areas correctly
|
||||
---------------------------------------------
|
||||
Serial = SCUS-97147
|
||||
Name = Cool Boarders 2001 [Demo]
|
||||
Region = NTSC-U
|
||||
@@ -7115,6 +7116,7 @@ Region = PAL-M5
|
||||
Serial = SLES-50252
|
||||
Name = Penny Racers
|
||||
Region = PAL-M3
|
||||
Compat = 5
|
||||
[patches = FBE2613D]
|
||||
//Patched by Prafull
|
||||
//Fixes vsync issues
|
||||
@@ -8390,7 +8392,7 @@ Region = PAL-M5
|
||||
Serial = SLES-50874
|
||||
Name = F1 2002
|
||||
Region = PAL-M4
|
||||
Compat = 3
|
||||
Compat = 5
|
||||
[patches = A0ED2D23]
|
||||
//Patched by Prafull
|
||||
//Fixes controller issue but skips videos
|
||||
@@ -11301,7 +11303,7 @@ Compat = 5
|
||||
Serial = SLES-52298
|
||||
Name = IndyCar Series 2005
|
||||
Region = PAL-M5
|
||||
Compat = 2
|
||||
Compat = 5
|
||||
---------------------------------------------
|
||||
Serial = SLES-52308
|
||||
Name = Karaoke Stage
|
||||
@@ -15397,6 +15399,7 @@ Region = PAL-M6
|
||||
Serial = SLES-54151
|
||||
Name = Let's Make a Soccer Team!
|
||||
Region = PAL-M5
|
||||
Compat = 5
|
||||
---------------------------------------------
|
||||
Serial = SLES-54152
|
||||
Name = Ant Bully, The
|
||||
@@ -34626,7 +34629,7 @@ Compat = 4
|
||||
Serial = SLUS-20225
|
||||
Name = Gadget Racers
|
||||
Region = NTSC-U
|
||||
Compat = 2
|
||||
Compat = 5
|
||||
[patches = 03854A28]
|
||||
//Patched by Prafull
|
||||
//Fixes vsync issues
|
||||
@@ -34684,7 +34687,7 @@ Region = NTSC-U
|
||||
Serial = SLUS-20235
|
||||
Name = Superman - Shadow of Apokolips
|
||||
Region = NTSC-U
|
||||
Compat = 3
|
||||
Compat = 5
|
||||
---------------------------------------------
|
||||
Serial = SLUS-20236
|
||||
Name = Taz Wanted
|
||||
@@ -36193,7 +36196,7 @@ Compat = 5
|
||||
Serial = SLUS-20573
|
||||
Name = Sims, The
|
||||
Region = NTSC-U
|
||||
Compat = 5
|
||||
Compat = 4
|
||||
---------------------------------------------
|
||||
Serial = SLUS-20574
|
||||
Name = NCAA March Madness 2003
|
||||
@@ -36467,7 +36470,7 @@ Compat = 5
|
||||
Serial = SLUS-20637
|
||||
Name = Chessmaster (Online)
|
||||
Region = NTSC-U
|
||||
Compat = 4
|
||||
Compat = 5
|
||||
---------------------------------------------
|
||||
Serial = SLUS-20638
|
||||
Name = Backyard Wrestling - Don't Try This At Home
|
||||
@@ -37377,7 +37380,7 @@ Compat = 5
|
||||
Serial = SLUS-20842
|
||||
Name = Sims, The - Bustin' Out
|
||||
Region = NTSC-U
|
||||
Compat = 2
|
||||
Compat = 5
|
||||
---------------------------------------------
|
||||
Serial = SLUS-20843
|
||||
Name = Dead to Rights II
|
||||
@@ -37765,7 +37768,7 @@ Compat = 5
|
||||
Serial = SLUS-20919
|
||||
Name = ESPN - NFL 2K5
|
||||
Region = NTSC-U
|
||||
Compat = 4
|
||||
Compat = 5
|
||||
[patches = 42F9D5AF]
|
||||
//Patched by Prafull
|
||||
//Fixes random hangs
|
||||
@@ -39311,7 +39314,7 @@ Compat = 5
|
||||
Serial = SLUS-21232
|
||||
Name = College Hoops 2K6
|
||||
Region = NTSC-U
|
||||
Compat = 2
|
||||
Compat = 5
|
||||
[patches = A60E027C]
|
||||
//Patched by Prafull
|
||||
//This fixes random hangs and makes the game playable
|
||||
@@ -39335,6 +39338,7 @@ Compat = 2
|
||||
Serial = SLUS-21235
|
||||
Name = MLB 2k6
|
||||
Region = NTSC-U
|
||||
Compat = 5
|
||||
[patches = 88BB9A5C]
|
||||
//Patched by Prafull
|
||||
//Avoid hang at start
|
||||
@@ -40284,7 +40288,7 @@ Region = NTSC-U
|
||||
Serial = SLUS-21425
|
||||
Name = NHL 2K7
|
||||
Region = NTSC-U
|
||||
Compat = 2
|
||||
Compat = 5
|
||||
[patches = 478EFBDB]
|
||||
//Patched by Prafull
|
||||
//Avoid hang at start
|
||||
@@ -40785,7 +40789,7 @@ Region = NTSC-U
|
||||
Serial = SLUS-21563
|
||||
Name = Horsez
|
||||
Region = NTSC-U
|
||||
Compat = 4
|
||||
Compat = 5
|
||||
---------------------------------------------
|
||||
Serial = SLUS-21564
|
||||
Name = Atelier Iris 3: Grand Phantasm
|
||||
@@ -41115,7 +41119,7 @@ eeRoundMode = 0
|
||||
Serial = SLUS-21632
|
||||
Name = NHL 2K8
|
||||
Region = NTSC-U
|
||||
Compat = 3
|
||||
Compat = 5
|
||||
[patches = 77B49EF8]
|
||||
//Patched by Prafull-thanks to harsh
|
||||
//Avoid hang at start
|
||||
@@ -41338,6 +41342,7 @@ Compat = 5
|
||||
Serial = SLUS-21680
|
||||
Name = Harvey Birdman - Attorney at Law
|
||||
Region = NTSC-U
|
||||
Compat = 5
|
||||
---------------------------------------------
|
||||
Serial = SLUS-21681
|
||||
Name = Boogie
|
||||
@@ -42330,7 +42335,7 @@ Compat = 5
|
||||
Serial = SLUS-21914
|
||||
Name = NHL 2K10
|
||||
Region = NTSC-U
|
||||
Compat = 2
|
||||
Compat = 5
|
||||
[patches = 82CA153C]
|
||||
//Patched by Prafull
|
||||
//Fix hanging problem
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1,2 @@
|
||||
RunWizard=0
|
||||
RunWizard=1
|
||||
Version=140
|
||||
|
||||
@@ -16,6 +16,9 @@
|
||||
#include "PrecompiledHeader.h"
|
||||
#include "cpudetect_internal.h"
|
||||
#include "internal.h"
|
||||
#ifdef __linux__
|
||||
#include "fxsrintrin.h"
|
||||
#endif
|
||||
|
||||
using namespace x86Emitter;
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ EOF
|
||||
|
||||
# Default value
|
||||
GIT_SHA1=0;
|
||||
BRANCH="master"
|
||||
BRANCH="1.4.x"
|
||||
while [ -n "$1" ]; do
|
||||
case $1 in
|
||||
-help|-h ) help;shift 1;;
|
||||
|
||||
@@ -21,7 +21,7 @@ set -e
|
||||
######################################################################
|
||||
# Script configuration
|
||||
######################################################################
|
||||
VERSION=1.3.0
|
||||
VERSION=1.4.0
|
||||
COPYRIGHT="PCSX2 Dev Team"
|
||||
BUG_MAIL="https://github.com/PCSX2/pcsx2/issues"
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ msgstr ""
|
||||
"Project-Id-Version: PCSX2 0.9.9\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/PCSX2/pcsx2/issues\n"
|
||||
"POT-Creation-Date: 2015-12-22 16:57+0100\n"
|
||||
"PO-Revision-Date: 2012-09-09 20:43+0100\n"
|
||||
"PO-Revision-Date: 2015-12-31 01:13+0100\n"
|
||||
"Last-Translator: Zbyněk Schwarz <zbynek.schwarz@gmail.com>\n"
|
||||
"Language-Team: Zbyněk Schwarz\n"
|
||||
"Language: cs\n"
|
||||
@@ -15,7 +15,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
||||
"X-Generator: Virtaal 0.7.1-rc1\n"
|
||||
"X-Generator: Poedit 1.8.5\n"
|
||||
"X-Poedit-KeywordsList: pxE\n"
|
||||
"X-Poedit-SourceCharset: utf-8\n"
|
||||
"X-Poedit-SearchPath-0: pcsx2\n"
|
||||
@@ -116,6 +116,8 @@ msgid ""
|
||||
"Please note that the resulting file may not actually contain all saves, "
|
||||
"depending on how many are in the source memory card."
|
||||
msgstr ""
|
||||
"Prosím mějte na vědomí, že výsledný soubor nemusí obsahovat všechny uložené "
|
||||
"pozice podle toho, kolik jich je na zdrojové paměťové kartě."
|
||||
|
||||
#: pcsx2/gui/Dialogs/ConvertMemoryCardDialog.cpp:68
|
||||
msgid ""
|
||||
@@ -123,22 +125,29 @@ msgid ""
|
||||
"emulator during the conversion process, even if the emulator is no longer "
|
||||
"responding to input."
|
||||
msgstr ""
|
||||
"POZOR: Převod paměťové karty může chvíli trvat! Prosím, nezavírejte emulátor "
|
||||
"během průběhu konverze i když nebude nějakou dobu reagovat na vstup."
|
||||
|
||||
#: pcsx2/gui/Dialogs/ConvertMemoryCardDialog.cpp:87
|
||||
msgid "Convert this memory card to a standard 8 MB Memory Card .ps2 file."
|
||||
msgstr ""
|
||||
"Převést tuto paměťovou kartu na běžný soubor paměťové karty .ps2 o velikosti "
|
||||
"8 MB."
|
||||
|
||||
#: pcsx2/gui/Dialogs/ConvertMemoryCardDialog.cpp:89
|
||||
msgid "Convert this memory card to a 16 MB Memory Card .ps2 file."
|
||||
msgstr ""
|
||||
"Převést tuto paměťovou kartu na soubor paměťové karty .ps2 o velikosti 16 MB."
|
||||
|
||||
#: pcsx2/gui/Dialogs/ConvertMemoryCardDialog.cpp:91
|
||||
msgid "Convert this memory card to a 32 MB Memory Card .ps2 file."
|
||||
msgstr ""
|
||||
"Převést tuto paměťovou kartu na soubor paměťové karty .ps2 o velikosti 32 MB."
|
||||
|
||||
#: pcsx2/gui/Dialogs/ConvertMemoryCardDialog.cpp:93
|
||||
msgid "Convert this memory card to a 64 MB Memory Card .ps2 file."
|
||||
msgstr ""
|
||||
"Převést tuto paměťovou kartu na soubor paměťové karty .ps2 o velikosti 64 MB."
|
||||
|
||||
#: pcsx2/gui/Dialogs/CreateMemoryCardDialog.cpp:197
|
||||
msgid ""
|
||||
@@ -226,6 +235,9 @@ msgid ""
|
||||
"software changes. This prevents the memory card from running out of space "
|
||||
"for saves."
|
||||
msgstr ""
|
||||
"(Jen pro typ složka) Znovu indexuje obsah paměťové karty pokaždé, když ji "
|
||||
"změní běžící program. To zamezí možnosti, že by na paměťové kartě došlo "
|
||||
"místo pro uložené pozice."
|
||||
|
||||
#: pcsx2/gui/Dialogs/StuckThreadDialog.cpp:33
|
||||
#, c-format
|
||||
@@ -336,7 +348,7 @@ msgstr ""
|
||||
#: pcsx2/gui/MemoryCardFolder.h:527
|
||||
#, c-format
|
||||
msgid "(FolderMcd) Memory Card is full, could not add: %s"
|
||||
msgstr ""
|
||||
msgstr "(FolderMcd) Paměťová karta je plná, nemohu přidat: %s"
|
||||
|
||||
#: pcsx2/gui/Panels/BiosSelectorPanel.cpp:138
|
||||
msgid ""
|
||||
@@ -469,20 +481,18 @@ msgstr ""
|
||||
"* Transformers"
|
||||
|
||||
#: pcsx2/gui/Panels/GameFixesPanel.cpp:116
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"It's better to enable 'Automatic game fixes' at the main menu instead, and "
|
||||
"leave this page empty. ('Automatic' means: selectively use specific tested "
|
||||
"fixes for specific games). Manual game fixes will NOT increase your "
|
||||
"performance. In fact they may decrease it."
|
||||
msgstr ""
|
||||
"Opravy her můžou obejít špatnou emulaci v některých hrách.\n"
|
||||
"Můžou ale také způsobit problémy s kompatibilitou a výkonem, takže nejsou "
|
||||
"doporučeny.\n"
|
||||
"Opravy her jsou použity automaticky, takže zde nic nemusíte nastavovat."
|
||||
"Je lepší povolit 'Automatické Herní Záplaty' v hlavní nabídce a ponechat "
|
||||
"tuto stránku prázdnou. ('Automatické' znamená: selektivní použití "
|
||||
"specifických a otestovaných oprav v daných hrách). Ruční opravy NEZVÝŠÍ "
|
||||
"výkon. Vlastně jej mohou snížit."
|
||||
|
||||
#: pcsx2/gui/Panels/GameFixesPanel.cpp:120
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Gamefixes can work around wrong emulation in some titles. \n"
|
||||
"They may also cause compatibility or performance issues.\n"
|
||||
@@ -490,9 +500,9 @@ msgid ""
|
||||
"The safest way is to make sure that all game fixes are completely disabled."
|
||||
msgstr ""
|
||||
"Opravy her můžou obejít špatnou emulaci v některých hrách.\n"
|
||||
"Můžou ale také způsobit problémy s kompatibilitou a výkonem, takže nejsou "
|
||||
"doporučeny.\n"
|
||||
"Opravy her jsou použity automaticky, takže zde nic nemusíte nastavovat."
|
||||
"Můžou ale také způsobit problémy s kompatibilitou a výkonem\n"
|
||||
"\n"
|
||||
"Nejbezpečnější je ujistit se, že všechny opravy her jsou kompletně vypnuté."
|
||||
|
||||
#: pcsx2/gui/Panels/MemoryCardListPanel.cpp:686
|
||||
#, c-format
|
||||
@@ -593,30 +603,27 @@ msgstr ""
|
||||
"%s, pak stiskněte Zrušit pro uzavření panelu Nastavení."
|
||||
|
||||
#: pcsx2/gui/Panels/SpeedhacksPanel.cpp:29
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"-2 - Reduces the EE's cyclerate by about 50%. Moderate speedup, but *will* "
|
||||
"cause stuttering audio on many FMVs."
|
||||
msgstr ""
|
||||
"Sníží množství cyklů EE asi o 50%. Průměrné zrychlení, ale *způsobí* "
|
||||
"zadrhování zvuku ve spoustě FMV."
|
||||
"-2 - Sníží množství cyklů EE asi o 50%. Průměrné zrychlení, ale *způsobí* "
|
||||
"zadrhávání zvuku ve spoustě FMV."
|
||||
|
||||
#: pcsx2/gui/Panels/SpeedhacksPanel.cpp:34
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"-1 - Reduces the EE's cyclerate by about 33%. Mild speedup for most games "
|
||||
"with high compatibility."
|
||||
msgstr ""
|
||||
"Sníží množství cyklů EE asi o 33%. Mírné zrychlení ve většině her s vysokou "
|
||||
"kompatibilitou."
|
||||
"-1 - Sníží množství cyklů EE asi o 33%. Mírné zrychlení ve většině her s "
|
||||
"vysokou kompatibilitou."
|
||||
|
||||
#: pcsx2/gui/Panels/SpeedhacksPanel.cpp:39
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"0 - Default cyclerate. This closely matches the actual speed of a real PS2 "
|
||||
"EmotionEngine."
|
||||
msgstr ""
|
||||
"Výchozí množství cyklů. Toto se blíže shoduje se skutečnou rychlostí "
|
||||
"0 - Výchozí množství cyklů. Toto se nejblíže shoduje se skutečnou rychlostí "
|
||||
"opravdového EmotionEngine PS2."
|
||||
|
||||
#: pcsx2/gui/Panels/SpeedhacksPanel.cpp:44
|
||||
@@ -624,6 +631,8 @@ msgid ""
|
||||
"1 - Increases the EE's cyclerate by about 33%. Increases hardware "
|
||||
"requirements, may increase in-game FPS."
|
||||
msgstr ""
|
||||
"1 - Zvýší počet EE cyklů o 33%. Zvýší hardwarové nároky, ale může také "
|
||||
"zvýšit FPS ve hře."
|
||||
|
||||
#: pcsx2/gui/Panels/SpeedhacksPanel.cpp:49
|
||||
msgid ""
|
||||
@@ -631,6 +640,9 @@ msgid ""
|
||||
"requirements, may noticeably increase in-game FPS.\n"
|
||||
"This setting can cause games to FAIL TO BOOT."
|
||||
msgstr ""
|
||||
"2 - Zvýší počet EE cyklů o 50%. Podstatně zvýší hardwarové nároky, ale může "
|
||||
"znatelně zvýšit FPS ve hře.\n"
|
||||
"Toto nastavení může způsobit, že HRY SE NEMUSÍ SPUSTIT."
|
||||
|
||||
#: pcsx2/gui/Panels/SpeedhacksPanel.cpp:65
|
||||
msgid "0 - Disables VU Cycle Stealing. Most compatible setting!"
|
||||
@@ -671,7 +683,6 @@ msgstr ""
|
||||
"panel zakažte nejdříve."
|
||||
|
||||
#: pcsx2/gui/Panels/SpeedhacksPanel.cpp:135
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Setting lower values on this slider effectively reduces the clock speed of "
|
||||
"the EmotionEngine's R5900 core cpu, and typically brings big speedups to "
|
||||
@@ -680,9 +691,11 @@ msgid ""
|
||||
"bring about an increase in in-game FPS while also making games more "
|
||||
"demanding and possibly causing glitches."
|
||||
msgstr ""
|
||||
"Nastavením vyšších hodnot na tomto šoupátku účinně sníží rychlost hodin "
|
||||
"jádra R5900 procesoru EmotionEngine a typicky přináší velké zrychlení hrám, "
|
||||
"které nemohou využívat plný potenciál skutečného hardwaru PS2. "
|
||||
"Nastavení nižších hodnot na tomto posuvníku efektivně sníží rychlost "
|
||||
"procesoru EmotionEngine R5900 a typicky přinese velké zrychlení ve hrách, "
|
||||
"které nedokážou využít plný potenciál opravdového hardwaru PS2. Naopak vyšší "
|
||||
"hodnoty efektivně zvýší rychlost, což může zvýšit FPS ve hře, ale taky budou "
|
||||
"hry náročnější na výkon a možná se objeví problémy."
|
||||
|
||||
#: pcsx2/gui/Panels/SpeedhacksPanel.cpp:152
|
||||
msgid ""
|
||||
|
||||
@@ -7,7 +7,7 @@ msgstr ""
|
||||
"Project-Id-Version: PCSX2 0.9.9\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/PCSX2/pcsx2/issues\n"
|
||||
"POT-Creation-Date: 2015-12-22 16:57+0100\n"
|
||||
"PO-Revision-Date: 2012-09-09 20:41+0100\n"
|
||||
"PO-Revision-Date: 2015-12-31 01:17+0100\n"
|
||||
"Last-Translator: Zbyněk Schwarz <zbynek.schwarz@gmail.com>\n"
|
||||
"Language-Team: Zbyněk Schwarz\n"
|
||||
"Language: cs\n"
|
||||
@@ -15,7 +15,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
||||
"X-Generator: Virtaal 0.7.1-rc1\n"
|
||||
"X-Generator: Poedit 1.8.5\n"
|
||||
"X-Poedit-KeywordsList: _;pxL\n"
|
||||
"X-Poedit-SourceCharset: utf-8\n"
|
||||
"X-Poedit-SearchPath-0: pcsx2\n"
|
||||
@@ -390,13 +390,12 @@ msgid "Loading PS2 system plugins..."
|
||||
msgstr "Nahrávám systémové zásuvné moduly PS2..."
|
||||
|
||||
#: pcsx2/gui/AppInit.cpp:50
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"SSE2 extensions are not available. PCSX2 requires a cpu that supports the "
|
||||
"SSE2 instruction set."
|
||||
msgstr ""
|
||||
"Rozšíření SSE nejsou dostupná. PCSX2 vyžaduje procesor, který podporuje "
|
||||
"instrukční sadu SSE."
|
||||
"Rozšíření SSE2 nejsou dostupná. PCSX2 vyžaduje procesor, který podporuje "
|
||||
"instrukční sadu SSE2."
|
||||
|
||||
#: pcsx2/gui/AppInit.cpp:139
|
||||
msgid "PCSX2 Recompiler Error(s)"
|
||||
@@ -439,10 +438,9 @@ msgid "executes an ELF image"
|
||||
msgstr "spustí obraz ELF"
|
||||
|
||||
#: pcsx2/gui/AppInit.cpp:238
|
||||
#, fuzzy
|
||||
msgid "boots an empty DVD tray; use to enter the PS2 system menu"
|
||||
msgstr ""
|
||||
"zavede prázdnou mechaniku dvd; použijte pro vstup do systémového menu PS2"
|
||||
"zavede prázdnou mechaniku DVD; použijte pro vstup do systémového menu PS2"
|
||||
|
||||
#: pcsx2/gui/AppInit.cpp:239
|
||||
msgid "boots from the CDVD plugin (overrides IsoFile parameter)"
|
||||
@@ -614,11 +612,8 @@ msgid "Press Ok to go to the BIOS Configuration Panel."
|
||||
msgstr "Stiskněte OK pro přechod na Panel nastavení BIOSu."
|
||||
|
||||
#: pcsx2/gui/AppMain.cpp:196
|
||||
#, fuzzy
|
||||
msgid "Warning! Valid BIOS has not been selected. PCSX2 may be inoperable."
|
||||
msgstr ""
|
||||
"Varování! Systémové zásuvné moduly nebyly načteny. PCSX2 může být "
|
||||
"nepoužitelný."
|
||||
msgstr "Varování! Správný BIOS nebyl vybrán. PCSX2 nemusí být provozuschopné."
|
||||
|
||||
#: pcsx2/gui/AppMain.cpp:370
|
||||
#, c-format
|
||||
@@ -704,7 +699,6 @@ msgid "It's what I use (the programmer guy)."
|
||||
msgstr "To, co používám já (programátor)."
|
||||
|
||||
#: pcsx2/gui/ConsoleLogger.cpp:441
|
||||
#, fuzzy
|
||||
msgid "Normal font"
|
||||
msgstr "Normální"
|
||||
|
||||
@@ -815,14 +809,13 @@ msgid "Disables all log source filters."
|
||||
msgstr "Zakáže všechny filtry zdroje záznamů."
|
||||
|
||||
#: pcsx2/gui/ConsoleLogger.cpp:485
|
||||
#, fuzzy
|
||||
msgid "Restore Default"
|
||||
msgstr "Obnovit Výchozí"
|
||||
|
||||
#: pcsx2/gui/ConsoleLogger.cpp:485
|
||||
#, fuzzy
|
||||
msgid "Restore default source filters."
|
||||
msgstr "Povolí všechny filtry zdroje záznamů."
|
||||
msgstr "Obnovit výchozí filtry zdrojů."
|
||||
|
||||
#: pcsx2/gui/ConsoleLogger.cpp:487
|
||||
msgid "&Log"
|
||||
@@ -833,8 +826,9 @@ msgid "&Sources"
|
||||
msgstr "&Zdroje"
|
||||
|
||||
#: pcsx2/gui/Debugger/DisassemblyDialog.cpp:223
|
||||
#, fuzzy
|
||||
msgid "panel"
|
||||
msgstr ""
|
||||
msgstr "panel"
|
||||
|
||||
#: pcsx2/gui/Dialogs/AboutBoxDialog.cpp:35
|
||||
#, c-format
|
||||
@@ -866,18 +860,16 @@ msgid "Contributors"
|
||||
msgstr "Přispěvatelé"
|
||||
|
||||
#: pcsx2/gui/Dialogs/AboutBoxDialog.cpp:86
|
||||
#, fuzzy
|
||||
msgid "PlayStation 2 Emulator"
|
||||
msgstr "Emulátor Playstation 2"
|
||||
msgstr "Emulátor PlayStation 2"
|
||||
|
||||
#: pcsx2/gui/Dialogs/AboutBoxDialog.cpp:89
|
||||
msgid "PCSX2 Official Website and Forums"
|
||||
msgstr "Officiální stránka a Fóra PCSX2"
|
||||
|
||||
#: pcsx2/gui/Dialogs/AboutBoxDialog.cpp:93
|
||||
#, fuzzy
|
||||
msgid "PCSX2 Official Git Repository at GitHub"
|
||||
msgstr "Oficiální úložiště Svn PCSX2 na GitHub"
|
||||
msgstr "Oficiální repozitář Git PCSX2 na GitHubu"
|
||||
|
||||
#: pcsx2/gui/Dialogs/AboutBoxDialog.cpp:98
|
||||
msgid "I've seen enough"
|
||||
@@ -923,12 +915,12 @@ msgstr "Ignorovat"
|
||||
#: pcsx2/gui/Dialogs/ConfirmationDialogs.cpp:267
|
||||
#: pcsx2/gui/Dialogs/ConfirmationDialogs.cpp:276
|
||||
msgid "Retry"
|
||||
msgstr ""
|
||||
msgstr "Znovu"
|
||||
|
||||
#: pcsx2/gui/Dialogs/ConfirmationDialogs.cpp:270
|
||||
#: pcsx2/gui/Dialogs/ConfirmationDialogs.cpp:273
|
||||
msgid "Abort"
|
||||
msgstr ""
|
||||
msgstr "Zrušit"
|
||||
|
||||
#: pcsx2/gui/Dialogs/ConfirmationDialogs.cpp:280
|
||||
msgid "Reset"
|
||||
@@ -936,44 +928,45 @@ msgstr "Resetovat"
|
||||
|
||||
#: pcsx2/gui/Dialogs/ConvertMemoryCardDialog.cpp:36
|
||||
msgid "Convert a memory card to a different format"
|
||||
msgstr ""
|
||||
msgstr "Převést paměťovou kartu do jiného formátu"
|
||||
|
||||
#: pcsx2/gui/Dialogs/ConvertMemoryCardDialog.cpp:47
|
||||
msgid "Convert"
|
||||
msgstr ""
|
||||
msgstr "Převést"
|
||||
|
||||
#: pcsx2/gui/Dialogs/ConvertMemoryCardDialog.cpp:53
|
||||
msgid "Convert: "
|
||||
msgstr ""
|
||||
msgstr "Převést:"
|
||||
|
||||
#: pcsx2/gui/Dialogs/ConvertMemoryCardDialog.cpp:56
|
||||
msgid "To: "
|
||||
msgstr ""
|
||||
msgstr "Do:"
|
||||
|
||||
#: pcsx2/gui/Dialogs/ConvertMemoryCardDialog.cpp:87
|
||||
msgid "8MB File"
|
||||
msgstr ""
|
||||
msgstr "8MB Soubor"
|
||||
|
||||
#: pcsx2/gui/Dialogs/ConvertMemoryCardDialog.cpp:89
|
||||
msgid "16MB File"
|
||||
msgstr ""
|
||||
msgstr "16MB Soubor"
|
||||
|
||||
#: pcsx2/gui/Dialogs/ConvertMemoryCardDialog.cpp:91
|
||||
msgid "32MB File"
|
||||
msgstr ""
|
||||
msgstr "32MB Soubor"
|
||||
|
||||
#: pcsx2/gui/Dialogs/ConvertMemoryCardDialog.cpp:93
|
||||
msgid "64MB File"
|
||||
msgstr ""
|
||||
msgstr "64MB Soubor"
|
||||
|
||||
#: pcsx2/gui/Dialogs/ConvertMemoryCardDialog.cpp:95
|
||||
msgid "Convert this memory card to a folder of individual saves."
|
||||
msgstr ""
|
||||
"Převést tuto paměťovou kartu na složku obsahující individuální uložené "
|
||||
"pozice."
|
||||
|
||||
#: pcsx2/gui/Dialogs/ConvertMemoryCardDialog.cpp:95
|
||||
#, fuzzy
|
||||
msgid "Folder"
|
||||
msgstr "Adresáře"
|
||||
msgstr "Složka"
|
||||
|
||||
#: pcsx2/gui/Dialogs/ConvertMemoryCardDialog.cpp:122
|
||||
#: pcsx2/gui/Dialogs/CreateMemoryCardDialog.cpp:151
|
||||
@@ -985,17 +978,16 @@ msgstr "Chyba (%s)"
|
||||
#: pcsx2/gui/Dialogs/ConvertMemoryCardDialog.cpp:123
|
||||
#: pcsx2/gui/Dialogs/ConvertMemoryCardDialog.cpp:153
|
||||
#: pcsx2/gui/Dialogs/ConvertMemoryCardDialog.cpp:159
|
||||
#, fuzzy
|
||||
msgid "Convert memory card"
|
||||
msgstr "Vytvořit paměťovou kartu"
|
||||
msgstr "Převést paměťovou kartu"
|
||||
|
||||
#: pcsx2/gui/Dialogs/ConvertMemoryCardDialog.cpp:153
|
||||
msgid "This target type is not supported!"
|
||||
msgstr ""
|
||||
msgstr "Cílový typ není podporován!"
|
||||
|
||||
#: pcsx2/gui/Dialogs/ConvertMemoryCardDialog.cpp:159
|
||||
msgid "Memory Card conversion failed for unknown reasons."
|
||||
msgstr ""
|
||||
msgstr "Převod paměťové karty selhal z neznámých důvodů."
|
||||
|
||||
#: pcsx2/gui/Dialogs/CreateMemoryCardDialog.cpp:41
|
||||
msgid "Create a new memory card"
|
||||
@@ -1026,9 +1018,8 @@ msgid "Create memory card"
|
||||
msgstr "Vytvořit paměťovou kartu"
|
||||
|
||||
#: pcsx2/gui/Dialogs/CreateMemoryCardDialog.cpp:163
|
||||
#, fuzzy
|
||||
msgid "Error: The directory for the memory card could not be created."
|
||||
msgstr "Chyba: Paměťová karta nemohla být vytvořena."
|
||||
msgstr "Chyba: Složka paměťové karty nemohla být vytvořena."
|
||||
|
||||
#: pcsx2/gui/Dialogs/CreateMemoryCardDialog.cpp:178
|
||||
msgid "Error: The memory card could not be created."
|
||||
@@ -1101,11 +1092,13 @@ msgstr ""
|
||||
|
||||
#: pcsx2/gui/Dialogs/CreateMemoryCardDialog.cpp:226
|
||||
msgid "Folder [experimental]"
|
||||
msgstr ""
|
||||
msgstr "Složka [experimentální]"
|
||||
|
||||
#: pcsx2/gui/Dialogs/CreateMemoryCardDialog.cpp:226
|
||||
msgid "Store memory card contents in the host filesystem instead of a file."
|
||||
msgstr ""
|
||||
"Uložit obsah paměťové karty na hostitelský systém souborů místo jednoho "
|
||||
"souboru."
|
||||
|
||||
#: pcsx2/gui/Dialogs/CreateMemoryCardDialog.cpp:227
|
||||
msgid ""
|
||||
@@ -1114,6 +1107,10 @@ msgid ""
|
||||
"files in and out of the memory card with your standard file explorer. This "
|
||||
"is still experimental, so use at your own risk!"
|
||||
msgstr ""
|
||||
"Automaticky spravuje obsah paměťové karty tak, že jen konzole vidí soubory "
|
||||
"vztahující se k aktuálně spuštěnému programu. Umožní vám to přetahovat "
|
||||
"soubory z a do paměťové karty prostřednictvím běžného správce souborů. To je "
|
||||
"stále experimentální, takže to používejte na vlastní zodpovědnost."
|
||||
|
||||
#: pcsx2/gui/Dialogs/FirstTimeWizard.cpp:47
|
||||
#, c-format
|
||||
@@ -1181,7 +1178,7 @@ msgstr "Automaticky vyjmout paměťové karty při nahrávání uložených stav
|
||||
|
||||
#: pcsx2/gui/Dialogs/McdConfigDialog.cpp:44
|
||||
msgid "Automatically manage saves based on running game"
|
||||
msgstr ""
|
||||
msgstr "Automaticky spravuje uložené pozice podle právě spuštěné hry"
|
||||
|
||||
#: pcsx2/gui/Dialogs/McdConfigDialog.cpp:101
|
||||
msgid "MemoryCard Manager"
|
||||
@@ -1300,7 +1297,7 @@ msgstr "Výstup GS je Zakázán!"
|
||||
|
||||
#: pcsx2/gui/GlobalCommands.cpp:308
|
||||
msgid "Exit PCSX2?"
|
||||
msgstr ""
|
||||
msgstr "Ukončit PCSX2?"
|
||||
|
||||
#: pcsx2/gui/GlobalCommands.cpp:461 pcsx2/gui/MainFrame.cpp:425
|
||||
msgid "Save state"
|
||||
@@ -1440,9 +1437,8 @@ msgid "Enable Cheats"
|
||||
msgstr "Povolit Cheaty"
|
||||
|
||||
#: pcsx2/gui/MainFrame.cpp:438
|
||||
#, fuzzy
|
||||
msgid "Enable Widescreen Patches"
|
||||
msgstr "Povolit Záplaty"
|
||||
msgstr "Povolit Záplaty pro širokoúhlé displeje"
|
||||
|
||||
#: pcsx2/gui/MainFrame.cpp:441
|
||||
msgid "Enable Host Filesystem"
|
||||
@@ -1713,9 +1709,9 @@ msgid "Blockdumps (%s)"
|
||||
msgstr "Výpisy bloků (%s)"
|
||||
|
||||
#: pcsx2/gui/MainMenuClicks.cpp:275
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid "Compressed (%s)"
|
||||
msgstr "Výpisy bloků (%s)"
|
||||
msgstr "Komprimováno (%s)"
|
||||
|
||||
#: pcsx2/gui/MainMenuClicks.cpp:278 pcsx2/gui/MainMenuClicks.cpp:299
|
||||
msgid "All Files (*.*)"
|
||||
@@ -1723,7 +1719,7 @@ msgstr "Všechny soubory (*.*)"
|
||||
|
||||
#: pcsx2/gui/MainMenuClicks.cpp:281
|
||||
msgid "Select disc image, compressed disc image, or block-dump..."
|
||||
msgstr ""
|
||||
msgstr "Vyberte obraz disku, komprimovaný obraz disku a nebo block-dump..."
|
||||
|
||||
#: pcsx2/gui/MainMenuClicks.cpp:298
|
||||
msgid "Select ELF file..."
|
||||
@@ -2108,23 +2104,23 @@ msgid "Simulate VIF1 FIFO read ahead. Fixes slow loading games."
|
||||
msgstr "Simulovat čtení dopředu VIF1 FIFO. Opravuje pomalé načítání her."
|
||||
|
||||
#: pcsx2/gui/Panels/GameFixesPanel.cpp:92
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Delay VIF1 Stalls (VIF1 FIFO) - For SOCOM 2 HUD & Spy Hunter loading hang."
|
||||
msgstr "Odložit zdržení VIF1 (VIF1 FIFO) - Pro SOCOM 2 HUD."
|
||||
msgstr ""
|
||||
"Odložit zdržení VIF1 (VIF1 FIFO) - Pro opravu zaseknutí během načítání SOCOM "
|
||||
"2 HUD a Spy Hunter."
|
||||
|
||||
#: pcsx2/gui/Panels/GameFixesPanel.cpp:96
|
||||
msgid "Ignore Bus Direction on Path3 Transfer - Used for Hotwheels"
|
||||
msgstr "Nevšímat si směru řadiče v převodu Path3 - Použito pro Hotwheels"
|
||||
|
||||
#: pcsx2/gui/Panels/GameFixesPanel.cpp:100
|
||||
#, fuzzy
|
||||
msgid "Switch to GSdx software rendering when an FMV plays"
|
||||
msgstr "Přepnout na softwarové vykreslování GSdx při přehrávání FMV"
|
||||
|
||||
#: pcsx2/gui/Panels/GameFixesPanel.cpp:104
|
||||
msgid "Preload TLB hack to avoid tlb miss on Goemon"
|
||||
msgstr ""
|
||||
msgstr "Přednačíst TLB hack pro zabránění minutí tlb v Goemon"
|
||||
|
||||
#: pcsx2/gui/Panels/GameFixesPanel.cpp:115
|
||||
msgid "Enable manual game fixes [Not recommended]"
|
||||
@@ -2174,9 +2170,8 @@ msgid "Create ..."
|
||||
msgstr "Vytvořit ..."
|
||||
|
||||
#: pcsx2/gui/Panels/MemoryCardListPanel.cpp:397
|
||||
#, fuzzy
|
||||
msgid "Convert ..."
|
||||
msgstr "Vložit ..."
|
||||
msgstr "Převést ..."
|
||||
|
||||
#: pcsx2/gui/Panels/MemoryCardListPanel.cpp:409
|
||||
msgid "Card: "
|
||||
@@ -2326,9 +2321,8 @@ msgid "Delete card"
|
||||
msgstr "Smazat kartu"
|
||||
|
||||
#: pcsx2/gui/Panels/MemoryCardListPanel.cpp:1032
|
||||
#, fuzzy
|
||||
msgid "Convert card"
|
||||
msgstr "Vložit kartu"
|
||||
msgstr "Převést kartu"
|
||||
|
||||
#: pcsx2/gui/Panels/MemoryCardListPanel.cpp:1036
|
||||
#: pcsx2/gui/Panels/MemoryCardListPanel.cpp:1040
|
||||
@@ -2356,8 +2350,9 @@ msgid "Formatted"
|
||||
msgstr "Formátována"
|
||||
|
||||
#: pcsx2/gui/Panels/MemoryCardListView.cpp:104
|
||||
#, fuzzy
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
msgstr "Typ"
|
||||
|
||||
#: pcsx2/gui/Panels/MemoryCardListView.cpp:105
|
||||
msgid "Last Modified"
|
||||
@@ -2376,14 +2371,12 @@ msgid "Yes"
|
||||
msgstr "Ano"
|
||||
|
||||
#: pcsx2/gui/Panels/MemoryCardListView.cpp:152
|
||||
#, fuzzy
|
||||
msgid "PS2"
|
||||
msgstr "SZS"
|
||||
msgstr "PS2"
|
||||
|
||||
#: pcsx2/gui/Panels/MemoryCardListView.cpp:152
|
||||
#, fuzzy
|
||||
msgid "PSX"
|
||||
msgstr "SZS"
|
||||
msgstr "PSX"
|
||||
|
||||
#: pcsx2/gui/Panels/MemoryCardListView.cpp:165
|
||||
msgid "[-- Unused cards --]"
|
||||
@@ -2780,21 +2773,20 @@ msgid "The configured BIOS file does not exist. Please re-configure."
|
||||
msgstr "Nastavený soubor BIOSu neexistuje. Prosím nastavte znovu."
|
||||
|
||||
#: pcsx2/x86/ix86-32/iR5900-32.cpp:591
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s Extensions not found. The R5900-32 recompiler requires a host CPU with "
|
||||
"SSE2 extensions."
|
||||
msgstr ""
|
||||
"Rozšíření %s nenalezeno. Rekompilátor R5900-32 potřebuje hostitelský "
|
||||
"procesor s rozšířením MMX, SSE, a SSE2."
|
||||
"Rozšíření %s nenalezeno. Rekompilátor R5900-32 potřebuje hostitelské CPU s "
|
||||
"rozšířením SSE2."
|
||||
|
||||
#: pcsx2/x86/microVU.cpp:28
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s Extensions not found. microVU requires a host CPU with SSE2 extensions."
|
||||
msgstr ""
|
||||
"Rozšíření %s nenalezeno. mikroVJ vyžaduje, aby hostitelský procesor měl "
|
||||
"rozšíření MMX, SSE, a SSE2."
|
||||
"Rozšíření %s nenalezeno. microVU potřebuje hostitelské CPU s rozšířením SSE2."
|
||||
|
||||
#~ msgid "Betatesting"
|
||||
#~ msgstr "Beta testeři"
|
||||
|
||||
@@ -26,14 +26,9 @@
|
||||
; ------------------------------------------
|
||||
; (Binaries, shared DLLs, null plugins, game database, languages, etc)
|
||||
|
||||
; Note that v3 pthreads is compatible with v4 pthreads, so we just copy v4 over both
|
||||
; filenames. This allows many older plugin versions to continue to work.
|
||||
|
||||
File ..\bin\w32pthreads.v4.dll
|
||||
; See above comment.
|
||||
File /oname=w32pthreads.v3.dll ..\bin\w32pthreads.v4.dll
|
||||
File ..\bin\GameIndex.dbf
|
||||
File ..\bin\cheats_ws.zip
|
||||
File ..\bin\PCSX2_keys.ini.default
|
||||
|
||||
!insertmacro UNINSTALL.LOG_CLOSE_INSTALL
|
||||
|
||||
|
||||
@@ -414,13 +414,16 @@ struct Pcsx2Config
|
||||
|
||||
u8 FontWidth;
|
||||
u8 FontHeight;
|
||||
u32 WindowWidth;
|
||||
u32 WindowHeight;
|
||||
|
||||
DebugOptions();
|
||||
void LoadSave( IniInterface& conf );
|
||||
|
||||
bool operator ==( const DebugOptions& right ) const
|
||||
{
|
||||
return OpEqu( bitset ) && OpEqu( FontWidth ) && OpEqu( FontHeight );
|
||||
return OpEqu( bitset ) && OpEqu( FontWidth ) && OpEqu( FontHeight )
|
||||
&& OpEqu( WindowWidth ) && OpEqu( WindowHeight );
|
||||
}
|
||||
|
||||
bool operator !=( const DebugOptions& right ) const
|
||||
|
||||
@@ -379,6 +379,8 @@ Pcsx2Config::DebugOptions::DebugOptions()
|
||||
ShowDebuggerOnStart = false;
|
||||
FontWidth = 8;
|
||||
FontHeight = 12;
|
||||
WindowWidth = 0;
|
||||
WindowHeight = 0;
|
||||
}
|
||||
|
||||
void Pcsx2Config::DebugOptions::LoadSave( IniInterface& ini )
|
||||
@@ -388,6 +390,8 @@ void Pcsx2Config::DebugOptions::LoadSave( IniInterface& ini )
|
||||
IniBitBool( ShowDebuggerOnStart );
|
||||
IniBitfield(FontWidth);
|
||||
IniBitfield(FontHeight);
|
||||
IniBitfield(WindowWidth);
|
||||
IniBitfield(WindowHeight);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -39,9 +39,9 @@ void psxBGEZ() // Branch if Rs >= 0
|
||||
|
||||
void psxBGEZAL() // Branch if Rs >= 0 and link
|
||||
{
|
||||
_SetLink(31);
|
||||
if (_i32(_rRs_) >= 0)
|
||||
{
|
||||
_SetLink(31);
|
||||
doBranch(_BranchTarget_);
|
||||
}
|
||||
}
|
||||
@@ -62,9 +62,9 @@ void psxBLTZ() // Branch if Rs < 0
|
||||
|
||||
void psxBLTZAL() // Branch if Rs < 0 and link
|
||||
{
|
||||
_SetLink(31);
|
||||
if (_i32(_rRs_) < 0)
|
||||
{
|
||||
_SetLink(31);
|
||||
doBranch(_BranchTarget_);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,9 +16,9 @@
|
||||
#pragma once
|
||||
|
||||
static const int PCSX2_VersionHi = 1;
|
||||
static const int PCSX2_VersionMid = 3;
|
||||
static const int PCSX2_VersionLo = 1;
|
||||
static const bool PCSX2_isReleaseVersion = 0;
|
||||
static const int PCSX2_VersionMid = 4;
|
||||
static const int PCSX2_VersionLo = 0;
|
||||
static const bool PCSX2_isReleaseVersion = 1;
|
||||
|
||||
class SysCoreThread;
|
||||
|
||||
|
||||
@@ -134,6 +134,7 @@ void SysCoreThread::Reset()
|
||||
GetVmMemory().DecommitAll();
|
||||
SysClearExecutionCache();
|
||||
sApp.PostAppMethod( &Pcsx2App::leaveDebugMode );
|
||||
g_FrameCount = 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -56,7 +56,8 @@ namespace PathDefs
|
||||
|
||||
const wxDirName& Settings()
|
||||
{
|
||||
static const wxDirName retval( L"inis" );
|
||||
static const wxDirName retval(wxsFormat(L"inis_%d.%d.%d",
|
||||
PCSX2_VersionHi, PCSX2_VersionMid, PCSX2_VersionLo));
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
||||
@@ -289,13 +289,15 @@ void Pcsx2App::EstablishAppUserMode()
|
||||
// Wizard is only run once. The status of the wizard having been run is stored in
|
||||
// the installation ini file, which can be either the portable install (useful for admins)
|
||||
// or the registry/user local documents position.
|
||||
|
||||
int version;
|
||||
conf_install->Read(L"Version", &version, 0);
|
||||
bool runWiz;
|
||||
conf_install->Read( L"RunWizard", &runWiz, true );
|
||||
|
||||
App_LoadInstallSettings( conf_install );
|
||||
int pcsx2Ver = PCSX2_VersionHi * 100 + PCSX2_VersionMid * 10 + PCSX2_VersionLo;
|
||||
|
||||
if( !Startup.ForceWizard && !runWiz )
|
||||
if( !Startup.ForceWizard && !runWiz && version == pcsx2Ver)
|
||||
{
|
||||
AppConfig_OnChangedSettingsFolder( false );
|
||||
return;
|
||||
@@ -310,5 +312,6 @@ void Pcsx2App::EstablishAppUserMode()
|
||||
|
||||
// Wizard completed successfully, so let's not torture the user with this crap again!
|
||||
conf_install->Write( L"RunWizard", false );
|
||||
conf_install->Write(L"Version", pcsx2Ver);
|
||||
}
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
#include "BreakpointWindow.h"
|
||||
#include "AppConfig.h"
|
||||
#include "System.h"
|
||||
#include "DisassemblyDialog.h"
|
||||
|
||||
#include <wx/mstream.h>
|
||||
#include <wx/clipbrd.h>
|
||||
@@ -147,8 +148,8 @@ CtrlDisassemblyView::CtrlDisassemblyView(wxWindow* parent, DebugInterface* _cpu)
|
||||
{
|
||||
manager.setCpu(cpu);
|
||||
windowStart = 0x100000;
|
||||
rowHeight = g_Conf->EmuOptions.Debugger.FontHeight+2;
|
||||
charWidth = g_Conf->EmuOptions.Debugger.FontWidth;
|
||||
rowHeight = getDebugFontHeight()+2;
|
||||
charWidth = getDebugFontWidth();
|
||||
displaySymbols = true;
|
||||
visibleRows = 1;
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
|
||||
#include "BreakpointWindow.h"
|
||||
#include "DebugEvents.h"
|
||||
#include "DisassemblyDialog.h"
|
||||
#include <wchar.h>
|
||||
#include <wx/clipbrd.h>
|
||||
|
||||
@@ -55,8 +56,8 @@ enum MemoryViewMenuIdentifiers
|
||||
CtrlMemView::CtrlMemView(wxWindow* parent, DebugInterface* _cpu)
|
||||
: wxWindow(parent,wxID_ANY,wxDefaultPosition,wxDefaultSize,wxWANTS_CHARS|wxVSCROLL), cpu(_cpu)
|
||||
{
|
||||
rowHeight = g_Conf->EmuOptions.Debugger.FontHeight;
|
||||
charWidth = g_Conf->EmuOptions.Debugger.FontWidth;
|
||||
rowHeight = getDebugFontHeight();
|
||||
charWidth = getDebugFontWidth();
|
||||
windowStart = 0x480000;
|
||||
curAddress = windowStart;
|
||||
rowSize = 16;
|
||||
|
||||
@@ -16,456 +16,549 @@
|
||||
#include "PrecompiledHeader.h"
|
||||
#include "CtrlRegisterList.h"
|
||||
#include "DebugTools/Debug.h"
|
||||
|
||||
#include "DebugEvents.h"
|
||||
#include "AppConfig.h"
|
||||
#include "DisassemblyDialog.h"
|
||||
|
||||
BEGIN_EVENT_TABLE(CtrlRegisterList, wxWindow)
|
||||
EVT_PAINT(CtrlRegisterList::paintEvent)
|
||||
EVT_GRID_LABEL_LEFT_CLICK(CtrlRegisterList::gridEvent)
|
||||
EVT_GRID_LABEL_RIGHT_CLICK(CtrlRegisterList::gridEvent)
|
||||
EVT_GRID_CELL_LEFT_CLICK(CtrlRegisterList::gridEvent)
|
||||
EVT_GRID_CELL_RIGHT_CLICK(CtrlRegisterList::gridEvent)
|
||||
EVT_KEY_DOWN(CtrlRegisterList::keydownEvent)
|
||||
EVT_BOOKCTRL_PAGE_CHANGED(-1, CtrlRegisterList::categoryChangedEvent)
|
||||
EVT_SIZE(CtrlRegisterList::sizeEvent)
|
||||
EVT_LEFT_DOWN(CtrlRegisterList::mouseEvent)
|
||||
EVT_RIGHT_DOWN(CtrlRegisterList::mouseEvent)
|
||||
EVT_RIGHT_UP(CtrlRegisterList::mouseEvent)
|
||||
EVT_MOTION(CtrlRegisterList::mouseEvent)
|
||||
EVT_KEY_DOWN(CtrlRegisterList::keydownEvent)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
enum DisassemblyMenuIdentifiers
|
||||
{
|
||||
ID_REGISTERLIST_DISPLAY32 = 1,
|
||||
ID_REGISTERLIST_DISPLAY64,
|
||||
ID_REGISTERLIST_DISPLAY128,
|
||||
ID_REGISTERLIST_CHANGELOWER,
|
||||
ID_REGISTERLIST_CHANGEUPPER,
|
||||
ID_REGISTERLIST_CHANGEVALUE
|
||||
ID_REGISTERLIST_DISPLAY32 = 1,
|
||||
ID_REGISTERLIST_DISPLAY64,
|
||||
ID_REGISTERLIST_DISPLAY128,
|
||||
ID_REGISTERLIST_CHANGELOWER,
|
||||
ID_REGISTERLIST_CHANGEUPPER,
|
||||
ID_REGISTERLIST_CHANGEVALUE
|
||||
};
|
||||
|
||||
CtrlRegisterList::CtrlRegisterList(wxWindow* parent, DebugInterface* _cpu) :
|
||||
wxWindow(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxWANTS_CHARS | wxBORDER_NONE),
|
||||
cpu(_cpu),
|
||||
lastPc(0),
|
||||
lastCycles(0),
|
||||
maxBits(128),
|
||||
needsSizeUpdating(true),
|
||||
needsValueUpdating(true)
|
||||
|
||||
CtrlRegisterList::CtrlRegisterList(wxWindow* parent, DebugInterface* _cpu)
|
||||
: wxScrolledWindow(parent,wxID_ANY,wxDefaultPosition,wxDefaultSize,wxWANTS_CHARS|wxBORDER_NONE|wxVSCROLL), cpu(_cpu)
|
||||
{
|
||||
int rowHeight = g_Conf->EmuOptions.Debugger.FontHeight;
|
||||
int charWidth = g_Conf->EmuOptions.Debugger.FontWidth;
|
||||
rowHeight = getDebugFontHeight()+2;
|
||||
charWidth = getDebugFontWidth();
|
||||
category = 0;
|
||||
maxBits = 128;
|
||||
lastPc = 0xFFFFFFFF;
|
||||
|
||||
for (int i = 0; i < cpu->getRegisterCategoryCount(); i++)
|
||||
{
|
||||
int count = cpu->getRegisterCount(i);
|
||||
|
||||
#ifdef _WIN32
|
||||
wxFont font = wxFont(wxSize(charWidth, rowHeight), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL,
|
||||
false, L"Lucida Console");
|
||||
wxFont labelFont = font.Bold();
|
||||
#else
|
||||
wxFont font = wxFont(8, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, L"Lucida Console");
|
||||
font.SetPixelSize(wxSize(charWidth, rowHeight));
|
||||
wxFont labelFont = font;
|
||||
labelFont.SetWeight(wxFONTWEIGHT_BOLD);
|
||||
#endif
|
||||
registerCategories = new wxNotebook(this, wxID_ANY);
|
||||
// 'c' and 'C', much time wasted.
|
||||
#if wxMAJOR_VERSION >= 3
|
||||
registerCategories->Connect(wxEVT_BOOKCTRL_PAGE_CHANGED, wxBookCtrlEventHandler(CtrlRegisterList::categoryChangedEvent), nullptr, this);
|
||||
#else
|
||||
registerCategories->Connect(wxEVT_COMMAND_BOOKCTRL_PAGE_CHANGED, wxBookctrlEventHandler(CtrlRegisterList::categoryChangedEvent), nullptr, this);
|
||||
#endif
|
||||
for (int cat = 0; cat < cpu->getRegisterCategoryCount(); cat++)
|
||||
{
|
||||
int numRegs = cpu->getRegisterCount(cat);
|
||||
ChangedReg* regs = new ChangedReg[count];
|
||||
memset(regs,0,sizeof(ChangedReg)*count);
|
||||
changedCategories.push_back(regs);
|
||||
|
||||
changedCategories.push_back(std::vector<ChangedReg>(numRegs));
|
||||
int maxLen = 0;
|
||||
for (int k = 0; k < cpu->getRegisterCount(i); k++)
|
||||
{
|
||||
maxLen = std::max<int>(maxLen,strlen(cpu->getRegisterName(i,k)));
|
||||
}
|
||||
|
||||
wxGrid* regGrid = new wxGrid(registerCategories, -1);
|
||||
int x = 17+(maxLen+2)*charWidth;
|
||||
startPositions.push_back(x);
|
||||
currentRows.push_back(0);
|
||||
}
|
||||
|
||||
registerGrids.push_back(regGrid);
|
||||
registerCategories->AddPage(regGrid, wxString(cpu->getRegisterCategoryName(cat), wxConvUTF8));
|
||||
SetDoubleBuffered(true);
|
||||
SetInitialSize(ClientToWindowSize(GetMinClientSize()));
|
||||
|
||||
DebugInterface::RegisterType type = cpu->getRegisterType(cat);
|
||||
int registerBits = cpu->getRegisterSize(cat);
|
||||
|
||||
int numCols;
|
||||
switch (type)
|
||||
{
|
||||
case DebugInterface::NORMAL: // display them in 32 bit parts
|
||||
numCols = registerBits / 32;
|
||||
regGrid->CreateGrid(numRegs, numCols);
|
||||
for (int row = 0; row < numRegs; row++)
|
||||
regGrid->SetRowLabelValue(row, wxString(cpu->getRegisterName(cat, row), wxConvUTF8));
|
||||
for (int col = 0; col < numCols; col++)
|
||||
regGrid->SetColLabelValue(col, wxsFormat(L"%d-%d", 32 * (numCols - col) - 1, 32 * (numCols - col - 1)));
|
||||
break;
|
||||
case DebugInterface::SPECIAL:
|
||||
regGrid->CreateGrid(numRegs, 1);
|
||||
for (int row = 0; row < numRegs; row++)
|
||||
regGrid->SetRowLabelValue(row, wxString(cpu->getRegisterName(cat, row), wxConvUTF8));
|
||||
break;
|
||||
}
|
||||
|
||||
regGrid->EnableEditing(false);
|
||||
regGrid->SetDefaultCellFont(font);
|
||||
regGrid->SetLabelFont(labelFont);
|
||||
regGrid->DisableDragGridSize();
|
||||
regGrid->DisableDragRowSize();
|
||||
regGrid->DisableDragColSize();
|
||||
regGrid->Connect(wxEVT_PAINT, wxPaintEventHandler(CtrlRegisterList::paintEvent), nullptr, this);
|
||||
regGrid->Connect(wxEVT_GRID_LABEL_LEFT_CLICK, wxGridEventHandler(CtrlRegisterList::gridEvent), nullptr, this);
|
||||
regGrid->Connect(wxEVT_GRID_LABEL_RIGHT_CLICK, wxGridEventHandler(CtrlRegisterList::gridEvent), nullptr, this);
|
||||
regGrid->Connect(wxEVT_GRID_CELL_RIGHT_CLICK, wxGridEventHandler(CtrlRegisterList::gridEvent), nullptr, this);
|
||||
regGrid->Connect(wxEVT_GRID_CELL_LEFT_CLICK, wxGridEventHandler(CtrlRegisterList::gridEvent), nullptr, this);
|
||||
regGrid->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CtrlRegisterList::keydownEvent), nullptr, this);
|
||||
}
|
||||
|
||||
for (int cat = 0; cat < cpu->getRegisterCategoryCount(); cat++)
|
||||
updateValues(cat);
|
||||
|
||||
updateSize(getCurrentCategory()); // getCurrentCategory() = 0
|
||||
|
||||
SetDoubleBuffered(true);
|
||||
wxSize actualSize = getOptimalSize();
|
||||
SetVirtualSize(actualSize);
|
||||
SetScrollbars(1, rowHeight, actualSize.x, actualSize.y / rowHeight, 0, 0);
|
||||
}
|
||||
|
||||
// Called when this window needs to update the strings in the cells.
|
||||
// This has to be called every repaint of the window since the registers
|
||||
// can change unpredictably and there seems to be currently is no mechanism
|
||||
// for the rest of pcsx2 alerting the debugger when values change.
|
||||
void CtrlRegisterList::updateValues(int cat)
|
||||
wxSize CtrlRegisterList::getOptimalSize() const
|
||||
{
|
||||
wxGrid* regGrid = registerGrids[cat];
|
||||
int numRows = regGrid->GetNumberRows();
|
||||
int numCols = regGrid->GetNumberCols();
|
||||
int columnChars = 0;
|
||||
int maxWidth = 0;
|
||||
int maxRows = 0;
|
||||
|
||||
std::vector<ChangedReg>& changedRegs = changedCategories[cat];
|
||||
DebugInterface::RegisterType type = cpu->getRegisterType(cat);
|
||||
for (int row = 0; row < numRows; row++)
|
||||
{
|
||||
wxColor bgColor = regGrid->GetGridCursorRow() == row ? wxColor(0xFFFFDFE0) :
|
||||
wxColor(0xFFFFEFFF);
|
||||
u128 value = cpu->getRegister(cat, row);
|
||||
ChangedReg& changed = changedRegs[row];
|
||||
for (int i = 0; i < cpu->getRegisterCategoryCount(); i++)
|
||||
{
|
||||
int bits = std::min<u32>(maxBits, cpu->getRegisterSize(i));
|
||||
int start = startPositions[i];
|
||||
|
||||
for (int col = 0; col < numCols; col++)
|
||||
{
|
||||
const wxColor colorChanged = wxColor(0xFF0000FF);
|
||||
const wxColor colorUnchanged = wxColor(0xFF004000);
|
||||
wxColor textColor;
|
||||
wxString cellValue;
|
||||
int w = start + (bits / 4) * charWidth;
|
||||
if (bits > 32)
|
||||
w += (bits / 32) * 2 - 2;
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case DebugInterface::NORMAL:
|
||||
cellValue = wxsFormat(L"%08X", value._u32[numCols - col - 1]);
|
||||
textColor = changed.changed[numCols - col - 1] ? colorChanged : colorUnchanged;
|
||||
break;
|
||||
case DebugInterface::SPECIAL:
|
||||
cellValue = cpu->getRegisterString(cat, row);
|
||||
textColor = (changed.changed[0] || changed.changed[1] || changed.changed[2] || changed.changed[3]) ?
|
||||
colorChanged : colorUnchanged;
|
||||
break;
|
||||
default: pxAssert(0 && "Unreachable switch case");
|
||||
}
|
||||
if (regGrid->GetCellTextColour(row, col) != textColor)
|
||||
regGrid->SetCellTextColour(row, col, textColor);
|
||||
if (regGrid->GetCellValue(row, col) != cellValue)
|
||||
regGrid->SetCellValue(row, col, cellValue);
|
||||
if (regGrid->GetCellBackgroundColour(row, col) != bgColor)
|
||||
regGrid->SetCellBackgroundColour(row, col, bgColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
maxWidth = std::max<int>(maxWidth, w);
|
||||
columnChars += strlen(cpu->getRegisterCategoryName(i)) + 1;
|
||||
maxRows = std::max<int>(maxRows, cpu->getRegisterCount(i));
|
||||
}
|
||||
|
||||
void CtrlRegisterList::updateSize(int cat)
|
||||
{
|
||||
wxGrid* regGrid = registerGrids[cat];
|
||||
maxWidth = std::max<int>(columnChars*charWidth, maxWidth + 4);
|
||||
|
||||
int regBits = cpu->getRegisterSize(cat);
|
||||
int numCols = regGrid->GetNumberCols();
|
||||
|
||||
#if wxMAJOR_VERSION >= 3
|
||||
int shownCols = 0;
|
||||
while (shownCols < numCols && regGrid->IsColShown(shownCols)) shownCols++;
|
||||
if (shownCols > maxBits / 32)
|
||||
shownCols = (maxBits / 32);
|
||||
else if (shownCols < regBits / 32)
|
||||
shownCols = std::min(maxBits / 32, regBits / 32);
|
||||
|
||||
for (int col = 0; col < numCols; col++)
|
||||
if (col < shownCols)
|
||||
regGrid->ShowCol(numCols - col - 1); // Big-endian representation so flip order
|
||||
else
|
||||
regGrid->HideCol(numCols - col - 1); // Big-endian representation so flip order
|
||||
#endif
|
||||
|
||||
regGrid->AutoSize();
|
||||
wxSize pageSize = regGrid->GetSize();
|
||||
|
||||
// Hack: Sometimes the vertical scroll bar covers some of the text so add some room
|
||||
pageSize.x += 20;
|
||||
|
||||
// Hack: AFAIK wxNotebook does not provide a way to get the necessary size
|
||||
// for the tabs so we use a rough approximation and hope that the tabs
|
||||
// will have enough room to all be shown. 50 pixels per tab should hopefully work.
|
||||
int minX = registerCategories->GetPageCount() * 50;
|
||||
pageSize.x = std::max(pageSize.x, minX);
|
||||
|
||||
// Hack: Sometimes showing all the rows on the screen take up too much
|
||||
// vertical room and squeezes other components (breakpoint window, etc.)
|
||||
// into nothing so we limit the vertical size with this heuristic.
|
||||
// If necessary, this will automatically create a vertical scroll bar so
|
||||
// all rows can be accessed.
|
||||
int screenSize = wxSystemSettings::GetMetric(wxSYS_SCREEN_Y);
|
||||
pageSize.y = std::min(std::max(screenSize - 400, screenSize / 2), pageSize.y);
|
||||
|
||||
regGrid->SetSize(pageSize);
|
||||
|
||||
wxSize size = registerCategories->CalcSizeFromPage(pageSize);
|
||||
if (registerCategories->GetSize() != size)
|
||||
registerCategories->SetSize(size);
|
||||
SetMinSize(size); // registerCategories is the whole window so same min-size
|
||||
|
||||
// Need to update the whole debugger window since other components
|
||||
// may be resized due to this component being resized
|
||||
postEvent(debEVT_UPDATELAYOUT, 0);
|
||||
return wxSize(maxWidth, (maxRows + 1)*rowHeight);
|
||||
}
|
||||
|
||||
void CtrlRegisterList::postEvent(wxEventType type, wxString text)
|
||||
{
|
||||
wxCommandEvent event(type, GetId());
|
||||
event.SetEventObject(this);
|
||||
event.SetString(text);
|
||||
wxPostEvent(this, event);
|
||||
wxCommandEvent event( type, GetId() );
|
||||
event.SetEventObject(this);
|
||||
event.SetString(text);
|
||||
wxPostEvent(this,event);
|
||||
}
|
||||
|
||||
void CtrlRegisterList::postEvent(wxEventType type, int value)
|
||||
{
|
||||
wxCommandEvent event(type, GetId());
|
||||
event.SetEventObject(this);
|
||||
event.SetInt(value);
|
||||
wxPostEvent(this, event);
|
||||
wxCommandEvent event( type, GetId() );
|
||||
event.SetEventObject(this);
|
||||
event.SetInt(value);
|
||||
wxPostEvent(this,event);
|
||||
}
|
||||
|
||||
|
||||
// Sets the "changed" flag for values that have changed from the last cycle.
|
||||
// These values are colored differently when they are displayed.
|
||||
void CtrlRegisterList::refreshChangedRegs()
|
||||
{
|
||||
if (cpu->getPC() == lastPc && cpu->getCycles() == lastCycles)
|
||||
return;
|
||||
if (cpu->getPC() == lastPc)
|
||||
return;
|
||||
|
||||
for (int cat = 0; cat < cpu->getRegisterCategoryCount(); cat++)
|
||||
{
|
||||
std::vector<ChangedReg>& regs = changedCategories[cat];
|
||||
int size = cpu->getRegisterSize(cat);
|
||||
for (size_t cat = 0; cat < changedCategories.size(); cat++)
|
||||
{
|
||||
ChangedReg* regs = changedCategories[cat];
|
||||
int size = cpu->getRegisterSize(category);
|
||||
|
||||
for (int i = 0; i < cpu->getRegisterCount(cat); i++)
|
||||
{
|
||||
ChangedReg& reg = regs[i];
|
||||
memset(®.changed, 0, sizeof(reg.changed));
|
||||
for (int i = 0; i < cpu->getRegisterCount(cat); i++)
|
||||
{
|
||||
ChangedReg& reg = regs[i];
|
||||
memset(®.changed,0,sizeof(reg.changed));
|
||||
|
||||
u128 newValue = cpu->getRegister(cat, i);
|
||||
u128 newValue = cpu->getRegister(cat,i);
|
||||
|
||||
if (reg.oldValue != newValue)
|
||||
{
|
||||
bool changed = false;
|
||||
if (reg.oldValue != newValue)
|
||||
{
|
||||
bool changed = false;
|
||||
|
||||
if (size >= 128 && (reg.oldValue._u32[3] != newValue._u32[3] || reg.oldValue._u32[2] != newValue._u32[2]))
|
||||
{
|
||||
changed = true;
|
||||
reg.changed[3] = true;
|
||||
reg.changed[2] = true;
|
||||
}
|
||||
if (size >= 128 && (reg.oldValue._u32[3] != newValue._u32[3] || reg.oldValue._u32[2] != newValue._u32[2]))
|
||||
{
|
||||
changed = true;
|
||||
reg.changed[3] = true;
|
||||
reg.changed[2] = true;
|
||||
}
|
||||
|
||||
if (size >= 64 && (reg.oldValue._u32[1] != newValue._u32[1] || changed))
|
||||
{
|
||||
changed = true;
|
||||
reg.changed[1] = true;
|
||||
}
|
||||
if (size >= 64 && (reg.oldValue._u32[1] != newValue._u32[1] || changed))
|
||||
{
|
||||
changed = true;
|
||||
reg.changed[1] = true;
|
||||
}
|
||||
|
||||
if (reg.oldValue._u32[0] != newValue._u32[0] || changed)
|
||||
{
|
||||
reg.changed[0] = true;
|
||||
}
|
||||
reg.oldValue = newValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (reg.oldValue._u32[0] != newValue._u32[0] || changed)
|
||||
{
|
||||
reg.changed[0] = true;
|
||||
}
|
||||
|
||||
lastPc = cpu->getPC();
|
||||
lastCycles = cpu->getCycles();
|
||||
reg.oldValue = newValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
lastPc = cpu->getPC();
|
||||
}
|
||||
|
||||
void CtrlRegisterList::paintEvent(wxPaintEvent & evt)
|
||||
void CtrlRegisterList::redraw()
|
||||
{
|
||||
updateHandler();
|
||||
evt.Skip();
|
||||
Update();
|
||||
}
|
||||
|
||||
void CtrlRegisterList::updateHandler()
|
||||
void CtrlRegisterList::sizeEvent(wxSizeEvent& evt)
|
||||
{
|
||||
if (cpu->isCpuPaused() || needsValueUpdating)
|
||||
{
|
||||
refreshChangedRegs();
|
||||
updateValues(getCurrentCategory());
|
||||
needsValueUpdating = false;
|
||||
}
|
||||
|
||||
if (needsSizeUpdating)
|
||||
{
|
||||
updateSize(getCurrentCategory());
|
||||
needsSizeUpdating = false;
|
||||
}
|
||||
|
||||
// The wxGrid allows selecting boxes with a bold outline
|
||||
// but we don't want this, and there is no setting to turn off this feature
|
||||
wxGrid* regGrid = registerGrids[getCurrentCategory()];
|
||||
regGrid->ClearSelection();
|
||||
Refresh();
|
||||
evt.Skip();
|
||||
}
|
||||
|
||||
void CtrlRegisterList::changeValue(RegisterChangeMode mode, int cat, int reg)
|
||||
void drawU32Text(wxDC& dc, u32 value, int x, int y)
|
||||
{
|
||||
wxString oldStr;
|
||||
u128 oldValue = cpu->getRegister(cat, reg);
|
||||
char str[32];
|
||||
sprintf(str,"%08X",value);
|
||||
dc.DrawText(wxString(str,wxConvUTF8),x,y);
|
||||
}
|
||||
|
||||
switch (mode)
|
||||
{
|
||||
case LOWER64:
|
||||
oldStr = wxsFormat(L"0x%016llX", oldValue._u64[0]);
|
||||
break;
|
||||
case UPPER64:
|
||||
oldStr = wxsFormat(L"0x%016llX", oldValue._u64[1]);
|
||||
break;
|
||||
case CHANGE32:
|
||||
oldStr = wxsFormat(L"0x%08X", oldValue._u64[0]);
|
||||
break;
|
||||
}
|
||||
void CtrlRegisterList::OnDraw(wxDC& dc)
|
||||
{
|
||||
#ifdef WIN32
|
||||
wxFont font = wxFont(wxSize(charWidth,rowHeight-2),wxFONTFAMILY_DEFAULT,wxFONTSTYLE_NORMAL,wxFONTWEIGHT_NORMAL,false,L"Lucida Console");
|
||||
#else
|
||||
wxFont font = wxFont(8,wxFONTFAMILY_DEFAULT,wxFONTSTYLE_NORMAL,wxFONTWEIGHT_NORMAL,false,L"Lucida Console");
|
||||
font.SetPixelSize(wxSize(charWidth,rowHeight-2));
|
||||
#endif
|
||||
dc.SetFont(font);
|
||||
|
||||
refreshChangedRegs();
|
||||
|
||||
u64 newValue;
|
||||
if (executeExpressionWindow(this, cpu, newValue, oldStr))
|
||||
{
|
||||
switch (mode)
|
||||
{
|
||||
case LOWER64:
|
||||
oldValue._u64[0] = newValue;
|
||||
break;
|
||||
case UPPER64:
|
||||
oldValue._u64[1] = newValue;
|
||||
break;
|
||||
case CHANGE32:
|
||||
oldValue._u32[0] = newValue;
|
||||
break;
|
||||
}
|
||||
cpu->setRegister(cat, reg, oldValue);
|
||||
oldValue = cpu->getRegister(cat, reg);
|
||||
}
|
||||
needsValueUpdating = true;
|
||||
needsSizeUpdating = true;
|
||||
wxColor colorChanged = wxColor(0xFF0000FF);
|
||||
wxColor colorUnchanged = wxColor(0xFF004000);
|
||||
wxColor colorNormal = wxColor(0xFF600000);
|
||||
|
||||
int startRow;
|
||||
GetViewStart(nullptr,&startRow);
|
||||
int endRow = startRow + ceil(float(GetClientSize().y) / rowHeight);
|
||||
|
||||
// draw categories
|
||||
int width = GetClientSize().x;
|
||||
if (startRow == 0)
|
||||
{
|
||||
int piece = width /cpu->getRegisterCategoryCount();
|
||||
for (int i = 0; i < cpu->getRegisterCategoryCount(); i++)
|
||||
{
|
||||
const char* name = cpu->getRegisterCategoryName(i);
|
||||
|
||||
int x = i*piece;
|
||||
|
||||
if (i == category)
|
||||
{
|
||||
dc.SetBrush(wxBrush(wxColor(0xFF70FF70)));
|
||||
dc.SetPen(wxPen(wxColor(0xFF000000)));
|
||||
} else {
|
||||
dc.SetBrush(wxBrush(wxColor(0xFFFFEFE8)));
|
||||
dc.SetPen(wxPen(wxColor(0xFF000000)));
|
||||
}
|
||||
|
||||
if (i == cpu->getRegisterCategoryCount()-1)
|
||||
piece += width-piece*cpu->getRegisterCategoryCount()-1;
|
||||
|
||||
dc.DrawRectangle(x,0,piece+1,rowHeight);
|
||||
|
||||
// center text
|
||||
x += (piece-strlen(name)*charWidth)/2;
|
||||
dc.DrawText(wxString(name,wxConvUTF8),x,2);
|
||||
}
|
||||
}
|
||||
|
||||
// skip the tab row
|
||||
startRow = std::max<int>(0,startRow-1);
|
||||
endRow = std::min<int>(cpu->getRegisterCount(category)-1,endRow-1);
|
||||
|
||||
int nameStart = 17;
|
||||
int valueStart = startPositions[category];
|
||||
|
||||
ChangedReg* changedRegs = changedCategories[category];
|
||||
int registerBits = cpu->getRegisterSize(category);
|
||||
DebugInterface::RegisterType type = cpu->getRegisterType(category);
|
||||
|
||||
for (int i = startRow; i <= endRow; i++)
|
||||
{
|
||||
int x = valueStart;
|
||||
int y = rowHeight*(i+1);
|
||||
|
||||
wxColor backgroundColor;
|
||||
if (currentRows[category] == i)
|
||||
backgroundColor = wxColor(0xFFFFCFC8);
|
||||
else if (i % 2)
|
||||
backgroundColor = wxColor(237, 242, 255, 255);
|
||||
else
|
||||
backgroundColor = wxColor(0xFFFFFFFF);
|
||||
|
||||
dc.SetBrush(backgroundColor);
|
||||
dc.SetPen(backgroundColor);
|
||||
dc.DrawRectangle(0, y, width, rowHeight);
|
||||
|
||||
const char* name = cpu->getRegisterName(category,i);
|
||||
dc.SetTextForeground(colorNormal);
|
||||
dc.DrawText(wxString(name,wxConvUTF8),nameStart,y+2);
|
||||
|
||||
u128 value = cpu->getRegister(category,i);
|
||||
ChangedReg& changed = changedRegs[i];
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case DebugInterface::NORMAL: // display them in 32 bit parts
|
||||
switch (registerBits)
|
||||
{
|
||||
case 128:
|
||||
{
|
||||
int startIndex = std::min<int>(3,maxBits/32-1);
|
||||
int actualX = width-4-(startIndex+1)*(8*charWidth+2);
|
||||
x = std::max<int>(actualX,x);
|
||||
|
||||
if (startIndex != 3)
|
||||
{
|
||||
bool c = false;
|
||||
for (int i = 3; i > startIndex; i--)
|
||||
c = c || changed.changed[i];
|
||||
|
||||
if (c)
|
||||
{
|
||||
dc.SetTextForeground(colorChanged);
|
||||
dc.DrawText(L"+",x-charWidth,y+2);
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = startIndex; i >= 0; i--)
|
||||
{
|
||||
if (changed.changed[i])
|
||||
dc.SetTextForeground(colorChanged);
|
||||
else
|
||||
dc.SetTextForeground(colorUnchanged);
|
||||
|
||||
drawU32Text(dc,value._u32[i],x,y+2);
|
||||
x += charWidth*8+2;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 64:
|
||||
{
|
||||
if (maxBits < 64 && changed.changed[1])
|
||||
{
|
||||
dc.SetTextForeground(colorChanged);
|
||||
dc.DrawText(L"+",x-charWidth,y+2);
|
||||
}
|
||||
|
||||
for (int i = 1; i >= 0; i--)
|
||||
{
|
||||
if (changed.changed[i])
|
||||
dc.SetTextForeground(colorChanged);
|
||||
else
|
||||
dc.SetTextForeground(colorUnchanged);
|
||||
|
||||
drawU32Text(dc,value._u32[i],x,y+2);
|
||||
x += charWidth*8+2;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 32:
|
||||
{
|
||||
if (changed.changed[0])
|
||||
dc.SetTextForeground(colorChanged);
|
||||
else
|
||||
dc.SetTextForeground(colorUnchanged);
|
||||
|
||||
drawU32Text(dc,value._u32[0],x,y+2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case DebugInterface::SPECIAL: // let debug interface format them and just display them
|
||||
{
|
||||
if (changed.changed[0] || changed.changed[1] || changed.changed[2] || changed.changed[3])
|
||||
dc.SetTextForeground(colorChanged);
|
||||
else
|
||||
dc.SetTextForeground(colorUnchanged);
|
||||
|
||||
dc.DrawText(cpu->getRegisterString(category,i),x,y+2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CtrlRegisterList::changeValue(RegisterChangeMode mode)
|
||||
{
|
||||
wchar_t str[64];
|
||||
|
||||
u128 oldValue = cpu->getRegister(category,currentRows[category]);
|
||||
|
||||
switch (mode)
|
||||
{
|
||||
case LOWER64:
|
||||
swprintf(str,64,L"0x%016llX",oldValue._u64[0]);
|
||||
break;
|
||||
case UPPER64:
|
||||
swprintf(str,64,L"0x%016llX",oldValue._u64[1]);
|
||||
break;
|
||||
case CHANGE32:
|
||||
swprintf(str,64,L"0x%08X",oldValue._u32[0]);
|
||||
break;
|
||||
}
|
||||
|
||||
u64 newValue;
|
||||
if (executeExpressionWindow(this,cpu,newValue,str))
|
||||
{
|
||||
switch (mode)
|
||||
{
|
||||
case LOWER64:
|
||||
oldValue._u64[0] = newValue;
|
||||
break;
|
||||
case UPPER64:
|
||||
oldValue._u64[1] = newValue;
|
||||
break;
|
||||
case CHANGE32:
|
||||
oldValue._u32[0] = newValue;
|
||||
break;
|
||||
}
|
||||
|
||||
cpu->setRegister(category,currentRows[category],oldValue);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void CtrlRegisterList::onPopupClick(wxCommandEvent& evt)
|
||||
{
|
||||
int cat = getCurrentCategory();
|
||||
wxGrid* regGrid = registerGrids[cat];
|
||||
int reg = regGrid->GetGridCursorRow();
|
||||
switch (evt.GetId())
|
||||
{
|
||||
case ID_REGISTERLIST_DISPLAY32:
|
||||
maxBits = 32;
|
||||
postEvent(debEVT_UPDATELAYOUT, 0);
|
||||
Refresh();
|
||||
break;
|
||||
case ID_REGISTERLIST_DISPLAY64:
|
||||
maxBits = 64;
|
||||
postEvent(debEVT_UPDATELAYOUT, 0);
|
||||
Refresh();
|
||||
break;
|
||||
case ID_REGISTERLIST_DISPLAY128:
|
||||
maxBits = 128;
|
||||
postEvent(debEVT_UPDATELAYOUT, 0);
|
||||
Refresh();
|
||||
break;
|
||||
case ID_REGISTERLIST_CHANGELOWER:
|
||||
changeValue(LOWER64, cat, reg);
|
||||
Refresh();
|
||||
break;
|
||||
case ID_REGISTERLIST_CHANGEUPPER:
|
||||
changeValue(UPPER64, cat, reg);
|
||||
Refresh();
|
||||
break;
|
||||
case ID_REGISTERLIST_CHANGEVALUE:
|
||||
if (cpu->getRegisterSize(cat) == 32)
|
||||
changeValue(CHANGE32, cat, reg);
|
||||
else
|
||||
changeValue(LOWER64, cat, reg);
|
||||
Refresh();
|
||||
break;
|
||||
default:
|
||||
wxMessageBox(L"Unimplemented.", L"Unimplemented.", wxICON_INFORMATION);
|
||||
break;
|
||||
}
|
||||
needsValueUpdating = true;
|
||||
needsSizeUpdating = true;
|
||||
switch (evt.GetId())
|
||||
{
|
||||
case ID_REGISTERLIST_DISPLAY32:
|
||||
maxBits = 32;
|
||||
SetInitialSize(ClientToWindowSize(GetMinClientSize()));
|
||||
postEvent(debEVT_UPDATELAYOUT,0);
|
||||
Refresh();
|
||||
break;
|
||||
case ID_REGISTERLIST_DISPLAY64:
|
||||
maxBits = 64;
|
||||
SetInitialSize(ClientToWindowSize(GetMinClientSize()));
|
||||
postEvent(debEVT_UPDATELAYOUT,0);
|
||||
Refresh();
|
||||
break;
|
||||
case ID_REGISTERLIST_DISPLAY128:
|
||||
maxBits = 128;
|
||||
SetInitialSize(ClientToWindowSize(GetMinClientSize()));
|
||||
postEvent(debEVT_UPDATELAYOUT,0);
|
||||
Refresh();
|
||||
break;
|
||||
case ID_REGISTERLIST_CHANGELOWER:
|
||||
changeValue(LOWER64);
|
||||
Refresh();
|
||||
break;
|
||||
case ID_REGISTERLIST_CHANGEUPPER:
|
||||
changeValue(UPPER64);
|
||||
Refresh();
|
||||
break;
|
||||
case ID_REGISTERLIST_CHANGEVALUE:
|
||||
if (cpu->getRegisterSize(category) == 32)
|
||||
changeValue(CHANGE32);
|
||||
else
|
||||
changeValue(LOWER64);
|
||||
Refresh();
|
||||
break;
|
||||
default:
|
||||
wxMessageBox( L"Unimplemented.", L"Unimplemented.", wxICON_INFORMATION);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
int CtrlRegisterList::getCurrentCategory() const
|
||||
void CtrlRegisterList::setCurrentRow(int row)
|
||||
{
|
||||
return registerCategories->GetSelection();
|
||||
char str[256];
|
||||
u128 value ;
|
||||
wxString text;
|
||||
|
||||
const char* name = cpu->getRegisterName(category,row);
|
||||
|
||||
switch (cpu->getRegisterType(category))
|
||||
{
|
||||
case DebugInterface::NORMAL:
|
||||
value = cpu->getRegister(category,row);
|
||||
switch (cpu->getRegisterSize(category))
|
||||
{
|
||||
case 128:
|
||||
sprintf(str,"%s = 0x%08X%08X%08X%08X",name,value._u32[3],value._u32[2],value._u32[1],value._u32[0]);
|
||||
break;
|
||||
case 64:
|
||||
sprintf(str,"%s = 0x%08X%08X",name,value._u32[1],value._u32[0]);
|
||||
break;
|
||||
case 32:
|
||||
sprintf(str,"%s = 0x%08X",name,value._u32[0]);
|
||||
break;
|
||||
}
|
||||
text = wxString(str,wxConvUTF8);
|
||||
break;
|
||||
case DebugInterface::SPECIAL:
|
||||
text = wxString(name,wxConvUTF8) + L" = " + cpu->getRegisterString(category,row);
|
||||
break;
|
||||
}
|
||||
|
||||
currentRows[category] = row;
|
||||
postEvent(debEVT_SETSTATUSBARTEXT,text);
|
||||
Refresh();
|
||||
}
|
||||
|
||||
|
||||
void CtrlRegisterList::gridEvent(wxGridEvent& evt)
|
||||
void CtrlRegisterList::mouseEvent(wxMouseEvent& evt)
|
||||
{
|
||||
// Mouse events
|
||||
if (evt.GetEventType() == wxEVT_GRID_CELL_RIGHT_CLICK ||
|
||||
evt.GetEventType() == wxEVT_GRID_LABEL_RIGHT_CLICK)
|
||||
{
|
||||
wxMenu menu;
|
||||
int bits = cpu->getRegisterSize(getCurrentCategory());
|
||||
int xOffset, yOffset;
|
||||
((wxScrolledWindow*) this)->GetViewStart(&xOffset, &yOffset);
|
||||
|
||||
menu.AppendRadioItem(ID_REGISTERLIST_DISPLAY32, L"Display 32 bit");
|
||||
menu.AppendRadioItem(ID_REGISTERLIST_DISPLAY64, L"Display 64 bit");
|
||||
menu.AppendRadioItem(ID_REGISTERLIST_DISPLAY128, L"Display 128 bit");
|
||||
menu.AppendSeparator();
|
||||
wxClientDC dc(this);
|
||||
wxPoint pos = evt.GetPosition();
|
||||
int x = dc.DeviceToLogicalX(pos.x) + xOffset;
|
||||
int y = dc.DeviceToLogicalY(pos.y) + yOffset * rowHeight;
|
||||
|
||||
if (bits >= 64)
|
||||
{
|
||||
menu.Append(ID_REGISTERLIST_CHANGELOWER, L"Change lower 64 bit");
|
||||
menu.Append(ID_REGISTERLIST_CHANGEUPPER, L"Change upper 64 bit");
|
||||
}
|
||||
else {
|
||||
menu.Append(ID_REGISTERLIST_CHANGEVALUE, L"Change value");
|
||||
}
|
||||
if (evt.GetEventType() == wxEVT_RIGHT_UP)
|
||||
{
|
||||
if (y >= rowHeight)
|
||||
{
|
||||
int row = (y-rowHeight)/rowHeight;
|
||||
if (row != currentRows[category] && row < cpu->getRegisterCount(category))
|
||||
setCurrentRow(row);
|
||||
}
|
||||
|
||||
switch (maxBits)
|
||||
{
|
||||
case 128:
|
||||
menu.Check(ID_REGISTERLIST_DISPLAY128, true);
|
||||
break;
|
||||
case 64:
|
||||
menu.Check(ID_REGISTERLIST_DISPLAY64, true);
|
||||
break;
|
||||
case 32:
|
||||
menu.Check(ID_REGISTERLIST_DISPLAY32, true);
|
||||
break;
|
||||
}
|
||||
wxMenu menu;
|
||||
int bits = cpu->getRegisterSize(category);
|
||||
|
||||
menu.Connect(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(CtrlRegisterList::onPopupClick), nullptr, this);
|
||||
PopupMenu(&menu, evt.GetPosition());
|
||||
needsValueUpdating = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
evt.Skip();
|
||||
}
|
||||
}
|
||||
menu.AppendRadioItem(ID_REGISTERLIST_DISPLAY32, L"Display 32 bit");
|
||||
menu.AppendRadioItem(ID_REGISTERLIST_DISPLAY64, L"Display 64 bit");
|
||||
menu.AppendRadioItem(ID_REGISTERLIST_DISPLAY128, L"Display 128 bit");
|
||||
menu.AppendSeparator();
|
||||
|
||||
void CtrlRegisterList::categoryChangedEvent(wxBookCtrlEvent& evt)
|
||||
{
|
||||
needsSizeUpdating = true;
|
||||
needsValueUpdating = true;
|
||||
evt.Skip();
|
||||
if (bits >= 64)
|
||||
{
|
||||
menu.Append(ID_REGISTERLIST_CHANGELOWER, L"Change lower 64 bit");
|
||||
menu.Append(ID_REGISTERLIST_CHANGEUPPER, L"Change upper 64 bit");
|
||||
} else {
|
||||
menu.Append(ID_REGISTERLIST_CHANGEVALUE, L"Change value");
|
||||
}
|
||||
|
||||
switch (maxBits)
|
||||
{
|
||||
case 128:
|
||||
menu.Check(ID_REGISTERLIST_DISPLAY128,true);
|
||||
break;
|
||||
case 64:
|
||||
menu.Check(ID_REGISTERLIST_DISPLAY64,true);
|
||||
break;
|
||||
case 32:
|
||||
menu.Check(ID_REGISTERLIST_DISPLAY32,true);
|
||||
break;
|
||||
}
|
||||
|
||||
menu.Connect(wxEVT_COMMAND_MENU_SELECTED, (wxObjectEventFunction)&CtrlRegisterList::onPopupClick, NULL, this);
|
||||
PopupMenu(&menu,evt.GetPosition());
|
||||
return;
|
||||
}
|
||||
|
||||
if (evt.ButtonIsDown(wxMOUSE_BTN_LEFT) || evt.ButtonIsDown(wxMOUSE_BTN_RIGHT))
|
||||
{
|
||||
if (y < rowHeight)
|
||||
{
|
||||
int piece = GetSize().x/cpu->getRegisterCategoryCount();
|
||||
int cat = std::min<int>(x/piece,cpu->getRegisterCategoryCount()-1);
|
||||
|
||||
if (cat != category)
|
||||
{
|
||||
category = cat;
|
||||
Refresh();
|
||||
}
|
||||
} else {
|
||||
int row = (y-rowHeight)/rowHeight;
|
||||
if (row != currentRows[category] && row < cpu->getRegisterCount(category))
|
||||
setCurrentRow(row);
|
||||
}
|
||||
|
||||
SetFocus();
|
||||
SetFocusFromKbd();
|
||||
}
|
||||
}
|
||||
|
||||
void CtrlRegisterList::keydownEvent(wxKeyEvent& evt)
|
||||
{
|
||||
needsValueUpdating = true;
|
||||
evt.Skip();
|
||||
switch (evt.GetKeyCode())
|
||||
{
|
||||
case WXK_UP:
|
||||
setCurrentRow(std::max<int>(currentRows[category]-1,0));
|
||||
break;
|
||||
case WXK_DOWN:
|
||||
setCurrentRow(std::min<int>(currentRows[category]+1,cpu->getRegisterCount(category)-1));
|
||||
break;
|
||||
case WXK_TAB:
|
||||
category = (category+1) % cpu->getRegisterCategoryCount();
|
||||
Refresh();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,50 +15,60 @@
|
||||
|
||||
#pragma once
|
||||
#include <wx/wx.h>
|
||||
#include <wx/notebook.h>
|
||||
#include <wx/grid.h>
|
||||
|
||||
#include "DebugTools/DebugInterface.h"
|
||||
#include "DebugTools/DisassemblyManager.h"
|
||||
|
||||
class CtrlRegisterList : public wxWindow
|
||||
class CtrlRegisterList: public wxScrolledWindow
|
||||
{
|
||||
public:
|
||||
CtrlRegisterList(wxWindow* parent, DebugInterface* _cpu);
|
||||
CtrlRegisterList(wxWindow* parent, DebugInterface* _cpu);
|
||||
|
||||
void mouseEvent(wxMouseEvent& evt);
|
||||
void keydownEvent(wxKeyEvent& evt);
|
||||
void onPopupClick(wxCommandEvent& evt);
|
||||
void sizeEvent(wxSizeEvent& evt);
|
||||
void redraw();
|
||||
DECLARE_EVENT_TABLE()
|
||||
|
||||
virtual wxSize GetMinClientSize() const
|
||||
{
|
||||
wxSize optimalSize = getOptimalSize();
|
||||
if (GetWindowStyle() & wxVSCROLL)
|
||||
optimalSize.x += wxSystemSettings::GetMetric(wxSYS_VSCROLL_X);
|
||||
|
||||
// Event handlers
|
||||
void paintEvent(wxPaintEvent & evt);
|
||||
void onPopupClick(wxCommandEvent& evt);
|
||||
void gridEvent(wxGridEvent& evt);
|
||||
void categoryChangedEvent(wxBookCtrlEvent& evt);
|
||||
void keydownEvent(wxKeyEvent& evt);
|
||||
DECLARE_EVENT_TABLE()
|
||||
return wxSize(optimalSize.x,0);
|
||||
}
|
||||
|
||||
virtual wxSize DoGetBestClientSize() const
|
||||
{
|
||||
return GetMinClientSize();
|
||||
}
|
||||
private:
|
||||
enum RegisterChangeMode { LOWER64, UPPER64, CHANGE32 };
|
||||
enum RegisterChangeMode { LOWER64, UPPER64, CHANGE32 };
|
||||
|
||||
void refreshChangedRegs();
|
||||
void OnDraw(wxDC& dc);
|
||||
void refreshChangedRegs();
|
||||
void setCurrentRow(int row);
|
||||
void changeValue(RegisterChangeMode mode);
|
||||
wxSize getOptimalSize() const;
|
||||
|
||||
void changeValue(RegisterChangeMode mode, int cat, int reg);
|
||||
void updateHandler();
|
||||
void updateValues(int cat);
|
||||
void updateSize(int cat);
|
||||
int getCurrentCategory() const;
|
||||
void postEvent(wxEventType type, wxString text);
|
||||
void postEvent(wxEventType type, int value);
|
||||
void postEvent(wxEventType type, wxString text);
|
||||
void postEvent(wxEventType type, int value);
|
||||
|
||||
struct ChangedReg
|
||||
{
|
||||
u128 oldValue;
|
||||
bool changed[4];
|
||||
ChangedReg() { memset(this, 0, sizeof(*this)); }
|
||||
};
|
||||
struct ChangedReg
|
||||
{
|
||||
u128 oldValue;
|
||||
bool changed[4];
|
||||
};
|
||||
|
||||
std::vector<ChangedReg*> changedCategories;
|
||||
std::vector<int> startPositions;
|
||||
std::vector<int> currentRows;
|
||||
|
||||
std::vector<std::vector<ChangedReg>> changedCategories;
|
||||
|
||||
DebugInterface* cpu; // Used to get register values and other info from the emu
|
||||
u32 lastPc, lastCycles;
|
||||
int maxBits; // maximum number of bits beings displayed
|
||||
bool needsSizeUpdating, needsValueUpdating; // flags set in events to signal that values/sizes should be updated on the next display
|
||||
wxNotebook* registerCategories; // Occupies this entire window. Is the tabbed window for selecting register categories.
|
||||
std::vector<wxGrid*> registerGrids; // Grids displaying register values for each of the tabs.
|
||||
};
|
||||
DebugInterface* cpu;
|
||||
int rowHeight,charWidth;
|
||||
u32 lastPc;
|
||||
int category;
|
||||
int maxBits;
|
||||
};
|
||||
@@ -39,6 +39,7 @@ BEGIN_EVENT_TABLE(DisassemblyDialog, wxFrame)
|
||||
EVT_COMMAND( wxID_ANY, debEVT_UPDATE, DisassemblyDialog::onDebuggerEvent )
|
||||
EVT_COMMAND( wxID_ANY, debEVT_BREAKPOINTWINDOW, DisassemblyDialog::onDebuggerEvent )
|
||||
EVT_COMMAND( wxID_ANY, debEVT_MAPLOADED, DisassemblyDialog::onDebuggerEvent )
|
||||
EVT_SIZE(DisassemblyDialog::onSizeEvent)
|
||||
EVT_CLOSE( DisassemblyDialog::onClose )
|
||||
END_EVENT_TABLE()
|
||||
|
||||
@@ -176,7 +177,7 @@ void CpuTabPage::update()
|
||||
{
|
||||
breakpointList->reloadBreakpoints();
|
||||
|
||||
if (threadList != NULL)
|
||||
if (threadList != NULL && cpu->isAlive())
|
||||
{
|
||||
threadList->reloadThreads();
|
||||
|
||||
@@ -217,6 +218,8 @@ DisassemblyDialog::DisassemblyDialog(wxWindow* parent):
|
||||
wxFrame( parent, wxID_ANY, L"Debugger", wxDefaultPosition,wxDefaultSize,wxRESIZE_BORDER|wxCLOSE_BOX|wxCAPTION|wxSYSTEM_MENU ),
|
||||
currentCpu(NULL)
|
||||
{
|
||||
int width = g_Conf->EmuOptions.Debugger.WindowWidth;
|
||||
int height = g_Conf->EmuOptions.Debugger.WindowHeight;
|
||||
|
||||
topSizer = new wxBoxSizer( wxVERTICAL );
|
||||
wxPanel *panel = new wxPanel(this, wxID_ANY,
|
||||
@@ -252,7 +255,7 @@ DisassemblyDialog::DisassemblyDialog(wxWindow* parent):
|
||||
topSizer->Add(topRowSizer,0,wxLEFT|wxRIGHT|wxTOP,3);
|
||||
|
||||
// create middle part of the window
|
||||
wxNotebook* middleBook = new wxNotebook(panel,wxID_ANY);
|
||||
middleBook = new wxNotebook(panel,wxID_ANY);
|
||||
middleBook->SetBackgroundColour(wxColour(0xFFF0F0F0));
|
||||
eeTab = new CpuTabPage(middleBook,&r5900Debug);
|
||||
iopTab = new CpuTabPage(middleBook,&r3000Debug);
|
||||
@@ -267,9 +270,23 @@ DisassemblyDialog::DisassemblyDialog(wxWindow* parent):
|
||||
SetMinSize(wxSize(1000,600));
|
||||
panel->GetSizer()->Fit(this);
|
||||
|
||||
if (width != 0 && height != 0)
|
||||
SetSize(width,height);
|
||||
|
||||
setDebugMode(true,true);
|
||||
}
|
||||
|
||||
void DisassemblyDialog::onSizeEvent(wxSizeEvent& event)
|
||||
{
|
||||
if (event.GetEventType() == wxEVT_SIZE)
|
||||
{
|
||||
g_Conf->EmuOptions.Debugger.WindowWidth = event.GetSize().x;
|
||||
g_Conf->EmuOptions.Debugger.WindowHeight = event.GetSize().y;
|
||||
}
|
||||
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
#ifdef WIN32
|
||||
WXLRESULT DisassemblyDialog::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
|
||||
{
|
||||
@@ -469,7 +486,7 @@ void DisassemblyDialog::onDebuggerEvent(wxCommandEvent& evt)
|
||||
if (type == debEVT_SETSTATUSBARTEXT)
|
||||
{
|
||||
DebugInterface* cpu = reinterpret_cast<DebugInterface*>(evt.GetClientData());
|
||||
if (cpu != NULL && cpu == currentCpu->getCpu())
|
||||
if (cpu != NULL && currentCpu != NULL && cpu == currentCpu->getCpu())
|
||||
GetStatusBar()->SetLabel(evt.GetString());
|
||||
} else if (type == debEVT_UPDATELAYOUT)
|
||||
{
|
||||
@@ -568,6 +585,19 @@ void DisassemblyDialog::setDebugMode(bool debugMode, bool switchPC)
|
||||
|
||||
if (running)
|
||||
{
|
||||
if (currentCpu == NULL)
|
||||
{
|
||||
wxWindow* currentPage = middleBook->GetCurrentPage();
|
||||
|
||||
if (currentPage == eeTab)
|
||||
currentCpu = eeTab;
|
||||
else if (currentPage == iopTab)
|
||||
currentCpu = iopTab;
|
||||
|
||||
if (currentCpu != NULL)
|
||||
currentCpu->update();
|
||||
}
|
||||
|
||||
if (debugMode)
|
||||
{
|
||||
CBreakPoints::ClearTemporaryBreakPoints();
|
||||
@@ -596,6 +626,12 @@ void DisassemblyDialog::setDebugMode(bool debugMode, bool switchPC)
|
||||
stepOverButton->Enable(false);
|
||||
stepOutButton->Enable(false);
|
||||
}
|
||||
} else {
|
||||
breakRunButton->SetLabel(L"Run");
|
||||
stepIntoButton->Enable(false);
|
||||
stepOverButton->Enable(false);
|
||||
stepOutButton->Enable(false);
|
||||
currentCpu = NULL;
|
||||
}
|
||||
|
||||
update();
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
#include "CtrlMemView.h"
|
||||
#include "DebugEvents.h"
|
||||
#include "DebuggerLists.h"
|
||||
#include "../MSWstuff.h"
|
||||
|
||||
class DebuggerHelpDialog: public wxDialog
|
||||
{
|
||||
@@ -30,6 +31,16 @@ public:
|
||||
DebuggerHelpDialog(wxWindow* parent);
|
||||
};
|
||||
|
||||
inline int getDebugFontWidth()
|
||||
{
|
||||
return (int) ceil(g_Conf->EmuOptions.Debugger.FontWidth*MSW_GetDPIScale());
|
||||
}
|
||||
|
||||
inline int getDebugFontHeight()
|
||||
{
|
||||
return (int)ceil(g_Conf->EmuOptions.Debugger.FontHeight*MSW_GetDPIScale());
|
||||
}
|
||||
|
||||
class CpuTabPage: public wxPanel
|
||||
{
|
||||
public:
|
||||
@@ -91,6 +102,7 @@ protected:
|
||||
void onDebuggerEvent(wxCommandEvent& evt);
|
||||
void onPageChanging(wxCommandEvent& evt);
|
||||
void onBreakpointClick(wxCommandEvent& evt);
|
||||
void onSizeEvent(wxSizeEvent& event);
|
||||
void onClose(wxCloseEvent& evt);
|
||||
void stepOver();
|
||||
void stepInto();
|
||||
@@ -100,6 +112,7 @@ private:
|
||||
CpuTabPage* eeTab;
|
||||
CpuTabPage* iopTab;
|
||||
CpuTabPage* currentCpu;
|
||||
wxNotebook* middleBook;
|
||||
|
||||
wxBoxSizer* topSizer;
|
||||
wxButton* breakRunButton;
|
||||
|
||||
@@ -50,7 +50,7 @@ Dialogs::AboutBoxDialog::AboutBoxDialog(wxWindow* parent)
|
||||
L"Nachbrenner, shadow, Zerofrog, tmkk, Jake.Stine"
|
||||
L"\n\n"
|
||||
L"%s:\n"
|
||||
L"CKemu, Falcon4ever, Bositman",
|
||||
L"Falcon4ever, Bositman",
|
||||
_("Previous versions"), _("Webmasters"));
|
||||
|
||||
wxString contribsString = wxsFormat(
|
||||
@@ -58,8 +58,8 @@ Dialogs::AboutBoxDialog::AboutBoxDialog(wxWindow* parent)
|
||||
L"ChickenLiver(Lilypad), Gabest (Gsdx, Cdvdolio, Xpad)"
|
||||
L"\n\n"
|
||||
L"%s: \n"
|
||||
L"black_wd, Belmont, BGome, _Demo_, Dreamtime, Hiryu and Sjeep, nneeve, Shadow Lady,"
|
||||
L"F|RES, Jake.Stine, MrBrown, razorblade, Seta-san, Skarmeth, feal87, Athos",
|
||||
L"Ckemu, Prafull, General Plot, KrossX, Devina, ssakash, turtleli, Blyss Sarania, micove, black_wd, Belmont, BGome,"
|
||||
L" _Demo_, Dreamtime, Hiryu and Sjeep, nneeve, Shadow Lady, F|RES, Jake.Stine, MrBrown, razorblade, Seta-san, Skarmeth, feal87, Athos",
|
||||
_("Plugin Specialists"), _("Special thanks to"));
|
||||
|
||||
wxFlexGridSizer& boxesContainer = *new wxFlexGridSizer(2, 0, StdPadding);
|
||||
|
||||
@@ -1163,13 +1163,12 @@ void rpsxBLTZAL()
|
||||
_psxDeleteReg(31, 0);
|
||||
_psxFlushAllUnused();
|
||||
|
||||
PSX_SET_CONST(31);
|
||||
g_psxConstRegs[31] = psxpc + 4;
|
||||
|
||||
if( PSX_IS_CONST1(_Rs_) ) {
|
||||
if( (int)g_psxConstRegs[_Rs_] >= 0 )
|
||||
branchTo = psxpc+4;
|
||||
else {
|
||||
PSX_SET_CONST(_Rt_);
|
||||
g_psxConstRegs[31] = psxpc+4;
|
||||
}
|
||||
|
||||
psxRecompileNextInstruction(1);
|
||||
psxSetBranchImm( branchTo );
|
||||
@@ -1181,7 +1180,6 @@ void rpsxBLTZAL()
|
||||
|
||||
psxSaveBranchState();
|
||||
|
||||
MOV32ItoM((uptr)&psxRegs.GPR.r[31], psxpc+4);
|
||||
psxRecompileNextInstruction(1);
|
||||
|
||||
psxSetBranchImm(psxpc);
|
||||
@@ -1205,11 +1203,12 @@ void rpsxBGEZAL()
|
||||
_psxDeleteReg(31, 0);
|
||||
_psxFlushAllUnused();
|
||||
|
||||
PSX_SET_CONST(31);
|
||||
g_psxConstRegs[31] = psxpc + 4;
|
||||
|
||||
if( PSX_IS_CONST1(_Rs_) ) {
|
||||
if( (int)g_psxConstRegs[_Rs_] < 0 )
|
||||
branchTo = psxpc+4;
|
||||
else
|
||||
MOV32ItoM((uptr)&psxRegs.GPR.r[31], psxpc+4);
|
||||
|
||||
psxRecompileNextInstruction(1);
|
||||
psxSetBranchImm( branchTo );
|
||||
@@ -1219,8 +1218,6 @@ void rpsxBGEZAL()
|
||||
CMP32ItoM((uptr)&psxRegs.GPR.r[_Rs_], 0);
|
||||
u32* pjmp = JGE32(0);
|
||||
|
||||
MOV32ItoM((uptr)&psxRegs.GPR.r[31], psxpc+4);
|
||||
|
||||
psxSaveBranchState();
|
||||
psxRecompileNextInstruction(1);
|
||||
|
||||
|
||||
@@ -108,7 +108,7 @@ EXPORT_C_(int32) GPUopen(void* hWnd)
|
||||
#endif
|
||||
|
||||
int renderer = theApp.GetConfig("Renderer", 1);
|
||||
int threads = theApp.GetConfig("extrathreads", 0);
|
||||
int threads = theApp.GetConfig("extrathreads", DEFAULT_EXTRA_RENDERING_THREADS);
|
||||
|
||||
switch(renderer)
|
||||
{
|
||||
|
||||
@@ -74,7 +74,7 @@ void GPUSettingsDlg::OnInit()
|
||||
CheckDlgButton(m_hWnd, IDC_WINDOWED, theApp.GetConfig("windowed", 1));
|
||||
|
||||
SendMessage(GetDlgItem(m_hWnd, IDC_SWTHREADS), UDM_SETRANGE, 0, MAKELPARAM(16, 0));
|
||||
SendMessage(GetDlgItem(m_hWnd, IDC_SWTHREADS), UDM_SETPOS, 0, MAKELPARAM(theApp.GetConfig("extrathreads", 0), 0));
|
||||
SendMessage(GetDlgItem(m_hWnd, IDC_SWTHREADS), UDM_SETPOS, 0, MAKELPARAM(theApp.GetConfig("extrathreads", DEFAULT_EXTRA_RENDERING_THREADS), 0));
|
||||
|
||||
UpdateControls();
|
||||
}
|
||||
|
||||
@@ -190,7 +190,7 @@ static int _GSopen(void** dsp, const char* title, GSRendererType renderer, int t
|
||||
|
||||
if(threads == -1)
|
||||
{
|
||||
threads = theApp.GetConfig("extrathreads", 0);
|
||||
threads = theApp.GetConfig("extrathreads", DEFAULT_EXTRA_RENDERING_THREADS);
|
||||
}
|
||||
|
||||
GSWnd* wnd[2] = { NULL, NULL };
|
||||
|
||||
@@ -1280,3 +1280,7 @@ enum {FREEZE_LOAD=0, FREEZE_SAVE=1, FREEZE_SIZE=2};
|
||||
struct GSFreezeData {int size; uint8* data;};
|
||||
|
||||
enum stateType {ST_WRITE, ST_TRANSFER, ST_VSYNC};
|
||||
|
||||
// default gs config settings
|
||||
#define DEFAULT_EXTRA_RENDERING_THREADS 2
|
||||
|
||||
|
||||
@@ -286,7 +286,7 @@ void populate_gl_table(GtkWidget* gl_table)
|
||||
void populate_sw_table(GtkWidget* sw_table)
|
||||
{
|
||||
GtkWidget* threads_label = left_label("Extra rendering threads:");
|
||||
GtkWidget* threads_spin = CreateSpinButton(0, 32, "extrathreads", 0);
|
||||
GtkWidget* threads_spin = CreateSpinButton(0, 32, "extrathreads", DEFAULT_EXTRA_RENDERING_THREADS);
|
||||
|
||||
GtkWidget* aa_check = CreateCheckBox("Edge anti-aliasing (AA1)", "aa1");
|
||||
GtkWidget* mipmap_check = CreateCheckBox("Mipmap", "mipmap", true);
|
||||
@@ -307,7 +307,7 @@ void populate_shader_table(GtkWidget* shader_table)
|
||||
GtkWidget* shader_label = left_label("External shader glsl");
|
||||
GtkWidget* shader_conf_label = left_label("External shader conf");
|
||||
|
||||
GtkWidget* shadeboost_check = CreateCheckBox("Shade boost", "shadeboost");
|
||||
GtkWidget* shadeboost_check = CreateCheckBox("Shade boost", "ShadeBoost");
|
||||
GtkWidget* fxaa_check = CreateCheckBox("Fxaa shader", "fxaa");
|
||||
GtkWidget* shaderfx_check = CreateCheckBox("External shader", "shaderfx");
|
||||
|
||||
|
||||
@@ -283,7 +283,9 @@ void GSRendererDX::DrawPrims(GSTexture* rt, GSTexture* ds, GSTextureCache::Sourc
|
||||
om_bsel.wr = 1;
|
||||
}
|
||||
else if ((fbmask & 0xFF) != 0xFF) {
|
||||
#ifdef _DEBUG
|
||||
fprintf(stderr, "Please fix me! wb %d wr %d\n", om_bsel.wb, om_bsel.wr);
|
||||
#endif
|
||||
//ASSERT(0);
|
||||
}
|
||||
|
||||
@@ -295,7 +297,9 @@ void GSRendererDX::DrawPrims(GSTexture* rt, GSTexture* ds, GSTextureCache::Sourc
|
||||
om_bsel.wg = 1;
|
||||
}
|
||||
else if ((fbmask & 0xFF) != 0xFF) {
|
||||
#ifdef _DEBUG
|
||||
fprintf(stderr, "Please fix me! wa %d wg %d\n", om_bsel.wa, om_bsel.wg);
|
||||
#endif
|
||||
//ASSERT(0);
|
||||
}
|
||||
|
||||
|
||||
@@ -110,7 +110,7 @@ const char* dialog_message(int ID, bool* updateText) {
|
||||
return "Internal GS feature. Reduces edge aliasing of lines and triangles when the game requests it.";
|
||||
case IDC_SWTHREADS:
|
||||
case IDC_SWTHREADS_EDIT:
|
||||
return "Increases number of threads used for rendering. Optimal setting depends on CPU.";
|
||||
return "Number of rendering threads: 0 for single thread, 2 or more for multithread (1 is for debugging)";
|
||||
case IDC_SHADEBOOST:
|
||||
return "Allows brightness, contrast and saturation to be manually adjusted.";
|
||||
case IDC_SHADER_FX:
|
||||
|
||||
@@ -172,7 +172,7 @@ void GSSettingsDlg::OnInit()
|
||||
SendMessage(GetDlgItem(m_hWnd, IDC_RESY), UDM_SETPOS, 0, MAKELPARAM(theApp.GetConfig("resy", 1024), 0));
|
||||
|
||||
SendMessage(GetDlgItem(m_hWnd, IDC_SWTHREADS), UDM_SETRANGE, 0, MAKELPARAM(16, 0));
|
||||
SendMessage(GetDlgItem(m_hWnd, IDC_SWTHREADS), UDM_SETPOS, 0, MAKELPARAM(theApp.GetConfig("extrathreads", 0), 0));
|
||||
SendMessage(GetDlgItem(m_hWnd, IDC_SWTHREADS), UDM_SETPOS, 0, MAKELPARAM(theApp.GetConfig("extrathreads", DEFAULT_EXTRA_RENDERING_THREADS), 0));
|
||||
|
||||
AddTooltip(IDC_FILTER);
|
||||
AddTooltip(IDC_CRC_LEVEL);
|
||||
@@ -308,7 +308,13 @@ void GSSettingsDlg::UpdateRenderers()
|
||||
|
||||
vector<GSSetting> renderers;
|
||||
|
||||
GSRendererType renderer_setting = static_cast<GSRendererType>(theApp.GetConfig("Renderer", static_cast<int>(GSRendererType::Default)));
|
||||
GSRendererType renderer_setting;
|
||||
|
||||
if (ComboBoxGetSelData(IDC_RENDERER, i))
|
||||
renderer_setting = static_cast<GSRendererType>(i);
|
||||
else
|
||||
renderer_setting = static_cast<GSRendererType>(theApp.GetConfig("Renderer", static_cast<int>(GSRendererType::Default)));
|
||||
|
||||
GSRendererType renderer_sel = GSRendererType::Default;
|
||||
|
||||
for(size_t i = 0; i < theApp.m_gs_renderers.size(); i++)
|
||||
|
||||
@@ -37,8 +37,11 @@ GSTextureCache::GSTextureCache(GSRenderer* r)
|
||||
m_preload_frame = userhacks && theApp.GetConfig("preload_frame_with_gs_data", 0);
|
||||
m_can_convert_depth = s_IS_OPENGL && theApp.GetConfig("texture_cache_depth", 1);
|
||||
m_crc_hack_level = theApp.GetConfig("crc_hack_level", 3);
|
||||
|
||||
m_temp = (uint8*)_aligned_malloc(1024 * 1024 * sizeof(uint32), 32);
|
||||
|
||||
// In theory 4MB is enough but 9MB is safer for overflow (8MB
|
||||
// isn't enough in custom resolution)
|
||||
// Test: onimusha 3 PAL 60Hz
|
||||
m_temp = (uint8*)_aligned_malloc(9 * 1024 * 1024, 32);
|
||||
}
|
||||
|
||||
GSTextureCache::~GSTextureCache()
|
||||
@@ -338,7 +341,14 @@ GSTextureCache::Target* GSTextureCache::LookupTarget(const GIFRegTEX0& TEX0, int
|
||||
if (s_IS_OPENGL) {
|
||||
if (m_preload_frame) {
|
||||
GL_INS("Preloading the RT DATA");
|
||||
dst->m_dirty.push_back(GSDirtyRect(GSVector4i(0, 0, TEX0.TBW * 64, h), TEX0.PSM));
|
||||
// RT doesn't have height but if we use a too big value, we will read outside of the GS memory.
|
||||
int page0 = TEX0.TBP0 >> 5;
|
||||
int max_page = (MAX_PAGES - page0);
|
||||
int max_h = 32 * max_page / TEX0.TBW;
|
||||
// h is likely smaller than w (true most of the time). Reduce the upload size (speed)
|
||||
max_h = std::min<int>(max_h, TEX0.TBW * 64);
|
||||
|
||||
dst->m_dirty.push_back(GSDirtyRect(GSVector4i(0, 0, TEX0.TBW * 64, max_h), TEX0.PSM));
|
||||
dst->Update();
|
||||
} else {
|
||||
#ifdef ENABLE_OGL_DEBUG
|
||||
|
||||
@@ -42,7 +42,7 @@ namespace PboPool {
|
||||
uint32 m_size;
|
||||
bool m_texture_storage;
|
||||
GLsync m_fence[PBO_POOL_SIZE];
|
||||
const uint32 m_pbo_size = 4*1024*1024;
|
||||
const uint32 m_pbo_size = 8*1024*1024;
|
||||
|
||||
// Option for buffer storage
|
||||
// XXX: actually does I really need coherent and barrier???
|
||||
|
||||
@@ -129,22 +129,24 @@ GSdxApp::GSdxApp()
|
||||
m_section = "Settings";
|
||||
|
||||
#ifdef _WINDOWS
|
||||
m_gs_renderers.push_back(GSSetting(static_cast<uint32>(GSRendererType::DX9_HW), "Direct3D9", ""));
|
||||
m_gs_renderers.push_back(GSSetting(static_cast<uint32>(GSRendererType::DX1011_HW), "Direct3D11", ""));
|
||||
m_gs_renderers.push_back(GSSetting(static_cast<uint32>(GSRendererType::OGL_HW), "OpenGL", "Hardware"));
|
||||
m_gs_renderers.push_back(GSSetting(static_cast<uint32>(GSRendererType::DX1011_HW), "Direct3D11", "Hardware"));
|
||||
m_gs_renderers.push_back(GSSetting(static_cast<uint32>(GSRendererType::DX9_HW), "Direct3D9", "Hardware"));
|
||||
|
||||
m_gs_renderers.push_back(GSSetting(static_cast<uint32>(GSRendererType::DX9_SW), "Software Renderer", "Direct3D9"));
|
||||
m_gs_renderers.push_back(GSSetting(static_cast<uint32>(GSRendererType::DX1011_SW), "Software Renderer", "Direct3D11"));
|
||||
m_gs_renderers.push_back(GSSetting(static_cast<uint32>(GSRendererType::OGL_SW), "OpenGL", "Software"));
|
||||
m_gs_renderers.push_back(GSSetting(static_cast<uint32>(GSRendererType::DX1011_SW), "Direct3D11", "Software"));
|
||||
m_gs_renderers.push_back(GSSetting(static_cast<uint32>(GSRendererType::DX9_SW), "Direct3D9", "Software"));
|
||||
|
||||
#ifdef _DEBUG
|
||||
m_gs_renderers.push_back(GSSetting(static_cast<uint32>(GSRendererType::DX9_Null), "Direct3D9", "Null"));
|
||||
m_gs_renderers.push_back(GSSetting(static_cast<uint32>(GSRendererType::DX1011_Null), "Direct3D11", "Null"));
|
||||
m_gs_renderers.push_back(GSSetting(static_cast<uint32>(GSRendererType::Null_SW), "Null", "Software"));
|
||||
#endif
|
||||
#else // Linux
|
||||
m_gs_renderers.push_back(GSSetting(static_cast<uint32>(GSRendererType::OGL_HW), "OpenGL", "Hardware"));
|
||||
m_gs_renderers.push_back(GSSetting(static_cast<uint32>(GSRendererType::OGL_SW), "OpenGL", "Software"));
|
||||
#endif
|
||||
|
||||
m_gs_renderers.push_back(GSSetting(static_cast<uint32>(GSRendererType::OGL_HW), "OpenGL", ""));
|
||||
m_gs_renderers.push_back(GSSetting(static_cast<uint32>(GSRendererType::OGL_SW), "Software Renderer", "OpenGL"));
|
||||
|
||||
// The null renderer goes third, it has use for benchmarking purposes in a release build
|
||||
m_gs_renderers.push_back(GSSetting(static_cast<uint32>(GSRendererType::Null_Null), "None", "Core Benchmark"));
|
||||
|
||||
|
||||
@@ -89,34 +89,34 @@ IDB_LOGOGL BITMAP "res\\logo-ogl.bmp"
|
||||
// Dialog
|
||||
//
|
||||
|
||||
IDD_HACKS DIALOGEX 0, 0, 147, 200
|
||||
IDD_HACKS DIALOGEX 0, 0, 161, 200
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Hacks Configuration"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
DEFPUSHBUTTON "OK",IDOK,84,181,56,14
|
||||
GROUPBOX "USE AT YOUR OWN RISK!",IDC_STATIC,7,7,133,171,0,WS_EX_TRANSPARENT
|
||||
DEFPUSHBUTTON "OK",IDOK,88,181,66,14
|
||||
GROUPBOX "USE AT YOUR OWN RISK!",IDC_STATIC,7,7,147,171,0,WS_EX_TRANSPARENT
|
||||
CONTROL "Preload Data Frame",IDC_PRELOAD_GS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,95,80,8
|
||||
RTEXT "MSAA:",IDC_STATIC,58,20,22,8
|
||||
RTEXT "Skipdraw:",IDC_STATIC,48,36,32,8
|
||||
EDITTEXT IDC_SKIPDRAWHACKEDIT,84,33,48,14,ES_RIGHT | ES_AUTOHSCROLL
|
||||
RTEXT "MSAA:",IDC_STATIC,62,20,22,8
|
||||
RTEXT "Skipdraw:",IDC_STATIC,52,36,32,8
|
||||
EDITTEXT IDC_SKIPDRAWHACKEDIT,88,33,58,14,ES_RIGHT | ES_AUTOHSCROLL
|
||||
CONTROL "",IDC_SKIPDRAWHACK,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,113,34,11,14
|
||||
CONTROL "Alpha",IDC_ALPHAHACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,84,64,34,8
|
||||
CONTROL "Half-pixel Offset",IDC_OFFSETHACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,51,65,8
|
||||
COMBOBOX IDC_MSAACB,84,17,48,63,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
CONTROL "Wild Arms Offset",IDC_WILDHACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,64,64,8
|
||||
CONTROL "Alpha",IDC_ALPHAHACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,88,64,34,8
|
||||
CONTROL "Half-pixel Offset",IDC_OFFSETHACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,51,70,8
|
||||
COMBOBOX IDC_MSAACB,88,17,58,63,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
CONTROL "Wild Arms Offset",IDC_WILDHACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,64,70,8
|
||||
CONTROL "Alpha Stencil",IDC_ALPHASTENCIL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,77,57,8
|
||||
CONTROL "Align Sprite",IDC_ALIGN_SPRITE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,84,51,48,8
|
||||
RTEXT "TC Offset X:",IDC_STATIC,36,146,44,8
|
||||
EDITTEXT IDC_TCOFFSETX2,84,144,48,14,ES_RIGHT | ES_AUTOHSCROLL
|
||||
CONTROL "",IDC_TCOFFSETX,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,121,145,11,14
|
||||
EDITTEXT IDC_TCOFFSETY2,84,162,48,14,ES_RIGHT | ES_AUTOHSCROLL
|
||||
CONTROL "",IDC_TCOFFSETY,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,121,162,11,14
|
||||
RTEXT "TC Offset Y:",IDC_STATIC,32,165,48,8
|
||||
COMBOBOX IDC_ROUND_SPRITE,84,109,48,63,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
RTEXT "Round Sprite:",IDC_STATIC,35,111,45,8
|
||||
RTEXT "Sprite:",IDC_STATIC,58,127,22,8
|
||||
COMBOBOX IDC_SPRITEHACK,84,125,48,63,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
CONTROL "Align Sprite",IDC_ALIGN_SPRITE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,88,51,58,8
|
||||
RTEXT "TC Offset X:",IDC_STATIC,40,146,44,8
|
||||
EDITTEXT IDC_TCOFFSETX2,88,144,58,14,ES_RIGHT | ES_AUTOHSCROLL
|
||||
CONTROL "",IDC_TCOFFSETX,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,135,145,11,14
|
||||
EDITTEXT IDC_TCOFFSETY2,88,162,58,14,ES_RIGHT | ES_AUTOHSCROLL
|
||||
CONTROL "",IDC_TCOFFSETY,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,135,162,11,14
|
||||
RTEXT "TC Offset Y:",IDC_STATIC,36,165,48,8
|
||||
COMBOBOX IDC_ROUND_SPRITE,88,109,58,63,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
RTEXT "Round Sprite:",IDC_STATIC,39,111,45,8
|
||||
RTEXT "Sprite:",IDC_STATIC,62,127,22,8
|
||||
COMBOBOX IDC_SPRITEHACK,88,125,58,63,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
END
|
||||
|
||||
IDD_SHADER DIALOGEX 0, 0, 248, 250
|
||||
@@ -236,7 +236,7 @@ BEGIN
|
||||
CONTROL "Mipmapping",IDC_MIPMAP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,304,90,8
|
||||
GROUPBOX "Software Mode Settings",IDC_STATIC,6,275,231,40,BS_CENTER
|
||||
CONTROL "Edge Anti-aliasing (AA1)",IDC_AA1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,287,91,10
|
||||
LTEXT "Extra rendering threads:",IDC_SWTHREADS_TEXT,116,288,83,8
|
||||
LTEXT "Rendering threads:",IDC_SWTHREADS_TEXT,124,288,80,8
|
||||
EDITTEXT IDC_SWTHREADS_EDIT,198,286,34,13,ES_AUTOHSCROLL | ES_NUMBER
|
||||
CONTROL "",IDC_SWTHREADS,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,221,285,11,14
|
||||
PUSHBUTTON "Configure",IDC_SHADEBUTTON,105,323,127,14
|
||||
@@ -257,11 +257,11 @@ BEGIN
|
||||
IDD_HACKS, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 140
|
||||
RIGHTMARGIN, 154
|
||||
VERTGUIDE, 14
|
||||
VERTGUIDE, 80
|
||||
VERTGUIDE, 84
|
||||
VERTGUIDE, 132
|
||||
VERTGUIDE, 88
|
||||
VERTGUIDE, 146
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 177
|
||||
HORZGUIDE, 51
|
||||
|
||||
Reference in New Issue
Block a user