Add player for A2M (versions 1-14) and A2T (versions 1-14)#207
Conversation
75eb3bd to
2c4e5d6
Compare
2c4e5d6 to
593f15f
Compare
1 similar comment
|
Sorry for slow response, been extra busy last months. CI currently does not compile, so that needs to be resolved. depack.c: from readme.txt: Probably nice to reach out to the author, since we only use one of the files. sixpack.c: no special copyright requirement present, published as entry in a magazine competition. unlzh.c: no special copyright requirement present, |
|
I've sent a message to contact@ibsensoftware.com asking for permission to use depack.c as-is. |
|
Thanks for taking the time to reach out, you are welcome to use the aPLib decompression code here. |
|
Thanks! |
Still need to fix the CI that fails. |
Enet4
left a comment
There was a problem hiding this comment.
I figured I'd leave some comments on this PR, as I am interested in this A2M loader and I'm seeing that it might get further traction in the near future. Can't speak much about the errors in CI, as I'm not very familiar with the full project.
- add a2m-v2 impl - replace A2M loader in main application - add the necessary C dependencies - tweak CMakeLists to include dependencies and compile C code Code adapted from adplug/adplug#207
|
Now using static_assert() everywhere, and dropped redundant one. |
.ref files are stored in testref directory, not testmus
…plicating all the code.
…ich can guard against this.
…flow in playertest, most of them had problem in stresstest.
|
@mywave82 , thanks for you patch, I was about to make smth very similar. I'll see if it can be improved to look more elegant... |
|
https://ci.appveyor.com/project/AdPlug/adplug/builds/49753291 Appears that MSVC does not like the ... in the switch case blocks |
|
It's a shame for MSVC, it seems that gcc and clang support '...' in case clauses... |
…zed. Cleanest fix is likely to use calloc() for the window buffer so that the result always is consistent.
|
Looking through the code, and the few parts that probably would be endian sensitive is not in "danger" at the moment, since the memcpy() are commented out. We are probably ready to merge :-) |
|
Let's go for it! Better squash commits or leave as is? |
- add the required C bitpacking libraries into `deps/` - add a2m-v2 impl - replace A2M loader in main application - add the necessary C dependencies - tweak CMakeLists to include dependencies and compile C code Code adapted from adplug/adplug#207
- add the required C bitpacking libraries into `deps/` - add a2m-v2 impl - replace A2M loader in main application - add the necessary C dependencies - tweak CMakeLists to include dependencies and compile C code Code adapted from adplug/adplug#207
|
@dmitrysmagin Could you please take a look at these errors? #247 |
Hi.
After years of converting FreePascal to C I was able to commit this code to adplug...
This is a direct translation of the player routine from the sources of the Adlib Tracker 2 (http://adlibtracker.net/). A2M and tiny modules A2T are supported (versions 1 - 14).
However, this player doesn't replace the original a2m.cpp, but picks up all modules that a2m.cpp can't handle.
Ideally, I'd like to remove old a2m.cpp in future since it doesn't support some effects and panning even for versions 1-8.
Now about packers:
I've left the names 'depack.c' and 'sixpack.c' because those are original names used by their authors. Note that the old 0.26 algo for aPlib is used which is incompatible with the recent aPlib.
As for 'unlzh.c', it's a combination of multiple original files with some custom tweaking which might make the algo incompatible with the original lzh.
All original copyrights and license details are kept intact along with some notes from the authors.
Yes, the author of Adlib Tracker 2 is notoriously known for using a new pack/unpack routine for every new a2m version...
UPDATE 2024-03-06: Added unlzw.c and unlzwss.c unpackers.