When the GS plugin is suspended and resumed, PCSX2 will set GS frame
title using an uninitialised array, making it prone to crashing in
those situations. Initialise the array.
This prevents a PCSX2 lock up that requires Task Manager to kill. It
seems the messagebox intercepts the GSframe's close event, hides itself
and then leaves you with no way of ending PCSX2 normally. So close the
GS frame before the message box appears.
If the user encounters a plugin/BIOS error and the plugin/BIOS dialog is
already open, make the dialog switch to the panel that corresponds with
the error.
Also, fix the open dialog detection and provide a slightly different
messagebox if the plugin/BIOS dialog is already open - for these cases it
won't say "Click Ok to go to the x configuration panel" anymore.
When the Console is closed (except through Misc -> Show Console), PCSX2
does not remember that you closed the Console and will reopen it the next
time. You also have to press Show Console twice if you want to reopen
the Console after closing it.
This is caused by the Console looking for its "parent" main emulator
window, when secretly, they're siblings :)
Make the console properly register when it is closed.
The dialog event handling is a bit messed up. An ok/cancel event sends a
close event, which sends a cancel event and repeats. This would actually
be an infinite loop if wxWidgets didn't detect a loop.
Rework the event handling to avoid the loop and to remember the
positions of modal dialogs as well.
Do not do additional processing on an event after EndModal is called.
This fixes a message box bug on Linux wx3.0 builds. Without this fix,
Release and Devel builds emit cancel signals even if 'Ok' or other
buttons are pressed, and Debug builds trip an assertion with the message
"EndModal called twice or ShowModal not called."
PCSX2 doesn't know whether it is in hardware or software mode. So this
code does not work if the user is using software rendering mode without
F9 toggling.
Don't disable vsync if the user toggles rendering mode.
When booting a game, a missing BIOS (and possibly other BIOS errors)
will crash or lockup PCSX2 (except for a Windows wxWidgets 2.8 build,
I have no idea why). The messagebox that appears is also badly
formatted.
Use the event queue to handle the error instead of dealing it with
immediately and fix the appearance of the messagebox.
This also deletes the BiosSelectorDialog code since it isn't used
anymore and fixes a condition where, on plugin load failure, the
component selector dialog may open up at the wrong page.
wxWidgets 3.0 now calls Output() instead of Printf() for wxMessageOutput
derived classes. Fix the command line help hack so it works for that.
Also use wxString instead of FastFormatUnicode, it's simply not needed
here.
wxCharCodeMSWToWX() has been removed from wxWidgets 3.0 and the
replacement does not have the same behaviour. Add a replacement function
to translate Windows VK_* keycodes to WXK_ keycodes.
On Windows, the languages displayed in the dropdown box of the language
panel selector are not in alphabetical order. This is caused by the
CBS_SORT window style, which is set by wxCB_SORT, having a ridiculous
sorting order. Remove the option to fix the language order and sort a
minor UI glitch.
- MTVU didn't do this correctly as it relied on vif packet size to check alignment, which it doesn't know.
- Packet sent to MTVU was too small for V3-32 to work properly, rounded up to nearest QW
- V2-32 fixed up on interpreter which was just wrong, can't fix V3-32 in it's current setup, but who cares ;)
These could still be wrong, but I can't confirm this until i run larger tests on my PS2
I can't figure out how to get the keycodes that have been modified by PCSX2_keys.ini, but this should give a decent base. I think you would just need to call AppendKeycodeNamesToMenuOptions again after GlobalAccels has been updated correctly, if I'm understanding this right, but I couldn't get it to work.
Add some text telling users that the game fixes do not speed up games.
We have many users who have followed a
Youtube guide enabling all these and breaking their games. Hopefully
this will mitigate that.
Alwawys the same name and uppercase
It was useful on the past to reduce compilation time but there is
less plugins now and ccache just does the job fine.
The Restore-Defaults button and the Presets checkbox are inherently conflicting
since both of them apply (different) sets of values to the speed hacks, however
the Preset also applies values to other panels.
Now the relation between the Defaults button and Preset is consistent with
other panels (EE/VU) where Defaults already got disabled when Presets is used.
Before this patch (and also before the previous one which fixed the locking),
clicking restore-defaults while Presets was checked resulted in incorrect state
where Preset is checked but the speed hacks are both unlocked and also didn't
necessarily match the selected preset. Now this can't happen.
When speed hacks are disabled, clicking Apply should keep the panel grayed-out,
but it didn't before (though it was still correctly locked/unmodifyable).
With this patch it also looks correctly grayed out.
It's not clear if it's a wxWidgets issue or pcsx2 issue since with wxWidgets 3
there doesn't seem to be an issue (see posts at issue #543).
Regardless, this patch makes a cleaner separation between widgets values
([un]checked etc) and widgets states - lock(grayed-out)/unlocked.
The patch only modifies when widgets are grayed and should not affect the actual
values (therefore should not change the behavior other than visuals), but do
keep an eye for weird behavior since this is sensitive code.
Should fix#543
this is actually not a FTW issue but rather a console sources issue.
the console log sources are not c++ classes and therefore don't get initialized
other than when [attempting to] loading them from the ini file (where if the ini
doesn't exist then they get their default values). however, during first time
wizard, when choosing "overwrite", the console sources are saved without ever
getting loaded and so end up without the default values applied (so all sources
as disabled).
this patch makes sure that if we're saving the conlog sources before ever
attempting to load them, they'll get saved with the correct default values.
there was already code for this, but it was broken due to:
- the message is WM_SYSCOMMAND and wParam is SC_SCREENSAVE etc.
- GSPanel doesn't get WM_SYSCOMMAND - GSFrame does.
- also disabled screen saver while paused if not set to hide the GS window.
- it's an ugly hack where windows keeps trying to activate the screen saver
every few seconds but such code prevents it (Lilypad has the same hack).
the new code uses windows API which was designed for this.
the screen saver is now disabled while the window is focused and the emulation
is running. it's on by defauly and without GUI - the same as with normal games.
this patch addresses Windows only, but adds a placeholder for future
implementations for other platforms.
ask the OS to asynchronously fetch the next chunk from disk before we actually
use it. We then cancel this request and ignore the data before the next extract
but it's very likely that when extract tries to read from disk the data will
already be cached by the OS.
This frequently allows to overcome HDD seek time (mostly due to fragmentation)
of the compressed file.
PCSX2 applies patches from several sources: GameIndex.dbf, cheats folder,
widescreen patches folder and widescreen patches zip (cheats_ws.zip).
all these patche sources are typically applied whenever any kind of
configuration changes (e.g. aspect ratio etc), depending on config.
typically we want to display all this info at the console/log only on boot,
unless we're in Devel mode or if the user enables the verbose console.
this patch unifies all the verbosity related prints to use PatchesCon, where
this object is controlled according to the conditions (devel mode, boot time,
console mode).
it replaces passing around a "verbose" and includes some more prints which did
not adhere to this policy earlier (e.g. the patches lines were only printed
if verbose console was enabled - now they also print on boot).
warnings and errors are unmodified and always print to the console.
It was done to avoid issue with specific compiler flags. I think it is safe to reenable it now.
There are some flags that are still disabled that potentially could be re-enabled:
-fno-guess-branch-probability
-fno-dse
-fno-tree-dse
But it will be for another PR
We should have tagged v1.3.0 at 1fb3d7dd17
but we didn't, and tagging v1.3.0 now (HEAD or retroactively) would only create
confusion.
Instead we're setting a new baseline version of 1.3.1 which will be displayed
at the buildbot lists, at pcsx2, and at the git tag.
This doesn't indicate any change to pcsx2 other than aligning the version
numbers of the various places which use it.
1. When changing settings, such as aspect ratio, patches message was spamming
the console, now they don't.
2. Added more verbose patches messages when ELF-log is enabled at the console.
These messages now show whenever patches/cheats are applied, including when
changing settings such as aspect ratio.
3. When rebooting the same game again, some of the cheats messages were not
displayed since it's the same CRC and the logic thought it should remain quiet,
now verbose gets reset on boot which will show all patches messages correctly.
4. Errors/warnings stay the same and not afected by this change.
It explains why first 'register' isn't included in the loop.
Hardware note: it is called a register but in hardware they're just wire
stuck on 0/1, so not a real HW register
this uses <wxString>.mbc_str() instead of .toUTF8() for all file related
stuff.
also normalizes all Console outputs to use WX_STR(str).
TODO: this was only tested on windows.
if someone could test on linux (wx 2.8 and 3.0) that english-only and not
english-only iso.gz file names work correctly (open the file, create the index,
read the index on next boot and that all console prints are good), please
post a comment.
The goal is to reduce the burden for new architecture port.
Patch is mostly inspired from 3kinox initial patch. The diff are
*/ used ifdef instead of raw removal
*/ gui don't rely on UseMicroVU* option
*/ completely remove sVU_micro.* file
At PCSX2_ui.ini: default: GzipIsoIndexTemplate=$(f).pindex.tmp
The rules:
- must contain one and only one instance of '$(f)' (without the quotes)
- if starts with $(f) then it expands to the full path + file name.
- if doesn't start with $(f) then the path is ignored (name+ext only)
- if doesn't start with $(f) and ends up relative,
then it's relative to pcsx2.exe (not to cwd)
- No checks are performed if the result file name can be created, so the dir
should exist.
- PCSX2 will not try to rename/move older index files to the new name/location.
If it's modified - the user should take care of rename/move before loading
gzipped iso files or else it will create a new index according to the template
Examples:
$(f).pindex.tmp - the default - same dir as the iso, loads older index files.
$(f).pindex - a popular request.
cache.gz/$(f) - relative to pcsx2.exe (if the dir exists).
%appdata%/pcsx2/cache.gz/$(f) - should end up at the default install docs dir.
when running with --nogui, PCSX2 knows to exit when the GS window closes.
However, pressing esc (suspend) didn't close the window and instead hidden it.
As a result, PCSX2 didn't exit and remained a zombie process.
this patch closes the gs window on suspend in --nogui mode, which makes PCSX2
exit fully.
it's now also possibly to use --noguiprompt which prompts if esc will exit
PCSX2, and allows the user to abort the suspend and continue using PCSX2.
TODO: if PCSX2 was in full screen - then pressing esc exits full screen. it
would have been ideal to restore full screen, but for now it doesn't.
- don't display a message if the replacement is the same as the default.
- display a message if the key combination is unknown
- (same as before) display a message when replacing a shortcut
- also added PCSX2_keys.ini.default sample file with some help
The method of forcing first-time-wizard wasn't very effective because
1. it's ugly, and 2. after selecting the language at the wizard it either
imports the previous settings (together with the previous language thus
overriding the new language) or resets all other settings - which is not fun.
This patch uses a small dialog instead to only change the language, and within
it reuses the language panel from the first time wizard.