120 Commits

Author SHA1 Message Date
AliceLR
542f21ed15 Fix Digital Symphony effects and pattern loading issues.
* Digital Symphony stores patterns in blocks of 2000.
  libxmp previously did not handle this quirk.

* Implemented !Tracker effect 16 Line Jump, which is also used
  by Digital Symphony. This effect acts like Pattern Break, except
  it jumps into the current pattern instead of the next pattern.
  It can also be used in conjunction with Position Jump and Pattern
  Break to change their target row. This effect required minor flow
  hacks to work without clobbering running time.

* Fixed a scan bug related to FX_S3M_TEMPO where tempo values under
  32 would be ignored despite them being higher than the minimum
  allowed tempo.

* Fixed a memory leak in the Digital Symphony loader.

* Digital Symphony effects added:
  - Implemented 1F Invert Loop. This required a new quirk as invert
    loop is implemented in a way that assumes QUIRK_PROTRACK may be
    changed by xmp_set_player.
  - Implemented 2A Volume Slide + Fine Slide Down.
  - Implemented 2B Line Jump (same as !Tracker Line Jump).
  - Implemented 30 Set Stereo.
  - Implemented 32 Unset Sample Repeat. This required switching
    Digital Symphony modules to IT sustain loops instead of regular
    loops. This also required adding support for sustain loops to
    invert loop.

* Digital Symphony effects fixed:
  - Portamento effects 01 02 21 and 22 were incorrectly using
    effect memory.
  - Fine portamento effects 11 12 1a and 1b were being converted
    to Exx instead of their equivalent full byte parameter effects.
  - Vibrato and tremolo effects 04 06 07 now update on tick 0.
  - The highest 3 bits of 09 Set Sample Offset are now translated
    to FX_HIOFFSET instead of being ignored.
  - 0B Position Jump uses a hex parameter in Digital Symphony, but
    libxmp was treating it as decimal.
  - 0F Set Speed now ignores parameter 0 and clamps values >255.
  - 2F Set Tempo now only ignores parameter 0, and clamps other
    valid tempos instead of ignoring them.
  - Extended effects 16 1c 1d and 1e (which libxmp currently does
    not have dedicated effects for) are now bounded with a clamp
    instead of a modulo, which makes them slightly less wrong.
2022-02-23 07:53:52 -07:00
AliceLR
122f502941 Add support for MMDC packed OctaMED modules. 2022-01-12 01:39:00 -07:00
Ozkan Sezer
8b2a08fc7e Merge pull request #490 from AliceLR/symphony-sigma-delta
Add support for Digital Symphony sigma-delta samples.
2021-10-22 05:21:02 +03:00
AliceLR
4cab3e6c75 Add support for Digital Symphony sigma-delta samples. 2021-10-12 18:42:09 -06:00
AliceLR
af4a5c28bd Add Modplug ADPCM4 support for Impulse Tracker modules. 2021-10-09 19:25:20 -06:00
AliceLR
883ba3ad6c Fix loading of Digital Tracker FA08 MODs. 2021-10-04 04:43:26 -06:00
AliceLR
41e12a7885 Fix detection for TakeTracker TDZx MODs, add HMN format test. 2021-10-01 03:59:41 -06:00
AliceLR
3c063d85b4 STM patterns >=numpat should be loaded as blank patterns. 2021-09-22 22:08:49 -06:00
AliceLR
921a5f071e Fix MED4 hex volume, IFF area, and annotation text support. 2021-07-29 19:17:06 -06:00
AliceLR
152ea79570 Fix Coconizer bugs caused by ignoring the pattern offset field. 2021-07-29 06:42:35 -06:00
AliceLR
0ca3d337ba Add MIT-licensed Digital Symphony LZW decoder.
This removes the Digital Symphony loader's dependency on the LGPL
licensed ARC/ArcFS LZW decoder used in the depackers, meaning libxmp
builds with --disable-depackers should now be fully MIT.

The Digital Symphony loader has also been modified to allocate fewer
temporary sample buffers.
2021-07-24 16:54:38 -06:00
AliceLR
1cae7f47b1 Add MED2 format test, fix MED2 BPM handling. 2021-06-06 03:09:40 -06:00
AliceLR
faec405a05 Add GDM surround effect support, fine/surround/pan effect tests.
Adds tests for:
* Fix GDM fine extended effects continue. (#165, 40659db)
* Fix GDM set pan position effect. (#236, fa4b2349)

Also implements the GDM surround effect, which wasn't actually
supported by BWSB (hence why I didn't add it before), but 2GDM
correctly emits it when it encounters an XA4 effect. Supporting
this doesn't really hurt anything.
2021-06-04 19:48:18 -06:00
AliceLR
0d7b6c5cdf Better documentation and test case for old AMF 1.0 variant. 2021-06-02 19:10:21 -06:00
AliceLR
7db4ea3401 Add DSMI 1.0 AMF loader test. 2021-06-01 22:25:52 -06:00
AliceLR
c1017cc2dc Add support for DSMI 0.8 and 0.9 AMF modules. 2021-06-01 22:04:21 -06:00
AliceLR
d7211fda81 Fix DSMI AMF track 0 remapping bug. 2021-06-01 21:05:11 -06:00
AliceLR
a36d195a95 Add Coconizer and GMC loader tests. 2021-04-16 23:09:39 -06:00
AliceLR
58e5d7643e Fix uninitialized reads in DIGI Booster loader + add format test. 2021-03-17 05:08:37 -06:00
AliceLR
991d2b2283 Fix DigiBooster Pro PATT sanity check and make sure INFO loads first. 2021-01-30 05:18:51 -07:00
Ozkan Sezer
62e92d6b0f Merge pull request #290 from AliceLR/fix-skyt-loader
Fix SKYT Packer loader.
2021-01-18 17:04:28 +03:00
Ozkan Sezer
f0ececf9f0 Merge pull request #293 from AliceLR/fix-pp10-misidentification
Fix ProPacker 1.0 modules incorrectly identified as Module Protector.
2021-01-11 05:23:11 +03:00
AliceLR
c39084e2aa Fix ProPacker 1.0 modules incorrectly identified as Module Protector. 2021-01-09 17:13:49 -07:00
AliceLR
d05ae78f4d Fix bugs in The Dark Demon format loader.
* Fixes a bug in the test function where sample sizes would not be
  doubled, resulting in format identification failure.
* Fixes a bug in the test function where -1 would be returned
  unconditionally, resulting in format identification failure.
* Fixes a bug in the depack function where sample sizes would not
  be doubled, resulting in garbage pattern data being loaded.
* Normalized header depacking to not require seeks in the output
  file (to match the other ProWizard loaders).
2021-01-09 16:28:44 -07:00
AliceLR
e10b72087d Fix Hornet Packer load errors and potential SIGBUS. 2021-01-09 04:57:42 -07:00