Commit graph

275 commits

Author SHA1 Message Date
Lionel Flandrin
86b6f58024 Added tests for RAM access 2016-03-01 16:59:17 +01:00
Lionel Flandrin
84e7fff666 Fix the cdimage submodule URL to use https instead 2016-03-01 16:34:22 +01:00
Lionel Flandrin
b7014b6737 Support reading from CD-ROM XA mode 2 form 2 tracks
This seems buggy (since we don't retrieve the entire sector data) but
Spyro does just that during the intro sequence. Maybe it's caused by
an other emulation bug or maybe it's really supposed to do that. Needs
more investigating. At any rate a warning is displayed when this code
is triggered.
2016-03-01 01:32:57 +01:00
Lionel Flandrin
553de07b54 Use the cdimage crate to handle CD operations 2016-02-28 14:32:08 +01:00
Lionel Flandrin
565ee982c6 Minor cleanup in CPU code 2016-02-27 20:13:50 +01:00
Lionel Flandrin
533327c453 Add chained getters to access members of the interconnect through the CPU 2016-02-07 18:40:27 +01:00
Lionel Flandrin
dc731c2a05 Box the SPU RAM to avoid overflowing the stack 2016-01-27 17:43:49 +01:00
Lionel Flandrin
a16dc1a9c3 Convert Rustation into a library, remove all the SDL2 and OpenGL code
The OpenGL code has been ported to the rustation-libretro repository.
2016-01-27 17:40:34 +01:00
Lionel Flandrin
910c54cd8e Cleanup in OpenGL code 2015-12-11 18:55:11 +01:00
Lionel Flandrin
5fe14bab47 Rewrite image load code to use texelFetch 2015-12-11 13:42:00 +01:00
Lionel Flandrin
a61cb013a5 Replace implementation-defined "round" with "floor(x + 0.5)" in the shaders 2015-12-10 17:04:56 +01:00
Lionel Flandrin
b3e7626c5c Implement 24bit display mode 2015-12-10 16:20:47 +01:00
Lionel Flandrin
a5fc33dfe8 Cleanup command fragment shader 2015-12-10 11:32:30 +01:00
Lionel Flandrin
d92bee7e0f Implement dithering 2015-12-09 22:00:27 +01:00
Lionel Flandrin
1a4ec007ac Updated README 2015-12-09 21:58:26 +01:00
Lionel Flandrin
690ccc3aaf Implement texturing in the OpenGL renderer
No semi-transparency or mask bit support yet.
2015-12-09 21:13:33 +01:00
Lionel Flandrin
44b6fc3703 Use linear interpolation for the VRAM overlay
Fix texture coordinates: the last line wasn't displayed.
2015-12-05 01:17:41 +01:00
Lionel Flandrin
38db20d091 Implemented GPU image loading into the VRAM
Texturing itself is not implemented yet but it's a step in the right
direction...
2015-12-05 00:07:49 +01:00
Lionel Flandrin
bea980fff4 Implement indirect rendering and basic video output
Instead of drawing directly to the screen we first render the entire
framebuffer to a texture and once per frame we display the visible
part of the framebuffer on the screen.
2015-12-04 21:15:21 +01:00
Lionel Flandrin
af75bd54e1 Implement CDROM command GetParam 2015-11-28 00:30:30 +01:00
Lionel Flandrin
50f4bf4baa Implement polyline draw commands in the GPU
Refactor GP0 handling code to use method pointers for dispatch. Makes
it easier to handle command with a variable number of arguments like
polylines and image loads.
2015-11-25 22:25:01 +01:00
Lionel Flandrin
b237445e41 Implement 16x16 monochrome rectangle GPU command 2015-11-25 22:22:26 +01:00
Lionel Flandrin
af79556cf6 Added variation for NA disc license string (found in Rayman) 2015-11-25 00:13:03 +01:00
Lionel Flandrin
b1c36768f8 Support reading from the SPU main, CD and EXT volume register 2015-11-19 22:53:22 +01:00
Lionel Flandrin
b15cdc975d Don't crash when a game attempts to Pause an idle CDROM 2015-11-19 22:48:22 +01:00
Lionel Flandrin
8db89dc718 Support reading from the SPU VOICE_NOISE_EN register 2015-11-19 22:29:33 +01:00
Lionel Flandrin
5a92f504c8 Ignore DMA reads from the MDEC (store 0s in RAM) 2015-11-19 22:10:33 +01:00
Lionel Flandrin
7e983a5711 Added placeholder code for GPU Copy Rectangle command 2015-11-19 22:04:58 +01:00
Lionel Flandrin
a470640507 Implement CDROM command Mute 2015-11-19 21:54:28 +01:00
Lionel Flandrin
f6514ed5ad Implemented GPU line draw commands
Missing support for poly-lines.
2015-11-18 22:28:57 +01:00
Lionel Flandrin
148cbdcb33 Fix GTE sign extention issues 2015-11-17 18:43:37 +01:00
Lionel Flandrin
1f6d8f0aa9 Implement 1x1 monochrome rectangle (point) GPU command 2015-11-11 12:55:13 +01:00
Lionel Flandrin
b7a17b0150 Implement GTE command DCPL 2015-11-11 12:45:00 +01:00
Lionel Flandrin
4b4a6062ca Better handle asynchronous events in the CDROM controller
It's far from perfect but it handles processing commands while we're
reading disc sectors without missing an interrupts.

Enough to reach Spyro's start screen (NA version).
2015-11-11 00:46:38 +01:00
Lionel Flandrin
268d0b1f99 Implement GPU 8x8 rectangles and factor rectangle drawing code 2015-11-08 17:26:26 +01:00
Lionel Flandrin
d4e068ae12 Handle halfword and byte DMA register writes 2015-11-06 17:56:41 +01:00
Lionel Flandrin
a8d19c03dc Redesign memory access infrastructure
Previously for Byte and HalfWord store we would only pass around a u8
and a u16 respectively. This is not accurate when accessing certain
device registers since some devices ignore the requested access width
and may use more than the expected number of bytes from the source
register.

Now we always pass the entire register value in a u32 instead, it's up
to the device implementation to select what it needs to use depending
on the Addressable width.
2015-11-06 00:57:52 +01:00
Lionel Flandrin
29a90d1fa2 Handle halfword and byte DMA register reads 2015-11-05 23:50:44 +01:00
Lionel Flandrin
3431429c53 SPU: panic if a game enables the interrupt 2015-11-05 23:33:15 +01:00
Lionel Flandrin
a82c6e3c99 Implement CDROM command GetTN
For now we prentend all discs have only one track.
2015-11-05 23:26:43 +01:00
Lionel Flandrin
2d57d4aa12 Implement CDROM command GetLocP 2015-11-03 23:55:19 +01:00
Lionel Flandrin
f953a8e849 Implement CDROM command ReadS 2015-11-03 20:42:04 +01:00
Lionel Flandrin
e5eb95e941 Implement CDROM SetFilter command 2015-11-03 00:18:41 +01:00
Lionel Flandrin
596485af9b Execute GTE instructions even when an interrupt occurs 2015-11-01 18:27:49 +01:00
Lionel Flandrin
5bb3ff3ba8 Updated README 2015-10-30 20:19:54 +01:00
Lionel Flandrin
c4478cdb8a Rewrite GPU fill rect implementation to be more accurate 2015-10-29 23:08:36 +01:00
Lionel Flandrin
a169edabe5 Implement GTE commands DPCT and NCCS 2015-10-28 23:14:15 +01:00
Lionel Flandrin
7b04e2197b Implement GTE commands NCDT and AVSZ4 2015-10-27 23:47:34 +01:00
Lionel Flandrin
0041242d40 Fix GTE command MVMVA for IR vector 2015-10-27 23:00:38 +01:00
Lionel Flandrin
526949bab5 Add more GTE tests 2015-10-27 21:25:49 +01:00