Commit graph

275 commits

Author SHA1 Message Date
Lionel Flandrin
9848d673e3 Implemented basic tracing support.
When built with the "trace" feature the emulator now supports tracing
variables for debugging purposes.
2016-11-08 19:09:15 +01:00
Lionel Flandrin
902bc1cfbf Implement MDEC status register 2016-08-24 19:56:13 +02:00
Lionel Flandrin
e53faebef3 Fix comment 2016-08-23 14:49:17 +02:00
Lionel Flandrin
b2ba2db293 Remove useless temporary file 2016-07-14 23:36:45 +02:00
Lionel Flandrin
5d565a3ec3 Fix instruction cache and tweak timing penalties for better accuracy 2016-06-28 01:50:50 +02:00
Lionel Flandrin
626811495d Implemented GTE command NCT 2016-06-25 20:49:30 +02:00
Lionel Flandrin
6a2a16f351 Implemented GTE command NCS 2016-06-25 20:11:16 +02:00
Lionel Flandrin
d4d9ff91fd Implemented ISO9660 parsing to access the game's serial number
The serial number is based on the "BOOT" executable name in
SYSTEM.CNF.

We now base region detection on the serial number instead of the
license string.
2016-06-24 01:33:41 +02:00
Lionel Flandrin
d112e027d7 Added support for writing to GTE registers 28 and 29 2016-06-22 16:40:46 +02:00
Lionel Flandrin
e83b1ffa3e Make the is_link test for bxx more accurate 2016-06-21 17:48:48 +02:00
Lionel Flandrin
21ce9cf262 Fix BLTZAL/BGEZAL, link is unconditional 2016-06-21 02:14:57 +02:00
Lionel Flandrin
012dab8a41 Fixed SWL/SWR implementation 2016-06-20 01:58:29 +02:00
Lionel Flandrin
1e1fbc8c8b Added support for the debug UART
Added a BIOS-specific patch to enable the debug UART since it's
disabled by default.
2016-06-19 20:57:10 +02:00
Lionel Flandrin
3f3f99fd32 Cleanup travis.yml a bit more 2016-06-19 02:49:44 +02:00
Lionel Flandrin
33eebeafc8 Remove SDL2 from the travis build script 2016-06-19 02:41:51 +02:00
Lionel Flandrin
bd597680c4 Added a few more tests for LWL/LWR 2016-06-19 02:36:14 +02:00
Lionel Flandrin
a3659d04af Fix bogus LH implementation 2016-06-19 00:17:00 +02:00
Lionel Flandrin
b2a944f725 Added support for load cancelling in the CPU 2016-06-18 23:53:15 +02:00
Lionel Flandrin
885d110484 Updated tests, now all are passing 2016-06-18 00:15:28 +02:00
Lionel Flandrin
262a8c0aab Integrated psxunittests
The tests in src/cpu/tests.rs are autogenerated using
https://github.com/daeken/psxunittest/
2016-06-17 15:04:27 +02:00
Lionel Flandrin
4bb00a7fc8 Added generic interface for the Debugger, move GDB remote code to frontend 2016-06-15 19:35:37 +02:00
Lionel Flandrin
1fe17511c9 Instruction doesn't have to be public 2016-06-13 23:52:30 +02:00
Lionel Flandrin
b6b700508f Implement placeholder code for cop0r6, 7 and 8 2016-06-12 21:02:25 +02:00
Lionel Flandrin
220dfa7e5d Handle writes to cop0r13 (CAUSE register) 2016-06-12 03:39:31 +02:00
Lionel Flandrin
5accb37306 Implemented EXE loader using a Parallel I/O module 2016-06-12 01:14:13 +02:00
Lionel Flandrin
4d3822c050 Added a Cpu option to trigger the debugger on Break instructions 2016-06-12 00:12:42 +02:00
Lionel Flandrin
72f688589a Added support for Cop0r15 (Processor ID) register 2016-06-12 00:12:42 +02:00
Lionel Flandrin
bf46b91921 Implement support for modular parallel I/O 2016-06-12 00:12:42 +02:00
Lionel Flandrin
dcfb9ea1d8 Imported rust assembler code, added tests 2016-06-12 00:12:41 +02:00
Lionel Flandrin
6fe5e6227a Added a BIOS interface to patch the boot animation 2016-06-10 03:06:39 +02:00
Lionel Flandrin
ec8a57150c Fix comments for doc-tests 2016-06-09 19:45:08 +02:00
Lionel Flandrin
764fef4321 Added counters for framebuffer swaps and CPU interrupts 2016-06-09 19:19:46 +02:00
Lionel Flandrin
d563f48acf Added getters and setters for the BIOS in Interconnect 2016-06-07 23:12:55 +02:00
Lionel Flandrin
0bfd1155e1 Added interface for the frontend to reconfigure the GamePads 2016-06-07 23:12:55 +02:00
Lionel Flandrin
8cc4cdfca4 Added an interface to take and exchange the CD 2016-06-07 23:12:55 +02:00
Lionel Flandrin
2d26e5fb60 Added savestate support by implementing Encodable/Decodable
Most of the codebase implements Encodable/Decodable now, with the
exception of the BIOS, CD image and gamepads. The BIOS checksum is
stored however, in order for the frontend to know which file to load.
2016-06-07 23:12:55 +02:00
Lionel Flandrin
648a5ae4ea Rewrite most of the CD controller code to be more accurate 2016-05-24 21:58:51 +02:00
Lionel Flandrin
2975e80e2a Clear the CD controller "rx_active" flag at the end of transfer 2016-05-09 00:54:13 +02:00
Lionel Flandrin
b144a8f8d9 Document/rename some method in the CDC interface to match the datasheet 2016-05-07 22:17:59 +02:00
Lionel Flandrin
1326e3cac2 Fix typo in comment 2016-04-11 21:39:07 +02:00
Lionel Flandrin
8a1d4881ae Reset drawing offset to (0, 0) in GPU soft reset 2016-03-16 00:05:17 +01:00
Lionel Flandrin
4999195a4e Started implementing MDEC register interface
For now only resetting and matrix loading are implemented.
2016-03-13 01:32: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