
		Sound Driver for FAMICOM/NES [ MCK ] 2003/02/28 version

R͉H
@@t@~Rp̃TEhhCo[łB
@@RgpƁAt@~RőʂȉƂ̂悤ȑ㕨łB
@@ł̓G~[^[Ŋyނ̂Ԏ߂Ǝv܂B

CXg[EACXg[
@@kt@CWJĂ炦ΗǂłB
@@ACXg[͓WJt@CĉB
@@ȂAWXg͏܂̂łSB

g
@@mckP̂ł͎cOȂ牽o܂B6502AZuKvłB
@@MagicKitNESASMpɍ쐬Ă܂̂ŁA܂͂pӉB
@@́@http://www.magicengine.com/mkit/jp_dev.html@łB

@@̑Lƕ֗ȃc[ނ http://nesmusic.zophar.net/ ɑĂ܂B
@@񂲗ɂȂĉB

@@1) c[ނgċȃf[^쐬
@@2) mckNESASMgpAef[^[`i.nes/.nsf/.fds)o
@@3) \

@@ȗɂȂ܂BŐ\󂠂܂񂪁Aڂg͉LTCgQlɂĉB
@@- Make Data - ɎgLڂĂ܂B@http://nesmusic.zophar.net/
@@̃eLXgł̓R}h̏ڍׂLĂ܂B

񑩂Ȃ
@@̃vOɊւ₢킹Av]AoO񍐂Ȃǂ
@@RR@http://nesmusic.zophar.net/@̌fɂ肢܂B
@@Kij郏Pł͂܂񂪁Aɗ͓w͂͂܂B

@@쌠͕łȂ̂Ŏ܂A]ځEςȂǂ͓ɐ͂܂B
@@AC^[lbgȊOւ̃fBAɏЉiȂƂ̂Hj͈񉺂B
@@Rgpč쐬f[^𒮂ĖႦƃEVCłBt@~R̉D
@@LTCgւ̃NEЉȂǂRłB

@@̃vOA͏LTCgɃAbv[hĂ\tgEFAgp
@@Ȃ鑹QEsv҂͂̐ӂ𕉂܂BKȐӔCɂėpB
@@[EBX`FbNĂ܂B

et@C̐
@@mck.txt@@@ R
@@history.txt@ XV
@@sounddrv.h@@2A03pTEhhCo
@@fds.h@@@@ FDSgpTEhhCo
@@n106.h@@@@Namcot106gpTEhhCo
@@freqdata.h@@e퉹pgf[^

@@songdata.h@@ȃf[^it@C͔CӁj
@@effect.h@@@FDS/n106gpFAGtFNg̐ݒf[^
@@jL2̃t@C̓[U[ō쐬܂
@@@@ڍׂŐ܂

@@make_nsf.bat@nsf쐬pBAT
@@make_nsf.txt@nsf쐬p̃f[^iwb_[̓Rj
@@make_nes.bat@nes쐬pBAT
@@make_nes.txt@nes쐬p̃f[^in106Ή̈Mapper19ój
@@make_fds.bat@fds쐬pBAT
@@make_fds.txt@fds쐬p̃f[^iFDSg܂Ŏgpj
@@fdshdr.bin@@fds쐬p̃wb_
@@fdsboot.bin@ fds쐬p̃f[^
@@make_nat.bat@@tpf[^쐬BAT
@@make_nat.txt@@tpf[^쐬̃f[^iN-LINE ATpj

t@C̏ڍ

effect.h
@@낢Ȑݒs܂Bݒłe͈ȉ̒ʂłB

@@E\Of[^		qsongdata.ho^
@@Ef[eBGx[v	(pXgx2)̃f[eBؑ֐ݒi1/60secPʁj
@@E\tgEFAGx[v	ʃRg[i1/60secPʁj
@@Esb`Gx[v	gRg[i1/60secPʁj
@@Em[gGx[v	KRg[i1/60secPʁj
@@E\tgEFALFO		LFOݒifBCAXs[hAfvXj
@@EeEF[uf[^	e퉹pg`f[^iFDS/n106j
@@EDPCMf[^}bsO	DPCMf[^Kf[^Ƀ}bsO
@@EDPCMpf[^o^		DPCMpf[^o^
@@En[hEFAGx[v	FDSpn[hEFAGtFNg
@@Ep`lݒ	n106pp`lo^

@@Gx[vĉH
	̂̓Gx[vƌ΁AʕὠxwĂ
	mckł͂Ȃ񂿂Gx[vƂ΁AȂ񂿂炪ωxӖ邱ƂƂ
	Aǁ[ł[ł
@gĉH
	PbԂɐU񐔁B440HzȂPbԂ440UƂ
	T͂440Hz(=o4a)ƂĂ邱Ƃ
	ĊF񂲑ł

@\Of[^
	ۂ̉tf[^[߂t@Co^
	t@Cɂ̓nCtgpȂŉBNESASM̎dl̂ł

	
	.include	"songdata.h"

@f[eBGx[v
	t@~R̃pXgx2ch̃f[eB1/60PʂŐؑ
	f[eBĉHDDDFƗ𒸂Č\ł

	mɂ͔g`̏㉺̔䗦w܂
	܂ۂɕĂ݂ĉ

	 |<- n2 ->|
	 |        |
	 +--------+        +--------+
	 |        |        |        |
	 |        |        |        |
	-+        +--------+        +--------+
         |                 |
	 |<------ n1 ----->|

	L}̓t@~R̋`gł
	 n2/n1 f[eBA̓f[eBTCNƌ܂
	t@~R̓RR̔䗦4iKɕς̂ł
	DGł

	Ȃ݂50%`gƌĂсȂ̔䗦̓pXgƌĂԂł
	ɁA̔䗦Aŕω邱ƂPWMiPulse Width Modula
	tionjƌł
	ǁ[ł[ł

	127܂Őݒ

	
	--------------------------------------------------------------
	dutyenve_table:
		dw	dutyenve_0,dutyenve_1
	dutyenve_lp_table:
		dw	dutyenve_lp_0,dutyenve_lp_1

	dutyenve_0:
		db	f[^l,f[^lDDD
	dutyenve_lp_0:
		db	f[^lDDD,$ff
	dutyenve_1:
	dutyenve_lp_1:
		db	f[^lDDD,$ff
	--------------------------------------------------------------
	f[^lDDD3,7,11,15̒lŉ
	ꂼ
	@@@ 3 - 12.5%
	@@@ 7 - 25.0%
	@@@11 - 50.0%
	@@@15 - 75.0%
	̃f[eB䂪܂
	1̃f[^1/60sec܂
	$ff̓f[^̍Ō܂
	ȍ~́hdutyenve_lp_?:hɖ߂܂

	j
	--------------------------------------------------------------
	dutyenve_0:
		db	$03,$07,$0b
	dutyenve_lp_0:
		db	$0f,$ff
	--------------------------------------------------------------
	ƁA
	12.5Pt 25Pt 50Pt 75Ybg܂

@@\tgEFAGx[v
	\tgEFA{[Gx[vƌՂ悤ȋC܂
	XOƂ͈ႤƎv܂̂ŁA炭ăcł
	ŁA͉ʂ1/60secPʂŐ؂ւ@\ł
	PSGȉB̓R̎gD`dvł
	127܂Őݒ

	
	--------------------------------------------------------------
	softenve_table:
		dw	softenve_0,softenve_1
	softenve_lp_table:
		dw	softenve_lp_0,softenve_lp_1
	softenve_0:
		db	f[^l,f[^lDDD
	softenve_lp_0:
		db	f[^lDDD,$ff
	softenve_1:
	softenve_lp_1:
		db	f[^lDDD,$ff
	--------------------------------------------------------------
	{Iȏ̓f[eBGx[vƈꏏł
	f[^l͐Βlł

	2A03@|@0-15(00h-0fh)
	FDSg@ |@0-63(00h-3fh)33(21h)ȏ͎w肵ĂӖł
	n106g@|@0-15(00h-0fh)

	$ff̓f[^̍Ō܂
	ȍ~́hsoftenve_lp_?:hɖ߂܂

	j
	--------------------------------------------------------------
	softenve_0:
		db	$00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0a,$09,$08,$07
	softenve_lp_0:
		db	$06,$ff
	--------------------------------------------------------------
	

	Volume

	F_ |
	   |
	   |
	   |
	   |                      _
	A_ |                    _| |_
	   |                  _|     |_
	   |                _|         |_
	   |              _|             |_
	   |            _|                 |__________...
	5_ |          _|
	   |        _|
	   |      _|
	   |    _|
	1_ |  _|
	   |_|___________________________________________
							fps
 	   0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 ...

	ȊɂȂĂƗǂȂ

@@sb`Gx[v
	g1/60secPʂő낤Ƃ㕨ł
	sb`xhA|^gALFOA`[LOɑ劈􂵂ĂC܂
	ĂRőpĉ
	ł{̃sb`Ƃ͂ԈႤlݒȂ̂Ő\ȂCňtł
	127ݒ

	
	--------------------------------------------------------------
	pitchenve_table:
		dw	pitchenve_0,pitchenve_1
	pitchenve_lp_table:
		dw	pitchenve_lp_0,pitchenve_lp_1
	pitchenve_0:
	pitchenve_lp_0:
		db	$00,$82,$00,$82,$00,$02,$00,$02,$ff
	pitchenve_1:
		db	$10,$84,$84,$84,$84
	pitchenve_lp_1:
		db	$00,$ff
	--------------------------------------------------------------
	f[^l
		  1-127(01h-7fh)vX
		129-254(81h-feh)}CiX
	őΒlwɂȂ܂

	n106̎gݒl18bitL	}ȉ̕ωɂ
	̐ݒlł͑ȂȂm܂

	vX}CiXƗL܂AɂčpςĂ܂

	@sb`f[^{@@g_E
		@sb`f[^|@@gAbv
	FDS&n106@sb`f[^{@@gAbv
		@sb`f[^|@@g_E

	Ȃ̂ŋCtĉ
	$ff̓f[^̍Ō܂
	ȍ~́hpitchenve_lp_?:hɖ߂܂B

	j
	--------------------------------------------------------------
	pitchenve_0:
		db	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
		db	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$81
	pitchenve_lp_0:
		db	$00,$00,$01,$01,$00,$00,$81,$81,$ff
	--------------------------------------------------------------
	

	Frequency DATAiEĐgł͂Ȃj

	+5_ |
	    |
	    |
	    |                                ________
	    |                               |        |
	 0_ |-------------------+        +--+        +--+
	    |                   |________|              |
	    |                   @@@@@@@@@@@
	    |@@@@@@@@@@RRɖ߂@@@@@̎
	    |
	-5_ |_____________________________________________
							fps
 	   0 1 ...  10 11 12 13 14 15 16 17 18 19 1A 1B 1C ...

		Rłru[g\ł܂
		Ă̐}͂Ȃ񂾁H

@@m[gGx[v
	AyWĨRgłBm[gGx[văCJXl[~Oł
	PSGȊOł͂܂蕷Ȃ̌tAAyWI(1/60sec)ɍsƂ܂܂ȋ@\ł
	AyWIĉH͘aƉĖႦ΃CC܂
	127܂Őݒ

	
	--------------------------------------------------------------
	arpeggio_table:
		dw	arpeggio_0,arpeggio_1,arpeggio_2,arpeggio_3
	arpeggio_lp_table
		dw	arpeggio_lp_0,arpeggio_lp_1,arpeggio_lp_2,arpeggio_lp_3
	arpeggio_0:
		db	f[^l,f[^lDDD
	arpeggio_lp_0:
		db	f[^lDDD,$ff
	arpeggio_1:
	arpeggio_lp_1:
		db	f[^lDDD,$ff
	--------------------------------------------------------------
	̃Gx[vƓl̋Lq̎dł
	f[^l
		  1-127(01h-7fh)vX
		129-254(81h-feh)}CiX
	őΒlwɂȂ܂
	ł̂+1w肷ƁAĂ鉹P̉܂
	@l-1w肷ƁAĂ鉹P̉܂

	$ff̓f[^̍Ō܂
	ȍ~́harpeggio_lp_?:hɖ߂܂

	j
	--------------------------------------------------------------
	arpeggio_0:
		db	$00
	arpeggio_lp_0:
		db	$01,$81,$81,$01,$ff
	--------------------------------------------------------------
	Ɓỉco[Cj

	c,d-,c,b,c,d-,c,b,DDDƌJԂ1/60bƂɖ܂

@@\tgEFALFOf[^
	Low Frequency Oscillator̗ŌX͒gŨRgw܂
	VZTCU[LFOʂăru[gg\ĂPłA
	mckł̂̋@\̂̓fBCru[gƌĂxȂ悤ȋC܂
	LFOƌĂԂ̂͊ăcł傤H܂ڂȂ̂cOȂƂł
	̂ɂRuVƗĒ΃RKł
	64܂œo^\

	
	--------------------------------------------------------------
	lfo_data:
		db	fBC,Xs[h,fvX,Xs[h܂ł̎
	--------------------------------------------------------------
	płȉɉ

	fBC@LFOʂJn܂ł̎ԁit[Pʁj
	Xs[h@܂܁ALFÕXs[h@XŁA1/4̃t[w
	fvX@@ru[g̐[@YŁAs[Nwł ؂鐔ǂł

	Xs[h܂ł̎	fvX̂܂܂ɃXs[h𔼕ɂ܂@ԂƋɕωĂ
				͋C킦邩ȂƎvA܂ĂȂ肵܂
				͊ȒPȂ񂾂ǂAȁ`񂩂܂ˁ`̂AR

          |<- Speed ->|
        --+       +---+
        D         |   |
	e     +---+   +---+
	p     |           |
	t +---+           +---+                           +
	h |                   |                           |
        --+-------------------+---+-------------------+---+
          0                       |                   |
                                  +---+           +---+
                                      |           |
                                      +---+   +---+
                                          |   |
                                          +---+

	`ƂłALFOƌĂԂ̂ŗL
	E\tgEFAGx[v@\igj
	E\tgEFALFO@\iru[gj
	̓wă\tgEFALFOƌĂԕǂ悤ȋC܂
	mȂ̂ŊԈĂC܂
	˂ŉ

@@FDSFf[^[
	FDSƂ͔̂ɖʔłāAg`x[XFMigjϒ܂
	Ƃ낪Amckł͎gϒ̕ԈႦĂ܂߁Ag`Zbg
	ӖȂĂ܂@ɂ߂Ȃł@܂ڂȂ́DDD
	߂ԈႦĂAe͂Ȃ˂ŉ@肢܂

	ŁA̔g`ł20h[Ƃg`i64bytes)ZbgĂ܂B
	128܂Œuł

	
	--------------------------------------------------------------
	fds_data_table:
		dw	fds_data_000
	fds_data_000:
		db	f[^l,@x64
	--------------------------------------------------------------
	f[^l0-63(00h-3fh)܂łł

	j
	--------------------------------------------------------------
	fds_data_000:
		db	$00,$00,$01,$03,$06,$09,$0d,$14,$19,$21,$25,$2d,$31,$35,$38,$3a
		db	$3c,$3d,$3d,$3e,$3d,$3d,$3b,$3a,$38,$35,$33,$32,$2e,$2d,$2b,$2b
		db	$2b,$2b,$2b,$2d,$2e,$32,$33,$35,$38,$3a,$3b,$3d,$3d,$3e,$3d,$3d
		db	$3c,$3a,$38,$35,$31,$2d,$25,$21,$19,$14,$0d,$09,$06,$03,$01,$00
	--------------------------------------------------------------
	Ȃ

      3f|
	|                   ++                        ++
	|                 +-++-+                    +-++-+
	|                ++    |                    |    ++
	|                |     ++                  ++     |
      3a|               ++      ++                ++      ++
	|               |        |                |        |
	|              ++        ++              ++        ++
	|              |          |              |          |
	|              |          |              |          |
	|             ++          ++            ++          ++
	|             |            |            |            |
	|             |            ++          ++            |
	|             |             ++        ++             |
	|            ++              |        |              ++
      30|            |               |        |               |
	|            |               ++      ++               |
	|            |                ++    ++                |
	|           ++                 |    |                 ++
	|           |                  +----+                  |
	|           |                                          |
      2a|           |                                          |
	|           |                                          |
	|           |                                          |
	|           |                                          |
	|           |                                          |
	|          ++                                          ++
	|          |                                            |
	|          |                                            |
	|          |                                            |
	|         ++                                            ++
      20|         |                                              |
	|         |                                              |
	|         |                                              |
	|         |                                              |
	|         |                                              |
	|         |                                              |
      1a|         |                                              |
	|        ++                                              ++
	|        |                                                |
	|        |                                                |
	|        |                                                |
	|        |                                                |
	|       ++                                                ++
	|       |                                                  |
	|       |                                                  |
	|       |                                                  |
      10|       |                                                  |
	|       |                                                  |
	|       |                                                  |
	|      ++                                                  ++
	|      |                                                    |
	|      |                                                    |
       a|      |                                                    |
	|     ++                                                    ++
	|     |                                                      |
	|     |                                                      |
	|    ++                                                      ++
	|    |                                                        |
	|    |                                                        |
	|   ++                                                        ++
	|   |                                                          |
	|  ++                                                          ++
	+--+------------------------------------------------------------+
	          a    10        1a    20        2a    30        3a    3f
	ƌg`ɂȂ܂
	łHR@tHgɏo郏[vŌׂ
	ۂɂ̗͂_l͏oȂāAX炵ł
	Ă\Yꂽ

@@FDSn[hEFAGtFNgf[^[
	`Rŗǂł傤H
	悭ĂȂăXC}ZDDD
	Ƃ肠lgĉ

	GtFNg16܂œo^
	$4088̔g`8܂œo^

	
	--------------------------------------------------------------
	fds_effect_select:
		db	fBC,WX^,f[^l,c,$ff
	fds_4088_data:
		db	g`f[^l,x32
	--------------------------------------------------------------
	EfBC	GtFNgJn܂ł̎ԁit[Pʁj
	EWX^	WX^$4084-$4088܂ł̎wŁAAhXloŵ݂̎wƂȂ܂
	Ef[^l	LWX^ɏޒlł@ڂ͉L
			$4088͓ŁAfds_4088_datảڂ̔g`g̎wƂȂ܂

			fds_effect_select͑S16bytesɂȂ悤
			f[^̍Ō$ffŒ߂ĉ@ȍ~̓_~[f[^ƂȂ܂

		$4084	[hݒ

			 +--------- 1: ڃf[^w胂[h
			 | ++++++-- f[^l
			 |x||||||
			%00000000
			 ||||||||
			 ||++++++-- Gx[vxl
			 |+-------- 0: Gx[v[h@1: Gx[v[h
			 +--------- 0: Gx[v[h

		$4085	g`l	+32  -32 ܂

			%x0000000
			  |||||||
			  |++++++-- g`l0-32(00h-20h)܂
			  +-------- tOiRRbit0-5̒l̂܂ܕƂȂj

			t7biti2̕␔\jƂcł傤
			ϕƂȂɂ͂̕ӂ̐wI͗˂܂

		$4086	Tugݒ@8bit
		$4087	̉4biťv12bitŎgZo
			$4082,$4083̎dg݂ƈꏏł@ڂfreqdata.hQƉ

			Ȃ݂$4088bit7$4088݃tOł
			$4088ɔg`ލۂ́AK$408780hŉ
			̌bit7Ƀ[ŕĂƂYꂸ

	Eg`f[^l	$4088ɏޒlw肵܂@S32bytesɂȂ悤
			RR$4085ŃZbglZs܂
			̏ꍇA$4085̍őijl𒴂Ȃ悤ɒӂĉ

		$4088	g`f[^l	 3  2  1 0  7  6  5  4
			Zl	+4 +2 +1 0 -1 -2 -4 $4085Ƀ[Zbg

			$4088̔g`32bytesłAFDS̔g`64bytesł̂ŁA
			ۂɂ$4088̉Z2񂸂sRgƂȂ܂
	jru[g
	--------------------------------------------------------------
	fds_effect_select:
		db	$20,$84,$82,85,$00,$87,$80,$88,$01,$86,$10,$87,$00,$ff,$00,$00
	fds_4088_data:
		db	$07,$07,$07,$07,$01,$01,$01,$01
		db	$01,$01,$01,$01,$07,$07,$07,$07
		db	$07,$07,$07,$07,$01,$01,$01,$01
		db	$01,$01,$01,$01,$07,$07,$07,$07
	--------------------------------------------------------------

@@DPCMpf[^[}bsO
	t@~RƓ̉PCM
	[t@Cȉyŉ
	64܂Œu܂

	
	--------------------------------------------------------------
	dpcmdata:
		db	Đ[h,g`l,AhX,Đ
	--------------------------------------------------------------
	āA낢날܂AP

	EĐ[h
		ԂႯWX^$4010ɏޓeł
		DPCM̍ĐƍĐg̎wB
		KvƎv͉̂4bitł@Ă4bit͘MȂł

		4bit̓e͈ȉ̒ʂł

		data	clocks  octave  scale
		-------	------  ------  -----
		F	1B0	8	C
		E	240	7	G
		D	2A0	7	E
		C	350	7	C
		B	400	6	A
		A	470	6	G
		9	500	6	F
		8	5F0	6	D
		7	6B0	6	C
		6	710	5	B
		5	7F0	5	A
		4	8F0	5	G
		3	A00	5	F
		2	AA0	5	E
		1	BE0	5	D
		0	D60	5	C

		lȂȂƍĐxxȂƊoƂʂł悳łB
		Kω͎̂głB
		܁A0fhw肵ĂΕʂɎgɂ͉L܂

	Eg`l
		ԂႯWX^$4011ɏޒlł
		DPCM̔g`Ԃ̒ڎwɂȂ܂
		00hł񂶂ȂHƂA40hÓƂ
		mCYȂxɐݒ肵Ăĉ

		͂MƎOpg̃{[ς炵oO悤ł
		܂ōČĂG~[^[@ŎgȃeNł

		Ȃ݂
		PCM̃f[^lbit0͖gpƂX[ł
		ĂƂbit1-66bitŔg`㉺܂̂
		\tgEFAł+-1łAn[hł+-2œƂ

	EAhX
		ԂႯWX^$4012ɏޒlł
		DPCMf[^̃AhXwɂȂ܂
		ۂ̃AhX́i AhX * 64 + 0C000h jł
		Ⴆ΃XlA$E000uƂƁARR̒ĺ@80h@ƂȂ܂
		Ȃ񂩁iʂɉłC[񂾂ǁjĐꍇA
		RRς邱ƂɂāArĐ邱Ƃo܂

		$FFFFzꍇ$C000ɖ߂$8000ɖ߂̓܂
		ǂȂł傤ˁB@ŎgRłBꔭŔ̂ɁDDD	
		$C000ɖ߂肻ȋCȂłȂ̍肵܂

	EĐ
		ԂႯWX^$4013ɏޒlł
		DPCMf[^ĐԎwɂȂ܂
		mɌƃt@C̃hR܂łĐ邩̎wł
		w̓f[^ʒPʂ ( Đ * 16 ) ł

	͉LDPCMf[^zuƑ΂ōs܂

@@DPCMpf[^o^
	DPCM̂񑩂ŁA$C000炵u܂
	gȂꍇ͑SREMĖႦΑvł
	̐ݒ́uKvŌɋLqĂ
	[ȂƂȎɂȂ܂
	ɂ͍ŌɒuȂĂ[ł

	
	--------------------------------------------------------------
	.bank	2
	.org	AhX
	.incbin	t@C
	--------------------------------------------------------------
	EAhX
		K$C000ȍ~w肵ĉ
		Ƃ̓t@CTCYɎw肵ĉ
	Et@C
		ɂănCt͎gȂŉ

	DPCMpf[^Norix쐬DMCconverter𗘗pƗǂɍ쐬łł傤

@@p`lo^
	iRJX^܂
	RCc1ch-8ch܂ŗpł`lςłƂ܂
	Ƃ낪Afreq.hɂȂĒΕ̂łA
	p`lɂĐgςĂ܂
	ɔg`ɗpł郁̈ωĎQ܂
	܂ł8chpʂł͂ȂƎv܂

	
	--------------------------------------------------------------
	n106_channel:
		db	p`l
	--------------------------------------------------------------
	p`l1-8܂łł
	ȊO̐l͓͂Ȃŉ
	Ȃ݂ɕW4ł

	̃f[^͕Kpӂĉ
	łȂƏXȃRgɂȂ܂

@@n106g`o^
	ɌiRPSGƂ͂܂iRJX^
	񂻂̎ł芬\ĉ
	Ƀf`[܂ĂƂƂłȂCCo܂
	ōł

	
	--------------------------------------------------------------
	n106_wave_init:
		db	g`f[^,ItZbgAhX
	n106_wave_table:
		dw	n106_wave_000
	n106_wave_000:
		db	g`f[^

	--------------------------------------------------------------
	LŃZbg̉FɂȂ܂
	g`f[^4bit̎wƂȂ܂
	ďXGł@

	Eg`f[^
		g`̃f[^w肵܂@ꂼ
		0@@16bytesig`f[^32j
		1@@14bytesig`f[^28j
		2@@12bytesig`f[^24j
		3@@10bytesig`f[^20j
		4@@ 8bytesig`f[^16j
		5@@ 6bytesig`f[^12j
		6@@ 4bytesig`f[^ 8j
		7@@ 2bytesig`f[^ 4j

		ƂȂ܂

	EItZbgAhX
		mapper19g($00-$7f)̃hRɏނł
		RRbit0͌q̔g`f[^̏4bit4bit
		ǂ炩ǂݍނ̂̃tOɂȂ܂̂
		g$10ɒûł20hA$30ɒû
		60hw肵ĉ@bit0̓[ō\܂

		ӂׂ͎gp`lɂċ󂫃ςƂ_ł
		gp`lɂ$7f8bytes܂
		8chĝŗL΁A$7f64bytesg܂̂ŁAEF[u
		f[^û$00-$3f܂łƂƂɂȂ܂
		8chgpɓ8̉F͈܂

		dȂȂ悤CtăZbgĉ
		؂ւ΂bł

	Eg`f[^
		1bytewłAg`4bit̓ǂ݂ƂƂȂ܂̂
		1byte2̔g`f[^ƂȂ܂
		XɌƉ4bitǂ݂Ƃ܂̂ŏԂɋCtĉ
		g`f[^Ŏw肵uĉ
		4bitPʂȂ̂ŁAPTv0-15(00h-0fh)܂łł
	j
	--------------------------------------------------------------
	n106_wave_init:
		db	$00,$00
	n106_wave_table:
		dw	n106_wave_000
	n106_wave_000:
		db	$10,$32,$54,$76,$98,$ba,$dc,$fe,$de,$bc,$9a,$78,$56,$34,$12,$00
	--------------------------------------------------------------
	
	g$0016bytesf[^uāAg`͈ȉȊ

	       f|              ++
		|             ++++
		|            ++  ++
		|           ++    ++
		|          ++      ++
	       a|         ++        ++
		|        ++          ++
		|       ++            ++
		|      ++              ++
		|     ++                ++
		|    ++                  ++
		|   ++                    ++
		|  ++                      ++
		| ++                        ++
		|++                          ++
		++----------------------------+-
		0         a    10        1a    1f

		CCFo琥񋳂ĉ`


songdata.h
@@tf[^iR}hjuĂ܂

@@
@@--------------------------------------------------------------
@@sound_data_table:
	dw	songdata_0,ȉ`lDDD
@@loop_point_table:
	dw	songdata_0_lp,ȉ`lDDD
@@songdata_0:
	db	R}hCf[^l,c
@@songdata_0_lp:
	db	R}h,f[^l,c,$ff
@@ȉ`lDDD
@@--------------------------------------------------------------
@@$fff[^̏I[ƂȂ܂
@@̌songdata_?_lp:ɖ߂܂

@@ȉɊeR}hEf[^l̏ڍׂÂ܂

	$ff
	f[^I[w
		OqƂf[^I[\܂
		[vȂꍇ͍Ōx
		ĂɃ[v悤ɂĉ

	$fe,f[^l
	Fw@ȉf[^l̏ڍ
		2A03
		 +--------- 1: ʏ퉹Fw
		 |   ++++-- Fw($00-$0f)
		 |xxx||||
		%00000000
		 ||||||||
		 |+++++++-- f[eBGx[vZNg($00-$7f)
		 +--------- 0: f[eBGx[vw

		bit7on ̎AFwƂȂ܂
		bit2-3ŉFif[eBjI
		\tgEFAGx[vLɂꍇ
		bit0-1bit𗧂ĂĂ

		bit7off̎Af[eBGx[vwƂȂ܂
		effect.hœo^Gx[vgp܂

		Ȃ݂ɎOpgɂ͉FI܂
		$8fłĉ

		FDSg@@n106g
		effect.hɋLqFIƂȂ܂
		l$00-$7f܂ł128ƂȂ܂

	$fd,f[^l
	ʎw@ȉf[^l̏ڍ
		2A03@@n106g
		 +--------- 1: ʏ{[w
		 |   ++++-- {[wi$00-$0fj
		 |xxx||||
		%00000000
		 ||||||||
		 |+++++++-- \tgEFAGx[vZNgi$00-$7fj
		 +--------- 0: \tgEFAGx[vw

		bit7on ̎A{[wƂȂ܂
		bit7off̎A\tgEFAGx[vwƂȂ܂
		effect.hœo^Gx[vgp܂

		FDSg
		 +--------- 1: ʏ{[w
		 |+-------- 0: ʎw@1: \tgEFAGx[vw
		 ||++++++-- {[w or \tgEFAGx[vZNg(00h-3fh)
		 ||||||||
		%00000000
		 ||||||||
		 ||++++++-- n[hEFAGx[vx($00 slow <--> $3f fast)
		 |+-------- 1: Fade-in@0: Fade-out
		 +--------- 0: n[hEFAGx[vw

		XGɂĂ܂܂
		An[hEFAGx[vADSR\ł悤
		dg݂ς悢ł
		ł͎gɂȂ܂

	$fc,f[^l
	xw
		f[^l͋x̎Ԃł
		Pʂ̓t[ł
		ffh(4.25sec)蒷ԋxɂ΁A
		qwaitR}hgĉ
		l1-255(01h-ffh)ł

		[w肷256t[ƂȂĂ܂܂

	$fb,f[^l
	\tgEFALFOw
		f[^ĺAeffect.hɋLqLFOf[^
		ԖڂgHł
		l0-63(00h-3fh)܂łł
		o^64܂ŉ\łAɎgpô
		uvł@gp̕ǂł傤H

		ffhw肷Ƃȍ~\tgEFALFO𖳌ɂ܂

	$fa,f[^l
	f`[w
		ݒ肳ꂽgAf[^lsb`igj炷
		1chł͌ʂ𔭊܂@1chŖ炵A
		̃R}hŃYĂ邱ƂɂAɑό݂o܂
		ȉڍׂL܂

		  1-127(01-7fh)܂ł@{@ɂ炵܂
		129-254(81-feh)܂ł@|@ɂ炵܂

		ffhuƁAȍ~detunewƂȂ܂

		lłA2A03@@lȂƉ͉
				FDS&n106@@@@lȂƉ͏オ
		ƂȂ܂
		́AƂ̍ĐgZoႤł
		̂freqdata.hQƂĂ݂Ă
		ƁAn106ɌA
			f`[wl@@IN^[u
		ۂ̏ޒlƂȂ܂BႷ̂ł͂Ȃł傤
		Ăsb`xhRɂǂł


	$f9,f[^l
	n[hEFAXEB[vw
		2A03n[hEFAŎĂXEB[v@\gp܂
		`g2chp̃R}hɂȂ܂
		ȉf[^l̏ڍׂL܂

		%00000000
		 ||||||||
		 |||||+++- EVtg
		 ||||+---- g`̌E
		 |+++----- XEB[vXVx
		 +-------- XEB[vtO

		܂ܒf[^Ȃ̂ŁAɂꍇ$80߂OK
		A`g12ł͊|ɍ܂
		ڂ͂ǂ̎ł

	$f8,f[^l
	sb`Gx[vw
		f[^ĺAeffect.hɋLqsb`
		Gx[vf[^̉ԖڂgHł
		l0-127(00h-7fh)܂łł

		ffh܂ꂽsb`Gx[vȍ~ɂ܂

	$f7,f[^l
	m[gGx[vw
		f[^ĺAeffect.hɋLqm[g
		Gx[vf[^̉ԖڂgHł
		l0-127(00h-7fh)܂łł

		ffh܂ꂽm[gGx[vȍ~ɂ܂
		\tgEFAGx[vƕp̂CCł傤

	$f6,AhXlow,AhXhigh,Đ
	Đgڎw
		Đg𒼐ڎw肷2A03pR}hł
		Ƃ낪ӖȂĂ܂DDDFDS&n106ł͎gȂ

		EAhXLOW @@Đgpf[^̉8bit
		EAhXHigh@@Đgpf[^̏3bit
		EĐԁ@@@@Đԁit[Pʁj

	$f5,AhXlow,AhXhigh,f[^l
	ڏݎw
		t@~R̃ɒڏ݁iwrite)܂
		܂ӖȂl͎gĂ͂܂
		Ɓ`ĂfWXł

		EAhXlow @@ރAhX̉8bit
		EAhXhigh@@ރAhX̏8bit
		Ef[^l@@@@ރf[^

		Q[Ȃ񂩂ŋȂƓƂɎgR}hłDDDH

	$f4,f[^l
	EFCgݒ
		f[^lit[Pʁjňێ܂
		̓rŃGtFNgۂɃRLpĒ
		ȁ`ĎgCCł

	$f3,f[^l
	FDSgpn[hEFAGtFNgw
		f[^ĺAeffect.hɋLqn[hEFAGtFNg
		f[^̉ԖڂgHł@FDSgp
		l0-127(00h-7fh)܂łł
		
		ffhw肷Ƃȍ~n[hEFAGtFNg͖ƂȂ܂

	$a1,[vAhX
	s[gw
		q郊s[gwœr甲ꍇɎg܂
		Ō̂P[vɃ[vAhX֔т܂

		E[vAhX@2bytesw
					ۂ̓xw肷`ɂȂ܂
					ڍׂ͎

	$a0,[v,[vAhX
	s[gw
		ȃf[^dӏ̓Rg[v邱Ƃo܂

		E[v񐔁@@܂܃[v񐔂ł
				@l0-255(00h-ffh)܂
				@w肵l̉񐔕[vAhXɔт܂

		@@@@@@@@@[͖[vƂȂ܂@
				@Kw܂oȂ̂Ŏۂ
				@w肷邱Ƃ͂ȂƎv܂

		E[vAhX@@[vŖ߂̃AhXw

	j	songdata.h
	--------------------------------------------------------------
	loop_start:
		db	$42,$20
		db	$44,$20

		db	$a1		;R}h
		dw	loop_end	;Ō̃[vȂloop_end

		db	$45,$20
		db	$47,$20

		db	$a0,$03		;[vR}h
		dw	loop_start	;[v񐔂cĂȂloop_start
	loop_end:
		db	$49,$20
		db	$4a,$20
	--------------------------------------------------------------
	x͑̃xƏdȂΉłCCł

	LMMLɂƁ@h[ de | fg ]3 abh@ɑ


	$00-$8f,Đ
	K^w
		ۂɖ炷f[^ł
		KA̒̏ɕт܂

		EK
		%00000000
		 ||||||||
		 ||||++++- K0-15($0-$f)Ŏw@}Q
		 ++++----- IN^[u0-8($0-$8) ɂėpłIN^[uςĂ܂
						ڂfreqdata.hQƉ

		data	l 0 l  1 l 2 l 3 l 4 l 5 l 6 l 7 l 8 l 9 l A l B l C l D l E l F l
		MML(?)	l c l  d-l d l e-l e l f l g-l g l a-l a l b-l b l   l a l b-l b l

		łB
		DEFab-b͉ƂƂPIN^[uႢ̂łB
		i[ȃRgĂ邩͕ȂłBƒȂ̂ŁDDD
		ԒႢK̓RRw肵ȂƖ܂Bӂi蔲ŃX}
		
		Ȃ݂ɃmCYp[gw̎dłAĐg͊e
		Ċm߂Ă̂悢ł傤B

		E
		̒̓t[Pʂł@1/60iNTSC)
		ŌvZďłBƋꂶȂłi
		AvZĂB̕ӂMMLRo[^Cōs
		I܂񂪁A

		T=120@@PԂ4120 = 40.5sec = 30/60fps = $1e
			1/1 = 2.0     =120.00/60	= $78
			1/2 = 1.0     = 60.00/60	= $3C
			1/4 = 0.5 sec = 30.00/60 fream	= $1E
			1/8 = 0.25    = 15.00/60	= $0F
			1/16= 0.125   =  7.50/60	= $07 
			1/32= 0.0625  =  3.75/60	= $03 
		 j[̃m͒K킹悤

		󂾂$ff(4.25sec)ȏ̉点ȂvZɂȂ܂@dlł
		EFCgR}h($f4)gČqĉ

	gtOiNSFonlyj
		g̎gp錾

	SOUND_GENERATOR	equ	f[^l
		
	f[^l
	db	#%00000000
                    ||||||
                    |||||+---------- VRC6
                    ||||+----------- VRC7
                    |||+------------ FDS
                    ||+------------- MMC5
                    |+-------------- Namcot106
                    +--------------- FME-07

	FDSn106̑IL܂

⑫
@@EĐԂ̓t[Ŏw肷킯łA[͎w肵Ȃł
@@@ȂȂ[1255ɂȂ邩ł

@@EmCY̓IN^[ůTO͂܂BK$00-$0f̎wŊ肢܂

@@EDPCḾh($00-$3f)̃f[^炷hȎwƂȂ܂
@@@IN^[ůTO͂܂@}bsO킯ł
@@@o2ł̎gpƂȂ܂

@@EDPCM͕ςȃR}huƎ~܂܂@Ctĉ
	[v@@w( $ff )́@CP܂
	F@@@w( $fe )̓CP܂@ĂuȂłB܂
	ʁ@@@w( $fd )CP܂@ĂuȂłB܂
	x@@@w( $fc )́@CP܂
	ken@@w( $fb )̓CP܂@ĂuȂłB܂
	f`[w( $fa )CP܂@ĂuȂłB܂
	XEB[vw( $f9 )CP܂@ĂuȂłB܂
	sb`@@w( $f8 )CP܂@ĂuȂłB܂
	AyWIw( $f7 )CP܂@ĂuȂłB܂
	Đgw( $f6 )CP܂@ĂuȂłB܂
	w( $f5 )CP܂@ĂuȂłB܂
	EFCg@w( $f4 )́@CP܂
	n[hLFO w( $f3 )̓CP܂
	򔻒f@w( $a1 )́@CP܂
	s[g@w( $a0 )́@CP܂

@@Ef[^ɂȂĂ܂ANESASMgpɃG[oꍇ
@@@KȃgRŉL߂songdata.hɑ}ĉ
	.bank	1
	.org	$a000

@@Eȓo^ꍇ
	܂ł܂
	AIɂ̕ӂ͎蓮ł`ɂȂ܂
	effect.h͂Pނ̂
	songdata.hɕȂo^
	ł΃XOł邩܂

@@EFDS`ŏo͂ꍇ
	DPCMgp邩ۂŐݒς˂΂Ȃ܂
	DPCMgp̏ꍇ͂̂܂܂
	gpȂꍇmake_fds.txt

	;    .bank 2

	REM菜ĉ
