6 #include "str2float.h"
\r
13 #define SKIPSP(p) {while(*p==' '||*p=='\t')p++;}
\r
16 #define SKIPSP_BGA(p) {while(*p==' '||*p=='\t'||*p==','||*p=='('||*p==')'||*p=='['||*p==']'||*p=='x'||*p=='|')p++;}
\r
19 #define SKIPDEC(p) {while((*p>='0'&&*p<='9')||*p=='-'||*p=='+')p++;}
\r
22 #define SKIPHEX(p) {while((*p>='0'&&*p<='9')||(*p>='a'&&*p<='f')||(*p>='A'&&*p<='F')||*p=='-'||*p=='+')p++;}
\r
25 #define SKIPZEX(p) {while((*p>='0'&&*p<='9')||(*p>='a'&&*p<='z')||(*p>='A'&&*p<='Z')||*p=='-'||*p=='+')p++;}
\r
28 static const int s_nChannelToLane[10] = { 1,2,3,4,5,7,6,1,7,0 }; // Ch
\82É
\91Î
\89\9e\82·
\82é
\83\8c\81[
\83\93\94Ô
\8d\86\r
32 // Clear()
\82æ
\82è
\91O
\82É
\8f\89\8aú
\89»
\82ª
\95K
\97v
\82È
\82à
\82Ì
\82¾
\82¯
\82±
\82±
\82Å
\8f\89\8aú
\89»
\82·
\82é
\r
33 this->pBPM = this->pBPMLast = NULL;
\r
34 this->pWave = this->pWaveLast = NULL;
\r
35 this->pBMP = this->pBMPLast = NULL;
\r
36 this->pBMPTEX = this->pBMPTEXLast = NULL;
\r
37 this->pBGA = this->pBGALast = NULL;
\r
38 this->pBGAPan = this->pBGAPanLast = NULL;
\r
39 this->pAVI = this->pAVILast = NULL;
\r
40 this->pAVIPan = this->pAVIPanLast = NULL;
\r
41 this->pChip = this->pChipLast = NULL;
\r
43 this->pTimer = NULL;
\r
44 this->bDTXV = false;
\r
45 this->bWAVCache = true;
\r
46 this->bBMPCache = true;
\r
57 //
\93à
\95\94\8fó
\91Ô
\82Ì
\8f\89\8aú
\89»
\r
58 this->strFullPath.clear();
\r
59 this->strFolder.clear();
\r
60 this->strFileExt[0] = _T('\0');
\r
61 this->scoreType = SCORETYPE_UNKNOWN;
\r
62 this->strTitle.clear();
\r
63 this->strArtist.clear();
\r
64 this->strComment.clear();
\r
65 this->strPanel.clear();
\r
66 this->strGenre.clear();
\r
67 this->bHiddenLevel = false;
\r
68 for( int i = 0; i < 3; i++ )
\r
69 this->nLevel[i] = 0;
\r
71 this->dbBaseBPM = 0.0;
\r
72 this->strStage.clear();
\r
73 this->strPresound.clear();
\r
74 this->strPreimage.clear();
\r
75 this->strPremovie.clear();
\r
76 this->strBackground.clear();
\r
77 this->strBackgroundGR.clear();
\r
78 for( int i = 0; i < 7; i++ ) {
\r
79 this->strResultImage[i].clear();
\r
80 this->strResultMovie[i].clear();
\r
82 this->strMIDI.clear();
\r
83 this->bMIDINote = false;
\r
84 this->nMIDILevel = 0;
\r
85 this->bBlackColorKey = true;
\r
86 this->strPathWav.clear();
\r
87 this->fSpeed = 1.0f;
\r
88 this->bHeaderOnly = false;
\r
90 for( int i = 0; i < 10; i++)
\r
91 this->nTotalChipsD[ i ] = 0;
\r
92 this->nTotalChipsG = 0;
\r
93 this->nTotalChipsB = 0;
\r
94 this->bUseDrum = false;
\r
95 this->bUseGuitar = false;
\r
96 this->bUseBass = false;
\r
97 this->bUseHHOpen = false;
\r
98 this->bUseRide = false;
\r
99 this->bUseLeftCymal = false;
\r
100 this->strHash[0] = _T('\0');
\r
101 // BPM
\83\8a\83X
\83g
\82Ì
\89ð
\95ú
\82Æ
\8f\89\8aú
\89»
\r
103 BPM* b = this->pBPM;
\r
110 this->pBPM = this->pBPMLast = NULL;
\r
112 // WAV
\83\8a\83X
\83g
\82Ì
\89ð
\95ú
\82Æ
\8f\89\8aú
\89»
\r
114 Wave* w = this->pWave;
\r
117 // Wave::sound[][]
\82Ì
\89ð
\95ú
\82Í
\83T
\83E
\83\93\83h
\83}
\83l
\81[
\83W
\83\83\82Å
\8ds
\82¤
\82½
\82ß
\81A
\82±
\82±
\82Å
\82Í
\89ð
\95ú
\82µ
\82È
\82¢
\81B
\r
122 this->pWave = this->pWaveLast = NULL;
\r
124 // BMP
\83\8a\83X
\83g
\82Ì
\89ð
\95ú
\82Æ
\8f\89\8aú
\89»
\r
126 BMP* bm = this->pBMP;
\r
127 while( bm != NULL )
\r
129 // BMP::pSurface
\82Ì
\89ð
\95ú
\82Í
\83T
\81[
\83t
\83F
\83C
\83X
\83}
\83l
\81[
\83W
\83\83\82Å
\8ds
\82¤
\82½
\82ß
\81A
\82±
\82±
\82Å
\82Í
\89½
\82à
\82µ
\82È
\82¢
\81B
\r
134 this->pBMP = this->pBMPLast = NULL;
\r
135 this->bUseBMP = false;
\r
136 this->dwBMPWidthMax = 0;
\r
137 this->dwBMPHeightMax = 0;
\r
139 // BMPTEX
\83\8a\83X
\83g
\82Ì
\89ð
\95ú
\82Æ
\8f\89\8aú
\89»
\r
141 BMPTEX* bmt = this->pBMPTEX;
\r
142 while( bmt != NULL )
\r
144 // BMPTEX::pTexture
\82Ì
\89ð
\95ú
\82Í
\83e
\83N
\83X
\83`
\83\83\83}
\83l
\81[
\83W
\83\83\82Å
\8ds
\82¤
\82½
\82ß
\81A
\82±
\82±
\82Å
\82Í
\89½
\82à
\82µ
\82È
\82¢
\81B
\r
145 BMPTEX* n = bmt->next;
\r
146 SAFE_DELETE( bmt );
\r
149 this->pBMPTEX = this->pBMPTEXLast = NULL;
\r
150 this->bUseBMPTEX = false;
\r
151 this->dwBMPTEXWidthMax = 0;
\r
152 this->dwBMPTEXHeightMax = 0;
\r
154 // BGA
\83\8a\83X
\83g
\82Ì
\89ð
\95ú
\82Æ
\8f\89\8aú
\89»
\r
156 BGA* bg = this->pBGA;
\r
157 while( bg != NULL )
\r
163 this->pBGA = this->pBGALast = NULL;
\r
165 // BGAPAN
\83\8a\83X
\83g
\82Ì
\89ð
\95ú
\82Æ
\8f\89\8aú
\89»
\r
167 BGAPan* bp = this->pBGAPan;
\r
168 while( bp != NULL )
\r
170 BGAPan* n = bp->next;
\r
174 this->pBGAPan = this->pBGAPanLast = NULL;
\r
176 // AVI
\83\8a\83X
\83g
\82Ì
\89ð
\95ú
\82Æ
\8f\89\8aú
\89»
\r
178 this->tAVI
\83\8a\83X
\83g
\82Ì
\89ð
\95ú
\82Æ
\8f\89\8aú
\89»();
\r
180 // AVIPAN
\83\8a\83X
\83g
\82Ì
\89ð
\95ú
\82Æ
\8f\89\8aú
\89»
\r
182 this->tAVIPAN
\83\8a\83X
\83g
\82Ì
\89ð
\95ú
\82Æ
\8f\89\8aú
\89»();
\r
184 // CHIP
\83\8a\83X
\83g
\82Ì
\89ð
\95ú
\82Æ
\8f\89\8aú
\89»
\r
186 this->tCHIP
\83\8a\83X
\83g
\82Ì
\89ð
\95ú
\82Æ
\8f\89\8aú
\89»();
\r
188 // Cache OFF
\82Ì
\8fê
\8d\87\82Í
\81A
\8eÀ
\83f
\81[
\83^
\82ð
\82±
\82±
\82Å
\82·
\82×
\82Ä
\89ð
\95ú
\82·
\82é
\81B
\r
189 if( ! this->bWAVCache ) {
\r
190 this->soundManager.t
\8eg
\97p
\83t
\83\89\83O
\82ð
\83N
\83\8a\83A
\82µ
\95¡
\90»
\83Z
\83\8b\82ð
\8dí
\8f\9c\82·
\82é();
\r
191 this->soundManager.t
\96¢
\8eg
\97p
\83T
\83E
\83\93\83h
\82ð
\8dí
\8f\9c\82·
\82é();
\r
193 if( ! this->bBMPCache ) {
\r
194 this->textureManager.ResetCache();
\r
195 this->textureManager.RemoveUnusedTextures();
\r
196 this->surfaceManager.ResetCache();
\r
197 this->surfaceManager.RemoveUnusedSurfaces();
\r
200 void DTX::tAVI
\83\8a\83X
\83g
\82Ì
\89ð
\95ú
\82Æ
\8f\89\8aú
\89»()
\r
202 AVI* a = this->pAVI;
\r
211 this->pAVI = this->pAVILast = NULL;
\r
212 this->bUseAVI = false;
\r
214 void DTX::tAVIPAN
\83\8a\83X
\83g
\82Ì
\89ð
\95ú
\82Æ
\8f\89\8aú
\89»()
\r
216 AVIPan* ap = this->pAVIPan;
\r
217 while( ap != NULL )
\r
219 AVIPan* n = ap->next;
\r
223 this->pAVIPan = this->pAVIPanLast = NULL;
\r
225 void DTX::tCHIP
\83\8a\83X
\83g
\82Ì
\89ð
\95ú
\82Æ
\8f\89\8aú
\89»()
\r
227 Chip* c = this->pChip;
\r
234 this->pChip = this->pChipLast = NULL;
\r
237 bool DTX::MyOneTimeSceneInit()
\r
239 //
\83T
\83E
\83\93\83h
\83}
\83l
\81[
\83W
\83\83\82Ì
\8f\89\8aú
\89»
\r
240 this->soundManager.Init( CD3DApplication::hWnd, DSSCL_PRIORITY );
\r
242 //
\83e
\83N
\83X
\83`
\83\83\83}
\83l
\81[
\83W
\83\83\82Ì
\8f\89\8aú
\89»
\r
243 this->textureManager.OneTimeSceneInit();
\r
245 //
\83T
\81[
\83t
\83F
\83C
\83X
\83}
\83l
\81[
\83W
\83\83\82Ì
\8f\89\8aú
\89»
\r
246 this->surfaceManager.OneTimeSceneInit();
\r
249 return Activity::MyOneTimeSceneInit();
\r
252 bool DTX::MyActivate()
\r
254 //
\8aù
\82É
\8a\88\90«
\89»
\82µ
\82Ä
\82½
\82ç
\89½
\82à
\82µ
\82È
\82¢
\r
255 if( this->bActivate )
\r
258 //
\93à
\95\94\83\8a\83\
\81[
\83X
\82Ì
\89ð
\95ú
\r
261 return Activity::MyActivate();
\r
264 bool DTX::MyUnActivate()
\r
266 //
\8a\88\90«
\89»
\82µ
\82Ä
\82È
\82¢
\82È
\82ç
\89½
\82à
\82µ
\82È
\82¢
\r
267 if( ! this->bActivate )
\r
270 this->tAVI
\83\8a\83X
\83g
\82Ì
\89ð
\95ú
\82Æ
\8f\89\8aú
\89»();
\r
271 this->tAVIPAN
\83\8a\83X
\83g
\82Ì
\89ð
\95ú
\82Æ
\8f\89\8aú
\89»();
\r
272 this->tCHIP
\83\8a\83X
\83g
\82Ì
\89ð
\95ú
\82Æ
\8f\89\8aú
\89»();
\r
274 return Activity::MyUnActivate();
\r
277 bool DTX::MyFinalCleanup()
\r
279 this->soundManager.Term(); //
\83T
\83E
\83\93\83h
\83}
\83l
\81[
\83W
\83\83\82Ì
\8fI
\97¹
\r
280 this->textureManager.FinalCleanup(); //
\83e
\83N
\83X
\83`
\83\83\83}
\83l
\81[
\83W
\83\83\82Ì
\8fI
\97¹
\r
281 this->surfaceManager.FinalCleanup(); //
\83T
\81[
\83t
\83F
\83C
\83X
\83}
\83l
\81[
\83W
\83\83\82Ì
\8fI
\97¹
\r
283 return Activity::MyFinalCleanup();
\r
286 bool DTX::MyInitDeviceObjects()
\r
288 this->textureManager.InitDeviceObjects(); //
\83e
\83N
\83X
\83`
\83\83\83}
\83l
\81[
\83W
\83\83\r
289 this->surfaceManager.InitDeviceObjects(); //
\83T
\81[
\83t
\83F
\83C
\83X
\83}
\83l
\81[
\83W
\83\83\r
291 return Activity::MyInitDeviceObjects();
\r
294 bool DTX::MyRestoreDeviceTextures()
\r
296 //
\8a\88\90«
\89»
\82µ
\82Ä
\82È
\82¢
\82È
\82ç
\96³
\8cø
\r
297 if( ! this->bActivate )
\r
300 //
\83e
\83N
\83X
\83`
\83\83\83}
\83l
\81[
\83W
\83\83\82Ì
\8d\
\92z
\r
301 this->textureManager.RestoreDeviceObjects();
\r
303 return Activity::MyRestoreDeviceTextures();
\r
306 bool DTX::MyRestoreDeviceSurfaces()
\r
308 //
\8a\88\90«
\89»
\82µ
\82Ä
\82È
\82¢
\82È
\82ç
\96³
\8cø
\r
309 if( ! this->bActivate )
\r
312 //
\83T
\81[
\83t
\83F
\83C
\83X
\83}
\83l
\81[
\83W
\83\83\82Ì
\8d\
\92z
\r
313 this->surfaceManager.RestoreDeviceObjects();
\r
315 //
\8d\95\93§
\89ß
\82ª
\97L
\8cø
\82È
\82ç
\81A
\91SBMP
\82Ì
\83J
\83\89\81[
\83L
\81[
\82ð 0xFF000000
\82É
\90Ý
\92è
\82·
\82é
\81B
\r
316 if( this->bBlackColorKey )
\r
318 for( BMP* bmp = this->pBMP; bmp != NULL; bmp = bmp->next )
\r
320 if( bmp->pSurface )
\r
321 bmp->pSurface->SetColorKey( 0xff000000 );
\r
325 return Activity::MyRestoreDeviceSurfaces();
\r
328 bool DTX::MyInvalidateDeviceObjects()
\r
330 //
\8a\88\90«
\89»
\82µ
\82Ä
\82È
\82¢
\82È
\82ç
\96³
\8cø
\r
331 if( ! this->bActivate )
\r
334 this->textureManager.InvalidateDeviceObjects(); //
\83e
\83N
\83X
\83`
\83\83\83}
\83l
\81[
\83W
\83\83\82Ì
\89ð
\95ú
\r
335 this->surfaceManager.InvalidateDeviceObjects(); //
\83T
\81[
\83t
\83F
\83C
\83X
\83}
\83l
\81[
\83W
\83\83\82Ì
\89ð
\95ú
\r
337 return Activity::MyInvalidateDeviceObjects();
\r
340 bool DTX::MyDeleteDeviceObjects()
\r
342 this->textureManager.DeleteDeviceObjects(); //
\83e
\83N
\83X
\83`
\83\83\83}
\83l
\81[
\83W
\83\83\82Ì
\94j
\8aü
\r
343 this->surfaceManager.DeleteDeviceObjects(); //
\83T
\81[
\83t
\83F
\83C
\83X
\83}
\83l
\81[
\83W
\83\83\82Ì
\94j
\8aü
\r
345 return Activity::MyDeleteDeviceObjects();
\r
348 //
\89\89\91t
\83t
\83@
\83C
\83\8b\82Ì
\93Ç
\82Ý
\8d\9e\82Ý
\r
349 bool DTX::Load( LPCTSTR fname, bool bHeaderOnly, double dbPlaySpeed )
\r
351 // (0)
\91O
\8f\80\94õ
\r
353 this->bHeaderOnly = bHeaderOnly;
\r
355 if( this->nMIDILevel > 2 )
\r
356 this->nMIDILevel = 2;
\r
358 //
\83t
\83@
\83C
\83\8b\82ª
\8aJ
\82¯
\82È
\82¯
\82ê
\82Î
\82±
\82±
\82Å
\8fI
\97¹
\r
360 if( _tfopen_s( &fp, fname, _T("rt") ) != 0 )
\r
364 // (1)
\83t
\83@
\83C
\83\8b\96¼
\81A
\8ag
\92£
\8eq
\81A
\83t
\83H
\83\8b\83_
\96¼
\82ð
\95Û
\91¶
\81¨ strFullPath, strFolder, strFileExt
\r
366 TCHAR strDrive[ _MAX_DRIVE ];
\r
367 TCHAR strDir[_MAX_DIR ];
\r
368 if( _tsplitpath_s( fname, strDrive, _MAX_DRIVE, strDir, _MAX_DIR, NULL, 0, NULL, 0 ) != 0 )
\r
371 //
\83t
\83@
\83C
\83\8b\96¼
\r
372 this->strFullPath = fname;
\r
374 //
\83t
\83H
\83\8b\83_
\96¼
\r
375 this->strFolder = strDrive;
\r
376 this->strFolder += strDir;
\r
379 CFileMM::GetExt( this->strFullPath.c_str(), this->strFileExt );
\r
381 // (2)
\8ag
\92£
\8eq
\82©
\82ç
\83f
\81[
\83^
\83^
\83C
\83v
\82ð
\8c\88\92è
\81¨ scoreType
\r
383 static struct _dataType {
\r
388 { _T("dtx"), SCORETYPE_DTX, _T("DTX") },
\r
389 { _T("bms"), SCORETYPE_BMS, _T("BMS") },
\r
390 { _T("bme"), SCORETYPE_BMS, _T("BMS(BME)") },
\r
391 { _T("gda"), SCORETYPE_GDA, _T("GDA") },
\r
392 { _T("g2d"), SCORETYPE_G2D, _T("G2D") },
\r
393 { _T("mid"), SCORETYPE_MID, _T("MIDI") },
\r
394 { _T("tmp"), SCORETYPE_DTX, _T("DTX") }, // for GDAC2
\r
395 { _T(""), SCORETYPE_UNKNOWN, _T("UNKNOWN") }
\r
397 for( int i = 0; i < 99; i++)
\r
399 if( s_dataType[i].type == SCORETYPE_UNKNOWN )
\r
401 this->scoreType = SCORETYPE_UNKNOWN; //
\96¢
\92m
\r
404 else if( lstrcmpi( this->strFileExt, s_dataType[i].ext ) == 0 )
\r
406 this->scoreType = s_dataType[i].type;
\r
411 // DTXV
\82Å
\82Í
\81ADTX
\88È
\8aO
\82Í
\93Ç
\82Ý
\8d\9e\82Ü
\82È
\82¢(2004.01.12)
\r
412 if( this->bDTXV && this->scoreType != SCORETYPE_DTX )
\r
415 // (3)
\83t
\83@
\83C
\83\8b\82ð
\93Ç
\82Ý
\8d\9e\82Þ
\r
416 switch( this->scoreType )
\r
418 case SCORETYPE_DTX:
\r
419 case SCORETYPE_BMS:
\r
420 case SCORETYPE_G2D:
\r
421 case SCORETYPE_GDA:
\r
425 case SCORETYPE_MID:
\r
429 // (4)
\93Ç
\82Ý
\8d\9e\82Ý
\8cã
\82Ì
\8f\88\97\9d \r
430 if( ! this->bHeaderOnly )
\r
432 // (4-1)
\8f¬
\90ß
\90ü
\82Æ
\94\8f\90ü
\82ð
\91}
\93ü
\82·
\82é
\81iMIDI
\88È
\8aO
\81j
\r
433 if( this->scoreType != SCORETYPE_MID )
\r
434 this->InsertLines();
\r
436 // (4-2)
\83`
\83b
\83v
\82Ì
\94
\90º
\8e\9e\8d\8f\82ð
\90¶
\90¬
\82·
\82é
\81iMIDI
\88È
\8aO
\81j
\r
437 if( this->scoreType != SCORETYPE_MID )
\r
440 // (4-3)
\8ae
\83`
\83b
\83v
\82Ì
\94
\90º
\8e\9e\8d\8f\82ð dbPlaySpeed
\82É
\82 \82í
\82¹
\82Ä
\92²
\90®
\82·
\82é
\81iDTX, MID
\8b¤
\92Ê
\81j
\r
441 AdujstChipTimeByPlaySpeed( dbPlaySpeed );
\r
443 // (4-4)
\89Â
\8e\8b\83`
\83b
\83v
\90\94\82ð
\90\94\82¦
\82é
\81¨ nTotalChipsD/G/B
\r
445 for( int i = 0; i < 10; i++ )
\r
446 this->nTotalChipsD[ i ] = 0;
\r
447 this->nTotalChipsG = 0;
\r
448 this->nTotalChipsB = 0;
\r
450 for( Chip* cell = this->pChip; cell != NULL; cell = cell->next )
\r
452 if( cell->nChannel >= 0x11 && cell->nChannel <= 0x1A )
\r
453 this->nTotalChipsD[ cell->nChannel - 0x11 ] ++;
\r
454 else if( cell->nChannel >= 0x20 && cell->nChannel <= 0x27 )
\r
455 this->nTotalChipsG ++;
\r
456 else if( cell->nChannel >= 0xA0 && cell->nChannel <= 0xA7 )
\r
457 this->nTotalChipsB ++;
\r
460 // (4-5)
\83\8c\81[
\83\93\82²
\82Æ
\82É
\8eg
\97p
\82·
\82éWAV
\82ð
\93o
\98^
\82·
\82é
\81iLoadWAV()
\82Ì
\91O
\82É
\8ds
\82¤
\82±
\82Æ
\81I
\81j
\r
461 if( !this->bHeaderOnly )
\r
463 // (4-5-1)
\83r
\83b
\83g
\83}
\83X
\83N
\8f\80\94õ
\r
464 WORD wWaveToLane[ 36*36 ]; // 00..ZZ = 0
\81`36*36-1
\r
465 for( int i = 0; i < 36*36; i++ )
\r
466 wWaveToLane[ i ] = 0;
\r
468 // (4-5-2)
\91S
\83`
\83b
\83v
\82ð
\91\96\8d¸
\82µ
\81A
\8eg
\97p
\82·
\82é
\83\8c\81[
\83\93\82Ì
\8aY
\93\96\83r
\83b
\83g
\82ð
\97§
\82Ä
\82Ä
\82ä
\82
\81B
\r
469 for( Chip *cp = this->pChip; cp != NULL; cp = cp->next )
\r
471 switch( cp->nChannel )
\r
473 case 0x11: case 0x31: case 0xB1: wWaveToLane[ cp->nParam ] |= 0x002; break; // HH
\r
474 case 0x12: case 0x32: case 0xB2: wWaveToLane[ cp->nParam ] |= 0x004; break; // SD
\r
475 case 0x13: case 0x33: case 0xB3: wWaveToLane[ cp->nParam ] |= 0x008; break; // BD
\r
476 case 0x14: case 0x34: case 0xB4: wWaveToLane[ cp->nParam ] |= 0x010; break; // HT
\r
477 case 0x15: case 0x35: case 0xB5: wWaveToLane[ cp->nParam ] |= 0x020; break; // LT
\r
478 case 0x16: case 0x36: case 0xB6: wWaveToLane[ cp->nParam ] |= 0x080; break; // CY
\r
479 case 0x17: case 0x37: case 0xB7: wWaveToLane[ cp->nParam ] |= 0x040; break; // FT
\r
480 case 0x18: case 0x38: case 0xB8: wWaveToLane[ cp->nParam ] |= 0x002; break; // HH
\r
481 case 0x19: case 0x39: case 0xB9: wWaveToLane[ cp->nParam ] |= 0x080; break; // RD
\r
482 case 0x1A: case 0x3A: case 0xBC: wWaveToLane[ cp->nParam ] |= 0x001; break; // LC
\r
483 case 0x20: case 0x21: case 0x22: case 0x23: case 0x24: case 0x25: case 0x26: case 0x27: case 0xBA:
\r
484 wWaveToLane[ cp->nParam ] |= 0x100; break; // Guitar
\r
485 case 0xA0: case 0xA1: case 0xA2: case 0xA3: case 0xA4: case 0xA5: case 0xA6: case 0xA7: case 0xBB:
\r
486 wWaveToLane[ cp->nParam ] |= 0x200; break; // Bass
\r
487 case 0x01: case 0x1F: case 0x2F: case 0xAF:
\r
488 case 0x61: case 0x62: case 0x63: case 0x64: case 0x65: case 0x66: case 0x67: case 0x68: case 0x69: case 0x70:
\r
489 case 0x71: case 0x72: case 0x73: case 0x74: case 0x75: case 0x76: case 0x77: case 0x78: case 0x79: case 0x80:
\r
490 case 0x81: case 0x82: case 0x83: case 0x84: case 0x85: case 0x86: case 0x87: case 0x88: case 0x89: case 0x90:
\r
491 case 0x91: case 0x92:
\r
492 wWaveToLane[ cp->nParam ] |= 0x400; break; // BGM
\r
495 // (4-5-3)
\91SWav
\82É
\82Â
\82¢
\82Ä
\81A
\8eg
\97p
\82·
\82é
\83\8c\81[
\83\93\82¾
\82¯ true
\82É
\82·
\82é
\81B
\r
496 for( Wave *wp = this->pWave; wp != NULL; wp = wp->next ) {
\r
497 for( int i = 0; i < 11; i++ )
\r
498 wp->bUseByLane[ i ] = ( wWaveToLane[ wp->vnum ] & (0x001 << i) ) ? true : false;
\r
501 // (4-6) WAV
\82Ì
\93o
\98^
\81\95\8d\
\92z
\r
504 // (4-7)
\8bÈ
\83f
\81[
\83^
\83n
\83b
\83V
\83\85\82Ì
\8cv
\8eZ
\r
509 void DTX::LoadDTX()
\r
512 if( _tfopen_s( &fp, this->strFullPath.c_str(), _T("rt") ) != 0 )
\r
513 return; //
\8e¸
\94s
\r
515 // (1)
\8f\89\8aú
\89»
\r
517 // (1-1)
\93Ç
\82Ý
\8d\9e\82Ý
\8dì
\8bÆ
\97p
\95Ï
\90\94\82Ì
\8f\89\8aú
\89»
\r
518 for( int i = 0; i < 36*36; i++ )
\r
520 m_nWaveNum[i] = -i;
\r
521 m_nWaveVol[i] = -i;
\r
522 m_nWavePan[i] = -10000-i; // pan
\82Í -100
\81`100
\82È
\82Ì
\82Å
\81A
\83o
\83b
\83e
\83B
\83\93\83O
\82µ
\82È
\82¢
\82æ
\82¤
\92l
\88æ
\82ð
\82¸
\82ç
\82·
\81B
\r
525 m_nBMPTEXNum[i] = -i;
\r
527 m_nBGAPanNum[i] = -i;
\r
533 // (1-2) #RESULTIMAGE/MOVIE/SOUND
\97p
\97D
\90æ
\8f\87\88Ê
\83o
\83b
\83t
\83@
\82Ì
\8f\89\8aú
\89»
\r
534 for( int i = 0; i < 7; i++ )
\r
536 m_nResultImagePriority[i] = 0;
\r
537 m_nResultMoviePriority[i] = 0;
\r
538 m_nResultSoundPriority[i] = 0;
\r
541 // (2)
\8ds
\82ª
\90s
\82«
\82é
\82Ü
\82Å
\93Ç
\82Ý
\8d\9e\82Ý
\81\95\8f\88\97\9d\82·
\82é
\r
545 m_bSkip[ m_nSkip ] = false;
\r
547 TCHAR* strLine = (TCHAR*) malloc( DTX_LINELEN ); //
\81¦
\93Ç
\82Ý
\8d\9e\82Ý
\8ds
\82Í malloc
\82Å
\8am
\95Û
\r
549 while( _fgetts( strLine, DTX_LINELEN, fp ) != NULL )
\r
556 //
\89ü
\8ds
\83R
\81[
\83h
\82Æ
\83R
\83\81\83\93\83g
\82ð
\8dí
\8f\9c\82·
\82é
\r
558 TCHAR* pLineTop = strLine;
\r
559 for( TCHAR* p = strLine; *p != _T('\0'); p++ )
\r
561 // a. ';'
\88È
\8d~
\82Í
\83R
\83\81\83\93\83g
\82Æ
\82µ
\82Ä
\96³
\8e\8b \r
562 if( *p == _T(';') )
\r
566 // ';'
\82Ì
\92¼
\91O
\82Ì
\8bó
\94\92\82à
\8dí
\8f\9c\r
567 if( p != pLineTop )
\r
569 while( p != pLineTop && ( *p == _T(' ') || *p == _T('\t') ) )
\r
577 // b.
\89ü
\8ds
\83R
\81[
\83h
\82Í
\8dí
\8f\9c\r
578 else if( *p == _T('\n') )
\r
586 //
\8ds
\93ª
\82ª #
\82Å
\82È
\82¢
\8ds
\82Í
\83X
\83L
\83b
\83v
\82·
\82é
\r
589 if( *p != _T('#') )
\r
595 if( IsCommand( &p, _T("IF") ) )
\r
597 if( m_nSkip == 255 )
\r
598 continue; // #IF
\82Ì
\93ü
\82ê
\8eq
\90\94\82ª 255
\82ð
\92´
\82¦
\82½
\81¨
\82±
\82Ì #IF
\82Í
\96³
\8cø
\r
600 if( m_bSkip[ m_nSkip ] )
\r
601 m_bSkip[ ++m_nSkip ] = true; //
\83X
\83L
\83b
\83v
\92\86\82É
\8c»
\82ê
\82½IF
\82Í
\83X
\83L
\83b
\83v
\r
603 m_bSkip[ ++m_nSkip ] = ( _tstoi( p ) == m_nRand ) ? false : true;
\r
608 if( IsCommand( &p, _T("ENDIF") ) )
\r
610 if( m_nSkip > 0 ) //
\91Î
\89\9e\82·
\82é #IF
\82ª
\82 \82é
\r
616 //
\82±
\82ê
\88È
\8d~
\82Í
\81A
\83X
\83L
\83b
\83v
\92\86\82È
\82ç
\96³
\8e\8b\82·
\82é
\81B
\r
617 if( m_bSkip[ m_nSkip ] ) continue;
\r
620 if( IsCommand( &p, _T("PATH_WAV") ) )
\r
622 this->strPathWav = p;
\r
626 if( IsCommand( &p, _T("TITLE") ) )
\r
628 this->strTitle = p;
\r
632 if( IsCommand( &p, _T("ARTIST") ) )
\r
634 this->strArtist = p;
\r
638 if( IsCommand( &p, _T("COMMENT") ) )
\r
640 this->strComment = p;
\r
643 // #DLEVEL, #PLAYLEVEL
\r
644 if( IsCommand( &p, _T("DLEVEL") ) || IsCommand( &p, _T("PLAYLEVEL") ) )
\r
646 this->nLevel[ 0 ] = _ttoi( p );
\r
648 //
\8fí
\82É 100
\92i
\8aK
\82¾
\82Æ
\82Ý
\82È
\82·
\81B
\81i10
\92i
\8aK
\83f
\81[
\83^
\82Ì
\83T
\83|
\81[
\83g
\82Í
\8fI
\97¹
\81I(07.05.27)
\81j
\r
649 if( this->nLevel[ 0 ] < 0 ) this->nLevel[ 0 ] = 0;
\r
650 if( this->nLevel[ 0 ] > 100 ) this->nLevel[ 0 ] = 100;
\r
654 if( IsCommand( &p, _T("GLEVEL") ) )
\r
656 this->nLevel[ 1 ] = _ttoi( p );
\r
658 //
\8fí
\82É 100
\92i
\8aK
\82¾
\82Æ
\82Ý
\82È
\82·
\81B
\81i10
\92i
\8aK
\83f
\81[
\83^
\82Ì
\83T
\83|
\81[
\83g
\82Í
\8fI
\97¹
\81I(07.05.27)
\81j
\r
659 if( this->nLevel[ 1 ] < 0 ) this->nLevel[ 1 ] = 0;
\r
660 if( this->nLevel[ 1 ] > 100 ) this->nLevel[ 1 ] = 100;
\r
664 if( IsCommand( &p, _T("BLEVEL") ) )
\r
666 this->nLevel[ 2 ] = _ttoi( p );
\r
668 //
\8fí
\82É 100
\92i
\8aK
\82¾
\82Æ
\82Ý
\82È
\82·
\81B
\81i10
\92i
\8aK
\83f
\81[
\83^
\82Ì
\83T
\83|
\81[
\83g
\82Í
\8fI
\97¹
\81I(07.05.27)
\81j
\r
669 if( this->nLevel[ 2 ] < 0 ) this->nLevel[ 2 ] = 0;
\r
670 if( this->nLevel[ 2 ] > 100 ) this->nLevel[ 2 ] = 100;
\r
674 if( IsCommand( &p, _T("GENRE") ) )
\r
676 this->strGenre = p;
\r
680 if( IsCommand( &p, _T("HIDDENLEVEL") ) )
\r
682 this->bHiddenLevel = ((*p==_T('o') || *p==_T('O')) && (*(p+1)==_T('n') || *(p+1)==_T('N'))) ? true : false;
\r
686 if( IsCommand( &p, _T("STAGEFILE") ) )
\r
688 this->strStage = p;
\r
692 if( IsCommand( &p, _T("PREVIEW") ) )
\r
694 this->strPresound = p;
\r
698 if( IsCommand( &p, _T("PREIMAGE") ) )
\r
700 this->strPreimage = p;
\r
704 if( IsCommand( &p, _T("PREMOVIE") ) )
\r
706 this->strPremovie = p;
\r
710 if( IsCommand( &p, _T("BACKGROUND_GR") ) )
\r
712 this->strBackgroundGR = p;
\r
715 // #BACKGROUND, #WALL
\r
716 if( IsCommand( &p, _T("BACKGROUND") ) || IsCommand( &p, _T("WALL") ) )
\r
718 this->strBackground = p;
\r
722 if( IsCommand( &p, _T("RANDOM") ) )
\r
724 m_nRand = (rand() % _ttoi(p)) + 1;
\r
728 if( (zz = GetCommand( &p, _T("BPM") ) ) != 0 )
\r
730 // #BPM:
\82Í #BPM00:
\82Æ
\8c©
\82È
\82·
\81B
\r
731 if( zz < 0 ) zz = 0;
\r
733 // BPM
\92l
\82ð
\8eæ
\93¾
\81B
\r
734 double bpm = str2float( p );
\r
736 continue; // #BPM
\82É 0
\88È
\89º
\82Ì
\92l
\82Ü
\82½
\82Í
\95s
\90³
\82È
\95¶
\8e\9a\97ñ
\82ð
\8ew
\92è
\82µ
\82½
\81¨
\82±
\82Ì #BPM
\82ð
\96³
\8cø
\r
738 // #BPM:
\82È
\82ç
\91ã
\95\ BPM
\92l
\82Æ
\82µ
\82Ä
\95Û
\91¶
\r
742 // BPM
\83Z
\83\8b\92Ç
\89Á
\r
743 BPM *bc = new BPM();
\r
744 bc->num = ++ m_nBPMNumCur;
\r
747 bc->prev = bc->next = NULL;
\r
748 APPENDLIST( this->pBPM, this->pBPMLast, bc );
\r
750 //
\96³
\8cÀ
\92è
\8b`
\91Î
\89\9e\81G
\r
751 // #BPMzz
\82ª
\8f\89\92è
\8b`
\81A
\82©
\82Â
\81A
\82±
\82Ì#BPM
\82æ
\82è
\82à
\91O
\82Ì
\8ds
\82É
\83I
\83u
\83W
\83F
\83N
\83g
\8bL
\8fq
\82ª
\82 \82è
\81Azz
\82ð
\8eg
\82Á
\82½BPM
\83`
\83\83\83\93\83l
\83\8b\82ª
\82 \82é
\82È
\82ç
\8dX
\90V
\82·
\82é
\81B
\r
752 if( m_nBPMNum[ zz ] == -zz )
\r
754 for( Chip* cp = this->pChip; cp != NULL; cp=cp->next )
\r
755 if( ( GetChipParamType( cp->nChannel ) & DTXCPT_BPM ) && cp->nRealParam == -zz )
\r
756 cp->nRealParam = m_nBPMNumCur; // BPM
\8eÀ
\94Ô
\8d\86\r
759 //
\8dÅ
\8cã
\82É BPM
\8eÀ
\94Ô
\8d\86\82ð
\8dX
\90V
\81B
\r
760 m_nBPMNum[ zz ] = m_nBPMNumCur;
\r
765 // bHeaderOnly = true
\82Ì
\8e\9e\82Í
\81A
\82±
\82±
\82©
\82ç
\89º
\82Í
\96³
\8e\8b\81B
\r
766 if( this->bHeaderOnly ) continue;
\r
769 if( IsCommand( &p, _T("MIDIFILE") ) )
\r
776 if( IsCommand( &p, _T("PANEL") ) )
\r
778 int isNotNum = 0; // #26010 2011.12.23 yyagi: #PAN EL (WAV
\94Ô
\8d\86=EL
\82Ì#PAN)
\82ð#PANEL
\82Æ
\8cë
\89ð
\82µ
\82È
\82¢
\82æ
\82¤
\81A
\r
779 for( int i = 0; i < strlen(p); i++) { //
\91±
\82«
\82ª
\90\94\92l
\82©
\82Ç
\82¤
\82©
\82ð
\94»
\92f
\82·
\82é
\r
780 if( !_istdigit( p[i] ) && p[i] != '-' && p[i] != '+' )
\r
786 if( isNotNum ) //
\95¶
\8e\9a\82ª
\8aÜ
\82Ü
\82ê
\82Ä
\82¢
\82½
\82È
\82ç#PANEL,
\90\94\92l
\82Ì
\82Ý
\82È
\82ç#PAN
\r
788 this->strPanel = p;
\r
794 if( IsCommand( &p, _T("DTXVPLAYSPEED") ) && this->bDTXV )
\r
796 this->fSpeed = str2float( p );
\r
800 if( IsCommand( &p, _T("MIDINOTE") ) )
\r
802 this->bMIDINote = ((*p==_T('o') || *p==_T('O')) && (*(p+1)==_T('n') || *(p+1)==_T('N'))) ? true : false;
\r
806 if( IsCommand( &p, _T("BLACKCOLORKEY") ) )
\r
808 this->bBlackColorKey = ((*p==_T('o') || *p==_T('O')) && (*(p+1)==_T('n') || *(p+1)==_T('N'))) ? true : false;
\r
811 // #RESULTIMAGE_SS
\r
812 if( IsCommand( &p, _T("RESULTIMAGE_SS") ) ) { SetResultImage( 0, p, m_nResultImagePriority ); continue; } // SS
\88È
\8fã
\r
815 if( IsCommand( &p, _T("RESULTIMAGE_S") ) ) { SetResultImage( 1, p, m_nResultImagePriority ); continue; } // S
\88È
\8fã
\r
818 if( IsCommand( &p, _T("RESULTIMAGE_A") ) ) { SetResultImage( 2, p, m_nResultImagePriority ); continue; } // A
\88È
\8fã
\r
821 if( IsCommand( &p, _T("RESULTIMAGE_B") ) ) { SetResultImage( 3, p, m_nResultImagePriority ); continue; } // B
\88È
\8fã
\r
824 if( IsCommand( &p, _T("RESULTIMAGE_C") ) ) { SetResultImage( 4, p, m_nResultImagePriority ); continue; } // C
\88È
\8fã
\r
827 if( IsCommand( &p, _T("RESULTIMAGE_D") ) ) { SetResultImage( 5, p, m_nResultImagePriority ); continue; } // D
\88È
\8fã
\r
830 if( IsCommand( &p, _T("RESULTIMAGE_E") ) ) { SetResultImage( 6, p, m_nResultImagePriority ); continue; } // E
\88È
\8fã
\r
833 if( IsCommand( &p, _T("RESULTIMAGE") ) )
\r
835 //
\91SRANK
\8f\91\82«
\8a·
\82¦
\81i
\90æ
\82É
\8ew
\92è
\82³
\82ê
\82Ä
\82¢
\82½
\82à
\82Ì
\82Í
\82·
\82×
\82Ä
\8fã
\8f\91\82«
\82³
\82ê
\82È
\82¢
\81j
\r
836 for( int i = 0; i < 7; i++ )
\r
837 if( m_nResultImagePriority[i] == 0 )
\r
838 this->strResultImage[i] = p;
\r
841 // #RESULTMOVIE_SS
\r
842 if( IsCommand( &p, _T("RESULTMOVIE_SS") ) ) { SetResultMovie( 0, p, m_nResultMoviePriority ); continue; } // SS
\88È
\8fã
\r
845 if( IsCommand( &p, _T("RESULTMOVIE_S") ) ) { SetResultMovie( 1, p, m_nResultMoviePriority ); continue; } // S
\88È
\8fã
\r
848 if( IsCommand( &p, _T("RESULTMOVIE_A") ) ) { SetResultMovie( 2, p, m_nResultMoviePriority ); continue; } // A
\88È
\8fã
\r
851 if( IsCommand( &p, _T("RESULTMOVIE_B") ) ) { SetResultMovie( 3, p, m_nResultMoviePriority ); continue; } // B
\88È
\8fã
\r
854 if( IsCommand( &p, _T("RESULTMOVIE_C") ) ) { SetResultMovie( 4, p, m_nResultMoviePriority ); continue; } // C
\88È
\8fã
\r
857 if( IsCommand( &p, _T("RESULTMOVIE_D") ) ) { SetResultMovie( 5, p, m_nResultMoviePriority ); continue; } // D
\88È
\8fã
\r
860 if( IsCommand( &p, _T("RESULTMOVIE_E") ) ) { SetResultMovie( 6, p, m_nResultMoviePriority ); continue; } // E
\88È
\8fã
\r
863 if( IsCommand( &p, _T("RESULTMOVIE") ) )
\r
865 //
\91SRANK
\8f\91\82«
\8a·
\82¦
\81i
\90æ
\82É
\8ew
\92è
\82³
\82ê
\82Ä
\82¢
\82½
\82à
\82Ì
\82Í
\82·
\82×
\82Ä
\8fã
\8f\91\82«
\82³
\82ê
\82È
\82¢
\81j
\r
866 for( int i = 0; i < 7; i++ )
\r
867 if( m_nResultMoviePriority[i] == 0 )
\r
868 this->strResultMovie[i] = p;
\r
871 // #RESULTSOUND_SS
\r
872 if( IsCommand( &p, _T("RESULTSOUND_SS") ) ) { SetResultSound( 0, p, m_nResultSoundPriority ); continue; } // SS
\88È
\8fã
\r
875 if( IsCommand( &p, _T("RESULTSOUND_S") ) ) { SetResultSound( 1, p, m_nResultSoundPriority ); continue; } // S
\88È
\8fã
\r
878 if( IsCommand( &p, _T("RESULTSOUND_A") ) ) { SetResultSound( 2, p, m_nResultSoundPriority ); continue; } // A
\88È
\8fã
\r
881 if( IsCommand( &p, _T("RESULTSOUND_B") ) ) { SetResultSound( 3, p, m_nResultSoundPriority ); continue; } // B
\88È
\8fã
\r
884 if( IsCommand( &p, _T("RESULTSOUND_C") ) ) { SetResultSound( 4, p, m_nResultSoundPriority ); continue; } // C
\88È
\8fã
\r
887 if( IsCommand( &p, _T("RESULTSOUND_D") ) ) { SetResultSound( 5, p, m_nResultSoundPriority ); continue; } // D
\88È
\8fã
\r
890 if( IsCommand( &p, _T("RESULTSOUND_E") ) ) { SetResultSound( 6, p, m_nResultSoundPriority ); continue; } // E
\88È
\8fã
\r
893 if( IsCommand( &p, _T("RESULTSOUND") ) )
\r
895 //
\91SRANK
\8f\91\82«
\8a·
\82¦
\81i
\90æ
\82É
\8ew
\92è
\82³
\82ê
\82Ä
\82¢
\82½
\82à
\82Ì
\82Í
\82·
\82×
\82Ä
\8fã
\8f\91\82«
\82³
\82ê
\82È
\82¢
\81j
\r
896 for( int i = 0; i < 7; i++ )
\r
897 if( m_nResultSoundPriority[i] == 0 )
\r
898 this->strResultSound[i] = p;
\r
902 if( IsCommand( &p, _T("BASEBPM") ) )
\r
904 double n = str2float( p );
\r
907 continue; // #BASEBPM
\82É
\95\89\90\94\82Ü
\82½
\82Í
\95s
\90³
\82È
\95¶
\8e\9a\97ñ
\82ð
\8ew
\92è
\82µ
\82½
\81¨
\82±
\82Ì #BASEBPM
\82ð
\96³
\8cø
\r
909 this->dbBaseBPM = n;
\r
912 // #VOLUME, #WAVVOL
\r
913 if( ( zz = this->GetCommand( &p, _T("VOLUME") ) ) != 0 || ( zz = this->GetCommand( &p, _T("WAVVOL") ) ) != 0 )
\r
915 if( zz < 0 || zz >= 36*36 )
\r
916 continue; // #VOLUME(WAVVOL)
\82Ì
\94Ô
\8d\86\82ª
\94Í
\88Í
\8aO
\r
918 //
\89¹
\97Ê
\92l
\82Ì
\8eæ
\93¾
\r
919 int n = _ttoi( p );
\r
920 if( n > 100 ) n = 100;
\r
923 //
\96³
\8cÀ
\91Î
\89\9e\81G
\89ß
\8b\8e\82É
\92è
\8b`
\82µ
\82½ #WAV
\82Ì
\82¤
\82¿
\81Avolume
\82ª
\96¢
\92è
\8b`
\82Ì
\82É
\82Â
\82¢
\82Ä
\8a\84\82è
\93\96\82Ä
\82é
\81B
\r
924 if( this->m_nWaveVol[ zz ] == -zz )
\r
926 for( Wave* wp = this->pWave; wp != NULL; wp = wp->next )
\r
927 if( wp->volume == -zz )
\r
931 //
\8dÅ
\8cã
\82É
\81AWAVVOL
\83X
\83^
\83b
\83N
\82ð
\8dX
\90V
\81B
\r
932 this->m_nWaveVol[ zz ] = n;
\r
936 if( ( zz = this->GetCommand( &p, _T("PAN") ) ) != 0 || ( zz = this->GetCommand( &p, _T("WAVPAN") ) ) != 0 )
\r
938 if( zz < 0 || zz >= 36*36 )
\r
939 continue; // #WAVPAN(PAN)
\82Ì
\94Ô
\8d\86\82ª
\94Í
\88Í
\8aO
\r
941 //
\90\94\92l
\82Ì
\8eæ
\93¾
\r
942 int n = _ttoi( p );
\r
943 if( n > 100 ) n = 100;
\r
944 if( n < -100 ) n = -100;
\r
946 //
\96³
\8cÀ
\91Î
\89\9e\81G
\89ß
\8b\8e\82É
\92è
\8b`
\82µ
\82½ #WAV
\82Ì
\82¤
\82¿
\81Apan
\82ª
\96¢
\92è
\8b`
\82Ì
\82É
\82Â
\82¢
\82Ä
\8a\84\82è
\93\96\82Ä
\82é
\81B
\r
947 if( this->m_nWavePan[ zz ] == -10000-zz )
\r
949 for( Wave* wp = this->pWave; wp != NULL; wp = wp->next )
\r
950 if( wp->pan == -10000-zz )
\r
954 //
\8dÅ
\8cã
\82É
\81AWAVPAN
\83X
\83^
\83b
\83N
\82ð
\8dX
\90V
\81B
\r
955 this->m_nWavePan[ zz ] = n;
\r
959 if( ( zz = this->GetCommand( &p, _T("WAV") ) ) != 0 )
\r
961 if( zz < 0 || zz >= 36*36 )
\r
962 continue; // WAV
\94Ô
\8d\86\82ª
\94Í
\88Í
\8aO
\r
964 //
\83Z
\83\8b\92Ç
\89Á
\81i
\82±
\82±
\82Å
\82Í
\82Ü
\82¾ Wave::sound[][]
\82Í NULL
\81j
\r
965 Wave *wc = new Wave();
\r
966 wc->num = ++ m_nWaveNumCur;
\r
968 wc->volume = this->m_nWaveVol[ zz ];
\r
969 wc->pan = this->m_nWavePan[ zz ];
\r
971 wc->strFileName = p;
\r
972 for( int i = 0; i < 11; i++ )
\r
974 wc->bUseByLane[ i ] = false;
\r
975 wc->nCurSound[ i ] = -1;
\r
976 for( int j = 0; j < DTX_MAX_SOUND; j++ )
\r
978 wc->sound[ i ][ j ] = NULL;
\r
979 wc->bPlaying[ i ][ j ] = false;
\r
980 wc->dbStartTime[ i ][ j ] = 0;
\r
981 wc->dbPauseTime[ i ][ j ] = 0;
\r
984 wc->dwBufferSize = 0;
\r
985 wc->dbTotalTime = 0;
\r
986 wc->prev = wc->next = NULL;
\r
987 APPENDLIST( this->pWave, this->pWaveLast, wc );
\r
989 // #WAVzz
\82ª
\8f\89\92è
\8b`
\81A
\82©
\82Â
\r
990 //
\82±
\82Ì#WAV
\82æ
\82è
\82à
\91O
\82Ì
\8ds
\82É
\83I
\83u
\83W
\83F
\83N
\83g
\8bL
\8fq
\82ª
\82 \82è
\81Azz
\82ð
\8eg
\82Á
\82½WAV
\83`
\83\83\83\93\83l
\83\8b\82ª
\82 \82é
\82È
\82ç
\8dX
\90V
\82·
\82é
\81B
\r
991 if( this->m_nWaveNum[ zz ] == -zz )
\r
993 for( Chip* cp = this->pChip; cp != NULL; cp=cp->next )
\r
994 if( ( this->GetChipParamType( cp->nChannel ) & DTXCPT_WAV ) && cp->nRealParam == -zz )
\r
995 cp->nRealParam = this->m_nWaveNumCur; // Wave
\8eÀ
\94Ô
\8d\86\r
998 //
\8dÅ
\8cã
\82É Wave
\8eÀ
\94Ô
\8d\86\82ð
\8dX
\90V
\81B
\r
999 this->m_nWaveNum[ zz ] = this->m_nWaveNumCur;
\r
1003 if( ( zz = this->GetCommand( &p, _T("BMPTEX") ) ) != 0 )
\r
1005 if( zz < 0 || zz >= 36*36 )
\r
1006 continue; // #BMPTEX
\94Ô
\8d\86\82ª
\94Í
\88Í
\8aO
\r
1008 //
\83Z
\83\8b\92Ç
\89Á
\81i
\82±
\82±
\82Å
\82Í
\82Ü
\82¾ BMPTEX::pTexture
\82Í NULL
\81¨
\90Ý
\92è
\82Í
\8cã
\8f\88\97\9d\82Ì LoadBMP()
\82Å
\81j
\r
1009 BMPTEX *bm = new BMPTEX();
\r
1012 bm->strFileName = p;
\r
1013 bm->pTexture = NULL;
\r
1014 bm->prev = bm->next = NULL;
\r
1015 APPENDLIST( this->pBMPTEX, this->pBMPTEXLast, bm );
\r
1017 // BMPTEX
\8eg
\97p
\83t
\83\89\83OON
\r
1018 this->bUseBMPTEX = true;
\r
1022 if( ( zz = this->GetCommand( &p, _T("BMP") ) ) != 0 )
\r
1024 if( zz >= 36*36 ) // zz
\82Í
\8fÈ
\97ª
\89Â
\81i
\8fÈ
\97ª
\8e\9e\81Azz==-1
\81j
\r
1025 continue; // #BMP
\94Ô
\8d\86\82ª
\94Í
\88Í
\8aO
\r
1027 //
\83Z
\83\8b\92Ç
\89Á
\81i
\82±
\82±
\82Å
\82Í
\82Ü
\82¾ BMP::pSurface
\82Í NULL
\81¨
\90Ý
\92è
\82Í
\8cã
\8f\88\97\9d\82Ì LoadBMP()
\82Å
\81j
\r
1028 BMP *bm = new BMP();
\r
1029 bm->num = (zz < 0) ? 0 : zz; //
\94Ô
\8d\862
\8c\85\8fÈ
\97ª
\81¨ #BMP00: (
\8f\89\8aúBMP
\89æ
\91\9c) (2006/04/23)
\r
1031 bm->strFileName = p;
\r
1032 bm->pSurface = NULL;
\r
1033 bm->prev = bm->next = NULL;
\r
1034 APPENDLIST( this->pBMP, this->pBMPLast, bm );
\r
1036 // BMP
\8eg
\97p
\83t
\83\89\83OON
\r
1037 this->bUseBMP = true;
\r
1041 if( ( zz = this->GetCommand( &p, _T("BGAPAN") ) ) != 0 )
\r
1043 if( zz < 0 || zz >= 36*36 )
\r
1044 continue; // #BGAPAN
\94Ô
\8d\86\82ª
\94Í
\88Í
\8aO
\r
1046 //
\83p
\83\89\83\81\81[
\83^
\8eæ
\93¾
\r
1047 int bmp, sw, sh, ew, eh, ssx, ssy, sex, sey, dsx, dsy, dex, dey, len;
\r
1048 bmp = GetZex(p); SKIPZEX(p); SKIPSP_BGA(p);
\r
1049 sw = GetDec(p); SKIPDEC(p); SKIPSP_BGA(p);
\r
1050 sh = GetDec(p); SKIPDEC(p); SKIPSP_BGA(p);
\r
1051 ew = GetDec(p); SKIPDEC(p); SKIPSP_BGA(p);
\r
1052 eh = GetDec(p); SKIPDEC(p); SKIPSP_BGA(p);
\r
1053 ssx = GetDec(p); SKIPDEC(p); SKIPSP_BGA(p);
\r
1054 ssy = GetDec(p); SKIPDEC(p); SKIPSP_BGA(p);
\r
1055 sex = GetDec(p); SKIPDEC(p); SKIPSP_BGA(p);
\r
1056 sey = GetDec(p); SKIPDEC(p); SKIPSP_BGA(p);
\r
1057 dsx = GetDec(p); SKIPDEC(p); SKIPSP_BGA(p);
\r
1058 dsy = GetDec(p); SKIPDEC(p); SKIPSP_BGA(p);
\r
1059 dex = GetDec(p); SKIPDEC(p); SKIPSP_BGA(p);
\r
1060 dey = GetDec(p); SKIPDEC(p); SKIPSP_BGA(p);
\r
1063 // BMP
\94Ô
\8d\86\82Ì
\8fÈ
\97ª
\82È
\82ç
\82Ñ
\82É 00
\82Ì
\8ew
\92è
\82Í
\96³
\8cø
\r
1065 continue; //
\95s
\90³
\82ÈBMP
\94Ô
\8d\86\82ª
\8ew
\92è
\82³
\82ê
\82Ä
\82¢
\82Ü
\82·
\81B
\r
1067 //
\83N
\83\8a\83b
\83s
\83\93\83O
\r
1068 //
\81¨ BMP
\82Ì
\83T
\83C
\83Y
\82Í
\8eÀ
\8ds
\8e\9e\82Ü
\82Å
\94»
\82ç
\82È
\82¢
\82Ì
\82Å
\81A
\83N
\83\8a\83b
\83s
\83\93\83O
\82Í
\8eÀ
\8ds
\8e\9e\82É
\8ds
\82¤
\81B
\r
1070 //
\83Z
\83\8b\92Ç
\89Á
\r
1071 BGAPan *bc = new BGAPan();
\r
1074 bc->sw = sw; bc->sh = sh;
\r
1075 bc->ew = ew; bc->eh = eh;
\r
1076 bc->ssx = ssx; bc->ssy = ssy;
\r
1077 bc->sex = sex; bc->sey = sey;
\r
1078 bc->dsx = dsx; bc->dsy = dsy;
\r
1079 bc->dex = dex; bc->dey = dey;
\r
1081 bc->prev = bc->next = NULL;
\r
1082 APPENDLIST( this->pBGAPan, this->pBGAPanLast, bc );
\r
1086 if( ( zz = this->GetCommand( &p, _T("BGA") ) ) != 0 )
\r
1088 if( zz < 0 || zz >= 36*36 )
\r
1089 continue; // #BGA
\94Ô
\8d\86\82ª
\94Í
\88Í
\8aO
\r
1091 //
\83p
\83\89\83\81\81[
\83^
\8eæ
\93¾
\r
1092 int bmp, x1, y1, x2, y2, ox, oy;
\r
1093 bmp = GetZex(p); SKIPZEX(p); SKIPSP_BGA(p);
\r
1094 x1 = GetDec(p); SKIPDEC(p); SKIPSP_BGA(p);
\r
1095 y1 = GetDec(p); SKIPDEC(p); SKIPSP_BGA(p);
\r
1096 x2 = GetDec(p); SKIPDEC(p); SKIPSP_BGA(p);
\r
1097 y2 = GetDec(p); SKIPDEC(p); SKIPSP_BGA(p);
\r
1098 ox = GetDec(p); SKIPDEC(p); SKIPSP_BGA(p);
\r
1101 // BMP
\94Ô
\8d\86\82Ì
\8fÈ
\97ª
\82È
\82ç
\82Ñ
\82É 00
\82Ì
\8ew
\92è
\82Í
\96³
\8cø
\r
1103 continue; //
\95s
\90³
\82ÈBMP
\94Ô
\8d\86\82ª
\8ew
\92è
\82³
\82ê
\82Ä
\82¢
\82é
\r
1105 //
\8dÀ
\95W
\92²
\90®
\r
1106 //
\81¨ BMP
\82Ì
\83T
\83C
\83Y
\82Í
\8eÀ
\8ds
\8e\9e\82Ü
\82Å
\94»
\82ç
\82È
\82¢
\82Ì
\82Å
\81ABMP
\91¤
\82Ì
\83N
\83\8a\83b
\83s
\83\93\83O
\82Í
\8eÀ
\8ds
\8e\9e\82É
\8ds
\82¤
\82à
\82Ì
\82Æ
\82·
\82é
\81B
\r
1107 if( x1 > x2 ) {int t=x1; x1=x2; x2=t;} //
\95K
\82¸(x1,y1)
\82ª(x2,y2)
\82Ì
\8d¶
\8fã
\82É
\97\88\82é
\82æ
\82¤
\82É
\82·
\82é
\r
1108 if( y1 > y2 ) {int t=y1; y1=y2; y2=t;}
\r
1110 //
\83Z
\83\8b\92Ç
\89Á
\r
1111 BGA *bc = new BGA();
\r
1114 bc->x1 = x1; bc->y1 = y1;
\r
1115 bc->x2 = x2; bc->y2 = y2;
\r
1116 bc->ox = ox; bc->oy = oy;
\r
1117 bc->prev = bc->next = NULL;
\r
1118 APPENDLIST( this->pBGA, this->pBGALast, bc);
\r
1122 if( ( zz = this->GetCommand( &p, _T("AVIPAN") ) ) != 0 )
\r
1124 if( zz < 0 || zz >= 36*36)
\r
1125 continue; // #AVIPAN
\94Ô
\8d\86\82ª
\94Í
\88Í
\8aO
\r
1127 //
\83p
\83\89\83\81\81[
\83^
\8eæ
\93¾
\r
1128 int avi, sw, sh, ew, eh, ssx, ssy, sex, sey, dsx, dsy, dex, dey, len;
\r
1129 avi = GetZex(p); SKIPZEX(p); SKIPSP_BGA(p);
\r
1130 sw = GetDec(p); SKIPDEC(p); SKIPSP_BGA(p);
\r
1131 sh = GetDec(p); SKIPDEC(p); SKIPSP_BGA(p);
\r
1132 ew = GetDec(p); SKIPDEC(p); SKIPSP_BGA(p);
\r
1133 eh = GetDec(p); SKIPDEC(p); SKIPSP_BGA(p);
\r
1134 ssx = GetDec(p); SKIPDEC(p); SKIPSP_BGA(p);
\r
1135 ssy = GetDec(p); SKIPDEC(p); SKIPSP_BGA(p);
\r
1136 sex = GetDec(p); SKIPDEC(p); SKIPSP_BGA(p);
\r
1137 sey = GetDec(p); SKIPDEC(p); SKIPSP_BGA(p);
\r
1138 dsx = GetDec(p); SKIPDEC(p); SKIPSP_BGA(p);
\r
1139 dsy = GetDec(p); SKIPDEC(p); SKIPSP_BGA(p);
\r
1140 dex = GetDec(p); SKIPDEC(p); SKIPSP_BGA(p);
\r
1141 dey = GetDec(p); SKIPDEC(p); SKIPSP_BGA(p);
\r
1144 // AVI
\94Ô
\8d\86\82Ì
\8fÈ
\97ª
\82È
\82ç
\82Ñ
\82É 00
\82Ì
\8ew
\92è
\82Í
\96³
\8cø
\81B
\r
1146 continue; //
\95s
\90³
\82ÈAVI
\94Ô
\8d\86\82ª
\8ew
\92è
\82³
\82ê
\82Ä
\82¢
\82é
\r
1148 //
\83N
\83\8a\83b
\83s
\83\93\83O
\81G
\r
1149 //
\81¨ AVI
\82Ì
\83T
\83C
\83Y
\82Í
\8eÀ
\8ds
\8e\9e\82Ü
\82Å
\94»
\82ç
\82È
\82¢
\82Ì
\82Å
\81A
\83N
\83\8a\83b
\83s
\83\93\83O
\82Í
\8eÀ
\8ds
\8e\9e\82É
\8ds
\82¤
\81B
\r
1151 //
\83Z
\83\8b\92Ç
\89Á
\r
1152 AVIPan *ac = new AVIPan();
\r
1155 ac->sw = sw; ac->sh = sh;
\r
1156 ac->ew = ew; ac->eh = eh;
\r
1157 ac->ssx = ssx; ac->ssy = ssy;
\r
1158 ac->sex = sex; ac->sey = sey;
\r
1159 ac->dsx = dsx; ac->dsy = dsy;
\r
1160 ac->dex = dex; ac->dey = dey;
\r
1162 ac->prev = ac->next = NULL;
\r
1163 APPENDLIST( this->pAVIPan, this->pAVIPanLast, ac );
\r
1167 if( ( zz = this->GetCommand( &p, _T("AVI") ) ) != 0 || ( zz = this->GetCommand( &p, _T("VIDEO") ) ) != 0 )
\r
1169 if( zz < 0 || zz >= 36*36 )
\r
1170 continue; // #AVI(VIDEO)
\94Ô
\8d\86\82ª
\94Í
\88Í
\8aO
\r
1172 //
\83Z
\83\8b\92Ç
\89Á
\81i
\82±
\82±
\82Å
\82Í
\82Ü
\82¾ AVI::avi
\82Í
\8f\89\8aú
\89»
\82µ
\82È
\82¢
\81j
\r
1173 AVI *ac = new AVI();
\r
1174 ac->num = zz;//++ nAVINumCur; --> #AVIPAN
\93±
\93ü
\82É
\82Æ
\82à
\82È
\82¢
\81A
\96³
\8cÀ
\89»
\82ð
\89ð
\8f\9c\81B(2006/5/5)
\r
1176 ac->strFileName = p;
\r
1177 ac->prev = ac->next = NULL;
\r
1178 APPENDLIST( this->pAVI, this->pAVILast, ac );
\r
1180 // AVI
\8eg
\97p
\83t
\83\89\83OON
\r
1181 this->bUseAVI = true;
\r
1185 //
\82»
\82Ì
\91¼
\81F
\83`
\83b
\83v
\94z
\92u
\r
1187 // (1)
\8f¬
\90ß
\94Ô
\8d\86\82ð
\8eæ
\93¾
\81¨ nPart
\r
1188 int nPart = GetDec3( p );
\r
1191 continue; //
\8f¬
\90ß
\94Ô
\8d\86\82ª
\95s
\90³
\r
1193 nPart ++; // 1
\8f¬
\90ß
\82¸
\82ç
\82·
\81i
\8bÈ
\8aJ
\8en
\8e\9e\82Ì -1
\8f¬
\90ß
\82ð
\8dì
\82é
\82½
\82ß
\81j
\r
1195 // (2)
\83`
\83\83\83\93\83l
\83\8b\94Ô
\8d\86\8eæ
\93¾
\81¨ nCh
\r
1196 int nCh = GetChannel( p );
\r
1199 continue; //
\83`
\83\83\83\93\83l
\83\8b\94Ô
\8d\86\82ª
\95s
\90³
\r
1201 // (3) ':'
\82Æ
\8bó
\94\92\82ð
\83X
\83L
\83b
\83v
\r
1203 if( *p == _T(':') )
\r
1208 // (4)
\8eg
\97p
\83t
\83\89\83O
\81G
\8aY
\93\96\82·
\82é
\82à
\82Ì
\82ð ON
\r
1209 if ( nCh >= 0x11 && nCh <= 0x1A ) this->bUseDrum = true;
\r
1210 else if( nCh >= 0x20 && nCh <= 0x27 ) this->bUseGuitar = true;
\r
1211 else if( nCh >= 0xA0 && nCh <= 0xA7 ) this->bUseBass = true;
\r
1212 if( nCh == 0x18 ) this->bUseHHOpen = true;
\r
1213 if( nCh == 0x19 ) this->bUseRide = true;
\r
1214 if( nCh == 0x1A ) this->bUseLeftCymal = true;
\r
1216 // (5)
\83p
\83\89\83\81\81[
\83^
\8eæ
\93¾(ch.02
\82Ì
\8fê
\8d\87):
\8eÀ
\90\94\8ew
\92è
\r
1219 double d = str2float( p );
\r
1223 Chip *cell = new Chip();
\r
1224 cell->dwPosition = nPart * DTX_RESOLVE;
\r
1225 cell->nChannel = nCh;
\r
1226 cell->dbParam = d;
\r
1227 this->InsertChip( cell );
\r
1230 // (6)
\83p
\83\89\83\81\81[
\83^
\8eæ
\93¾(ch.02
\88È
\8aO)
\r
1232 // (6-1)
\83I
\83u
\83W
\83F
\83N
\83g
\97ñ
\82Ì
\92·
\82³
\82ð
\90\94\82¦
\82é
\81¨ n
\8c\85\90\94 \r
1233 int n
\8c\85\90\94 = 0;
\r
1235 while( *q != _T('\n') && *q != _T('\0') && *q != _T(' ') && *q != _T('\t') )
\r
1237 // '_'
\82Í
\96³
\8e\8b\r
1238 if( *q == _T('_') ) {
\r
1242 if( ( *q >= _T('0') && *q <= _T('9') ) || ( *q >= _T('a') && *q <= _T('z') ) || (*q >= _T('A') && *q <= _T('Z') ) ) {
\r
1249 n
\8c\85\90\94 = -1;
\r
1250 break; //
\83I
\83u
\83W
\83F
\83N
\83g
\94z
\92u
\95¶
\8e\9a\97ñ
\82É 0
\81`9,A
\81`Z
\88È
\8aO
\82Ì
\95¶
\8e\9a(%02x)
\82ª
\8eg
\82í
\82ê
\82Ä
\82¢
\82é
\81¨
\82±
\82Ì
\8ds
\82ð
\96³
\8e\8b\r
1253 if( ( n
\8c\85\90\94 % 2 ) != 0 )
\r
1254 n
\8c\85\90\94 --; //
\8c\85\90\94\82ª
\8aï
\90\94\82È
\82ç
\81A
\8dÅ
\8cã
\82Ì
\88ê
\8c\85\82Í
\96³
\8e\8b\r
1255 if( n
\8c\85\90\94 <= 0 )
\r
1256 continue; //
\8c\85\82ª
\82È
\82¢
\82©
\83G
\83\89\81[
\82È
\82ç
\96³
\8e\8b\r
1258 // (6-2)
\83I
\83u
\83W
\83F
\83N
\83g
\82ð
\82Q
\8c\85\82¸
\82Â Chip
\89»
\r
1259 for( int i = 0; i < n
\8c\85\90\94 / 2; i++ )
\r
1261 // (6-2-1) '_'
\82Í
\96³
\8e\8b \r
1262 if( *p == _T('_') )
\r
1267 // (6-2-2) '00'
\82È
\82ç
\96³
\8e\8b \r
1268 if( *p == _T('0') && *(p+1) == _T('0') ) {
\r
1273 // (6-2-3) zz
\92l
\82Ì
\8eæ
\93¾
\81GCh.03
\82Ì
\82Ý16
\90i
\90\94\81A
\82»
\82Ì
\91¼
\82Í36
\90i
\90\94 \r
1274 int zz = ( nCh == 0x03 ) ? GetHex( p ) : GetZex( p );
\r
1276 // (6-2-4)
\83`
\83b
\83v
\82ð
\90¶
\90¬
\r
1277 Chip *cc = new Chip();
\r
1278 cc->dwPosition = ( nPart * DTX_RESOLVE ) + ( DTX_RESOLVE * i) / ( n
\8c\85\90\94 / 2 );
\r
1279 cc->nChannel = nCh;
\r
1281 cc->nRealParam = zz;
\r
1282 if( nCh >= 0x11 && nCh <= 0x1A ) cc->nType = 0; //
\83h
\83\89\83\80\83`
\83\83\83\93\83l
\83\8b\r
1283 if( nCh >= 0x20 && nCh <= 0x27 ) cc->nType = 1; //
\83M
\83^
\81[
\83`
\83\83\83\93\83l
\83\8b\r
1284 if( nCh >= 0xA0 && nCh <= 0xA7 ) cc->nType = 2; //
\83M
\83^
\81[
\83`
\83\83\83\93\83l
\83\8b\r
1285 // (6-2-5) WAV
\8cn
\83`
\83\83\83\93\83l
\83\8b\82È
\82ç zz
\82ð WAVE
\8eÀ
\94Ô
\8d\86\82É
\95Ï
\8a·
\82·
\82é
\r
1286 if( this->GetChipParamType( cc->nChannel ) & DTXCPT_WAV )
\r
1287 cc->nRealParam = this->m_nWaveNum[ zz ];
\r
1288 // (6-2-6) BPMEX
\8cn
\83`
\83\83\83\93\83l
\83\8b\82È
\82ç zz
\82ð BPM
\8eÀ
\94Ô
\8d\86\82É
\95Ï
\8a·
\82·
\82é
\r
1289 else if( this->GetChipParamType( cc->nChannel ) & DTXCPT_BPMEX )
\r
1290 cc->nRealParam = this->m_nBPMNum[ zz ];
\r
1291 // (6-2-7)
\83t
\83B
\83\8b\83C
\83\93\8cn
\83`
\83\83\83\93\83l
\83\8b\82È
\82ç
\83|
\83W
\83V
\83\87\83\93\82ð
\8fC
\90³
\82·
\82é
\r
1292 else if( nCh == 0x53 )
\r
1294 if( zz > 0 && zz != 2 ) //
\83t
\83B
\83\8b\83C
\83\93\8aJ
\8en
\81¨
\83|
\83W
\83V
\83\87\83\93\82ð 32
\82¾
\82¯
\91O
\82É
\82¸
\82ç
\82·
\r
1295 cc->dwPosition -= 32;
\r
1296 else if( zz == 2 ) //
\83t
\83B
\83\8b\83C
\83\93\8fI
\97¹
\81¨
\83|
\83W
\83V
\83\87\83\93\82ð 32
\82¾
\82¯
\8cã
\82É
\82¸
\82ç
\82·
\r
1297 cc->dwPosition += 32;
\r
1299 // (6-2-8)
\83`
\83b
\83v
\82Ì
\92Ç
\89Á
\r
1301 // InsertChip()
\82Í cc->dwPosition
\82Å
\83\
\81[
\83g
\82·
\82é
\82½
\82ß
\81Acc->dwPosition
\82Ì
\8fC
\90³
\82ª
\8a®
\97¹
\82µ
\82½
\8cã
\82É
\8cÄ
\82Ñ
\8fo
\82·
\82±
\82Æ
\81B
\r
1302 this->InsertChip( cc );
\r
1305 p += 2; //
\8e\9f\82Ì
\83I
\83u
\83W
\83F
\83N
\83g
\82Ö
\r
1311 SAFE_FREE( strLine );
\r
1313 // (3) LoadDTX()
\82¾
\82¯
\82Ì
\8cã
\8f\88\97\9d \r
1315 // (3-1)
\8aJ
\8enBPM
\83`
\83b
\83v
\82ð
\92Ç
\89Á
\82·
\82é
\81B
\r
1317 // Chip
\83\8a\83X
\83g
\82Ì
\90æ
\93ª
\82É
\81A#00008:00
\82Ì
\83`
\83b
\83v
\82ð
\92Ç
\89Á
\82·
\82é
\81B
\81i#BPM:
\82ð
\8bÈ
\82Ì
\93ª
\82Å
\97L
\8cø
\82É
\82·
\82é
\82½
\82ß
\81j
\r
1319 for( pb = this->pBPMLast; pb != NULL; pb = pb->prev ) // #BPM:
\82ª
\95¡
\90\94\82 \82é
\8fê
\8d\87\82Í
\8cã
\92u
\97D
\90æ
\r
1320 if( pb->vnum == 0 ) break;
\r
1322 // (A) #BPM:
\82ª
\91¶
\8dÝ
\82µ
\82È
\82¢
\81¨ #BPM00:120
\82ð BPM
\83\8a\83X
\83g
\82Ì
\96\96\94ö
\82É
\92Ç
\89Á
\82µ
\81A
\82»
\82ÌBPM
\8eÀ
\94Ô
\8d\86\82ð
\8e\9d\82Á
\82½ Chip
\82ð
\92Ç
\89Á
\82·
\82é
\81B
\r
1326 pb->num = ++ m_nBPMNumCur;
\r
1329 pb->prev = pb->next = NULL;
\r
1330 APPENDLIST( this->pBPM, this->pBPMLast, pb );
\r
1332 Chip *cc = new Chip();
\r
1333 cc->dwPosition = 0;
\r
1334 cc->nChannel = 0x08;
\r
1336 cc->nRealParam = pb->num; // #BPM00:
\82Ì BPM
\8eÀ
\94Ô
\8d\86\r
1337 this->InsertChip( cc );
\r
1339 // (B) #BPM:
\82ª
\91¶
\8dÝ
\82·
\82é
\81¨
\82»
\82ÌBPM
\8eÀ
\94Ô
\8d\86\82ð
\8e\9d\82Á
\82½Chip
\82ð
\92Ç
\89Á
\82·
\82é
\81B
\r
1342 Chip *cc = new Chip();
\r
1343 cc->dwPosition = 0;
\r
1344 cc->nChannel = 0x08;
\r
1346 cc->nRealParam = pb->num; // #BPM00:
\82Ì BPM
\8eÀ
\94Ô
\8d\86\r
1347 this->InsertChip( cc );
\r
1350 // (3-2) WAVVOL
\82Æ WAVPAN
\82Ì
\8fÈ
\97ª
\82³
\82ê
\82Ä
\82¢
\82é Wave
\82É
\82Â
\82¢
\82Ä
\83f
\83t
\83H
\83\8b\83g
\92l
\82ð
\93K
\97p
\82·
\82é
\81B
\r
1352 for( Wave* wp = this->pWave; wp != NULL; wp = wp->next )
\r
1354 if( wp->volume < 0 )
\r
1356 if( wp->pan < -10000 )
\r
1360 // (3-3)
\8bó
\91Å
\82¿
\8ew
\92è
\82ª
\82 \82é
\8fê
\8d\87\81A
\8dÅ
\8f\89\82Ì
\8bó
\91Å
\82¿
\8ew
\92è
\83`
\83b
\83v
\82ð
\8bÈ
\82Ì
\90æ
\93ª
\82Ö
\95¡
\8eÊ
\82·
\82é
\81B
\r
1362 for( int i = 0xB1; i <= 0xBB; i++ )
\r
1364 for( Chip* c = this->pChip; c != NULL; c = c->next )
\r
1366 if( c->nChannel == i )
\r
1368 Chip *cc = new Chip();
\r
1369 cc->dwPosition = 0; //
\90æ
\93ª
\r
1370 cc->nChannel = c->nChannel;
\r
1371 cc->nParam = c->nParam;
\r
1372 cc->nRealParam = c->nRealParam;
\r
1373 this->InsertChip( cc );
\r
1379 // (3-4)
\8f\89\8aúBMP
\89æ
\91\9c(#BMP00:)
\82ª
\82 \82é
\8fê
\8d\87\81ABMP
\83`
\83b
\83v
\82ð
\8bÈ
\82Ì
\90æ
\93ª
\82É
\91}
\93ü
\82·
\82é
\81B
\r
1381 for( BMP* pBmp = this->pBMPLast; pBmp != NULL; pBmp = pBmp->prev )
\r
1383 if( pBmp->num == 0 )
\r
1385 Chip *cc = new Chip();
\r
1386 cc->dwPosition = 0; //
\90æ
\93ª
\r
1387 cc->nChannel = 0x04; // ch.04
\r
1389 cc->nRealParam = 0;
\r
1390 this->InsertChip( cc );
\r
1399 void DTX::InsertChip( Chip *cell )
\r
1401 //
\95\
\81F
\93¯
\88Ê
\92u
\82Ì
\8fê
\8d\87\82Ì
\83`
\83\83\83\93\83l
\83\8b\8aÔ
\82Ì
\97D
\90æ
\8f\87\88Ê
\81i
\8f¬
\82³
\82¢
\90\94\8e\9a\82Ù
\82Ç
\91O
\82É
\91}
\93ü
\82³
\82ê
\82é
\81j
\r
1402 static const UCHAR byPriority[ 256 ] = {
\r
1403 5,5,3,3,5,5,5,5,3,5,5,5,5,5,5,5, // 0x
\8f¬
\90ß
\90ü
\95Ï
\8dX
\81ABPM
\82Í
\97D
\90æ
\r
1404 5,7,7,7,7,7,7,7,7,7,7,5,5,5,5,5, // 1x
\83`
\83b
\83v
\82Í
\8cã
\82ë
\82Ö
\81i
\8cã
\82ë
\82Ì
\82à
\82Ì
\82Ù
\82Ç
\8fã
\88Ê
\95`
\89æ
\81j
\r
1405 7,7,7,7,7,7,7,7,5,5,5,5,5,5,5,5, // 2x
\r
1406 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, // 3x
\r
1407 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, // 4x
\r
1408 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, // 5x
\r
1409 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, // 6x
\r
1410 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, // 7x
\r
1411 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, // 8x
\r
1412 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, // 9x
\r
1413 7,7,7,7,7,7,7,7,5,5,5,5,5,5,5,5, // Ax
\r
1414 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, // Bx
\r
1415 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, // Cx
\r
1416 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, // Dx
\r
1417 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, // Ex
\r
1418 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5 // Fx
\r
1421 // (1)
\8dÅ
\8f\89\82Ì
\83Z
\83\8b\82Ì
\8fê
\8d\87 \81¨
\83\8a\83X
\83g
\82Ì
\90æ
\93ª
\82É
\92Ç
\89Á
\81B
\r
1422 if( this->pChipLast == NULL ) {
\r
1423 this->pChip = this->pChipLast = cell;
\r
1426 // (2)
\93K
\90Ø
\82È
\8fê
\8f\8a\82ð
\83\8a\83X
\83g
\81u
\8dÅ
\8cã
\94ö
\81v
\82©
\82ç
\8c\9f\8dõ
\82µ
\81A
\91}
\93ü
\82·
\82é
\81B
\r
1427 for( Chip *t = this->pChipLast; t != NULL; t = t->prev )
\r
1429 if( t->dwPosition < cell->dwPosition ||
\r
1430 ( t->dwPosition == cell->dwPosition && byPriority[ t->nChannel ] <= byPriority[ cell->nChannel ] ) )
\r
1432 // t
\82Ì
\92¼
\8cã
\82É
\91}
\93ü
\82·
\82é
\r
1434 cell->next = t->next;
\r
1435 if( t->next == NULL ) {
\r
1437 this->pChipLast = cell;
\r
1439 t->next->prev = cell;
\r
1442 return; //
\8a®
\97¹
\r
1445 // (3)
\90æ
\93ª
\82Ü
\82Å
\92B
\82µ
\82½
\81¨
\83\8a\83X
\83g
\82Ì
\90æ
\93ª
\82É
\91}
\93ü
\82·
\82é
\81B
\r
1446 cell->prev = NULL;
\r
1447 cell->next = this->pChip;
\r
1448 if( this->pChip != NULL ) {
\r
1449 this->pChip->prev = cell;
\r
1450 this->pChip = cell;
\r
1452 this->pChip = this->pChipLast = cell;
\r
1455 void DTX::InsertMIDIChip( Chip *cell )
\r
1457 // (1)
\8dÅ
\8f\89\82Ì
\83Z
\83\8b\82Ì
\8fê
\8d\87 \81¨
\83\8a\83X
\83g
\82Ì
\90æ
\93ª
\82É
\92Ç
\89Á
\81B
\r
1458 if( this->pChipLast == NULL )
\r
1460 this->pChip = this->pChipLast = cell;
\r
1463 // (2)
\93K
\90Ø
\82È
\8fê
\8f\8a\82ð
\83\8a\83X
\83g
\82Ì
\81u
\8dÅ
\8cã
\94ö
\81v
\82©
\82ç
\8c\9f\8dõ
\82µ
\81A
\91}
\93ü
\82·
\82é
\81B
\r
1464 for( Chip *t = this->pChipLast; t != NULL; t = t->prev )
\r
1466 //
\88Ê
\92u
\82ª
\93¯
\82¶
\82Ì
\8fê
\8d\87\82É
\82Í
\81A0x11
\81`0x1A
\82Í
\8cã
\82ë
\82É
\8e\9d\82Á
\82Ä
\82¢
\82
\81B
\81i
\8cã
\82Å
\95`
\89æ
\82³
\82ê
\82é
\81¨
\82æ
\82è
\8fã
\82É
\95`
\89æ
\82³
\82ê
\82é
\81j
\r
1467 if( t->dbTime < cell->dbTime || ( t->dbTime == cell->dbTime && ( cell->nChannel >= 0x11 && cell->nChannel <= 0x1A ) ) )
\r
1469 // t
\81¨ cell
\81¨ ...
\82Ì
\8f\87\82É
\82È
\82é
\82æ
\82¤
\91}
\93ü
\82·
\82é
\r
1471 cell->next = t->next;
\r
1472 if (t->next == NULL) {
\r
1474 this->pChipLast = cell;
\r
1476 t->next->prev = cell;
\r
1479 return; //
\8a®
\97¹
\r
1482 // (3)
\90æ
\93ª
\82Ü
\82Å
\92B
\82µ
\82½
\81¨
\83\8a\83X
\83g
\82Ì
\90æ
\93ª
\82É
\91}
\93ü
\82·
\82é
\81B
\r
1483 cell->prev = NULL;
\r
1484 cell->next = this->pChip;
\r
1485 if( this->pChip->prev != NULL ) {
\r
1486 this->pChip->prev = cell;
\r
1487 this->pChip = cell;
\r
1489 this->pChip = this->pChipLast = cell;
\r
1492 void DTX::InsertLines()
\r
1494 if( !this->pChip || !this->pChipLast )
\r
1495 return; //
\83`
\83b
\83v
\82ª
\82È
\82¢
\r
1497 double dbBai = 1.0; //
\8f¬
\90ß
\92·
\94{
\97¦
\r
1498 DWORD dwLast; //
\8dÅ
\8cã
\82Ì
\83`
\83b
\83v
\82ª
\91¶
\8dÝ
\82·
\82é
\8f¬
\90ß
\82Ì
\81A
\82»
\82Ì
\8e\9f\82Ì
\8f¬
\90ß
\82Ì
\90æ
\93ª
\88Ê
\92u
\r
1499 dwLast = this->pChipLast->dwPosition;
\r
1500 dwLast += DTX_RESOLVE - ( dwLast % DTX_RESOLVE );
\r
1502 // (1)
\8f¬
\90ß
\90ü
\82Ì
\91}
\93ü
\r
1504 for( DWORD pos = 0; pos <= dwLast; pos += DTX_RESOLVE )
\r
1506 Chip *nc = new Chip();
\r
1507 nc->dwPosition = pos;
\r
1508 nc->nChannel = 0x50;
\r
1509 nc->nParam = 36*36-1; //
\83V
\83X
\83e
\83\80\82ª
\92u
\82¢
\82½
\90ü
\82Í nParam = zz
\r
1513 // (2)
\94\8f\90ü
\82Ì
\91}
\93ü
\r
1515 Chip *p02 = this->pChip; // for ch.02
\81i
\8f¬
\90ß
\92·
\94{
\97¦
\95Ï
\8dX
\81j
\r
1516 Chip *pC1 = this->pChip; // for ch.C1
\81i
\94\8f\90ü
\83V
\83t
\83g
\81G02
\82ð
\92u
\82
\82Æ
\81A
\82»
\82Ì
\8f¬
\90ß
\93à
\82É
\8cÀ
\82è
\81A
\82»
\82±
\82©
\82ç
\94\8f\90ü
\82ª
\8en
\82Ü
\82é
\81j
\r
1518 for( DWORD pos = 0; pos < dwLast; pos += DTX_RESOLVE ) // pos
\82Í
\8f¬
\90ß
\92P
\88Ê
\82Å
\91\9d\89Á
\r
1520 //
\94\8f\90ü
\83V
\83t
\83g
\81G
\r
1521 //
\82±
\82Ì
\8f¬
\90ß
\93à
\81ipos
\81` pos+DTX_RESOLVE
\82Ì
\94Í
\88Í
\93à
\81j
\82É ch.C1
\83Z
\83\8b \82ª
\82 \82é
\82©
\82Ç
\82¤
\82©
\82ð
\81A
\90æ
\93Ç
\82Ý
\82µ
\82Ä
\8am
\94F
\82·
\82é
\81B
\r
1522 //
\82 \82Á
\82½
\82ç
\81Adw
\8aJ
\8en
\88Ê
\92u
\82É
\82»
\82Ì
\91\8a\91Î
\88Ê
\92u
\81i
\8f¬
\90ß
\83A
\83^
\83}
\82©
\82ç
\82Ì
\8b\97\97£[ct]
\81j
\82ð
\8ai
\94[
\82µ
\82Ä
\82¨
\82
\81B
\r
1523 //
\82È
\82¯
\82ê
\82Î
\81Adw
\8aJ
\8en
\88Ê
\92u
\82Í 0
\81B
\r
1525 DWORD dw
\8aJ
\8en
\88Ê
\92u = 0;
\r
1527 while( pC1 && pC1->dwPosition < pos + DTX_RESOLVE )
\r
1529 if( pC1->nChannel == 0xC1 )
\r
1530 dw
\8aJ
\8en
\88Ê
\92u = pC1->dwPosition - pos;
\r
1534 //
\8f¬
\90ß
\92·
\94{
\97¦
\95Ï
\8dX
\82»
\82Ì
\87@
\81G BMS
\82Å
\82Ì
\8e©
\91R
\95\9c\8bA
\r
1535 // BMS,BME
\82Å
\82Í
\81A
\82P
\8f¬
\90ß
\82²
\82Æ
\82É
\8f¬
\90ß
\92·
\94{
\97¦
\82ª 1.0
\82É
\96ß
\82é
\81B
\r
1537 if( this->scoreType == SCORETYPE_BMS )
\r
1540 //
\8f¬
\90ß
\92·
\94{
\97¦
\95Ï
\8dX
\82»
\82Ì
\87A
\81G Ch.02
\82Å
\82Ì
\95Ï
\8dX
\82ª
\82 \82ê
\82Î
\91Î
\89\9e\82·
\82é
\81B
\r
1541 while( p02 && p02->dwPosition <= pos ) // Ch.02
\82Í
\8f¬
\90ß
\93ª
\82É
\82µ
\82©
\8c»
\82ê
\82È
\82¢
\81i
\81\81 dwPosition
\82ª
\95K
\82¸ DTX_RESOLVE
\82Å
\8a\84\82è
\90Ø
\82ê
\82é
\81j
\r
1543 if( p02->nChannel == 0x02 )
\r
1544 dbBai = p02->dbParam;
\r
1548 //
\94\8f\90ü
\82Ì
\91}
\93ü
\r
1550 for( int n
\94\8f\90ü
\98A
\94Ô = 0; n
\94\8f\90ü
\98A
\94Ô < 100; n
\94\8f\90ü
\98A
\94Ô++ ) // < 100
\82Í
\96³
\8cÀ
\83\8b\81[
\83v
\96h
\8e~
\82Ì
\95Û
\8c¯
\r
1552 DWORD dw
\94\8f\90ü
\88Ê
\92u = (DWORD)( ( DTX_RESOLVE * n
\94\8f\90ü
\98A
\94Ô ) / ( 4.0 * dbBai ) );
\r
1554 //
\88Ê
\92u
\82ª
\8f¬
\90ß
\82ð
\89z
\82¦
\82½
\82ç
\94²
\82¯
\82é
\r
1555 if( dw
\94\8f\90ü
\88Ê
\92u + dw
\8aJ
\8en
\88Ê
\92u >= DTX_RESOLVE )
\r
1558 //
\94\8f\90ü
\83`
\83b
\83v
\82Ì
\8dì
\90¬
\82Æ
\91}
\93ü
\r
1559 if( ( dw
\94\8f\90ü
\88Ê
\92u + dw
\8aJ
\8en
\88Ê
\92u ) % DTX_RESOLVE != 0 ) //
\8f¬
\90ß
\90ü
\82Æ
\93¯
\82¶
\8fê
\8f\8a\82É
\82Í
\92u
\82©
\82È
\82¢
\r
1561 Chip *nc = new Chip();
\r
1562 nc->dwPosition = pos + dw
\94\8f\90ü
\88Ê
\92u + dw
\8aJ
\8en
\88Ê
\92u;
\r
1563 nc->nChannel = 0x51;
\r
1564 nc->nParam = 36*36-1; //
\83V
\83X
\83e
\83\80\82ª
\92u
\82¢
\82½
\90ü
\82Í nParam = zz
\r
1570 // (3)
\94\8f\90ü
\81E
\8f¬
\90ß
\90ü
\82Ì
\94ñ
\95\
\8e¦
\8ew
\8e¦(ch.C2)
\82ª
\82 \82é
\82È
\82ç
\91Î
\89\9e\82·
\82é
\81B
\r
1572 bool b
\90ü
\82ª
\89Â
\8e\8b = true;
\r
1574 //
\82·
\82×
\82Ä
\82Ì
\83`
\83b
\83v
\82É
\82Â
\82¢
\82Ä...
\r
1575 for( Chip* cp = this->pChip; cp != NULL; cp = cp->next )
\r
1577 //
\93¯
\82¶ position
\82É
\95¡
\90\94\82Ì
\83`
\83b
\83v
\82ª
\82 \82é
\8fê
\8d\87\82Í
\81Ach.C2
\82ð
\97D
\90æ
\93I
\82É
\93Ç
\82Þ
\81B
\r
1578 for( Chip* p
\93¯
\88Ê
\92uChip = cp; p
\93¯
\88Ê
\92uChip && p
\93¯
\88Ê
\92uChip->dwPosition == cp->dwPosition; p
\93¯
\88Ê
\92uChip = p
\93¯
\88Ê
\92uChip->next )
\r
1580 if( p
\93¯
\88Ê
\92uChip->nChannel == 0xC2 && p
\93¯
\88Ê
\92uChip->nParam == 1 ) b
\90ü
\82ª
\89Â
\8e\8b = true;
\r
1581 if( p
\93¯
\88Ê
\92uChip->nChannel == 0xC2 && p
\93¯
\88Ê
\92uChip->nParam == 2 ) b
\90ü
\82ª
\89Â
\8e\8b = false;
\r
1584 //
\82»
\82Ì
\8e\9f\82É
\81A
\94\8f\90ü
\81E
\8f¬
\90ß
\90ü
\82Ì
\89Â
\8e\8b\91®
\90«
\82ð
\90Ý
\92è
\82·
\82é
\81B
\82½
\82¾
\82µ
\81A
\83\86\81[
\83U
\82ª
\92u
\82¢
\82½
\82à
\82Ì
\81inParam!=ZZ
\82Ì
\82à
\82Ì
\81j
\82Í
\89e
\8b¿
\82ð
\8eó
\82¯
\82È
\82¢
\81B
\r
1585 if( ( cp->nChannel == 0x50 || cp->nChannel == 0x51 ) && cp->nParam == 36*36-1 )
\r
1586 cp->bVisible = b
\90ü
\82ª
\89Â
\8e\8b;
\r
1590 void DTX::CalcChipTime()
\r
1592 // MID
\8c`
\8e®
\82Í
\8eZ
\8fo
\95s
\97v
\81iDrumMIDI
\91¤
\82Å
\82·
\82Å
\82É
\8e\9e\8d\8f\82ª
\8cv
\8eZ
\8dÏ
\82Ý
\81j
\r
1593 if( this->scoreType == SCORETYPE_MID )
\r
1596 double db
\8c»
\8dÝ
\82ÌBPM = 120.0; // [
\94\8f/
\95ª]
\r
1597 double db
\8c»
\8dÝ
\82Ì
\8f¬
\90ß
\92·
\94{
\97¦ = 1.0;
\r
1598 DWORD dw
\8aî
\8f\80\83J
\83E
\83\93\83g
\92l = 0; // db
\8c»
\8dÝ
\82Ì
\8f¬
\90ß
\92·
\94{
\97¦, db
\8c»
\8dÝ
\82ÌBPM
\82Ì
\8dÅ
\8cã
\82É
\95Ï
\89»
\82µ
\82½
\83J
\83E
\83\93\83g
\92l
\81i
\82P
\8f¬
\90ß
\81\81 DTX_RESOLVE
\83J
\83E
\83\93\83g
\82Å
\8cÅ
\92è
\81j
\r
1599 double db
\8aî
\8f\80\8e\9e\8d\8f = 0; //
\81@
\81@
\81@
\81@
\81@
\81@
\81@
\81@
\81@
\81@
\81@
\81V
\81@
\81@
\81@
\81@
\81@
\81@
\81@
\81@
\81@
\81@
\81@
\81@
\8e\9e\8d\8f[ms]
\r
1600 DWORD dw
\91O
\8f¬
\90ß = 0; //
\8f¬
\90ß
\92·
\95Ï
\8dX
\97p
\r
1602 //
\82·
\82×
\82Ä
\82Ì
\83`
\83b
\83v
\82É
\82Â
\82¢
\82Ä...
\r
1603 for( Chip* cell = this->pChip; cell != NULL; cell = cell->next )
\r
1605 // (1)
\94
\90º
\8e\9e\8d\8f\82Ì
\8cv
\8eZ
\81¨ cell->dbTime
\r
1606 cell->dbTime = (DWORD)( db
\8aî
\8f\80\8e\9e\8d\8f + ((240000 / DTX_RESOLVE) * (cell->dwPosition - dw
\8aî
\8f\80\83J
\83E
\83\93\83g
\92l) * db
\8c»
\8dÝ
\82Ì
\8f¬
\90ß
\92·
\94{
\97¦) / (db
\8c»
\8dÝ
\82ÌBPM * this->fSpeed) );
\r
1608 // (2)
\8f¬
\90ß
\82ª
\95Ï
\82í
\82Á
\82½
\82ç
\81A
\8f¬
\90ß
\92·
\82ð 1.0
\82É
\96ß
\82·
\81B(BMS
\82Ì
\82Ý)
\r
1609 if( this->scoreType == SCORETYPE_BMS && db
\8c»
\8dÝ
\82Ì
\8f¬
\90ß
\92·
\94{
\97¦ != 1.0 && (cell->dwPosition / DTX_RESOLVE) != dw
\91O
\8f¬
\90ß )
\r
1611 dw
\8aî
\8f\80\83J
\83E
\83\93\83g
\92l = cell->dwPosition;
\r
1612 db
\8aî
\8f\80\8e\9e\8d\8f = cell->dbTime;
\r
1613 db
\8c»
\8dÝ
\82Ì
\8f¬
\90ß
\92·
\94{
\97¦ = 1.0;
\r
1615 dw
\91O
\8f¬
\90ß = cell->dwPosition / DTX_RESOLVE;
\r
1617 // (3)
\88È
\89º
\81A
\83`
\83\83\83\93\83l
\83\8b\82²
\82Æ
\82Ì
\8cÂ
\95Ê
\8f\88\97\9d\r
1618 switch( cell->nChannel )
\r
1620 // (3-1)
\8f¬
\90ß
\92·
\95Ï
\8dX
\r
1623 dw
\8aî
\8f\80\83J
\83E
\83\93\83g
\92l = cell->dwPosition;
\r
1624 db
\8aî
\8f\80\8e\9e\8d\8f = cell->dbTime;
\r
1625 db
\8c»
\8dÝ
\82Ì
\8f¬
\90ß
\92·
\94{
\97¦ = cell->dbParam;
\r
1629 // (3-2) BPM
\95Ï
\8dX(1)
\90®
\90\94BPM
\r
1632 dw
\8aî
\8f\80\83J
\83E
\83\93\83g
\92l = cell->dwPosition;
\r
1633 db
\8aî
\8f\80\8e\9e\8d\8f = cell->dbTime;
\r
1634 db
\8c»
\8dÝ
\82ÌBPM = this->dbBaseBPM + (double)cell->nParam;
\r
1638 // (3-3) BPM
\95Ï
\8dX(2)
\8eÀ
\90\94BPM
\r
1641 dw
\8aî
\8f\80\83J
\83E
\83\93\83g
\92l = cell->dwPosition;
\r
1642 db
\8aî
\8f\80\8e\9e\8d\8f = cell->dbTime;
\r
1644 for( BPM *bc = this->pBPMLast; bc != NULL; bc = bc->prev )
\r
1646 if( bc->num == cell->nRealParam )
\r
1648 db
\8c»
\8dÝ
\82ÌBPM = ( ( bc->vnum == 0 ) ? 0 : this->dbBaseBPM ) + bc->bpm; // bc->vnum = 0
\82Ì
\82Æ
\82«
\81i#BPM:
\82Ì
\82Æ
\82«
\81j
\82Í BaseBPM
\82Í
\89Á
\82¦
\82È
\82¢
\81I
\r
1656 case 0x04: case 0x07:
\r
1657 case 0x55: case 0x56: case 0x57: case 0x58: case 0x59: case 0x60:
\r
1659 for( BGAPan *bp = this->pBGAPanLast; bp != NULL; bp = bp->prev )
\r
1661 if( bp->num == cell->nParam )
\r
1663 double st = db
\8aî
\8f\80\8e\9e\8d\8f + ((240000 / DTX_RESOLVE) * (cell->dwPosition - dw
\8aî
\8f\80\83J
\83E
\83\93\83g
\92l) * db
\8c»
\8dÝ
\82Ì
\8f¬
\90ß
\92·
\94{
\97¦) / db
\8c»
\8dÝ
\82ÌBPM;
\r
1664 double et = db
\8aî
\8f\80\8e\9e\8d\8f + ((240000 / DTX_RESOLVE) * (cell->dwPosition + bp->len - dw
\8aî
\8f\80\83J
\83E
\83\93\83g
\92l) * db
\8c»
\8dÝ
\82Ì
\8f¬
\90ß
\92·
\94{
\97¦) / db
\8c»
\8dÝ
\82ÌBPM;
\r
1665 cell->dbLong = et - st;
\r
1675 for( AVIPan *ap = this->pAVIPanLast; ap != NULL; ap = ap->prev )
\r
1677 if( ap->num == cell->nParam )
\r
1679 double st = db
\8aî
\8f\80\8e\9e\8d\8f + ((240000 / DTX_RESOLVE) * (cell->dwPosition - dw
\8aî
\8f\80\83J
\83E
\83\93\83g
\92l) * db
\8c»
\8dÝ
\82Ì
\8f¬
\90ß
\92·
\94{
\97¦) / db
\8c»
\8dÝ
\82ÌBPM;
\r
1680 double et = db
\8aî
\8f\80\8e\9e\8d\8f + ((240000 / DTX_RESOLVE) * (cell->dwPosition + ap->len - dw
\8aî
\8f\80\83J
\83E
\83\93\83g
\92l) * db
\8c»
\8dÝ
\82Ì
\8f¬
\90ß
\92·
\94{
\97¦) / db
\8c»
\8dÝ
\82ÌBPM;
\r
1681 cell->dbLong = et - st;
\r
1690 void DTX::AdujstChipTimeByPlaySpeed( double dbPlaySpeed )
\r
1692 if( dbPlaySpeed <= 0 )
\r
1695 //
\82·
\82×
\82Ä
\82Ì
\83`
\83b
\83v
\82Ì
\94
\90º
\8e\9e\8d\8f\82ð
\8fC
\90³
\r
1696 for( Chip* p = this->pChip; p != NULL; p = p->next )
\r
1697 p->dbTime = p->dbTime / dbPlaySpeed;
\r
1699 // BMP, AVI, WAV
\82Ì
\93Ç
\82Ý
\8d\9e\82Ý
\r
1700 void DTX::LoadBMP()
\r
1702 this->dwBMPWidthMax = this->dwBMPHeightMax = -1;
\r
1703 this->dwBMPTEXWidthMax = this->dwBMPTEXHeightMax = -1;
\r
1705 // (1)
\8ae
\83}
\83l
\81[
\83W
\83\83\82Ì
\83L
\83\83\83b
\83V
\83\85\93à
\82Ì
\83t
\83\89\83O
\82ð
\83\8a\83Z
\83b
\83g
\r
1706 this->textureManager.ResetCache();
\r
1707 this->surfaceManager.ResetCache();
\r
1709 // (2) BMPTEX
\82Ì
\93Ç
\82Ý
\8d\9e\82Ý
\81GVRAM
\97D
\90æ
\82Ì
\82½
\82ß
\81ABMP
\82æ
\82è
\90æ
\82É
\93Ç
\82Ý
\8d\9e\82Þ
\81B
\r
1711 int n
\83e
\83N
\83X
\83`
\83\83\90¶
\90¬
\90\94 = 0;
\r
1713 for( BMPTEX *btc = this->pBMPTEX; btc != NULL; btc = btc->next )
\r
1715 // #PATH_WAV
\82Ì
\8ew
\92è
\82ª
\82 \82é
\8fê
\8d\87\82Í
\82»
\82±
\82©
\82ç
\81A
\82»
\82ê
\88È
\8aO
\82Í DTX
\82Ì
\82 \82é
\8fê
\8f\8a\82©
\82ç
\93Ç
\82Ý
\8d\9e\82Þ
\81B
\r
1716 tstring path = ( this->strPathWav.empty() ) ? this->strFolder : this->strPathWav;
\r
1717 path += btc->strFileName;
\r
1719 //
\83e
\83N
\83X
\83`
\83\83\82Ì
\90¶
\90¬
\r
1721 _stprintf_s( name, 32, _T("BMPTEX(%d)
\89æ
\91\9c"), btc->num );
\r
1722 if( ( btc->pTexture = this->textureManager.GetCachedTexture( name, path.c_str(), 0, 0 ) ) == NULL )
\r
1723 continue; //
\8dì
\90¬
\82É
\8e¸
\94s
\r
1726 //
\8dÅ
\91å
\95\9d\81E
\8d\82\82³
\82Ì
\8dX
\90V
\r
1727 if( btc->pTexture->dwWidth > this->dwBMPTEXWidthMax ) this->dwBMPTEXWidthMax = btc->pTexture->dwWidth;
\r
1728 if( btc->pTexture->dwHeight > this->dwBMPTEXHeightMax) this->dwBMPTEXHeightMax = btc->pTexture->dwHeight;
\r
1730 n
\83e
\83N
\83X
\83`
\83\83\90¶
\90¬
\90\94 ++;
\r
1733 // (3) BMP
\82Ì
\93Ç
\82Ý
\8d\9e\82Ý
\r
1735 int n
\83T
\81[
\83t
\83F
\83C
\83X
\90¶
\90¬
\90\94 = 0;
\r
1737 for( BMP *bc = this->pBMP; bc != NULL; bc = bc->next )
\r
1739 // #PATH_WAV
\82Ì
\8ew
\92è
\82ª
\82 \82é
\8fê
\8d\87\82Í
\82»
\82±
\82©
\82ç
\81A
\82»
\82ê
\88È
\8aO
\82Í DTX
\82Ì
\82 \82é
\8fê
\8f\8a\82©
\82ç
\93Ç
\82Ý
\8d\9e\82Þ
\81B
\r
1740 tstring path = ( this->strPathWav.empty() ) ? this->strFolder : this->strPathWav;
\r
1741 path += bc->strFileName;
\r
1743 //
\83T
\81[
\83t
\83F
\83C
\83X
\82Ì
\90¶
\90¬
\r
1745 _stprintf_s( name, 32, _T("BMP(%d)
\89æ
\91\9c"), bc->num );
\r
1746 if( ( bc->pSurface = this->surfaceManager.GetCachedSurface( name, path.c_str(), 0, 0, LOADTO_VIDEO_OR_SYSTEM ) ) == NULL )
\r
1747 continue; //
\8dì
\90¬
\82É
\8e¸
\94s
\r
1750 //
\8dÅ
\91å
\95\9d\81E
\8d\82\82³
\82Ì
\8dX
\90V
\r
1751 if( bc->pSurface->dwWidth > this->dwBMPWidthMax ) this->dwBMPWidthMax = bc->pSurface->dwWidth;
\r
1752 if( bc->pSurface->dwHeight > this->dwBMPHeightMax) this->dwBMPHeightMax = bc->pSurface->dwHeight;
\r
1754 n
\83T
\81[
\83t
\83F
\83C
\83X
\90¶
\90¬
\90\94 ++;
\r
1757 // (4)
\8ae
\83}
\83l
\81[
\83W
\83\83\82Ì
\83L
\83\83\83b
\83V
\83\85\82©
\82ç
\95s
\97v
\82È
\83\8a\83\
\81[
\83X
\82ð
\8dí
\8f\9c \r
1758 this->surfaceManager.RemoveUnusedSurfaces();
\r
1759 this->textureManager.RemoveUnusedTextures();
\r
1762 //
\83w
\83b
\83_
\93Ç
\82Ý
\8d\9e\82Ý
\82Ì
\82Ý
\82È
\82ç
\82±
\82±
\82Å
\8fI
\97¹
\r
1763 if( this->bHeaderOnly ) return;
\r
1765 // (5) BMP, BMPTEX, BGA, BGAPAN
\82Ì
\8e\96\91O
\8dÅ
\93K
\89»
\r
1766 for( Chip *c = this->pChip; c != NULL; c = c->next )
\r
1768 // (5-1) BGA
\83\8c\83C
\83\84\83`
\83\83\83l
\83\8b\83`
\83b
\83v
\82É
\81ABMP/BMPTEX/BGA/BGAPAN
\82Ö
\82Ì
\83|
\83C
\83\93\83^
\82ð
\8a\84\82è
\93\96\82Ä
\82é
\81B
\r
1769 if( c->nChannel == 0x04 || c->nChannel == 0x07 || ( c->nChannel >= 0x55 && c->nChannel <= 0x59 ) || c->nChannel == 0x60 )
\r
1771 //
\8f\89\8aú
\89»
\r
1772 c->BGAtype = BGATYPE_UNKNOWN;
\r
1774 c->pBMPTEX = NULL;
\r
1776 c->pBGAPan = NULL;
\r
1778 // (5-1-1) BGAPAN
\82©
\82ç
\8c\9f\8dõ
\82µ
\81A
\82 \82ê
\82Î
\8f\88\97\9d\82·
\82é
\81B
\r
1779 for( BGAPan *bgapan = this->pBGAPanLast; bgapan != NULL; bgapan = bgapan->prev )
\r
1781 if( bgapan->num == c->nParam )
\r
1784 for( bmptex = this->pBMPTEXLast; bmptex != NULL; bmptex = bmptex->prev )
\r
1786 if( bmptex->num == bgapan->bmp && bmptex->bUse )
\r
1788 c->BGAtype = BGATYPE_BGAPAN;
\r
1789 c->pBMPTEX = bmptex;
\r
1790 c->pBGAPan = bgapan;
\r
1794 if( bmptex ) break;
\r
1796 for( bmp = this->pBMPLast; bmp != NULL; bmp = bmp->prev )
\r
1798 if( bmp->num == bgapan->bmp && bmp->bUse )
\r
1800 c->BGAtype = BGATYPE_BGAPAN;
\r
1802 c->pBGAPan = bgapan;
\r
1809 if( c->BGAtype != BGATYPE_UNKNOWN )
\r
1812 // (5-1-2) BGA
\82©
\82ç
\8c\9f\8dõ
\82µ
\81A
\82 \82ê
\82Î
\8f\88\97\9d\82·
\82é
\81B
\r
1813 for( BGA *bga = this->pBGALast; bga != NULL; bga = bga->prev ) {
\r
1814 if( bga->num == c->nParam ) {
\r
1816 for( bmptex = this->pBMPTEXLast; bmptex != NULL; bmptex = bmptex->prev ) {
\r
1817 if( bmptex->num == bga->bmp && bmptex->bUse ) {
\r
1818 c->BGAtype = BGATYPE_BGA;
\r
1819 c->pBMPTEX = bmptex;
\r
1824 if( bmptex ) break;
\r
1826 for( bmp = this->pBMPLast; bmp != NULL; bmp = bmp->prev ) {
\r
1827 if( bmp->num == bga->bmp && bmp->bUse ) {
\r
1828 c->BGAtype = BGATYPE_BGA;
\r
1837 if( c->BGAtype != BGATYPE_UNKNOWN )
\r
1840 // (5-1-3) BMPTEX
\82©
\82ç
\8c\9f\8dõ
\82µ
\81A
\82 \82ê
\82Î
\8f\88\97\9d\82·
\82é
\81B
\r
1841 for( BMPTEX* bmptex = this->pBMPTEXLast; bmptex != NULL; bmptex = bmptex->prev ) {
\r
1842 if( bmptex->num == c->nParam && bmptex->bUse ) {
\r
1843 c->BGAtype = BGATYPE_BMPTEX;
\r
1844 c->pBMPTEX = bmptex;
\r
1848 if( c->BGAtype != BGATYPE_UNKNOWN )
\r
1851 // (5-1-4) BMP
\82©
\82ç
\8c\9f\8dõ
\82µ
\81A
\82 \82ê
\82Î
\8f\88\97\9d\82·
\82é
\81B
\r
1852 for( BMP* bmp = this->pBMPLast; bmp != NULL; bmp = bmp->prev ) {
\r
1853 if( bmp->num == c->nParam && bmp->bUse ) {
\r
1854 c->BGAtype = BGATYPE_BMP;
\r
1860 // (5-2) DTX::Chip
\82Ì BGA
\83X
\83R
\81[
\83v
\89æ
\91\9c\90Ø
\91Ö
\83`
\83\83\83\93\83l
\83\8b\83Z
\83\8b\82É
\81ABMP/BMPTEX
\82Ö
\82Ì
\83|
\83C
\83\93\83^
\82ð
\8a\84\82è
\93\96\82Ä
\82é
\81B
\r
1861 if( c->nChannel == 0xC4 || c->nChannel == 0xC7 || ( c->nChannel >= 0xD5 && c->nChannel <= 0xD9 ) || c->nChannel == 0xE0 )
\r
1863 //
\8f\89\8aú
\89»
\r
1864 c->BGAtype = BGATYPE_UNKNOWN;
\r
1866 c->pBMPTEX = NULL;
\r
1868 c->pBGAPan = NULL;
\r
1870 // (5-2-1) BMPTEX
\82©
\82ç
\8c\9f\8dõ
\82µ
\81A
\82 \82ê
\82Î
\8f\88\97\9d\82·
\82é
\81B
\r
1871 for( BMPTEX* bmptex = this->pBMPTEXLast; bmptex != NULL; bmptex = bmptex->prev )
\r
1873 //
\81¦BGA
\83X
\83R
\81[
\83v
\89æ
\91\9c\90Ø
\91Ö
\83`
\83\83\83\93\83l
\83\8b\82Ì
\8fê
\8d\87\81AnParam
\82Í "BMP
\94Ô
\8d\86"
\82Å
\82 \82è
\81ABGA, BGAPAN
\82Ì
\94Ô
\8d\86\82Í
\96³
\8aÖ
\8cW
\82Å
\82 \82é
\81B
\r
1874 if( bmptex->num == c->nParam && bmptex->bUse )
\r
1876 c->BGAtype = BGATYPE_BMPTEX;
\r
1877 c->pBMPTEX = bmptex;
\r
1881 if( c->BGAtype != BGATYPE_UNKNOWN )
\r
1884 // (5-2-2) BMP
\82©
\82ç
\8c\9f\8dõ
\82µ
\81A
\82 \82ê
\82Î
\8f\88\97\9d\82·
\82é
\81B
\r
1885 for( BMP* bmp = this->pBMPLast; bmp != NULL; bmp = bmp->prev )
\r
1887 //
\81¦BGA
\83X
\83R
\81[
\83v
\89æ
\91\9c\90Ø
\91Ö
\83`
\83\83\83\93\83l
\83\8b\82Ì
\8fê
\8d\87\81AnParam
\82Í "BMP
\94Ô
\8d\86"
\82Å
\82 \82è
\81ABGA, BGAPAN
\82Ì
\94Ô
\8d\86\82Í
\96³
\8aÖ
\8cW
\82Å
\82 \82é
\81B
\r
1888 if( bmp->num == c->nParam && bmp->bUse ) {
\r
1889 c->BGAtype = BGATYPE_BMP;
\r
1897 void DTX::LoadAVI()
\r
1899 // (1) AVI
\82Ì
\83I
\81[
\83v
\83\93 \r
1900 int nAVI
\83I
\81[
\83v
\83\93\90\94 = 0;
\r
1901 for( AVI *ac = this->pAVI; ac != NULL; ac = ac->next )
\r
1903 // #PATH_WAV
\82Ì
\8ew
\92è
\82ª
\82 \82é
\8fê
\8d\87\82Í
\82»
\82±
\82©
\82ç
\81A
\82»
\82ê
\88È
\8aO
\82Í DTX
\82Ì
\82 \82é
\8fê
\8f\8a\82©
\82ç
\93Ç
\82Ý
\8d\9e\82Þ
\81B
\r
1904 tstring path = ( this->strPathWav.empty() ) ? this->strFolder : this->strPathWav;
\r
1905 path += ac->strFileName;
\r
1907 // AVI
\82ð
\83I
\81[
\83v
\83\93\r
1908 ac->avi._
\8f\89\8aú
\89»();
\r
1909 ac->bUse = ( SUCCEEDED( ac->avi.Open( path ) ) ) ? true : false; // open
\82É
\90¬
\8c÷
\82µ
\82½
\82ç true
\r
1912 nAVI
\83I
\81[
\83v
\83\93\90\94 ++;
\r
1914 ac->avi.Close(); //
\8e¸
\94s
\r
1917 //
\83w
\83b
\83_
\93Ç
\82Ý
\8d\9e\82Ý
\82Ì
\82Ý
\82È
\82ç
\82±
\82±
\82Å
\8fI
\97¹
\r
1918 if( this->bHeaderOnly ) return;
\r
1920 // (2) AVIPAN
\82Ì
\8e\96\91O
\8dÅ
\93K
\89»
\r
1921 for( Chip *c = this->pChip; c != NULL; c = c->next )
\r
1923 // AVI
\83`
\83\83\83l
\83\8b\83`
\83b
\83v
\82É
\81AAVI/AVIPAN
\82Ö
\82Ì
\83|
\83C
\83\93\83^
\82ð
\8a\84\82è
\93\96\82Ä
\82é
\81B
\r
1924 if( c->nChannel == 0x54 )
\r
1926 //
\8f\89\8aú
\89»
\r
1927 c->AVItype = AVITYPE_UNKNOWN;
\r
1929 c->pAVIPan = NULL;
\r
1931 // (1) AVIPAN
\82©
\82ç
\8c\9f\8dõ
\82µ
\81A
\82 \82ê
\82Î
\8f\88\97\9d\82·
\82é
\81B
\r
1932 for( AVIPan *avipan = this->pAVIPanLast; avipan != NULL; avipan = avipan->prev )
\r
1934 if( avipan->num == c->nParam )
\r
1937 for( avi = this->pAVILast; avi != NULL; avi = avi->prev )
\r
1939 if( avi->num == avipan->avi && avi->bUse )
\r
1941 c->AVItype = AVITYPE_AVIPAN;
\r
1943 c->pAVIPan = avipan;
\r
1950 if( c->AVItype != AVITYPE_UNKNOWN )
\r
1953 // (2) AVI
\82©
\82ç
\8c\9f\8dõ
\82µ
\81A
\82 \82ê
\82Î
\8f\88\97\9d\82·
\82é
\81B
\r
1954 for( AVI* avi = this->pAVILast; avi != NULL; avi = avi->prev )
\r
1956 if( avi->num == c->nParam && avi->bUse )
\r
1958 c->AVItype = AVITYPE_AVI;
\r
1966 void DTX::LoadWAV()
\r
1968 // (1)
\83T
\83E
\83\93\83h
\83}
\83l
\81[
\83W
\83\83\82Ì
\83L
\83\83\83b
\83V
\83\85\82Ì
\83\8a\83Z
\83b
\83g
\r
1969 this->soundManager.t
\8eg
\97p
\83t
\83\89\83O
\82ð
\83N
\83\8a\83A
\82µ
\95¡
\90»
\83Z
\83\8b\82ð
\8dí
\8f\9c\82·
\82é();
\r
1971 // (2)
\91S
\83T
\83E
\83\93\83h
\82ð
\93Ç
\82Ý
\8d\9e\82Þ
\r
1972 for( Wave *wc = this->pWave; wc != NULL; wc = wc->next )
\r
1974 // path
\82ð
\8c\88\92è
\81G#PATH_WAV
\82Ì
\8ew
\92è
\82ª
\82 \82é
\8fê
\8d\87\82Í
\82»
\82±
\82©
\82ç
\81A
\82»
\82ê
\88È
\8aO
\82Í DTX
\82Ì
\82 \82é
\8fê
\8f\8a\82©
\82ç
\93Ç
\82Ý
\8d\9e\82Þ
\81B
\r
1975 tstring path = ( this->strPathWav.empty() ) ? this->strFolder : this->strPathWav;
\r
1976 path += wc->strFileName;
\r
1978 //
\83T
\83E
\83\93\83h
\82ð
\8eg
\97p
\82·
\82é
\83\8c\81[
\83\93\82²
\82Æ
\82É
\90¶
\90¬
\82·
\82é
\r
1979 for( int i = 0; i < 11; i++ )
\r
1981 if( ! wc->bUseByLane[i] ) continue; //
\82±
\82Ì
\83\8c\81[
\83\93\82Å
\8eg
\97p
\82³
\82ê
\82È
\82¢
\82È
\82ç
\83X
\83L
\83b
\83v
\r
1983 //
\82P
\83\8c\81[
\83\93\82É
\95t
\82«MAX_SOUND
\8cÂ
\82Ì
\83o
\83b
\83t
\83@
\82ð
\8dì
\90¬
\82·
\82é
\r
1984 for( int j = 0; j < DTX_MAX_SOUND; j++ )
\r
1986 //
\83T
\83E
\83\93\83h
\82ð
\90¶
\90¬
\82·
\82é
\r
1987 if( ( wc->sound[i][j] = this->soundManager.p
\83L
\83\83\83b
\83V
\83\85\91Î
\89\9e\83T
\83E
\83\93\83h
\82ð
\8dì
\90¬
\82µ
\82Ä
\95Ô
\82·( path.c_str() ) ) == NULL )
\r
1989 wc->bUse = false; //
\82P
\8cÂ
\82Å
\82à
\8e¸
\94s
\82µ
\82½
\82ç
\82±
\82ÌWAV
\8e©
\91Ì
\8eg
\82í
\82È
\82¢
\r
1994 //
\89¹
\97Ê
\82Ì
\8f\89\8aú
\89»
\r
1995 wc->sound[i][j]->SetVolume( 100 );
\r
1997 //
\91\8d\89\89\91t
\8e\9e\8aÔ[ms]
\82Ì
\8cv
\8eZ
\r
1998 wc->dwBufferSize = wc->sound[i][j]->GetDirectSoundBufferSize();
\r
2000 wc->sound[i][j]->GetDirectSoundBuffer()->GetFormat( NULL, 0, &dwSize );
\r
2001 LPWAVEFORMATEX pWF = (LPWAVEFORMATEX) malloc( dwSize );
\r
2002 wc->sound[i][j]->GetDirectSoundBuffer()->GetFormat( pWF, dwSize, NULL );
\r
2003 wc->dbTotalTime = (double)( wc->dwBufferSize / ( pWF->nAvgBytesPerSec * 0.001 ) );
\r
2007 break; //
\93Ç
\82Ý
\8d\9e\82Ý
\82É
\8e¸
\94s
\82µ
\82½
\82Ì
\82Å
\94²
\82¯
\82é
\r
2010 // (3)
\83T
\83E
\83\93\83h
\83}
\83l
\81[
\83W
\83\83\82Ì
\83L
\83\83\83b
\83V
\83\85\82©
\82ç
\96¢
\8eg
\97p
\83T
\83E
\83\93\83h
\82ð
\8dí
\8f\9c\82·
\82é
\81B
\r
2011 this->soundManager.t
\96¢
\8eg
\97p
\83T
\83E
\83\93\83h
\82ð
\8dí
\8f\9c\82·
\82é();
\r
2013 //
\93r
\92\86\82©
\82ç
\82Ì
\8dÄ
\90¶
\8aJ
\8en
\r
2014 void DTX::SkipStart( double dbStartTime )
\r
2016 // Wave
\82É
\8aÖ
\98A
\95t
\82¯
\82ç
\82ê
\82é
\83`
\83b
\83v
\82Í 1, BMP
\8aÖ
\8cW
\82Í 2
\81B
\r
2017 //
\82½
\82¾
\82µ
\83X
\83L
\83b
\83v
\8dÄ
\90¶
\82µ
\82È
\82¢
\82Æ
\82«
\82Í 0
\82É
\82µ
\82Ä
\82¨
\82
\81B
\r
2018 //
\8bó
\91Å
\82¿
\8ew
\92è
\82È
\82Ç
\81A
\94
\90º
\82³
\82ê
\82È
\82¢WAV
\8aÖ
\8cW
\82Í
\96³
\8e\8b\81B
\r
2019 static const char bTarget[ 256 ] = {
\r
2020 0,1,0,0,2,0,0,2,0,0,0,0,0,0,0,0, // 0x 01: BGM / 04,07: BGA
\r
2021 0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0, // 1x 11
\81`1A: Drums
\r
2022 1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0, // 2x 20
\81`27: Guitar
\r
2023 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 3x
\r
2024 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 4x
\r
2025 0,0,0,0,0,2,2,2,2,2,0,0,0,0,0,0, // 5x 55
\81`59,60: BGA
\r
2026 2,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0, // 6x 61
\81`69,
\r
2027 1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0, // 7x 70
\81`79,
\r
2028 1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0, // 8x 80
\81`89,
\r
2029 1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0, // 9x 90
\81`92: BGM
\r
2030 1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0, // ax a0
\81`a7: Bass
\r
2031 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // bx
\r
2032 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // cx
\r
2033 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // dx
\r
2034 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // ex
\r
2035 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; // fx
\r
2037 for( Chip* cell = this->pChip; cell != NULL; cell = cell->next )
\r
2039 //
\8aJ
\8en
\8e\9e\8d\8f\82æ
\82è
\8cã
\82ë
\82È
\82ç
\81A
\82»
\82Ì
\83`
\83b
\83v
\82Å
\92²
\8d¸
\91Å
\82¿
\90Ø
\82è
\81B
\r
2040 if( cell->dbTime > dbStartTime )
\r
2043 //
\8f\88\97\9d\95ª
\8aò
\r
2044 switch( bTarget[ cell->nChannel % 0xff ] )
\r
2047 SkipStartWave( dbStartTime, cell ); // WAVE
\82Ì
\83X
\83L
\83b
\83v
\8dÄ
\90¶
\r
2051 SkipStartBGA( dbStartTime, cell ); // BGA
\82Ì
\83X
\83L
\83b
\83v
\8dÄ
\90¶
\r
2057 void DTX::SkipStartWave( double dbStartTime, Chip* cell )
\r
2059 // (1)
\83\8c\81[
\83\93\94Ô
\8d\86\8eZ
\8fo
\81¨ l
\r
2060 int ch = cell->nChannel;
\r
2062 if( ch >= 0x11 && ch <= 0x1A )
\r
2063 l = s_nChannelToLane[ ch - 0x11 ]; // Drums
\r
2065 else if( ch >= 0x20 && ch <= 0x27 )
\r
2068 else if( ch >= 0xA0 && ch <= 0xA7 )
\r
2071 else if( ch == 0x01 || (ch >= 0x61 && ch <= 0x69) || (ch >= 0x70 && ch <= 0x79) || (ch >= 0x80 && ch <= 0x89) || (ch >= 0x90 && ch <= 0x92) )
\r
2075 return; //
\82»
\82ê
\88È
\8aO
\81i
\94
\90º
\82È
\82µ
\81j
\r
2077 // (2)
\91Î
\89\9e\82·
\82éWave
\82ð
\8c\9f\8dõ
\81¨ wc
\r
2079 for( wc = this->pWave; wc != NULL; wc = wc->next )
\r
2081 if( wc->num == cell->nRealParam && wc->bUse )
\r
2085 return; //
\91Î
\89\9e\82·
\82éWave
\82ª
\82È
\82©
\82Á
\82½
\r
2086 if( ! wc->bUseByLane[ l ] )
\r
2087 return; //
\82±
\82Ì
\83\8c\81[
\83\93\82Å
\82Í
\8dÄ
\90¶
\82µ
\82È
\82¢
\r
2088 if( cell->dbTime + ( wc->dbTotalTime / this->fSpeed ) <= dbStartTime )
\r
2089 return; //
\8dÄ
\90¶
\92\86\82¶
\82á
\82È
\82¢
\r
2091 // (3)
\8ew
\92è
\88Ê
\92u
\82É
\88Ú
\93®
\82µ
\81A
\91¦
\8dÀ
\82É
\8dÄ
\90¶
\82ð
\8aJ
\8en
\82·
\82é
\81B
\r
2092 if( ++ wc->nCurSound[ l ] >= DTX_MAX_SOUND )
\r
2093 wc->nCurSound[ l ] = 0;
\r
2094 if( wc->sound[l][ wc->nCurSound[l] ] )
\r
2096 wc->sound[l][ wc->nCurSound[l] ]->SetVolume( (long)((DTX_AUTOVOLUME * wc->volume)/100.0) );
\r
2097 wc->sound[l][ wc->nCurSound[l] ]->SetPan( wc->pan );
\r
2098 wc->sound[l][ wc->nCurSound[l] ]->Play();
\r
2099 wc->sound[l][ wc->nCurSound[l] ]->SetPosition( wc->sound[l][ wc->nCurSound[l] ]->GetPositionFromTime( dbStartTime - cell->dbTime ) );
\r
2101 wc->dbStartTime[l][ wc->nCurSound[l] ] = cell->dbTime; //
\8dÄ
\90¶
\8aJ
\8en
\8e\9e\8d\8f\r
2102 wc->bPlaying[l][ wc->nCurSound[l] ] = true;
\r
2104 void DTX::SkipStartBGA( double dbStartTime, Chip* cell )
\r
2106 //
\8eÀ
\91\95\82Í BGA
\83\82\83W
\83\85\81[
\83\8b\81i
\83A
\83v
\83\8a\91¤
\81j
\82É
\88Ë
\91¶
\82·
\82é
\82½
\82ß
\81A
\82±
\82±
\82Å
\82Í
\89½
\82à
\82µ
\82È
\82¢
\81B
\83A
\83v
\83\8a\91¤
\82Å
\8eÀ
\91\95\82·
\82é
\82±
\82Æ
\81B
\r
2108 //
\83`
\83b
\83v(WAV)
\82Ì
\8dÄ
\90¶
\81A
\92â
\8e~
\r
2109 void DTX::PlayChip( Chip* pChip, int nLane, long lVol, bool bMIDIMonitor, bool bBad )
\r
2111 // (0)
\8e\96\91O
\83`
\83F
\83b
\83N
\r
2112 if( this->pTimer == NULL ) return;
\r
2113 if( pChip == NULL ) return;
\r
2114 if( pChip->nRealParam < 0 ) return;
\r
2115 if( nLane < 0 || nLane > 10 ) return;
\r
2117 // (1)
\83\8a\83X
\83g
\82Ì
\96\96\94ö
\82©
\82ç
\8c\9f\8dõ
\82µ
\81A
\8dÄ
\90¶
\82·
\82é
\81i
\93¯
\88ê
\94Ô
\8d\86\82Å
\82Ì
\8fd
\95¡
\93o
\98^
\82ª
\82 \82é
\8fê
\8d\87\81A
\8cã
\95û
\82Ì
\90Ý
\92è
\82ª
\97D
\90æ
\82³
\82ê
\82é
\81j
\r
2118 for( Wave *wc = this->pWaveLast; wc != NULL; wc = wc->prev )
\r
2120 if( wc->num == pChip->nRealParam && wc->bUse && wc->bUseByLane[ nLane ] )
\r
2122 // (1-1)
\83T
\83E
\83\93\83h
\83\8d\81[
\83e
\81[
\83V
\83\87\83\93\r
2123 if( ++ wc->nCurSound[ nLane ] >= DTX_MAX_SOUND )
\r
2124 wc->nCurSound[ nLane ] = 0;
\r
2127 int s = wc->nCurSound[ nLane ];
\r
2128 if( wc->sound[ nLane ][ s ] )
\r
2130 wc->sound[ nLane ][ s ]->SetVolume( (long)((lVol * wc->volume)/100.0) );
\r
2131 wc->sound[ nLane ][ s ]->SetPan( wc->pan );
\r
2135 wc->sound[ nLane ][ s ]->SetPitch( 1.0f );
\r
2136 wc->sound[ nLane ][ s ]->Play();
\r
2140 // BAD
\82Í
\8eü
\94g
\90\94\95Ï
\92²
\r
2141 wc->sound[ nLane ][ s ]->SetPitch( ( 100+ (((rand()%3)+1)*7) * (1-(rand()%2)*2) ) /100.0f );
\r
2142 wc->sound[ nLane ][ s ]->Play();
\r
2145 wc->dbStartTime[ nLane ][ s ] = this->pTimer->db
\91O
\89ñReset
\82µ
\82½
\8e\9e\8d\8f() + pChip->dbTime; //
\8dÄ
\90¶
\8aJ
\8en
\8e\9e\8d\8f \81c
\8c»
\8dÝ
\8e\9e\8d\8f\82Å
\82Í
\82È
\82
\81AChip::dbTime
\82É
\88ê
\92v
\82³
\82¹
\82é(FPS
\92x
\89\84\82Ì
\96h
\8e~)(2007.6.9)
\r
2146 wc->bPlaying[ nLane ][ s ] = true;
\r
2148 // (1-3) pChip->dbTime
\82Æ
\8eÀ
\8e\9e\8aÔ
\82Æ
\82Ì
\8d·
\82ð
\96\84\82ß
\82é
\82½
\82ß
\81A
\82¢
\82«
\82È
\82èWAVE
\8dÄ
\90¶
\88Ê
\92u
\8fC
\90³
\81B
\r
2149 this->AdjustWave( wc, wc->dbStartTime[ nLane ][ s ], wc->sound[ nLane ][ s ] );
\r
2154 // (2) MIDI Note ON
\82Ì
\8fê
\8d\87\82Í MIDI
\83m
\81[
\83g
\82Æ
\82µ
\82Ä
\82à
\94
\90º
\81iDTXV
\82Å
\82Í
\96¢
\91Î
\89\9e(2004.01.12)
\81j
\r
2155 if( ! this->bDTXV )
\r
2157 DWORD dwMsg = pChip->message.dwMsg;
\r
2158 if( this->bMIDINote && dwMsg != 0 )
\r
2160 if( bMIDIMonitor ) // bMonitor = true
\82Ì
\8e\9e\82Í
\r
2161 dwMsg = (dwMsg & 0x00FFFF) | 0x7F0000; //
\89¹
\97Ê
\82ð127
\82É
\82·
\82é
\r
2162 midiOutShortMsg( this->hMidiOut, dwMsg );
\r
2166 void DTX::StopWave( int nWave, int nLane )
\r
2168 if( nLane < 0 || nLane > 10 ) return;
\r
2170 for( Wave *wc = this->pWaveLast; wc != NULL; wc = wc->prev )
\r
2172 if( wc->num == nWave && wc->bUse && wc->bUseByLane[ nLane ] )
\r
2174 for( int i = 0; i < DTX_MAX_SOUND; i++ ) {
\r
2175 if( wc->sound[ nLane ][ i ] )
\r
2176 wc->sound[ nLane ][ i ]->Stop();
\r
2177 wc->bPlaying[ nLane ][ i ] = false;
\r
2179 wc->nCurSound[ nLane ] = -1;
\r
2185 void DTX::StopAllWaves()
\r
2187 for( Wave* pw = this->pWave; pw != NULL; pw = pw->next ) {
\r
2188 for( int i = 0; i < 11; i++ ) {
\r
2189 for( int j = 0; j < DTX_MAX_SOUND; j++ ) {
\r
2190 if( pw->bPlaying[i][j] && pw->sound[i][j] )
\r
2191 pw->sound[i][j]->Stop();
\r
2197 void DTX::PauseWaves()
\r
2199 for( Wave *wc = this->pWaveLast; wc != NULL; wc = wc->prev ) {
\r
2201 for( int j = 0; j < 11; j++ ) {
\r
2202 if( wc->bUseByLane[j] ) {
\r
2203 for( int i = 0; i < DTX_MAX_SOUND; i++ ) {
\r
2204 if( wc->sound[ j ][ i ] )
\r
2205 wc->sound[ j ][ i ]->Pause();
\r
2206 wc->bPlaying[ j ][ i ] = false;
\r
2207 wc->dbPauseTime[ j ][ i ] = this->pTimer->GetSysTime(); //
\8eÀ
\8e\9e\8aÔ
\r
2215 void DTX::ContWaves()
\r
2217 for( Wave *wc = this->pWaveLast; wc != NULL; wc = wc->prev ) {
\r
2219 for( int j = 0; j < 11; j++ ) {
\r
2220 if( wc->bUseByLane[j] ) {
\r
2221 for( int i = 0; i < DTX_MAX_SOUND; i++ ) {
\r
2222 if( wc->sound[ j ][ i ] ) {
\r
2223 wc->sound[ j ][ i ]->Cont( wc->dbPauseTime[j][i] - wc->dbStartTime[j][i] ); // Pause()
\82³
\82ê
\82Ä
\82È
\82¢
\8fê
\8d\87\82Í
\89½
\82à
\89e
\8b¿
\82È
\82µ
\r
2224 wc->dbStartTime[j][i] += this->pTimer->GetSysTime() - wc->dbPauseTime[j][i];
\r
2226 wc->bPlaying[ j ][ i ] = true;
\r
2235 void DTX::AdjustWaves()
\r
2237 for( Wave *wc = this->pWave; wc != NULL; wc = wc->next )
\r
2241 for( int j = 0; j < 11; j++ )
\r
2243 if( ! wc->bUseByLane[j] )
\r
2246 for( int i = 0; i < DTX_MAX_SOUND; i++ )
\r
2248 if( ! wc->sound[j][i] || ! wc->sound[j][i]->IsPlay() ) {
\r
2249 wc->bPlaying[j][i] = false; //
\8dÄ
\90¶
\92\86\82¶
\82á
\82È
\82¢
\r
2253 //
\8dÄ
\90¶
\88Ê
\92u
\95â
\90³
\r
2254 this->AdjustWave( wc, wc->dbStartTime[j][i], wc->sound[j][i] );
\r
2260 void DTX::AdjustWave( DTX::Wave* pWave, double dbStartTime, CSound* pSound )
\r
2262 if( !pWave || dbStartTime < 0.0 || !pSound)
\r
2265 //
\91\8d\89\89\91t
\8e\9e\8aÔ
\82ª 5000ms
\88È
\8fã
\82Ì
\89¹
\82Ì
\82Ý
\92²
\90®
\82·
\82é
\r
2266 if( pWave->dbTotalTime < 5000.0 )
\r
2269 //
\81¦
\83T
\83E
\83\93\83h
\82Ì
\8dÄ
\90¶
\82ÍCPU
\82Æ
\82Í
\96³
\8aÖ
\8cW
\82É
\90i
\82ñ
\82Å
\82¢
\82
\82Ì
\82Å
\81A
\r
2270 //
\91S
\83T
\83E
\83\93\83h
\82Å
\82P
\82Â
\82Ì dbNow
\82¶
\82á
\82È
\82
\81A
\82P
\82Â
\82P
\82Â
\82Ì
\83T
\83E
\83\93\83h
\82²
\82Æ
\82É g_Timer.GetSysTime()
\82µ
\82Ä
\94ä
\82×
\82é
\95K
\97v
\82ª
\82 \82é
\81B(2007.6.9)
\r
2271 double dbNow = this->pTimer->GetSysTime();
\r
2273 if( dbNow > dbStartTime )
\r
2275 //
\81¦ this->fSpeed
\82Í CSound::GetPositionFromTime()
\93à
\82Å
\8dl
\97¶
\82³
\82ê
\82é
\82Ì
\82Å
\82±
\82±
\82Å
\82Í
\82¢
\82ç
\82È
\82¢
\81B
\r
2276 double dbPos = ( dbNow - dbStartTime ) * 1/*this->fSpeed*/;
\r
2277 pSound->SetPosition( pSound->GetPositionFromTime( dbPos ) );
\r
2281 void DTX::SetVolume( int nWave, long lVolume, int nLane )
\r
2283 if( nLane < 0 || nLane > 10 ) return;
\r
2285 for( Wave *wc = this->pWaveLast; wc != NULL; wc = wc->prev ) //
\83\8a\83X
\83g
\82Ì
\96\96\94ö
\82©
\82ç
\8c\9f\8dõ...
\93¯
\88ê
\94Ô
\8d\86\82Å
\82Ì
\8fd
\95¡
\93o
\98^
\82ª
\82 \82é
\8fê
\8d\87\81A
\8cã
\95û
\82Ì
\90Ý
\92è
\82ª
\97D
\90æ
\82³
\82ê
\82é
\81B
\r
2287 if( wc->num == nWave && wc->bUse && wc->bUseByLane[ nLane ] )
\r
2289 int next = wc->nCurSound[ nLane ] + 1; //
\8e\9f\82É
\94
\90º
\82·
\82×
\82«
\83T
\83E
\83\93\83h
\82É
\82Â
\82¢
\82Ä
\90Ý
\92è
\r
2290 if( next >= DTX_MAX_SOUND )
\r
2292 if( wc->sound[ nLane ][ next ] )
\r
2293 wc->sound[ nLane ][ next ]->SetVolume( lVolume );
\r
2299 void DTX::SetWAVCache( bool bON )
\r
2301 this->bWAVCache = bON;
\r
2303 void DTX::SetBMPCache( bool bON )
\r
2305 this->bBMPCache = bON;
\r
2307 void DTX::SetResultImage( int rank, LPCTSTR fname, int arPriority[] )
\r
2309 if( rank < 0 || rank > 6 )
\r
2312 for( int i = rank; i >= 0; i-- )
\r
2314 if( arPriority[i] < 7-rank )
\r
2316 arPriority[i] = 7-rank;
\r
2317 this->strResultImage[i] = fname;
\r
2322 void DTX::SetResultMovie( int rank, LPCTSTR fname, int arPriority[] )
\r
2324 if( rank < 0 || rank > 6 )
\r
2327 for( int i = rank; i >= 0; i-- )
\r
2329 if( arPriority[i] < 7-rank )
\r
2331 arPriority[i] = 7-rank;
\r
2332 this->strResultMovie[i] = fname;
\r
2337 void DTX::SetResultSound( int rank, LPCTSTR fname, int arPriority[] )
\r
2339 if( rank < 0 || rank > 6 )
\r
2342 for( int i = rank; i >= 0; i-- )
\r
2344 if( arPriority[i] < 7-rank )
\r
2346 arPriority[i] = 7-rank;
\r
2347 this->strResultSound[i] = fname;
\r
2352 bool DTX::IsCommand( LPTSTR *p, LPCTSTR cmd )
\r
2354 static TCHAR buf[256];
\r
2355 int len = lstrlen( cmd );
\r
2356 if( len > 255 ) len = 255;
\r
2360 while( *q != _T(':') && *q != _T('\n') && *q != _T(' ') && *q != _T('\t') && i < len )
\r
2362 buf[i] = _T('\0');
\r
2364 if( i != len || _tcsnicmp( buf, cmd, i ) != 0 )
\r
2368 if( *q == _T(':') ) {
\r
2376 int DTX::GetCommand( LPTSTR *p, LPCTSTR cmd )
\r
2378 static TCHAR buf[256]; //
\83R
\83}
\83\93\83h
\82Í
\8dÅ
\91å256
\95¶
\8e\9a\r
2379 int len = lstrlen( cmd );
\r
2380 if( len > 255 ) len = 255;
\r
2384 for( i = 0; *q != _T(':') && *q != _T('\n') && *q != _T(' ') && *q != _T('\t') && i < len; i++ ) // buf
\82Ö
\82Ícmd
\82Æ
\93¯
\82¶
\95¶
\8e\9a\90\94\82¾
\82¯
\83R
\83s
\81[
\82·
\82é
\r
2386 buf[i] = _T('\0');
\r
2388 if( lstrcmpi( buf, cmd ) != 0 ) return 0;
\r
2390 int zz = GetZex( q );
\r
2393 while((*q>=_T('0')&&*q<=_T('9'))||(*q>=_T('a')&&*q<=_T('z'))||(*q>=_T('A')&&*q<=_T('Z'))||*q==_T('-')||*q==_T('+')) q++;
\r
2396 if( *q == _T(':') )
\r
2402 return ( zz < 0 ) ? -1 : zz;
\r
2405 int DTX::GetZex( LPCTSTR p )
\r
2408 for( int i = 0; i < 2; i++ )
\r
2411 if( *p >= _T('0') && *p <= _T('9') ) num += *p - _T('0');
\r
2412 else if( *p >= _T('a') && *p <= _T('z') ) num += *p - _T('a') + 10;
\r
2413 else if( *p >= _T('A') && *p <= _T('Z') ) num += *p - _T('A') + 10;
\r
2415 return -1; // 0
\81`9,A
\81`Z
\88È
\8aO
\82Ì
\95¶
\8e\9a\82ª
\8eg
\82í
\82ê
\82Ä
\82¢
\82é
\r
2421 int DTX::GetHex( LPCTSTR p )
\r
2424 for( int i = 0; i < 2; i++ )
\r
2427 if( *p >= _T('0') && *p <= _T('9') ) num += *p - _T('0');
\r
2428 else if( *p >= _T('a') && *p <= _T('f') ) num += *p - _T('a') + 10;
\r
2429 else if( *p >= _T('A') && *p <= _T('F') ) num += *p - _T('A') + 10;
\r
2431 return -1; // 0
\81`9,A
\81`F
\88È
\8aO
\82Ì
\95¶
\8e\9a\82ª
\8eg
\82í
\82ê
\82Ä
\82¢
\82é
\r
2437 int DTX::GetDec( LPCTSTR p )
\r
2440 if( *p == _T('-') )
\r
2445 else if( *p == _T('+') )
\r
2451 while( *p >= _T('0') && *p <= _T('9') )
\r
2453 num = num * 10 + (*p - _T('0'));
\r
2459 int DTX::GetDec3( LPCTSTR p )
\r
2462 for( int i = 0; i < 3; i++ )
\r
2465 if( *p >= _T('0') && *p <= _T('9') ) num += *p - _T('0');
\r
2466 else if( i == 0 && *p >= _T('a') && *p <= _T('z') ) num += *p - _T('a') + 10;
\r
2467 else if( i == 0 && *p >= _T('A') && *p <= _T('Z') ) num += *p - _T('A') + 10;
\r
2469 return -1; // 0
\81`9
\88È
\8aO
\82Ì
\95¶
\8e\9a\82ª
\8eg
\82í
\82ê
\82Ä
\82¢
\82é
\r
2475 int DTX::GetChannel( LPCTSTR p )
\r
2477 // GDA, G2D
\88È
\8aO
\82Í16
\90i
\90\94\82Q
\83P
\83^
\r
2478 if( this->scoreType != SCORETYPE_GDA && this->scoreType != SCORETYPE_G2D )
\r
2479 return GetHex( p );
\r
2481 // GDA, G2D
\82Í
\93Á
\8eê
\95¶
\8e\9a\97ñ
\r
2482 #define GDACH ( 5*12+1 ) //
\82±
\82Ì
\90\94\82Í
\82±
\82ê
\8eQ
\8fÆ--------------------------------
\81«
\r
2483 static const struct ChMap {
\r
2486 } chmap[ GDACH ] = {
\r
2487 {"TC", 0x03}, {"BL", 0x02}, {"GS", 0x29}, {"DS", 0x30}, {"FI", 0x53}, // 1
\r
2488 {"HH", 0x11}, {"SD", 0x12}, {"BD", 0x13}, {"HT", 0x14}, {"LT", 0x15}, // 2
\r
2489 {"CY", 0x16}, {"G1", 0x21}, {"G2", 0x22}, {"G3", 0x23}, {"G4", 0x24}, // 3
\r
2490 {"G5", 0x25}, {"G6", 0x26}, {"G7", 0x27}, {"GW", 0x28}, {"01", 0x61}, // 4
\r
2491 {"02", 0x62}, {"03", 0x63}, {"04", 0x64}, {"05", 0x65}, {"06", 0x66}, // 5
\r
2492 {"07", 0x67}, {"08", 0x68}, {"09", 0x69}, {"0A", 0x70}, {"0B", 0x71}, // 6
\r
2493 {"0C", 0x72}, {"0D", 0x73}, {"0E", 0x74}, {"0F", 0x75}, {"10", 0x76}, // 7
\r
2494 {"11", 0x77}, {"12", 0x78}, {"13", 0x79}, {"14", 0x80}, {"15", 0x81}, // 8
\r
2495 {"16", 0x82}, {"17", 0x83}, {"18", 0x84}, {"19", 0x85}, {"1A", 0x86}, // 9
\r
2496 {"1B", 0x87}, {"1C", 0x88}, {"1D", 0x89}, {"1E", 0x90}, {"1F", 0x91}, // 10
\r
2497 {"20", 0x92}, {"B1", 0xA1}, {"B2", 0xA2}, {"B3", 0xA3}, {"B4", 0xA4}, // 11
\r
2498 {"B5", 0xA5}, {"B6", 0xA6}, {"B7", 0xA7}, {"BW", 0xA8}, {"G0", 0x20}, // 12
\r
2499 {"B0", 0xA0} // +1
\r
2502 if( *p == _T('\0') || *(p+1) == _T('\0') )
\r
2503 return -1; //
\83`
\83\83\83\93\83l
\83\8b\94Ô
\8d\86\82ª
\82Q
\83P
\83^
\82È
\82¢
\r
2508 buf[2] = _T('\0');
\r
2509 for( int i = 0; i < GDACH; i++ )
\r
2511 if( lstrcmpi( chmap[i].strCh, buf ) == 0 )
\r
2512 return chmap[i].nCh;
\r
2517 void DTX::SetSpeed( float fSpeed )
\r
2519 for( Wave *w = this->pWave; w != NULL; w = w->next )
\r
2523 for( int i = 0; i < 11; i++ )
\r
2525 if( w->bUseByLane[ i ] )
\r
2527 for( int j = 0; j < DTX_MAX_SOUND; j++ )
\r
2529 if( w->sound[ i ][ j ] != NULL )
\r
2530 w->sound[ i ][ j ]->SetSpeed( fSpeed );
\r
2538 void DTX::CalcHash()
\r
2542 //
\83t
\83@
\83C
\83\8b\82Ì
\93Ç
\82Ý
\8d\9e\82Ý
\r
2543 if( ! file.Load( this->strFullPath ) )
\r
2544 return; //
\8e¸
\94s
\r
2546 //
\83t
\83@
\83C
\83\8b\93à
\97e
\82Ì
\83n
\83b
\83V
\83\85\92l
\82ð
\8cv
\8eZ
\82µ
\82Ä this->strHash
\82Ö
\8ai
\94[
\r
2549 md5.Update( file.GetData(), file.GetSize() );
\r
2550 md5.Final( this->strHash );
\r
2555 static int s_nChangeRGB[6][8] = {
\r
2556 { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 }, // RGB
\81¨ RGB
\r
2557 { 0x00, 0x02, 0x01, 0x03, 0x04, 0x06, 0x05, 0x07 }, // RBG
\r
2558 { 0x00, 0x01, 0x04, 0x05, 0x02, 0x03, 0x06, 0x07 }, // GRB
\r
2559 { 0x00, 0x02, 0x04, 0x06, 0x01, 0x03, 0x05, 0x07 }, // GBR
\r
2560 { 0x00, 0x04, 0x01, 0x05, 0x02, 0x06, 0x03, 0x07 }, // BRG
\r
2561 { 0x00, 0x04, 0x02, 0x06, 0x01, 0x05, 0x03, 0x07 } // BGR
\r
2563 void DTX::Random( int nType, bool bSuper )
\r
2565 int nPart = -10000; //
\8f¬
\90ß
\94Ô
\8d\86\r
2566 int nPattern = 0; //
\8f¬
\90ß
\92P
\88Ê
\82Ì
\93ü
\82ê
\91Ö
\82¦
\96@
\91¥
\r
2568 int n
\93K
\97p
\83`
\83b
\83v
\90\94 = 0;
\r
2570 for( Chip* cp = this->pChip; cp != NULL; cp = cp->next )
\r
2572 //
\8f¬
\90ß
\82ª
\95Ï
\82í
\82Á
\82½
\82ç
\93ü
\82ê
\91Ö
\82¦
\96@
\91¥
\82ð
\95Ï
\8dX
\r
2573 if( (int)(cp->dwPosition / DTX_RESOLVE) != nPart ) {
\r
2574 nPart = (int)(cp->dwPosition / DTX_RESOLVE);
\r
2575 nPattern = rand() % 6;
\r
2578 //
\83\8c\81[
\83\93\93ü
\82ê
\91Ö
\82¦
\r
2579 int ch = cp->nChannel;
\r
2580 if( ( nType == 0 && ch >= 0x20 && ch <= 0x27 ) || ( nType == 1 && ch >= 0xA0 && ch <= 0xA7 ) )
\r
2583 cp->nChannel = (ch & 0xF0) | ( s_nChangeRGB[ rand() % 6 ][ ch & 0x07 ] );
\r
2585 cp->nChannel = (ch & 0xF0) | ( s_nChangeRGB[ nPattern ][ ch & 0x07 ] );
\r
2587 n
\93K
\97p
\83`
\83b
\83v
\90\94 ++;
\r
2592 DWORD DTX::GetChipParamType( int nCh )
\r
2596 //
\83o
\83b
\83N
\83R
\81[
\83\89\83X
\r
2598 return DTXCPT_WAV;
\r
2602 return DTXCPT_BPM;
\r
2604 // BPM
\95Ï
\8dX
\81i
\8ag
\92£
\81j
\r
2606 return DTXCPT_BPMEX;
\r
2609 case 0x04: case 0x07: case 0x55: case 0x56: case 0x57: case 0x58: case 0x59: case 0x60:
\r
2610 return DTXCPT_BMP | DTXCPT_BMPTEX | DTXCPT_BGA | DTXCPT_BGAPAN;
\r
2612 //
\82a
\82f
\82`
\83X
\83R
\81[
\83v
\89æ
\91\9c\90Ø
\91Ö
\r
2613 case 0xC4: case 0xC7: case 0xD5: case 0xD6: case 0xD7: case 0xD8: case 0xD9: case 0xE0:
\r
2614 return DTXCPT_BMP | DTXCPT_BMPTEX;
\r
2616 //
\83h
\83\89\83\80\83p
\81[
\83g
\81i
\92Ê
\8fí
\81A
\95s
\89Â
\8e\8b\81A
\8bó
\82¤
\82¿
\81j
\r
2617 case 0x11: case 0x12: case 0x13: case 0x14: case 0x15: case 0x16: case 0x17: case 0x18: case 0x19: case 0x1A:
\r
2618 case 0x31: case 0x32: case 0x33: case 0x34: case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: case 0x3A:
\r
2619 case 0xB1: case 0xB2: case 0xB3: case 0xB4: case 0xB5: case 0xB6: case 0xB7: case 0xB8: case 0xB9: case 0xBC:
\r
2620 return DTXCPT_WAV;
\r
2622 //
\83M
\83^
\81[
\83p
\81[
\83g
\81i
\92Ê
\8fí
\81A
\8bó
\82¤
\82¿
\81j
\r
2623 case 0x20: case 0x21: case 0x22: case 0x23: case 0x24: case 0x25: case 0x26: case 0x27:
\r
2625 return DTXCPT_WAV;
\r
2627 //
\83x
\81[
\83X
\83p
\81[
\83g
\81i
\92Ê
\8fí
\81A
\8bó
\91Å
\82¿
\81j
\r
2628 case 0xA0: case 0xA1: case 0xA2: case 0xA3: case 0xA4: case 0xA5: case 0xA6: case 0xA7:
\r
2630 return DTXCPT_WAV;
\r
2633 case 0x61: case 0x62: case 0x63: case 0x64: case 0x65: case 0x66: case 0x67: case 0x68: case 0x69: case 0x70:
\r
2634 case 0x71: case 0x72: case 0x73: case 0x74: case 0x75: case 0x76: case 0x77: case 0x78: case 0x79: case 0x80:
\r
2635 case 0x81: case 0x82: case 0x83: case 0x84: case 0x85: case 0x86: case 0x87: case 0x88: case 0x89: case 0x90:
\r
2636 case 0x91: case 0x92:
\r
2637 return DTXCPT_WAV;
\r
2641 return DTXCPT_AVI;
\r
2644 case 0x1F: case 0x2F: case 0xAF:
\r
2645 return DTXCPT_WAV;
\r