;title=Yoshi Island / Castle & Fortress
; ported by gocha, nintspc used for initial mml.
;
; Requirements:
;  Carol's AddMusic with MORE.bin (macro, ADSR, tremolo fix)
;
; ܂Mix5̉yf[^̒uBYI̓ƓȃXgOXƂ
; ԈႤǁA͋C͂ȂɏoĂ͂I
; ς炸ʂ̃oX킩܂ (*t)
; 
; 2008-12-26: first version.
;
; FIXME:
; FIR $02 (0c 21 2b 2b 13 fe f3 f9) is not available, so I used
; raw filter (7f 00 00 00 00 00 00 00) instead, for the time being.

; basic vcmds
"VCMD_PATCH=$da"
"VCMD_PANPOT=$db"
"VCMD_PAN_FADE=$dc"
"VCMD_VIBRATO_ON=$de"
"VCMD_VIBRATO_OFF=$df"
"VCMD_MASTER_VOL_FADE=$e1"
"VCMD_MASTER_VOLUME=$e0"
"VCMD_SET_TEMPO=$e2"
"VCMD_TEMPO_FADE=$e3"
"VCMD_GLOBAL_TRANSPOSE=$e4"
;"VCMD_PERVOICE_TRANSPOSE="
"VCMD_TREMOLO_ON=$e5"
"VCMD_TREMOLO_OFF=$e5 $00 $00 $00" ; $e6
"VCMD_VOLUME=$e7"
"VCMD_VOL_FADE=$e8"
"VCMD_SUBROUTINE=$e9"
"VCMD_VIBRATO_FADE=$ea"
"VCMD_PITCHENV_TO=$eb"
"VCMD_PITCHENV_FROM=$ec"
"VCMD_PITCHENV_OFF=$eb $00 $00 $00"
"VCMD_TUNING=$ee"
"VCMD_ECHO_ON=$ef"
"VCMD_ECHO_OFF=$f0"
"VCMD_ECHO_PARAM=$f1"
"VCMD_ECHO_VOL_FADE=$f2"
"VCMD_PITCH_SLIDE=$dd"
;"VCMD_PERC_PATCH_BASE="

"PATCH_PERC=     @12 h9              "
"PATCH_KIRAKIRA= @2       $ed $0f $19"
"PATCH_FLUTE=    @0  h-12 $ed $0d $e0"
"PATCH_PIZZI=    @9" ; $ed $7f $f6
"PATCH_VIOLIN=   @6  h0   $ed $7e $e0" ; $ed $7c $e0
"PATCH_VIOLIN2=  @4  h0   $ed $79 $e0" ; $ed $7c $e0

"LR8=0"
"LDEC6=1"
"LDDE5=2"
"LDE79=3"
"LE156=4"
"LDEF3_1=5"
"LDE11_1=6"
"LE173=7"
"LE217=8"
"LE1DD=9"
"LE17F=10"
"LE1A0=11"
"LE04E_1=12"
"LDF43_1=13"
"LDEB8_1=14"
"LE1F4=15"
"LDD48_1=16"
"LE109=17"
"LDE3B_1=18"
"LE1AC=19"
"LE22A=20"
"LDEFF_1=21"
"LE20B=22"
"LDE59_1=23"

"ECHO_FIR=$01"
"CHORUS_AMOUNT=$40"
"BASS_TREMOLO_PARAM=$00 $08 $1e"

#0
	; $DC7F / $DD07

	; VCMD_PERC_PATCH_BASE $1c
	w220

	t25
	VCMD_ECHO_ON $ff $00 $00
	VCMD_ECHO_PARAM $02 $1e ECHO_FIR
	VCMD_ECHO_VOL_FADE $28 $0a $0a
	PATCH_VIOLIN2
	VCMD_TREMOLO_ON BASS_TREMOLO_PARAM
	v80
	VCMD_VOL_FADE $96 $e6
	VCMD_VIBRATO_ON $00 $50 $5a
	y14
	q7e; q7d
	o2 c2 ^2 ^2 VCMD_VOL_FADE $96 $64
	^2 ^2 

	;VCMD_TREMOLO_OFF

	; $DC81 / $DEC6
	; $DC83 / $DEC6
	(LDEC6)[
	w180
	VCMD_MASTER_VOL_FADE $90 $e6
	t35
	VCMD_ECHO_ON $ff $00 $00
	VCMD_ECHO_PARAM $02 $1e ECHO_FIR
	VCMD_ECHO_VOL_FADE $60 $28 $28
	PATCH_VIOLIN2
	v240
	VCMD_VIBRATO_ON $18 $1c $18
	y14
	q7e; q7d
	o2 c4. q6e; q6d
	d4. VCMD_MASTER_VOL_FADE $90 $b4
	q7e; q7d
	d+4. q6e; q6d
	d4.
	]2

	/
	; $DC85 / $DDE5
	; $DC87 / $DDE5
	(LDDE5)[
	PATCH_VIOLIN2
	v240
	VCMD_VIBRATO_ON $18 $1c $18
	y14
	q7e; q7d
	o2 c4. q6e; q6d
	d4. VCMD_MASTER_VOL_FADE $90 $b4
	q7e; q7d
	d+4. q6e; q6d
	d4. VCMD_MASTER_VOL_FADE $90 $f0
	q7e; q7d
	f4. q6e; q6d
	g4. VCMD_MASTER_VOL_FADE $90 $b4
	q7e; q7d
	g+4. q6e; q6d
	g4.
	]2

	; $DC89 / $DF18
	PATCH_VIOLIN2
	v240
	VCMD_VIBRATO_ON $18 $1c $18
	y14
	q7e; q7d
	o2 g+4. q6e; q6d
	g4. VCMD_MASTER_VOL_FADE $90 $b4
	q7e; q7d
	g+4. q6e; q6d
	g4. VCMD_MASTER_VOL_FADE $90 $f0
	q7e; q7d
	g+4. q6e; q6d
	g4. VCMD_MASTER_VOL_FADE $90 $b4
	q7e; q7d
	g+4. g4. ^4.

	; $DC8B / $E039
	r4. r4. r6... q7e; q7d
	o1 b16 ^4.

	; $DC8D / $DE79
	; $DC8F / $E09E
	(LDE79)[
	w180
	VCMD_MASTER_VOL_FADE $90 $e6
	PATCH_VIOLIN2
	v200
	VCMD_VIBRATO_ON $18 $1c $18
	y14
	q7e; q7d
	o2 c4. q6e; q6d
	g4. VCMD_MASTER_VOL_FADE $90 $b4
	q7e; q7d
	c4. q6e; q6d
	g4. VCMD_MASTER_VOL_FADE $90 $f0
	q7e; q7d
	c4. q6e; q6d
	g4. VCMD_MASTER_VOL_FADE $90 $b4
	q7e; q7d
	c4. q6e; q6d
	g4.
	]2

#1
	; $DC7F / $DD31

	PATCH_VIOLIN2
	VCMD_TREMOLO_ON BASS_TREMOLO_PARAM
	VCMD_TUNING CHORUS_AMOUNT ; pseudo chorus
	v80
	VCMD_VOL_FADE $96 $e6
	VCMD_VIBRATO_ON $14 $28 $32
	y6
	q7e; q7d
	o2 c2 ^2 ^2 VCMD_VOL_FADE $96 $64
	^2 ^2 

	VCMD_TREMOLO_OFF
	VCMD_TUNING $00

	; $DC81 / $DEF3
	; $DC83 / $DEF3

	; VCMD_SUBROUTINE $56 $e1 $01
	(LE156)[
	PATCH_VIOLIN
	v240
	VCMD_VIBRATO_ON $15 $1c $18
	y8
	r=23 q1d; q1b
	> g=26 g=23 r=23 q5e; q5d
	a=49 r=23 q1d; q1b
	a+=26 a+=23
	]1
	(LDEF3_1)[
	r=23 q5d; q5b
	o3 a=49
	]1
	(LE156)1 (LDEF3_1)1

	/
	; $DC85 / $DE11
	; $DC87 / $DE11

	; VCMD_SUBROUTINE $56 $e1 $01
	(LE156)1
	(LDE11_1)[
	r=23 q5d; q5b
	o3 a=49 r=23 q1d; q1b
	> c=26 c=23
	]1
	; VCMD_SUBROUTINE $73 $e1 $01
	(LE173)[
	r=23 q5e; q5d
	d=49 r=23 q1d; q1b
	d+=26 d+=23
	]1
	r=23 q5d; q5b
	o4 f=49
	;
	(LE156)1 (LDE11_1)1 (LE173)1
	r=23 q5d; q5b
	o4 f=49

	; $DC89 / $DF43
	(LDF43_1)[
	PATCH_VIOLIN
	v240
	VCMD_VIBRATO_ON $15 $1c $18
	y8
	]1

	; VCMD_SUBROUTINE $17 $e2 $01
	(LE217)[
	r=23 q1d; q1b
	d+=26 d+=23 r=23 q5e; q5d
	d=49 r=23 q1d; q1b
	d+=26 d+=23
	]1
	r=23 q5d; q5b
	o4 d=49 
	; VCMD_SUBROUTINE $17 $e2 $01
	(LE217)1
	r=23 q7d; q7b
	o4 d=49 ^4.

	; $DC8B / $E044
	r4. r4. r6... q7e; q7d
	PATCH_VIOLIN2
	VCMD_TREMOLO_ON BASS_TREMOLO_PARAM
	VCMD_TUNING CHORUS_AMOUNT ; pseudo chorus
	< < < b16 ^4. 
	VCMD_TREMOLO_OFF
	VCMD_TUNING $00

	; $DC8D / $DEAA
	(LDF43_1)1
	; VCMD_SUBROUTINE $dd $e1 $02
	(LE1DD)[
	r=23 q1d; q1b
	> > a=26 a=23 r=23 q7e; q7d
	a+=49 r=23 q1d; q1b
	b=26 b=23 r=23 q7d; q7b
	a+=49
	]2

	; $DC8F / $E0CF
	(LDF43_1)1
	; VCMD_SUBROUTINE $dd $e1 $02
	(LE1DD)2

#2
	; $DC7E / $0000
	(LR8)[r8]20

	; $DC81 / $DEFB
	; $DC83 / $DEFB
	; VCMD_SUBROUTINE $7f $e1 $01
	(LE17F)[
	PATCH_VIOLIN
	v240
	VCMD_VIBRATO_ON $14 $1e $1b
	y6
	r=23 q1d; q1b
	o3 d+=26 d+=23 r=23 q5e; q5d
	f+=49 r=23 q1d; q1b
	g=26 g=23 r=23 q5e; q5d
	f+=49
	]2

	/
	; $DC85 / $DE28
	; $DC87 / $DE28
	; VCMD_SUBROUTINE $7f $e1 $01
	(LE17F)1
	r=23 q1d; q1b
	o3 g+=26 g+=23
	; VCMD_SUBROUTINE $a0 $e1 $01
	(LE1A0)[
	r=23 q5e; q5d
	b=49 r=23 q1d; q1b
	> c=26 c=23
	]1
	r=23 q5e; q5d
	o3 b=49
	;
	(LE17F)1
	r=23 q1d; q1b
	o3 g+=26 g+=23
	(LE1A0)1
	r=23 q5e; q5d
	o3 b=49

	; $DC89 / $DF5F
	PATCH_PIZZI
	v200
	y10
	r4. q5e; q5d
	g16 > d16 d16 g16 g16 > d16 ^4. < < g16 > d16 d16 g16 g16 > d16 ^4. < < b16 > f16 f16 b16 b16 > f16 ^4. < d16 b16 b16 b16 > d16 q7e; q7d
	d16 q4e; q4d
	;VCMD_PITCHENV_TO $00 $01 $0c
	b8
	;VCMD_PITCHENV_OFF
	g+16. f24... d24...

	; $DC8B / $E04E
	(LE04E_1)[
	q4e; q4d
	f16 d16 < b=11 g+=11 > d32. < b32. g+24 f24 b24 g+24 f32 d32 g+32 f32 d32 < b32 > f32 d32 < b32 g+32 > d32 < b32 g+32 f32 b32 g+32 f32 d32 q7e; q7d
	]1
	o2 b16 ^4.

	; $DC8D / $DEB8
	(LDEB8_1)[
	PATCH_VIOLIN
	v240
	VCMD_VIBRATO_ON $14 $1e $1b
	y6
	]1

	; VCMD_SUBROUTINE $f4 $e1 $02
	(LE1F4)[
	r=23 q1d; q1b
	> d+=26 d+=23 r=23 q7e; q7d
	e=49 r=23 q1d; q1b
	f=26 f=23 r=23 q7d; q7b
	e=49
	]2

	; $DC8F / $E0DD
	(LDEB8_1)1

	; VCMD_SUBROUTINE $f4 $e1 $02
	(LE1F4)2

#3
	; $DC7E / $DD48
	PATCH_FLUTE
	y10
	v240
	VCMD_VIBRATO_ON $14 $18 $1e
	r=20
	(LDD48_1)[
	q6c; q68
	o4 c12... q7c; q79
	c+=5 q3c; q38
	d+32. q5b; q57
	c32. q3b; q37
	c+=10 q3c; q38
	e32. q79; q75
	g48
	]1
	; VCMD_SUBROUTINE $09 $e1 $01
	(LE109)[
	q25; q22
	^32 q35; q32
	a+32. q6b; q67
	> c8... q4a; q46
	c+=5 q79; q75
	d+96 q78; q74
	c32. q5c; q58
	< b48.. q7c; q79
	> c=13 ^=57 q7c; q78
	e24 q7c; q79
	g48.. q7b; q77
	e96 q6c; q68
	c+48.. q4a; q46
	c48.. q45; q42
	< a+24 r192 q4b; q47
	> c48.. q6a; q66
	c+48.. q5b; q57
	c=10 q65; q62
	< a+=10 q68; q64
	g=11 q79; q75
	e24.. q5b; q57
	c+=13 q6a; q66
	< a+24.. q7b; q77
	> c96 q4c; q48
	c+48..]1
	q6c; q68
	o4 c2

	; $DC81 / $0000
	; 288 ticks
	; $DC83 / $0000
	; 288 ticks
	(LR8)24

	/
	; $DC85 / $DE3B
	(LDE3B_1)[
	PATCH_VIOLIN
	v240
	VCMD_VIBRATO_ON $12 $1e $18
	y10
	]1
	q7e; q7d
	c=23 q1e; q1d
	d+=26 g=23
	; VCMD_SUBROUTINE $ac $e1 $01
	(LE1AC)[
	q7e; q7d
	f+=23 q1e; q1d
	a=26 r=23 q7e; q7d
	a+8. q5e; q5d
	> c16 < a+16 a16 q7e; q7d
	g=23 q1e; q1d
	d=25 r8 q7e; q7d
	f=23 q1e; q1d
	g+=26 > c=23 q7e; q7d
	< b=23 q1e; q1d
	> d=26 r=23 q7e; q7d
	d+8. q5e; q5d
	f16 d+16 d16
	]1
	q7e; q7d
	o5 c=23 q1e; q1d
	< b=25 r8

	; $DC87 / $DE3B
	(LDE3B_1)1
	q7e; q7d
	c=23 q1e; q1d
	d+=26 g=23 
	; VCMD_SUBROUTINE $ac $e1 $01
	(LE1AC)1
	q7e; q7d
	o5 c=23 q1e; q1d
	< b=25 r8

	; $DC89 / $DF94
	PATCH_FLUTE
	v240
	VCMD_VIBRATO_ON $18 $1e $18
	y11
	q7e; q7d
	> c8. q6e; q6d
	< g+16 q7e; q7d
	f+16 q1e; q1d
	g+16 q7e; q7d
	g4.
	; VCMD_SUBROUTINE $2a $e2 $01
	(LE22A)[
	> c8. q6e; q6d
	< g+16 q7e; q7d
	f+16 q1e; q1d
	g+16 q7e; q7d
	g4.
	]1
	o5 f8. q6e; q6d
	d16 q7e; q7d
	c16 q1e; q1d
	d16 q7e; q7d
	< b4. > g+8. q6e; q6d
	f16 q7e; q7d
	d+16 q1e; q1d
	f16 q7e; q7d
	d8 b4 ^4.

	; $DC8B / $0000
	; 288 ticks
	; $DC8D / $0000
	; 576 ticks
	(LR8)36

	; $DC8F / $E0EB
	PATCH_KIRAKIRA
	v240
	q7e; q7d
	< f+8 g8 a+8 a8 g+8 a+8 a4. f+4 a8 g+4 f8 e4 > c+8 c4. < g+4.

#4
	; $DC7E / $DD70
	PATCH_FLUTE
	y3
	v170
	VCMD_VIBRATO_ON $0f $18 $1e
	r=26
	(LDD48_1)1
	; VCMD_SUBROUTINE $09 $e1 $01
	(LE109)1
	q6c; q68
	o4 c4...

	; $DC81 / $DEFF
	; $DC83 / $DEFF
	(LDEFF_1)[
	PATCH_VIOLIN
	v170
	VCMD_VIBRATO_ON $15 $1c $18
	y12 <
	]1
	r=33 q1d; q1b
	g=26 g=23
	; VCMD_SUBROUTINE $0b $e2 $01
	(LE20B)[
	r=23 q5e; q5d
	a=49 r=23 q1d; q1b
	a+=26 a+=23
	]1
	r=23 q5d; q5b
	o3 a=39
	;
	(LDEFF_1)1
	r=33 q1d; q1b
	g=26 g=23
	; VCMD_SUBROUTINE $0b $e2 $01
	(LE20B)1
	r=23 q5d; q5b
	o3 a=39

	/
	; $DC85 / $DE59
	; $DC87 / $DE59
	(LDE59_1)[
	PATCH_VIOLIN
	v170
	VCMD_VIBRATO_ON $0e $1f $18
	y12 >
	]1
	r=10 q7e; q7d
	c=23 q1e; q1d
	d+=26 g=23
	; VCMD_SUBROUTINE $ac $e1 $01
	(LE1AC)1
	q7e; q7d
	o5 c=23 q1e; q1d
	< b=25 r24..
	;
	(LDE59_1)1
	r=10 q7e; q7d
	c=23 q1e; q1d
	d+=26 g=23
	; VCMD_SUBROUTINE $ac $e1 $01
	(LE1AC)1
	q7e; q7d
	o5 c=23 q1e; q1d
	< b=25 r24..

	; $DC89 / $DFD1
	PATCH_FLUTE
	v170
	VCMD_VIBRATO_ON $0e $1f $18
	y15
	r=10 q7e; q7d
	> c8. q6e; q6d
	< g+16 q7e; q7d
	f+16 q1e; q1d
	g+16 q7e; q7d
	g4. > c8. q6e; q6d
	< g+16 q7e; q7d
	f+16 q1e; q1d
	g+16 q7e; q7d
	g6....
	; VCMD_SUBROUTINE $2a $e2 $01
	(LE22A)1
	o5 c8. q6e; q6d
	< g+16 q7e; q7d
	f+16 q1e; q1d
	g+16 q7e; q7d
	g8 > f4 PATCH_PIZZI
	v160
	y16
	r48 q4e; q4d
	;VCMD_PITCHENV_TO $00 $01 $0c
	b8
	;VCMD_PITCHENV_OFF
	g+16. f16. d24

	; $DC8B / $E075
	r48
	(LE04E_1)1
	o2 b24 ^4.

	; $DC8D / $0000
	; 576 ticks
	; $DC8F / $0000
	; 576 ticks
	(LR8)48

#5
	; $DC7F / $DD98
	PATCH_PERC
	y6
	v60
	VCMD_VOL_FADE $78 $c8
	r=40 q3e; q3d
	o4 g64 g64 g64 q5e; q5d
	g32 d32 g32 d24 g=10 g=11 g24.. d16. g=20 g8 d24 g48 g24 r2 r16. d24 q5f
	g24 q5e; q5d
	d32 q5f
	g32 g32 g32 q5e; q5d
	d32 q5f
	g32 g32 g32 q5e; q5d
	d32 q5f
	g24 g24 g12 r4.

	h0

	; $DC81 / $0000
	; 288 ticks
	; $DC83 / $0000
	; 288 ticks
	(LR8)24

	/
	; $DC85 / $0000
	; 576 ticks
	; $DC87 / $0000
	; 576 ticks
	(LR8)48

	; $DC89 / $E01E
	(LDEB8_1)1
	r=23 q1d; q1b
	c=26 c=23
	; VCMD_SUBROUTINE $a0 $e1 $03
	(LE1A0)3
	r=23 q7e; q7d
	o3 b=49 ^4.

	; $DC8B / $0000
	; 288 ticks
	; $DC8D / $0000
	; 576 ticks
	; $DC8F / $0000
	; 576 ticks
	(LR8)60
