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.

Video of Soul Calibur running in Deecy (May 2024)

image

Build and Run

Install the correct zig version (see .zigversion). You can use zigup to manage your installed zig versions.

zigup 0.12.0-dev.3180+83e578a18
git clone --recurse-submodules https://github.com/Senryoku/Deecy     # Clone the repo and its submodules
cd Deecy
zig build run                                                        # Build and run in debug mode without any argument
zig build run -Doptimize=ReleaseFast -- -g game/game.gdi             # Build and run in release mode and loads a gdi 

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

Things I know I have to do

  • Debug, debug, debug.

  • Better low level emulation: Most games do not work as well when not using the HLE'd syscalls.

  • ch0-DMA and ch1-DMA?

  • What's "Maple V blank over interrupt"? "This interrupt is generated when a Maple interface transmission/reception operation spans V-Blank_In."

  • VMU/Storage

  • The whole AICA Chip. Please have mercy.

  • Renderer:

    • Modifier Volumes.
      • Implemented: Inclusion volumes and shadow bit over opaque geometry.
      • TODO: Exclusion volumes.
      • TODO: Handle polygons with 'Two Volumes' (another way to use the modifier volumes).
      • TODO: Same, but for the translucent pass.
    • Fog LUT Mode 2.
    • Secondary accumulate buffer (very low priority, not sure if many games use this feature)
    • Handle and generate Mipmaps.
    • Sort-DMA?
    • User Tile Clip, only the simplest version is supported.
    • (Improvement?) OIT: Add an option to allocate lists per slice to allow processing them in parallel when memory is not an issue (we're currently limited by the limit on binding buffer size, not total memory). No idea of the potential gain, if any.
  • Ikaruga need some sort of MMU support :( Apparently only around the Store Queue, but I'm still unsure how much of the MMU I need to implement to circumvent this (and the interpreter is already painfully slow). The fact that the issue arise before issuing a pref instruction with the MMU on lead me to think there's more to it.

Things I don't know I have to do

  • A lot more than the previous list

Some sources

Dependencies

Thanks

  • Huge thanks to drk||Raziel and MetalliC for their respective contributions to the scene, and for answering my questions!

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

Releases

No releases published

Packages

No packages published