Commit graph

240 commits

Author SHA1 Message Date
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
Lionel Flandrin
abe0521973 Implement GTE command GPL 2015-10-27 20:57:53 +01:00
Lionel Flandrin
9b42d864c2 Fix GTE DCPS command shift error. 2015-10-27 20:08:29 +01:00
Lionel Flandrin
47d435b63a Fix sign extension when reading some GTE matrix registers 2015-10-27 19:46:51 +01:00
Lionel Flandrin
9163a07d80 Implement GTE command OP 2015-10-26 23:04:29 +01:00
Lionel Flandrin
64e3110fc3 Implement GTE command CC 2015-10-26 22:50:36 +01:00
Lionel Flandrin
839d75ea4e Implement GTE command SQR 2015-10-26 22:40:37 +01:00
Lionel Flandrin
e76eba8347 Implement GTE command GPF 2015-10-26 22:35:56 +01:00
Lionel Flandrin
583ec0ef57 Implement GTE command INTPL, fix saturation error in DPCS 2015-10-26 20:37:31 +01:00
Lionel Flandrin
cde15ff0b6 Turn multisampling off, it doesn't make sense to have it on by default 2015-10-26 19:00:39 +01:00
Lionel Flandrin
717a804910 Factor GPU code for the various draw command variations. 2015-10-25 16:02:14 +01:00
Yamakaky
69d35c7805 Disable incorrect sRGB correction. 2015-10-25 08:21:27 +01:00
Lionel Flandrin
b95d951be1 Ignore reads from the SPU internal registers 2015-10-25 02:11:37 +02:00
Lionel Flandrin
cc07796ffe Implement many GPU quad and triangle rendering commands.
Implemented GP0 commands 0x2a, 0x2e, 0x34, 0x36, 0x3c, 0x3e and 0x7c.

We can now reach the first level of Crash Bandicoot (Japan), albeit
with major graphical glitches.
2015-10-25 01:55:56 +02:00
Lionel Flandrin
d203a70927 Implement partial semi-transparency support in OpenGL renderer.
For now all semi-transparent primitives are rendered with 50% opacity
regardless of the current semy-transparency mode.
2015-10-25 01:20:24 +02:00
Lionel Flandrin
5d69b912f2 Ignore DMA transfers to the SPU 2015-10-24 23:38:17 +02:00
Lionel Flandrin
605c1f1d08 Implement reading from MEM_CONTROL registers 2015-10-24 17:01:18 +02:00
Yamakaky
773e5cadfe Fix Frame::finish call missing. 2015-10-24 16:18:56 +02:00
Yamakaky
2793e4211e Migrate to glium.
I tried to follow the existing code as close as possible. It should be
equivalent.

- Remove buffer.rs, error.rs and shader.rs to use glium builtins
- Remove automatic color normalization (see
  https://github.com/tomaka/glium/issues/1313)
- Add a Vertex struct
- Modifie Color and Position
2015-10-24 15:24:40 +02:00
Lionel Flandrin
60bd49ca55 OpenGL renderer: implement drawing area using the scissor box 2015-10-22 23:22:09 +02:00
Lionel Flandrin
8ecbc96870 Fix bogus sign extension when reading the GTE XY_FIFO
Factor some code while we're at it.
2015-10-22 19:28:02 +02:00
Yamakaky
3e72aa55e5 Remove dependencie "libc", update indirect deps
Maybe it was needed before ?
2015-10-21 23:49:31 +02:00
Lionel Flandrin
831871a7b9 Support writes to the GTE RGB FIFO 2015-10-21 22:54:10 +02:00
Lionel Flandrin
ef0c12782a Implement GTE command NCCT 2015-10-21 22:49:04 +02:00
Lionel Flandrin
49c2e91f6e Implement GTE command RTPS 2015-10-21 22:01:00 +02:00
Lionel Flandrin
e477266b86 PadMemCard: Implement baud divider read 2015-10-21 21:55:11 +02:00
Lionel Flandrin
5cbfdeffb7 Implement GTE command DPCS 2015-10-21 21:51:19 +02:00
Yamakaky
db972fb051 Normalize vertex color.
Let's let opengl do it for us!
2015-10-21 20:51:03 +02:00
Lionel Flandrin
fcb21241b9 Implement most SPU shadow registers. 2015-10-21 20:37:23 +02:00
Lionel Flandrin
d758c7695e License code using the GPL-2.0+
Using mednafen's license since I ported some code straight from there.
2015-10-13 23:14:07 +02:00
Lionel Flandrin
427856c0bf Minor cleanup in gamepad code 2015-10-11 00:02:32 +02:00
Lionel Flandrin
dc7a94642e Implement CDROM "data available" status bit 2015-10-11 00:01:48 +02:00
Lionel Flandrin
774349c2dc Implement GPU GP0(0x60) command 2015-10-10 00:59:37 +02:00
Lionel Flandrin
f6762b918d Implement GTE command MVMVA 2015-10-10 00:52:56 +02:00
Lionel Flandrin
757cfc74ef Ignore writes and reads to the MDEC registers 2015-10-10 00:38:32 +02:00
Lionel Flandrin
588d4ad5bd Implemented placeholder code for CDROM audio config registers 2015-10-10 00:15:17 +02:00