trapezoid-core

Crates.iotrapezoid-core
lib.rstrapezoid-core
version0.1.2
sourcesrc
created_at2024-01-25 04:30:40.230101
updated_at2024-01-29 14:26:04.680585
descriptionA PSX emulator, backed by vulkano for rendering
homepage
repositoryhttps://github.com/Amjad50/trapezoid
max_upload_size
id1113452
size498,596
Amjad Alsharafi (Amjad50)

documentation

README

trapezoid-core

Crates.io trapezoid-core docs.rs (with version)

This is the core of a PSX emulator trapezoid. It contains all the components of a working emulator, the rest is a frontend.

You can create your own frontend for this project, or use it as a server.

Components implemented

  • CPU: Mips R3000A
  • GPU: backed by vulkano. i.e. for now, you need a project running vulkano to use this.
  • SPU: produce PCM frames that should be taken out regularly by the frontend.
  • CDROM: can read the contents of a PSX CDROM, and can be used to load games
    • Support XA-ADPCM audio.
  • MDEC: Able to decode MDEC frames and play videos
  • GTE: Geometry Transformation Engine
  • DMA: Direct Memory Access
  • Timers
  • Interrupts
  • Memory: Hosts the whole memory as a Box<[u8]> and provides access to it.
  • Memory card: will save/load memcard to/from disk, it will save to the current folder.
    • TODO: add API to control this
  • Debugging: We have an API to easily create a debugger for this emulator. This is used by the frontend trapezoid.

TODO

  • Multiple tracks in cdrom

  • A better API, currently the API only expose what the frontend needs. and thus doesn't have access to GPU, SPU, etc...

  • Better docs for the API

  • Add support for more CDROM formats

  • Better control over audio channels

Commit count: 0

cargo fmt