HuSIC
Publié : dim. 06 juil. 2014 16:21
Je viens de tomber sur les sources d'HuSIC sur GitHub!
Quand je pense qu'à l'époque on n'avait que l'assembleur produit par HuC pour le code du player...
Code : Tout sélectionner
;
; This is a tiny translation version of hus.txt.
; It's there just only to be convenient for people
; who cannot understand Japanese language very well.
; There is no warranty on the correctness.
; So, for sure, read the original text (written in Japanese language).
; Always original text is preferred than this tiny trasnslation
; on any differences.
;
///////// HuSIC for PCE ////////////
/ A Tool of Creating Music on PCE /
/ ver 0.14, Programmed by BouKiCHi /
////////////////////////////////////
* Usage
In first of all, prepare and setup "HuC 3.20".
Actually, you need pceas.exe and libraries.
Put
pcewave.h(included in this package),
effect.h, songdata.h (data generated by mckc)
in a same directory, and exec
pceas huc.s
Or you can use make_pce.bat to assemble.
As a preparation to enable this, you need setup include files and
environment variable(s) point to them.
For example, you need to do
set PCE_INCLUDE=c:\some\where\huc\include\pce
or so. (the place is just a example. set the right location instead.)
For more details, read documents of "HuC 3.20".
* Current status
It has
- 6ch monophonic
- software volume envelope
- wave change(modify?)
- noise mode (4,5ch)
* Description about local extension commands
- $f2,switch
switch=$00 : noise off
switch=$01 : noise on
In case of noise, octave becomes invalid. (valid only lower 4bit)
And, valid only for 4ch and 5ch becauseof hardware limitaion.
- $f1,waveformnumber
Set wave-form from table.
The waveformnumber means location in table.
(stored in same way with envelope data and so on)
- $f0,pan-volume
Set volume per channel.
higher 4 bit = left channel, lower 4 bit = right channel
0 = lowest, 15 = maximum
- $ef,XPCM
XPCM=1 : XPCM mode, use 6th channel
- $ee,bank-number,address(lower 8bit),address(higher 8bit)
Change bank which contain sequence data.
- $ed,mode
Set LFO mode. (stop LFO with 255)
0 = no LFO
1 = track_A + modulation_data
2 = track_A + modulation_data*16(4bit left shift)
3 = track_A + modulation_data*256(8bit left shift)
waveform data of track_B is used as modulation_data.
In this case, waveform data are treated as signed 5bit values.
* While LFO is enabled, track_B is muted.
- $ec,LFO-frequency
frequency = 3.58MHz / (32 * track_B_frequency * LFO_frequency)
* Attention when change bank
Cannot use repeat command over banks.
* History
ver 0.01 2004-02-29-
It was made basical parts in a rush.
It wasted a lot of time until I found HuC doesn't accept KANJI in comment.
ver 0.02 2004-03-10
Changed compiler to HuC 3.20.
Fixed sound-note was wrong.
Changed the way to load data.
Enabled volume command.
ver 0.03 2004-03-11
Now it has 6 channels.
Added software volume envelope command.
Added following extension commands:
$F2 command (noise setting command) valid only on 4,5ch.
$F1 command (change wave-form command) valid on all channel.
ver 0.04 2004-03-13
Fixed notes were half upper in wrong.
Fixed initialize routine of wave-form.
ver 0.05 2004-03-14
Added pitch envelope command.
Added de-tune command.
ver 0.06 2004-03-15
Changed the way to control volume.
Added extended pan command($F0).
ver 0.07 2004-03-23
Added repeat command. ($A0, $A1)
ver 0.08 2004-04-06
Changed maximum value of volume from 15 to 31.
Removed pcewave.h. Renamed to pce_data_table.
ver 0.08a 2004-04-09
Added MP command provisionally.
ver 0.08b 2004-04-10
Changed action of noise-command-off to return to wave-form mode.
ver 0.09 2004-04-13
Widened noise freqency range. (from 00h to 1Fh)
Made noise to support pitch envelope.
Introduced XPCM(PCM function using DirectD/A driven by timer)
(it use 6th-ch. it's on with $ef=1)
Now driver routine is driven by VSYNC interrupt.
ver 0.10 2004-04-17
Added $EE command(bank change).
the form is $EE, bank, next sequence data.
To adapt to the above, require bank number also for music data pointer now.
Improved the data structure size calculation method when generate HES.
ver 0.10(without XPCM) 2004-05-05
Test for systems which do not have enough speed (or do not support PCM).
ver 0.11 2004-05-27
Added LFO function.
Decreased frequency table to 16.
ver 0.12 2004-05-28
Lowered frequency table 1 octave.
ver 0.12a 2004-10-19
Fixed a problem cannot access to data area(including tone) when bank change.
ver 0.13 2004-10-23
Ditto for other place(s).
ver 0.14 2005-01-19
Fixed point which was not work LFO trigger.
* Conventional notes
- You are free in to redistribute, to modify, and to use.
- Interesting data and cool data are invited.
- Any ideas are invited.