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