mborik/SAA1099Tracker

Implement import of E-Tracker format

Closed this issue · 6 comments

📝 Feature description

  • E-Tracker is well known music tracker on Sam Coupé and there are still active composers.

💡 Expectations

  • To support a migration of composers to our SAA1099Tracker we should implement import of their modules.

⚒️ Solution

  • E-Tracker module import was already implemented in early iteration of this project (then called MIF85Tracker) here.
  • We should just rewrite it into TypeScript and enable the menu item.
  • Refactor all imports into src/tracker/file.import.ts

🔦 Additional context

As a feature creep, perhaps also support importing compiled e-tracker tunes? Zxart.ee has hundreds, they can be manually decompiled with a tool I wrote back in the day (see https://www.worldofsam.org/products/fred-best-fred )

@stefandrissen Thank you for your suggestion. 🙏
It's great but I'll need some cooperation to make it happen.

support importing compiled e-tracker tunes

Is there any description of E-Tracker compilation format? It's backward compatible to module format?

they can be manually decompiled with a tool I wrote back in the day

Are there any sources of your decompiler in readable form that could act as blueprint?
As a bonus, would you be able to suggest an algorithm or JS/TS/anything code draft for this import? 😉

No, unfortunately there's no description that I know of.

I do have a documented (disassembled) player.

I have also just found the source code to my d-compiler and added it to that repo.

Thank you for your repo and info, it will help a lot. 👍

@stefandrissen
Well, importing of E-Tracker compilation was a bit tough... ufff! 🥴
... but positions, patterns and ornaments are imported well and it seems OK. 🤞
I have a problem with samples.
I don't get a point how to handle sample format; It's pretty confusing for me that searching in 5th pointer from header and how it affecting a volume or repeating...? 🤔

// TODO FIXME: I don't know what's going on here!

:-) from a quick scan of the D-Compiler at line 426 - I /think/ I understand your confusion.

The volume / noise mask are all stored as RLE deltas (deviation).