Pushbuffer based rendering draft PR#2438
Conversation
…ountered because the NV2A uses long jump as a subroutine return. this fixed the pushbuffer data corruption in Otogi1.
quad strip is actually using the same vertex order as triangle strip, so simply comert the pritimtive type from quad strip to triangle strip is enough.
updaet CxbxUpdateHostViewport() to pick up viewport from NV2A and use scales from NV2A when in pgraph draw calls.
add BackBufferScale support
polish CxbxrImpl_Swap(), a little bit.
…1.0,1.0) in HLE patched D3DDevice_Swap(), this fixed the viewport size in final swap pass. creating new host surface for buffer surface without getting xbox backbuffer. this prevent us getting in trouble when the title doesn't have D3DDevice_GetBackBuffer()
use D3DDevice_SetTexture() trampoline in patched D3DDevice_SwitchTexture()
…se token to sync implementation with pgraph. correcting trampoline of XBTRMP(D3DDevice_SwitchTexture) since it's a __fastcall revised texture stage texture cache to store pTexture in map.
…_0, D3DDevice_SetScreenSpaceOffset() with pgraph
…h pgraph. todo: D3DDevice_SetTransform() might need to cache the matrix passed in with pMatrix.
… after sending sync token. unpatch and reshape HLE sync code in D3DDevice_LoadVertexShader() and D3DDevice_SelectVertexShader() , this could enable future HLE patched api to work directly in sync with LLE
…DDevice_SetFlickerFilter() D3DDevice_SetFlickerFilter_0() D3DDevice_SetGammaRamp() D3DDevice_SetSoftDisplayFilter()
…SelectVertexShader_4__LTCG_eax1 and update the token enum for ease of debugging.
…LTISAMPLERENDERTARGETMODE and calls SetXboxMultiSampleType()
Add HLE_PushInit(); to HLE_PushPrepare
|
ok 2 changes needed to improve compatibility (or investigated why they make a big difference) |
....in EndPush was EmuKickOff should have been EmuKickOffWait(X_D3DDevice_EndPush)
…gainst yet-unknown g_pXbox_D3DDevice.
…has a higher precedence than bitwise operator."
…butes (this might actually fix `BACKDIFFUSE` related rendering issues!)
…conversion from 'int' to 'uint8_t' requires a narrowing conversion"
…xbox::longlong_xt' to 'xbox::dword_xt' requires a narrowing conversion", by explicitly assigning to LARGE_INTEGER.QuadPart. This, because the LARGE_INTEGER union initializer assigns its argument to the dword_xt LARGE_INTEGER.u.LowPart member, instead of to the obviously intended longlong_xt LARGE_INTEGER.QuadPart. This can alternatively be solved by moving the QuadPart member above the u member, but I felt reluctant to do that, since that might cause unintentional side-effects.
… to X_D3DSurface (the code is already working with a surface)
83a3f5f to
c01bda1
Compare
argv[3] used twice instead of 3 and 4
|
Just copying in here my edited comment 1 week ago in the development thread of emulator's discord server, regarding other testers' notes (eg. Flynnyfoo) and screens on compat changes. And added in a couple combined screenshots from that dev thread & the showcase thread. Conflict: Desert Storm was playable or thereabouts for a long time. The US version was reported (on Cxbx-R's website) as playable 3 years ago. But I did remember there were model render problems. Flynnyfoo's comment:
The US version of Disney Extreme Skate Adventure was reported to be playable 2 yrs ago. Oh well. The US version of one release of Tony Hawk's Pro Skater 4 was reported to be ingame 3 years ago. So unfortunately, the game has currently regressed as Flynnyfoo stated. -- Interestingly, according to what Flynnyfoo typed in the dev thread & the screen in showcase thread, the game, Kingdom Under Fire: Heroes, might be improved to playable from its old report of in-game status for the PAL version 2 years ago. [End edited copy] Testers and coders regularly point out bugs with render timings and are trying to debug this new code. But hopefully, this PR or another replacement will eventually be merged and more fixes to come later. |
address review comment
everything in this branch crashes on startup unless there is some kind of delay here Sleep(0) also works key thing is the routine seems to try to run before everything is set
changed fog enable/ fog table code flow
FF templates, for some reason didn't take first time, comments should be fixed now
per discussion, created FloatFalse and FloatTrue, placed them more centrally in Direct3D9.h and adjusted fogEnable variable setter... also corrected spacing on one line in the FF pixel shader template
Fog move to Pixel shader
This draft PR isn't for being merged with mater.
The purpose of this draft PR is for automatically building the branch so users can download the build binaries.