Commit graph

240 commits

Author SHA1 Message Date
Lionel Flandrin
0e1abac04e Remove debugging 2016-03-08 22:45:13 +01:00
Lionel Flandrin
23a0dffe07 tmp 2016-03-08 22:10:40 +01:00
Lionel Flandrin
c28ae6147f Store subpixel precise data in the RAM 2016-03-08 22:05:55 +01:00
Lionel Flandrin
ce289ad013 Rewrite RAM implementation to store u32s internally 2016-03-08 19:11:52 +01:00
Lionel Flandrin
e93b918243 Fix GTE tests with subpixel precision 2016-03-08 19:11:52 +01:00
Lionel Flandrin
ad37fa3813 Added generic parameter for subpixel precision in the CPU 2016-03-08 19:11:52 +01:00
Lionel Flandrin
06094e7323 Implement subpixel precision in the GTE 2016-03-08 17:10:53 +01:00
Lionel Flandrin
95c4f23006 Added "trigger_break" command to the debugger 2016-03-07 22:24:51 +01:00
Lionel Flandrin
fe5fd11416 Minor cleanup in box_array 2016-03-07 22:09:33 +01:00
Lionel Flandrin
ba1cf44f43 Move the debugger instance out of the shared state
It caused recursive borrowing of the debugger when debugging code that
needed the shared state. It's simpler to keep the both separated.
2016-03-06 23:27:59 +01:00
Lionel Flandrin
e9d991cb15 Rewrite load delay implementation to use a single set of registers
We now handle the load delay explicitly in all opcodes but we no
longer have to copy the 32 registers between `regs` and `out_regs`
after every instruction.

On my machine Spyro's start screen goes from ~220 to ~240 fps with
this modification (with vsync turned off obviously). Not huge but
noticeable.
2016-03-05 22:23:42 +01:00
Lionel Flandrin
df6984a2cd Remove oldmain.rs (leftover of the standalone version) 2016-03-05 15:07:35 +01:00
Lionel Flandrin
27cfaaf1e7 Rewrite box_array to be type-safe 2016-03-04 21:57:26 +01:00
Lionel Flandrin
07ef661a2b Added a "box_array!" macro using unsafe code to allocate arrays on the heap 2016-03-04 21:34:03 +01:00
Lionel Flandrin
5bd34be004 Fix warnings with Rust 1.7 2016-03-04 18:03:57 +01:00
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