Skip to content

Senryoku/Deecy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Deecy

Deecy is a very experimental Dreamcast emulator written in Zig.

Videos: Soul Calibur (May 2024), Grandia II (July 2024)

image

Build and Run

Install the correct zig version (see .zigversion, I try to keep up with Mach nominated version). You can use zigup to manage your installed zig versions, or get it from https://machengine.org/docs/nominated-zig/.

zigup 0.14.0-dev.2577+271452d22

Clone and build. Zig will fetch all dependencies automatically.

git clone https://github.com/Senryoku/Deecy         # Clone the repo
cd Deecy
zig build run                                       # Build and run in debug mode without any argument
zig build run --release=fast -- -g "path/game.gdi"  # Build and run in release mode and loads a disc

You will also need to provide copies of dc_boot.bin and dc_flash.bin files in the data/ directory.

Linux

nfd-zig (native file dialog) needs these additional dependencies on Linux:

sudo apt install libgtk-3-dev

Things I know I have to do

  • Debug, debug, debug.
  • MMU: Only supported for store queue writes using the pref intruction (used by Ikaruga for example)
  • AICA:
    • DSP
  • Renderer:
    • Framebuffer:
      • Improve detection of writes to framebuffer (false positives?)
      • Write back for games that need it.
    • Modifier Volumes.
      • Implemented: Inclusion volumes and shadow bit over opaque and transparent geometry.
      • Missing: Exclusion volumes.
      • Missing: Translucent MV in pre-sort mode.
    • Region Array Data Configuration are mostly ignored.
      • Z Clear bit.
      • Flush Accumulate? (Secondary accumulate buffer)
      • Multipass rendering.
    • Fog LUT Mode 2.
    • User Tile Clip, only the simplest version is supported.
    • Bump mapping.
    • Secondary accumulate buffer (very low priority, not sure if many games use this feature).
    • Mipmaps for palette textures?
    • Sort-DMA?
    • Follow ISP_FEED_CFG discard mode flag? (Find a game that turns it off)

Nice to have

  • Some (rendering) performance metrics directly in the emulator?
  • GDROM-DMA: Uses a superfluous memcpy (gdrom -> dma-queue -> ram). Not a huge deal on my main system, but I bet it's noticeable on lower end devices.

Some sources

Dependencies

Dependencies are managed by the build.zig.zon file.

Thanks

  • Huge thanks to drk||Raziel and MetalliC for their respective contributions to the scene, and for answering my questions!
  • Thanks to originaldave_ for the sh4 tests (https://github.com/SingleStepTests/sh4)
  • And overall thanks to everyone participating in the EmuDev Discord :)

Licence

  • Uses data from MAME under the BSD-3-Clause licence (see src/gdrom_secu.zig).

About

Experimental Dreamcast emulator written in Zig

Topics

Resources

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published