Commit Graph

4097 Commits

Author SHA1 Message Date
Gregory Hainaut ed3052dea5 gsdx: remove various assertion
Useless or wrong assertion
2016-11-08 18:58:10 +01:00
Jonathan Li a283e95fed cmake: Add cdvdgigaherz and dependencies
Only new dependency is libudev.
2016-11-07 00:08:23 +00:00
Jonathan Li 16b6cc41a4 cdvdgigaherz:linux: Add config and GUI code 2016-11-07 00:08:23 +00:00
Jonathan Li 747f4dc3fe cdvdgigaherz:linux: Add initial IOCtlSrc implementation 2016-11-07 00:08:23 +00:00
Jonathan Li f13f50779c cdvdgigaherz: Export plugin interface when using gcc/clang 2016-11-07 00:08:23 +00:00
Jonathan Li 363b581926 cdvdgigaherz: ifdef Windows specific stuff 2016-11-07 00:08:23 +00:00
Jonathan Li 1573f513ce cdvdgigaherz: Move lba_to_msf to header
Also use proper inline keyword.
2016-11-07 00:08:23 +00:00
Jonathan Li ae0577bc16 cdvdgigaherz: Fix write-strings warnings
Too bad I can't change PS2Edef.h to use a const char*.

Also remove SVN_MOD ifdef from version string.
2016-11-07 00:08:23 +00:00
Jonathan Li cccf216dbb cdvdgigaherz: Use C++11 threads instead of Win32 threads 2016-11-07 00:08:23 +00:00
Jonathan Li d872c0560a cdvdgigaherz: Use unique_ptr for src 2016-11-07 00:08:23 +00:00
Jonathan Li f8f79788e4 cdvdgigaherz: Use condition variables for event waiting
Also use atomics for thread exit variables.
2016-11-07 00:08:23 +00:00
Jonathan Li f678ff8cfd cdvdgigaherz: Replace critical section with mutex 2016-11-07 00:08:23 +00:00
Jonathan Li b1850f2465 cdvdgigaherz: Move dllmain to a Windows only file 2016-11-07 00:08:23 +00:00
Jonathan Li d7866831ae cdvdgigaherz: Use Unicode on Windows 2016-11-07 00:08:23 +00:00
Jonathan Li 5917bf31c3 cdvdgigaherz: Remove old config code 2016-11-07 00:08:23 +00:00
Jonathan Li 59247c7838 cdvdgigaherz: Switch to using the new settings system
Also refactor the default drive selection and GUI code so optical drive
detection is shared.

Note: This breaks the current config, but there's only one setting
anyway.
2016-11-07 00:08:23 +00:00
Jonathan Li dce3c57e6a cdvdgigaherz: Add portable setting class
Can load/save inis (though functionality is very basic).
2016-11-07 00:08:23 +00:00
Jonathan Li 9c440ab6b7 cdvdgigaherz: Use bool return for ReadSectors*
More readable.
2016-11-07 00:08:23 +00:00
Jonathan Li fc085c1758 cdvdgigaherz: Improve IOCtlSrc::ReadSectors2048
Don't use a RAW_READ_INFO struct when only the LARGE_INTEGER member is
used. Use SetFilePointerEx which is slightly simpler and doesn't require
checking GetLastError() in some circumstances to check whether the read
has actually failed.

Also use a mutex to prevent simultaneous access from both the read
thread and the keepalive thread to prevent overlapping SetFilePointerEx
calls from causing the wrong data to be read.

And print error messages should a failure occur.
2016-11-07 00:08:23 +00:00
Jonathan Li fdd6ea3651 cdvdgigaherz: Simplify SetSpindleSpeed
Also set the max drive speed to 4x DVD and 24xCD (down from 8x DVD and
36x CD) - it seems to reduce pausing slightly since the drive doesn't
require as much time to spin up to the desired speed.
2016-11-07 00:08:23 +00:00
Jonathan Li 1834b7d0f9 cdvdgigaherz: Get disc info when disc is first ready
Also set the disc speed at the correct time - CDROM SET SPEED only stays
in effect till the disc is removed.

Also fix a memleak in CDVDopen when the drive cannot be accessed.
2016-11-07 00:08:23 +00:00
Jonathan Li 95b98c5a38 cdvdgigaherz: Use a formatted TOC instead of a raw TOC
It's simpler and provides almost the same information. The only
information that might be lost is the first track specific track type.
2016-11-07 00:08:23 +00:00
Jonathan Li 327515366f cdvdgigaherz: Don't calculate the track length
Not really necessary.

Also fix 2 off-by-ones.
2016-11-07 00:08:23 +00:00
Jonathan Li 1f60e3101e cdvdgigaherz: Reduce disc info ioctl calls
It's rather unnecessary to use the same ioctls multiple times per disc
when the info returned doesn't change. Just use each ioctl once and
read/calculate all the necessary info all at onace.

This also fixes an issue where the IOCTL_DVD_START_SESSION ioctl is
repeatedly used if the returned session ID is 0. The previous code
assumed that 0 was not a valid session ID and would repeatedly use the
ioctl to obtain a non-zero session ID. However, 0 is a valid session ID,
and it seems IOCTL_DVD_START_SESSION can repeatedly return a 0 session
ID even if the corresponding IOCTL_DVD_END_SESSION has not been called.
In our case, a DVD session is only necessary for DVD detection and
reading the physical format information. This fix seems to alter drive
speed behaviour.
2016-11-07 00:08:23 +00:00
Jonathan Li f8e474a1c5 cdvdgigaherz: s/device/m_device/ 2016-11-07 00:08:23 +00:00
Jonathan Li 8f11049c9f cdvdgigaherz: Remove non-SPTI raw sector reading code
There doesn't seem to be any issues calling CreateFile with
GENERIC_WRITE access (which is necessary for SPTI) on a standard user
account, so the SPTI code should work in all cases.
2016-11-07 00:08:23 +00:00
Jonathan Li f314c2a4d9 cdvdgigaherz: Simplify Q subchannel relative offset calculation
That way there's no need to calculate the track length for each track.
2016-11-07 00:08:23 +00:00
FlatOutPS2 5d90afe648 LilyPad: Add separate bindings for each pad type (#1609)
Adds separate bindings for each of the pad types (DualShock2,
Guitar,Pop'n Music). This allows the user to change the button
configuration to better suit the Guitar and Pop'n Music pads without
messing up the bindings already setup for the DS2.

Close #1576.
2016-11-06 21:59:19 +00:00
Gregory Hainaut 5ff9e94a2e gsdx linux: align mipmapping gui option on Windows 2016-11-06 16:39:40 +01:00
Gregory Hainaut 107251e099 gsdx: sort crc game list 2016-11-06 16:30:51 +01:00
Akash 1547dd4215 GSDX-UI: Add Mipmap combobox
Mipmapping is now supported on hardware renderers thanks to Gregory. Please report any observed hardware mipmapping issues on the forums (http://forums.pcsx2.net/Thread-New-feature-Needs-testing-GSdx-HW-mode-Experimental-mipmap-support) as potentially the HW mipmap code might still have some bugs.
2016-11-05 22:19:32 +05:30
Akash 58ed49f3c9 GSDX: Clean up warnings on MSVC
* Explicitly cast w_pages and h_pages into uint32.
* Prevent signed/unsigned comparison by converting lod into unsigned integer, honestly how coud a mipmapping level be negative?
2016-11-05 10:28:04 +01:00
Gregory Hainaut 758cf25888 gsdx: wrap bp for block ptr
Fix massive flickering of Beyond Good&Evil on SW renderer (HW happily overflow)
2016-11-04 23:03:12 +01:00
Gregory Hainaut 3d65312999 gsdx hw: remove old assert
Code is working fine with all formats
2016-11-04 23:02:49 +01:00
Akash 437afbbbf3 GSDX-PCRTC: Move Saturation hack to displayrect()
Fixes custom resolution scaling on Tribes aerial assault.
2016-11-01 17:54:46 +01:00
Akash b871c6b46f GSDX-TextureCache: Generalize scaling equation
Previously the dedicated custom resolution scaling equation was ignored for the second SetScale() call, generalizing the equations will also fix the DMC scaling issue on custom resolution. Also remove unnecessary checks for null on scale factors. The possibility for having a null scale factor value only exists on custom resolution and it will only happen on cases where the output circuit isn't ready yet. So the ideal way would be to handle all the required conditions of output circuit on "m_renderer->CanUpscale()" itself.
2016-11-01 17:54:46 +01:00
Akash 055f236aa5 GSVector: Add constructor to dispatch same values 2016-11-01 17:54:46 +01:00
Gregory Hainaut aa4b2d9f3a gsdx sw: wrap GS memory
Cost ought to remain small. Worst case is 2 extra "and" operation by group of pixels in scanline renderer

I think PixelAddressN functions are mostly call in the init.
2016-11-01 13:33:11 +01:00
Pseudonym 233f66db5e Fixed effects area wrapping calculation, which was always buggy but this
wasn't evident until additional addresses were precalculated.
Not expected to improve compatibility.
2016-11-01 11:12:41 +00:00
Jonathan Li ba557e20a4 gsdx:recorder:unix: Fix thread leaking 2016-10-28 18:33:50 +01:00
Jonathan Li 7ab5cb20c8 gsdx: Don't close threads twice
CloseThread is called in the GSJobQueue destructor, so don't call it
again in the GSThread destructor.

Fixes #392, which was caused by a use after free.

Also prevents pthread_join() from being called twice for each thread
on non-Windows operating systems, which is undefined behaviour.
2016-10-28 18:33:35 +01:00
Jonathan Li bc7aa1a500 spu2-x:freebsd: Enable SDL backends
portaudio currently isn't providing me with sound, even though it did
before.
2016-10-27 22:03:49 +01:00
Jonathan Li 86a6f5d67c cdvdgigaherz: s/itob/dec_to_bcd/
There's no need to have 2 ways to convert a u8 to a binary coded
decimal. Remove the macro version.
2016-10-26 22:11:40 +01:00
Jonathan Li 852ed21e88 cdvdgigaherz: Remove no drive support
It's the same as "No disc" or having no disc in the drive.
2016-10-26 17:30:28 +01:00
Jonathan Li c023d7676a cdvdgigaherz: Remove Source base class
Also remove virtuals from IOCtlSrc.
2016-10-26 17:30:27 +01:00
Jonathan Li 9f6c6d9917 cdvdgigaherz: Don't use GetFileSizeEx to get disk size
It doesn't seem to work for disks, and IOCTL_DISK_GET_LENGTH_INFO
usually succeeds instead.
2016-10-26 17:30:23 +01:00
Jonathan Li 9c643ae9ca cdvdgigaherz: Remove CDVDabout and SysMessage
It's not accessible from PCSX2. More importantly, I don't want to port
it.
2016-10-26 17:30:21 +01:00
Jonathan Li fb3580efa1 cdvdgigaherz: Remove unneeded code 2016-10-26 17:30:16 +01:00
Gregory Hainaut 5dfb7d63dc gsdx: wrap gs page/block instead to skip them
Fix FMV of Thrillville when coupled with wrap_gs_mem = 1
2016-10-25 22:49:05 +02:00
Gregory Hainaut db4b4fb166 gsdx ogl: keep a separate log for sw 2016-10-25 22:00:41 +02:00
Gregory Hainaut cedc8aae44 gsdx: implement a shared memory to emulate the wrapping of the gs memory
Code can be enabled with "wrap_gs_mem = 1". Code only allow a single shared memory but
I don't think we need more anyway.

Linux only, Kernel panic expected with the HW renderer.

Fix FMV on Silent Hill 3 with the SW renderer
2016-10-25 20:29:38 +02:00
Gregory Hainaut 42b51611af gsdx: don't dump debug file if not requested 2016-10-25 17:10:57 +02:00
sudonim1 820462dbc0 Merge pull request #1635 from sudonim1/reverb
SPU2-X: Reverb rewrite
2016-10-24 17:17:48 +01:00
Gregory Hainaut e80ca0fa92 gsdx ogl: of course some driver don't work with GL_ARB_enhanced_layouts
Windows and (AMD or Intel)
2016-10-23 12:48:23 +02:00
Gregory Hainaut 885ef7a46f gsdx ogl: reduce complexity of driver detection 2016-10-23 12:43:50 +02:00
Gregory Hainaut 565cb70875 gsdx ogl: don't request arb_texture_barrier for the SW renderer
Allow[1] to use the mesa software emulated driver to test EGL.

[1] also need export MESA_EXTENSION_OVERRIDE="GL_ARB_buffer_storage"
2016-10-23 12:13:57 +02:00
Pseudonym 1668392988 SPU2-X: Mass reverb register renaming. Hopefully I didn't screw up the
cross-channel reflection registers.
2016-10-22 19:16:11 +01:00
Pseudonym 9a51820dec SPU2-X: Experimental reverb based on Dr. Hell's
http://drhell.web.fc2.com/ps1/ and/or Martin Korth's
http://problemkaputt.de/psx-spx.htm reverse engineering.
Negate final reverb output (don't know why but it's an
improvement when comparing the waveform).
2016-10-22 19:16:11 +01:00
Gregory Hainaut 01f0f436ac gsdx linux replayer: allow to repack gs dump
linux_replay = -N will save N first frames to a new gs dump

Save disk space & debug time
2016-10-22 13:22:28 +02:00
Gregory Hainaut 99c43881df gsdx egl: report an error if we fail to bind the openGL API
It seems Nvidia added openGL support in 355 (whereas I have 352 on debian).

I don't know the status on AMD.
2016-10-22 13:22:28 +02:00
Gregory Hainaut d4a163e9cc spu2: improve format consistency 2016-10-22 13:22:28 +02:00
Pseudonym 1f44c4be2f SPU2-X: PSX games should be able to read ENDX correctly now, which is
important functionality for many sound engines.
Fixed two other obvious errors in the psx compatibility merge, probably
inconsequential.
2016-10-20 04:17:03 +01:00
Gregory Hainaut 8fdf973e66 gsdx glsl: add basic support of GL_ARB_enhanced_layouts (GL4.4)
Hardcode location of interface to the location 0. If I understand the
spec correctly (unlikely), variable in interface will get successive
location.

Goal is to reduce driver work. Instead to compute some location based on
name matching approach (and silly validation), the driver can now use
static allocation.

Tests on future Mesa 13 are welcome
2016-10-19 23:03:39 +02:00
Gregory Hainaut b1f2d27ddf gsdx: move Haunting Ground CRC to dx level 2016-10-19 21:10:44 +02:00
Gregory Hainaut 264b764d6e gsdx tc: improve haunting ground hack to remove the bloom effect
Just clear the buffer. The generic solution will be a copy from buffer A
to buffer B But it requires
1/ a big buffer A (otherwise it would overflow)
2/ a line width rescaling (+ the upscaling mess support)
2016-10-19 19:31:32 +02:00
Gregory Hainaut c2cf8e528c gsdx ogl: tekken5: only trigger channel effect shader when frame buffer is a single page
Fix missing model regression.
2016-10-17 19:34:55 +02:00
Clang Format 604d3bac3c clang format: set SpacesBeforeTrailingComments to 1 2016-10-16 21:42:31 +02:00
Akash 8945ace3f7 GSDX-UI: Remove Trilinear options at some cases
Currently the Trilinear option only works on OpenGL. Remove it from combobox when other renderers are used.
2016-10-16 17:36:30 +01:00
Akash 45be4626f6 GSDX: Add an enum for texture filtering
Also re-order the combobox to make it look consistent with the tooltip description.
2016-10-16 17:36:30 +01:00
Gregory Hainaut cc4cc342c2 gsdx hw: add a special sub target invalidation for haunting ground
Fix a wrong blending/blooming

Based on CRC to reduce impact on others games (speed)
2016-10-16 17:32:57 +02:00
Gregory Hainaut 31248da3d1 gsdx sw: Fix 16 bits date test on SSE build
AVX Builds were fixed in this commit a1a842b07f
2016-10-16 16:48:23 +02:00
Gregory Hainaut defdd27987 gsdx: set m_nativeres to true in replayer
Otherwise you can't compare draw call between native and upscaled
2016-10-16 16:48:23 +02:00
Robert Neumann f5e096a66f spu2x: indicate pitch modulation and noise enabled status in the visual debugger 2016-10-16 14:15:12 +02:00
Gregory Hainaut c284459382 gsdx tc: allow to search old depth/color in texture cache
But give higher priority to recent buffer.

Fix cut scene issue in Jak II (and potentially various game when EE/VU hacks are used)
2016-10-15 18:08:00 +02:00
Gregory Hainaut 7bb201a1d2 gsdx tc: move code to allow to lookup an older target if none was found
Next step is to enable it by uncommenting line 452
2016-10-14 22:03:29 +02:00
Gregory Hainaut 24684033ca gsdx: enable clut_load_before_draw option on Harley Davidson (CRC hack)
At least the game is good until we find how the HW really behave
2016-10-14 20:47:18 +02:00
Gregory Hainaut 2c0a4ac906 gsdx ogl: add an extra debug log level
Avoid too much log
2016-10-14 20:46:58 +02:00
Gregory Hainaut 3c30db965d gsdx gui: add a combo box on linux (below Interlace)
3 states are off/half/full. I'm too lazy to create a better combo box.

The hack option will be removed when Windows GUI is ready
2016-10-14 19:26:58 +02:00
Gregory Hainaut 37a1230c01 gsdx: reduce code duplication for key event 2016-10-14 19:26:58 +02:00
Gregory Hainaut a4658eac24 gsdx hw: allow overlapping of texture (alpha) and framebuffer (RGB)
Fix HUD on Berserk

v2: use fbmask instead of hacking the target format to 24 bits.
2016-10-14 19:26:27 +02:00
Gregory Hainaut 25e76d0564 gsdx ogl: use an invalid value for stencil state
Fix shadow in WWE Smackdown Vs Raw 2006
2016-10-14 19:01:18 +02:00
Gregory Hainaut 51c64fcbe6 gsdx sw: trick GetFeedbackOutput to handle basic merge loopback
It is enough for Xenosaga.
2016-10-14 18:13:20 +02:00
Gregory Hainaut deb2ed3d09 gsdx ogl: reimplement merge circuit to support feedback write 2016-10-14 18:13:20 +02:00
Gregory Hainaut 06055add5c gsdx merge: get a new buffer for the feedback write 2016-10-14 18:13:20 +02:00
Gregory Hainaut 317a464278 gsdx shader: RGB => YUV conversion
Required for write feedback emulation
2016-10-14 18:13:20 +02:00
Jason Brown 6ef5607d99 gsdx shader: add a shader to render text for OSD
Gregory: code extracted from the OSD PR to reduce conflict
2016-10-14 18:13:20 +02:00
Jason Brown d84d30fe87 gsdx: Add color component to OGL shaders 2016-10-14 18:13:20 +02:00
Gregory Hainaut 7ca9ca9465 gsdx: new parameter for merge virtual function
* Add full PMODE register to replace slbg/mmod
* Add full EXTBUF register (will allow to emulate write feedback)
* Add a third source (which will actually be the destination of the
  write feedback)
2016-10-14 18:13:20 +02:00
FlatOutPS2 357dcdb55e GSdx: Move alpha stencil hack back to original location
Avoids skipping the alpha stencil hack.
2016-10-14 16:36:17 +02:00
Gregory Hainaut fbf7ccbdda gsdx: by default new will throw std::bad_alloc
So catch/use it and don't bother with GSDXErrorOOM
2016-10-13 20:44:59 +02:00
Gregory Hainaut c440c7c93a gsdx gui: update the filter combox box with new trilinear options
OpenGL only

v2: update setting tooltip based on turtleli feedback
2016-10-13 20:16:38 +02:00
Gregory Hainaut 5ced9c1f19 gsdx mipmap:ogl: plug trilinear/mipmap2 option
mipmap option 3. Actually maybe a separate tri-linear option will be better

m_mipmap == 2 => use manual PS2 trilinear/mipmap
Otherwise
m_filter == 3 => always use full automatic trilinear interpolation
m_filter == 4 => use automatic trilinear interpolation when PS2 uses mipmap
m_filter == 5 => like 4 but force bilinear interpolation inside layer
2016-10-13 20:16:38 +02:00
Gregory Hainaut c2777ff989 gsdx state: split IsMipmapActive in 2 pieces
This way we can test if a draw call requires a triliner filtering.
It will be used in next commit to implement automatic trilinear
2016-10-13 20:16:38 +02:00
Gregory Hainaut 1b9b47dd6a gsdx mipmap:ogl: add capabilities to automatically generate mipmap layer 2016-10-13 20:16:38 +02:00
Gregory Hainaut 510eccd471 gsdx mipmap: enable fully tri-linear filtering
(when mipmap > 1)
2016-10-13 20:16:38 +02:00
Gregory Hainaut a8a2db8eb1 gsdx mipmap:ogl: extend HW sampler with tri-linear filtering
v2:
* use nice enum
* use bilinear info when there is no mipmap (more accurate)
2016-10-13 20:16:38 +02:00
Gregory Hainaut 335d7f3ae5 gsdx: add a nice enum for min filter 2016-10-13 20:16:38 +02:00
Gregory Hainaut 7ea0e90678 gsdx mipmap:ogl: extend shader to support trilinear filtering 2016-10-13 20:16:38 +02:00
Gregory Hainaut d185a85a07 gsdx ogl: replace simple_sample variable by the opposite shader_emulated_sampler
It feels easier to read this way
2016-10-13 20:16:38 +02:00
Gregory Hainaut ae441e6a2c gsdx mipmap:HW: Update all valid texture layers 2016-10-13 20:16:38 +02:00