home *** CD-ROM | disk | FTP | other *** search
- ******************************************************************************
- SEGA MEGA DRIVE EDITOR Version 1.6
- ******************************************************************************
-
- NEW FEATURES IN THIS VERSION
-
- 1.6 Release date 12/09/94
- --------------------------
- 1. 'ALT X' added to convert MEGADRIVE format .SND file to SNES format.
- Procedure is:a) Alt L to load in MEGDRIVE file b) Alt X to convert c)Alt S to
- Save (use NEW filename to avoid writing over MEGDRIVE file).
- N.B. The SNES .SND files do not have 2 SUB banks, so only files with a maximum
- of 256 SUBs can be converted.
-
-
-
-
- 1.5 Release date 23/08/94
- --------------------------
- 1. Improved editor clock accuracy.
-
- 2. Improved sample playback (much clearer with no music in other channels). A
- single sample can now be replayed with no interference from other channels.
- A slight 'glitch' will be heard every time a new note is started in another
- channel, and bending notes causes a glitch every frame as the frequency is
- updated. The worst case is when using mutes in the editor, as each muted
- channel has 'note offs' sent every frame. So, for clearest sample replay, use
- slower tempo music (avoid semiquaver hihat lines!) and avoid bending notes.
-
- 3. New command 'I' (Info toggle) toggles between note names and chanoffset
- (useful with music) and note value and length (more useful with effects).
-
- 4. 'Play' indicator now in hex as well as decimal.
-
- 5. Filename for load/save no longer corrupted after a 'Find'.
-
- 6. All downloads to console now verified. Single byte edits are still sent to
- the console immediately, but any block edits (C/R/A/ALT A/ALT C/ALT E) are
- only updated on the PC. When the next 'Play' command is sent, the console is
- updated and the new data verified. This ensures:
- a) On-screen editing is always as quick as possible.
- b) The data is only sent and verified when next needed. If your ESYS has any
- problems downloading you will know straight away (normally you can just try
- downloading straight away unless a hardware problem has occurred).
-
-
-
-
- 1.4 Release date 08/07/94
- --------------------------
- 1. Voice limit changed to 128 ($00-$7F)
-
- 2. Screen playinfo update much faster.
-
- 3. New pan/note length display.
-
- 4. All mutes reset to off when starting editor (previously, any muted channels
- in the driver would remain muted when re-entering the editor so that the two
- could be 'out of sync'.
-
- 5. Samples now stop properly at the end of a SUB/TRK or when a rest starts.
-
- 6. Keyboard repeat speed forced to maximum for quick movement while editing.
-
- 7. GLB VOL added (opcode $9D) same as SNES system.
-
- 8. RANDNOTE and RAND DUR added(opcodes $9B and $9C).
-
- 9. All Z80BUS references changed to word accesses.
-
-
-
-
- 1.3 Release date 30/06/94
- ---------------------------
- 1. Pause toggle command added to editor (ALT P)
-
- 2. ESYS error messages no longer corrupt screen - message holds until any key
- is pressed.
-
- 3. Maximum .SND file size increased from 25,000 to 40,000 bytes.
-
- 4. Editor and controller now call the driver via the JUMPTABLE rather than
- directly.
-
- 4. Editor Mutes improved (now work properly with chords).
-
- 5. Rests now work properly with chords.
-
- 6. More problem solving examples at the end of this manual.
-
-
-
-
- 1.2 Release date 24/06/94
- --------------------------
- 1. FM 'hanging on' after sample cured.
-
- 2. Pause & Continue added (this even preserves any sample, which will carry on
- from the stopped point when Continued). This can be tested using the new
- controller pad keys (START is now used to pause/ continue).
-
- 3. Fade added (samples stop dead/ FM fade in 1.5 seconds). 'F' key starts fade
- in editor.
-
- 4. Priorities can only now be set between $00 and $3F (64 levels). This is to
- make allow for SUB banks (see below).
-
- 5. Two banks of SUB allowed 'a' and 'b' (allowing a maximum of 512) using bit
- 6 of priority byte (see below in CALL PARAMETERS). SUB bank plotted in editor.
-
- 6. Alt A now checks for max limits (e.g. Trying to add a call $80 will give an
- error message). The current limits are:
- 128 samples (16 each in 8 banks/ maximum 256k sample size)
- 256 voices ($00-$FF)
- 512 subs ($0000-$01FF)
- 256 trks ($00-$FF)
- 128 calls ($00-$7F/ $80=INIT)
-
-
-
-
- 1.0 Release date 22/03/94
- --------------------------
- Initial release.
-
-
-
- ------------------------------------------------------------------------------
- FUNCTIONS
-
- ESC Escape from disk operation or editor
- Alt A Add a column at the cursor position
- Alt C Compress a music file
- Alt D Download current music file
- Alt E Expand a compressed column to full size
- Alt F Find 1 or 2 hex bytes
- Alt L Load a music file
- Alt N find Next matching hex byte
- Alt O Download ON/OFF
- Alt P Pause toggle
- Alt S Save a music file
- Alt T Time signature (e.g. 6/8)
- Alt X convert MEGADRIVRE to SNES .SND format
- F1-F6 Toggle channel Mute
- Return/Enter Play current music track
- Spacebar Stop all music/effects
- F Fade music (1.5 seconds)
- H Half switching (toggle between halves of voice parameters)
- I Info switch (toggle between length/ chanoffset display
- K Keymode (toggle between sharps and flats)
-
-
- MOVEMENT
-
- Home Move cursor to top of column
- Ctrl Home Move cursor to beginning of column data
- End Move cursor to bottom of column
- Ctrl End Move cursor to end of column data
- Right & Left Change edit column
- Up & Page Up Move cursor up
- Down & Page Down Move cursor down
-
- + & Shift + Channel up
- - & Shift - Channel down
-
- [ & ] Play up/down
- P Play (using setting above)
-
-
- EDITING
-
- < & > Up/Down current parameter
- Keypad * Zero current parameter
-
- D Down 1 octave for current parameter
- U Up 1 octave for current parameter
- 1/2/4/8 Bitflip current parameter
-
- Insert Insert a byte at current cursor position
- Delete Delete a byte at current cursor position
-
-
- BLOCK
-
- C Copy current column into buffer
- R Replace current column with buffer
- A Append buffer to current column
-
-
-
- ------------------------------------------------------------------------------
- DEMO FUNCTIONS
-
- To help test the music files, there is an equate DEMO at the top of the
- D-MEGA??.ASM file. Leave this with a value of '1' during sound development
- to interface with the music editor (M-MEGA.COM) It also enables the following
- test functions using a MEGADRIVE joypad plugged into CONTROL 1.
- The joypad keys to use are as follows:
-
- UP/DOWN Increment/Decrement current call number.
- LEFT or RIGHT Start music/effect.
- A Stop all sound calls.
- START Pause/ Continue sounds.
- B/C Increment/Decrement & send new level
- RESET Resets call number=0/level number=0
-
-
-
-
- ------------------------------------------------------------------------------
- PRODUCING CUSTOMER DRIVER FILES
-
- When producing the final file for a customer, two things need to be obtained:
-
- 1. A starting ROM (cartridge) address on an $8000 boundary (Samples must start
- ona 32k boundary). For the editor this defaults to $8000. Other examples are
- $10000,$18000,$20000,$28000 etc.
-
- 2. A starting RAM (variables) address which must be even. The current version
- of the driver uses 324 bytes
-
- When these two values have been obtained, simply enter them into the equates
- at the top of D-MEGA??.ASM as shown and run ALLASM.BAT this will produce a
- file called D-MEGA??.BIN (this is the standard file used with the editor).
- With the DEMO equate set to '1' you will get a huge file which consists of the
- demo code, an empty area and then the driver itself. You can use this to check
- that everything still works (using M-MEGA as normal) and to find the JUMP
- address on the editor screen. This should be supplied to the programmer with
- the MEGA01.DOC (the format of PROJECT.DOC is a useful way to do this).
-
- The final driver is produced be setting DEMO to '0' and running ALLASM.BAT
- This again produces a file called D-MEGA??.BIN, usefully renamed MEGAMUS1.DRV
- This single file will then contain the driver, all sample banks and all sound
- files.
-
-
-
-
- ------------------------------------------------------------------------------
- VOICE PARAMETERS (VCE)
-
- dtmult Bits 0-3 (00-0Fh) set Multiple
- Bits 4-6 (00,10,20,30,40,50,60,70h) set Detune
- Bit 7 (80h) is not used
-
- tlevel Bits 0-6 (00-7Fh) set Total Level (00=largest/7F=smallest)
- Bit 7 (80h) is unused
-
- ks/atk Bits 0-4 (00-1Fh) set Attack rate
- Bit 5 (20h) is unused
- Bits 6-7 (00/40/80/C0) set keyboard scaling
-
- amdec1 Bits 0-4 (00-1Fh) set the initial decay rate
- Bits 5/6 (20,40h) are unused
- Bit 7 (80h) controls Amplitude Modulation (on/off)
-
- decay2 Bits 0-4 (00-1Fh) set the secondary decay rate
- Bits 5-7 (20,40,80h) are unused
-
- susrel Bits 0-4 (00-1Fh) set the release rate
- Bits 5-7 (20,40,80h) set the sustain level
-
-
- fb/alg Bits 0-2 (00-07h) set the type of algorithm
- Bits 3-5 (08,10,20h) set the feedback level
- Bits 6,7 (40,80h) are unused
-
- lrampm Bits 0-2 (00-07h) set the amount of vibrato
- Bit 3 (08h is unused
- Bits 4,5 (10,20h) set the amount of tremolo
- Bit 6 (40h) sets the right output on
- Bit 7 (80h) sets the left output on
-
- offset signed Offset to note (e.g. $0C=up 1 octave/$FF=down 1 note)
-
- specls Bit 2 ($04) DrumBend added to every note (but not chords)
- Bit 3 ($08) Chords (use note1-4 for offset)
- Bit 6 ($40) Fixed (unaffected by global offsets e.g. for drums)
- Bit 7 ($80) Sample (Ignored if not in channel 5)
- 80-8Fh = sample from bank0 (maximum 32k)
- 90-9Fh = sample from bank1 (maximum 32k)
- A0-AFh = sample from bank2 (maximum 32k)
- B0-BFh = sample from bank3 (maximum 32k)
- C0-CFh = sample from bank4 (maximum 32k)
- D0-DFh = sample from bank5 (maximum 32k)
- E0-EFh = sample from bank6 (maximum 32k)
- F0-FFh = sample from bank7 (maximum 32k)
-
- note1/2/3/4 note1 used by drumbend
- offset for chords if special $08 used
-
-
- SUBROUTINE PARAMETERS (SUB)
-
- NAME NO. PARAMETERS
- ------------------------------------------------------------------------------
- note $00-$5E ,duration ($00-$7F)
- $3C = C3 = middle C
- $00-$4F ,duration ($00-7F or $FF) sample only
- duration = $FF waits for the sample to end
- N.B. sample 'notes' set the sample rate, and do not
- correspond to actual notes
-
-
- VOICENUM $80 ,number
-
- The number is:
- $00-$3F
-
-
- REST $81 ,duration ($00-$7F)
-
- Starts the 'release' time
-
-
- CHNTEMPO $82 ,tempo ($01-$FF default=$FF)
-
-
- GLBTEMPO $83 ,channelbits,tempo,dummy ($01-$FF default=$FF)
-
- Sets the channel tempo of all associated channels. This is
- the value shown as TEMPO on the PC screen.
-
-
- SETGATE $85 ,notelength (default=$FF)
-
- At the end of the gated duration a note off is sent. This
- allows staccato notes to be produced. The default value of
- $FF is reset at the beginning of each new subroutine.
-
-
- CHNOFFST $8A ,transpose
-
- Acts similarly to the GLOBOFFS command, but on the current
- channel only. Channel offsets are independent, and
- can be used in tandem with a global offset.
-
-
- GLBOFFST $8B ,channelbits,transpose,dummy (default=$00)
-
- Adds ($00-$7F) or subtracts ($FF-$80) the transpose setting
- to all subsequent notes in all associated channels. It is
- reset to zero on starting any new piece of music, or by
- resetting the sound driver using the external command INIT
- (See SNES.DOC).
-
-
- CHANVOL $8C ,volume ($00-$FF default=$FF)
-
- CHANVOL defaults to $FF when a new call is started, and
- affects all subsequent notes until another CHANVOL command
- is issued.
-
-
- BEND $92 ,speed,dummy,dummy
-
- Starting from the next note, the pitch will bend up (speed
- $00-$7F) or down (speed $FF-$80) from the note value for the
- duration of the note. BEND is cancelled automatically at the
- start of the following note.
-
-
- RANDNOTE $9B ,and mask ($00-$FF default=$00=Off)
-
- All following note pairs will have a random offset added to
- the normal note with a value set by the and mask. The default
- value of $00 is reset at the beginning of each new
- subroutine.
-
-
- RAND DUR $9C ,and mask ($00-$FF default=$00=Off)
-
- All following note pairs will have a random duration added to
- the normal duration with a value set by the and mask.
- e.g. mask=$07 random added = 0,1,2,3,4,5,6 or 7
- mask=$04 random added = 0 or 4 ('4' bit randomly set)
- The defualt value of $00 is reset at the start of each new
- subroutine.
-
-
- GLB VOL $9D ,channelbits,volume,dummy ($00-$FF default=$FF)
-
- Sets a master volume for each associated channel, from $FF
- (full) to $00 (off). This is useful for balancing music
- levels against effects without altering the music balance.
-
-
- END $FF
- Indicates the final byte of a subroutine.
-
-
-
-
- TRK PARAMETERS
-
- BYTE 1 BYTE 2 DETAILS
-
- 00-3F no. of times 00-7F sequence no. normal subroutine pair
-
-
- 40 loop end - use only after loop start
-
-
- 41-7F loop start - e.g. 46 = loop 6 times
-
-
- FC call 00-FE call no. start this call next
-
-
- FD link 00-7F track no. link to this track next
-
-
- FE end 00 (dummy) end in this channel
-
-
- FF loop channel 00-7F loop point loop channel to any step
- e.g. FF/02=loop to step 02
-
-
-
-
- CALL PARAMETERS
-
- prior priority setting $00 (highest) to $3F (lowest)
- bit 6 set ($40) forces all SUB calls to bank b
- (All SUBs used by this call whether from TRK or
- direct call to SUB will be in the same bank)
- bit 7 set ($80) forces direct call to SUB
-
- 0-7 TRK used in this channel (prior less than $80)
- SUB used by this channel (prior greater than $80)
-
-
-
-
- NOTE VALUES
-
- NAME NORMAL DOTTED DOUBLE DOT TRIPLET
-
- Semibreve 30h 48h 54h 20h
-
- Minim 18h 24h 2Ah 10h
-
- Crotchet 0Ch 12h 15h 08h
-
- Quaver 06h 09h - 04h
-
- Semiquaver 03h - - 02h
-
- Demisemiquaver 2/2/1/1 - - 01h
-
-
-
-
- ------------------------------------------------------------------------------
- MEGADRIVE MUSIC PROBLEM SOLVING
- ------------------------------------------------------------------------------
-
- PROBLEM 1:
- Editor 'locks up' when first run, or shows blanks where JUMP and MUSIC should
- be.
-
- REASON:
- Megadrive code not properly initialised.
-
- CURE:
- Exit editor and use S-MEGA to re-send driver to Megadrive. Press RESET when
- prompted and then wait until SEGA credit screen disappears. Then restart
- editor. If JUMP and MUSIC show a value then the Megadrive code is running OK.
-
-
-
- PROBLEM 2:
- Editor locks up during intensive editing e.g. multiple deletion of many bytes.
-
- REASON:
- ESYS hardware has 'fallen over'.
-
- CURE:
- Switch off Megadrive & then switch on again - this will normally clear the
- blockage, leaving the latest music data intact on the editing screen. Use
- Alt D to download to ensure that what is on the screen is also in the console.
-
-
-
- PROBLEM 3:
- On entering the editor, an error 'COMMS not found'.
-
- REASON:
- Normally the Megadrive has not been switched on, but sometimes this could be
- caused by a faulty lead between the PC and ESYS.
-
- CURE:
- Exit the editor, switch on the Megadrive and wait for initialisation, then re-
- enter the editor.
-
-
-
- PROBLEM 4:
- Pressing the spacebar in the editor doesn't stop the sound properly.
-
- REASON:
- Voice 00 is used as 'silence'. If this is set other than the default values
- (see BLANK.SND) then it will not work correctly.
-
- CURE:
- Always leave Voice 00 with all parameters exactly like that of BLANK.SND
-
-
-
- PROBLEM 5:
- The editor shows many many SUB parameters as 'unused'.
-
- REASON:
- To maintain compatibility with SNES .SND files, parameters like panslide or
- echo are read by the driver as either 'unused2' or 'unused4'. This means that
- the appropriate 2 or 4 bytes are read by the Megadrive driver, but ignored as
- actual values. You can therefore take a SNES file and simply ignore any
- parameters that are not used by the Megadrive (it beats stripping out all the
- extras by hand!)
-
- CURE:
- None is needed, but you can remove the extras if you want to be tidy.
-
-
-
- PROBLEM 6:
- Converted SNES .SND files run slowly on the Megadrive.
-
- REASON:
- Tempo commands have different values between the two formats.
-
- CURE:
- After converting a SNES .SND file, simply place the cursor at the beginning of
- SUB00 and use Alt F to search for '82' from beginning to end, and then the
- same for '83' (Globtempo). Whenever a value is found, multiply the tempo by
- 1.265 e.g. SNES tempo=$7A becomes MEGA tempo=$9A.
-
-
-
- PROBLEM 7:
- FM notes 'hang on' when a sound call has finished.
-
- REASON:
- The VCE parameter 'susrel' uses $00-$1F to set the release time once a 'key
- off' has occurred. Normally another note comes along and overrides this.
-
- CURE:
- If you don't want a long release at the end of a sound call set a short
- release time e.g. $1F. Set all release times to $1F except where specifically
- needed otherwise.
-
-
-
- PROBLEM 8:
- Muting a channel from the editor leaves a decaying or hanging note.
-
- REASON:
- The Mutes work by sending a rest immediately and then ignoring further notes
- until the mute is removed. This means that the current note will use the
- current voice's release time to fade away. If the release rate has been set in
- the voice as '00' then this note will hang indefinitely.
-
- CURE:
- Set all release times to $1F except where specifically needed otherwise. This
- will ensure 'instant' mutes!
-
-