A Game Boy research project and emulator written in Rust

Overview

Mooneye GB

Mooneye GB is a Game Boy research project and emulator written in Rust.

Build Status

The main goals of this project are accuracy and documentation. Some existing emulators are very accurate (Gambatte, BGB >= 1.5) but are not documented very clearly, so they are not that good references for emulator developers. I want this project to document as clearly as possible why certain behaviour is emulated in a certain way. This also means writing a lot of test ROMs to figure out corner cases and precise behaviour on real hardware.

For documentation about known behaviour, see Game Boy: Complete Technical Reference

Binary test ROMs are available here in a zip package and also as individual .gb files. They are automatically built and deployed whenever there's new changes in the master branch.

Non-goals:

  • CGB (Game Boy Color) support. It would be nice, but I want to make the normal Game Boy support extremely robust first.
  • A debugger
  • A good user interface. Building native UIs with Rust is a bit painful at the moment.

Warning:

  • Project is WIP
  • Doesn't work properly without a boot ROM
  • The emulator is lagging behind hardware research. I don't want to spend time making short-lived and probably incorrect fixes to the emulator if I'm not sure about the hardware behaviour.

Hardware testing

There's tons of documentation and tons of emulators in the internet, but in the end I only trust real hardware. I follow a fairly "scientific" process when developing emulation for a feature:

  1. Think of different ways how it might behave on real hardware
  2. Make a hypothesis based on the most probable behaviour
  3. Write a test ROM for such behaviour
  4. Run the test ROM on real hardware. If the test ROM made an invalid hypothesis, go back to 1.
  5. Replicate the behaviour in the emulator

All test ROMs are manually run with these devices:

Device Model Mainboard CPU Detailed information
Game Boy DMG-01 DMG-CPU-01 DMG-CPU G01176542
Game Boy DMG-01 DMG-CPU-02 DMG-CPU A G02487032
Game Boy DMG-01 DMG-CPU-04 DMG-CPU B G10888299
Game Boy DMG-01  DMG-CPU-06 DMG-CPU C GM6058180
Super Game Boy SHVC-027 SGB-R-10 SGB-CPU-01 SGB Unit #2 [gekkio]
Game Boy Pocket MGB-001 MGB-CPU-01 CPU MGB   M10280516
Super Game Boy 2 SHVC-042 SHVC-SGB2-01 CPU SGB2 SGB2 Unit #1 [gekkio]
Game Boy Color CGB-001 CGB-CPU-01 CPU CGB C10203977
Game Boy Color CGB-001 CGB-CPU-01 CPU CGB A C10400331
Game Boy Color CGB-001 CGB-CPU-02 CPU CGB B C11778414
Game Boy Color CGB-001 CGB-CPU-03 CPU CGB C CGB Unit #1 [gekkio]
Game Boy Color CGB-001 CGB-CPU-05 CPU CGB D CH20983903
Game Boy Color CGB-001 CGB-CPU-06 CPU CGB E CH24224683
Game Boy Advance AGB-001 AGB-CPU-01 CPU AGB AH10045235
Game Boy Advance AGB-001 AGB-CPU-10 CPU AGB A AH12465671
Game Boy Player DOL-017 DOL-GBS-20 CPU AGB A E GBS Unit #3 [gekkio]
Game Boy Advance SP AGS-001  C/AGS-CPU-01 CPU AGB B XJH10027945
Game Boy Advance SP AGS-001  C/AGS-CPU-21 CPU AGB B E XEH17807928

Additional devices

I also have access to more devices with different mainboard revisions, but I think the CPU revision is all that matters if we study the behaviour and not analog characteristics (e.g. audio filtering). Even if audio sounded different between two units with the same CPU revision but different mainboard revisions, I'd expect the difference to be caused by individual device variation or different revisions of support chips (e.g. RAM/AMP/REG).

The main "test fleet" is already very big, so I will only use these devices if there's evidence of behaviour that depends on mainboard revision or individual units.

Device Model Mainboard CPU Detailed information
Game Boy DMG-01 DMG-CPU-01 DMG-CPU G01036814
Game Boy DMG-01 DMG-CPU-03 DMG-CPU B G06551776
Game Boy DMG-01 DMG-CPU-05 DMG-CPU B G13289095
Game Boy DMG-01 DMG-CPU-06 DMG-CPU B
Game Boy DMG-01 DMG-CPU-07 DMG-CPU B (blob) G38953646
Game Boy DMG-01 DMG-CPU-08 DMG-CPU C (blob)
Super Game Boy SNSP-027 SGB-R-10 SGB-CPU-01 SGB Unit #7 [gekkio]
Game Boy Pocket MGB-001 MGB-ECPU-01 CPU MGB   MH12573718
Game Boy Pocket MGB-001 MGB-LCPU-01 CPU MGB   M12827347
Game Boy Pocket MGB-001 MGB-LCPU-02 CPU MGB   MH20284468
Game Boy Light MGB-101 MGL-CPU-01 CPU MGB L10610653
Game Boy Color CGB-001 CGB-CPU-04 CPU CGB D C19220030
Game Boy Advance AGB-001 AGB-CPU-02 CPU AGB AJ12569062
Game Boy Advance AGB-001 AGB-CPU-03 CPU AGB A AJ14804298
Game Boy Advance AGB-001 AGB-CPU-04 CPU AGB A AJ15529163
Game Boy Player DOL-017 DOL-GBS-10 CPU AGB A GBS Unit #1 [gekkio]
Game Boy Advance SP AGS-001  C/AGS-CPU-10 CPU AGB B XEH12776954
Game Boy Advance SP AGS-001  C/AGS-CPU-11 CPU AGB B XJF10485171
Game Boy Advance SP AGS-001  C/AGS-CPU-30 CPU AGB B E XEH20137204
Game Boy Advance SP AGS-101  C/AGT-CPU-01 CPU AGB B E XU72764025-1

I'm still looking for the following mainboards, but these are probably not required for reverse engineering:

  • SGB-R-01
  • SGB-N-01
  • SGB-N-10
  • C/AGS-CPU-20
  • DOL-GBS-01

For now, the focus is on DMG/MGB/SGB/SGB2 emulation, so not all tests pass on CGB/AGB/AGS or emulators emulating those devices.

Performance

Always compile in release mode if you care about performance!

On a i7-3770K desktop machine I can usually run ROMs with 2000 - 4000% speed. Without optimizations the speed drops to 150 - 200%, which is still fine for development purposes.

Raspberry Pi with X11 desktop works but is too slow because there is no OpenGL acceleration.

The emulator is runnable on Android, but cross-compiling and packaging is a huge pain and touch controls would have to be implemented, so I'm not supporting Android at the moment.

Running the emulator

Requirements:

  • Rust 1.26
  • SDL2 development libraries for your platform must be installed

GUI

  1. cargo run --release
  2. Follow the instructions

Command-line

  1. Acquire a Game Boy bootrom, and put it to $HOME/.local/share/mooneye-gb/bootroms/dmg_boot.bin
  2. cargo build --release
  3. cargo run --release -- PATH_TO_GAMEBOY_ROM

On Windows, also download an SDL2 package containing SDL2.dll, and put it to target/debug and target/release.

Game Boy keys

Game Boy Key
Dpad Arrow keys
A Z
B X
Start Return
Select Backspace

Other keys

Function Key
Fast forward Shift
Toggle performance overlay F2

Test suite

Blargg's tests

Test mooneye-gb
cpu instrs πŸ‘
dmg sound 2 ❌
instr timing πŸ‘
mem timing 2 πŸ‘
oam bug 2 ❌
cgb sound 2

Notes:

  • cpu_instrs fails on MGB/SGB2 hardware and emulators emulating them correctly. The ROM incorrectly detects the device as CGB, and attempts to perform a CPU speed change which causes a freeze (STOP instruction with joypad disabled)
  • dmg_sound-2 test #10 can fail randomly on real hardware and seems to depend on non-deterministic behaviour.
  • oam_bug-2 fails on all CGB, AGB, and AGS devices
  • cgb_sound-2 test #03 fails on CPU CGB, CPU CGB A, and CPU CGB B

Mooneye GB acceptance tests

Test mooneye-gb
add sp e timing πŸ‘
boot div dmg0 ❌
boot div dmgABCmgb ❌
boot div S ❌
boot div2 S ❌
boot hwio dmg0 ❌
boot hwio dmgABCmgb ❌
boot hwio S πŸ‘
boot regs dmg0 πŸ‘
boot regs dmgABC πŸ‘
boot regs mgb πŸ‘
boot regs sgb πŸ‘
boot regs sgb2 πŸ‘
call timing πŸ‘
call timing2 πŸ‘
call cc_timing πŸ‘
call cc_timing2 πŸ‘
di timing GS πŸ‘
div timing πŸ‘
ei sequence πŸ‘
ei timing πŸ‘
halt ime0 ei πŸ‘
halt ime0 nointr_timing πŸ‘
halt ime1 timing πŸ‘
halt ime1 timing2 GS πŸ‘
if ie registers πŸ‘
intr timing πŸ‘
jp timing πŸ‘
jp cc timing πŸ‘
ld hl sp e timing πŸ‘
oam dma_restart πŸ‘
oam dma start πŸ‘
oam dma timing πŸ‘
pop timing πŸ‘
push timing πŸ‘
rapid di ei πŸ‘
ret timing πŸ‘
ret cc timing πŸ‘
reti timing πŸ‘
reti intr timing πŸ‘
rst timing πŸ‘

Bits (unusable bits in memory and registers)

Test mooneye-gb
mem oam πŸ‘
reg f πŸ‘
unused_hwio GS πŸ‘

Instructions

Test mooneye-gb
daa πŸ‘

Interrupt handling

Test mooneye-gb
ie push πŸ‘

OAM DMA

Test mooneye-gb
basic πŸ‘
reg_read πŸ‘
sources GS πŸ‘

PPU

Test mooneye-gb
hblank ly scx timing GS πŸ‘
intr 1 2 timing GS πŸ‘
intr 2 0 timing πŸ‘
intr 2 mode0 timing πŸ‘
intr 2 mode3 timing πŸ‘
intr 2 oam ok timing πŸ‘
intr 2 mode0 timing sprites ❌
lcdon timing GS ❌
lcdon write timing GS ❌
stat irq blocking ❌
stat lyc onoff ❌
vblank stat intr GS πŸ‘

Serial

Test mooneye-gb
boot sclk align dmgABCmgb ❌

Timer

Test mooneye-gb
div write πŸ‘
rapid toggle πŸ‘
tim00 div trigger πŸ‘
tim00 πŸ‘
tim01 div trigger πŸ‘
tim01  πŸ‘
tim10 div trigger πŸ‘
tim10 πŸ‘
tim11 div trigger πŸ‘
tim11 πŸ‘
tima reload πŸ‘
tima write reloading πŸ‘
tma write reloading πŸ‘

Mooneye GB emulator-only tests

MBC1

Test mooneye-gb
bits bank1 πŸ‘
bits bank2 πŸ‘
bits mode πŸ‘
bits ramg πŸ‘
rom 512kb πŸ‘
rom 1Mb πŸ‘
rom 2Mb πŸ‘
rom 4Mb πŸ‘
rom 8Mb πŸ‘
rom 16Mb πŸ‘
ram 64kb πŸ‘
ram 256kb πŸ‘
multicart rom 8Mb πŸ‘

MBC2

Test mooneye-gb
bits ramg πŸ‘
bits romb πŸ‘
bits unused πŸ‘
rom 512kb πŸ‘
rom 1Mb πŸ‘
rom 2Mb πŸ‘
ram πŸ‘

MBC5

Test mooneye-gb
rom 512kb πŸ‘
rom 1Mb πŸ‘
rom 2Mb πŸ‘
rom 4Mb πŸ‘
rom 8Mb πŸ‘
rom 16Mb πŸ‘
rom 32Mb πŸ‘
rom 64Mb πŸ‘

Mooneye GB manual tests

Test mooneye-gb
sprite priority πŸ‘

Mooneye GB misc tests

Test mooneye-gb
boot div A
boot div cgb0
boot div cgbABCDE
boot hwio C
boot regs A
boot regs cgb

Bits

Test mooneye-gb
unused hwio C

PPU

Test mooneye-gb
vblank stat intr C

Test naming

Some tests are expected to pass only a single model:

  • dmg = Game Boy
  • mgb = Game Boy Pocket
  • sgb = Super Game Boy
  • sgb2 = Super Game Boy 2
  • cgb = Game Boy Color
  • agb = Game Boy Advance
  • ags = Game Boy Advance SP

In addition to model differences, CPU revisions can affect the behaviour. Revision 0 refers always to the initial version of a CPU (e.g. CPU CGB). AGB and AGS use the same CPU models. The following CPU models have several revisions:

  • DMG: 0, A, B, C
  • CGB: 0, A, B, C, D, E
  • AGB: 0, A, A E, B, B E. Revision E also exists, but only in Game Boy Micro (OXY) so it is out of this project's scope. However, A E and B E are most likely actually just E revision in A or B-compatible package.

In general, hardware can be divided to a couple of groups based on their behaviour. Some tests are expected to pass on a single or multiple groups:

  • G = dmg+mgb
  • S = sgb+sgb2
  • C = cgb+agb+ags
  • A = agb+ags

For example, a test with GS in the name is expected to pass on dmg+mgb + sgb+sgb2.

License and copyright

Mooneye GB is licensed under GPLv3+. Copyright (C) 2014-2020 Joonas Javanainen [email protected]

The test framework and hardware tests under tests/ are licensed under MIT. Copyright (C) 2014-2020 Joonas Javanainen [email protected]

Comments
  • Build Error

    Build Error

    I tried to build this emulator, but I get the following build error (on MacOS):

      --> src/frontend/renderer.rs:57:7
       |
    57 |       FrameState::Even => FrameState::Odd,
       |       ^^^^^^^^^^^^^^^^ help: consider using a reference: `&FrameState::Even`
    
    error[E0658]: non-reference pattern used to match a reference (see issue #42640)
      --> src/frontend/renderer.rs:58:7
       |
    58 |       FrameState::Odd => FrameState::Even,
       |       ^^^^^^^^^^^^^^^ help: consider using a reference: `&FrameState::Odd
    error: aborting due to 2 previous errors
    
    error: Could not compile `mooneye-gb`.
    

    Any ideas what is causing this and how to fix? Thanks! Very interested in and excited about this project.

    opened by alexwennerberg 3
  • Added several timer tests.

    Added several timer tests.

    I extracted a couple of tests from my old gb tests rom and also created a few more additional timer tests.

    I was only able to test them on MGB, CGB, and AGS units.

    opened by wilbertpol 3
  • In ie_push.s, cannot trigger

    In ie_push.s, cannot trigger "R3: unwanted cancel" failure ?

    When I tried this test with my emulator, instead of failing or passing, the emulator just stopped after a while. As I was investigating why, it occurred to me that my implementation should have triggered the "R3: unwanted cancel" failure but that it didn't for some reason.

    My understanding of the scenario that should lead to this failure is as follows:

    • from address PC=0x0235 with SP=0x0001, we trigger INTR_SERIAL with "ldh (<IF), a"
    • while processing this interrupt, if it is cancelled, PC is set to 0
    • because at the end of ie_push.s we have ".org $0000" followed by "jp hl", when executing the instruction at PC=0, we should jump to the address contained in HL

    However, because we trigger the interrupt with SP=1, pushing PC as part of processing the interrupt not only puts 0x35 into IE but it also puts 0x02 at the address 0 which replaces the 0xE9 opcode of the jump instruction that should trigger the failure path.

    Is my interpretation correct or did I miss something ?

    opened by gurushida 2
  • Issue with sources-GS test

    Issue with sources-GS test

    Hello,

    I'm facing a problem with this test and I need your insight! At test_fe00: , it appears that OAM is cleared with call clear_oam , then DMA runs and the test compares the result with ram_pattern_1. Since OAM was cleared prior to DMA, it will never have the correct pattern, so you even have to remove the clear or reload the pattern before triggering the DMA.

    I hope I didn't get the whole thing wrong! Keep up the great work!

    opened by bobonis 2
  • Request for details on a test comment ( about OAM DMA )

    Request for details on a test comment ( about OAM DMA )

    I'm having trouble understand something I read in one of your timing tests that deals with OAM DMA.

    https://github.com/Gekkio/mooneye-gb/blob/master/tests/acceptance/call_cc_timing.s#L83-L86

      ; the first two bytes of CALL nn will be at $FDFE, so
      ; the high byte of nn is at the first byte of OAM during testing
      ; [...]
      ; the memory read of nn is aligned to happen exactly one cycle
      ; before the OAM DMA end, so high byte of nn = $FF
      ; therefore the call becomes:
      ;   call c, $ffca
    

    From what I understand the CPU is only able to access HIRAM during OAM DMA.. so wouldn't that turn into RST $38 ($FF) instead?


    Another piece of that test that is confusing to me is the per-cycle timings of CALL.

    ; CALL cc, nn is expected to have the following timing:
    ; M = 0: instruction decoding
    ; M = 1: nn read: memory access for low byte
    ; M = 2: nn read: memory access for high byte
    ; M = 3: internal delay
    ; M = 4: PC push: memory access for high byte
    ; M = 5: PC push: memory access for low byte
    

    You state above that the low byte is read first. That seems to go against what the test expects if its expecting the low byte to be read correctly and the high byte to be read as $FF.

    opened by mehcode 2
  • Wrong HalfCarry check on add16-instruction

    Wrong HalfCarry check on add16-instruction

    Hey, I'm working on an GB emulator in F#.

    While studying (or peeking ;)) your implementation I noticed a bug in this line: https://github.com/Gekkio/mooneye-gb/blob/master/src/cpu/mod.rs#L902

    According to the most known Game Boy CPU Manual, as well as the official GB programming manual the half-carry flag is set when there's a carry from bit 11. This would mean a check for 0x0FFF, and not 0x07FF (bit 10).

    A test case from the official developer manual (page 97):

    When HL = 0x8A23
    ADD HL, HL ; HL <- 0x1446, H <- 1, N <- 0, CY <- 1
    
    opened by MartinJohns 2
  • Remove

    Remove "debug" opcode from all test roms.

    Please, remove it. The real behaviour of that pseudo-opcode (which, acording to wla-dx, is 0xED) is to hang the CPU forever. Most emulators show error messages when they try to execute that instruction. You should use "ld b,b", which is kind of a standard (no$gmb, bgb) and it doesn't hang emulators or real hardware. In fact, the only reason the test roms can work in real hardware is that just after that instruction there's an infinite loop, so the CPU would be trapped there anyway.

    opened by AntonioND 2
  • Bump nalgebra from 0.25.1 to 0.31.3

    Bump nalgebra from 0.25.1 to 0.31.3

    Bumps nalgebra from 0.25.1 to 0.31.3.

    Changelog

    Sourced from nalgebra's changelog.

    [0.31.3] (30 Oct. 2022)

    Added

    • Add Matrix::try_cast to attempt casting the inner scalar types when that cast may fail.

    Fixed

    • Fixed the usage of CheckBytes with rkyv.

    [0.31.2] (09 Oct. 2022)

    Modified

    • Use #[inline] on the Dim implementation for Const to improve opt-level 1 performance.
    • Make the Point::new constructions const-fn.

    Added

    • Add UnitVector::cast to change the underlying scalar type.

    [0.31.1] (31 July 2022)

    Modified

    • Improve performances of multiplication of two sparse matrices.

    Added

    • Add Matrix::from_row_iterator to build a matrix from an iterator yielding components in row-major order.
    • Add support for conversion from/to types of glam 0.21.
    • nalgebra-sparse: add support for the matrix-market export of sparse matrices.
    • nalgebra-lapack: add a GE for solving the generalized eigenvalues problem.

    Fixed

    • Fix Rotation3::from_matrix and UnitQuaternion::from_matrix when the input matrix is already a valid rotation matrix.

    [0.31.0] (30 Apr. 2022)

    Breaking changes

    • Switch to cust 0.3 (for CUDA support).
    • Switch to rkyv 0.7
    • Remove support for serialization based on abomonation.
    • Remove support for conversions between nalgebra types and glam 0.13.

    Modified

    • The aliases for Const types have been simplified to help rust-analyzer.

    Added

    • Add TryFrom conversion between UnitVector2/3/4 and glam’s Vec2/3/4.
    • nalgebra-sparse: added support for serialization of sparse matrices with serde.
    • nalgebra-sparse: add a CSC matrix constructor from unsorted (but valid) data.
    • nalgebra-lapack: add generalized eigenvalues/eigenvectors calculation + QZ decomposition.

    ... (truncated)

    Commits
    • 1eb5cc2 Release v0.31.3
    • 0d9adec Merge pull request #1106 from geoeo/dev
    • 24e85b9 Reset nalgebra-lapack cargo.toml to its previous defaults
    • e32f4ee cargo fmt + tests
    • 5389212 Merge pull request #1171 from md2468/try_cast
    • c9fa7a3 Added try_cast() to Matrix
    • 9c8b5f0 added a function to get all the real elements
    • 14394b7 Merge branch 'dimforge:dev' into dev
    • 84c37b7 testing eigenvectors
    • aa89cda testing complex eigenvalues
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump snafu from 0.6.10 to 0.7.3

    Bump snafu from 0.6.10 to 0.7.3

    Bumps snafu from 0.6.10 to 0.7.3.

    Changelog

    Sourced from snafu's changelog.

    0.7.3 - 2022-10-20

    Fixed

    • The macro no longer generates invalid code when implicitly-generated types (such as backtraces) were used in conjunction with #[snafu(source(from))] and the type before transformation does not implement std::error::Error.

    0.7.2 - 2022-10-09

    Added

    • Report can be returned from main or test functions to provide a user-friendly display of errors.

    • A cheat sheet for the most common #[snafu(...)] attribute usages has been added to the Snafu macro's documentation.

    • Optional support for using the standard library's std::backtrace::Backtrace type via the backtraces-impl-std feature flag.

    • Optional support for implementing the Provider API using the std::error::Error::provide method via the unstable-provider-api feature flag.

    • Optional support for implementing the core::error::Error trait instead of std::error::Error via the unstable-core-error feature flag.

    • GenerateImplicitData has a new method generate_with_source.

    Changed

    • ErrorCompat::iter_chain and ChainCompat are now available in no_std environments.

    • ChainCompat now implements Clone.

    • The Debug implementation for Location no longer shows some irrelevant internal details.

    [0.7.1] - 2022-05-02

    Added

    ... (truncated)

    Commits
    • 35dcf44 Release 0.7.3
    • e3bc93c Update the changelog
    • e80bd8c Merge pull request #366 from shepmaster/generate-implicit-with-transformed-so...
    • 4c433c8 Uniformly use the transformed error source in the error constructor
    • f6a3368 Clarify we are using the source type as part of the transformation
    • 83fc90c Release 0.7.2
    • 01bb60d Update the changelog
    • e647ea8 Merge pull request #361 from shepmaster/implicit-data-with-source
    • 791b50a Don't create Option\<Backtrace> when the source error provides a Backtrace
    • 0ce4e1a Add GenerateImplicitData::generate_with_source
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump nalgebra from 0.25.1 to 0.31.2

    Bump nalgebra from 0.25.1 to 0.31.2

    Bumps nalgebra from 0.25.1 to 0.31.2.

    Changelog

    Sourced from nalgebra's changelog.

    [0.31.2] (09 Oct. 2022)

    Modified

    • Use #[inline] on the Dim implementation for Const to improve opt-level 1 performance.
    • Make the Point::new constructions const-fn.

    Added

    • Add UnitVector::cast to change the underlying scalar type.

    [0.31.1] (31 July 2022)

    Modified

    • Improve performances of multiplication of two sparse matrices.

    Added

    • Add Matrix::from_row_iterator to build a matrix from an iterator yielding components in row-major order.
    • Add support for conversion from/to types of glam 0.21.
    • nalgebra-sparse: add support for the matrix-market export of sparse matrices.
    • nalgebra-lapack: add a GE for solving the generalized eigenvalues problem.

    Fixed

    • Fix Rotation3::from_matrix and UnitQuaternion::from_matrix when the input matrix is already a valid rotation matrix.

    [0.31.0] (30 Apr. 2022)

    Breaking changes

    • Switch to cust 0.3 (for CUDA support).
    • Switch to rkyv 0.7
    • Remove support for serialization based on abomonation.
    • Remove support for conversions between nalgebra types and glam 0.13.

    Modified

    • The aliases for Const types have been simplified to help rust-analyzer.

    Added

    • Add TryFrom conversion between UnitVector2/3/4 and glam’s Vec2/3/4.
    • nalgebra-sparse: added support for serialization of sparse matrices with serde.
    • nalgebra-sparse: add a CSC matrix constructor from unsorted (but valid) data.
    • nalgebra-lapack: add generalized eigenvalues/eigenvectors calculation + QZ decomposition.

    Fixed

    • Improve stability of SVD.
    • Fix slerp for UnitComplex.

    [0.30.1] (09 Jan. 2022)

    Added

    • Add conversion from/to types of glam 0.19 and 0.20.

    ... (truncated)

    Commits
    • 983e6db Merge pull request #1161 from dimforge/v0.31.2
    • a752a4b Release v0.31.2
    • 202a548 Merge pull request #1156 from dimforge/fix-ci
    • 1870080 Remove const for Point1::new when targetting cuda
    • 1079f0c Add a non-const version of Point::new when the cuda feature is enabled
    • 7adecde Merge pull request #1144 from Patiga/lib-doc-link-items
    • 3aca9af Link listed types in lib.rs to their docs
    • 5cf6afb Merge pull request #1141 from lsh/sparse-clear-triplet
    • 498fbf5 remove unnecessary trait bounds
    • 0eb1f5c 'fix error's
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump snafu from 0.6.10 to 0.7.2

    Bump snafu from 0.6.10 to 0.7.2

    Bumps snafu from 0.6.10 to 0.7.2.

    Changelog

    Sourced from snafu's changelog.

    0.7.2 - 2022-10-09

    Added

    • Report can be returned from main or test functions to provide a user-friendly display of errors.

    • A cheat sheet for the most common #[snafu(...)] attribute usages has been added to the Snafu macro's documentation.

    • Optional support for using the standard library's std::backtrace::Backtrace type via the backtraces-impl-std feature flag.

    • Optional support for implementing the Provider API using the std::error::Error::provide method via the unstable-provider-api feature flag.

    • Optional support for implementing the core::error::Error trait instead of std::error::Error via the unstable-core-error feature flag.

    • GenerateImplicitData has a new method generate_with_source.

    Changed

    • ErrorCompat::iter_chain and ChainCompat are now available in no_std environments.

    • ChainCompat now implements Clone.

    • The Debug implementation for Location no longer shows some irrelevant internal details.

    [0.7.1] - 2022-05-02

    Added

    • The macro ensure_whatever provides the functionality of the ensure macro for stringly-typed errors.

    Changed

    • No longer require the futures feature flag to support the shim implementations of standard library errors that have existed since Rust 1.34.

    • Documentation improved to demonstrate that custom Whatever errors

    ... (truncated)

    Commits
    • 83fc90c Release 0.7.2
    • 01bb60d Update the changelog
    • e647ea8 Merge pull request #361 from shepmaster/implicit-data-with-source
    • 791b50a Don't create Option\<Backtrace> when the source error provides a Backtrace
    • 0ce4e1a Add GenerateImplicitData::generate_with_source
    • e2b29c3 Merge pull request #355 from shepmaster/report
    • acac2d5 Add Report for user-friendly error output
    • c4010db Merge pull request #359 from shepmaster/std-backtrace-no-crate
    • 8e21b39 Merge pull request #358 from shepmaster/chain-clone
    • 9102578 Do not require the backtrace crate when using backtraces-impl-std
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump snafu from 0.6.10 to 0.7.4

    Bump snafu from 0.6.10 to 0.7.4

    Bumps snafu from 0.6.10 to 0.7.4.

    Changelog

    Sourced from snafu's changelog.

    0.7.4 - 2022-12-19

    Changed

    • Report and the [report] macro now remove redundant parts from the messages that many errors duplicate from their underlying sources.

    0.7.3 - 2022-10-20

    Fixed

    • The macro no longer generates invalid code when implicitly-generated types (such as backtraces) were used in conjunction with #[snafu(source(from))] and the type before transformation does not implement std::error::Error.

    [0.7.2] - 2022-10-09

    Added

    • Report can be returned from main or test functions to provide a user-friendly display of errors.

    • A cheat sheet for the most common #[snafu(...)] attribute usages has been added to the Snafu macro's documentation.

    • Optional support for using the standard library's std::backtrace::Backtrace type via the backtraces-impl-std feature flag.

    • Optional support for implementing the Provider API using the std::error::Error::provide method via the unstable-provider-api feature flag.

    • Optional support for implementing the core::error::Error trait instead of std::error::Error via the unstable-core-error feature flag.

    • GenerateImplicitData has a new method generate_with_source.

    Changed

    • ErrorCompat::iter_chain and ChainCompat are now available in no_std environments.

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump nalgebra from 0.25.1 to 0.31.4

    Bump nalgebra from 0.25.1 to 0.31.4

    Bumps nalgebra from 0.25.1 to 0.31.4.

    Changelog

    Sourced from nalgebra's changelog.

    [0.31.4] (13 Nov. 2022)

    Added

    • Add a convert-glam022 feature to enable conversion between nalgebra and glam v0.22.

    [0.31.3] (30 Oct. 2022)

    Added

    • Add Matrix::try_cast to attempt casting the inner scalar types when that cast may fail.

    Fixed

    • Fixed the usage of CheckBytes with rkyv.

    [0.31.2] (09 Oct. 2022)

    Modified

    • Use #[inline] on the Dim implementation for Const to improve opt-level 1 performance.
    • Make the Point::new constructions const-fn.

    Added

    • Add UnitVector::cast to change the underlying scalar type.

    [0.31.1] (31 July 2022)

    Modified

    • Improve performances of multiplication of two sparse matrices.

    Added

    • Add Matrix::from_row_iterator to build a matrix from an iterator yielding components in row-major order.
    • Add support for conversion from/to types of glam 0.21.
    • nalgebra-sparse: add support for the matrix-market export of sparse matrices.
    • nalgebra-lapack: add a GE for solving the generalized eigenvalues problem.

    Fixed

    • Fix Rotation3::from_matrix and UnitQuaternion::from_matrix when the input matrix is already a valid rotation matrix.

    [0.31.0] (30 Apr. 2022)

    Breaking changes

    • Switch to cust 0.3 (for CUDA support).
    • Switch to rkyv 0.7
    • Remove support for serialization based on abomonation.
    • Remove support for conversions between nalgebra types and glam 0.13.

    Modified

    • The aliases for Const types have been simplified to help rust-analyzer.

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump criterion from 0.3.4 to 0.4.0

    Bump criterion from 0.3.4 to 0.4.0

    Bumps criterion from 0.3.4 to 0.4.0.

    Changelog

    Sourced from criterion's changelog.

    [0.4.0] - 2022-09-10

    Removed

    • The Criterion::can_plot function has been removed.
    • The Criterion::bench_function_over_inputs function has been removed.
    • The Criterion::bench_functions function has been removed.
    • The Criterion::bench function has been removed.

    Changed

    • HTML report hidden behind non-default feature flag: 'html_reports'
    • Standalone support (ie without cargo-criterion) feature flag: 'cargo_bench_support'
    • MSRV bumped to 1.57
    • rayon and plotters are optional (and default) dependencies.
    • Status messages ('warming up', 'analyzing', etc) are printed to stderr, benchmark results are printed to stdout.
    • Accept subsecond durations for --warm-up-time, --measurement-time and --profile-time.
    • Replaced serde_cbor with ciborium because the former is no longer maintained.
    • Upgrade clap to v3 and regex to v1.5.

    Added

    • A --discard-baseline flag for discarding rather than saving benchmark results.
    • Formal support for benchmarking code compiled to web-assembly.
    • A --quiet flag for printing just a single line per benchmark.
    • A Throughput::BytesDecimal option for measuring throughput in bytes but printing them using decimal units like kilobytes instead of binary units like kibibytes.

    Fixed

    • When using bench_with_input, the input parameter will now be passed through black_box before passing it to the benchmark.

    [0.3.6] - 2022-07-06

    Changed

    • MSRV bumped to 1.49
    • Symbol for microseconds changed from ASCII 'us' to unicode 'Β΅s'
    • Documentation fixes
    • Clippy fixes

    [0.3.5] - 2021-07-26

    Fixed

    • Corrected Criterion.toml in the book.
    • Corrected configuration typo in the book.

    Changed

    • Bump plotters dependency to always include a bug-fix.
    • MSRV bumped to 1.46.
    Commits
    • 5e27b69 Merge branch 'version-0.4'
    • 4d6d69a Increment version numbers.
    • 935c632 Add Throughput::BytesDecimal. Fixes #581.
    • f82ce59 Remove critcmp code (it belongs in cargo-criterion) (#610)
    • a18d080 Merge branch 'master' into version-0.4
    • f9c6b8d Merge pull request #608 from Cryptex-github/patch-1
    • 8d0224e Fix html report path
    • 2934163 Add missing black_box for bench_with_input parameters. Fixes 566.
    • dfd7b65 Add duplicated benchmark ID to assertion message.
    • ce8259e Bump criterion-plot version number.
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump crc from 1.8.1 to 3.0.0

    Bump crc from 1.8.1 to 3.0.0

    Bumps crc from 1.8.1 to 3.0.0.

    Release notes

    Sourced from crc's releases.

    3.0.0

    Bartel Sielski (2):
          Add support for CRC algorithms which have a non-power of 2 width
          Add support for up to 128 bit CRCs
    

    Dominik Stolz (1): Add Crc::digest_with_initial

    Cliff L. Biffle (1): impl Clone for Digest

    2.1.0

    paunstefan (1):
          Added CRC8 support
    
    Commits
    • b6dc600 Prepare 3.0.0 release
    • 12c17fb Document behavior of digest_with_initial
    • 60861d8 Apply refin and width to custom initial values
    • 2ef1be5 Add Crc::digest_with_initial
    • 4aeef11 impl Clone for Digest
    • f0e62a3 Remove use of BITS associated const
    • 4a9a15b Add support for up to 128 bit CRCs
    • 384fb68 Add support for CRC algorithms which have a non-power of 2 width
    • f1294c9 Prepare 2.1.0 release
    • 7ace659 Replace Travis CI with GitHub Actions
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump simplelog from 0.9.0 to 0.12.0

    Bump simplelog from 0.9.0 to 0.12.0

    Bumps simplelog from 0.9.0 to 0.12.0.

    Changelog

    Sourced from simplelog's changelog.

    v0.12.0

    - Replaces the semingly unmainted chrono library with the time crate.
    - Addresses through this update 
        - RUSTSEC-2020-0159 (chrono)
        - RUSTSEC-2020-0071 (time)
    - `ConfigBuilder::set_time_to_local` is replaced by `ConfigBuilder::set_time_offset_to_local`.
        - This function requires the new (and by default activated) `local-offset` feature.
        - This function may fail, for more information read the docs.
        - simplelog will not determine the local offset dynamically anymore, but only once, when this config option is set.
            - Due to safety reasons there is no way to provide this property currently.
    - `ConfigBuilder::set_time_offset` now takes a `time::UtcOffset` instead of a `chrono::FixedOffset`.
    - `ConfigBuilder::set_time_format` has been replaced by three new variants
        - `ConfigBuilder::set_time_format_rfc2822` sets the time format to use the format described by rfc2822.
        - `ConfigBuilder::set_time_format_rfc3339` sets the time format to use the format described by rfc3339.
        - `ConfigBuilder::set_time_format_custom` sets the time format to a custom time format best created using `time::macros::format_description`.
            - Runtime provided time format configuration is possible, but difficult due to lifetime constraints.
            - Fixing this will require a solution to https://github.com/time-rs/time/issues/429
        - *Note*: The default format is unchanged "[hour]:[minute]:[second]"
    

    v0.11.0

    - Add colored log levels using `ansi_term` (PR [#88](https://github.com/drakulix/simplelog.rs/issues/88), credits to @manio)
    - Add target padding (PR [#85](https://github.com/drakulix/simplelog.rs/issues/85), credits to @bytebeamio)
    - Add optional color and style support using `paris` crate (PR [#84](https://github.com/drakulix/simplelog.rs/issues/84), credits to @manio)
    

    v0.10.2

    - Fix flushing with `BufferedStandardStreams` (PR [#82](https://github.com/drakulix/simplelog.rs/issues/82), credits to @mrkline)
    

    v0.10.1

    - Fix TermLogger performance using `termcolor::BufferedStandardStream` (PR [#80](https://github.com/drakulix/simplelog.rs/issues/80), credits to @mrkline)
    - Add write thread name support for `termlog` (PR [#76](https://github.com/drakulix/simplelog.rs/issues/76), credits to @zeroflaw)
    

    v0.10.0

    - Fix wrong argument naming (PR [#70](https://github.com/drakulix/simplelog.rs/issues/70), credits to @scvalex)
    - *Breaking*: More color customization options (PR [#72](https://github.com/drakulix/simplelog.rs/issues/72), credits to @mrkline)
    - Clarify docs on config levels
    
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump gilrs from 0.8.0 to 0.8.2

    Bump gilrs from 0.8.0 to 0.8.2

    Bumps gilrs from 0.8.0 to 0.8.2.

    Commits
    • 326bab8 gilrs version 0.8.2 and gilrs-core version 0.3.2
    • a16b964 Update SDL_GameControllerDB
    • e164b1b Update env_logger
    • 3e66101 Emit ButtonChanged events in axis_dpad_to_button filter
    • 51363fa Update nix to v0.23.1 to fix security vulnerability (RUSTSEC-2021-0119)
    • 60883ea Update SDL_GameControllerDB
    • 8c433ef Bump minimal rustc version to 1.47
    • 3687a66 Merge branch 'wasm' into 'master'
    • b82c6cc Fix axis range calculation on wasm target.
    • 50ca155 gilrs v0.8.1
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
Releases(v0.1.0)
Owner
Joonas Javanainen
Joonas Javanainen
Rustual Boy - A Virtual Boy emulator.

Rustual Boy Description Rustual Boy is a Virtual Boy emulator. It can be used to play existing Virtual Boy games, as well as be a helpful development/

null 224 Nov 9, 2022
RustBoyAdvance-NG is a Nintendoβ„’ Game Boy Advance emulator and debugger, written in the rust programming language.

RustBoyAdvance-NG Nintendo GameBoy Advance β„’ emulator and debugger, written in rust. WebAssembly Demo: https://michelhe.github.io/rustboyadvance-ng/ P

MishMish 510 Dec 30, 2022
A cross-platform sequencer that internally uses a Game Boy emulator to synthesize the sound

chiptrack chiptrack is a cross-platform sequencer that internally uses a Game Boy emulator to synthesize the sound. It uses: SixtyFPS for the UI. RBoy

Jocelyn Turcotte 26 Dec 7, 2022
A CPU emulator for running unit tests on Game Boy code.

evunit This is a unit testing application for Game Boy roms. It includes a CPU emulator, and loads test configurations from TOML files. Configuring a

Evie M. 8 Jan 1, 2023
Nes-emulator - A NES emulator made to learn the Rust programming language

nes-emulator Building $ rustc --version rustc 1.32.0 (9fda7c223 2019-01-16) $ cargo --version cargo 1.32.0 (8610973aa 2019-01-02) $ cargo build --rel

Michael Burge 225 Dec 23, 2022
CHIP-8 emulator written in Rust as a side project.

marisa-rs a CHIP-8 emulator, with learning purposes in mind, written in Rust. this is mainly a learning project of mine for deeper knowledge in emulat

Lumine 0 Jul 26, 2022
Winapi fuzzer to help Wine project in creating better Windows "emulator"

Win32 Fuzzer This repository contains fuzzer to test Windows API functions(Win32 API). I created it to help Wine to better mimic Windows OS and allow

RafaΕ‚ Mikrut 67 Dec 6, 2022
A NES emulator written in Rust, with a focus on expandability and accuracy

A NES emulator written in Rust, with a focus on expandability and accuracy

Benjamin Mordaunt 4 Sep 19, 2022
Unicorn Emulator Debug Server - Written in Rust, with bindings of C, Go, Java and Python

udbserver - Unicorn Emulator Debug Server When you do emulation with Unicorn Engine, do you want to inspect the inner state during every step? udbserv

Bet4 246 Dec 27, 2022
NES emulator written in Rust to learn Rust

OxideNES A NES emulator in Rust. CPU should be accurate, PPU is mostly accurate, timing between the 2 is off for some corner cases and hardware qui

null 37 Nov 7, 2022
Chip8 emulator written in pure rust, using rust-sdl2 for graphics

Rust-8 chip8 emulator written in rust, using rust-sdl2 for graphics. Features Fully implemented all 35 original chip8 opcodes. This emulator does NOT

Chris Hinson 7 Dec 28, 2022
Commodore 64 emulator written in Rust

Rust64 - a C64 emulator written in Rust This is my attempt to study the Rust programming language and have fun at the same time. The goal is to presen

Krzysztof Kondrak 214 Dec 27, 2022
A Flash Player emulator written in Rust

website | demo | nightly builds | wiki Ruffle Ruffle is an Adobe Flash Player emulator written in the Rust programming language. Ruffle targets both t

Ruffle 11.2k Jan 8, 2023
An NES emulator written in Rust

Pinky Pinky is an NES emulator written in Rust completely from scratch based only on publicly available documentation. You can run it in your Web brow

Koute 709 Dec 23, 2022
NES emulator written in Rust

sprocketnes is an emulator for the Nintendo Entertainment System written in the Rust programming language. Its purpose is to serve as a technology dem

Patrick Walton 725 Dec 27, 2022
ZX Spectrum emulator written in Rust

rustzx ZX Spectrum emulator which I writing in rust. I develop this project just for fun and for learning the basics of computer architecture. License

Vladislav Nikonov 162 Dec 27, 2022
CHIP-8 emulator written in Rust

CHIP-8 emulator written in Rust. This is intended to be a project for gaining experience writing emulators and practice Rust.

Pedro Rodrigues 4 May 21, 2021
A 6502 emulator written in Rust.

v6502 This package contains an emulator for the 6502 microprocessor. It doesn't support binary decimal (BCD) mode yet. To run the debug version: cargo

Andrew Young 4 Nov 14, 2021
Spaghetti Chip8 Emulator Written In Rust

How to run? Command is simple: cargo run FILENAME. files are stored in the /c8games folder, use one of them. Example: cargo run INVADERS Keymap use 1

Can 5 Apr 15, 2022