* Moved ps1 init. Added Sample Rate change for SPU that gets set but not applied
* SPU: misc fixes on SPU ps1 mode init
* Init the soundbuffer to apply sample rate. Actually set the correct sample rate for the ps1 though it still won't apply
Co-authored-by: Gauvain 'GovanifY' Roussel-Tarbouriech <gauvain@govanify.com>
Co-authored-by: kenshen112 <obarrtimothy@gmail.com>
Shares a single filename between the two capture functions so that the .avi and .wav will match.
Default wavdump filename changed to "audio_recording.wav"
Allocate memory in an x86-64-compatible way
Another part of #3451
Note: While this shouldn't change how anything works, it's been the #1 source of breakage of 32-bit builds in #3451 (it was the cause for the failure of win32 to allocate memory and the failure of linux-32 afterward) so we should definitely make sure it gets tested
see #3523 for more information
Fix codegen on x86-64
Part 1 of the changes being worked on in #3451
Makes x86emitter emit the x86-64 machine code you would expect it to
Also adds some unit tests to verify that things are working
* git: Ignore uncaught linux build artifacts
* onepad-legacy: Return legitimate key event on `PADkeyEvent` call
Onepad-legacy was the plugin that was building and being used on my linux environment. I'm not sure if t hat's expected and normal 'onepad' has yet to take over.
* onepad: Return legitimate key event on `PADkeyEvent` call
* recording: Remove unnecessary `PadKeyDispatch(ev)` wrapping func
* recording: Cleanup key event handling when GSFrame CoreThread is paused
* recording: Refactor recording status check to be more explicit
* recording: Define additional key bindings for capitalized varient
Despite the advice of the docstrings in these files, on linux this seems to be required for the bindings to consistently fire.
* onepad: Declare `AnalyzeKeyEvent` not static
* recording: Ensure file extension is appended to recording file on linux
* recording: Correct typo in comment
* recording: Better wording around linux keybinding handling
* Remove unneeded `extern`
* Improve secondary dialogs in Onepad. I'll do gtk stuff in this branch, too, I promise...
* More fiddling with onepad's secondary dialogs.
* Rework config.inl to use wx, getting the rest of the null plugins.
* Remove some unnecessary includes, and convert SysMessage to wx in onepad.
* Add in tellowkrinkle's Mac OS fixes.
* macOS compile
* Fix memprotect error on macOS
* Fix semaphore wait + thread cancel on macOS
* Fix timedlock timeout calculation
* spu2-x macOS
* onepad macOS support
* Add MacOS game controller db
* Disable onepad_legacy on macOS
* Fix spu2-x configuration crashes
* Make recompiler work on 32-bit macOS
* Use dylib extension for plugins on macOS
* Make app bundle on macOS
* Use git info for Info.plist version
Avoid some function overloads that can accept char*, wxChar* and
wxString as a parameter. wxString can be constructed with either of
those parameters, so the function overloads may actually result in
ambiguity errors. Keep the wxString parameter versions and remove the
rest.
Fixes some compile errors on FreeBSD.
__try is used in pthread_cleanup_push when CLEANUP_SET is used as the
pthread cleanup model. That can't be used in functions with objects that
have destructors, so move it into a separate function.
Prevents compile errors on non-release Windows builds if other things in
the internal callback function change.
This pull request is for the pending reorganization of the folder structure on GSdx,
making it better organized and easier to work with.
Also remove unused GSTextureFX.cpp file.
This reverts
93d5b52df3f3e78b826755155ca7f1.
Unfortunately wxString stuff is a PITA to deal with. Breaks FreeBSD
compile, but there are probably more issues that just haven't been
reported yet...
__try is used in pthread_cleanup_push when CLEANUP_SEH is used as the
pthread cleanup model. That can't be used in functions with objects
that have destructors, so move it into a separate function.
Fixes a non-release build compile error on Windows. Regression was
introduced in 93d5b52df3.
Avoid some function overloads that can accept char*, wxChar* and
wxString as a parameter. wxString can be constructed with either of
those parameters, so the function overloads may actually result in
ambiguity errors. Keep the wxString parameter versions and remove the
rest.
Fixes some compile errors on FreeBSD.
Fixes a compile error (C2666) on VS2017 15.8 caused by ambiguity issues.
The sstream header uses
constexpr auto _both = ios_base::in | ios_base::out;
Without the extra type restrictions the compiler cannot tell whether to
use the template or the built-in | operator (the const wxSizerFlags &
parameter will accept ints).
Fixes some issues with opening ini/log files when the path contains
characters that are not present in the current codepage for the
following plugins:
SPU2-X
LilyPad
cdvdGigaherz
Dev9null
USBnull
FWnull
Adds a helper function for converting UTF-8 to UTF-16 on Windows. Also
adds a fopen wrapper function for pathnames that may contain characters
that are not present in the current Windows codepage.
The C spec states that the va_arg argument value is indeterminate after
returning from vfprintf. va_end and va_start must be called before the
variable is reused.
clang and earlier GCC versions do not provide the _xgetbv intrinsic.
GCC8 does, but unfortunately it's broken.
(https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85684).
Re-use our _xgetbv implementation to avoid the bug, but rename it to
avoid compilation errors as well.
Avoid enabling the child windows when SetValue is called if the window
is currently disabled.
Also continue processing the checkbox event after it has been handled,
which allows the event to propagate to the parent window.
It's not really used, and the OSD uses a different API.
The specified calling convention (stdcall) is also incorrect since
variadic functions are caller-clean, not callee-clean. The compilers
ignore the stdcall and just use cdecl (I think), though it does trigger
a -Wcast-calling-convention on clang.
Issue: wait of the semaphore timedout. However semaphore was properly posted
counter is 1.
To workaround the issue, only throw an error if semaphore counter is 0.
Note: I reduced the timeout to 100ms by threads to avoid huge startup delay
Close#1939
wchar_t is 16-bits on Windows, which can't actually properly fit all
Unicode characters.
Use the wx3.0.x wxTextWrapper approach of using iterators that increment
by actual characters to fix the issue, and also switch to using the
std::string style functions in wxString.
Mapping the full buffer is killer on Vtune (either crash or requires a huge processing time).
Instead keep the same ID for code in the same buffers.
I think all buffers are correctly mapped now but I still miss the frame pointer
for VU code.
Cons:
* requires ~180MB of physical memory (virtual memory is the same so it
doesn't impact the 4GB limit)
From steam: 98.81% got at least 2GB of RAM. 83.62% got at least 4GB of RAM.
That being said, it might not really increase RAM requirements as OS could put the
new allocation in the swap.
Pro:
* code is much easier
* remove at least half of the signal listener
* last but not least, it is way easier for profiler/debugger
Doesn't fully work yet
* Unknown stack frame
* Outside any known module
Potential root cause:
* Nvidia driver
* VU code as ebp is required for emulation so likely no frame
GetBestWrappedSize (hence the BestSize) computes the size of
the wrapped text based on box side minus padding.
So the width of the widget is already the good size for text wrapping
Templace is nicer but give a hard time to compiler.
New version compile in both gcc&clang without hack
v2: add an uptr cast too for VS2013 sigh...
v3: use an ugly function pointer cast to please VS2013
The solution files are unused and for ancient Visual Studio versions -
GSDumpGUI has its own solution file, and bin2cpp is included in the main
solution file.
The property sheets have either fallen out of use or were never used in
the first place.
Combine all the different configurations together so the project files
are more generic and maintainable.
Also standardise the layout so all the project files will be similar and
all have the same standard elements (even if empty).
Add 64-bit configurations.
Don't use "-dbg" target suffix - both Devel and Debug builds use the
property sheet, so it's incorrect.
Also don't set optimise references to false - it's incompatible with
incremental linking and causes compile failures.
* Avoid the generation of memory barrier (mfence)
* Based on the fact that it used to work on previous code without any
barrier
v2:
* keep basic code in reset path
* use relaxed access for isBusy. The variable doesn't carry load/store
dependency but is instead an hint to optimize semaphore post
x86emitter : Convert variable type from u8 to bool.
recVTLB: Cast "sign" to bool to prevent a warning.
R5900OpcodeImpl: Cast all the values in array to u64 instead of s64.
The TLS buffers used by the FastFormatUnicode and FastFormatAscii
classes seem to be responsible for PCSX2 not terminating properly on
Windows under certain conditions (using MTVU before commit
1111e03901, using CDVDgigaherz without a
disc, possibly other conditions).
When PCSX2 shut downs and the FastFormatBuffers are being cleaned up,
the call to pthread_key_delete() would end up calling
WaitForSingleObject(e, INFINITE) and waiting indefinitely for an event
to trigger. It never does get triggered (for reasons unknown) and
therefore PCSX2 doesn't terminate properly.
Remove the usage of TLS buffers in the FastFormatString classes - it
fixes the termination issue on Windows and doesn't seem to have much
effect on performance.
Adding shortcuts to all the menu options, that only some of the options
in the Config tab already had.
Also update translations so menus are still localised (well, mostly).
Using __declspec(dllexport) causes duplicate export warnings to be
generated when compiling 64-bit builds. Name mangling also occurs on
functions that are exported this way, so it doesn't actually work with
the plugin system, which uses unmangled names.
The module definition file exports the functions without name mangling
and is sufficient on its own.
find . -name *.vcxproj -exec sed -i -e '/user.props/d' {} \;
Microsoft recommends against using .user files. From
https://msdn.microsoft.com/en-us/library/669zx6zc.aspx :
"The best practice is to delete the reference to them in Property
Manager to ensure that your projects operate independently of any
per-user, per-computer settings. This is important to ensure correct
behaviour in a SCC (source code control) environment."
If you cannot compile SPU2-X after this commit (since that still relies
on the old DirectX SDK), you'll need to fix your build environment.
This prevents desync between what is assumed to be the active filter and
what is actually the active filter, fixing errors like #1179 where the
memory cards are closed and reopened for whatever reason.
Basically I ran
find . -name "*.vcxproj" -exec sed -i -e 's/_xp//' {} \;
This will likely break XP, but it paves the way on Windows for a PCSX2
that does not require the DirectX redistributables to be installed for
Windows 8, 8.1 and 10 users. Windows Vista and 7 users will still require
the DirectX redistributable files for XInput and XAudio, though PCSX2
should still be capable of running if a user does not actually use either
of them.
So let's not specify it as a build dependency.
Also remove some unnecessary manual library linkage and remove the
wsWidgets GUI property sheet, which does nothing useful.
Buttons done, configuration initialization done.
Still need to add Gamepad and Joysticks configuration frames.
Require png file for the moment (the embedded picture will be fixed after).
New Onepad GUI based on wxWidget (Main frame almost finish)
Background picture is now embedded
Button binding works
Loading and saving works
Need to add feedback and gamepad, joysticks configuration frame
Modification of the onepad CMakeList.txt
Automatic generation of images headers using perl script
Modification of the test feedback function
Code needs to work with xAddressReg however the x32 inheritance doesn't
exits anymore on 64 bits.
Note: it might be possible to uses some kind of autoconversion with
xRegister32or64. Could be a future improvement.
Note: displacement are never 8B. The max is 4B which is sign extended to 8B.
So we can't store a pointer into it anymore.
Add xRegisterLong that will be x64 on 64 bits and x32 on 32 bits
V2:
* Add various option to handle the different frame
* Basic x86-64 port (untested so likely completely broken)
v3:
Create an templated xImpl_FastCall object
v4:
clang compilation fix
Basically it creates a /tmp/perf-`pid`.map file which will contains
a mapping of the x86 code with the EE/IOP/VU code
* You need to enable the profiler with a define
* You can split the profiling by block (inside a recomp buffer)
v2: add new file to VS xml files
v3: remove useless include
Technically it did work, but it was undefined behaviour. Use __cpuidex,
which allows setting ecx as well.
Also fix the _xgetbv intrinsic - I have no idea how PCSX2 even
compiled on Windows.
Let's the kernel manage the memory either with builtin lazy allocation or
swapped memory.
Avoid to handle SIGSEGV manually (nicer for debug) and removes 250 lines of code.
CID 147010 (#1 of 1): Uninitialized pointer field (UNINIT_CTOR)4. uninit_member: Non-static class member Enabled is not initialized in this constructor nor in any functions that it calls.
It might help to fix those 2 coverity reports.
CID 151744 (#1 of 1): Useless call (USELESS_CALL)
side_effect_free: Calling EnumAssert(id) is only useful for its return value, which is ignored
CID 151745 (#1 of 1): Useless call (USELESS_CALL)
side_effect_free: Calling EnumAssert(id) is only useful for its return value, which is ignored.
Console.Error() can trigger some exceptions (like out of memory)
v2:
Add a default fallback catch(...) in case someone badly add a new
exception in the codebase
Coverity:
CID 147021 (#1 of 1): Uninitialized scalar field (UNINIT_CTOR)i
2. uninit_member: Non-static class member m_handled is not initialized in this constructor nor in any functions that it calls.
This could have caused issues where e.g. Fixed100(59.94) differed from
Fixed100::fromString("59.94") due to precision compilation flags
(the former could, and did on Devel builds, end up with Raw == 5993, which
differs from the value constructed from the string at the ini file,
and then it would be incorrectly identified as a custom rate).
Rounding seems the more likely intention when effectively decreasing the
precision of a value.
Unlikely that we have code which depends on truncating behavior, though not
impossible.
Out-of-bounds memory is no longer accessed if the realloc size is larger.
If reallocation fails, the old memory will not be freed and a memcpy
will not take place.
This should match the Windows _aligned_realloc behaviour, except that an
extra parameter is used.
All refer to memcpy, and only memcpy_fast is used, so there's no point
keeping them.
Also remove the _memset16_unaligned function prototype since there's no
function definition for it.
- It currently fails to detect a 64bit git.
- It currently breaks with a TZ left of the Greenwich meridian.
- The output of git show -s can cause compilation errors pipe to NUL.
- Pipe the two can't find the git command error messages to NUL too.
It claimed to be 1.7.1 but it had a mixture from various
versions. It was hard to update as everything in the top directory
so I used upstream's way to organize files. I renamed include to
soundtouch since I did not want to #ifdef that for windows.
.
Wavfile.h is a private header so I used the private path instead of
moving the file over. This changed 3 files in the plugin folder.
- zerospu2: include stdint.h in Windows. (VC2012+)
- CDVDolio: Remove hash_map (not used, VC2015+)
- zerogs: Fix extern and link to utilities. (VC2012+)
- zzogl: Port windows part to wx30. (VC2012+)
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.
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.
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.
The wxWidgets projects have already been specified as references for
both the SPU2-X and pcsx2 project, so there is no need to also specify
the static libraries as additional linker dependencies.
wxWidgets 3.0 and w32pthreads both define mode_t on Windows, causing a
redefinition error. The w32pthreads mode_t doesn't get used, so I've
chosen the wxWidgets definition.
Also add <algorithm> (required by min and max) which is no longer
implicitly included on Windows, and wx/crt.h, required by wxVsnprintf in
wxWidgets 3.0
Gregory: Get all changes but keep C11 code path which will be the future
(if someone can find info on Visual Studio support)
* Keep the old posix api to use address sanitizer on gcc 4.9
Conflicts:
common/build/Utilities/utilities.vcxproj.filters
common/build/Utilities/utilities_vs2012.vcxproj.filters
common/build/Utilities/utilities_vs2013.vcxproj.filters
common/include/Utilities/MemcpyFast.h
common/include/Utilities/StringHelpers.h
common/src/Utilities/AlignedMalloc.cpp
common/src/Utilities/vssprintf.cpp
plugins/GSdx/stdafx.cpp
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.
Performance is not important here. I'm not sure Windows could handle VLA
* new/delete can still be used otherwise.
* Put an assert(0) because debugger surely don't use string bigger than
128 bytes.
code is much more compact 20 lines vs 700 lines ...
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
Call to vsnprintf update the gp_offset of the varargs (at least on x86_64 linux).
Therefore the 2nd call (because buffer was too small) uses out-of-memory arguments
We need to keep a local copy otherwise you will get an awful SIGSEV
Note: I'm sure we have same issue on plugins
After a Console.Write/Writeln that uses colors a call to
ConsoleColorScope::LeaveScope() is made to restore m_old_color. This
restoration command stays buffered until a full line is printed. In the
meantime any console message that happens will use the old coloring
and if the program happens to crash the console would keep using the
color of the last colored text that was printed.
builds an Utilies_NO_TLS.a archive of the common Utilities code. It replaces native TLS by a slower reimplementation
Rational: number of TLS slot is very limited by the GLIBc on linux. I hope it doesn't impact performance.
* Zzogl don't requires TLS AFAIK
* spu2x will likely use it for assertions only.
TLS exhaustion creates issue to dlopen plugins
issue #384 : https://github.com/PCSX2/pcsx2/issues/384
But also for profiled build (-fprofile-generate)
http://forums.pcsx2.net/Thread-WORKAROUND-build-with-fprofile-generate
If someone have a better idea, please raise your hand!
Possibly also changes the semantics. According to the docs, it should now be
equal to the Windows code (up to accuracy issues, of course).
v2: done by gregory38
Fix miscalculation of time. Unit must be in 1s/GetThreadTicksPerSeconds(). (now us)
Factorize a bit GetCpuTime/GetThreadCpuTime
Note: results seems reasonables and mostly equivalent as before.
* 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
The non-stdint fallback was not even working which shows that it was never used. No supported platform would not have stdint anyway.
Remove unused code and do not restrict types to Linux and MSVC. Was there a reason for this?
* 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
Instead of using some dynamic code to grab the FXSave information, use an intrinsic if on at least MSVC 2012.
With GCC just use a bit of ASM, and if on MSVC 2010 or older, use the old crappy method.
This method can be removed once MSVC 2010 support is dropped and mandate at least MSVC 2012 minimum.
This won't fix the billions of errors that will happen at runtime of using the x86 emitter, but chooses to make some better coding practice choices
that enables it to compile on x86_64.
in the xIndirectVoid class, instead of using s32 for the offset, use sptr which will be 32bit or 64bit depending on architecture.
This also fixes a few alignment issues in xAddressVoid's constructors.
In EmitSibMagic we are casting a void* to s32, which won't work on x86_64, so first do a cast from sptr to s32.
Won't work on x86_64, but gets us compiling.
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.
This doesn't change anything on x86_32, but it is required on x86_64 so we don't lose precision.
Also adds an assert to see if the distance is greater than the maximum 32bit jump, which can't be hit on x86_32, but can be on x86_64.
This doesn't update the file to the latest version from mingw32 since this is already a custom header stripped from mingw32.
This also fixes the functions for x86_64(verified that it still works for both architectures) and also updates the version inside of GSdx.
Also removes a comment in the GSdx header saying that these functions are broken since they no longer are.
* Use c++11 static assert
* Properly cast to parameter template to u32 (help clang)
* Remove lots of useless ASM. Memset it only used with a size of 4096.
* check pthread_mutex_init status
The class already supports hashing 64bit values, just break it out to support it in this particular case.
From the 64bit version of the hash, this hash favours values that aren't on the extreme end.
Consdering that hashing is only really used by the class itself it isn't too big of an issue.
This define takes a pointer(s8* in this case) and grabs 16bits of data from the array it points to.
This can be done the generic way on all compilers, no need for specifying it another way.
1/ initReadFifo will be first called on the GS thread
(openGL can only be done on the GS thread)
2/ readFifo will be called on the EE thread. It is not safe too access eeMem from GS
because of memory is virtual
Fix "recent" regression (crash) on Kingdom heart and others game too.
v2: add a len check on GSState::InitReadFIFO
* avoid compilation failure when git -C isn't supported
* don't print missing dependency when EXTRA_PLUGINS isn't activated
* sed /endif(.*)/endif/ because I don't like it
* Fix some issue with the new debugger on linux
* Enable the previous tlb miss fix on the interpreter
* disable the building of po by default. It pollute too much my env.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5914 96395faa-99c1-11dd-bbfe-3dabce05a288
* use c++11 for pcsx2
* rename __rdtsc so I won't conflict with gnu version
* add a bunch of .data() method to get string data
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5913 96395faa-99c1-11dd-bbfe-3dabce05a288
Removed some missing headers from the vs2010 and vs2012 project files that were causing vs to always claim the projects were out of date.
Also removed some other entries for c/cpp files that were disabled but also missing (I did not search exhaustively).
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5763 96395faa-99c1-11dd-bbfe-3dabce05a288
memcards (mcd/mcr), Fixed issues with pad 2 (e.g. issue 1326).
These are changes which were left out at r5622, updated to pach v9 by KrossX from http://forums.pcsx2.net/Thread-Multitap-PCSX2 .
- Please report any issues with memcards corruption/incompatibilities here.
- Please feedback on multitap improvements here.
Thanks, KrossX! :)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5703 96395faa-99c1-11dd-bbfe-3dabce05a288
* remove unused variable
* move static function from h into cpp
* Initialized hw_by_page to 0xFFFFFFFF instead of -1 (number must be a positive integer)
* Use a s32 fore m_current_lsn instead of u32 (use -1 as error code)
Bonus: a couple of fix for clang compiler (doesn't mean that it fully compile with clang)
* remove useless __debugbreak on linux
* use short for 16bits atomic function
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5695 96395faa-99c1-11dd-bbfe-3dabce05a288
- Also, I slightly modified the default column widths at the memory card config panel.
- Tip: If the column widths are resized, the new widths will get saved after clicking OK/Apply, but NOT if clicking Cancel or closing the window with [X].
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5622 96395faa-99c1-11dd-bbfe-3dabce05a288
Should fix the VS2012 project files for when only VS2012 (and not VS2010) is installed.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5557 96395faa-99c1-11dd-bbfe-3dabce05a288
In this iteration, a simple read-ahead scheme is used where the next expected read begins as soon as the CDVD code calls FinishRead.
The expected improvement is close to 0 since a similar system is already in place in the core.
The next iteration should have an internal buffer, and use completion callbacks to initiate read-aheads as soon as the previous read is done, without waiting for the emulator to fetch the results of the previous operation.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5486 96395faa-99c1-11dd-bbfe-3dabce05a288
NOTE: The 'glew' project does NOT build yet, but it will have to be decided how to approach the problem (String literal too long in glew.rc)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5382 96395faa-99c1-11dd-bbfe-3dabce05a288
All UI percentage values (framerates, zoom) are saved incorrectly when the number ends with 0n (e.g. 105 is saved as 150, 307 is saved as 370, etc). The problem becomes apparent when these values are loaded from the ini file after restarting pcsx2.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5369 96395faa-99c1-11dd-bbfe-3dabce05a288
Translators note: I save previous translation but a careful review is mandatory
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5366 96395faa-99c1-11dd-bbfe-3dabce05a288
* new dev option CMAKE_BUILD_PO: control regeneration of po file. By default true in release build
* Add a hack for multiarch version of wxwidget
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4951 96395faa-99c1-11dd-bbfe-3dabce05a288
onepad: properly connect the latest button
sdl: do not compile some useless files (which fail to compile on my system btw)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4879 96395faa-99c1-11dd-bbfe-3dabce05a288
Threading VU1 took a lot of rewrites and new code to make possible (MTGS, microVU, gifUnit...), but we finally got to the point where it was feasible, and now we've done it! (so now everyone can stop complaining that pcsx2 only takes advantages of 2 cores :p).
The speedups in the games that benefit from it are great if you have a cpu with 3+ cores (generally a 10~45% speedup), however games that are GS limited can be a slowdown (especially on dual core cpu's).
The option can be found in the speedhacks section as "MTVU (Multi-Threaded microVU1)". And when enabled it should should show the VU thread-time percentage on the title bar window (Like we currently do for EE/GS/UI threads).
It is listed as a speedhack because in order for threading VU1 to have been a speedup, we need to assume that games will not send gif packets containing Signal/Finish/Label commands from path 1 (vu1's xgkick). The good news is very-few games ever do this, so the compatibility of MTVU is very high (a game that does do this will likely hang).
Note: vs2010 builds and Linux builds need to be updated to include "MTVU.h" and "MTVU.cpp".
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4865 96395faa-99c1-11dd-bbfe-3dabce05a288
Pcsx2 now has a gifUnit class which acts like the ps2's gif and executes a single gif transfer at a time (and performs path arbitration according to priority and path3 slicing).
This new code is generally a speedup for most games. Particularly VU heavy games like GoW.
This revision breaks old saved state compatibility so don't update if you wish to keep playing with your old saved states.
Leave comments if this revision fixes or breaks anything...
Message to GS Plugin authors:
This new code now uses only 1 gif callback to transfer data to the gs plugin (GSgifTransfer).
pcsx2 also is garaunteed to send full GS primitives to the plugin. So you don't have to account for partial-transfers anymore.
Thanks goes out to shadowlady who tested around 500 games for me :D
Note 1: The old gif code is still in this revision, and can be enabled by the USE_OLD_GIF macro. The old code will be deleted soon.
Note 2: This revision also enables assertion dialogs in devel builds, and changed a lot of assume cases into assertions.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4821 96395faa-99c1-11dd-bbfe-3dabce05a288
* Gsopen2 support for GS plugins => Support of the PCSX2 GS window configuration panel. Support of all PCSX2 shortcut.
* new shortcut: shift-f12 to stole the input. ZZogl shortcut must be prefixed with ctrl
* onepad: Support/fix/improve of configuration gui, multiple key, mouse/wiimote for analog joystick, dualshock3/sixaxis (basic), dual pad and experimental forcefeedback
Note: it is advices to delete OnePAD.ini
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4731 96395faa-99c1-11dd-bbfe-3dabce05a288
- Reimplemented mini/max opcodes using integer comparison operations instead of double comparison. This results in a bit less code and integer operations tend to be faster than double ops (especially on AMD cpus). Thanks to pseudonym for the idea!
- Fixed some minor bugs in mVU dev builds.
pcsx2:
- Added __fc as a shorthand macro for __fastcall since we already have __ri and __fi macros.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4713 96395faa-99c1-11dd-bbfe-3dabce05a288
cmake:
* disable fomit-frame-pointer which cause crash with gcc-4.6 (it was not enabled by default but now I'm sure people will not enable it ;) )
* Try harder to pick the 32bits configuration for wx in a 64bits environment (opensuse/fedora).
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4641 96395faa-99c1-11dd-bbfe-3dabce05a288
[0]: it needs gold linker, tuning parameter large-function-growth to 5000 and gcc-4.6.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4617 96395faa-99c1-11dd-bbfe-3dabce05a288
Details:
The major differences between install and portable modes should now be:
1. Portable mode doesn't use the registry at all.
2. Portable mode uses the folders inside pcsx2 folder as default (install mode has some default at "my documents").
3. Portable mode tries to save relative paths at the ini file where possible*.
Specifically, portable mode now allows to select custom folders for plugins, bios, etc via the standard UI, which allows using several portable pcsx2 folder sharing the same resources (bios, iso, memcards, etc).
* Relative paths where possible = the following sequence (thanks to pseudonym for the brilliant idea):
1. If the file/folder is inside pcsx2 folder, it's saved as completely relative (to pcsx2.exe)
2. Else, if the file/folder is at the same drive as pcsx2.exe, it's saved as absolute path without the drive letter (e.g. /ISO/...)
3. Else, saved as absolute path, including the drive letter (for linux, without drive letter naturally).
This allows to create a removable drive with (one or more) pcsx2 folder on it, configure all the files/folders to point to the same drive (ISOs, save states, etc), and then take this drive, plug it into another computer (where it will be assigned with a different drive letter), and everything will continue working.
Please test it if you can. Bugs here can be inconvenient...
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4507 96395faa-99c1-11dd-bbfe-3dabce05a288
* Translate more stuff in various place
* Fix issue with pot generation on linux namely empty string & quote in asm comment
* add missing key on generate_pot script. Note: it also updates the po files with latest pot modification
* regenerate new pot & po files.
Translator note: previous Tertiary pot miss half of the strings.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4359 96395faa-99c1-11dd-bbfe-3dabce05a288
* add/update various translation
* add a patch of Weimingzhi to fix wrapping issue on asian languages.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4280 96395faa-99c1-11dd-bbfe-3dabce05a288
* PCSX2 now splits settings into two files: pcsx2-ui.ini and pcsx2-vm.ini. The former is user interface clutter (window positions, confirmation dialogs, etc). The latter is virtual machine settings, speed hacks, game fixes, etc.
* Added support for PORTABLE INSTALLS!! Portable install is currently manually enabled by adding an empty "pcsx2-portable.ini" to the install location of PCSX2. Portable installs should run seamlessly from any flash drive, etc. (and will usually need Admin rights)
* PCSX2 install location and plugins folders are stored in the registry now (unless portable install is enabled, in which case no registry is used).
Notes:
* A button to enable portable installs from within PCSX2 is planned.
* NSIS installer will hopefully be upgraded to allow for a portable install option as well.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4198 96395faa-99c1-11dd-bbfe-3dabce05a288
* Moved VIF dynamic recompiler buffers to the recompilers section of PCSX2.
* Using RecompiledCodeReserve for the VIF SSE functions.
* Minor bugfixes to VirtualMemory class implementations.
* Improved error handling and error message display.
* [TODO] : implement a call to cpuShutdown() to clean up VIF unpack/SSE reserves.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4169 96395faa-99c1-11dd-bbfe-3dabce05a288
* A couple i18n fixes listed in Issue 915, relating to dialog message formatting for a couple specific messages.
DevNote:
* Added some missing operator+() stuff for the pxsFmt string formatter.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4160 96395faa-99c1-11dd-bbfe-3dabce05a288
* Simplified and improved (slightly) the savestate memory cleanup on error/cancellation.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4158 96395faa-99c1-11dd-bbfe-3dabce05a288
* resolve a namespace conflict between std::count (due to a 'using namespatce std;' directive) [debug builds only]
* switch all MSW-specific code to be unicode compliant so that unicode-only Utilities lib can be used under Windows. [should work, but needs proper testing]
* fix some properties sheets so that windows-specific DLL dependencies (common controls and UUID stuff provided by Windows) are linked automatically into wx/utils based plugins.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4140 96395faa-99c1-11dd-bbfe-3dabce05a288
* Finished up zipfile-style savestate implementation
* Simplified BaseSaveState class, and removed lots of now-unneeded code.
* Prepared the i18n stuff for a pcsx2_Dev.pot file (WIP), and sorted more stuff to pcsx2_Tertiary.pot.
git-svn-id: http://pcsx2.googlecode.com/svn/branches/wxSavestates@4091 96395faa-99c1-11dd-bbfe-3dabce05a288
* "Browse" option in recent iso menu should translate now.
* Dialogs and config panels remember their positions more reliably (when using X or alt-F4 to close PCSX2, for example).
* Preliminary language selector dialog (available in debug builds only). Will finish it up later.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4088 96395faa-99c1-11dd-bbfe-3dabce05a288
* fixed a bug that caused certain confirmation dialogs to not remember their choices, when user had non-english language.
* Added wxWidgets-provided strings for a few things, such as Next, Back, and OK / Apply / Cancel.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4076 96395faa-99c1-11dd-bbfe-3dabce05a288
* PCSX2: Added GSgetTileinfo2 and deprecated=removed GSgetTitleInfo
* GSdx: moved to the new GSgetTitleInfo2
* New PCSX2 with new GSdx will have the new functionality, all other combos remain with old functionality.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4073 96395faa-99c1-11dd-bbfe-3dabce05a288
* Added logging of host operating system and physical ram to startup.
* Removed "PhysicalCores" stuff from both x86emitter and startup logs -- physical cores is losing its relevance with all the new AMD and Intel chip designs.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4048 96395faa-99c1-11dd-bbfe-3dabce05a288
* Basic savestate loading/saving working now (needs testing).
* No support for screenshots embedded into the savestate (yet).
git-svn-id: http://pcsx2.googlecode.com/svn/branches/wxSavestates@4043 96395faa-99c1-11dd-bbfe-3dabce05a288
* PCSX2 uses significantly less memory when starting.
* Overall memory use reduced (mildly for some games, significantly for most).
* EE and IOP main memory are now fixed at 0x20000000 and 0x24000000 -- useful when using external cheat apps.
* Properly implemented the 'Shutdown' menu option -- Shutdown now unloads the entire PS2 virtual machine and reduced PCSX2's memory footprint to bare minimums.
* Some more meaningful errors for when memory is a problem (out of memory, low virtual memory, etc).
* Bugfix for pxsFmt when formatting long/large strings (over 1k)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4029 96395faa-99c1-11dd-bbfe-3dabce05a288
* Removed some missing / obsolete files from codeblocks projects.
* Fixed a segfault on exit
* Implemented a platform-consistent pointer value string formatter (%p has no defined standard)
git-svn-id: http://pcsx2.googlecode.com/svn/branches/newHostVM@4026 96395faa-99c1-11dd-bbfe-3dabce05a288
* Applied the new RecompiledCodeReserve to the VIF recompilers (saves another 4-8mb of memory, depending on game).
* Fixed a bug in pxsFmt / FastFormatUnicode (string formatting).
* Final round of error handling cleanups.
(branch is basically ready for re-integration -- needs some testin for obvious/show stopping bugs, thanks!)
git-svn-id: http://pcsx2.googlecode.com/svn/branches/newHostVM@4025 96395faa-99c1-11dd-bbfe-3dabce05a288
* Added some bounds checking to debug builds for VTLB mappings.
* Fixed a VU mapping bug that caused boot crashing
* Fixed some startup, shutdown, and reset resource management.
git-svn-id: http://pcsx2.googlecode.com/svn/branches/newHostVM@4021 96395faa-99c1-11dd-bbfe-3dabce05a288
* Preliminary implementation for the SpatialArrayReserve class, which will be used for recompiler lookup tables (large portions of these tables are never used by many games). Will put it to use and test it soon.
* Finished implementation of TryResize method for reservations, which will be used by PCSX2 if the operating system runs low on ram.
git-svn-id: http://pcsx2.googlecode.com/svn/branches/newHostVM@3992 96395faa-99c1-11dd-bbfe-3dabce05a288
* Moved profiler management to the RecompiledCodeReserve class.
* Improved error handling some more.
* Numerous minor cleanups.
git-svn-id: http://pcsx2.googlecode.com/svn/branches/newHostVM@3991 96395faa-99c1-11dd-bbfe-3dabce05a288
* SuperVU note: SuperVU recompiler now uses two separate 8mb caches for VU0 and VU1 (needed in order to simplify/saneify the reserve/alloc stages of pcsx2 app startup).
* Added MemsetFast.inl, which houses SSE intrinsic versions of memset and memzero, for use on aligned data targets.
git-svn-id: http://pcsx2.googlecode.com/svn/branches/newHostVM@3975 96395faa-99c1-11dd-bbfe-3dabce05a288
* Security fix for Windows: Forced plugin filenames to be absolute paths, which resolves issues with windows' default path search order for DLLs, and hopefully avoids some errors for users who have installed Microsoft's Improved DLL Security patch.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3974 96395faa-99c1-11dd-bbfe-3dabce05a288
* EE and IOP recompilers are using the new RecompiledCodeReserve class.
* PS2 main memory should typically be located at 0x20000000 (code still need some cleanups)
VU0/VU1 recompilers will be implemented soon.
git-svn-id: http://pcsx2.googlecode.com/svn/branches/newHostVM@3959 96395faa-99c1-11dd-bbfe-3dabce05a288
* Convert IsoFileFormats.cpp into a class.
* Use wxFile and wxFileInputStream instead of windows/posix specific file functions.
* Added new ScopedAlloc classes, which are very simple dependency-free templates for exception-safe allocations.
* FastFormatString: Improved performance ad fixed an obscure bug.
* Drag&Drop (UI) - Improved the friendliness and responsiveness, so that PCSX2 doesn't end up tying up an explorer window while it prompts the user or issues error messages.
git-svn-id: http://pcsx2.googlecode.com/svn/branches/wxIsoFile@3934 96395faa-99c1-11dd-bbfe-3dabce05a288
* Switch microVU's cache logs to DevCon (verbose only). TODO: Make a vuPerfLog for them someday.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3841 96395faa-99c1-11dd-bbfe-3dabce05a288
* Added ToString methods to the u128 type.
* Bugfixes for the FastFormat string utilities, namely when writing UTF8 content via the UTF16 formatter.
* MSVC: Removed obsolete disabling of unsigned/signed mismatch warning (4018)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3703 96395faa-99c1-11dd-bbfe-3dabce05a288
* Includes a minor tweak to DMAC.h - removed tDMA_TADR / tDMA_MADR / etc. and replaced them with a single tDMAC_ADDR class.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3644 96395faa-99c1-11dd-bbfe-3dabce05a288
* Cleaned up trace logging and switched from C++ initializers to C-style const arrays. Kinda mixed on which I like better, but decided to go with the general rule of thumb that a bit less C++ weirdness is probably a good thing.
* Removed __assume() feature from pxFail and pxFailDev, due to the likeliness of unwanted/unexpected compiler behavior (MSVC only). To hint the compiler that code should be unreachable, explicitly use pxAssume(false).
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3643 96395faa-99c1-11dd-bbfe-3dabce05a288
* move machine optimization in the global setup. In same time use i686 instead of i486
* Also build the debug with fvisibility=hidden No reason to use it only on devel. (actually same as codeblock)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3628 96395faa-99c1-11dd-bbfe-3dabce05a288
* Now using SSE for all hardware register reads and writes (mainly MFIFO stuff) [don't expect a speedup, really -- its more of a code simplification in this case].
* [refactoring] Changed the EE Memory (vtlb) to use the u128 type instead of u64 for the 128-bit loads/stores (see mem128_t typedef)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3626 96395faa-99c1-11dd-bbfe-3dabce05a288
* Added __fi and __ri, which are abbreviations for __forceinline and __releaseinline.
* Added some static qualifiers to functions in mVU, MMI ops, and others where appropriate.
* Removed some unnecessary __fastcall qualifiers (since GCC gets funny sometimes when you combine __fastcall and inlining).
* Made _1mb, _16mb, _1gb values common to all emulation code (moved from newVif/mvu to Common.h) -- they're useful! :)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3624 96395faa-99c1-11dd-bbfe-3dabce05a288
Add 2 attributes to the interfaces functions
- externally_visible: avoid gcc to remove the function when lto is enabled
- visibility("default"): default == public... Allow to hide all others symbols: see http://gcc.gnu.org/wiki/Visibility for details
onepad:
* Remove __cplusplus define, everythings is in C
* define 2 interfaces functions with EXPORT_C_ instead of CALLBACK.
cmake:
* add recent added .h files
* add fvisibility optimization. Plugins size was reduced of ~10% much more than expected :)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3611 96395faa-99c1-11dd-bbfe-3dabce05a288