Skip to content

v0.1.0

Latest
Compare
Choose a tag to compare
@undisbeliever undisbeliever released this 01 Mar 11:24

This release stabilises the MML and bytecode assembly syntax and behaviour.

CAUTION: The loader and 65816 APIs have changed. If you are using a 65816 API, you will need to update it.

Changelog

Breaking Changes:

  • Subroutine file header is now MML containing sound effect subroutines
  • Changed LoaderDataType format
    • Removed SKIP_ECHO_BUFFER_RESET_BIT
    • Changed PLAY_SONG_BIT
    • Added SURROUND_FLAG_BIT
    • Added RESET_GLOBAL_VOLUMES_BIT
  • Removed blank-song.bin (Tad_BlankSong_Bin).
    The blank song is now a single zero byte embedded in the ca65/64tass/pvsneslib API code.
  • The song data format has changed.
  • API changes:
    • Removed Tad_SetMono, Tad_SetStereo, Tad_GetStereoFlag functions
    • Added TadAudioMode enum
    • Added public tad_audioMode variable
    • Tad_flags is now a public variable
    • The RELOAD_COMMON_AUDIO_DATA flag is now checked and cleared in Tad_LoadSong
    • Added RESET_GLOBAL_VOLUMES_ON_SONG_START flag
      • Useful for when a level or menu lowers the volume and the global volumes are normally at maximum.
    • Private variables and functions are now prefixed with TadPrivate_ (tadPrivate_ for PvSnesLib API)
  • 64tass API changes:
    • tad-variables-private.inc has been renamed to tad-lowram.inc
    • tad-variables-public.inc has been renamed to tad-zeropage.inc

Audio driver changes:

  • Stereo echo volume
    • If audio mode is mono, the two channels will be averaged together
  • Added set echo volume instructions
  • Added adjust echo volume instructions
  • Added set_echo_feedback and adjust_echo_feedback instructions
  • Added set_fir_filter, set_fir_tap and adjust_fir_tap instructions
  • Added limit to adjust echo feedback and adjust FIR tap instructions
  • Added set_channel_invert instruction (i MML command)
  • Added set_echo_invert instruction (\ei MML command)
  • Added maximum echo delay to the driver
  • Added set_echo_delay instruction (\edl MML command)
  • The : skip_last_loop can now jump more than 256 bytes
  • Added sound effect subroutines
  • Sound effects playing noise will mute music noise.
  • Added surround audio mode
    • Surround mode allows for the left or right channels to be individually inverted.
    • In stereo mode, the left and right channels are both inverted if the mono invert-flag is set.
  • Added global music and sound-effect volumes.
    (See the SET_GLOBAL_MUSIC_VOLUME, SET_GLOBAL_SFX_VOLUME and SET_GLOBAL_VOLUMES IO commands.)
  • Fixed an audible glitch after a PAUSE or PAUSE_MUSIC_PLAY_SFX IO Command.
  • Increased maximum song tick clock to 256 (#Timer MML header and T MML command).
    • A SET_SONG_TIMER IO command with a 0 parameter will set the song tick clock to 256.

MML changes:

  • #EchoVolume now accepts a stereo input
  • #EchoVolume only accepts unsigned (0 - 127) values
  • Added #EchoInvert header
  • Added global echo commands
  • Added #MaxEchoLength header
  • The \asm command requires a space after \asm (breaking change)
  • <ticks> arguments now can be prefixed with l to specify MML lengths instead of tick numbers.
    For example:
    • ql16,18 is equal to q6,18 with a 96 ZenLen
    • Vs+100,l2 is equal to Vs+100,48 with a 96 ZenLen
  • Added ( decrement volume command
  • Added ) increment volume command
  • MD automatic detune range is now +/- 1200 cents
  • A v, V, p or px command without a parameter is now an error

GUI changes:

  • Fixed a rust bytecode interpreter desync where global instructions were executed in the wrong order.
  • Fixed play-from-cursor not playing the note immediately after the cursor
  • Fixed a sound effect containing a new-sound-effect token (\n===) not saving and loading correctly.
    The new-sound-effect token will be silently transformed into a comment when the sound-effects file is saved to disk.
  • Added audio driver state sub-window (F11).
  • Fixed F9 keyboard shortcut conflict
    • F9 copies cursor position to the song start position in the song tab
    • Shift+F9 copies the cursor position to the song start position and mutes the other channels
    • F10 opens the sound effects window
    • F11 opens the audio driver state window

API changes:

  • Tad_QueueCommand and Tad_QueueCommandOverride can now queue IO commands with 2 parameters.
  • Added SET_GLOBAL_MUSIC_VOLUME, SET_GLOBAL_SFX_VOLUME and SET_GLOBAL_VOLUMES IO Commands
  • Added Tad_audioMode global variable and TadAudioMode enum.
    • The old subroutines for setting the audio mode have been removed.
  • Tad_flags is now a public variable
  • The RELOAD_COMMON_AUDIO_DATA flag is now checked and cleared in Tad_LoadSong
  • Added RESET_GLOBAL_VOLUMES_ON_SONG_START flag
  • Added a way to override the default values (see the API's readme file for more details)
  • Renamed SET_SONG_TEMPO IO command to SET_SONG_TIMER (to match the #Timer MML header)

Known Bugs

  • Sample Analyser spectrum can only analyse the first 32768 samples in a long BRR sample
  • The driver state window does not work if the song contains an error