Skip to content

Latest commit

 

History

History
86 lines (72 loc) · 2.93 KB

TODO.md

File metadata and controls

86 lines (72 loc) · 2.93 KB

TO-DO List

Here are some ideas that came to my mind.

  • Make as shared library.

    • AYMO_API for __stdcall. → DROPPED: no need for __stdcall!
    • AYMO_PUBLIC for declspec / attribute. → DONE!
  • Add score replayer.

    • IMF score format. → DONE!
    • DRO score format. → DONE!
    • RAW score format. → DONE!
    • VGM score format. → DONE!
    • Benchmark mode, to be integrated with Meson. → DONE!
  • Add YMF262.

    • All CPU architectures.
      • x86 SSE4.1DONE!
      • x86 AVX (VEX encoded SSE4.1)
      • x86 AVX2DONE!
      • ARM NEONDONE!
    • 4-slot operators. → DONE!
    • rhythm mode. → DONE!
  • Add most of the possible YMF262 static operator configurations for unit tests. → DEFERRED: sticking to AdPlug reference scores

    • Single-note scores.
    • 4-slot operators.
    • Rhythm mode.
    • Leaving complex and dynamic parameters to actual music scores.
  • Make YMF262 queue delay dynamically configurable.

    • Shrinking requires phase counter clamping.
  • Take queuing away from YMF262 instances.

    • Make as CPU-independent utility class.
    • Make default length 1024.
    • Make length and pointers configurable.
    • Queue status accessors.
  • Allow YMF262 output multiple formats.

    • int16 / float. → DONE!
    • 2 / 4 channels. → DONE!
    • planar / interleaved buffers. → DROPPED: planar converted externally.
  • Add simple linear resampler. → DEFERRED: use existing resampler libraries

    • Stereo.
    • int16 / float.
    • Fixed 2x/4x/8x up-samplers, with dedicated FIR windows.
    • Piece-wise down-sampling to custom rates.
  • Add YM7128B.

    • All CPU architectures.
      • x86 SSE2
      • x86 SSE4.1DONE!
      • x86 AVX
      • x86 AVX2
      • ARM NEONDONE!
    • Stick to the closest fixed point models. → DONE!
    • C++ wrappers.
  • Add TDA8425.

    • All CPU architectures.
      • x86 SSE
      • x86 SSE4.1DONE!
      • x86 AVX
      • x86 AVX2DONE!
      • x86 FMA
      • ARM NEONDONE!
    • float32 model. → DONE!
    • int16 mode.
    • C++ wrappers.
  • Add YMF262 superset.

    • Rough emulation of similar Yamaha operators.
    • For accelerated music plugins (not for actual emulation).
    • C++ wrappers.
  • Add YM3812 subset.

    • Remove unecessary features from YMF262.
    • Interleave 2-op code to benefit from multiple dispatch SIMD.
    • Add Composite Sine Mode.
  • Add built-in plugin APIs to all emulated models.