BMOD history: (some comments are used only by me) Before 0.1 More and less buggy versions for me and Quaid/BFB Team. Just before 0.1 Working version. Yippee! =) 0.1 -Initial ßeta release. 081096 -PT-commands included: 9xx - sample offset Axx - volume slide Bxx - position jump Cxx - volume change Dxx - pattern break E6x - pattern loop (buggy) EAx - fine volume slide up EBx - fine volume slide down Fxx - speed / cia speed 0.2 -Rewrote is_UpdatePatternPointers to two different sections, 141096 is_PreUpdatePatternPointers and is_PostUpdatePatternPointers. Pre is called before reading any pattern data and post after activating samples in channels. -Fixed bug in Dxx-command which caused jump not to work. -E6x still doesn't work right. =( -EAx and EBx commands fixed. Commands were activated in the last ps_PlayCounter position. Now activates them in the first. -Fixed bug in AllocateCIAInt, which caused system crash if both timers were already allocated by some other program. -Included commands: 1xx - portamento up 2xx - portamento down -Some BSR's removed. -Whooah! Fixed CIA timing totally. Rewrote ICR-register addressing to use AbleICR, which fixed all timing problems. System routines rule!!! 0.30 -Fixed one Mungwall hit. (2 bytes over allocated mem) 181096 -Fixed E6x-command. Now works like it should be. -Included commands: E1x - fine portamento up E2x - fine portamento down ECx - note cut (not tested too much) EEx - pattern delay 0.31 -If error happened, error code was always -1. Fixed. xx1096 -Now tries to allocate audio channels too. Returns -2 if audio Release channels were in use. (Uses pri 127) for -Rewrote DMA Wait routine to use DBcc-loops. BFBPlay -Removed some unneccessary DMACON/INTREQ checks. Master -Included commands: Library 0xx - arpeggio E0x - filter on/off -Wrote some parts of code to conditional assembly. -Axx-command fades volume too quickly although it shouldn't. -Changed module format a little and bumped module revision up by one. Convert your BMOD's again. -Conditional assembly added. 0.32 -Some IFcc's added for InitialCIATempo and InitialSpeed. xx1196 -Changed InitialCIATempo's moveq to move.w. -Added code for clearing DELTA_SAMPLES bit in mi_Info when InitializeSampleStarts did unpack samples. -Fixed a bug in PTCONV, which made some modules been converted wrong. -Fixed bug in setting channel volume when no note was specified and sample was. -Some optimizations in source code. -Included commands: E9x - retrigger note ECx - note cut 0.33 -Added support for F00, which stops playing. 011296 -Included commands: 3xx - tone portamento E3x - gliss control -Some size optimizations. -Fixed Portamentos to do clr.w ct_Effect(a2). (01-16)1296 -Again, E6x had a bug, fixed. (I should terminate this command for good.) 161296 -Some optimizations. (jumps, is_DoEffects, is_E_Commands) 171296 -More optimizations, included together is_Pre- & PostUpdatePattern- Pointers. Now doesn't calculate Pattern in all rows. 201296 -ARGH! Fixed a pointer mistypo in 3xx-command, which caused periodslide to go berserk. 221296 -Coded internal pattern packformat. Reduses pattern lengths by ~50%. Because of packing, Dxx-command ignores given pattern- position. -Because of packing, some limits were raised, look more info from BMOD.guide. -3xx offline for now, because it does not work with pattern packing. Needs little recoding. 231296 -Found a bug in version check. Fixed. 241296 -Yippee! Merry christmas! Got this beast working in some way that it could be released. 271296 -Fixed few bugs in Volume column handling. -Restructured address register usage in is_ReadChannel. -Changed ptconv.e and bm.e to use ReadArgs(). (Maybe the editor will support KS1.3..) -is_PreUpdatePatternPointers is now known as is_UpdatePointers. 060197 -Happy new year! -Fixed conditional compiling in CheckDelta and added UnpackDelta. -Optimized a little bit ReadData loop. -Coded de_NewSampleOffset. Offset between pointer positions is 256 bytes, which gives us 256*256*2=131072 bytes per sample. -3xx online again, it was very easy to implement after all. 200197 -Removed one (?) unneccessary moveq in (delta)unpack. -Changed de_NewSampleOffset behavior. Now points directly to the last 64k sample, so if you do 10 25 = 64k + 256b*25 = ~72k Uses 128b offset. -Found bug in is_ReadChannel's ct_Note offset handling. Cleared wrong half of ct_Volume which caused volume to bug. 0.34 080397 -Long time no see. -Compression now is on when its bit is cleared. Should give better compression ratios when module is packed. 090397 -Done is_DoXEffect to ease the work in using eXtended commands. -Made command subroutines more generic. 150397 -Some mulu.w's replaced with fast assembly multiply routines by me. 310397 -Fixed a bug in GetPatternLengths which caused Enforcer read hits. 0.35 210497 -Started adapting BMOD to use AHI. -Some commands are offline until converted to use AHI. 020597 -Coded MakeSampleRates-function. 030597 -Now BMOD can use precalculated samplerates to speed up things. 080597 -Fixed few bugs. -Splitted up is_PlayChannels, so effects are more easier to use with AHI. -Forgotted to activate some effects. -Coded PlayControl-function. 090597 -If volume was changed in channel which wasn't playing any sample, crash. Fixed. 150597 -Tried to stop module play, even if ahi.device was not open. Fixed. -More foolproof checks to PlayControl-function. -A few incremental addressing modes changed to decremental to gain very little more speed.