home *** CD-ROM | disk | FTP | other *** search
-
- The Player ® 6.1A 610.2 / 14.10.95
- Copyright © 1992-95 Jarno Paananen
- Guru / Sahara Surfers
- A Sahara Surfers Product 1995
-
-
-
- Contents:
-
-
- 1. Foreword
-
- 2. Distribution and copyrights
-
- 3. Requirements
-
- 4. Features
-
- 5. P61con, the Converter
- 1. Converting Protracker-modules
- 2. Playing modules
- 3. Converting back to Protracker
- 4. Sample packer-selector
- 5. Preferences
-
- 6. P61, the Player
-
- 7. Using The Player in your own programs
- 1. Normal VBlank-version
- 2. Non-lev6-version
- 3. CIA-version with tempo
- 4. 68020-versions
- 5. Player61.i
-
- 8. The Usecode-system
-
- 9. Bugs?
-
- 10. Hellos
-
- 11. Contact address
-
-
-
- 1. Foreword:
-
-
- This little utility was first started just for fun about two years ago and
- was meant just to my own use, but when I noticed that there weren't a GOOD
- Protracker-compatible replay available and after I saw a few tries to fix
- this (ProPacker, Prorunner, etc.) I decided to give other people a chance
- to play their Protracker-tunes FAST!
-
- When designing the moduleformat, I also included packing and this 6.1
- packing method is the most efficient I've seen for this purpose.
-
- Afterwards features like the two delta-formats have been introduced to keep
- this player on the edge of development.
-
- I also made a converter to make it easier to use PT-modules. It uses
- Reqtools and Powerpacker libraries (both by Nico François) so it can also
- load Powerpacked modules. The converter is made as easy as possible to the
- user.
-
-
-
- 2. Distribution and copyrights:
-
-
- This program and all other stuff coming in this package are
- FULLY copyrighted by
-
- Jarno Paananen / Guru of Sahara Surfers.
-
-
- With the exception of Reqtools and Powerpacker libraries © by Nico François
- (You have made a big favour to all programmers on the Amiga!)
-
- BUT!:
-
- You're allowed to make additions or modifications or what so ever to fit
- the playroutine to your own needs. That's why the sources are here. But,
- please: credits for the author and a copy to myself, if possible, so I can
- add your new features to the future releases!
-
-
- Contents of this package:
-
- P61Con - The converter
- P61Con.info - Da icon
- (P61 - The player)
- (P61.info - Another icon)
- Player61A.guide - Amigaguide format docs
- Player61A.guide.info - More same stuff
- Player61A.doc - ASCII format docs, this file
- Player61A.doc.info - Do we have to take all these?
- Player61A.changes - History of changes, bugfixes etc.
- 610.2.G - The main thing, Replay source
- (610.2_devpac2.asm - Same for DevPac2)
- 610.2_devpac3.asm - And for DevPac3
- 610.2.bin - Binary version
- CIA_Example.G - An example of how to use the CIA-version
- Player61.i - Include file
- Vibtab - Vibrato table
- Periods - Periodtable with finetunes
- Periods.nft - Same with no finetunes
-
- ( ) = Not included (= not up to date)
-
- NOTE!: Devpac versions need that the default jump size is word!
- Everything without size declaration means a word!
-
-
- The normal disclaimer:
-
- The author cannot be held liable for the suitability or accuracy of this
- manual and/or the program it describes. Any damage directly or indirectly
- caused by the use or misuse of this manual and/or the program it describes
- is the sole responsibility of the user her/him self.
-
-
- A few words about distribution:
-
- This program is freeware. You can distribute it as long as _ALL_ files are
- included and not more than a nominal fee for copying is asked. This program
- can _NOT_ be used for commercial purposes without written permission from
- the author and a contribution for development costs (like Coca-Cola :-).
- If you have suggestions or remarks about this program, or if you find any
- bugs, please let me know.
-
- THIS MEANS: IF YOU ARE GOING TO USE THIS IN COMMERCIAL SOFTWARE YOU SHOULD
- AT LEAST ASK ME FIRST AND I WOULD BE GLAD TO RECEIVE SOMETHING AS A
- COMPENSATION FOR THE TROUBLE THIS THING HAS CAUSED ME, BECAUSE MAKING THIS
- HASN'T BEEN JUST FUN AND SUNSHINE...
-
- This was meant especially to software houses using this without my
- permission, like Team 17: Where the hell did you get that P41 you used in
- Super Frog from?!? It was never released due to P50. I just gave it to
- some friends for beta testing... If you want to clear your conscience,
- contact me.
-
- To everyone: If you're going to use this player in your commercial
- software, you should know, that the one released is never the newest version
- and is always somewhat cut down. If you contact (and pay...) me, you get
- misc stuff like sound effect engines with it, if you want. And tidy
- conscience...
-
-
- The black list (programs using The Player without my permission (nor
- money :) )
-
- All are using the beta of P41A:
-
- - Super Frog from Team 17 (see ya at Assembly'95...)
- - OverDrive from Team 17
- - Alien Breed II from Team 17
- - Action Pool from Team 17
- - Qwack from Team 17
- - Kick Off 3
- - Impossible Mission 2025 from MicroProse
-
- At _least_.
-
-
- Thanks to these firms for contacting me before using The Player:
-
- Bloodhouse - Stardust (Hi Everyone!)
- - Super Stardust
- Core Design - Banshee (Hi Søren!)
-
- Why is this list shorter?
-
-
-
- 3. Requirements:
-
-
- - An Amiga computer (For PC look out for MIDAS)
- - Reqtools.library and Powerpacker.library
- - about 30 kB of memory for the converter, and if converting, 2 * (number
- of patterns * 1024 + 1084) bytes for buffers
- - Works on 512kB machines, but more memory recommended, especially for
- converting.
- - Kickstart 1.2 or greater.
- - Kickstart 2.0-style colors recommended (looks better)
-
-
-
- 4. Features:
-
-
- - a very efficient method to pack the pattern data and play it VERY fast in
- realtime
-
- - cut-down header compared to the original one (4 bytes info, 6 bytes/sample,
- 8 bytes/pattern, 1 byte/position plus one byte for stopmark)
-
- - removes all names, unused patterns, samples, data after loops, empty data
- after unlooped samples, commands with no use and some smaller things
-
- - Delta format samples! Samples have the same quality, but packing
- efficiency is better with for example Imploder or Powerpacker. Look below
- for some stats!
-
- - 4-bit delta packing! Packs samples in ratio 1:2 with very little loss of
- quality. Try it!
-
- - nearly impossible to rip without finding the call to the init routine,
- except if the optional `P61A`-sign is used
-
- - works on every Amiga, tested under KS1.2-3.1, from WB or CLI/Shell,
- detaches itself from CLI, supports WB icons, etc...
-
- - loads files packed with Powerpacker, FImp or XPK (all references to
- Powerpacked files also apply to FImp and XPK files)
-
- Should support modules with 100 patterns (At least in PT2.x from Noxious)
- IF patterns are packed under 64kB in PASS 1... (pointers are only words)
-
-
- Commands implemented at the moment:
- - NoiseTracker 2.0 commands (0-6,A-F)
-
- - Tremolo (7), Sample offset (9), Fine slides (E1/E2), Set finetune (E5),
- Pattern loop (E6), Retrig note (E9), Fine volume slides (EA/EB),
- Note cut (EC), Note delay (ED), Pattern delay (EE), Invert loop (EF)
-
- - finetune and tempo
-
- - NOTE!:Patternbreak (D) does NOT support break to a specified line,
- linenumber is just ignored! This is due to my packing system.
-
-
- Comparision to other players:
-
-
- Some statistics:
-
- Tunes: 1. ( alcoholic score )
- 2. enigma year bkh-nhp
- 3. knulla kuk !!!
- 4. menuloader
- 5. scrambled mind
- 6. tapiiri
-
- Note that these are random tunes picked out from about 120Mb I
- have, and everyone should be able to test these results.
-
-
- Tune: 1 2 3 4 5 6
-
- Original: 121024 249550 160218 23390 163738 19664
- P61A: 88704 204588 120062 16644 130650 6878
- P60A: 90118 205984 121834 16992 131420 7306
- NoisePacker 3.0: 93576* 214148* 128940* 17588 132736 10278*
- NoisePacker 2.02: 104560* 227770* 138218* 18292 140614 14094*
- ProPacker 1.0: 108028 226326 147302 20414 148742 14480
- ProRunner 2.0: 98974 218588 132894 19338 143136 11978
- Promizer 4.1: 103608 224778 136710 19762 147114 11260
- TrackerPacker 3.0: 90992 209900 124434 17074 131578 9144
-
-
- * = lacks some features (finetune, commands etc.)
-
- Obvious?
-
-
- Some notes concerning this:
-
- (After reading the docs of Prorunner 2.0 I thought that maybe I should also
- write some advertisement bullshit here, but I decided to stay in the
- facts...)
-
- - P61A is the fastest replay of these...
- - Has the best packing as seen above...
- - 4- and 8-bit delta samples (the first one to have these)...
- - Fully system friendly if needed (allocates channels, CIA's etc.)...
- - Works on all Amigas (the first released one to check the VBR)...
- - Supports CIA-tempos (the first one with no processor waits)...
- - Fully PC-relative replay (released before Cosmos...)
- - Has the so-much-praised master volume control...
- - Usecode-system
- - User-friendly converter (unlike NP2.0, PP1.0 and PRU2.0)...
- - Versions for Asm-One, DevPac3 and DevPac2...
-
-
- Enough? If you still want to use some of those other players, feel free...
-
-
- IF SOMEONE COULD SEND ME PROPACKER 2.x, PLEASE DO!
-
-
-
- Delta vs. normal samples:
-
- Tune: ((( the war ))) by Audiomonster / Melon Dezign
-
- Original P61 tune: 260182
-
- Normal Delta Diff.
- FImp: 184828 168650 16178
- PP: 184812 162612 22200
- xpkNUKE: 187340 166684 20656
- xpkSQSH: 148600 144124 4476
-
- Make your own conclusions.
-
-
-
- 5. P61con, the Converter:
-
-
- Note!: Do _NOT_ merge hunks in this file, because it uses two SEPERATE code
- hunks for detaching. If you do, it crashes straight away...
-
- Shell usage: P61con [-q][filename]
-
- -q Be quiet. The only way to stop playing is to give CTRL-C-signal to
- the DETACHED piece of code. Use TaskX or similar.
-
- filename to play. No checkings made, so be sure it IS a P61-module!
-
- WB usage is normal. Double clicking on a modules icon or click on module,
- shift and click on P61con to play it.
-
-
-
- 1. Converting Protracker-modules:
-
-
- First a normal Reqtools filerequster asks you to select one or more
- (supports batch-processing) modules. If you select multiple modules, the
- directory for the modules to be saved is asked. Then loading with the
- Powerpacker library. If you chose one module, the name and path for the
- save are asked. As the packing starts, an info requester with some bars and
- statistics pops up. If you are converting only one module and have sample
- packing on, sample packer-selector appears. When the job is done, save and
- some statistics about the efficiency are shown. If you have converted only
- one module, also the Usecode is here.
-
-
-
- 2. Playing modules:
-
-
- First the converter asks for a module and then loads it using the
- Powerpacker library so it can also be packed with the Powerpacker :) DOES
- NOT SUPPORT FILES WITH SAMPLES IN OTHER FILE! If it finds P61 from the
- memory, it informs it to play the module. If not, a requester is shown with
- the name of the file and a stop gadget below. The play routine is the
- system friendly tempo one, allocates channels with priority 127, a CIA-
- timer and returns if it couldn't get something. Should work with every
- system friendly program.
-
- To the guys at Triumph: I'd say this IS faster than yours and multitasks at
- least as well as your IntuiTracker 1.50 (I crashed it about x times...) and
- works on <2.0 Kickstarts, too. Anyway, this wasn't meant to be a kind of
- player like yours, but maybe one is coming (depends on effort and requests
- from outside).
-
-
-
- 3. Converting back to Protracker:
-
-
- This option is disabled to partly because I want to give people some
- peace from Perverter and alike ie. protect their modules from ripping.
- (I of course have my own version, which has this option implemented and
- enabled...) So you have to make your own reconverter is you want to
- listen the modules in PT-format.
-
- Usage is easy, just load P61A-module and save it as Protracker-module. Be
- sure it IS a P61A-module, otherwise I can't quarantee the result...
-
- Damn! The new ProWizard (version 2.16) supports P61A-format so
- in this version this feature is enabled, in request of Nemesis1 (Hi!).
-
-
-
- 4. Sample packer-selector:
-
-
- When you have sample packing-option on, a requester appears when you
- convert only one module. It is used to select which samples are to be
- packed with 4-bit delta packing and has the following functions:
-
- Original -Plays the original sample. Stop with right mouse button!
- Packed -Plays the sample after packing and depacking it. This
- sounds same as the final packed sample. Stop with right
- mouse button!
- Pack -Marks the sample to be packed.
- Pack rest -Marks this and the rest of the samples to be packed.
- Don't pack -Marks the sample NOT to be packed.
- Don't pack rest -Marks this and the rest of the samples NOT to be packed.
-
- Use of keyboard shortcuts is highly recommended!
-
-
-
- 5. Preferences:
-
-
- Default loading directory: The directory converter first gives you,
- when you load Protracker modules.
-
- Default saving directory: The directory converter first gives you,
- when you save ONE P61 module.
-
- Default batch directory: The directory converter first gives you,
- when you save multiple P61 modules.
-
- Prefices: These are used to mask files in
- filerequesters and put to the beginning of
- the filename when saving. Can be up to 7
- chars long.
-
- Two files: If you want samples and rest of the tune to
- be saved in separate files.
-
- P61A sign: If you want the P61A sign to be inserted in
- the beginning of the module.
-
- No samples: If you're converting multiple modules with
- same samples, this disables the saving of
- samples.
-
- Tempo: Whether the player should use tempo or not.
-
- Icon: If you want the icon to be saved with the
- module.
-
- Delta: If you want to use 8-bit delta samples.
-
- Sample packing: If you want to pack samples to 4-bit delta.
-
-
- 6. P61, the Player:
-
-
- This program was under work (and still is...) for quite a lot time. The
- idea came from Simply / Parallax, due to the fact that Multiplayer can't
- play P50-modules without GMOD-header and that makes modules about 6kb
- larger... So I had to get working. Two days before Assembly'93 I rewrote
- this program completely in a big hurry, so please forgive me those bugs
- that _will_ appear. Present program is basically the same, but plays
- P61-modules.
-
- The interface is now quite neat, small is beautiful? Under KS3.0 those
- proportional gadgets are quite nice. Functions should be familiar to all
- who have used some player program (Multiplayer, Smartplay etc.). The only
- special feature is that if you try to load a Protracker module and you
- have P61con in memory waiting in its mainmenu, P61 gives this module to it
- to be packed. P61con saves it to the ram-disk and informs P61 to load it.
- After loading P61 deletes the module from the ram-disk.
-
-
-
- 7. Using The Player in your own programs:
-
-
- NOTE: The instructions for the binaryfile-versions expect you to have
- loaded the file to a label called "Player"
-
- The versions are in the same file and these topics describe the various
- possible versions to compile the source. Also the binary versions have
- their instructions here.
-
- Completely PC-relative!
-
-
-
- 1. Normal VBlank version:
-
-
- Options:
- CIA = 0
- system = 0
- nonlev6 = 0
- system = 0/1
-
- Exec = 1 if ExecBase is valid and 0 if not
-
- This should be easy for all you who've used the ugly Protracker routine or
- one of the millions of others.
-
- Call "P61_Init" with the address to the module in A0 and the address to the
- samples in A1 or if they are in the same file, clear A1. If you have a
- module with samples packed, put address to the sample buffer in A2. Uses
- all registers, so preserve them if you're going to use them afterwards.
-
-
- IF YOU ARE USING INVALID EXECBASE:
-
- Check the Base yourself and put it to P61_VBR or Player+P61_UseVBR. You
- can also get the VBR there, if using valid ExecBase.
-
-
- TO CHECK IF MODULE HAS PACKED SAMPLES:
-
- Check bit 6 ($40) of the offset 3 from the beginning (excluding optional
- sign). If it is set, the module has packed samples. Size of the required
- buffer is then at offset 4.
-
-
- To play the music, call P61_Music every frame (with NTSCs who want to play
- the tune in PAL-speed or vice versa, use the CIA-version).
-
- To end the music and turn the DMAs off, call P61_End.
-
- With system option = 1, allocation of channels and lev6-timer are included.
- Returns non-zero in D0, if couldn't allocate something.
-
- With the binary file, P61_Init is Player+P61_InitOffset, P61_Music is
- Player+P61_MusicOffset and P61_End is Player+P61_EndOffset.
-
- The source can be compiled with at least Asm-One 1.09 by T.F.A.
- (the Best assembler around!). A separate version for Devpac3 is also
- included. This version should be easy to make work under any assembler
- with incbin command.
-
- The maximum rastertime taken is under 6 lines on a normal 68000 Amiga.
- Fast? Invert loop can take it beyond that, though. Everything has its
- costs.
-
-
-
- 2. Non-lev6 version:
-
-
- Options:
- CIA = 0
- system = 0
- nonlev6 = 1
-
- This routine is basically the same as the lev6-version, but you have to
- call P61_Setloop about 7 raster lines after P61_Music. This system is done
- to enable the use of those 7 lines. So if have a routine, which fits to
- these 7 lines, do it while waiting...
-
- This is not too much slower compared to the lev6-version, but I'd still
- advise you to use it if possible. It makes your life a hell lot easier...
-
-
-
- 3. CIA version with tempo:
-
-
- Options:
- CIA = 1
- system = 0/1
- nonlev6 = 0
-
- Exec = 1 if ExecBase is valid and 0 if not
-
- The first tempoplayer I know, which uses only the lev6-int and does _NOT_
- use those fucking processor loops. As fast as the normal lev6-version!
-
- Otherwise normal init, but info for the setting of CIA is needed in D0:
- 0 - Autodetect, if PAL/NTSC, uses ExecBase->VBlankFrequency.
- 1 - Force PAL. If you've destroyed the ExecBase, detect the timing
- yourself and use these force modes.
- 2 - Force NTSC
-
- No further actions needed. Returns non-zero in D0, if it couldn't allocate
- something. The player starts playing right away, so do _NOT_ call
- P61_Music.
-
- To end, call the normal P61_End.
-
- To enable using of tempo, set P61_UseTempo to some non-zero value.
-
- If system is set to 1, allocations for timer and channels are included.
- Use if possible.
-
- NOTE: If you want to use this in your own program that needs synchronizing
- to the beam, do one of these:
-
- 1. Do your routine in VBlank-interrupt.
- 2. Do your routine in copper interrupt.
- 3. If you do NOT have to wait for a specific line, wait for VBlank bit in
- INTREQR ($1e) and clear it afterwards.
- 4. If you have to wait for some specified line, disable Copper-interrupt
- from INTENA ($9a), set Copper-interrupt bit in INTREQ ($9c) with Copper
- at the specified line and wait for the bit in INTREQR ($1e) in our own
- routine. Clear it afterwards.
-
- See the examples supplied.
-
- Otherwise this WILL steal some frames from you time to time...
-
-
-
- 4. 68020-versions:
-
-
- Options:
- opt020 = 1
-
- These are a bit optimized versions for the 020+ machines. The difference
- to the 000/010-versions is only a slight one and because those versions
- take only a half of a rasterline on a 25mhz A4000, I think these are nearly
- useless. But if you really want to make a 020+ program or AGA-only stuff,
- this is for you...
-
- Can be compiled at least with Asm-One 1.15 by T.F.A.
-
- Interface is similar to the 000/010-versions.
-
-
-
- 5. Player61.i:
-
-
- This is the include file of all the structures needed, if you're going to
- compile the source. Also if you are making some additions to this player
- (like quadrascopes, etc. (these kind of things are maybe coming, I already
- have quite a bunch of 'em linked to this player)) you can look for the
- information there. First I was going to release this only as a binary
- version, but after thinking a few more moments, I decided to make this
- include file and release the source, just to make supporting and developing
- of this product possible.
-
-
-
- 8. The Usecode-system:
-
-
- This system was created for fun on a sunny afternoon. I got a crazy idea
- of putting a code of which features a module needs to the beginning of the
- source and let conditional compiling take care of the rest.
-
- The main idea is to reduce the lenght of this massive player to the real
- needs of the module. So only the commands the module needs are saved to the
- player. Also if the module doesn't use finetune, a smaller periodtable is
- used. And finally if the module doesn't use vibrato or tremolo, the 512
- bytes long vibrato table is left out.
-
- What you have to do is:
-
- Take down the Usecode shown in the requester after the converter has packed
- your module (if only one module is being processed or from the filenote)
- and put this code to the beginning of the source into the place for it.
- Compile and you have a customised version for this module only. Usecode -1
- leaves all features ie. compiles the full version.
-
- for example:
- use = $9f0f
-
-
-
- 9. Bugs?:
-
-
- Some of you might still remember (in horror...) the previous versions of
- this marvelous :) player. Those 4.x-versions were all more or less beta-
- versions and that showed... (previous versions weren't even released, thank
- god..)
-
- This version has gone through quite a hell of beta-testing, by myself,
- my Good friends Janne Juhola (Simply/Parallax), Steffan Schumacher
- (Metal/Parallax), Kari-Pekka Koljonen (Moonstone/Hippopotamus Design),
- AND ESPECIALLY Mikko Karvonen (Yolk/Parallax)!
-
- Also thanks for reporting bugs / wanted features go to:
-
- - Dr.Jekyll / Andromeda
- - Shayera / Spoon
-
- And the rest I can't remember at the moment, sorry!
-
-
-
- 10. Hellos:
-
-
- A bit more hellos than in the converter to:
-
- To all who make those nice multiformat-player-programs (Multiplayer,
- Smartplay, etc.): If you want some information about this format to be
- included in your program, or anything else, just let me know!
-
- To Turbo and Marley of Infect (authors of Exotic ripper): You did it! I
- just ask how?!? You say it's deep search and it surely is. Fab prog!
- The pattern format changed once again... Some peace from Perverter and
- the like...
-
- To Gryzor (author of ProWizard): Hi! So how did it feel to make support
- for P61? Well, now I can use the same program for all modules again, so at
- least something positive ;) Great program anyway!
-
-
- And hellos especially to:
-
- - Janne Oksanen / Stratos of Sahara Surfers -
- Nothing special to say, but hello.
-
- - Petteri Kangaslampi / Alfred of Sahara Surfers -
- Thanks for help with the new format! Hopefully MIDAS comes off great!
-
- - Kari-Pekka Koljonen / Moonstone of Hippopotamus Design -
- Great sendings (when coming...). Happy with this? HiP is Really Cool!
-
- - John Hinge / Shayera of Spoon -
- Sorry for huge delay, but hopefully this gives some compensation...
-
-
- - All of you waiting for (e-)mail from me: please have patience...
-
-
-
- 11. Contact address:
-
-
- I'm improving this utility for my own use (they made me release this!),
- but send me some $$$ (Finnish marks, please) or two disks with a return
- envelope WITH stamps (or International Response Coupon) and I'll send you
- the newest version (Mention which version you have, so I won't send the
- same version!) IF THESE CONDITIONS ARE NOT MET, ABSOLUTELY NO REPLY IS
- GUARANTEED!
-
- Also for licences for commercial use!
-
- TO (NO swapping!)
- J.Paananen
- Puskalantie 6
- FIN-37120 Nokia
- Finland
-
- Or by phone: +358-31-3422147 / Jarno
-
- Or preferably via Internet:
-
- jpaana@kauhajoki.fi
- (Main account)
-
- or
-
- jpaana@freenet.hut.fi
- (redirected)
- (fool-proof ;)
-
- NOTICE!!!
-
- Also my other account (Jarno_Paananen@sonata.fipnet.fi) died by the end
- of March, so use only one of these!
-