Commit Graph

139 Commits (599130bf38ee90d4c18db85237c6d9d1d291e9e9)

Author SHA1 Message Date
Nabile Rahmani 599130bf38 Updated submodule. 2018-06-27 16:02:00 +02:00
Nabile Rahmani bf58d40556 Added an IDE command for deploy. 2018-06-27 15:46:09 +02:00
Nabile Rahmani f9f2cd0250 Fixed casting on LD. 2018-06-21 20:47:29 +02:00
Nabile Rahmani 1d65c968e5 Fixed invalid casting on SRL. 2018-06-19 19:17:29 +02:00
Nabile Rahmani e17c4c1c4e Fixed Win64 not able to load 64-bit libs (msbuild needs the solution context).
Also, restore packages for posterity.
2018-06-17 14:16:14 +02:00
Nabile Rahmani 71500b5c68 Updates: don't auto-restart on Windows. 2018-06-17 13:18:05 +02:00
Nabile Rahmani 03b71a6b94 Removed unused version property. 2018-06-17 10:02:32 +02:00
Nabile Rahmani dade03d7f7 CPUADD wants these. 2018-06-17 07:47:39 +02:00
Nabile Rahmani 83f573764b VI registers. 2018-06-16 13:59:56 +02:00
Nabile Rahmani 55382b2c14 Make sure the target directory exists. 2018-06-15 07:36:44 +02:00
Nabile Rahmani 0f00baae39 - Do not check versions when switching streams.
- Manually restore execute bit on Unix.
- Use full paths everywhere instead of relying on current working directory.
- Less early returns on update operations.
- Formatting.
2018-06-15 05:28:09 +02:00
Nabile Rahmani 6a15c0ddb8 Added deploy script. 2018-06-15 00:57:38 +02:00
Nabile Rahmani e681227e27 - Fixed field masks for device state flags.
- Boot from expansion port if no cartridge is present.
2018-06-14 20:24:19 +02:00
Nabile Rahmani 22e54a2333 Basic update system, help message. 2018-06-12 04:23:49 +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 1520e77849 Added SDL2. 2018-06-11 11:20:52 +02:00
Nabile Rahmani 5f868004b7 RCP: Reordered and shortened memory maps. 2018-06-10 17:46:20 +02:00
Nabile Rahmani 575f68c549 Debugger: surround register contents with brackets. 2018-06-10 17:33:54 +02:00
Nabile Rahmani 6550d7d327 More country codes. 2018-06-09 20:21:54 +02:00
Nabile Rahmani a13aa374d3 Instruction: FromOpCode => From. 2018-06-09 18:56:57 +02:00
Nabile Rahmani 9762d813ba Ensure GPR[0] is zero. 2018-06-09 18:35:33 +02:00
Nabile Rahmani 40d0944418 SysAD: "value" => "data". 2018-06-09 18:31:15 +02:00
Nabile Rahmani a7972ebc0a Replaced CP0 register index abstract property by a readonly field. 2018-06-09 18:17:06 +02:00
Nabile Rahmani c15c1d0b18 Fixed exceptions not setting the correct branch delay value. 2018-06-09 18:10:39 +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 dca7725258 Refactored CP0 stuff. 2018-06-05 20:44:13 +02:00
Nabile Rahmani 05cf22619a Mapping entry formatting. 2018-06-05 17:32:59 +02:00
Nabile Rahmani 17e13ce564 FPU:
- Removed duplicate condition signal variable.
- Check for the unimplemented operation flag.
2018-06-05 17:19:02 +02:00
Nabile Rahmani be7b7c9827 Refactored flags and renamed registers. 2018-05-11 16:16:54 +02:00
Nabile Rahmani ecab40e39e Added ops. 2018-01-24 17:21:08 +01:00
Nabile Rahmani a60f8a7dbf SLT comparison is *signed*, duh. 2018-01-24 16:31:36 +01: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 9910f7ab0b Added license. 2018-01-17 18:08:30 +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 da3a886d71 Move IP to a structure. 2018-01-02 15:34:22 +01:00
Nabile Rahmani 158f01ccf9 Exception processing, interrupts, registers. 2018-01-01 18:01:59 +01:00
Nabile Rahmani 08853d495f The CPU only supports 32-bit physical addresses.
No point in keeping the result of translated addresses 64-bit.
2017-12-20 01:50:44 +01:00
Nabile Rahmani cc81d9d21d As the external agent, the RCP should define its memory maps. 2017-12-20 01:20:12 +01:00
Nabile Rahmani 71904ce63f PI. 2017-12-19 20:24:14 +01:00
Nabile Rahmani b2ea1dbdb6 Changed casing to follow naming conventions. 2017-12-18 09:10:07 +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 8905d75136 Updated boot ROM HLE:
Removed temporary and cartridge-specific register values.
2017-11-27 08:28:00 +01:00
Nabile Rahmani a6ae17a345 Use SysAD pins instead of passing maps. 2017-11-21 12:59:59 +01:00
Nabile Rahmani f20f931b12 Aesthetic. 2017-11-16 22:43:43 +01:00
Nabile Rahmani 12f287ea12 Make delay slot accessible for the debugger. 2017-11-16 11:41:46 +01:00
Nabile Rahmani 449b6ebd0c A debugger appeared. 2017-11-16 08:33:04 +01:00
Nabile Rahmani 66e5efff59 Moved members in their respective place. 2017-11-04 17:59:34 +01:00