Commit Graph

28 Commits (master)

Author SHA1 Message Date
Nabile Rahmani c89a91449e Set the MI version register to RCP v2.0. 2018-12-21 23:32:17 +01:00
Nabile Rahmani 719107d459 Renames. 2018-12-11 20:47:19 +01:00
Nabile Rahmani af652e45b4 Name the interrupt pins. 2018-12-11 19:38:35 +01:00
Nabile Rahmani a532f4945d DllMapping isn't required when following naming conventions.
https://www.mono-project.com/docs/advanced/pinvoke/#library-names
2018-11-29 09:25:10 +01:00
Nabile Rahmani 6c1253392e Hello, Angrylion RDP. 2018-11-29 05:26:46 +01:00
Nabile Rahmani 58a454f112 First pass on video output.
- Added SDL video output.
- Send VI interrupts when the currently scanned line hits the interrupt register's.
- Added some program options related to video.
2018-06-27 16:12:46 +02:00
Nabile Rahmani 03b71a6b94 Removed unused version property. 2018-06-17 10:02:32 +02:00
Nabile Rahmani 83f573764b VI registers. 2018-06-16 13:59:56 +02:00
Nabile Rahmani 4d594a6637 Turn DotN64 into a library, reference it and SDL2 for the desktop project. 2018-06-11 19:51:06 +02:00
Nabile Rahmani eb41337dce CPU: refactored control flow and load/store methods, added new ops. 2018-06-09 17:40:52 +02:00
Nabile Rahmani be7b7c9827 Refactored flags and renamed registers. 2018-05-11 16:16:54 +02:00
Nabile Rahmani 6caa80fb9a More ops. 2018-01-24 03:06:39 +01:00
Nabile Rahmani 1800179515 - Added the FPU.
- Added an exception handler for the FPU.
- Added constants for cartridges and fixed header properties.
- PIF HLE determines the console region for the saved register that's used by the OS.
- The disassembler shows CP1 opcodes.
2018-01-23 18:46:12 +01:00
Nabile Rahmani 8e076ff0ae Moved CP0.OpCode enum. 2018-01-17 17:30:01 +01:00
Nabile Rahmani 4ee50a1f7f Coprocessor, debugger, and exception stuff.
* VR4300.SystemControlUnit.cs: Implemented coprocessor operations.

* VR4300.ExceptionProcessing.cs: More exceptions.

* VR4300.Exceptions.cs: Support coprocessor ops.

* DotN64.csproj:
* VR4300.ICoprocessor.cs:

* VR4300.Instruction.cs: Implemented IEquatable to avoid boxing in
  dictionary key comparisons.
Added COPz for coprocessor ops.

* VR4300.OpCode.cs: Proper coprocessor ops.

* VR4300.cs: Added coprocessor unit support.

* Debugger.InstructionFormat.cs: (Slightly) take into account
  coprocessor ops.

* Debugger.cs: Using an instruction cursor to avoid confusion.
Fixed a case where the debugger would run a cycle despite exiting it.
Coprocessor ops aren't properly disassembled.
2018-01-17 10:34:02 +01:00
Nabile Rahmani 158f01ccf9 Exception processing, interrupts, registers. 2018-01-01 18:01:59 +01:00
Nabile Rahmani 71904ce63f PI. 2017-12-19 20:24:14 +01:00
Nabile Rahmani 17dbe71cef * VR4300.Exceptions.cs: Added a custom exception.
* VR4300.cs: Fixed SLLV/SRLV not downcasting a register source.

* Debugger.InstructionFormat.cs: Added some more formatting
  exceptions.

* Program.cs:
* Cartridge.cs:
* DotN64.csproj:
* RDRAM.cs:
* PeripheralInterface.cs:
* RDRAM.ConfigIndex.cs:
* RDRAM.ConfigRegister.cs:
* PeripheralInterface.CIC.cs:
* PeripheralInterface.CICStatus.cs:
* PeripheralInterface.DeviceState.cs:
* RealityCoprocessor.RDRAMInterface.cs:
* RealityCoprocessor.PeripheralInterface.cs:

* Nintendo64.cs: Added peripherals and rewiring.

* RealityCoprocessor.PeripheralInterface.StatusRegister.cs: Moved
  write register constants to an enum, too.

* BitHelper.cs: Better method signatures.
2017-12-18 08:50:25 +01:00
Nabile Rahmani 23b06e69b5 Huge changes (too lazy to separate).
* VR4300.SystemControlUnit.StatusRegister.cs: Removed unneeded
  value.

* VR4300.SystemControlUnit.cs: Renamed method.

* VR4300.Instruction.cs: Refactored instruction contents. Now
  individual parts can be written to as well.
It is also possible to strip an instruction to its bare opcode
  identifier, or even create one from a specified opcode, so this can
  be used as a key in a dictionary of operations.
A basic ToString implementation displays the opcode of the
  instruction.

* VR4300.OpCode.cs:
* VR4300.RegImmOpCode.cs:
* VR4300.SpecialOpCode.cs: Added opcodes.

* VR4300.cs: Unified operations into a single dictionary thanks to the
  instruction refactoring.
Added ops: JAL, SLTI, XORI, BLEZL, SB, LBU, SLT, BGEZL.

* Debugger.Command.cs: Basic display of what the command is about.

* Debugger.InstructionFormat.cs: First pass of the formatter.

* Debugger.cs: Proper disassembly of instructions. Stepping also
  displays the contents of registers.
~Infinite~ count argument for stepping/disassembling.
Refactored instruction fetch into using the CPU's SysAD bus (no need
  to manually access the N64's memory maps).

* DotN64.csproj:
* RealityCoprocessor.SignalProcessor.StatusRegister.cs:
* RealityCoprocessor.DisplayProcessor.StatusRegister.cs:
* RealityCoprocessor.RDRAMInterface.RDRAMConfigIndex.cs:
* RealityCoprocessor.RDRAMInterface.RDRAMConfigRegister.cs:

* MappingEntryExtensions.cs: Saves some typing.

* BitHelper.cs: Reusable methods.

* Nintendo64.cs: More memory maps.

* Program.cs: Minor changes.

* RealityCoprocessor.Interface.cs:
* RealityCoprocessor.AudioInterface.cs:
* RealityCoprocessor.VideoInterface.cs:
* RealityCoprocessor.SerialInterface.cs: Simplified mapping accesses.

* RealityCoprocessor.DisplayProcessor.cs: Added an actual register.
Simplified mapping accesses.

* RealityCoprocessor.MIPSInterface.cs: Added dummy version register
  read.
Simplified mapping accesses.

* RealityCoprocessor.PeripheralInterface.cs: Basic DMA.
Simplified mapping accesses.

* RealityCoprocessor.RDRAMInterface.cs: Removed constants that get set
  in the boot process.
Added RDRAM registers.
Simplified mapping accesses.

* RealityCoprocessor.SignalProcessor.cs: Better types for existing
  registers and handle status writes.
Simplified mapping accesses.
2017-12-11 15:04:53 +01:00
Nabile Rahmani 449b6ebd0c A debugger appeared. 2017-11-16 08:33:04 +01:00
Nabile Rahmani c323daf588 Moved the CPU in its own folder. 2017-11-04 16:28:09 +01:00
Nabile Rahmani ea629a6b16 Moved RCP interfaces inside itself. 2017-11-04 15:24:26 +01:00
Nabile Rahmani 59fd18ce2c Unified interfaces. 2017-10-31 12:50:00 +01:00
Nabile Rahmani d5efc12872 Added register and defaults from MAME. 2017-10-30 14:06:06 +01:00
Nabile Rahmani a605598241 More registers. 2017-10-30 12:55:01 +01:00
Nabile Rahmani d7e97d9b46 Changed target framework. 2017-10-30 10:08:44 +01:00
Nabile Rahmani 9da7b68741 - Reduced memory allocation and CPU usage by not using LINQ, foreach in hot paths and unsafe writes instead of array copies.
- 64-bit addressing in mapping entries instead of down-casting.
- Fixed cartridge field length.
- Adjusted ops.
2017-10-30 10:05:09 +01:00
Nabile Rahmani f938e58c2e Name change. 2017-10-09 08:21:31 +02:00