Author Topic: [C] C-Flod - Flod 4.1 Amiga mod player converted to C by rofl0r  (Read 6846 times)

0 Members and 1 Guest are viewing this topic.

Offline padman

  • Senior Member
  • Pentium
  • ********
  • Posts: 990
  • Karma: 260
    • View Profile
Hi guys,

I just stumbled across this whilst googling and thought I'd put it on here for some more attention. I have very little knowledge of C and the last time a dabbled at it was in the VS C++ 6 era, so I don't really have a clue what to do with it let alone how to compile it.  ???  But maybe some cunning C coder will convert this into a handy DLL or static lib someday and we'll all finally have a nice Amiga music replayer for PC. That'd be great!  ;D

Anyways, the source code can be found here: https://github.com/rofl0r/c-flod

Pad

From the readme.txt:

Code: [Select]
C-Flod        version 4.1
2012/05/16
rofl0r

currently done:

- complete flod core
- whittaker player
- future composer
- (ultimate) sound tracker
- pro tracker
- fasttracker 2
- digital mugician
- soundfx
- sidmon 1,2
- bp soundmon
- rob hubbard (only v1)
- "fred editor" player
- jochen hippel and COSO players.
  (there are a few tunes (maybe 3-5 %) that are not working correctly.
   they dont work in uade/original flod either.)
- DeltaMusic 1 & 2
- pseudo barebone flashlib
- libao and wave writer backends.

in my conversion i followed a pretty straight 1:1 approach,
so that the number of bugs introduced is minimized and future enhancement
in flod can be backported easily.

i am currently in the process of translating the remaining players.

my goal is to remove any dynamically allocated memory so it could
be used with a fixed memory usage profile on low end hardware (gba, nds).
since the samples for the fasttracker can be of any size, this needs either
a custom allocator or a pretty huge buffer for each instrument.

the build system should allow to turn off unneeded players and set the size
of buffers manually for the specific need.

also, the code could probably be simplified a lot by removing some of the
classes and using direct memory writes etc.

-------------------------------------------------------------------------------------

Flod          version 4.1
Flod JS       version 2.1
Flip          version 1.2

   2012/04/30
   Christian Corti
   Neoart Costa Rica

   E-Mail: flod@neoartcr.com

This work is licensed under the Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.
To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter to
Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.

Flod is free for non commercial user, to use it in any commercial production I'll ask you to
mention the proper credits and to make a donation to: chreil@hotmail.com via PayPal, thank you.

Special thanks to Richard Davey, Mathew Nolan and Andreas Argirakis :)

What's new:
4.1/2.1:
  - some small modules (less than 2150 bytes) were not recognized as valid
  - His Master's Noisetracker, fixed Peggy Go Home null sample pointer
  - His Master's Noisetracker, fixed Ikke Advanced wrong patterns pointers
  - SoundFX, fixed effect 9
  - SoundFX, added support for untouched Operation Stealth modules
  - Soundtrackers, fixed period overflow, portamento up/down
  - FastTracker II, fixed not working master volume
4.0/2.0:
  - new David Whittaker player
  - new FredEd player
  - new Jochen Hippel player (regular and COSO formats, 4 voices only)
  - new Rob Hubbard player
  - added DigiBooster Pro 2.18 detection to the XM player
  - Delta Music 1.0, fixed wrong sustain value
  - Delta Music 2.0, fixed Warfalcons-Intromusik 2 crash
  - Delta Music 2.0, fixed wrong restart pointer
  - Digital Mugician, fixed sample loop pointer (fixes Hoi Level 4)
  - Future Composer (Flod only), 1.0/1.3 was using the wrong waves
  - SoundFX, fixed effect 7/8 [step down/up] (fixes Forever Tonight)
  - SidMON 2, fixed effect C/F [volume and speed] (fixes Cool Module)
  - SidMON 2 was processing effects at tick 0, it shouldn't :)
  - SidMON 2, fixed adsr sustain volume
  - SoundMon, fixed buffer restore, most modules didn't play at all
  - ProTracker/NoiseTracker fixed vibrato depth value not set at the beginning
  - Fixed and updated Flip/Unzip
3.0/1.0:
  - Flod XM is now part of Flod base code
  - Lots of bugs fixed
  - Flod JS source code released

Supported Formats:
  - Brian Postma's SoundMon 1.0/2.0/3.0
  - David Whittaker
  - Delta Music 1.0
  - Delta Music 2.0/2.2
  - Digital Mugician
  - Digital Mugician 7 voices
  - D.O.C. Soundtracker 9/2.0
  - FastTracker II XM (PC)
  - FredEd
  - Future Composer 1.0/1.3
  - Future Composer 1.4
  - His Master's NoiseTracker
  - Jochen Hippel
  - Jochen Hippel COSO
  - NoiseTracker 1.0/1.1/2.0
  - ProTracker 1.0/1.1/1.2
  - Rob Hubbard
  - SidMON
  - SidMON II
  - SoundFX 1.0/1.8/1.9/2.0
  - Soundtracker 2.3/2.5
  - Ultimate Soundtracker, The (Karsten Obarski)
 
Challenge Trophies Won:

Offline Rbz

  • Founder Member
  • DBF Aficionado
  • ********
  • Posts: 2757
  • Karma: 493
    • View Profile
    • https://www.rbraz.com/
Hi there Padman,

I was taking a look at it, seems it was done for Linux gcc compiler, and it's hard to port, this code is way beyond my knowledge :(

I hope the original author was kind enough to port it to windows if he ever find this thread.
« Last Edit: April 17, 2021 by Rbz »
Challenge Trophies Won:

Offline Rbz

  • Founder Member
  • DBF Aficionado
  • ********
  • Posts: 2757
  • Karma: 493
    • View Profile
    • https://www.rbraz.com/
Hi there,

Not sure if there's still interest on this player for people here, anyway I did a another look at it and successfully  made a port for windows.

Attached the compiled player with some modules for anyone who would like to test and see if it's worth making a lib for other programming languages.
Challenge Trophies Won:

Offline padman

  • Senior Member
  • Pentium
  • ********
  • Posts: 990
  • Karma: 260
    • View Profile
Hi Rbz,

Well, what can I say? I have just tested it and it works like a charm. So cool of you, that you had a second look! I wouldn't mind a static lib or DLL either, even if it takes some years again.  ;)

Challenge Trophies Won:

Offline Rbz

  • Founder Member
  • DBF Aficionado
  • ********
  • Posts: 2757
  • Karma: 493
    • View Profile
    • https://www.rbraz.com/
Challenge Trophies Won:

Offline padman

  • Senior Member
  • Pentium
  • ********
  • Posts: 990
  • Karma: 260
    • View Profile
Sweet! Thanks a lot mate! K++  :)
Challenge Trophies Won: