*************************************************************************** ** ** ** The gruesome horror takes over the world ! ** ** ** ** It spreads an unbelievable fear ** ** ** ** It is back again : ** ** ** ** * T * R * A * C * K * E * R * P * A * C * K * E * R * ** ** ** ** This time with an improved 3rd Version ** ** ** *************************************************************************** Table of contents : 1.1 - New Facilities 1.2 - Short Introduction 1.3 - Long Introduction 2.1 - Why should you use it ? 2.2 - How should you use it ? 3.1 - Known bugs 4.1 - Who is allowed to use it ? 5.1 - Future plans 5.2 - Last words 1.1 : New Facilites ------------------- 1. - This time this routine should even run on all 68040 systems. 2. - 3 different replayroutines. (VLB&CIA-replay without system-interrupts and multitasking CIA-replay with system-interrupts. 3. - From now on you can start the song from any patternpositions in the song and lineposition in the pattern. 4. - You are able to switch on/off any voice you want at any time ! 5. - You can split song- and sampledatas. So you are able to replay different songs with the same samples. And the songdatas needn't to be in the Chipmemory anymore. 1.2 : Short Introduction ------------------------ What's Trackerpacker ? Trackerpacker is a Replayroutine ! How to use it ? You have to use it in the right way ! Why should you use it ? Because it's good ! Any other questions ? Mhhh....No ! OK, I see you are a real cool guy, who could save some lousy bytes on his HardDick..ahh Disk, because he doesn't need a documentation. But if you don't belong to this Mega-Cool-Ultra-Elite-Demo-Coders, in other words, if you are a real friendly, non-arrogant, normal Coder, you should read the rest :) 1.3 : Long Introduction ------------------------ So let us start with some words about the history of the unknown TrackerPacker series. It all has started 2.5 years ago, when I've heard of some really fast replayroutines, which should use only about 3-4 rasterlines. These news inspirated my mind and I had to prove my coding-skills as well. The result was a replaysystem, which packed the patterndatas in a simular way like the Laxity-Tracker, to save some bytes and to replay the module a little bit faster. And I was really proud on my work, because it was the first time (I thought so) that someone packed the patterndatas. The replayspeed wasn't too bad, because I only included all NoiseTracker 2.0 effects, but most of them had much bugs. But nobody cared about that, because we used this replayroutine only MEXX internal and it replayed all our own songs very well. But after some times the Noisepacker appeared. And that one packed the songs pretty well and replayed them even a little bit faster than my own one. So I had to code another Replayroutine and I started to develop a real pack-system for the module. Of course I fixed the one and the other old bug. And again I was really satisfied with the result :) I called it the TrackerPackerV1.0 (Because it sounds funny and it really packed the songdatas). But after another while NoisepackerV3.0 was born. And this one packed again some bytes better than my own system. And replayed the module again a little bit faster..grumble... And guess, what I had to do ... Yeah, I had to code a better and faster one. So I improved the packsystem itself and I fixed again some bugs, perfected the other effects and implementated some new ones from Protracker. And again I was really satisfied with the result, but as always this routine was only MEXX internal. But I got really bored after a while, because there were no more new really cool replayroutines released. There was no one, which was faster or which packed the songs better. There were only some so called Protracker compatible replayers. OK, they were faster than the original, but they were crap anyway, because they always had bugs and the speed sucked !!! So I played in my mind to code a better one. Not to show the world that I am a real hero, who saves the world from the replay-disaster. No, I only wanted to try to code a protracker compatible replayroutine, which is as fast as possible in order to a good packrate. In other words : It is still possible to code a faster routine, but I take care of saving as much memory as possible, with an acceptable amount of rastertime. I knew that most effects could be replayed faster, if I would use lists of precalculated shit. But it needs to much memory ! And why should I waste memory, if I even pack the song ? If you will think now that this replayer is slow, proove it on your own. And you will see that it is the fastest Protracker compatible routine around. Strange, but true ! And it is also the most compatible one, because it is not important to code the protracker effects as bug free as possible. No, you have to emulate as much protracker bugs as possible. I studied the Replaysource very close and there were many parts of the code where I said : What the hell is this ??? But I had to do the same mistakes in my own source to make it compatible. So don't complain about strange and non-understandable parts of my code. You should only use it ! 2.1 : Why should you use it ? ----------------------------- Why, you will ask ? Mhh... There are many different reasons for it, so it will be the best, if I mention the most important ones : 1. - The routine packs the songdatas very well. So you save a hell of a lot bytes, especially if you use the so called "Chiptunes". This routine uses as less precalc-lists as possible and so this replayer is nearly perfect for short productions like 40K-Intros. 2. - I take care that the whole code is 100% PC-relative. I don't know, why the hell it shut be important, but I did it anyway. 3. - This code is 100% NOT self-modifing, although some parts could be faster with it, but as more and more are using an Amiga with an 68040, it is time to stop it, because it won't be much faster on these mashines anymore. And several coders seem to have problem with it, because of the Instruction-Cache. 4. - This routine is surely the most protracker compatible routine around, except of the original one, hehe... (But which one is the original ???) 5. - You could switch of many silly and rarely used Effects, so that the code gets a little bit shorter and of course faster. 6. - You could even use it on mashines with a moved Vectorbasetable. 7. - You could easiely change the volume of the song. So you won't have any probs to make volume-slides at the beginning or the end. 8. - It uses perfect (?) CIA-B Timing, so you never get problems with different frame-rates. 9. - You can jump to any position in the song. 10. - If you want, you can even switch on/off any voice whereever you want. 2.2 : How should you use it ? ----------------------------- Normal CIA-replay without system-interrupts (replaymode=CIA): It's really simple to use. You only have to jump to "tp_init" at the beginning of your demo and you have to jump to "tp_end" at the end of your production :) OK, meanwhile you should take care that you allow interrupt or at least the Level6 Interrupt of the CIA-B. And in your program you shouldn't have any waits to a special rasterline, make copperinterrupt instead, if you really need it. Because you never know, when there will be the next Interrupt and sometimes it could be in the same line, you are also waiting for. And if the Interrupt will take more than 1 rasterline in that case, your routines maybe won't be called for over a frame %$ So don't make this simple mistake. If you want to use a different Vectorbasetable you have to switch on "VBRUSE" to YES. And then you could write the new adress of the VBR to "tp_vbr". And if you want to make volumesliding, switch on "Volume" to YES and you can manipulate the volume with "tp_volume". if you write 255 to it, you have the maximum volume of the sound and 0 means no volume ! I think it is really simple to use. If you want to jump to any songposition, set "CHOOSESTART" to YES. Then you can write the patternnumber to "tp_patternnumber" and the linenumber of the pattern to "tp_newpattpos". If you want to use a splitted song, switch on "SPLIT" to YES and write the addresse of the songdatas to "tp_data" and the address of the samples to "tp_samples". If you want to switch on/off any voice at any time, then you set "SWITCH" to YES. And set bit X of voice X in "tp_voiceoff" to switch the voice off. If you want to switch the voice on again, then clear the bit X of voice X. If you want to say that I have written a very boring text here, then you are right. Normal VLB-replay without system-interrupts (replaymode=VLB): It's is nearly the same as the normal CIA-replay. But you have to jump to "tp_play" every VLB on your own ! And you won't get these slow-down effects, if you are waiting for an abslute rasterlineposition or to be exactly, it will your own fault, if this will happen !!! P.S.:It was still your own fault in the old replayversion, too :) System CIA-replay (replaymode=SystemCIA): In this version you only have to call "tp_init" and check afterwards, if d0 is zero. If it isn't your CIA-timer are already in use. In the end you jump to "tp_end" and everything is fine again :) Very simple to use and it works perfect with the multitasking. 3.1 : Known bugs ---------------- The only minor bugs(?), are mostly the result of the faster replay ! They are timing bugs and you only could kill them by waitloops. Another little bug (?) will appear, if you play the highest note with a finetuning of -1 and if you use appegio, then the note will noise a little bit different, because I am not using the original protracker-data-arranging. But don't worry about it, because up to know nobody solved to make a 100% arpeggio- replay. And the other bugs will appear, because there are a hell of a lot people, who try to make better Protracker-Clones, but who all failed !!! In other words they've made some improvements, which have made some Protracker-effects a little bit (?) incompatible. So don't worry about some modules, which won't run with this replayer. I am sure there is even no Protracker, which will play ALL Protrackermodules. I know that the Packer itself is maybe a little bit buggy, but it is only important that the replayroutine works ! I checked this programm on several mashines of mine and it had only problems to run on an A1000 with Kickstart 1.1, because no req.library supported this version. Another so called bug is that the Packer doesn't support all modules. There are many, which you couldn't pack !!! Mhhaaaahh... What's that ??? Don't worry, if this will happen. The problem is that the packer could only pack Protrackermodules and nothing else like Powerpackerdatafiles (packed modules). So run PPP in the background or decrunch them first ! Another thing is that there are also some people complaining about the Packer itself, because there are no errormessages. Hey, I already mentioned that I didn't want to code a hyber-comfortable-highend-Packertool, with Arexx-support and crap like that. The packer should only work 100% and that's all ! 4.1 : Who is allowed to use it ? -------------------------------- Normally everyone is allowed to use this production, if he only uses it for NON-commercial productions. Everyone, who wants to use it in a Game or something like that or who wants to make any money with it, has to contact me first. Further more it is strictly forbidden for MALLANDER COMPUTERSOFTWARE to sell/use this production in any form !!! 5.1 : Future plans ------------------ I have no future plans for this replayer. In my opinion it is simply the best. And so I won't do anything more on it, except if there will be some bugs left. So if you find any bugs in this replayer or if you have real cool suggestions to improve it. Write to : CRAZY CRACK the BlitterBlaster alias Boris Fornefeld SchulstraBe 12 33775 Versmold Germany Tel. +49-05423/49130 or +49-05423/6943 But remember that I am not interested in any join-offers !!! And of course not in any kind of this stupid sourcecode-swapping ! 5.2 : Last words ---------------- My last words, credits, messages, etc. go to : Colin Fox (Pyramyd Designs) & Bruce Dawson (CygnusSoft Software) : For the Req.Library, which saves me a lot of work. Detector (Platin) : Thanks Holger for your TrackerPacker testing. You really helped me, because you were the only one, who managed it to find some bugs, I haven't noticed before. Cosmos (TRSI) : Don't feel like god. There are even some other dudes than you, who are able to write cool sound-replayers (And even better working ones !). The coder of the Eagle-Player : Bah! It's really lame to talk about coding skills, if you aren't able to code yourself ! But you are allowed to use this replayer anyway. Rune Gram-Madsen : For his cool ASM-One, because I still enjoy to code with it. Crash (Complex) : Ha, ha, it's really funny that even you complained about this slow-down effect of this replayer. Zeque (Complex) : Thank you ! It's really a help that you check out my routines on your 68040 system. Gengis (Complex) : This version should run better than the last improved one, I have sent you for the demo. Sorry, but I made a little bug in the interrupt routines and didn't give back the whole value of d0. That's for sure the reason for the bugs in your routines, which happened with that replayer. Sorry, but I made this interrupt improvement in quite a hurry and didn't notice it before, as I personally didn't use that version on my own. Zeque has found the bug some weeks later. RTD (Complex) : Mhh.. Have all doubts gone ? After you checked all the modules on your HD with the replayer and you haven't found one, which doesn't work alright. Signed CRAZY CRACK the BlitterBlaster of Complex .