................................. To leave Commie, hyper to http://commie.oy.com/commie_leaving.html .................................
> GoatTracker 1.12 > http://www.student.oulu.fi/~loorni/ Before you try it, read README! Included: ................................................................... GoatTracker v1.12 ----------------- Editor by Lasse ��rni ([EMAIL PROTECTED]) reSID engine by Dag Lem. Distributed under GNU General Public License (see the file COPYING for details) Table of contents ----------------- 1. General information 2. Warnings 3. Using GoatTracker 3.1 Keyboard commands 3.1.1 General keys 3.1.2 Pattern edit mode 3.1.2.1 Protracker note-entry mode 3.1.2.2 DMC note-entry mode 3.1.3 Song edit mode 3.1.4 Instrument edit mode 3.1.5 Songname edit mode 3.2 Song data 3.3 Pattern data 3.4 Instrument data 4. Using the included utilities 4.1 INS2SND.EXE 4.2 SNGSPLIT.EXE 5. Using the songs in your C64 programs 5.1 Playroutine 1: Original 5.2 Playroutine 2: Game (with sound effects) 5.3 Playroutine 3: Scene (author info + timing marks) 5.4 Playroutine 4: Everything (author info + timing marks AND sound effects) 6. File/data formats description 6.1 GoatTracker song (.SNG) format 6.1.1 Song header 6.1.2 Song orderlists 6.1.3 Instruments 6.1.4 Patterns header 6.1.5 Patterns 6.2 GoatTracker instrument (.INS) format 6.3 Sound effect data format 7. Hints for creating SID sounds 8. Version history 1. General information ---------------------- This program is a C64 music editor running as a 32-bit Windows application (should work on W9x/NT4/W2K etc.) Familiarity with tracker programs in general, hexadecimal notation, and the C64's audio chip (consult the C64 Programmer's Reference Guide, it's available on the net too) are required to successfully utilize this program. 2. Warnings ----------- 1. Always save your songs in the .SNG-format with F11 key if you plan to continue editing! Packed & relocated songs (.PRG/.BIN/.SID) can't be loaded back into the editor. 2. A subtune must have at least one pattern in the orderlist for each channel for it to be saved. GoatTracker will terminate saving to the first "empty" subtune it encounters, so do not skip over any subtune-numbers! 3. Even the reSID emulation is in some cases quite far from the output of a real SID. Consider strongly testing your tune (especially if filters are in use) on a C64 or on a HardSID card. (Using filters has always been complicated because every SID tends to sound different.) 3. Using GoatTracker -------------------- Run the program with the option /? to see the list of command line options. For example, if you experience choppy audio you can increase audio buffering. There's also screenmode options and the possibility to file-write all audio output. HardSID support is available with the /H option. (use first HardSID = /H1, second = /H2 etc., return to emulated output = /H0) You must have the HardSID drivers and HardSID.DLL installed to use this feature. To use the PC64 cable, check out Daniel Illgen's HardSID-DLL-Clone at http://home.t-online.de/home/lord_leinad/pages/_work.htm This program is entirely operated on keyboard. For a list of keyboard commands press F12 in the tracker or see the table below: 3.1 Keyboard commands --------------------- Note: SHIFT & CTRL are interchangeable in the commands. You can also use [ ] or ( ) instead of < >. 3.1.1 General keys ------------------ TAB Cycle between editing modes F1 Play from beginning F2 Play from current pos. SHIFT+F1 Play from beginning (Follow play) SHIFT+F2 Play from current pos. (Follow play) F3 Stop playing & silence all sounds F4 Mute current channel F5 Go to pattern editor F6 Go to song editor F7 Go to instrument editor F8 Go to songname editor F9 Pack, relocate & save PRG,SID etc. F10 Load song (Pattern/Song/Songname mode) or instrument (Instrument mode) F11 Save song (Pattern/Song/Songname mode) or instrument (Instrument mode) F12 Online help screen INS Insert row (Press INS/DEL on endmark to change pattern/song length) DEL Delete row SHIFT+ESC Clear musicdata & set default pattern length ESC Exit program 3.1.2 Pattern edit mode ----------------------- 0-9 & A-F Enter parameters SPACE Switch between jam/editmode RETURN (or CAPSLOCK) Insert keyoff BACKSPACE Insert rest - + Select instrument / * Select octave < > Select pattern SHIFT+Q Transpose halfstep up SHIFT+A Transpose halfstep down SHIFT+CRSR Mark pattern SHIFT+L Mark entire pattern SHIFT+X,C,V Cut,copy,paste pattern SHIFT+E,R Copy,paste effects SHIFT+Z Cycle autoadvance-mode There are 2 modes for note entering: 3.1.2.1 Protracker note-entry mode ---------------------------------- This is the default or activated with command line option /K0. There are two rows of a piano keyboard: Lower octave Higher octave S D G H K L 2 3 5 6 7 9 0 Z X CV B NM , . Q W ER T Y UI O P Octave (0-7) is selected with / and * keys on the numeric keypad. In this mode there's 2 different autoadvance-modes (the mode can be seen from the color of the jam/editmode indicator) GREEN - Advance when entering notes & command-databytes RED - Do not advance automatically 3.1.2.2 DMC note-entry mode --------------------------- Activated with command line option /K1, there is one row of piano keyboard W E T Y U O P A S DF G H JK L and octave of a note (sets default octave at the same time) is changed with number keys 0-7. In this mode there's 3 different autoadvance-modes: GREEN - Advance when entering notes, octaves or command-databytes YELLOW - Advance when entering notes or command-databytes, not octaves RED - Do not advance automatically 3.1.3 Song edit mode -------------------- 0-9 & A-F Enter pattern numbers SPACE Set start position for F2 key RETURN Go to pattern SHIFT+RET. Go to pattern on all channels < > Select subtune SHIFT+R,S Set endmark to RESTART or STOP 3.1.4 Instrument edit mode -------------------------- 0-9 & A-F Enter parameters SPACE Play test note RETURN Silence test note - + Select instrument / * Select octave SHIFT+X,C,V Cut,copy,paste instrument 3.1.5 Songname edit mode ------------------------ Use cursor UP/DOWN to move between song, author & copyright strings, and other keys to edit them. 3.2 Song data ------------- A song can consist of up to 32 sub-tunes. Each sub-tune has pattern-orderlists for all 3 channels. The pattern-orderlist is a list of patterns to be played (max. 255 columns long) plus the endmark, which can be either RST (restart; repeat orderlist from beginning) or STP (stop; repeat last pattern infinitely) 3.3 Pattern data ---------------- Patterns are single-channel as there's a pattern-order list for each channel. A pattern can have variable length, however 80 rows is the maximum. There can be 254 different patterns in a song. The explanation of a pattern row: Note name | | Octave | | | | Instrument number (01 - 1F, or 00 for no change) | | | | | | Command (0 - 7) | | | | | | | | Databyte | | | | | C-1 00 0 00 Commands 0,1 & 3 and 4 bear some resemblance to Soundtracker/Protracker/ Fasttracker effects. However, they are different in some ways, so read their descriptions!!! Note that there is no "databyte 00 uses the last databyte"- action in the commands. The "continuous" commands 0, 1, 3 and 4, are executed only on ticks 1-N, where N is tempo - 1, and commands 2, 5, 6 and 7 are executed on tick 0 (when a new pattern row is also read) Command 0XY: Arpeggio. Arpeggiates with the root note, then root note + X halftones and then root note + Y halftones. If the X value is 8 or higher, the arpeggio will be at half speed (8 will be subtracted from the value of X to get the amount of halftones) Command 1XY: Portamento. Raises the pitch with (XY and 7F) * 2 each tick. Highest bit of XY decides direction: 0 is up and 1 is down. Command 2XY: Set filter cutoff speed. The cutoff speed will be added to the cutoff frequency each tick, until stopped with a 200 command. Command 3XY: Toneportamento. Raises or lowers pitch until target note has been reached. Highest bit of XY decides direction of toneportamento (this is an optimization for the C64 playroutine, to keep it fast: you must know the direction yourself) and the actual speed used is (XY and 7F) * 2. By specifying the "wrong" direction you can get infinitely fast toneportamentos that go to the target note right away, for the "tie note" effect. Command 4XY: Vibrato. X determines how fast the direction will change (E is slowest and the lowest bit doesn't matter) and Y*16+X is the amount of pitch change on each tick. (That weird formula is just c aused by playroutine optimizations) Command 5XY: Set filter parameters. X is the filter resonance and Y is the bitmask of channels to be filtered. Bitvalue 01 = Channel 1 Bitvalue 02 = Channel 2 Bitvalue 04 = Channel 3 Command 6XY: Set sustain/release. Sets the channel's sustain/release register to XY. Command 7XY: Set tempo. If highest bit is 1 (values 80-FF) the tempo (XY and 7F) will be set to current channel only, otherwise on all channels. A tempo lower than 3 can't be used. If there's both a "current channel" and "all channels" tempo change on a same row, the "all channels" tempo change must be on the lesser channel number or else the "current channel" tempo setting will be overrided. Playroutines 3 & 4 use values C0-FF for timing mark purposes, so they won't affect the tempo. When packing a song for playroutines 1 & 2 the timing marks will be removed from the output data, because those playroutines wouldn't understand them. 3.4 Instrument data ------------------- If a description for a parameter is separated in two by a slash it means it contains two different parameters: leftmost hexadecimal nybble is the first parameter and rightmost is the second. Attack/Decay 0 is fastest attack or decay, F is slowest Sustain/Release Sustain level 0 is silent and F is the loudest. Release is a speed like attack & decay. Pulse The starting value of pulsewidth (00-FF) Pulse Speed The value that will be added to pulsewidth each tick (0-F) Pulse Limit Low The pulsewidths where pulsewidth modulation will change Pulse Limit High its direction. The low nybble will be always 0 because of optimizations. Filter Freq/Type Frequency is the highest 8 bits of cutoff frequency. Filter type is a bitmask consisting of: Bitvalue 01 = Lowpass filter Bitvalue 02 = Bandpass filter Bitvalue 04 = Highpass filter This byte comes into effect when a new note is played. If its value is 0 then filter cutoff & type will be unchanged. Because there's only one filter, it's a good idea to have filter-controlling instruments only on one channel at a time :-) NOTE: The low 4 bits (type) also affect cutoff frequency. This is a playroutine optimization. In addition to these parameters, each instrument has a wave/note table that determines the waveforms and pitches to be used when a note starts. With this table you can make either a simple sound that just has one waveform and the note's base pitch, or a complex sound that has many waveform changes (to make good-sounding drums), or anything in between. The wave/note table consists of byte pairs. The leftmost byte is always the waveform and the rightmost is the note. A pair that has FF in the waveform ends wavetable execution (if note number is 00) or loops to position n (if note number n > 0) NOTE: before the table ends, no portamento, vibrato or arpeggio will be executed! Pulsemodulation will be executed, as of V0.94 onwards. A waveform of 00 tells not to change the waveform, this is useful if you use keyoffs (gatebit off) during wavetable execution. Waveform byte consists of these bits: Bitvalue 01 = Gate bit. THIS IS IMPORTANT TO GET AN AUDIBLE SOUND! Gate bit initiates the attack/decay/sustain phase of a sound. When it goes zero, the release phase begins. Bitvalue 02 = Synchronize bit. Will synchronize with an another channel (Consult C64 Programmer's Reference Guide for details) Bitvalue 04 = Ring-modulation bit. Will ring-modulate with an another channel (Consult C64 Programmer's Reference Guide for details) Bitvalue 08 = Test bit. Will silence the channel and reset the random-seed of a channel if the noise random generator has "locked up" because of using noise waveform in combination with another waveform. This value is automatically used when a song starts playing! Bitvalue 10 = Triangle waveform Bitvalue 20 = Sawtooth waveform Bitvalue 40 = Pulse waveform. There must be nonzero pulsewidth on the instrument or else this waveform will be silent! Bitvalue 80 = Noise waveform. Don't combine with other waveforms! Note byte consists of these values: 00-5F = Relative notes. Will be added to the current note playing on that channel to get the final pitch 80-DF = Absolute notes C-0 - B-7. Values outside of this range will result in a pitch that isn't any correct note. Some examples of wave tables: 21/00 Sawtooth waveform on note's original pitch FF/00 81/C8 A snaredrum sound, using all absolute notes so it doesn't depend on 41/A8 which note it's played. Use pulsewidth 80 for best result. 41/A0 80/C8 80/C4 FF/00 81/C8 A pulse sound on original pitch, preceded with a short noise (like 41/00 a hi-hat or something) that has always an absolute pitch of G#6 FF/00 41/00 A 4-note arpeggio sound with pulse waveform. (Arpeggio command itself 00/04 uses only 3-note arpeggios) Note that waveform will not be changed 00/07 after the initial setting of pulse waveform. 00/0C 00/00 FF/02 4. Using the included utilities ------------------------------- 4.1 INS2SND.EXE --------------- INS2SND.EXE converts GoatTracker instruments (.INS-files) into sound effects, outputting the data as source code. Usage: INS2SND <instrumentfile> <sourcecodefile> Look at section 6.3 or run the program without parameters to see the limitations of the sound effect system. 4.2 SNGSPLIT.EXE ---------------- SNGSPLIT.EXE splits the patterns of a GoatTracker song into smaller pieces for memory use optimization. It is comfortable to compose with large patterns but usually more efficient memory-wise to use small patterns. Remember! Always keep the original song because a pattern-splitted song is much harder to edit further. Usage: SNGSPLIT <sourcesong> <dest.song> [splits] Default number of splits is 4 and maximum is 8. With a higher amount of splits it's more likely that the maximum orderlist length or the maximum number of patterns are exceeded, and in that case an error message is displayed. 5. Using the songs in your C64 programs --------------------------------------- Press F9 in the editor to enter the packer/relocator. Choose startaddress, zeropage baseaddress and file format (.PRG or .BIN), then type the filename. Playroutines 1-2 use 3 bytes starting from zeropage baseaddress as temporary variables (by default $FC, $FD, $FE). Playroutines 3 & 4 use in addition a 4th byte (by default $FF) to store timing mark data. 5.1 Playroutine 1: Original --------------------------- Music playing will take 12 rasterlines max. This player has the smallest size. To init music: LDA #tunenumber ;Starting from 0 JSR startaddress To play music: JSR startaddress+3 To change volume: LDA #volume ;0-F, F is default JSR startaddress+6 To tweak instrument data: Instruments reside as 8-byte structures starting from startaddress+$45C: Instr. 1 AD startaddress+$45C Instr. 1 SR startaddress+$45D Instr. 1 Pulse startaddress+$45E * Instr. 1 Pulsespeed startaddress+$45F * Instr. 1 Pulselimit Low startaddress+$460 * Instr. 1 Pulselimit High startaddress+$461 * Instr. 1 Filt. Freq/Type startaddress+$462 Instr. 1 Wavetbl. Index startaddress+$463 Instr. 2 AD startaddress+$464 etc. Observe that parameters marked with (*) have actually the nybbles reversed from what they look like in the editor. 5.2 Playroutine 2: Game (with sound effects) -------------------------------------------- Music playing will take 13 rasterlines max. without sound effects, or possibly more with sound effects playing. To init music: LDA #tunenumber ;Starting from 0 JSR startaddress To play music: JSR startaddress+3 To change volume: LDA #volume ;0-F, F is default JSR startaddress+6 To play a sound effect LDA #<sound ;Address of sound effect data LDX #>sound LDY #channel ;0-2 JSR startaddress+9 The actual sound data can be created from an instrument with the included INS2SND tool or you can look below for the data format description. In this playroutine the instrument data resides at startaddress+$04F2. 5.3 Playroutine 3: Scene (author info + timing marks) ----------------------------------------------------- Music playing will take 12 rasterlines max. To init music: LDA #tunenumber ;Starting from 0 JSR startaddress To play music: JSR startaddress+3 To change volume: LDA #volume ;0-F, F is default JSR startaddress+6 To use timing marks: Put a tempo command (7) with parameter C0-FF in the music data. Now tempo won't be set, but the parameter is copied to the 4th zeropage address (by default $FF) when this command is encountered. Author-info can be read at startaddress+$20 (32 bytes) and instrument data resides at startaddress+$48A. 5.4 Playroutine 4: Everything (author info + timing marks + sound effects) -------------------------------------------------------------------------- Music playing will take 13 rasterlines max. without sound effects, or possibly more with sound effects playing. To init music: LDA #tunenumber ;Starting from 0 JSR startaddress To play music: JSR startaddress+3 To change volume: LDA #volume ;0-F, F is default JSR startaddress+6 To play a sound effect LDA #<sound ;Address of sound effect data LDX #>sound LDY #channel ;0-2 JSR startaddress+9 To use timing marks: Put a tempo command (7) with parameter C0-FF in the music data. Now tempo won't be set, but the parameter is copied to the 4th zeropage address (by default $FF) when this command is encountered. Author-info can be read at startaddress+$20 (32 bytes) and instrument data resides at startaddress+$51D. 6. File/data formats description -------------------------------- The sections in the files come in the sequential order in which they're described. 6.1 GoatTracker song (.SNG) format ---------------------------------- 6.1.1 Song header ----------------- Offset Size Description +0 4 Identification string GTS! +4 32 Song name, padded with zeros +36 32 Author name, padded with zeros +68 32 Copyright string, padded with zeros +100 byte Number of subtunes 6.1.2 Song orderlists --------------------- The orderlist structure repeats first for channels 1,2,3 of first subtune, then for channels 1,2,3 of second subtune etc., until all subtunes have been gone thru. Offset Size Description +0 byte Length of this channel's orderlist n +1+n n The orderlist data: Values 0-253 are pattern numbers Value 254 is the STOP endmark (repeat last pattern indefinitely) Value 255 is the RESTART endmark (loop song) 6.1.3 Instruments ----------------- This structure repeats for each of the 31 instruments. Instrument 0 (the empty instrument) is not stored. Offset Size Description +0 byte Attack/Decay +1 byte Sustain/Release +2 byte Initial pulse width * +3 byte Pulse speed * +4 byte Pulse limit low * +5 byte Pulse limit high * +6 byte Filter freq/type +7 byte Size of wavetable in bytes n (note: this is always an even number) +8 16 Instrument name +24 n Wavetable, containing the waveform/note pairs as seen on the editor screen. * = nybbles reversed compared to how they appear in the editor 6.1.4 Patterns header --------------------- Offset Size Description +0 byte Number of patterns n 6.1.5 Patterns -------------- Repeat n times, starting from pattern number 0. +0 byte Size of pattern in bytes m +1 m Groups of 3 bytes for each row of the pattern: 1st byte: Notenumber Values 0-93 are the notes C-0 - A-7 Value 94 is the KEYOFF-command Value 95 is a rest 2nd byte: Bits 3-7 Instrument number (0-31) Bits 0-2 Command number (0-7) 3rd byte: Command databyte 6.2 GoatTracker instrument (.INS) format ---------------------------------------- Offset Size Description +0 4 Identification string GTI! +4 byte Attack/Decay +5 byte Sustain/Release +6 byte Initial pulse width * +7 byte Pulse speed * +8 byte Pulse limit low * +9 byte Pulse limit high * +10 byte Filter freq/type +11 byte Size of wavetable in bytes n (note: this is always an even number) +12 16 Instrument name +28 n Wavetable, containing the waveform/note pairs as seen on the editor screen. * = nybbles reversed compared to how they appear in the editor 6.3 Sound effect data format ---------------------------- Offset Size Description +0 byte Attack/Decay +1 byte Sustain/Release +2 byte Pulse width. This value has nybbles reversed from what it looks like in the editor so a middle pulse $80 will be stored as $08, and the sound effect routine will put this value to both $D402 and $D403 registers. +3 ? Wavetable. Contains note/waveform pairs (different order than in instrument wavetable), from which the waveform can be omitted if unchanged, as the value ranges don't overlap: Value 0 ends the sound effect Values 1-129 are waveforms Values 130-223 are absolute notes D-0 - B-7 Value 255 tells to repeat the same note & wave once Value 254 tells to repeat the same note & wave twice etc. Note that a note can't be omitted to store only waveform changes! As you can see, the sound effect format is very simplistic. When converting an instrument to a sound effect with INS2SND, following things cause an error message: - If the resulting sound effect is more than 128 bytes - If the instrument's wavetable contains relative notes, absolute notes C-0 or C#0, or waveforms > 129 ($81) The instrument's pulsewidth modulation & filter settings will be completely discarded. 7. Hints for creating SID sounds -------------------------------- (Very short and not so in-depth section. Contributions are welcome) Pulse: - Pulse is "widest" and loudest at middle pulse width 80, the sound thins out towards both extremities (00 and FF). Pulsewidth 80 is most useful as a part of drum sounds but may sound too dominating for other instruments. For bass sounds, 40 is usually good. For harpsichord or acoustic guitar, you can go even more towards 00. - Don't let the pulsewidth cross its entire range or an ugly "pop" sound will be heard; use the limits to limit it between 10 & F0 or even closer. When a sound starts, the pulsewidth will be first increasing. - Using small pulsewidth speeds creates a "peaceful" sound while high pulse- speeds are more menacing & aggressive (or ugly, depending how you view it) Combination waveforms: - Experiment with combination waveforms; for example waveform 51 (pulse and triangle combined) is a thin and weird sound. Waveforms in sequence, and variations in the note pitch (with wavetable): - An "oriental" sounding flute can be created with the following wavetable: 41/01 11/00 FF/00 It plays the first frame with pulse waveform, one halftone sharp. Then it goes to original pitch and triangle waveform for the rest of the sound. ADSR: - The higher a sound is, the more dominating it will be. So lower its sustain level to keep things balanced. - Using small (or zero) attack & decay values creates sharp & "modern"-sounding sounds. - Use zero sustain & release with some decay to get a sound that starts decaying immediately, like a piano (you probably knew this :-)) - Set drums' sustain mercilessly to full for maximum power! :-) Synchronize & ring-modulation: - A "screaming guitar" type sound (like Sanxion loader song) can be created by using synchronize bit in combination with the pulse waveform. It is highly dependant on what the synchronizing channel is playing, so experiment! - Using ring-modulation or synchronize with the triangle waveform creates cool "eerie" sounds, like those in Fist II cave music. Filter: - One word: Experiment. The lowpass filter might be most widely used, beware of using too small cutoff frequencies though, because they might result in practically inaudible sound on some SID chips. - If you have an instrument that sets the filter frequency/type (freq/type byte nonzero) and don't want the frequency to be reset on each subsequent note, create a copy of that instrument with the filter freq/type byte zeroed and then you can control cutoff speed freely with the 2XY command. 8. Version history ------------------ 0.9 Beta - Original public release 0.91 Beta - Corrected a crash caused by an uninitialized pointer when executing wavetable on the last row of a pattern. This same bug also caused sounds being cropped one tick too early on the last row. - Corrected the description of ringmodulation in the docs - A drum test song added (when making it the crash was discovered) 0.92 Beta - Orderlist editing simplified (one cursor position for all channels) - SPACE in orderlist sets now play position for F2 key - Pattern wrap also when trying to enter notes on the last pattern row 0.93 Beta - Vibrato was practically useless on odd speeds (3, 5 etc.) because it went a bit out of tune. Now the whole vibrato routine has been rewritten and the meaning of the speed parameter has changed. - Playroutine optimizations in filter cutoff setting & vibrato pitch change: the second parameter will also affect them, however it's the 4 lowest bits so it doesn't matter much. 0.94 Beta - Reworked wavetable system making wavetable loops possible. Also, now pulsemodulation is executed during wavetable. Still the player takes only 12 lines! - Note that you have to change the wavetable end byte manually from 00 to FF if you load songs or instruments made with old versions. - Command 6 (set sustain/release) is no longer overridden by wavetable execution. - Wavetable maximum length (for packed & relocated songs) is now 510 bytes. - Added musicdata clear option (SHIFT+ESC). 0.95 Beta - Some reordering in the playroutine, however retaining the same size as in 0.94. Init music & Set volume subroutines added to the playroutine. - Wavetable maximum length is now 512 bytes. 0.96 Beta - $d404 must come before $d405 & $d406 in note initialization to get sharper attack. - Had to remove the Init & Set volume subroutines. (no room for them) - Instruments with looped wavetables didn't always play correctly when entering notes in the editor - fixed. - The playroutine startaddress is now remembered when packing/ relocating multiple songs during one session. 0.97 Beta - Added screenmode options. 0.98 Beta - Added Follow Play option (SHIFT+F1/F2) - Added fast scrolling with PAGE UP & PAGE DOWN keys. - SHIFT+RETURN in orderlist editor updates pattern numbers of all channels. 0.99 Beta - Added HardSID support. Use /H1 option to utilize first HardSID, /H2 for second etc. and /H0 to return to emulated output. 1.0 - Added HOME/END to go to the beginning/end of an orderlist or a pattern. - Note and hexvalue entry work now also with SHIFT or CAPS-LOCK down. 1.01 - Added choice of emulated SID model with /E option. /E0 for 6581 (default) and /E1 for 8580. - Added NTSC timing (with /N option, return to PAL timing with /P) - Frequency table corrected for A-440Hz tuning. 1.02 - SIDs saved are now in PSID V2 format. - Added mention of the HardSID-DLL-Clone for PC64 cable support. - Added suggestion to not rely only on reSID emulation. 1.03 - Added \ to drive names in the fileselector to make them work better under Win9x. 1.1 - Added Playroutines 2-4: "Game-playroutine" with sound effect support "Scene-playroutine" with author info at startaddress+$20 and timing mark support "Everything-playroutine" that has those features combined - Added DMC note-entry mode as an option. - Added configurable playroutine zeropage address. - Added default pattern length selection when clearing patterns. - Added possibility to turn auto-advance off. - Added documentation of the song, instrument & sound effect data formats. - Added hints on creating SID sounds. - Added sound effect converter INS2SND.EXE. This turns instrument files to sound effects (with certain limitations) - Added pattern splitter utility SNGSPLIT.EXE, for optimizing song memory usage. - Added 4 C64 example programs that show features of each playroutine. - Follow play follows now also orderlist. - Relocator fileformat and saveaddress saved in config now. - Restructured all playroutines with a "jump table" for easy access of features. - Changed directory sorting to be case-insensitive. - Changes in keyboard commands: SHIFT+X,C,V Cut,copy,paste (pattern & instrument mode) SHIFT+Q,A Transpose SHIFT+cursor keys Mark pattern SHIFT+L Mark whole pattern F5-F8 go directly to different editing modes - Fixed hex-editing of instrument/command data in jam mode: it shouldn't be possible 1.11 - Optimized playroutines 1, 2 & 4 to take less memory - Rearranged ADSR and pulsewidth in the sound effect data 1.12 - Added SHIFT+E,R to copy/paste effects row ................................................................... ---> jab | commie | http://commie.oy.com "Less is moo." - The Holy Mad Cow http://www.holymadcow.org
