Commit Graph

136 Commits

Author SHA1 Message Date
Rekai Nyangadzayi Musuka 2b7958f5f3 chore(bus): add a select few read/write guards 2021-06-09 20:48:31 -05:00
Rekai Nyangadzayi Musuka 50efe12aec chore: change how bus components are clocked 2021-06-09 19:41:10 -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 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 811a9f9cc9 feat(dma): implement non-working dma transfer 2021-06-04 13:47:06 -05:00
Rekai Nyangadzayi Musuka 86f3a897f1 feat(egui): add timer window 2021-06-02 02:44:32 -05:00
Rekai Nyangadzayi Musuka 9ea26d4a05 chore: improve performance of match statements 2021-05-19 02:52:32 -05:00
Rekai Nyangadzayi Musuka abdff1251e fix: properly implement LY==LYC behaviour 2021-05-05 08:29:39 -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 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 9003617459 chore: rename properties in bus.rs 2021-04-27 04:06:08 -05:00
Rekai Nyangadzayi Musuka b43c8ac7c9 feat(cartridge): grab title from the ROM 2021-04-14 01:21:45 -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 e2fa72aa0e chore: remove unecessary eprintln! statements 2021-04-08 00:02:54 -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 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 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 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 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 45466a5733 feat: implement clap for cli and improve error messages 2021-03-22 21:41:22 -05:00
Rekai Nyangadzayi Musuka dc45688e4f feat: implement timers 2021-03-21 03:03:03 -05:00
Rekai Nyangadzayi Musuka fe586d77ac feat: stub 0xFF05 2021-03-21 02:01:19 -05:00
Rekai Nyangadzayi Musuka 5a42d76f1e feat: implement LCDSTAT interrupt 2021-03-21 00:01:21 -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 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 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 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 528b88eeb7 feat: implement Obj Palette 0 and 1 2021-03-16 02:36:09 -05:00
Rekai Nyangadzayi Musuka 19f642eafe chore: make clippy happy 2021-03-16 01:05:13 -05:00
Rekai Nyangadzayi Musuka 3d82465b04 chore: clean up code 2021-03-15 22:08:47 -05:00
Rekai Nyangadzayi Musuka 8989d3f1d7 fix: convert sound.rs structs to bitfields 2021-03-15 21:16:11 -05:00
Rekai Nyangadzayi Musuka d30ce4dbb2 chore: improve code quailty 2021-03-15 19:19:40 -05: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 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 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 9203b61533 fix: implement 0xff41 and fix CALL instruciton 2021-01-18 02:22:45 -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 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 213c5e5cb3 Implement more instructions 2020-09-04 00:41:19 -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 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