trapezoid-core 0.3.0

A PSX emulator, backed by vulkano for rendering
Documentation
# trapezoid-core

[![Crates.io trapezoid-core](https://img.shields.io/crates/v/trapezoid-core)](https://crates.io/crates/trapezoid-core)
[![docs.rs (with version)](https://img.shields.io/docsrs/trapezoid-core/latest)](https://docs.rs/trapezoid-core/latest/trapezoid-core/)

This is the core of a PSX emulator [`trapezoid`](https://github.com/Amjad50/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


[`vulkano`]: https://github.com/vulkano-rs/vulkano
[`trapezoid`]: https://crates.io/crates/trapezoid