Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/kelpsyberry/dust

A Nintendo DS emulator written in Rust for desktop devices and the web, with debugging features and a focus on accuracy
https://github.com/kelpsyberry/dust

debugging-tools ds emulator nintendo-ds rust

Last synced: 2 days ago
JSON representation

A Nintendo DS emulator written in Rust for desktop devices and the web, with debugging features and a focus on accuracy

Awesome Lists containing this project

README

        

# Dust

[![Build status](https://github.com/kelpsyberry/dust/actions/workflows/clippy.yml/badge.svg?branch=main&event=push)](https://github.com/kelpsyberry/dust/actions/workflows/clippy.yml?query=branch%3Amain+event%3Apush)
[![Discord server](https://dcbadge.vercel.app/api/server/MRDEvx8rKy?style=flat&theme=default-inverted)](https://discord.gg/MRDEvx8rKy)

![Screenshot](screenshot.png)

## Web version

[![Web deploy status](https://github.com/kelpsyberry/dust/actions/workflows/deploy-web.yml/badge.svg?branch=main&event=push)](https://github.com/kelpsyberry/dust/actions/workflows/deploy-web.yml?query=branch%3Amain+event%3Apush)

[Web frontend](https://dust-ds.netlify.app)

## Prebuilt binaries

[![Binary release build status](https://github.com/kelpsyberry/dust/actions/workflows/build-release.yml/badge.svg?branch=main&event=push)](https://github.com/kelpsyberry/dust/actions/workflows/build-release.yml?query=branch%3Amain+event%3Apush)
[![macOS app bundle release build status](https://github.com/kelpsyberry/dust/actions/workflows/build-release-macos-app-bundles.yml/badge.svg?branch=main&event=push)](https://github.com/kelpsyberry/dust/actions/workflows/build-release-macos-app-bundles.yml?query=branch%3Amain+event%3Apush)

- The base configuration only includes all features necessary to run games as an end user
- The debugging configuration additionally enables logging of diagnostic events on the emulated system (i.e. invalid I/O device usage or port accesses) and several debugging views (i.e. memory and register viewer and a disassembly view), all accessible from the Debug menu
- The debugging + GDB server configuration also enables support for a GDB client to attach to and debug the emulated program, by starting/stopping the server from the Debug menu while running a program

> **NB**: The debugging configurations only add debugging features for loaded programs; all binaries are compiled with optimizations and don't include debug symbols for the emulator itself.

| OS and binary type | Base | Debugging | Debugging + GDB server |
| ------------------ | ---- | --------- | ---------------------- |
| Windows x86_64 .exe | [Windows.zip](https://nightly.link/kelpsyberry/dust/workflows/build-release/main/Windows.zip) | [Windows-debug.zip](https://nightly.link/kelpsyberry/dust/workflows/build-release/main/Windows-debug.zip) | [Windows-debug-gdb.zip](https://nightly.link/kelpsyberry/dust/workflows/build-release/main/Windows-debug-gdb.zip) |
| Linux x86_64 binary | [Linux.zip](https://nightly.link/kelpsyberry/dust/workflows/build-release/main/Linux.zip) | [Linux-debug.zip](https://nightly.link/kelpsyberry/dust/workflows/build-release/main/Linux-debug.zip) | [Linux-debug-gdb.zip](https://nightly.link/kelpsyberry/dust/workflows/build-release/main/Linux-debug-gdb.zip) |
| macOS universal app | [macOS-app.zip](https://nightly.link/kelpsyberry/dust/workflows/build-release-macos-app-bundles/main/macOS-app.zip) | [macOS-app-debug.zip](https://nightly.link/kelpsyberry/dust/workflows/build-release-macos-app-bundles/main/macOS-app-debug.zip) | [macOS-app-debug-gdb.zip](https://nightly.link/kelpsyberry/dust/workflows/build-release-macos-app-bundles/main/macOS-app-debug-gdb.zip) |
| macOS x86_64 binary | [macOS-x86_64.zip](https://nightly.link/kelpsyberry/dust/workflows/build-release/main/macOS-x86_64.zip) | [macOS-x86_64-debug.zip](https://nightly.link/kelpsyberry/dust/workflows/build-release/main/macOS-x86_64-debug.zip) | [macOS-x86_64-debug-gdb.zip](https://nightly.link/kelpsyberry/dust/workflows/build-release/main/macOS-x86_64-debug-gdb.zip) |
| macOS ARM64 binary | [macOS-aarch64.zip](https://nightly.link/kelpsyberry/dust/workflows/build-release/main/macOS-aarch64.zip) | [macOS-aarch64-debug.zip](https://nightly.link/kelpsyberry/dust/workflows/build-release/main/macOS-aarch64-debug.zip) | [macOS-aarch64-debug-gdb.zip](https://nightly.link/kelpsyberry/dust/workflows/build-release/main/macOS-aarch64-debug-gdb.zip) |

## Credits
- Martin Korth, for summarizing resources on the DS on [GBATEK](https://problemkaputt.de/gbatek.htm)
- [Arisotura](https://github.com/Arisotura), for her research on the system in melonDS, [test ROMs](https://github.com/Arisotura/arm7wrestler) and [corrections and additions to the info on GBATEK](https://melonds.kuribo64.net/board/thread.php?id=13), and for the game database used in this emulator
- [StrikerX3](https://github.com/StrikerX3), for his research on 3D rendering on the DS
- [Simone Coco](https://github.com/CocoSimone), [Fleroviux](https://github.com/fleroviux), [Lady Starbreeze](https://github.com/LadyStarbreeze), [Merry](https://github.com/merryhime), [Powerlated](https://github.com/Powerlated) and [Peach](https://github.com/wheremyfoodat) for help throughout development
- The Emulation Development server on Discord as a whole, for providing several invaluable resources

## Sister projects
- [**Kaizen**](https://github.com/SimoneN64/Kaizen): Experimental work-in-progress low-level N64 emulator
- [**n64**](https://github.com/Dillonb/n64): Low-level, accurate, fast and easy to use Nintendo 64 emulator
- [**Panda3DS**](https://github.com/wheremyfoodat/Panda3DS): A new HLE Nintendo 3DS emulator
- [**melonDS**](https://github.com/melonDS-emu/melonDS): "DS emulator, sorta"; a DS emulator that focuses on being accurate and easy to use
- [**SkyEmu**](https://github.com/skylersaleh/SkyEmu): A low-level GameBoy, GameBoy Color, GameBoy Advance and Nintendo DS emulator that is designed to be easy to use, cross platform and accurate
- [**NanoBoyAdvance**](https://github.com/nba-emu/NanoBoyAdvance): A Game Boy Advance emulator focusing on hardware research and cycle-accurate emulation
- [**Chonkystation**](https://github.com/liuk7071/ChonkyStation): WIP PS1 emulator