Commit graph

128 commits

Author SHA1 Message Date
Nick Krichevsky 6dce7f0ead Add SUBC jsmoo tests 2023-05-05 19:49:35 -04:00
Nick Krichevsky 6e62b632a3 Add support for SUBC 2023-05-05 00:09:47 -04:00
Nick Krichevsky 51b9ab45b4 Enable jsmoo tests for SUB 2023-05-04 23:18:13 -04:00
Nick Krichevsky b0554a098e Implement basic SUB operation 2023-05-04 23:18:13 -04:00
Nick Krichevsky c05f8c57e9 Add support for ADC (HL), A 2023-05-01 00:24:52 -04:00
Nick Krichevsky 2ade899fc6 Fix 0xF8 instruction flags 2023-05-01 00:12:17 -04:00
Nick Krichevsky c63aac5e35 Add tests for 0XF8 and 0xF9 from jsmoo 2023-05-01 00:11:43 -04:00
Nick Krichevsky 7ef858d90c Add ADC A,A support 2023-04-30 21:34:46 -04:00
Nick Krichevsky 67824138b1 Make flags field private again 2023-04-30 21:23:11 -04:00
Nick Krichevsky a593664e43 Fix bug where lower 8 bits of the F register were used
This should never happen
2023-04-30 21:13:01 -04:00
Nick Krichevsky a8ee2bc391 Add jsmoo stack push/pop tests
Fail for AF
2023-04-30 21:12:42 -04:00
Nick Krichevsky 520732e841 Merge branch 'jsmoo'
This includes the tests from the jsmoo emulator, plus the refactors that
it turned out I needed to run them
2023-04-30 19:22:53 -04:00
Nick Krichevsky e6b375ae7d Add 16 bit tests to jsmoo disabled folder 2023-04-30 19:22:43 -04:00
Nick Krichevsky 555800dbd1 Add jsmoo tests for all implemented instructions 2023-04-30 19:19:02 -04:00
Nick Krichevsky a8736052d1 Major refactor: change memory to be based on a view, rather than some slice
This fixes a problem where we couldn't read memory in a way that wraps around, like the gameboy does.
2023-04-30 19:10:32 -04:00
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