Commit graph

218 commits

Author SHA1 Message Date
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
Lionel Flandrin
6108283bd8 Support reading back the value of the RAM_SIZE register 2015-10-09 18:56:36 +02:00
Lionel Flandrin
a1a0c73d33 Implement scratchpad and RAM mirrors
Replaced Vec<u8> with Box<[u8]> in RAM and BIOS implementations to
partially address issue #7 until "placement new" is available.
2015-10-09 18:50:52 +02:00
Lionel Flandrin
3513fca203 GTE: added test for LZCR register 2015-10-08 23:59:42 +02:00
Lionel Flandrin
cc835e511c GTE: implement LZCR 2015-10-08 23:38:27 +02:00
Lionel Flandrin
b7c03fd6f2 Improve CDROM seek state machine 2015-10-08 23:12:20 +02:00
Lionel Flandrin
1c59359ff8 Implement a few more GPU gp1_get_info variations 2015-10-06 23:39:32 +02:00
Lionel Flandrin
05236c5898 Implement CD-ROM XA Mode 2 Form 2 and whole sector reads 2015-10-06 23:30:17 +02:00
Lionel Flandrin
9c45a7a6b2 Remove GPU debug code 2015-10-06 22:42:17 +02:00
Lionel Flandrin
5b45d0fe18 Implemented CDROM Demute command 2015-10-06 22:37:36 +02:00
Lionel Flandrin
60af2ce012 Implement GPU gp1_get_info(version) command 2015-10-06 22:29:11 +02:00
Lionel Flandrin
b93d587a18 Implemented CDROM Init command 2015-10-06 22:16:19 +02:00
Lionel Flandrin
04a815f993 Fix RFE instruction: duplicate the last entry in the mode stack 2015-10-06 19:25:21 +02:00
Sergey Tikhomirov
0d4eb58f51 Upgrade sdl2 to v0.9.1 2015-10-06 15:06:16 +02:00
Lionel Flandrin
32f75fe5b0 Don't immediately panic when an OpenGL function pointer can't be loaded.
If the method is required it'll panic at the use site instead.

This should fix #4
2015-10-06 14:56:53 +02:00
Lionel Flandrin
f3f2aff7c8 First GTE implementation: RTPT, NCLIP, AVSZ3 and NCDS
We can now display the PlayStation logo.

Mostly ported directly from mednafen's code since no doc out there
seems to be completely accurate.

Added a test infrastructure to compare the GTE results with the
original console.
2015-10-05 19:41:26 +02:00
Lionel Flandrin
61a253914c Ignore the CD-ROM sector header when looking for region 2015-10-01 11:18:22 +02:00
Lionel Flandrin
205a837b45 Fix warnings with newer rustc, some code cleanup. 2015-09-30 19:37:14 +02:00
Lionel Flandrin
a5ee8ccac0 Reach the first GTE command 2015-09-28 01:38:59 +02:00
Lionel Flandrin
0841d53080 Basic CDROM XA support: support reading of Mode 2 Form 1 sectors. 2015-09-27 20:18:30 +02:00
Lionel Flandrin
b3248bcd45 Rename project in Cargo.toml 2015-09-27 16:51:29 +02:00
Lionel Flandrin
1fe6d6e820 Rename project to Rustation 2015-09-19 15:56:06 +02:00
Lionel Flandrin
c328041a8b Add missing "DSR" bit to padmemcard controller status register 2015-09-16 18:41:32 +02:00