/*===============================================================*/

/*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



