Commit graph

240 commits

Author SHA1 Message Date
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
Lionel Flandrin
859c602d33 Make the instruction cache ignore the region bits.
It appears that the tag of the cacheline doesn't keep track of the
region.
2015-09-15 21:27:22 +02:00
Lionel Flandrin
9ab4174942 Gamepad: schedule interrupt even if it's not active.
Otherwise we might miss it if the software activates it while the
transaction is pending.
2015-09-14 18:56:40 +02:00
Lionel Flandrin
7d2827b394 Updated readme now that we have gamepad support 2015-09-12 20:46:40 +02:00
Lionel Flandrin
0f2322df8a Implemented gamepad emulation.
The timings are tweaked because it seems our emulator is too fast at
this point: the BIOS attempts to start a new request while the
previous one is still in progress. This will have to be fixed later as
we become more accurate.

Only the original digital controller is supported for now.

The frontend supports keyboard and controllers through SDL2 for input.
2015-09-12 20:34:38 +02:00
Lionel Flandrin
88c132e399 Added README 2015-09-09 22:18:21 +02:00
Lionel Flandrin
3274b4e353 Panic if a game attempts to use the dotclock as timer source
It's not implemented yet.
2015-09-02 20:54:59 +02:00
Lionel Flandrin
a26e113a51 Add support for a few GTE registers (CTC2 opcode), reach the BIOS main menu
* Added a few GPU commands used to draw the BIOS menu in SCPH-1001.
* Added placeholder code for DMA GPU read (returns 0s)
2015-08-30 17:11:20 +02:00
Lionel Flandrin
79220727b1 Add support for timer "target" interrupt 2015-08-30 17:07:38 +02:00
Lionel Flandrin
dbca7a2025 Ignore writes to the joystick and memory card controller 2015-08-29 21:59:20 +02:00
Lionel Flandrin
227c71f002 Add missing "target_irq" field when reading the timer status register 2015-08-29 00:23:37 +02:00
Lionel Flandrin
7976891a70 Implemented basic CDROM controller support.
For now I cheat by pretending that the CD tray is open. This way the
BIOS bails out and doesn't attempt to run the game.
2015-08-24 23:36:32 +02:00
Lionel Flandrin
14db23ccb7 Add temporary check to catch unhandled interrupt configs 2015-08-16 17:13:00 +02:00
Lionel Flandrin
f905862869 Added basic timer support
Only free-run mode is implemented, no interrupts.

Using the GPU's dotclock or HSync as a timer source is implemented
although it requires further testing.
2015-08-16 17:09:34 +02:00
Lionel Flandrin
1918e9dc17 Added DMA interrupt 2015-08-04 21:52:50 +02:00
Lionel Flandrin
c44449a08d Interrupt handling code: only GPU VBlank IRQ supported for now.
IRQ_STATUS and IRQ_MASK are supported, all the CPU code should be
there as well: Interrupt Enable, Interrupt Mask, Interrupt Pending
(including software interrupts, only writing to CAUSE is missing).
2015-07-23 23:22:19 +02:00
Lionel Flandrin
6de5dad543 Implement basic GPU timings 2015-07-13 19:50:48 +02:00
Lionel Flandrin
3def356091 Improve error handling in OpenGL code 2015-07-03 12:15:08 +02:00
Lionel Flandrin
f5c6f66c63 Allow BIOS selection on the command line. Recommend SCPH1001.BIN.
Fixes #1 and #2
2015-07-01 11:17:05 +02:00
Lionel Flandrin
dd90961982 Implement debugger write watchpoints 2015-06-19 23:10:32 +02:00
Lionel Flandrin
f3702f6311 Implement instruction cache 2015-05-27 21:13:36 +02:00
Lionel Flandrin
77d75c976b Don't fetch instructions like data, use a separate path.
The two paths should be different in order to handle debugging
read/write watchpoints correctly (instruction fetch shouldn't trigger
them). Later on we'll also need different paths to handle the caches
correctly.
2015-05-25 16:27:11 +02:00
Lionel Flandrin
4ebf7ae877 Debugger: Implement read watchpoints 2015-05-25 16:27:11 +02:00
Lionel Flandrin
c8ec4d62d1 Debugger: Implement breakpoints 2015-05-25 16:27:11 +02:00
Lionel Flandrin
8a5b4d2895 Debugger: Implement "step" 2015-05-25 16:27:11 +02:00
Lionel Flandrin
c962afcdb6 Implement "continue" in the debugger 2015-05-25 16:27:11 +02:00
Lionel Flandrin
137a6de830 Implement debugger memory read 2015-05-25 16:27:11 +02:00
Lionel Flandrin
f48fc15fb8 Refactor interconnect to use a generic load/store implementation
Instead of having word/halfword/byte implementations for load and
store we have only one generic version. It reduces code duplication
and actually ended up making the code run faster on my computer for
some reason.
2015-05-25 16:27:09 +02:00
Lionel Flandrin
1a4038c156 Added remote GDB support over TCP
For now only dumping registers is supported. No memory access or
breakpoints.
2015-05-25 16:26:15 +02:00