In GSRendererHW, reuse the method CanUseSwSpriteRender for OI_JakGames.
As in current master, 16x16 "flat" sprite draws are performed via CPU: those are palette rendering better emulated with the SwSpriteRender.
Jak games do also many 64x64 "flat" draws, but mostly for render to texture effects that are already correctly emulated in the TC, so those draws are not done via CPU (as on the contrary happens for DBZ BT games).
Improve texture cache Source objects invalidation logic taking into account overlapping with current draw.
Fixes eyes rendering for the Major in Jak 1.
Use SwSpriteRender to render sprites, which:
- fixes kaioken effect,
- fixes character outlines when upscaling,
- reduces frametime by up to 3ms with big upscaling factors.
Don't disable sparse texture by default before extension check, it will
display sparse texture always not supported. Do an ini check in
check_sparse_compatibility function instead.
Log should properly state if sparse texture is supported now.
Move Additional colclip info, dithering, FixedTEX0 to extra debug logs.
It will allow to keep track of more important stuff going on and they
can be enabled with ENABLE_EXTRA_LOG if needed.
Change context creation log type from stderr to stdout.
The behavior was verified on Dobie to be correct.
The code needs to be ported to SW renderer too to
improve rendering on SW side.
Current PR will fix plenty of games on HW renderer
that had/have zbuffer issues before.
v2. Set DepthMask to the maximum the current depth format allows.
Will properly clamp for 16bit and 24bit formats.
v3. gl: Fix uniform buffer upload/cache for VSConstantBuffer.
Add support for depthmasking to EmulateZbuffer, previous old code had
support but wasn't ported properly with the new code a few years back.
VS Constant buffer is now properly setup.
* Add Z clamping to GSdx SW mode
* Fix spacing
* Only clamp when max vertex z is greater than zfmt max
* Fix Z format switches
* Get rid of needless shuffle
* Whoops, missed a case
* Replace switches with a shift
* Disable triangle clamping for SSE2
* Implement clamping on GS Raster Interpreter
* Added SSE2 Triangle Z clamping by KrossX
* 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
- Always enable sw colclip for BLEND_NO_BAR.
Free blending and it's faster than standard hdr algo when Blending
Accuracy is disabled.
- Enable sw colclip for Safe FBMASK SW emulated.
instead of hdr mode with accumulation blend so we don't use a mix of sw
and hw blending. It is more accurate.
Test case: Superman Shadows of Apokolips, fixes shadows when blending is enabled.
- Use const to get rid of some warnings.
- Free blending and it's faster than standard hdr algo when Blending
Accuracy is disabled.
- Add assert when disabling hw blending, hw blending should only be disabled
on free/no barrier blending. D3D11 lacks other types of blending.
- Use const to get rid of some warnings.
Fast floating point behaviour can optimise out handling for special
floating point values e.g. NaNs. As GSdx needs to handle NaNs in a few
places, precise floating point behaviour should be used instead.
Fixes a flashlight regression in Silent Hill 2/3 that was caused by
VS2019 optimising out NaN handling.
* spu2-x: Make portaudio an optional dependency.
v2: Fix crash in the audio settings with SDL1 and without portaudio.
* cmake: Add PORTAUDIO_API to disable portaudio support.
ePSXe for example.
There is little to no benefit in keeping it, especially when nobody was
maintaining the code. If we ever want to reintroduce it we can do so
from older branches like 1.6.
Plus if we want to integrate plugins into pcsx2 itself this is a required step.
PS1 games can ofc still be played within pcsx2.
Leave it as an ini option only.
People should never use custom resolution as it causes many issues and
many features aren't supported with it.
On linux option was removed a long time ago.
This reverts commit 99f814d376.
The assert gets triggered on Linux and so debug build can't be used properly.
Would be nice to investigate why in the first place but until then revert the
entire commit. We have checks for texture limits anyway so it shouldn't be an issue.
Previous behaviour:
Anisotropic filtering was continuing to run even with Nearest filtering.
On opengl it doesn't run on nearest filtering. The gui for both
renderers also greys out aniso when nearest is selected.
Anisotropic filtering being able to run on palette texture. This caused
to break the rendering on palette textures for games that use it.
PR behavior:
The PR corrects both of these behaviors, Aniso won't run on palette
textures as well as nearest filtering.
Test cases for observing the issues were used: Star Ocean 3, Fifa
Street.
Automatic, Force Disabled, Force Enabled.
Automatic - automatically determinate if a game needs the half screen
fix.
Force Disabled - fully disables the half bottom fix. It will help
Xenosaga games.
Force Enabled - fully enables the half bottom fix. Will help Lord of the
Rings Two Towers, Superman Shadows of Apokolips, Midnight Club 3.
Automatic, same as before, automatically enable based on height delta.
Force Disabled, fully disables the half bottom detection.
Force Enabled: Fully enables the half bottom detection.
Separate and group hack types in to Rendering and Upscaling hacks. This
should help users identify better what some hacks do and make it a
little bit easier to use.
Rename Automatic CRC Level label back to CRC Hack Level.
Rename Accurate Date label to DATE Accuracy.
Rename Accurate Blending label to Blending Accuracy.
Remove 10x and 12x upscaling options, we don't want to hit the maximum
texture size limit and cause issues so better play it safe and allow
only up until 8x upscaling.
Reword the tooltip to make it a bit more fitting with it's current
behavior.
Add all games in the list that have some sort of aggressive state.
Update anisotropic filtering, autoflush sw, sparse texture, gl blending tooltips.
Xenosaga handles the half bottom as an vertex offset instead of a buffer
offset which does the effect twice.
Half bottom won't trigger a cache miss that skip the draw because it is
still the normal buffer but with a vertices offset.
Issue #3147
Previous skip value 6 wasn't enough and caused some visual issues on the
ntsc version. Use value of 8 instead.
Issue reported by ozzie212121 on discord.
Effect is properly rendered with depth emulation, so far only Burnout
Revenge triggered the crc hack from my testing.
Triggering the draw is done when the player car crashes.
* spu2-x: Fix crash with an invalid output module.
This will default to SDLOut.
Fixes https://github.com/PCSX2/pcsx2/issues/3124
* spu2-x: Create non-empty defaults for OutputApi and SdlOutputApi.
[107/641] Building CXX object plugins/GSdx_legacy/CMakeFiles/GSdx-legacy-1.0.0.dir/stdafx.cpp.o
warning: unknown warning option '-Wno-class-memaccess'; did you mean '-Wno-class-varargs'? [-Wunknown-warning-option]
warning: unknown warning option '-Wno-packed-not-aligned'; did you mean '-Wno-over-aligned'? [-Wunknown-warning-option]
2 warnings generated.
Partially replace the Linux ini code so that it:
- works on both Windows and Linux
- is backwards compatible with older GSdx inis
- properly handles UTF-8 ini pathnames
Fix an issue with GSdx on Windows not being able to handle non-ASCII
ini pathnames.
* cdvd: Fix off-by-one end of file checks
* cdvd: Fix loading for games that attempt to read non-existent sectors
Some games will hang when attempting to read non-existent sectors.
Just do nothing when it occurs instead of erroring out.
* cdvdgigaherz: Fix loading for games that attempt to read non-existent sectors
Some games will hang when attempting to read non-existent sectors.
Just do nothing when it occurs instead of erroring out.
* cdvd: Don't write non-existent sectors to blockdump
Fixes eyes rendering in Jak games both ingame and in cutscenes.
Previous method yielded no eyes in Jak 2/3/X cutscenes.
- Generalized offset search logic with caching system (works for BW > 1
and any PSM, limited to PSMCT32 for now)
- CRC Flags mechanism for default behavior enabling in Jak games
Fixes eyes blinking in Jak games with tex in rt search
enabled.
- Target TEX0 in Source is Source TEX0 if the Source is
not build from Target, otherwise it is the Target TEX0,
allowing improved Source invalidation
Add XgKickHack gamefix for Dog of Bay., fixes corrupt textures. Issue
#3041
Add some crc ids. Big Mutha JP version(Bakusou Convoy Densetsu - Otoko
Hanamichi America Roman),
Jak X Public Beta v.1 US, Sly 3 EU Prototype.
Fixes the noise generator outputting a 4.8 kHz tone instead of white noise. The random number generator used in GetNoiseValues currently repeats every 10 samples, which is really really awful for a random number generator.
New code based on http://problemkaputt.de/psx-spx.htm#spunoisegenerator
Developed a new SW sprite render function, which is used to fix
Jak and Daxter colors in Jak games and to remove the old Jak games hack
which yielded wrong colors and clashed with TC search texture in RT function.
- Remove OO_JakGames hack for palette readback from framebuffer (slow,
clashes with texture in RT TC function, clashes with Target readback logic)
- Developed new method SwSpriteRender with CPU rendering logic
- Add OI_JakGames method using SwSpriteRender for CPU palette rendering (fast,
does not clash with texture in RT TC function, no readback required)
Bonus: fps also sees an improvement in Jak games 3-5 increase.
* Refactor build.sh. Restructure finding plugins. Remove legacy code. Add --clean-plugins option. Document --no-trans option.
Don't do setcap if dev9ghzdrk isn't being built. List dependencies if they are missing. Remove code related to zerospu2, and misc plugins we aren't building. Minor message changes.
It will allow to render the shadows properly.
Rendering pattern is:
Save RG channel with a kind of a TS (replaced by a copy in this hack),
compute shadow in RG,
save result in alpha with a TS,
Restore RG channel that we previously copied to render shadows.
Seems like Texture shuffle/depth is not handled properly in all cases so
revert the change until we fix it properly. Move it to gl level too.
Commit:
11cd6b56cd
With the sprite hack removed it was no longer possible to toggle this
hack on nvidia gpus, the toggle has been moved to Disable Safe Features.
It some issues caused by the hack in sotc, fatal frame and border offset
issues.
The adapter ID was needed to be passed before for a legacy DX9 hack which is no longer present, I figured it could cause a potential conflict when the adapter value stored at INI is outdated. (which is now a possibility after
lightning removed reference device)
The other alternative would be to just force set the INI value on dialog initialization to avoid unavailable values in the INI file, but that would be a rough for a person transitioning from debug build to release build using the reference device
option, so just removing this outdated variable for now, I rather doubt we'd be needing it in the future, in case we need adapter passing to subdialogs, the former suggestion needs to be implemented. Not implementing it right now since there's no need for it.
in vs 2019, the system xhash used by unordered_map uses Target in its template definition. pcsx2 #defines this in the r5900 and r3000 headers which leak cause a cryptic compilation error. A quick fix here is just to undef it in gamebase.h. A better fix would be to encapsulate the definition or use something more c++ to avoid the pre-processor. Add a comment to explain the _Target_ undef.
tap.h did not have string defined. I guess this was included transitively somewhere with an earlier set of system headers.
Biostools, the file is opened in text mode which causes the bios to be partially read. I'm not sure that's vs2019 specific but it's wrong in any case. Maybe the default mode parameter changed at some point. Maybe wxFile would be a better choice here rather than WxFFile because wxFile always open s in binary mode.
It is quite complex to handle rescaling on ComputeFixedTEX0
so this function is less stricter than GetSizeFixedTEX0,
therefore we remove the reduce optimization,
and we don't handle bilinear filtering which might create wrong interpolation at the border.
Fixes FFX upscaling issues on Bilinear filter during cutscenes.
comment
Remove some crc lookups for gamefix patches that share the same serial
and patch codes. It will allow game versions with different crc ids to
use the patches. Close#2654
Add JP version to automatic mipmapping.