/*===============================================================*/
/*SPU RAM̃AP[g*/
/*===============================================================*/
 00 0000 +------+
         |005020| VXë
 00 5020 +------+
         |002000| CD/DVDXg[~OĐGAiEj
 00 7020 +------+
         |002000| CD/DVDXg[~OĐGAij
 00 9020 +------+
         |      | (IOPXg[~OA荞ݔpg`GAetc.)
 01 5220 +------+
         |00ADE0| o[uGA(CORE0)
 02 0000 +------+
         |      |
         |150000| 풓g`GA(BGM:E0000+SE:70000)
         |      |
 17 0000 +------+
         |      |
         |085220| ֔g`GA
         |      |
 1F 5220 +------+
         |00ADE0| o[uGA(CORE1)
 1F FFFF +------+

/*===============================================================*/
/*SPU `l蓖*/
/*===============================================================*/
 CORE0/ch00 - 15(16) BGM1
 CORE0/ch16 - 23(08) BGM2(O)
 CORE1/ch00 - 07(08) BGM2(㔼)
 CORE1/ch08 - 21(14) SE
 CORE1/ch22 - 23(02) Stream(L/R)

/*===============================================================*/
/*PS1̎dlύX*/
/*===============================================================*/
 spu_ch_tbl 폜B
 keyd --> keyd[2]ɊgBeRÃWX^ɑΉB
 song_end -->song_end[2]ɊgBeRÃWX^ɑΉB
 song_fout_term -->song_fout_term[2]ɊgBeRÃWX^ɑΉB

11/26
 sceSdVoiceTransStatus(0, SD_TRANS_STATUS_CHECK)̓삪
 2ڂ̔g`]ȍ~A]ɂȂȂB
 libsd̃oOtBNX܂ŁAWaveSpuTrans()́Ag`]I/O]ɂĂB

11/29
 SNG_DATA_SIZE0x10000oCgɊg
 c[link_sng -->lksngps2ɕύX

 ݂ɔg`Nc[́A
 link_vag --> lkvagps2ɕύXς

11/30
 //nagato/exports/soundefx1Amdx1Awvx1Ƀ}X^[f[^鎖

12/01
 //rsr/develop/mgs2쐬
 //rsr/develop/mgs2/module/soundŃTEhvOJ鎖

 CVSǗn߂
 cvs commit -m "MESSAGE" TEhvOAbv[h
 cvs add filename ǉt@Co^
 cvs remove filename t@C̓o^
 cvs remove -f filename t@C̓o^ƍ폜
 cvs update -d o[XVTEht@C̃_E[h

 TEhf[^̍XV
 E//nagato/exports/soundefx1Amdx1Awvx1Ƀ}X^[f[^(VhCu)
 E//rsr/usr/local/develop/mgs2/moduleŁAmake data cdrom.imgXV

12/02

sd_set_cli(0xSD_GET_STATUS);TEhXe[^X̎擾B

==============================================================
 int *sd_status()EEETEhXe[^XԂEE֐(sd_ee.c)
--------------------------------------------------------------
FTEhXe[^Xi[̈ւ̃|C^Ԃ
ԂlFTEhXe[^Ẍւ̃|C^(ptr)
             +-----------+
        ptr->| status[0] |
             +-----------+
             | status[1] |
             +-----------+
             | status[2] |
             +-----------+
             | status[3] |
             +-----------+
        status[0] : b31-b00 = Reserved
        status[1] : b31-b03 = Reserved
                    b02=1 g`f[^(.wvx)[h
                    b01=1 SEf[^(.efx)[h
                    b00=1 BGMf[^(.mdx)[h
        status[2] : b31-b03 = Reserved
        status[3] : b31-b03 = Reserved

2000/01/04
/*===============================================================*/
/*~LVOEtF[_[iTEhGfB^Ήj*/
/*===============================================================*/
R[h 0xFD000000 - 0xFD1F3FFF
0xFDiivvtt EEE ii=gbNԍ(0x00 - 0x1F)
           EEE vv=(0x00 - 0x3F)
           EEE tt=^C}[(0x00:0mSec `(5mSecP)` 0xFF:1275mSec)

/*===============================================================*/
/*SPU RAM̃AP[g*/ Xg[~OGA̒ǉ
/*===============================================================*/
 00 0000 +------+
         |005020| VXë
 00 5020 +------+
         |002000| CD/DVDXg[~OĐGAiEj
 00 7020 +------+
         |002000| CD/DVDXg[~OĐGAij
 00 9020 +------+
         |002000| IOPXg[~OGA1
 00 B020 +------+
         |002000| IOPXg[~OGA2
 00 D020 +------+
         |002000| IOPXg[~OGA3
 00 F020 +------+
         |002000| IOPXg[~OGA4
 01 1020 +------+
         |002000| IOPXg[~OGA5
 01 3020 +------+
         |002000| IOPXg[~OGA6
 01 5220 +------+
         |      |
         |00ADE0| o[uGA(CORE0)
         |      |
 02 0000 +------+
         |      |
         |150000| 풓g`GA(BGM:E0000+SE:70000)
         |      |
 17 0000 +------+
         |      |
         |085220| ֔g`GA
         |      |
 1F 5220 +------+
         |      |
         |00ADE0| o[uGA(CORE1)
         |      |
 1F FFFF +------+

2000/01/13
/*===============================================================*/
/*FXgbN*/
/*===============================================================*/
 Ȃ̍ĐACӂ̃^C~OŃWO(FX)炷B
 idŃR[ꂽ̓X^[gj
EFXS xxx yyy
	FXSEEEFXgbNX^[g
	xxxEEEN[h
			0`31:NĎgbNԍiʃgbN̋Nj
			255:R[h̋N (R[h=0xFF000100)
	yyyEEEN^C~O
			1`255:N܂ł̃Xebv(1-255)

EFXE
	FXEEEEFXgbNGh

EXON
	XONEEEʃgbNFXN

2000/01/18
/*===============================================================*/
/* Cg[vEXLbviTEhGfB^Ήj*/
/*===============================================================*/
afluL1SvAuL1E 00 00 00vŃ[vƖ[v邪AR[h(0xFF0000FF)sƒ́uL1EvXLbvB

ʏaflŁuL1E 00 00 00v([v)͎gp֎~

/*===============================================================*/
/* ʉ~iTEhGfB^Ήj*/
/*===============================================================*/
ʉuL1SvAuL1E 00 00 00vŃ[vƖ[v邪AR[h(0xFF0000FF)sƒ́uL1EvXLbvBuL1Ev̒ɃL[ItĂƂrd~߂鎖łB

ʏʉŁuL1E 00 00 00v([v)͎gp֎~

/*===============================================================*/
/* gbNw艹ʈړ */
/*===============================================================*/
EVOI xxx yyy zzz
	VOIEEEgbNw艹ʈړ
	xxxEEEgbNԍ(0-31)
	yyyEEEړɗvXebv(1-255)
	zzzEEEڕWƂȂ鉹(0-255)

w肵gbN̉ʐݒ(VOL)Őݒ肵ȂƌʂȂB

2000/01/19
/*===============================================================*/
/*~LVOEpEtF[_[iTEhGfB^Ήj*/
/*===============================================================*/
R[h 0xFC000000 - 0xFC1F3FFF
0xFCiivvtt EEE ii=gbNԍ(0x00 - 0x1F)
           EEE vv=pʒu(:0x00 - 0x1F::0x20 - E:0x3F)
           EEE tt=gp

/*===============================================================*/
/*~LVOEpEtF[_[Ή GfB^R[hdlύX */
/*===============================================================*/
EPAN mode pos
	PANEEEpʒuݒ
	modeEEE0:ʏ̐ݒBFZbg(SNO)Apʒu̓ftHgʒuɖ߂
              1:FZbg(SNO)PANʒu̐ݒ͎c
              2:tF[_[񂩂pʒu擾
	posEEEpʒu(-20()`0()`20(E))Bmode=2ł͖B

/*2000/01/21*/
/*===============================================================*/
/*~LVOERrjEtF[_[iTEhGfB^Ή)      */
/*===============================================================*/
R[h 0xFB000000 - 0xFB1F3F3F

0xFBiippvv EEE ii=gbNԍ(0x00 - 0x1F)
           EEE pp=pʒu(:0x00 - 0x1F::0x20 - E:0x3F)
           EEE vv=(0-0x3F)

/*2000/01/26*/
/*===============================================================*/
/*~LT[EI[g[V@\
/*===============================================================*/
egbNf[^Ƀ~LT[EI[g[V𖄂ߍ
EAT1 vol env/timer mode
EAT2 vol env/timer
EAT3 vol env/timer
EAT4 vol env/timer
EAT5 vol env/timer
	AT1EEE~LT[I[g[V
	volEEE(0 - 255)
	env/timerEEEGx[v(0-255AAT4ł255Œ)/^C}[l(0-255)
	modeEEE1:^C}[E[hilfrQptF[Y؂ւj
			  2:Gx[vE[h(KhCop)

envl(mode2)́AAT1<=AT2<=AT3<=AT4ł鎖
envl(mode2)́AQ[ł͉R[hɂăvOCӂ̃^C~Oœ͂B
AT2/AT3/AT4mode̐ݒ͂ȂBAT1ɏ
timerl(mode1)0̎Avol̐ݒ͖
/*===============================================================*/
/*~LT[EGx[vEZbg(I[g[Vmode2)          */
/*===============================================================*/
R[h 0xFA000000 - 0xFA0000FF

0xFA0000xx EEE xx=Gx[vl

/*2000/02/02*/
/*===============================================================*/
/*VAGf[^E[vĐ                                      */
/*===============================================================*/
E[vX^[g
 VAGf[^E[vtO4:[vJnAhXݒ

E[vGh
 VAGf[^E[vtO1:[vɏI
 VAGf[^E[vtO3:Oɐݒ肳ꂽ[vJnAhXɍĐʒu߂

Oɐݒ肳ꂽ[vAhXAʔg`̂̂łĂ֖߂B
  L[IɃ[vAhXݒ肪Zbg鎖͖B
  ==>L[IOɃvOŃX^[gAhXݒ肵ĂΗǂB
[vԂ͊eubÑ[vtO2ɂKv͂ȂB
  2]̂̓[vGĥ݁B
  AASPU2 Overview}jAu1.3.3.[vvɂ́Au[v|Cgݒ
  Ăg`f[^́AׂẴubÑwb_LOOPrbg1ɐݒ肵Ă
  KvvƂ̋LqB

/*===============================================================*/
/*Xg[~OpTEhRAMe                          */
/*===============================================================*/
E44KHzVAGf[^́A44100*16/28=25200=0x6270Byte/Sec.̃TCY
  0x1000Bytẽobt@ł͖b6`7̃obt@XVKvB

/*2000/02/09*/
/*===============================================================*/
/*Xg[~ODMA]                            */
/*===============================================================*/
E荞ݒP=5mSecAĐ=44KHzADMA]TCY=0x800BytȅꍇA
  PbԂ12`13DMA]NB
  ̌ʁA1bԂ12`13ADMA]BUSYŎ̓]sȂ
  荞ݏB
  ́A0x800ByteDMA]5mSECȏ10mSec̏Ԃ
  ƂӖB
E0x800ByteDMA]ɗv鏈Ԃ10mSecƂƁA44KhzĐɂ
  (0x800Byte=3584/44100=)80mSECDMA]KvȂ̂ŁAĐ
  gbN10ƂȂBiAAoXLłꍇj
E22KHzł́AĐgbN20ƂȂBiAAoXLłꍇj
E̎eXǵAɋNBGMESEĐlĂȂ̂ŁA
  ۃQ[ɑgݍޏꍇɂ́AgbNL̔xɗ}̂
  S?
EAR[A_[WEAEgn̉̓TEhRAMɒûSB
/*===============================================================*/
/*Xg[~Opf[^쐬̒                       */
/*===============================================================*/
Eg`f[^쐬̒(wv??.lst̗)
--------------
wv0000??  <--- o̓t@C
00000000  <--- ݁AIOPg`oN\͂Ȃ̂ŁA0Œ
00000100  <--- 100Ԃ̉Fԍɐݒ肷(GfB^Őݒ肷鉹Fԍ+0x100)
vc01      <--- ȍ~Ag`(vag)t@C𗅗
vc02
vc03
vc04
vc05
dummy00  <--- ŌɕK_~[f[^(.SUPǂݍރe[u̐)
--------------
Eő14gbNĐ
  TEhGfB^ł́ATrack00`13ł̂ݐݒ
/*===============================================================*/
/*Xg[~OpR[h                               */
/*===============================================================*/
EMNO no.
	MNOEEEXg[~OpFw
	no.EEEFԍ(0`99)

SNÕp[^ςȂ̂ŁAʃR[hɂB
/*===============================================================*/
/*Xg[~Õf[^eʁibj                       */
/*===============================================================*/
E44KHzg`̏ꍇA1b̃f[^eʂ25200(0x6270)Byte
EIOP̊mۗeʂ͌524288(0x80000)Byte
E524288(0x80000)ByteōĐł鎞Ԃ́A20.8b
E22KHzg`̏ꍇA41.6b

/*2000/03/01*/
/*===============================================================*/
/*ʉTEhR[hg                                       */
/*===============================================================*/
EʉTEhR[h0x200܂ŎĂ悤ɂB

  0000|0000|pppp|ppvv|vvvv|000x|xxxx|xxxx b

  p(6bit)EEEp:0x20()<--0x00()-->0x1F(E)
  v(6bit)EEE:0x00(min.) --- 0x3F(max.)
  x(9bit)EEErdԍ
               0x001 - 0x0FF:풓rd
               0x100 - 0x1FF:ւrd

/*2000/05/31*/
/*===============================================================*/
/*Xg[~OĐ[bŁAHDD]                        */
/*===============================================================*/
EXg[~OĐiR[h0xF0?? ????j
  AHDD̒ڃXg[~OBEEoRB

EXg[~O~iR[h0xFF00000Aj

/*2000/06/12*/
/*===============================================================*/
/*EE̓ǂݍ݃^XN                                         */
/*===============================================================*/
EEẼXg[~Of[^ǂݍݗpɃ^XNǉ
  ^XND͈ȉ̂Ƃ

	BASE_PRIORITY	64
	PRI_SD_INT		(BASE_PRIORITY-2)	//D抄荞ݏ
	PRI_SD_SET		(BASE_PRIORITY-1)	//R[hZbg
	PRI_SD_EE_LOAD	(BASE_PRIORITY)		//EẼXg[~Of[^ǂݍ
	PRI_SD_MAIN		(BASE_PRIORITY+1)	//CD̓ǂݍ

/*2000/06/13*/
/*===============================================================*/
/* EẼfpTEhXg[~Odl                         */
/*===============================================================*/
Tv
-------------------------------------------------------------------
[r[ĐAĐA|fpTEhf[^̃Xg[~OĐŎgp
IOP(TEh)̃_uobt@(0x4000*2)Ƀ^C~OƂf[^]

R[h
-------------------------------------------------------------------
EXg[~Opobt@Ex[XAhXݒ
	0xCxxx xxxx	EEExxx xxxx = EEAhX

EXg[~OJn
	0xF2xx xxxx	EEExx xxxx = Xg[~Of[^TCY

EXg[~Opobt@]
	0xF3xx xxxx	EEExx xxxx = x[XAhX̃ItZbg
	Ӂj0x4000oCgPʂœ]鎖

EXg[~Opݒ
	0xF4cc ffff	EEEcc = `l(1or2)Affff = Đg
	ӁjXg[~Of[^<.pcm>wb_Ɋ܂܂IOPɒʒm

EXg[~O~ir~Ɏgpj
	0xFF00 000E

EXg[~OJn|[YiĐJn^C~O킹Ɏgpj
	0xFF00 000F
	ӁjXg[~OĐJn(0xF2xxxxxx)Oɔs鎖

EXg[~OJn|[YiĐJn^C~O킹Ɏgpj
	0xFF00 0010
	Ӂjobt@](0xF3xxxxxx)IOPobt@𖞃^ɂĂ甭s鎖

EXg[~OtF[hAEg~ir~Ɏgpj
	0xFF00 0011	EEERbԂ̃tF[hAEgA~

EEE菇
-------------------------------------------------------------------
PjEẼXg[~Opobt@Ex[XAhXIOP(TEh)ɒʒm

	jsd_set_cli(0xCxxxxxxx);

QjXg[~Of[^ǂݍ

RjĐJn^C~O킹́AJn|[Y

	jsd_set_cli(0xFF00000F);

SjXg[~OĐJn(Xg[~Of[^TCY)ʒm
    `lAĐgʒm

	jsd_set_cli(0xF2xxxxxx);
	    sd_set_cli(0xF4ccffff);

TjXg[~Opobt@]ʒmAf[^IOPɓǂݍ܂

	jsd_set_cli(0xF3000000);
	    sd_set_cli(0xF3006000);

	ӁjIOP(TEh)̃obt@0x4000 * 2̃_uobt@
	     Jn|[YĂȂꍇ́AQ̃obt@^ɂȂƍĐJn

UjXg[~OJn|[YĂ鎞́Asd_status[1]&0x10QƂAIOP̃obt@^ɂȂ̂҂

VjXg[~OJn|[YAĐJn

	jsd_set_cli(0xFF000010);

Wjsd_status[3](SPUւ̓]ς݃f[^JE^)QƂ̏Aobt@̋󂫂mFÃobt@]ʒm

XjrŃXg[~OĐ~鎞́A~R[h𔭍s

	jsd_set_cli(0xFF00000E);

POjsd_status[3](SPUւ̓]ς݃f[^JE^)QƂ̏AĐmF

	Ӂj]ς݃f[^JE^TCYɒBA12VSyncɍĐ(44.1KHz̏ꍇ)

Eӎ
-------------------------------------------------------------------
EXg[~O̒~ÃXg[~OĐJn(0xF2xxxxxx)܂ŁA1Vsyncȏ̊Ԃ󂯂鎖

/*2000/06/16*/
/*===============================================================*/
/* int *sd_status()EEEXe[^Xbit̒ǉ
/*===============================================================*/
FTEhXe[^Xi[̈ւ̃|C^Ԃ
ԂlFTEhXe[^Ẍւ̃|C^(ptr)
             +-----------+
        ptr->| status[0] |
             +-----------+
             | status[1] |
             +-----------+
             | status[2] |
             +-----------+
             | status[3] |
             +-----------+
        status[0] : b31-b00 = Reserved
        status[1] : b31-b03 = Reserved
                    b06(00000040)=1 Xg[2/3Đ(ĐÕf[^[h܂)
                    b05(00000020)=1 Xg[1Đ(ĐÕf[^[h܂)
                    b04(00000010)=1 Xg[2ŏ̃f[^[hAĐƓOFF
                    b03(00000008)=1 Xg[1ŏ̃f[^[hAĐƓOFF
                    b02(00000004)=1 g`f[^(.wvx)[h
                    b01(00000002)=1 SEf[^(.efx)[h
                    b00(00000001)=1 BGMf[^(.mdx)[h
        status[2] : b31-b03 = Xg[1iHDD̃Xg[~OjJE^
        status[3] : b31-b03 = Xg[2/3iEẼXg[~OjJE^

/*2000/06/23*/
/*===============================================================*/
/* Xg[R(8bit->16bitLinear)
/* EẼfpTEhXg[~Odl
/*===============================================================*/
Tv
-------------------------------------------------------------------
[r[ĐA|fpTEhf[^̃Xg[~OĐŎgp
IOP(TEh)̃_uobt@(0x4000*2)Ƀ^C~OƂf[^]B
Xg[Q͉ĐŎgpAXg[Q̓fi[r[A|fjŎgpB

Xg[R̓
-------------------------------------------------------------------
EVAGɋ߂ij
E8bitkȂ̂ŁAVAG2{߂eʂv
E96000oCg(48000*2)/b̍Đ[g
  EEIOPւ̓](0x4000PʂŊZ)́A5`6/b
E48KHz/STEREOŒ(SPU2̏o16bitf[^MIXĂ)
ElibsdDMAgׁADMA`l1L
  (Xg[1/QƂ̓gp͂łȂBXg[1/2͓gpB)

R[h
-------------------------------------------------------------------
EXg[~Opݒ(Xg[2ƋL)
	0xF4cc ffff	EEEcc = `l(1or2)Affff = Đg
					  cc=0Affff=0̏ꍇASTR3gp
	ӁjXg[~Of[^<.pcm>wb_Ɋ܂܂IOPɒʒm
		  Xg[Rt@C̏ꍇ́Awb_̎gE`l0ɂȂĂ

/*2000/06/28*/
/*===============================================================*/
/* TEhXg[~OdlύX
/*===============================================================*/
Tv
-------------------------------------------------------------------
ECD->IOP̃Xg[~Op~
E_u(2gbN)Xg[~OdlɕύX
EVAGXg[~O8bitkXg[~O̐؂ւ

e`l̗pr
-------------------------------------------------------------------
EPgbN(VAGXg[~O)

	Q[̉ĐɎgp (gρAMONO/STEREOρj

EQgbN(VAGXg[~O or 8bitkXg[~O)

	VAGXg[~OEEEQ[̉ĐɎgp
	(gρAMONO/STEREOρAPgbNƓĐj

	8bitkXg[~OEEEfTEhĐɎgp
	(g=48KHzŒASTEREOŒAPgbNƓĐs)

/*2000/06/30*/
/*===============================================================*/
/* TEhXg[~OdlύX
/*===============================================================*/
Tv
-------------------------------------------------------------------
ECD->IOP̃Xg[~Op~BEẼXg[~ÔݑΉ

E_u(2gbN)Xg[~OdlɕύX

(E8bitkXg[~Öׁ͓Aꎞgp֎~)

e`l̗pr
-------------------------------------------------------------------
EPgbN(VAGXg[~O)

	Q[̉ĐɎgpĉ (gρAMONO/STEREOρj

EQgbN(VAGXg[~O)

	fTEhĐɎgpĉ (gρAMONO/STEREOρj

R[h
-------------------------------------------------------------------
EXg[~Opobt@Ex[XAhXݒ

	0x8xxx xxxx	EEExxx xxxx = Xg[~O1f[^pEEx[XAhX
	0xCxxx xxxx	EEExxx xxxx = Xg[~O2f[^pEEx[XAhX

EXg[~OETCYݒ

	0xF0xx xxxx	EEExx xxxx = Xg[~O1f[^TCY
	0xF2xx xxxx	EEExx xxxx = Xg[~O2f[^TCY

EXg[~Opݒ`ĐJn

	0xF5cc ffff	EEEXg[~O1̏
	0xF4cc ffff	EEEXg[~O2̏

	cc = `l(1or2)Affff = Đg

	ӁjXg[~Of[^<.pcm>wb_Ɋ܂܂IOPɒʒm

EXg[~Opobt@]

	0xF1xx xxxx	EEExx xxxx = Xg[~O1x[XAhX̃ItZbg
	0xF3xx xxxx	EEExx xxxx = Xg[~O2x[XAhX̃ItZbg

	Ӂj0x4000oCgPʂœ]鎖

EXg[~O~ir~Ɏgpj

	0xFF00 000A EEEXg[~O1~
	0xFF00 000E EEEXg[~O2~

EXg[~OJn|[YiĐJn^C~O킹Ɏgpj

	0xFF00 000B EEEXg[~O1Jn|[Y
	0xFF00 000F EEEXg[~O2Jn|[Y

	ӁjXg[~OĐJn(0xF2xxxxxx)Oɔs鎖

EXg[~OJn|[YiĐJn^C~O킹Ɏgpj

	0xFF00 000C EEEXg[~O1Jn|[ỶAĐX^[g
	0xFF00 0010 EEEXg[~O2Jn|[ỶAĐX^[g

	Ӂjobt@](0xF3xxxxxx)IOPobt@𖞃^ɂĂ甭s鎖

ӎ
-------------------------------------------------------------------
EXg[~O̒~ÃXg[~OĐJn(0xF2xxxxxx)܂ŁA1Vsyncȏ̊Ԃ󂯂鎖

EEւ̃Xe[^Xʒm
-------------------------------------------------------------------
int *sd_status()EEEXe[^Xbit̒ǉ

FTEhXe[^Xi[̈ւ̃|C^Ԃ
ԂlFTEhXe[^Ẍւ̃|C^(ptr)
             +-----------+
        ptr->| status[0] |
             +-----------+
             | status[1] |
             +-----------+
             | status[2] |
             +-----------+
             | status[3] |
             +-----------+
        status[0] : b31-b00 = Reserved
        status[1] : b31-b14 = Reserved
                    b13(00002000)   EẼf[^ǂݍݒ(Xg[~O2)
                    b12(00001000)   EẼf[^ǂݍݒ(Xg[~O1)
                    b11(00000800)   reserved
                    b10(00000400)   reserved
                    b09(00000200)   reserved
                    b08(00000100)   reserved
                    b07(00000080)   reserved
                    b06(00000040)=1 Xg[2Đ(ĐÕf[^[h܂)
                    b05(00000020)=1 Xg[1Đ(ĐÕf[^[h܂)
                    b04(00000010)=1 Xg[2ŏ̃f[^[hAĐJnƓOFF
                    b03(00000008)=1 Xg[1ŏ̃f[^[hAĐJnƓOFF
                    b02(00000004)=1 g`f[^(.wvx)[h
                    b01(00000002)=1 SEf[^(.efx)[h
                    b00(00000001)=1 BGMf[^(.mdx)[h
        status[2] : b31-b00 = Xg[1ĐJE^(oCg)
        status[3] : b31-b00 = Xg[2ĐJE^(oCg)

EE菇
-------------------------------------------------------------------
PjEẼXg[~Opobt@Ex[XAhXIOP(TEh)ɒʒm

	jsd_set_cli(0x8xxxxxxx);	//Xg[~O1̏ꍇ
		sd_set_cli(0xCxxxxxxx);	//Xg[~O2̏ꍇ

QjXg[~Of[^ǂݍ

RjĐJn^C~O킹́AJn|[Y

	jsd_set_cli(0xFF00000F);	//Xg[~O1̏ꍇ
		sd_set_cli(0xFF00000F);	//Xg[~O2̏ꍇ

SjXg[~OĐJn(Xg[~Of[^TCY)ʒm
    `lAĐgʒm

	jsd_set_cli(0xF1xxxxxx);	//Xg[~O1̏ꍇ
		sd_set_cli(0xF5ccffff);

		sd_set_cli(0xF2xxxxxx);	//Xg[~O2̏ꍇ
		sd_set_cli(0xF4ccffff);

TjXg[~Opobt@]ʒmAf[^IOPɓǂݍ܂

	jsd_set_cli(0xF1000000);	//Xg[~O1̏ꍇ
	    sd_set_cli(0xF1004000);

		sd_set_cli(0xF3000000);	//Xg[~O2̏ꍇ
	    sd_set_cli(0xF3004000);

	ӁjIOP(TEh)̃obt@0x4000 * 2̃_uobt@
	     Jn|[YĂȂꍇ́AQ̃obt@^ɂȂƍĐJn

UjXg[~OJn|[YĂ鎞́A

	sd_status[1]&0x8	//Xg[~O1̏ꍇ
	sd_status[1]&0x10	//Xg[~O2̏ꍇ

	QƂAIOP̃obt@^ɂȂ̂҂
	(LtO=0(OFF)ɂȂ܂ő҂)

VjXg[~OJn|[YAĐJn

	jsd_set_cli(0xFF00000C);	//Xg[~O1̏ꍇ
		sd_set_cli(0xFF000010);	//Xg[~O2̏ꍇ

Wjsd_status[2]Asd_status[3](ĐJE^)QƂ̏Aobt@̋󂫂mFÃobt@]ʒm

XjrŃXg[~OĐ~鎞́A~R[h𔭍s

	jsd_set_cli(0xFF00000A);	//Xg[~O1̏ꍇ
		sd_set_cli(0xFF00000E);	//Xg[~O2̏ꍇ

POjĐmF

	sd_status[1]&0x20	//Xg[~O1̏ꍇ
	sd_status[1]&0x40	//Xg[~O2̏ꍇ

	LtO=1(ON)Ȃ΁A܂Đ

/*===============================================================*/
/*ʉTEhR[hύX                                       */
/*===============================================================*/
EʉTEhR[h̃pʒuf[^͈͕̔ύX
  ~LT[I[g[Ṽpݒƍ킹`ɂ܂

  0000|0000|pppp|ppvv|vvvv|000x|xxxx|xxxx b

  jp(6bit)EEEp:0x20()<--0x00()-->0x1F(E)

  Vjp(6bit)EEEp:0x00()<--0x20()-->0x3F(E)

/*===============================================================*/
/*~LVOERrjEtF[_[dlǉTEhGfB^Ή)*/
/*===============================================================*/
Eɂʂ悤Ɏdlǉ܂

ER[h 0xFB000000 - 0xFBFF3F3F

0xFBiippvv EEE ii=gbNԍ(0x00 - 0x1F)
				ii=0xFE Xg[~O1gbN
				ii=0xFF Xg[~O2gbN

           EEE pp=pʒu(:0x00 - 0x1F::0x20 - E:0x3F)
           EEE vv=(0-0x3F)

/*2000/07/04*/
/*===============================================================*/
/* BGM(SNG)ĐX^[gAʃtF[_[0ŊJn
/*===============================================================*/
R[h

 0xFF000014


 ʏABGM(SNG)ĐX^[gɉʃtF[_[őɐݒ肷邪A
 ̉R[h(0xFF000014)sBGM(SNG)ĐɌ肵āA
 ʃtF[_[0ɐݒ肵ăX^[g

/*2000/07/07*/
/*===============================================================*/
/*~LT[EI[g[V@\(AT5`8ǉ)
/*===============================================================*/
egbNf[^Ƀ~LT[EI[g[V𖄂ߍ
EAT1 vol timer/env mode
EAT2 vol timer/env
EAT3 vol timer/env
EAT4 vol timer/env
EAT5 vol timer/env
EAT6 vol timer/env
EAT7 vol timer/env
EAT8 vol timer/env

	volEEE(0 - 255)
	timer/envEEEmode1:^C}[l(0-255) / mode2A3=Gx[v(0-255AAT8ł255Œ)
	modeEEE1:^C}[E[hitF[Y؂ւj
			  2:Gx[vE[h1
			  3:Gx[vE[h2
				AT2`8mode̐ݒ͂ȂBAT1ɏ

AT1珇ɐݒ肵ĂBԂƂ΂ƌʂȂ

timerl(mode1)0̎Avol̐ݒ͖

envl(mode2A3)́AAT1<=AT2<=AT3<=AT4<=AT5<=AT6<=AT7<=AT8ł鎖
envl(mode2A3)́AQ[ł͉R[hɂăvOCӂ̃^C~Oœ͂B

/*===============================================================*/
/*~LT[EGx[vEZbg(I[g[Vmode2)          */
/*===============================================================*/
R[h 0xFA000000 - 0xFA0000FF

0xFA0000xx EEE xx=Gx[vliGx[vE[h1j
0xFA0001xx EEE xx=Gx[vliGx[vE[h2j

/*2000/07/11*/
/*===============================================================*/
/*Xg[~O1̓ǂݍݐݒ                                */
/*===============================================================*/
Xg[~OP(vox1/vc*.pcm)̓ǂݍݐݒ肷鉹R[h

0xFF000012
	EEEIOPHDDXg[f[^(vc*.pcm)ǂݍނ悤Aݒ肷
	EEEȍ~̃Xg[~O1́AHDDIOPɒړǂݍ܂

0xFF000013
	EEEEEoRœǂݍ݃Xg[f[^ǂݍނ悤Aݒ肷(DEFAULT)
	EEEȍ~̃Xg[~O1́AEEoRœǂݍ܂

/*2000/07/17*/
/*===============================================================*/
/*TEhGfB^etOݒ                                */
/*===============================================================*/
Ee    

	modeEEE0:σ[hAʉȂtO
		1:SE[hɌW炸AgbN̏Ńo[uZbgtO

	flagEEE0:tOOFF
		1:tOON

/*2000/07/18*/
/*===============================================================*/
/*pbNt@C̓ǂݍ                                       */
/*===============================================================*/
<.wvx><.efx><.mdx>܂Ƃ߂t@C<.sdx>ǂݍ
ǂݍݒ́Asd_status[1]&7 ő҂ĉ

ER[hEEE0xFE8x xxxx	EEEx xxxx = pbNt@Cԍ

/*===============================================================*/
/*pbNt@C̃pXZbg                                   */
/*===============================================================*/
<.sdx>pXݒ肵z̐擪AhXTEhɒʒm

ER[hEEE0x8xxx xxxx	EEExxx xxxx = EEAhX

