Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Version 2.2.0 #102

Merged
merged 83 commits into from
Sep 26, 2022
Merged

Version 2.2.0 #102

merged 83 commits into from
Sep 26, 2022

Conversation

alloncm
Copy link
Owner

@alloncm alloncm commented Sep 26, 2022

No description provided.

alloncm and others added 30 commits December 17, 2021 20:07
After a lot of work and investigation I have kind of
understand why the project did not
display properly on the rpi with the SDL KMD/DRM backend.
for more info see: libsdl-org/SDL#5273
* Arrange the mod code in main
* rename file
# Conflicts:
#	gb/Cargo.toml
#	gb/src/main.rs
Read from the joypad is way better now with the gpio pins
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.12.0 to 1.16.1.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](tokio-rs/tokio@tokio-1.12.0...tokio-1.16.1)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Bumps [regex](https://github.com/rust-lang/regex) from 1.5.4 to 1.5.6.
- [Release notes](https://github.com/rust-lang/regex/releases)
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md)
- [Commits](rust-lang/regex@1.5.4...1.5.6)

---
updated-dependencies:
- dependency-name: regex
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Bumps [crossbeam-utils](https://github.com/crossbeam-rs/crossbeam) from 0.8.5 to 0.8.8.
- [Release notes](https://github.com/crossbeam-rs/crossbeam/releases)
- [Changelog](https://github.com/crossbeam-rs/crossbeam/blob/master/CHANGELOG.md)
- [Commits](crossbeam-rs/crossbeam@crossbeam-utils-0.8.5...crossbeam-utils-0.8.8)

---
updated-dependencies:
- dependency-name: crossbeam-utils
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
…0.8.8

Bump crossbeam-utils from 0.8.5 to 0.8.8
Delete the old Cargo.toml in gb folder
the interrupt priority was wrong and was the opposite priority
no need for a for, just checking once for
all the interrupt in the unhalt section
used a pointer to an stack alllocated struct
for the sdl audio user data, the memory got currupted and the
program would freeze on exit (x86) or crash randomaly (arm)
now using heap allocated memory using box
Improve the oam search by a lot and the pixel fetching by a bit
This improves ppu peroformance by about 10%
Fix audio mem error bug

used a pointer to an stack alllocated struct
for the sdl audio user data, the memory got currupted and the
program would freeze on exit (x86) or crash randomaly (arm)
now using heap allocated memory with `std::box`
This boosts the performance a bit
Optimize the further more gameboy performance to run on weaker hardware
mbc1 - casting to u16 when the program length
in mbc1 carts can be greater than u16.
read or write to the ram
when there is not ram read or writes are ignored
Add support for ignoring and not crashing

gb_ppu - when calculating the next ppu state
change did not count the vblank state when the
counter get greater than 114 m_cycles.
Now Im using modolu of 114 on the cycles to handle this

sprite_fetcher - a bug where the flipx calculation
was off by the amount of pixels needs to skip
causing panic.
It seems to be unecessary so I reomved it.
Fixed 2 bugs:
sdl_pull_audio_device - aside from naming, fixed a bug
where memseting outside of bounds cause heap corruption

fixed_size_queue - aside from naming, fixed a bug
where index and index_mut caused accessing memory outside of bounds.
Funny thing is that when allocating with vec![] and with with_capacity,
the corruption did not happen, my guess is that since
vec![] macro simply allocates a bigger buffer and the
out of bounds writes did not corrupt anything.
Fix/window crashes

Bug fixes including mem corrupt and panics
* Allow the PPU to be m_cycle accurate by cycling the mmu
each time an operation on the mmu is executed.

* Add the initial delay in the PPU background fifo that resets it
after 6 t_cycles at the beginning of each scanline.

* Add a delay in the PPU state changing mechanism.
the state should change at the m_cycle the new state begins
and not the m_cycle the old state ends.
* Add some of the PPU acceptane tests to the integration tests to
be  run each time.
The tests I added are:
- intr_2_0_timing
- intr_2_mode0_timing
- intr_2_mode3_timing
- intr_2_oam_ok_timing

The tests can be found here - https://github.com/Gekkio/mooneye-test-suite
* Add the new mooneye tests
 * Add the Nitty gritty gameboy timing and the mgba gbdoc
to the resources in the README
* sdl feature will enable sdl2 linking (on by defualt)
* apu feature enable the apu.
Exsists cause right now on the rpi zero2 i dont want apu (too slow).
* Add SIGINT signal handler to exit without sdl

Also arrange main a bit
* DMA - Fix a GPU memory leak, add memory barriers
 and shutdown gracefully
 * SPI - Add option to start on slow clock and then move to fast clock
 and add memory barriers
* ili9341 - Add slow initialization and shutdown gracefully
Tweaks to use the rpi zero2 instead of the rpi4 to run magenboy 
that turns out to be a lot of fixes to the original impl
@alloncm alloncm merged commit b396c36 into master Sep 26, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant