There are a few odd things with Windows and the background logo.
1. The windows containing the logo is smaller than the logo.
2. The fitting algorithm doesn't work at 200% DPI.
Both make no sense, but can apparently be worked around.
This should reproduce the old non-DPI aware pre-wxWidgets 3.0 behaviour
for the main dialogs, except the font rendering should be better.
And add comments that I should have already added but didn't.
The wxImage Scale/Rescale methods with wxIMAGE_QUALITY_HIGH upsamples
and downsamples using the bicubic and box resampling methods
respectively, so let's just use that instead of the ResampleBox method,
which is undocumentated and probably shouldn't be used.
The Rescale function also modified the image when it was not supposed
to. Fix it, and rename it scale to avoid confusion with the wxWidgets
class.
Have listbook icons (Emulation Settings, Plugin BIOS selector) on the left for all platforms.
Don't set minimum widths for Framelimiter and Frameskip panels.
On Windows, this fixes the minimise/restore weird dialog bug on the
Emulation Settings and Plugin/BIOS selector dialogs. It also fixes a bug
at high DPI, where it becomes difficult to click on GUI elements at the
top of the dialog.
It also makes it easier for me to work on the Windows DPI stuff, I don't
have a 4k monitor.
This is the same problem that the Plugin Open and BIOS load exceptions
had - The message box pops up, intercepts the hide event for GSFrame and
leaves you with no alternative but to terminate PCSX2 via the Task
Manager.
The same solution applies - Close the GSFrame first.
Expand "Disable Framelimiting" and "Synchronised MTGS". Fixes message
truncation on Linux, and Windows at higher DPI.
Don't use pxFitDigits on Spin Controls - the sizing algorithm fails
horribly on GTK3, which means you can't see anything.
And don't use a row of spacers - it causes a minor display issue with
GTK3.
Fix Windows Lilypad local volume control GUI checkbox.
Make MicroVU E-bit delay slot warning a Dev warning.
Don't minimise GS Window if main window is minimised.
previously the GS window (rendering window) also gets minimized with the Main window (GUI) whenever it gets minimized. many users didn't like this behavior, hence make it so that GS window doesn't get minimized along with the main one.
The parent window pointer parameter is no longer needed, since the parent parameter at WX Frame has been replaced with Null which doesn't force minimize it due to no parent relationship.
The following E-bit delay slot warning initially used a console error message which has a sort of bright red which would cause users to provide a lot of attention towards to it, whereas it isn't much to be bothered since it doesn't cause any issues on the game according to refraction it was already dealt with on the code.
So, use a proper warning indicator instead of a error log message.
The PCSX2 log system isn't in place yet, so on Windows it's possible for
a language error message to pop up, which might cause alarm. Suppress
the error - it's harmless and it's done everywhere else for locales
(though perhaps the code should be reworked to avoid this).
No official game stores files there. You can easily check this by putting any file in the root dir and loading the PS2 BIOS, which will show it as corrupted data with an unknown filesize.
For the install version on Linux, PCSX2 now searches for cheats in $HOME
instead of /usr. For the install version on Windows, PCSX2 now searches
for cheats in Documents/PCSX2 instead of the cheats directory where
PCSX2 is installed.
Also make a few small consistency changes.
wxWidgets 3.0 seems to have a different default device context alpha
channel handling on Windows, which makes the screenshot function
unusable.
As a incomplete fix, remove the alpha channel information from the final
image on Windows. Screenshots degrade slightly.
The "Other Hacks" and "microVU Hacks" checkbox descriptions are
truncated in both Windows and Linux. Use sizer flags so the descriptions
show up properly.
The custom scroll event handler increments/decrements the slider value
by one when a click event is detected. It also propagates the event to
the wxWidgets3.0 built in slider scroll event handler, which repeats the
same action. This causes the slider to add/subtract 2 whenever it is
clicked on Windows.
Remove the custom function.
The code was restoring the defaults with hardcoded values. This patch
restores the values however they're defined as defaults for AppConfig.
The code still uses hardcode values to set the highlights (bold) of the
default radio button text - using SetDefaultItem.
Note that other than these two panels, the speedhacks panel is the only other
which has a restore-defaults button, and it already does so programatically.
It's probably not worth trying to unify these three restore-defaults button
into a single system.
Debian has a goal to make reproducible builds therefore make it an
option instead of distro specific.
.
I added an "OR openSusE" to not "break" the old openSUSE behavior but ideally
they should just use -DDISABLE_BUILD_DATE=TRUE instead.
.
The old -DopenSUSE is not used for anything else so I removed it.
Credit for this fix goes to @poodle111
Commit 760de9915b broke the detection of
Ctrl and Shift key presses since it misses the VK_CONTROL and VK_SHIFT
virtual keys.
If pcsx2 is compiled for 32-bits and then compiled for 64-bits without
cleaning the build files, the wrong wx3.0 manifest will be included. The
same will happen vice versa.
Place the generated rcdefs.h file in a platform specific directory so
the correct manifest will always be used.
On wxWidgets3.0, using GetSymbol() on a nonexistent symbol causes error
messages to be logged. This causes all plugins except GSdx to output
error messages when an attempt to load the PS2EsetEmuVersion symbol fails.
Suppress the error message - it'll probably just cause unnecessary
confusion.
This means that we are now no longer touching files that haven't technically been written to. Some games use timestamp information to automatically highlight the save that was last written to, so this should fix a small but annoying bug where it would highlight the wrong one.
Do note that while there is a much simpler check that looks like this:
// Remove (== don't flush) all memory card pages that haven't actually changed.
for ( auto oldIt = m_oldDataCache.begin(); oldIt != m_oldDataCache.end(); ++oldIt ) {
auto newIt = m_cache.find( oldIt->first );
assert( newIt != m_cache.end() ); // if this isn't true something broke somewhere, the two maps should always contain the same pages
if ( memcmp( &oldIt->second.raw[0], &newIt->second.raw[0], PageSize ) == 0 ) {
m_cache.erase( newIt );
}
}
m_oldDataCache.clear();
It can fail in edge cases that don't actually seem too unlikely. Imagine a save being deleted, and then a new save from the same game but in a different slot being created quickly afterwards. It seems quite possible that the new save's file data then occupies the exact same pages as the old save's, and since it's from the same game it might be close enough to where a page sized section (juse 0x200 bytes!) matches the data from the old save that previously resided in that location -- which would cause this code to throw away and not flush this data! It's a shame too, since this variant would be a few ms faster as well, but I feel it's better to be safe than sorry here.
This mainly means that the superblock is now no longer written every single time the memory card is closed, but only when it's changed (which should be exactly once, when the memory card is formatted). It also means that you can format a memory card and then have the emulator crash later without having to reformat the card next time.
We're not actually deleting files though, we just rename them to prepend _pcsx2_deleted_, in case something breaks or whatever, so the user can in an emergency just restore the save by removing that part of the filename.
This eliminates prompts at the start of a game complaining about no
memory card being inserted.
I'm honestly not entirely sure if this is safe (is there some memory
card driver that could cache results between different executables?) but
if it isn't we'll see it soon enough!
* Reduce the amount of times path strings are constructed.
* Move file metadata writing to the file helper, which means it will only be written once per consecutive file access instead of on every file chunk.
This allows us to skip a bunch of accesses trying to find a matching file or memory location, presumably without actual consequences. This isn't really gonna change much in actual game use, but does speed up conversions of FileMemoryCards.
It was possible for an invalid (because never written to, so filled with 0xFF) file entry to be recognized as valid in GetFileEntryPointer(), which cascaded up to it flushing file data as fileEntryDict data and thus losing the relevant file data page.
Not sure if the other two entry accesses changed here are affected as well but better be safe than sorry, I suppose.
If you inserted a PSX memory card into a slot, then swapped that with a
PS2 one, the memory card manager still displayed that card as a PSX one
with "MBit" instead of "MiB" as the size unit. Fixed.
This reduces memory card initialization time.
Without this, it always indexes all files when the emulator boots, which
can take a few seconds if you have lots of files.
With this, the only file indexed is the PS2 "your system configuration"
file.
This has the side-effect of not being able to see save files in the PS2
BIOS unless you insert a game disc matching the files you want to see. I
don't think this is a big problem, but there should probably be a "don't
filter" option somewhere in case you want to manage files in the BIOS.
Essentially, I'm telling the memory card to re-index itself with a
filter based on the game's disc serial every time a new executable boots
in the emulator.
This currently works for a lot of games, but fails in edge cases where
the game disc's serial does not match the game serial that is written to
the memory card as part of the save file's directory name. This affects
mostly (only?) games that have multiple discs. We could circumvent this
by adding a "save game serial" or something into the GameDatabase which
tells us what we should filter by for those cases.
Apart from this edge case, this appears to work surprisingly well. Try
it and see if you can find other issues!
FileMemoryCard: Log reads and writes so I know what kind of commands I have to deal with.
FolderMemoryCard: Create basic class/method outline based on FileMemoryCard.
FolderMemoryCard: Add a FolderMemoryCardAggregator so I don't have to write every method in a way that has to handle more than one memory ca
Also shuffle around the location of code because C++ cares about stuff
needing to be defined before they're usable.
FolderMemoryCard: Implement Open().
FolderMemoryCard: Implement GetSizeInfo().
FolderMemoryCard: Implement some basic structure of Read()
FolderMemoryCard: Implement parts of Read() and Save().
Shouldn't it be Write() or Load()? Anyway, this doesn't work yet, but it
gets part of the formatting procedure done which is at least something!
FolderMemoryCard: Add method to calculate ECC.
FolderMemoryCard: Start implementing the FAT.
MemoryCard: More logging.
FolderMemoryCard: Formatting works now!
Formatted memory card isn't actually recognized as formatted yet because I don't store folder metadata yet, but we're getting there!
FolderMemoryCard: Recognize when it's trying to access a data cluster.
FolderMemoryCard: Add directory/file entry support.
On further inspection this might not a be a good way to handle erasing.
FolderMemoryCard: Method to get a file entry and file path from a file's data cluster.
FolderMemoryCard: wxDirName is garbage, let's just use wxFileName for the folder too...
FolderMemoryCard: Fix Erase method.
FolderMemoryCard: Start implementing file writes.
This is still quite broken but we're getting somewhere here!
FolderMemoryCard: Load the data from the host file system into the memory card on emulation start.
Also store superblock to host file system on end.
FolderMemoryCard: Fix a few warnings.
FolderMemoryCard: Implement file reads.
FolderMemoryCard: Proper ECC reads.
FolderMemoryCard: Reads to unmapped locations should return all 0xFF.
FolderMemoryCard: Some sort of working WriteToFile.
(Note: Doesn't always work depending on what order data gets written...)
FolderMemoryCard: Forgot a 'b' for reading files in binary mode. Whoops.
FolderMemoryCard: Load timestamps from the host filesystem.
FolderMemoryCard: r+b needs the file to exist so create if it doesn't.
FolderMemoryCard: Failsafe to allow non-sequential writes.
FolderMemoryCard: Use a cache for writes. Does not flush to host FS yet!
FolderMemoryCard: Flush the data written to the cache to the host file system on exit.
FolderMemoryCard: Since we have a cache now, remove code related to formatting, it's no longer needed.
FolderMemoryCard: More binary file mode mistakes...
FolderMemoryCard: Make it actually possible to disable/eject cards.
FileMemoryCard: Revert changes made for logging data.
FolderMemoryCard: Remove excessive logging.
MemoryCard: Note that the superblock struct is no longer unused.
FolderMemoryCard: A disabled card shouldn't try writing data on exit.
FolderMemoryCard: Log when flushing data.
FolderMemoryCard: Replace plain constants with const variables.
Should make it easier in the future to change the memory card size, if
needed.
FolderMemoryCard: Sort of handle the case when the total size of files in the memory card folder exceed the size of the card.
Not elegant but prevents ugly errors. The file that caused the card to
"overflow" will be seen as corrupted data by the PS2 browser.
FolderMemoryCard: Some sanity checks.
FolderMemoryCard: superBlock member really should have that m_ too to be consistent.
MemoryCard: Switch back to FileMemoryCard for merging.
FolderMemoryCard: Implement GetCRC() via a timestamp of the last memory card write.
Reasoning:
Regarding auto-ejecting on save load, I see that the current
implementation checks that by comparing memory card CRC and reinserting
if it mismatches. Since it's actually just about seeing if the memory
card state of the savestate and the current state match, my GetCRC() now
returns a millisecond timestamp of the last time the card was written
to. This should work out to the intended result, though I had to use
wxGetLocalTimeMillis() instead of wxGetUTCTimeMillis() since the latter
isn't available for some reason.
Fix GCC warnings and error.
MemoryCard: Switch implementations via a #define.
FolderMemoryCard: Add a NextFrame() method that should be called once per frame. Flushes written data to the host file system after a certain amout of frames have passed without any writes (currently 60).
MemoryCard: Add the NextFrame() method to the plugin API.
Counters: If the FolderMemoryCard is selected, inform it every frame in VSyncEnd() that a frame has passed.
VSyncEnd: Probably better to inform the memory card before the frame limiting.
Fix error when using wxWidgets >= 3.0.
FolderMemoryCard: Extract into its own .h/.cpp files.
FolderMemoryCard: Change cache to a map to reduce memory usage.
FolderMemoryCard: More gracefully handle lack of space when adding files.
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.
The code was searching only at the default paths for cheats and cheats_ws.
Now it's possible to set UseDefaultCheats[WS] at PCSX2_ui.ini to 'disabled'
and set a custom value to Cheats and/or CheatsWS and PCSX2 will respect it.
* game is working :)
Note1: I dissassemble the main exe to search all call of the allocation (unlikely to have more calls)
Note2: it is easier to use the return of the function so allocation is done in the tlb[array] cache
Add GoemonUnloadTlb function that invalidate TLB cache.
Currently the function is only used on the interpreter. It fixes TLB error after a reload of data.
Next step: porting to the recompiler
* Create a disBranch to factorize a bit the code
* Add PRINT_REG_CONTENT define that add a 32bits value of registers for
standard opcode. (Far from perfect, but it very useful)
This way it will always be the same.
Fix issues #381
Note: potentially we might need to move your previous directory.
mv $HOME/.config/pcsx2 $HOME/.config/PCSX2
Disable the debugger and an useless debugI function
* x2 on dbg build :)
* x2.5 on dev build :)
Note: debugger doesn't work yet with the interpreter so no real drawback.
memRead32 could throw a TLB miss exception, however TLB handler expects pc counter to be incremented
Goemon is now really "playable" with the interpreter (disable automatic gamefix)
When a tlb miss is detected current instruction must be skipped. We need
to immediately switch to the handler
Typical instruction bug case:
lw a0, 0x8(a0)
a0 mustn't be loaded if we have a miss
v2: create a dedicated exception for tlb miss
v3:
* rename exception to CancelInstruction
* add a basic state machine on the exec loop so we keep same behavior
for eeloadReplaceOSDSYS and eeGameStarting
v4: remove assert
If any cheats file is not found, the "Not found Cheats file" message will appear with its full path of the cheats file on the log screen.
Changed color of a few positive logs to green from grey.
* link common with c lib (required for gold linker)
* fix the macro to properly set the library variable
=> use the variable instead to hardcoded value
Fixes RPMLINT warning:
pcsx2.i586: W: file-contains-date-and-time /usr/bin/pcsx2
Your file uses __DATE and __TIME__ this causes the package to rebuild when not needed
VTLB does some nonsense with signed integers for the pointers.
We've got to make sure to set the signed bit in the correct bit on 64bit pointers so it works.
The code was sitting there only serving to confuse people. The tags were a way of setting an 'isXMMreg' inside a function and the values actually didn't mean anything.
Previously (on gcc) compilation would fail with:
pcsx2/DebugTools/DisR5900asm.cpp:58:37: error: ‘R5900::GPR_REG’ was
declared ‘extern’ and later ‘static’ [-fpermissive]
I'm not sure what this is actually to be honest, ancient release notes say it was ps2linux related but I don't think this is Linux System.map compatible... regardless ps2linux isn't exactly high on our priority list.
Remove deprecated jASSUME from pcsx2 core. It is still used in some plugins.
[I should note that this may change the performance of the devel target on msvc as jASSUME was compiling to __assume on devel and release while pxAssume only compiles to __assume on release]
SSE2 is supported on more than decade-old x86 CPUs. Almost(?) every x86 CPU since PS2 was released.
Certainly running the existing code on a non-SSE2 computer resulted in most of the code being disabled anyway and the emulator being incredibly slow.
This removal will hopefully allow the removal of MMX/3DNow code as it has been superceded.
* Manually cast WxGetTranslation
* Accept string as format parameter of pxWindowTextWriter
* Manually convert wxString to wide string
Note: Wx setup.h is not the same between Debian and Arch. Unfortunately it
generated various compilations errors on wx code.
Close issue #172
* disable unused value warning (don't like the syntax 0&&)
* remove -Wno-ignored-attributes (c option). It replaces gcc warning
by an unsupported option warning...
There are a load of casts from pointers to 'int' and 'u32' in the JIT core.
This takes a better practices approach to the problem and casts to uptr instead.
Zero functionality change of course, just changes all of these terrible casts to going to uptr which makes the casting style consistant and work on
both x86_32 and x86_64.
This obviously doesn't work around the issue of the recompiler not running on x86_64, but we need compiling before we delve further.
Remove the --previous option of po generation. It broke some translations.
Remove the translation of PCSX2 version, no point to translate C format symbol.
v3: partially revert previous version
* Keep old behavior for translation on wx2.8
* Revert wxDataObjectSimple parameter change
+ feature is MSW only
+ devs are welcome to improve it
* restore standard path, only update the reference type
Fixed clang build.
Note from Gregory:
C++ requests that at least 1 parameters is a class, an enumeration, or a
reference to those objects. Probably to avoid to screw basic type operation.
For example: *p += 4;
The realy buggy code was this one because T could be an int!
template T
f(*ptr, T)
To avoid any issue in the future the Team decide to drop all overload that use pointers.
Both implementations are about the same, which is hard to measure since we are limited in speed due to the hashing function.
Both implementations averaged ~220ms to load the full game database on my workstation.
-fix potential memory access exceptions
-prevent the disassembly from changing positions when a breakpoint is toggled
-only use the status bar text from the current cpu
This has no functional change on x86_32, it's mostly just changing a few pointer to u32 conversions to uptr and sptr.
I can not yet confirm if this runs on x86_64, but compiling is enough of an issue currently.
The yuv2rgb_sse2 implementation is x86_32 only, so x86_64 can't take advantage of this optimized code path.
This requires the architecture defines to be working fully, so this can't be merged until it is fixed on the Windows side of things.
This defines the correct define depending on architecture build target.
Currently Windows doesn't support a x86_64 build target, but once it does the define will be in place.