Commit Graph

435 Commits

Author SHA1 Message Date
Rekai Nyangadzayi Musuka 50efe12aec chore: change how bus components are clocked 2021-06-09 19:41:10 -05:00
Rekai Nyangadzayi Musuka aa4a898a6b fix: resolve type issue with debug feature enabled 2021-06-09 13:45:12 -05:00
Rekai Nyangadzayi Musuka a904503b90 chore: document IO registers 2021-06-09 13:43:46 -05:00
Rekai Nyangadzayi Musuka 1449ed3765 fix(joypad): reimplement joypad 2021-06-07 17:23:48 -05:00
Rekai Nyangadzayi Musuka 83994e6adc chore(gui): add two windows to top menu 2021-06-07 17:05:55 -05:00
Rekai Nyangadzayi Musuka dd86330e1d fix(bus): Fix address calculation error in Echo RAM 2021-06-07 00:22:11 -05:00
Rekai Nyangadzayi Musuka d5e67568dd chore(bus): temporarily disable VRAM and OAM gates
There appears to be severe timing issues in the ppu which result in
regressions with these gates enabled. They are commented out for now,
but will be re-enabled once the timing issues in the PPU are fixed
2021-06-07 00:01:40 -05:00
Rekai Nyangadzayi Musuka e8e6c41dbe fix(dma): initial version of dma transfer now works 2021-06-06 23:57:54 -05:00
Rekai Nyangadzayi Musuka d623800005 fix: apply clippy suggestions 2021-06-06 21:30:08 -05:00
Rekai Nyangadzayi Musuka c428e934d8 fix(bus): improve guards for illlegal memory IO 2021-06-06 21:18:19 -05:00
Rekai Nyangadzayi Musuka ef4e54aba6 chore: restrict what should be pub or not 2021-06-06 20:47:11 -05:00
Rekai Nyangadzayi Musuka 878edd4082 chore: replace pub with pub(crate) when possible 2021-06-06 19:14:28 -05:00
Rekai Nyangadzayi Musuka b7b213b6b9 chore(bus): implement read/write blocks when dma is active 2021-06-05 20:53:35 -05:00
Rekai Nyangadzayi Musuka 2e42513d71 chore(cartrige): rewrite error to be more descriptive 2021-06-04 13:47:49 -05:00
Rekai Nyangadzayi Musuka 811a9f9cc9 feat(dma): implement non-working dma transfer 2021-06-04 13:47:06 -05:00
Rekai Nyangadzayi Musuka 778e04e645 feat(ppu): account for OBJ ENABLE bit in LCDC 2021-06-03 02:16:03 -05:00
Rekai Nyangadzayi Musuka aeaaee8c6c fix(ppu): fix bugs in code that grabs sprite tiles
PPU now supports 8x16 tiles
2021-06-03 02:14:59 -05:00
Rekai Nyangadzayi Musuka 138aba52c1 fix(ppu): fix integer overflow error in bg fetcher 2021-06-03 00:41:21 -05:00
Rekai Nyangadzayi Musuka 66c2b51e10 chore(ppu): fix silly spelling mistake 2021-06-03 00:16:25 -05:00
Rekai Nyangadzayi Musuka be39c249e1 chore(ppu): reimplement WindowLineCounter behaviour 2021-06-03 00:13:51 -05:00
Rekai Nyangadzayi Musuka 112454aa59 chore(ppu): reimplement fifo pixel merging logic 2021-06-02 23:32:39 -05:00
Rekai Nyangadzayi Musuka cd21c90722 chore(ppu): rename ppu/registers.rs to ppu/types.rs 2021-06-02 23:31:57 -05:00
Rekai Nyangadzayi Musuka c60bf704ff chore(cpu): Ensure Cycles is the size of an u32 2021-06-02 23:09:45 -05:00
Rekai Nyangadzayi Musuka 50ba300d23 chore(gui): ensure all windows are disabled by default 2021-06-02 23:06:20 -05:00
Rekai Nyangadzayi Musuka 86f3a897f1 feat(egui): add timer window 2021-06-02 02:44:32 -05:00
Rekai Nyangadzayi Musuka b1bf6c5868 feat: integrate eui and pixels-rs for debug info 2021-06-02 01:50:35 -05:00
Rekai Nyangadzayi Musuka 96cf705966 chore: update dependencies 2021-05-31 23:24:20 -05:00
Rekai Nyangadzayi Musuka 9ea26d4a05 chore: improve performance of match statements 2021-05-19 02:52:32 -05:00
Rekai Nyangadzayi Musuka e89e89df5b chore(ppu): refactor small part of bg fetcher 2021-05-08 15:52:43 -05:00
Rekai Nyangadzayi Musuka fd2b64496c chore(ppu): refactor reset behaviour in fetchers
and other components like window_stat and the window line counter
2021-05-08 15:35:16 -05:00
Rekai Nyangadzayi Musuka 705194eced chore(ppu): rename PixelFetcher properties 2021-05-08 15:13:26 -05:00
Rekai Nyangadzayi Musuka 5917ca203f chore(ppu): rename pixel fetcher and background fetcher variables 2021-05-08 14:31:20 -05:00
Rekai Nyangadzayi Musuka 48abc97505 chore(ppu): add bytes() method to Pixels 2021-05-08 14:06:41 -05:00
Rekai Nyangadzayi Musuka a67aec55e2 chore(ppu): rename ppu property 2021-05-05 20:25:15 -05:00
Rekai Nyangadzayi Musuka f6cf5393b6 chore(ppu): fix logic error in shifter 2021-05-05 20:24:09 -05:00
Rekai Nyangadzayi Musuka 6575eb5531 chore(bus): ensure no read-only bits are overwritten by the cpu 2021-05-05 19:23:01 -05:00
Rekai Nyangadzayi Musuka af3edde2ab chore(ppu): rearrange/reimplement some behaviour 2021-05-05 17:47:06 -05:00
Rekai Nyangadzayi Musuka abdff1251e fix: properly implement LY==LYC behaviour 2021-05-05 08:29:39 -05:00
Rekai Nyangadzayi Musuka b36f4441fa chore(ppu): change signature of get_obj_low_addr 2021-05-05 00:14:14 -05:00
Rekai Nyangadzayi Musuka 2cf85b0add fix(ppu): fix off by one error when grabbing sprite address 2021-05-05 00:01:19 -05:00
Rekai Nyangadzayi Musuka b57df3d2a7 chore(ppu): rename Pixel to Pixels
Since the Pixel struct represents 8 pixels in a 2BPP format, I felt like
the name of the type needed to represent this
2021-05-04 22:55:34 -05:00
Rekai Nyangadzayi Musuka 2a7377c724 chore(ppu): reimplement offset calculation for obj fetcher 2021-05-04 22:11:03 -05:00
Rekai Nyangadzayi Musuka 6f919acafb chore(bus): remove 0xFF7F matches from read and write_byte 2021-05-04 21:38:37 -05:00
Rekai Nyangadzayi Musuka 834b1bd9fd chore(cpu): remove branching code in instructions
also, rename a couple of methods
2021-05-04 00:50:22 -05:00
Rekai Nyangadzayi Musuka 5a59c31b72 fix(joypad): fix bug where gameboy overwrites read only bits 2021-05-03 23:37:30 -05:00
Rekai Nyangadzayi Musuka 4abb2833c4 chore: implement gamepad controls 2021-05-03 23:11:39 -05:00
Rekai Nyangadzayi Musuka 1e19854ab0 feat: reimplement joypad status register 2021-05-03 03:27:23 -05:00
Rekai Nyangadzayi Musuka 66414075da fix(ppu): fix bug when loading sprite pixels into FIFO 2021-05-01 16:22:44 -05:00
Rekai Nyangadzayi Musuka b251efcc7d fix(ppu): reimplement the pixel fifo shifter 2021-04-30 17:44:02 -05:00
Rekai Nyangadzayi Musuka 11398303b5 feat(ppu): reimplement window line counter check 2021-04-30 02:10:16 -05:00
Rekai Nyangadzayi Musuka 51252db753 chore(ppu): rename select structs 2021-04-30 00:24:22 -05:00
Rekai Nyangadzayi Musuka 6ffdd92dbb feat(ppu): implement sprite x-flip check 2021-04-30 00:20:50 -05:00
Rekai Nyangadzayi Musuka 3c680dec2f fix(ppu): reimplement OAM scan 2021-04-30 00:09:17 -05:00
Rekai Nyangadzayi Musuka 0672c7346a chore(ppu): rename select method and variables 2021-04-28 19:36:00 -05:00
Rekai Nyangadzayi Musuka 8a06fe9ff8 chore(ppu): improve code quality 2021-04-28 17:59:30 -05:00
Rekai Nyangadzayi Musuka 7620633116 chore(ppu): reimplement background/sprite fetcher state machine 2021-04-27 04:57:00 -05:00
Rekai Nyangadzayi Musuka 9003617459 chore: rename properties in bus.rs 2021-04-27 04:06:08 -05:00
Rekai Nyangadzayi Musuka 9d01b2458d chore: move ppu bitfield structs to separate file 2021-04-27 04:03:50 -05:00
Rekai Nyangadzayi Musuka 1343e8e52e chore(ppu): flatten if statement 2021-04-24 02:14:58 -05:00
Rekai Nyangadzayi Musuka 2586314f9a chore(ppu): implement IntoIterator and iter() for ObjectBuffer 2021-04-24 02:14:50 -05:00
Rekai Nyangadzayi Musuka 067049e2dd chore: rename to_byte_count to as_byte_count
using to_* and not taking ownership of self violates rust conventions
according to clippy.
2021-04-24 02:12:05 -05:00
Rekai Nyangadzayi Musuka e8f6a94fee chore(ppu): reimplement object buffer remove 2021-04-24 01:48:15 -05:00
Rekai Nyangadzayi Musuka 98af1865ee chore(ppu): reimplement the object buffer struct 2021-04-23 23:55:18 -05:00
Rekai Nyangadzayi Musuka 4ab59007f9 chore(cpu): disable logging by default 2021-04-23 23:31:16 -05:00
Rekai Nyangadzayi Musuka 6f4f872765 fix(cpu): pass SLA (HL) and SRA (HL) tests from blargg 2021-04-22 20:38:13 -05:00
Rekai Nyangadzayi Musuka 9bf10f0c7d chore(ppu): improve accuracy of sprite pixel fifo 2021-04-21 00:03:17 -05:00
Rekai Nyangadzayi Musuka d457761c3b chore(ppu): reimplement the object buffer 2021-04-20 23:39:16 -05:00
Rekai Nyangadzayi Musuka f92f4a17e0 chore(ppu): add alternate colour palette 2021-04-20 23:15:54 -05:00
Rekai Nyangadzayi Musuka c90b9ab024 fix(ppu): fix sprite buffer bug
Now, the background renders like it should and some sprites do load,
though they aren't where they're supposed to be
2021-04-20 04:26:28 -05:00
Rekai Nyangadzayi Musuka 4f4c867a63 fix(ppu): ensure better timings for sprite fetcher 2021-04-20 03:14:00 -05:00
Rekai Nyangadzayi Musuka db1b40fe2d fix(ppu): clear oam on hblank 2021-04-20 03:13:40 -05:00
Rekai Nyangadzayi Musuka 0361d04248 feat(ppu): implement broken ppu fifo renderer 2021-04-20 01:27:32 -05:00
Rekai Nyangadzayi Musuka 38460577b9 chore(ppu): move bg fetcher code into fetcher functions 2021-04-18 02:43:34 -05:00
Rekai Nyangadzayi Musuka 2acdaaeec2 chore(ppu): rename types and improve code quality 2021-04-18 01:45:09 -05:00
Rekai Nyangadzayi Musuka b43c8ac7c9 feat(cartridge): grab title from the ROM 2021-04-14 01:21:45 -05:00
Rekai Nyangadzayi Musuka cbd085c25b chore: use Default::default instead of Type::Default 2021-04-13 23:02:13 -05:00
Rekai Nyangadzayi Musuka e9f129dbee fix(ppu): move frame/pixel buffer from the stack to the heap 2021-04-13 22:55:11 -05:00
Rekai Nyangadzayi Musuka 12a51b115a feat(ppu): reimplement ppu as fifo pixel renderer 2021-04-11 02:07:25 -05:00
Rekai Nyangadzayi Musuka 5931fe95e3 feat(ppu): implement (broken) sprite renderer 2021-04-09 00:35:41 -05:00
Rekai Nyangadzayi Musuka 7425384fb1 chore: convert select base 10 constants to base 16 2021-04-08 20:32:32 -05:00
Rekai Nyangadzayi Musuka 770b081f98 feat(ppu): stub sprite attribute table 2021-04-08 20:28:30 -05:00
Rekai Nyangadzayi Musuka 23de87e482 chore: remove panics when gameboy performs certain actions 2021-04-08 19:23:29 -05:00
Rekai Nyangadzayi Musuka 41081e9cce feat(bus): implement echo RAM 2021-04-08 17:58:33 -05:00
Rekai Nyangadzayi Musuka 2733bbe6d7 feat(ppu): implement window rendering 2021-04-08 17:10:24 -05:00
Rekai Nyangadzayi Musuka e2fa72aa0e chore: remove unecessary eprintln! statements 2021-04-08 00:02:54 -05:00
Rekai Nyangadzayi Musuka cf3b79f0dc chore(cpu): move RST behaviour to a method 2021-04-07 23:05:22 -05:00
Rekai Nyangadzayi Musuka 0eb40a8109 feat: comply with the fourth individual blargg test rom 2021-04-07 22:37:33 -05:00
Rekai Nyangadzayi Musuka 067ed03de3 feat: comply with test 03 of blargg's cpu_instrs test rom 2021-04-07 20:12:05 -05:00
Rekai Nyangadzayi Musuka 6db132ad48 feat(cartridge): handle MBC-less games like tetris
TODO: This will panic whenever a write is attempted on the MBC-less
cartridge. This would be fine if games held the implicit rules given by
the hardware, however this is not the case. We will have to modify the
NoMBC implementation to ignore writes to the cartrige (while still
documenting them just in case of bugs)
2021-04-05 01:43:26 -05:00
Rekai Nyangadzayi Musuka 823e4b1e0a chore: follow rust style guides 2021-04-05 01:40:26 -05:00
Rekai Nyangadzayi Musuka 9b77d6c6c3 fix(cpu): ensure that timer, lcd and sound runs regardless of HALT 2021-04-05 01:20:18 -05:00
Rekai Nyangadzayi Musuka 9d2fbd2427 chore: remove unecessary print statements 2021-04-05 01:20:03 -05:00
Rekai Nyangadzayi Musuka 748c32c446 fix(cpu): use enums only of maintaining IME register state 2021-04-05 01:10:03 -05:00
Rekai Nyangadzayi Musuka 77c7c610d0 chore(cpu): rename ImeSet to ImeEnabled 2021-04-05 00:53:46 -05:00
Rekai Nyangadzayi Musuka a15a6a25b6 feat(cpu): properly implement EI instruction 2021-04-05 00:52:12 -05:00
Rekai Nyangadzayi Musuka 62bd88945f chore: rename a couple of interrupt instances to "int" instead of
"interrupt"
2021-04-04 01:52:53 -05:00
Rekai Nyangadzayi Musuka 7c9bff61f6 fix(ppu): add missing check for enabled interrupt 2021-04-04 01:50:49 -05:00
Rekai Nyangadzayi Musuka 777abd1c10 chore: rename some symbols 2021-04-04 01:31:31 -05:00
Rekai Nyangadzayi Musuka 4dd7a0d9ce chore: fix several clippy warnings 2021-04-04 01:19:39 -05:00
Rekai Nyangadzayi Musuka cb1bcdb859 feat(cpu): implement DAA instruction 2021-04-04 01:03:44 -05:00
Rekai Nyangadzayi Musuka 25e44f3e49 chore: fix condition when logs are printed 2021-03-27 15:07:17 -05:00
Rekai Nyangadzayi Musuka 2b05571c49 chore: rename Cycles newtype to Cycle 2021-03-27 12:10:18 -05:00
Rekai Nyangadzayi Musuka bce14348f8 feat: enable halt and rework timer registers 2021-03-27 11:56:47 -05:00
Rekai Nyangadzayi Musuka 2bf877d1ec fix(cpu): Ensure mask the high bits of the flag register
There was a bug where POP AF returned 0x1301. In this example, the A
register would be set to 0x13, and the Flag register woud be set to
0x01, which is an invalid state considering only bits 4 -> 7 of the flag
register are used. This commit masks the flag register with & 0xF0
whenever it is read or written to so that we can ensure that only the
high bits can ever be potentially set
2021-03-26 20:25:30 -05:00
Rekai Nyangadzayi Musuka 15781b3d5a fix(instructions): correct the flags being set in ADD HL, r16 2021-03-26 20:19:48 -05:00
Rekai Nyangadzayi Musuka a6d5553035 fix(cartridge): reimplement apply_rom_size_bitmask 2021-03-26 20:18:49 -05:00
Rekai Nyangadzayi Musuka a82e3d3372 feat: implement HALT behaviour
note: while the logic is there, the instruction currently does not do
anything because we don't halde it in Cpu::step(). The code that does is
currently commented out and there should be some underlying bugs still
present. Nevertheless it is a good start
2021-03-23 23:05:27 -05:00
Rekai Nyangadzayi Musuka c16f318fd1 fix: remove unnecessary allocation when loading boot rom 2021-03-23 21:21:18 -05:00
Rekai Nyangadzayi Musuka 48ac8317a8 fix(bus): fix off by one error when reading from boot rom 2021-03-23 21:01:33 -05:00
Rekai Nyangadzayi Musuka e5fb07c4d1 chore: refactor parts of instruction.rs 2021-03-23 20:22:11 -05:00
Rekai Nyangadzayi Musuka 501d93c37b chore: clean up code in one instruction 2021-03-23 18:21:59 -05:00
Rekai Nyangadzayi Musuka 1b7d778c1d chore: clean up some instruction code 2021-03-23 02:11:40 -05:00
Rekai Nyangadzayi Musuka 6f11640f24 chore: replace CALL instruction with RST in interrupt handler 2021-03-23 02:11:06 -05:00
Rekai Nyangadzayi Musuka 342e6616ac chore: improve unreachable! and panic! error messages 2021-03-22 22:33:56 -05:00
Rekai Nyangadzayi Musuka 2813b762dd chore: replace select unreachable! macros with todo! and unreachable! 2021-03-22 21:52:28 -05:00
Rekai Nyangadzayi Musuka 9301a36682 chore: remove all unwraps from the project 2021-03-22 21:48:12 -05:00
Rekai Nyangadzayi Musuka 45466a5733 feat: implement clap for cli and improve error messages 2021-03-22 21:41:22 -05:00
Rekai Nyangadzayi Musuka d7d9fd857f fix: squash bugs in cpu intrucion implementation 2021-03-21 21:16:23 -05:00
Rekai Nyangadzayi Musuka 8a1540c9e9 fix: replaced unnecessary &mut self with &self 2021-03-21 19:56:38 -05:00
Rekai Nyangadzayi Musuka dc45688e4f feat: implement timers 2021-03-21 03:03:03 -05:00
Rekai Nyangadzayi Musuka 4db6f1de6e chore: move LR35902_CLOCK_SPEED to lib.rs 2021-03-21 02:10:56 -05:00
Rekai Nyangadzayi Musuka b548610fdb chore: re-enable scrolling 2021-03-21 02:08:29 -05:00
Rekai Nyangadzayi Musuka fe586d77ac feat: stub 0xFF05 2021-03-21 02:01:19 -05:00
Rekai Nyangadzayi Musuka 15da6cb7d2 fix: squash several bugs in MBC1 implementation 2021-03-21 01:52:29 -05:00
Rekai Nyangadzayi Musuka 5a42d76f1e feat: implement LCDSTAT interrupt 2021-03-21 00:01:21 -05:00
Rekai Nyangadzayi Musuka c64417fdce fix: horizontally flip ppu so the Nin***** logo is readable 2021-03-20 23:24:06 -05:00
Rekai Nyangadzayi Musuka 7462061937 chore: be more specific with integer types 2021-03-20 22:19:55 -05:00
Rekai Nyangadzayi Musuka f78651d8d7 feat: implement programmable background palette 2021-03-20 22:19:13 -05:00
Rekai Nyangadzayi Musuka b213a6e545 feat: make 0xFF0F aware of joypad struct interrupt bool 2021-03-20 21:21:55 -05:00
Rekai Nyangadzayi Musuka 36e572b783 feat: implement Joypad register 2021-03-20 21:11:45 -05:00
Rekai Nyangadzayi Musuka fc303b6265 chore: rename "as u8" to "as Self" when implementing From Trait 2021-03-20 21:10:48 -05:00
Rekai Nyangadzayi Musuka cd0eac9d37 chore: improve code quality
Removed a lot of magic constants. Gave them descriptive variable names
2021-03-20 20:26:49 -05:00
Rekai Nyangadzayi Musuka 0f4dec8a38 feat: implement cpu timing for emulator
When running the GB Boot ROM, a garbled Nin***** logo will appear
2021-03-20 19:56:26 -05:00
Rekai Nyangadzayi Musuka d76b3b6101 chore: make Cycles::new a const fn 2021-03-20 19:55:39 -05:00
Rekai Nyangadzayi Musuka 2401cf7190 chore: implement default for cycles 2021-03-20 19:55:02 -05:00
Rekai Nyangadzayi Musuka f365633c1e fix: allow for the ppu to modify interrupt flags 2021-03-20 19:53:56 -05:00
Rekai Nyangadzayi Musuka 558f9e7c72 feat: implement cpu interrupts 2021-03-18 21:07:19 -05:00
Rekai Nyangadzayi Musuka fb38ef3f68 feat: emu slowly draws scanline to pixelbuffer 2021-03-18 21:06:57 -05:00
Rekai Nyangadzayi Musuka 4663e8c960 chore: unifty read_byte and write_byte across hardware 2021-03-17 00:29:36 -05:00
Rekai Nyangadzayi Musuka adeb6ca8a9 feat: implement window x, window y and ly compare registers 2021-03-16 22:52:43 -05:00
Rekai Nyangadzayi Musuka 06821bf880 fix: improve types of heap allocated arrays 2021-03-16 22:51:41 -05:00
Rekai Nyangadzayi Musuka 528b88eeb7 feat: implement Obj Palette 0 and 1 2021-03-16 02:36:09 -05:00
Rekai Nyangadzayi Musuka 8af434da07 fix: have the PPU use the CPU-writable Display Mode enum 2021-03-16 02:35:01 -05:00
Rekai Nyangadzayi Musuka 8c25e6f976 chore: fix spelling mistake 2021-03-16 02:31:07 -05:00
Rekai Nyangadzayi Musuka 19f642eafe chore: make clippy happy 2021-03-16 01:05:13 -05:00
Rekai Nyangadzayi Musuka bfde24cc8d fix: reimplement some ppu structs as bitfield macros 2021-03-16 00:27:27 -05:00
Rekai Nyangadzayi Musuka ef4cc8c3b6 chore: standardize the error message of a subet of unreachable! calls 2021-03-15 23:53:55 -05:00
Rekai Nyangadzayi Musuka 3b5d94adfc fix: reimplement flags register to be a bitfield 2021-03-15 23:35:20 -05:00
Rekai Nyangadzayi Musuka f57cf2b312 fix: switch to bitfield macros in serial.rs 2021-03-15 22:52:26 -05:00
Rekai Nyangadzayi Musuka d0410c4dfd fix: modify access parameters in timer.rs 2021-03-15 22:51:12 -05:00
Rekai Nyangadzayi Musuka f17bb032cc fix: implement bitfield macros in timer.rs 2021-03-15 22:41:41 -05:00
Rekai Nyangadzayi Musuka 1a8506c04f chore: improve code quality 2021-03-15 22:36:27 -05:00
Rekai Nyangadzayi Musuka 3d82465b04 chore: clean up code 2021-03-15 22:08:47 -05:00
Rekai Nyangadzayi Musuka 84babc4d69 fix: convert structs to bitfield structs in interrupt.rs 2021-03-15 21:59:53 -05:00
Rekai Nyangadzayi Musuka 602a0af4b7 chore: update parameter names in sound.rs 2021-03-15 21:43:50 -05:00
Rekai Nyangadzayi Musuka f929cd5989 chore: update access modifiers in sound.rs 2021-03-15 21:36:57 -05:00
Rekai Nyangadzayi Musuka 8989d3f1d7 fix: convert sound.rs structs to bitfields 2021-03-15 21:16:11 -05:00
Rekai Nyangadzayi Musuka 98e67b8c1c chore: fix spelling error 2021-03-15 19:20:08 -05:00
Rekai Nyangadzayi Musuka d30ce4dbb2 chore: improve code quailty 2021-03-15 19:19:40 -05:00
Rekai Nyangadzayi Musuka 5d95eadd2e fix: implement Default and Clone for Box<dyn MBC> 2021-03-15 19:08:19 -05:00
Rekai Nyangadzayi Musuka d78a50fefc chore: fix tests and simplify CI build 2021-01-27 22:17:01 -06:00
Rekai Nyangadzayi Musuka b053260c8b feat: don't embed gb boot rom in emulator 2021-01-27 22:07:31 -06:00
Rekai Nyangadzayi Musuka b5d3a2c675 feat: implement MBC1 2021-01-20 01:39:24 -06:00
Rekai Nyangadzayi Musuka 96bfc43312 chore: fix spelling errors 2021-01-19 22:44:48 -06:00
Rekai Nyangadzayi Musuka 842e670807 fix: replace MathTarget::HL and ::SP with already-existing enums 2021-01-19 02:05:04 -06:00
Rekai Nyangadzayi Musuka b70c398e14 feat: implement registers 0xFF01 and 0xFF02 2021-01-19 01:40:07 -06:00
Rekai Nyangadzayi Musuka 68c9557c43 chore: improve code quality 2021-01-19 01:36:44 -06:00
Rekai Nyangadzayi Musuka 1da01a318d feat: emulator now sucessfully runs boot rom 2021-01-19 00:30:32 -06:00
Rekai Nyangadzayi Musuka 9143286e9c feat: implement more operator overrides for Cycles 2021-01-19 00:29:04 -06:00
Rekai Nyangadzayi Musuka 9b4c95ce4c feat: reimplement cycles newtype 2021-01-18 22:54:38 -06:00
Rekai Nyangadzayi Musuka 2fc7ac3833 feat: add pixels-rs and winit as dependencies 2021-01-18 20:47:09 -06:00
Rekai Nyangadzayi Musuka 207bcfea30 chore: improve debug logs 2021-01-18 02:47:41 -06:00
Rekai Nyangadzayi Musuka 49a45d48cb fix: improve appearance of debug logs 2021-01-18 02:29:35 -06:00
Rekai Nyangadzayi Musuka 9203b61533 fix: implement 0xff41 and fix CALL instruciton 2021-01-18 02:22:45 -06:00
Rekai Nyangadzayi Musuka 386a780a6f fix: call opcode now pushes correct address onto stack 2021-01-17 22:12:00 -06:00
Rekai Nyangadzayi Musuka c0b8b8bda2 feat: implement more registers 2021-01-17 21:13:59 -06:00
Rekai Nyangadzayi Musuka 70de3b9142 feat: stub 0xff40 and 0xff47 2021-01-17 19:25:53 -06:00
Rekai Nyangadzayi Musuka 92218a227d feat: implement 0xff24 sound register 2021-01-17 18:58:57 -06:00
Rekai Nyangadzayi Musuka 251f4e8d6d feat: implement several sound i/o registers 2021-01-17 17:33:12 -06:00
Rekai Nyangadzayi Musuka 072c5f1b70 fix: squash bug in 64 LD instructions 2021-01-17 17:31:45 -06:00
Rekai Nyangadzayi Musuka 834423fe18 feat: stub sound register 0xff26 2021-01-03 02:05:46 -06:00
Rekai Nyangadzayi Musuka 1b53363095 feat: stub 0xff0f and 0xffff from interrupt 2021-01-03 01:38:31 -06:00
Rekai Nyangadzayi Musuka e693ad8a3c feat: create timer struct and stub 0xff07 2021-01-03 01:21:19 -06:00
Rekai Nyangadzayi Musuka 911f0f9c86 feat: stub work ram 2021-01-03 00:28:07 -06:00
Rekai Nyangadzayi Musuka 8048495cbc chore: move ppu vram from stack to heap 2021-01-02 23:58:49 -06:00
Rekai Nyangadzayi Musuka fb0772c671 chore: remove duplicate code 2021-01-02 22:49:25 -06:00
Rekai Nyangadzayi Musuka fe74f80ddf chore: format code 2020-12-24 00:34:48 -06:00
Rekai Nyangadzayi Musuka 26df683cff chore: move vram buffer to PPU struct 2020-12-24 00:27:06 -06:00
Rekai Nyangadzayi Musuka 677a584ba7 chore: stub vram, start work on ppu, fix set_register bug 2020-12-23 21:24:58 -06:00
Rekai Nyangadzayi Musuka 2a234f4d14 feat: implement ability to boot straigt to cartridge 2020-12-23 19:39:37 -06:00
Rekai Nyangadzayi Musuka 1502cc3ec2 chore: add debug information to bus.rs 2020-12-23 03:43:49 -06:00
Rekai Nyangadzayi Musuka 4d2e0e33f2 feat: implement fetch, decode, execute loop 2020-12-23 03:25:16 -06:00
Rekai Nyangadzayi Musuka e540c86c7e chore: make InstrRegisterPair public 2020-12-23 01:58:55 -06:00
Rekai Nyangadzayi Musuka bf945c3f44 chore: make InstrRegister public to satisfy rust 2020-12-23 01:27:11 -06:00
Rekai Nyangadzayi Musuka db86d11085 chore: refactor LDTarget and InstrRegister 2020-12-23 01:24:06 -06:00
Rekai Nyangadzayi Musuka 2e1c97e5d7 chore: reorganize instructions.rs 2020-12-23 01:17:13 -06:00
Rekai Nyangadzayi Musuka 9cd4c4ea11 chore: remove duplicate Instruction::INC match 2020-12-23 01:11:03 -06:00
Rekai Nyangadzayi Musuka 5187cbed76 feat: implement remaining gb opcodes
As of now, the initial implementation of all GameBoy opcoes are
complete. There's most likely a lot of bugs in them, however the
foundtain has been placed.
2020-12-23 01:07:30 -06:00
Rekai Nyangadzayi Musuka 9be1d1508e feat: implement all opcodes in rot table 2020-12-23 00:24:29 -06:00
Rekai Nyangadzayi Musuka f9d7fe05df Merge branch 'master' of ssh://ssh.paoda.moe:31059/paoda/gb 2020-12-22 22:23:28 -06:00
Rekai Nyangadzayi Musuka 4bf9ccb98c chore: qol update 2020-12-22 22:23:09 -06:00
Rekai Nyangadzayi Musuka c876778da8 chore: replace 16-bit half carry implementation 2020-11-28 15:42:50 -06:00
Rekai Nyangadzayi Musuka 7edffb166d chore: Implement exec of RLC and RRC 2020-09-07 22:34:09 -05:00
Rekai Nyangadzayi Musuka a4b3da1939 chore: replace unimplemented!() with unreachable!() 2020-09-07 21:51:20 -05:00
Rekai Nyangadzayi Musuka cd6f242f56 feat: Implement exec of all unprefixed opcodes 2020-09-07 21:49:10 -05:00
Rekai Nyangadzayi Musuka eb90ac31e2 chore: Document prefixed opcode decoding 2020-09-07 21:22:26 -05:00
Rekai Nyangadzayi Musuka 7538f946d4 feat: Implement prefixed opcode decoding 2020-09-07 21:18:53 -05:00
Rekai Nyangadzayi Musuka a9510bed54 chore: Document instruction execution implementations 2020-09-07 20:57:31 -05:00
Rekai Nyangadzayi Musuka f193132c5e chore: Implement imm byte versions of alu opcodes 2020-09-07 20:50:33 -05:00
Rekai Nyangadzayi Musuka 70a959fa32 chore: Remove LHS MathTarget from ADC and SBC 2020-09-07 20:28:24 -05:00
Rekai Nyangadzayi Musuka e31d83deae chore: Implement DI, EI, CALL & PUSH instructions 2020-09-07 20:19:10 -05:00
Rekai Nyangadzayi Musuka 0e3bdb8a2a chore: convert TryFrom error types to &'static str
Prevents an unnecessary heap allocation when a RegisterPair::try_from() or
Register::try_from() fails.
2020-09-04 14:43:19 -05:00
Rekai Nyangadzayi Musuka 213c5e5cb3 Implement more instructions 2020-09-04 00:41:19 -05:00
Rekai Nyangadzayi Musuka 11d2d26cdc Implement more instrucitons 2020-09-02 21:54:58 -05:00
Rekai Nyangadzayi Musuka 49dac85470 Utilize pattern matching more 2020-09-02 19:35:48 -05:00
Rekai Nyangadzayi Musuka cb365fd932 Implement Instructions and rename enums 2020-09-02 17:26:46 -05:00
Rekai Nyangadzayi Musuka 0be0030ed7 Implement CPU Instructions 2020-09-01 00:16:05 -05:00
Rekai Nyangadzayi Musuka 21b7f82422 Decode all unprefixed opcodes 2020-08-29 23:07:53 -05:00
Rekai Nyangadzayi Musuka e0235094bb Implement basic layout of Gameboy Emulator 2020-08-29 18:38:27 -05:00
Rekai Nyangadzayi Musuka 0401bb7e49 Restart Project 2020-08-25 12:10:38 -05:00
Rekai Nyangadzayi Musuka 4bc18f4dd9 Resolve build error 2020-08-24 00:54:36 -05:00
Rekai Nyangadzayi Musuka b1bbd67832 Implement 2 opcodes 2020-08-24 00:53:47 -05:00
Rekai Nyangadzayi Musuka deec130381 Implement decode for all x=2 unprefixed opcodes 2020-08-24 00:42:16 -05:00
Rekai Nyangadzayi Musuka 378a559106 Implement decode for all x=1 unprefixed opcodes. 2020-08-24 00:11:54 -05:00
Rekai Nyangadzayi Musuka 146e2dc066 Implement decode for all x=0 unprefixed opcodes. 2020-08-23 23:56:20 -05:00
Rekai Musuka f97bf9dbb7 Stub Bus, and CPU, implement some opcode decoding. 2020-08-06 01:05:16 -05:00
Rekai Musuka b274d61f56 Restart Project 2020-08-05 21:54:30 -05:00
Rekai Musuka a3cd9166ab Implement Register methods, and stub ADD opcodes 2020-08-05 03:23:50 -05:00
Rekai Musuka 8b475cb4cf Restart GB Emulator 2020-08-04 17:58:48 -05:00
Rekai Musuka 9032716346 Stub 8-bit ALU and 16-bit Arithmetic opcodes. 2020-08-01 16:31:24 -05:00
Rekai Musuka 8a822437fb Rename struct Instruction's methods 2020-07-30 22:41:30 -05:00
Rekai Musuka 26ddb1f9f0 Write stubs for some 16-bit LD instructions 2020-07-29 14:41:56 -05:00
Rekai Musuka 0f85e6702b Stub 8-bit LD Instructions 2020-07-28 23:58:50 -05:00
paoda 167c267e36 Reimplement Flag Register struct 2020-07-22 01:41:12 -05:00
Rekai Musuka 05cff7a27f Implement LR35902 Registers 2020-07-22 00:19:27 -05:00