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
- 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 inTad_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)
- Removed
- 64tass API changes:
tad-variables-private.inc
has been renamed totad-lowram.inc
tad-variables-public.inc
has been renamed totad-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
andadjust_echo_feedback
instructions - Added
set_fir_filter
,set_fir_tap
andadjust_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 theSET_GLOBAL_MUSIC_VOLUME
,SET_GLOBAL_SFX_VOLUME
andSET_GLOBAL_VOLUMES
IO commands.) - Fixed an audible glitch after a
PAUSE
orPAUSE_MUSIC_PLAY_SFX
IO Command. - Increased maximum song tick clock to 256 (
#Timer
MML header andT
MML command).- A
SET_SONG_TIMER
IO command with a 0 parameter will set the song tick clock to 256.
- A
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 withl
to specify MML lengths instead of tick numbers.
For example:ql16,18
is equal toq6,18
with a 96 ZenLenVs+100,l2
is equal toVs+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
orpx
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
andTad_QueueCommandOverride
can now queue IO commands with 2 parameters.- Added
SET_GLOBAL_MUSIC_VOLUME
,SET_GLOBAL_SFX_VOLUME
andSET_GLOBAL_VOLUMES
IO Commands - Added
Tad_audioMode
global variable andTadAudioMode
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 inTad_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 toSET_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