Commit Graph

63 Commits (jsmoo)

Author SHA1 Message Date
Nick Krichevsky 10b9c00f72 Add beginnings of jsmoo tests, fails on 31 006B 2023-04-21 16:49:37 -04:00
Nick Krichevsky 7554438c7a Fix bug where address 0xFFFF was not accessible 2023-04-21 16:41:21 -04:00
Nick Krichevsky e42303d31a Rename Processor::run to Processor::run_instruction 2023-04-21 15:20:22 -04:00
Nick Krichevsky 6ac4ed5d7c add support for ADC with immediate 2023-04-21 12:29:55 -04:00
Nick Krichevsky e416e607df Fix bug where the zero flag wouldn't be set if the carry flag was set
I have no idea why I thought this was correct
2023-04-21 12:25:15 -04:00
Nick Krichevsky e369140dd1 Fix incorrect usage of the + operator in the 16+8 bit addition routine 2023-04-19 21:45:53 -04:00
Nick Krichevsky 34776d99f4 Satisfy clippy 2023-04-15 19:48:56 -04:00
Nick Krichevsky 3b6e611768 Test cleanup 2023-04-15 19:47:30 -04:00
Nick Krichevsky 321ab461ff Move all CPU tests into integration test directory 2023-04-15 19:00:50 -04:00
Nick Krichevsky 2caf7fe7e8 Remove non-existent F register 2023-04-15 18:31:37 -04:00
Nick Krichevsky 040133eb82 Add ADC instruction implementations 2023-04-15 18:29:39 -04:00
Nick Krichevsky 16c275282e Fix some clippy lints
Back on the horse...
2023-04-15 15:06:00 -04:00
Nick Krichevsky 70db1fe62a Reduce repetition in flags tests 2022-04-24 00:10:18 -04:00
Nick Krichevsky f0c0e818c9 Implement add A to HL instruction 2022-04-23 23:46:44 -04:00
Nick Krichevsky 733c18614c Add support for adding immediate to A register 2022-04-23 22:31:22 -04:00
Nick Krichevsky f97fbdcf9e Add rustdocs to arithutil 2022-04-23 16:43:30 -04:00
Nick Krichevsky e6b25cd54b Add overload to carry-add negatives 2022-04-23 16:37:50 -04:00
Nick Krichevsky 418a659e07 Simplify half carry checking logic 2022-04-23 13:33:59 -04:00
Nick Krichevsky dcf13061c6 Add CarryingAdd trait and integrate it in existing addition locations 2022-04-23 13:12:18 -04:00
Nick Krichevsky 807249ba18 Use proper Error type when running instructions instead of panicking immediately 2022-04-17 20:41:22 -04:00
Nick Krichevsky 16385f6387 Break out instruction running code into its own module 2022-04-16 10:59:07 -04:00
Nick Krichevsky 54cb2b8b2c Add (messy) implementation of adding 8 bit registers to others 2022-04-14 23:28:29 -04:00
Nick Krichevsky 29ccffccf7 Replace 'ld' with Load 2022-04-14 21:30:49 -04:00
Nick Krichevsky deeacd917a Simplify register access code 2022-04-14 21:22:05 -04:00
Nick Krichevsky f1e72b45de Restructure instruction enums to be categorized based on the type of instruction
This helps break up some of the long match statement in Processor::run, but construction does become a bit annoying.
2022-04-11 23:52:44 -04:00
Nick Krichevsky 16bc8833d5 Remove unused 'use' 2022-04-11 23:10:26 -04:00
Nick Krichevsky 84e680fd15 Implement stack push and pop 2022-04-11 23:10:26 -04:00
Nick Krichevsky cfebc1b912 Implement (messy) LEA for stack pointer addresses 2022-04-09 18:34:11 -04:00
Nick Krichevsky a7adfb6f90 Implement transfers between HL and SP 2022-04-09 15:43:28 -04:00
Nick Krichevsky 0667a59c6a Fix incorrect opcode for loading load then inc, add variant for loading from memory 2022-04-09 14:43:53 -04:00
Nick Krichevsky 30e45bee72 Clean up load8::transfer 2022-04-09 14:02:59 -04:00
Nick Krichevsky 034811c54e Implement loading to the stack pointer 2022-04-09 14:00:33 -04:00
Nick Krichevsky d85c7b8a98 Add support for programatically manipulating 16 bit registers 2022-04-09 13:57:50 -04:00
Nick Krichevsky ef2aff5a8e Rename Single to SingleEightBit 2022-04-09 13:47:26 -04:00
Nick Krichevsky 3803abfa1d Add support for loading 16 bit immediate values to combined registers 2022-04-09 13:35:17 -04:00
Nick Krichevsky 1795d652fa Rename 8 bit immediate load isntructions 2022-04-09 13:09:27 -04:00
Nick Krichevsky e2365aec7e Add ability to load from i/o registers relative to immediate 2022-04-08 21:10:47 -04:00
Nick Krichevsky 75235ad5e0 Refactor run.rs to reduce repetition and use proper Error types 2022-04-08 19:42:37 -04:00
Nick Krichevsky af38d1edf4 Implement load + inc/dec opcodes 2022-04-08 18:50:26 -04:00
Nick Krichevsky 9a7f1ed093 Add ability to read/write to i/o register zone 2022-04-08 17:46:54 -04:00
Nick Krichevsky 769e4bc2ab Replace panic checks with unwrap_or_else in Processor 2022-04-08 17:14:19 -04:00
Nick Krichevsky ac541822db Add Display on register traits 2022-04-08 16:38:46 -04:00
Nick Krichevsky 4e6e3f7680 Add TODO about cycles 2022-04-07 18:13:49 -04:00
Nick Krichevsky d419500279 minor style fix 2022-04-07 00:33:04 -04:00
Nick Krichevsky a7761215b5 Remove unneeded macro in transfer module
This is a lot more readable now that we can squeeze it onto one line
2022-04-07 00:32:44 -04:00
Nick Krichevsky 066189708b Move static methods for RunnableInstruction into parse package 2022-04-07 00:29:39 -04:00
Nick Krichevsky 0c53bd2c6b Break up memory parsing module 2022-04-06 23:06:03 -04:00
Nick Krichevsky ad62658980 Rustdocs 2022-04-06 22:47:38 -04:00
Nick Krichevsky 8734a7fc8e Make a macro for the transfer module 2022-04-06 22:43:38 -04:00
Nick Krichevsky e5609972c8 Move instruction parsing into its own module 2022-04-06 21:01:11 -04:00