Commit Graph

64 Commits

Author SHA1 Message Date
1185f8f6aa GPU: Implement CLUT cache (SW renderer only)
Fixes copyright screen in Shadow Master.
Fixes title splash in Castrol Honda Superbike Racing.
2024-05-02 01:03:58 +10:00
25f725c263 GPU: Fix mask for drawing area coordinates 2024-04-28 15:44:41 +10:00
417bf0c3bc DMA: Better enforce CPU runtime during linked list
and get rid of the hack for Newman Haas.
2024-04-10 20:11:23 +10:00
3ecc19c43f GPU: Fix HW readback counter 2024-03-31 14:02:44 +10:00
fa6850902a CPU: Make interrupts actually edge-triggered 2024-03-18 01:46:19 +10:00
411213d6a0 GPU: Make VRAM a global object 2024-02-29 17:00:51 +10:00
150ab8f4af GPU: Add host/hardware stats 2024-01-22 14:41:19 +10:00
79c226efff SmallString: fmt -> format, format -> sprintf 2023-12-13 21:06:15 +10:00
8446856ecf GPU/HW: Trace min/max UVs for hazards 2023-11-26 17:35:48 +10:00
184b0a1a52 Misc: Swap most C format strings for fmt 2023-09-23 14:14:52 +10:00
ac0601f408 Common: Drop String, add SmallString 2023-09-23 14:14:52 +10:00
0683b9fa0e InterruptController: Convert to namespace 2023-01-11 19:15:59 +10:00
8c7a192128 Misc: Add copyright/license statement to applicable files
Should've did this in the beginning.
2022-12-04 21:03:49 +10:00
5cef81b2a0 GPU: Reduce log level of IRQ request command 2021-10-25 17:27:41 +10:00
13b398ac46 GPU: Treat 0xFF commands as nops
Fixes slowdown in Soviet Strike and 40 Winks.
2021-04-13 13:18:51 +10:00
c03c4cb95a GPU: Elide VRAM copies when they will have no effect
Can provide a performance boost in most games because of the redundant
copy they issue once a frame.
2021-02-06 19:20:14 +10:00
0de34d7bf7 DMA: Increase precision for large transfers
Also gets rid of the delay on the GPU side for writing to VRAM (doesn't
make sense), and it's not needed since we slice the block transfers now.

Fixes palette corruption in Vigilante 8, and missing rider in
Championship Motocross 2001 featuring Ricky Carmichael.
2021-01-03 16:11:42 +10:00
8db961042a GPU: Support replacing VRAM writes with new textures 2020-12-26 00:47:03 +10:00
7b6d30a994 GPU/HW: Fix possible VRAM corruption when live switching resolutions
Mask bit was getting lost based on guest state.
2020-12-17 01:20:06 +10:00
d0e68c7163 GPU: Mask Y coordinates of VRAM transfers to 9-bits
Fixes GPU error and crash in hardware renderers in Remote Control
Dandy.
2020-12-14 01:35:53 +10:00
03d4f80883 GPU: Move enums/types into separate file 2020-11-21 18:39:04 +10:00
0726ad1275 GPU: Flush partial VRAM writes to backend VRAM 2020-11-19 00:40:02 +10:00
61a4960380 GPU: Skip zero-width or height fills 2020-10-31 14:27:57 +10:00
cacf7a7cc9 GPU: Precompute texture window expression [SAVEVERSION+] 2020-09-30 23:03:52 +10:00
3847be86b0 Fix a bunch of random warnings 2020-09-13 11:54:51 +10:00
0c1b637549 PGXP: Add initial implementation 2020-08-02 00:25:07 +10:00
b6f871d2b9 JIT optimizations and refactoring (#675)
* CPU/Recompiler: Use rel32 call where possible for no-args

* JitCodeBuffer: Support using preallocated buffer

* CPU/Recompiler/AArch64: Use bl instead of blr for short branches

* CPU/CodeCache: Allocate recompiler buffer in program space

This means we don't need 64-bit moves for every call out of the
recompiler.

* GTE: Don't store as u16 and load as u32

* CPU/Recompiler: Add methods to emit global load/stores

* GTE: Convert class to namespace

* CPU/Recompiler: Call GTE functions directly

* Settings: Turn into a global variable

* GPU: Replace local pointers with global

* InterruptController: Turn into a global pointer

* System: Replace local pointers with global

* Timers: Turn into a global instance

* DMA: Turn into a global instance

* SPU: Turn into a global instance

* CDROM: Turn into a global instance

* MDEC: Turn into a global instance

* Pad: Turn into a global instance

* SIO: Turn into a global instance

* CDROM: Move audio FIFO to the heap

* CPU/Recompiler: Drop ASMFunctions

No longer needed since we have code in the same 4GB window.

* CPUCodeCache: Turn class into namespace

* Bus: Local pointer -> global pointers

* CPU: Turn class into namespace

* Bus: Turn into namespace

* GTE: Store registers in CPU state struct

Allows relative addressing on ARM.

* CPU/Recompiler: Align code storage to page size

* CPU/Recompiler: Fix relative branches on A64

* HostInterface: Local references to global

* System: Turn into a namespace, move events out

* Add guard pages

* Android: Fix build
2020-07-31 17:09:18 +10:00
dad63f2303 GPU: Run draw clock at sysclk * 2 2020-06-13 01:40:05 +10:00
c583459c6f GPU: Replace coord/size masks with constants 2020-05-21 12:02:19 +10:00
096ed21767 GPU: Synchronize before filling/writing with interlaced rendering 2020-05-17 21:51:33 +10:00
597aa20d83 GPU: Don't panic when FIFO is non-empty with VRAM->CPU copy
This probably is not a good state to be in though, since the DMA request
gets turned off and will never resume until it's copied out.
2020-05-17 14:05:31 +10:00
759c7c52d5 GPU: Don't wedge when other commands are in FIFO with polyline
Fixes Ridge Racer Type 4.
2020-04-20 01:10:41 +10:00
610cc74cb9 GPU: Add primitive setup timing 2020-04-19 15:26:27 +10:00
1757932b3a GPU: Implement FIFO and timings
This will cause a slight performance loss. I've left some knobs in which
can be tweaked to mitigate this, but the goal is to be compatible with
all games which require them.
2020-04-19 01:17:28 +10:00
c483a78889 GPU: Implement interlaced VRAM fills 2020-04-04 00:24:37 +10:00
7f5c6f8b4f GPU/HW: Move some flush checks to command time 2020-04-04 00:10:55 +10:00
48fba47ee6 GPU: Implement skip-drawing-to-active-field for interlaced mode
Currently only in the software renderer.
2020-04-04 00:10:41 +10:00
31581763a3 GPU: Correct starting position for polyline terminator search
Fixes broken visuals in Wild Arms, probably others.
2020-04-01 20:24:57 +10:00
6bc91f2157 GPU: Polyline must have at least two vertices
Fixes GPU stream corruption in Lifeforce Tenka.
2020-03-30 13:58:39 +10:00
f13cfce34d GPU: Fix incorrect polyline terminator check
Fixes Gran Turismo 2, maybe others.
2020-03-30 00:35:39 +10:00
46239e6758 GPU: Fix GP0(1Fh) locking up emulator 2020-03-29 01:12:54 +10:00
e2e2b573c0 GPU/HW: Move drawing offset to CPU-side
Saves updating the uniform buffer.
2020-03-24 00:20:15 +10:00
b0b1fd8f1a GPU: Timing for CPU->VRAM transfers
Fixes Monkey Hero, probably others.
2020-03-01 17:14:38 +10:00
ed493c846d GPU: Don't panic on oversized VRAM copies
Fixes #31.
2020-02-29 00:19:09 +10:00
71c1e243fe Remove YBaseLib dependency 2020-01-10 13:40:53 +10:00
ffe90083d3 GPU: Refactor draw mode setting 2019-12-11 16:35:14 +10:00
45fc19fd05 GPU: Only latch texpage/mode on polygon/set draw mode
Driver seems to draw an off-screen polygon to set up the parameters,
instead of the set draw mode command.

Fixes broken sprites in Driver/Driver 2.
2019-12-02 17:04:26 +10:00
9d6d00480c GPU: Implement mask bit handling in software renderer
Still needs implementation in the hardware renderers.
2019-11-24 18:47:42 +10:00
bb4ef2103e GPU: Fix dump vram-to-cpu copies 2019-11-23 19:07:17 +10:00
49569d29aa GPU: Refactor command execution/VRAM->CPU transfers
Simpler, and handles odd sizes correctly.
2019-11-14 22:17:11 +10:00