Commit graph

487 commits

Author SHA1 Message Date
Marco Satti f324ab2678 Major rework of how registers are implemented - I am testing this way after looking at the FPU source code. By making subclassed objects with overriden read/write B/H/W/D functions, we can customise how values are written. For example, any writes to the ZeroRegister128_t are now discarded. If the old way was still used, then you would need to repeat the checks, for example on FPR writes, in each instruction - this way it is all done through the FPRRegister32_t class. The downside of this is that it makes the code a bit harder to read, and there may be a (small) performance impact. 2016-08-11 00:00:25 +08:00
Marco Satti d9d0fa0fa9 Started float instructions. 2016-08-09 11:26:09 +08:00
Marco Satti da8039fbf6 Finished Mult-Add instructions. 2016-08-08 16:31:44 +08:00
Marco Satti 9280345618 Started implementing integer mult-add instructions. 2016-08-07 23:29:25 +08:00
Marco Satti f2e55aa094 Implemented Mult/Div instructions. 2016-08-07 12:50:48 +08:00
Marco Satti ca81ad3584 Begin Mult/Div implementation. 2016-08-07 10:46:40 +08:00
Marco Satti f31b234b4c Implemented all of the Integer Add/Sub instructions. (1/9 pages completed). 2016-08-06 18:54:02 +08:00
Marco Satti 30a560a96e Started implementations of R5900 instructions! :) 2016-08-05 23:00:17 +08:00
Marco Satti 17b91a34f8 Added a consolidated master list to the R5900 Impl. register (created macro to do this)... Needed it for printing! Forgot to add in the instruction as a parameter to the impl. functions.. Fixed. 2016-08-05 21:15:02 +08:00
Marco Satti 2879bc3833 A bit more structural work in preperation for all of the R5900 instruction implementations. 2016-08-05 16:16:55 +08:00
Marco Satti 774d50599c Finished adding in all of the R5900 instruction declarations from the EE Core Instruction Manual, starting to work on implementing them in the interpreter. 2016-08-05 13:17:10 +08:00
Marco Satti f452a6a4e2 Assigned all opcodes implementation index numbers, in total there are 258. 2016-08-03 22:01:19 +08:00
Marco Satti ec88152ca4 Started on a implementation register, as there is quite a lot of instructions to implement. The primary function of this file is to provide an index number which can be used in a lookup table (I am not a fan of static function pointers, which is how old PCSX2 is currently working). 2016-08-03 20:54:47 +08:00
Marco Satti bb0c1817f8 Implemented Boot ROM region & initalisation of it. 2016-08-02 23:20:05 +08:00
Marco Satti 8cc8a19046 Implemented PS2's MMU/TLB. Still need to finish up the scratchpad/cache access but the bulk of it is done. 2016-08-01 23:37:00 +08:00
Marco Satti 900246d7f8 Implemented exception handler. I haven't considered how the recompiler may interface with this (there is too much to think about at this time) so it is subject to change. 2016-07-29 22:31:02 +08:00
Marco Satti 073d9d5ab2 Implemented the branch delay slot as a state feature of the R5900... Have not dealt with this before, so a bit of trial and error. 2016-07-29 20:19:50 +08:00
Marco Satti bb07264ac8 A couple of misc/organisational changes. 2016-07-28 23:06:58 +08:00
Marco Satti 1206233d76 Reorganised directory structure - it will eventually be a large project that needs to be well organised from the beginning. 2016-07-28 20:35:05 +08:00
Marco Satti 04ee4f3320 Started implementing the FPU. 2016-07-27 18:44:49 +08:00
Marco Satti 4e943cf87d Reworked implementation of MMU - all tests pass now and it reads much better. 2016-07-26 18:10:04 +08:00
Marco Satti 22c7c90271 Heavily worked on the VM MMU again - reading into the docs, the EE memory map needs to be aligned with 16 byte boundaries - which means the page table minimum unit must be 16B... Re did it as a 2-level page table (4MB and 16B), still a few issues to sort out. Also worked on the exception handler and related components. 2016-07-25 23:51:32 +08:00
Marco Satti f19524675c Added in a couple of tests for the instruction type - seems to work well. 2016-07-22 23:23:00 +08:00
Marco Satti 4d6c3124ba Forgot to add the unit test library as a git submodule. Fixed. 2016-07-22 18:33:47 +08:00
Marco Satti c727b550dd Restructured whole project a little and added in unit testing (through GoogleTest). 2016-07-22 17:33:16 +08:00
Marco Satti 8254e89d49 Added in the VM MMU component, responsible for translating PS2 physical addresses into client virtual addresses (done via page table). Fixed up some wording and syntax. 2016-07-22 14:39:49 +08:00
Marco Satti d0baecf060 Started work on the R5900 interpreter and the MMU unit. Its likely that I will get the MMU wrong at first as it is something completely new to me. 2016-07-17 13:59:23 +08:00
Marco Satti dc1a608598 Reworked the Instruction_t class to provide functionality for R, J and I types, as you are not allowed to cast from a parent class to child class. 2016-07-15 13:05:53 +08:00
Marco Satti a0ed003c52 Changes to the structure of the emulator. Created the VMMain & components that will be used for control of the core emulation (component programming model). I believe this programming pattern is used also eg: in game engines. 2016-07-14 21:59:06 +08:00
Marco Satti a287e01c85 Added in all of the COP0 registers, using the new BitfieldRegister_t class. 2016-07-10 13:42:01 +08:00
Marco Satti 168bd6e360 Added more COP0 registers in, but about to change the way they are implemented as it is too tedious to write out each time. 2016-07-09 15:01:44 +08:00
Marco Satti a42243855b Add more COP0 registers, update readme for markdown syntax. 2016-07-08 09:58:31 +08:00
Marco Satti 0c3058b349 Added in the get/set bit range (ie: bitfields) functions into Register32_t, which will be used a lot upcoming. Also note I will focus on getting the core implemention ready, then optimise later. Started work on implementing COP0 registers. 2016-07-07 22:59:24 +08:00
Marco Satti 93de3d9269 Fixed up namespaces. Apparently VS doesnt like macros for namespaces so I have limited the nesting to 2 namespaces in order to increase visibility. 2016-07-06 22:10:04 +08:00
Marco Satti bd1c91942a First commit. Implemented parts of the EE core. 2016-07-06 20:56:06 +08:00
Marco Satti 12d66128a2 Add project files. 2016-07-06 12:07:56 +08:00
Marco Satti 5787a5b272 Add .gitignore and .gitattributes. 2016-07-06 12:07:55 +08:00