OSDN Git Service

#xxxxx DTXViewerのプロジェクトを追加。
[dtxmania/dtxmania.git] / DTXViewerプロジェクト / @FDK10プロジェクト / DTX.h
diff --git a/DTXViewerプロジェクト/@FDK10プロジェクト/DTX.h b/DTXViewerプロジェクト/@FDK10プロジェクト/DTX.h
new file mode 100644 (file)
index 0000000..2d9a700
--- /dev/null
@@ -0,0 +1,572 @@
+// \83N\83\89\83X\8fî\95ñ
+/*
+
+       DTX \83N\83\89\83X
+
+       \89\89\91t\83t\83@\83C\83\8b\82É\91Î\89\9e\82·\82é\83N\83\89\83X\81B\88È\89º\82Ì\8fî\95ñ\82ð\8e\9d\82Â\81B
+
+               (1) \83I\83u\83W\83F\83N\83g\8fî\95ñ
+
+                       Chip            \83I\83u\83W\83F\83N\83g\83\8a\83X\83g
+
+               (2) \83w\83b\83_\8fî\95ñ\87@\81i\83\8a\83e\83\89\83\8b\81j
+
+                       \83^\83C\83g\83\8b        \95\8e\9a\97ñ
+                       \83\8c\83x\83\8b\92l        \90\94\92l
+                       etc.,
+
+               (3) \83w\83b\83_\8fî\95ñ\87A\81i\83\8a\83X\83g\81\95\83\8a\83\\81[\83X\81j\81F
+
+                       BPM                     BPM\81i\90\94\92l\81j\82Ì\83\8a\83X\83g
+                       Wave            \89¹\90º\83\8a\83X\83g\81G\83\8a\83\\81[\83X\96{\91Ì\82Í CSoundManager \82Å\8aÇ\97\9d\82µ\81A\96{\8d\\91¢\91Ì\82Å\82Í\83|\83C\83\93\83^\82¾\82¯\82ð\8aÇ\97\9d\82·\82é\81B\81j
+                       BMP             \82Q\82c\89æ\91\9c\83\8a\83X\83g\81G\83\8a\83\\81[\83X\96{\91Ì\82Í CSurfaceManager \82Å\8aÇ\97\9d\82µ\81A\96{\8d\\91¢\91Ì\82Å\82Í\83|\83C\83\93\83^\82¾\82¯\82ð\8aÇ\97\9d\82·\82é\81B\81j
+                       BMPTEX          \82R\82c\89æ\91\9c\83\8a\83X\83g\81F\83\8a\83\\81[\83X\96{\91Ì\82Í CTextureManager \82Å\8aÇ\97\9d\82µ\81A\96{\8d\\91¢\91Ì\82Å\82Í\83|\83C\83\93\83^\82¾\82¯\82ð\8aÇ\97\9d\82·\82é\81B\81j
+                       BGA                     \90\94\92l\82Æ{BMP|BMPTEX}\82Ö\82Ì\8eQ\8fÆ\82Ì\83\8a\83X\83g
+                       BGAPan          \90\94\92l\82Æ{BMP|BMPTEX}\82Ö\82Ì\8eQ\8fÆ\82Ì\83\8a\83X\83g
+                       AVI                     \93®\89æ\83\8a\83X\83g\81FCAvi \82ð\93à\95ï
+
+               (4) Wave \82É\91Î\82·\82é\8ae\8eí\83\81\83\\83b\83h\81F
+
+                       WAV\81i\92P\89¹\81j\82Ì\8dÄ\90\8aJ\8en\81A\92â\8e~\81A\89¹\97Ê\90Ý\92è\81A\8dÄ\90\91¬\93x\90Ý\92è\81A\8dÄ\90\88Ê\92u\95â\90³
+                       WAV\81i\91S\89¹\81j\82Ì\92\86\93r\8dÄ\90\81A\92â\8e~\81A\88ê\8e\9e\92â\8e~\81A\8dÄ\8aJ
+
+               (5) \83\8a\83\\81[\83X\83f\81[\83^\82ð\83L\83\83\83b\83V\83\85\82·\82é\82½\82ß\82Ì\8ae Manager \81B
+
+                       CSoundManager           \89¹\90º\81iCSound\81j\82Ì\83L\83\83\83b\83V\83\85
+                       CSurfaceManager         \82Q\82c\89æ\91\9c\81iCSurface\81j\82Ì\83L\83\83\83b\83V\83\85
+                       CTextureManager         \82R\82c\89æ\91\9c\81iCTexture\81j\82Ì\83L\83\83\83b\83V\83\85
+
+       \96{\83N\83\89\83X\82Í Activity \83N\83\89\83X\82©\82ç\8cp\8f³\82µ\82Ä\82¢\82é\81B
+               \81¨ DTX \82Í Activity \82Ì\83\8b\81[\83\8b\82É\8f]\82¢\81A\93K\90Ø\82È\83^\83C\83~\83\93\83O\82Å Init, Restore, Invalidate, Delete \82É\98A\93®\82·\82é\82±\82Æ\81B
+               \81@\81i\82Ç\82±\82Ö\82à AddChild \82³\82ê\82È\82¢\8fê\8d\87\82Í\93Á\82É\92\8d\88Ó\81B\81j
+               \81¨ \82½\82¾\82µ\81A\96{\83N\83\89\83X\82Ì\8e\9d\82Â\8fî\95ñ\82Í UnActivate() \8cã\82É\82à\83A\83N\83Z\83X\82³\82ê\82é\82Ì\82Å\81AUnActivate() \82Å\82Í\89½\82à\82¹\82¸\81A
+                  \95Ê\93r\93à\95\94\8fî\95ñ\82ð\83\8a\83Z\83b\83g\81i\83\8a\83X\83g\89ð\95ú\82È\82Ç\81j\82·\82é\82½\82ß\82Ì\83\81\83\\83b\83h Clear() \82ð\8f\80\94õ\82·\82é\81B
+*/
+// \8eg\82¢\95û
+/*
+       \81y\8eg\82¢\95û\81z
+
+       (0) \89º\8f\80\94õ\82ð\8ds\82¤\81B
+                       \81EDrumMIDI \83\89\83C\83u\83\89\83\8a\82Ì\8f\89\8aú\89»
+                       \81E\83^\83C\83}\81iCTimerEx\81j\81AMIDI Out\81iHMIDOUT\81j\82Ì\8e\96\91O\90Ý\92è\81iSet\81`\83\81\83\\83b\83h\8eQ\8fÆ\81j
+
+       (1) OneTimeSceneInit() \82ð\8cÄ\82Ñ\8fo\82·\81B
+                       \81E\8ae Manager \82ª\8f\89\8aú\89»\82³\82ê\82é\81B
+
+       (2) Activate() \82ð\8cÄ\82Ñ\8fo\82·\81B
+                       \81E\93à\95\94\82Å Clear() \82ª\8cÄ\82Ñ\8fo\82³\82ê\81A\93à\95\94\8fî\95ñ\82ª\83\8a\83Z\83b\83g\82³\82ê\82é\81B
+
+       (3) Load() \82Å\89\89\91t\83t\83@\83C\83\8b\82ð\93Ç\82Ý\8d\9e\82Þ\81B
+                       \81EMIDI\83t\83@\83C\83\8b\82ð\93Ç\82Ý\8d\9e\82Þ\8fê\8d\87\82Í\81A\8e\96\91O\82É DTX::m_nMIDILevel \82ð\90Ý\92è\82·\82é\82±\82Æ\81B
+                       \81E\83w\83b\83_\8fî\95ñ\87@\81i\83\8a\83e\83\89\83\8b\81j\82¾\82¯\93Ç\82Ý\8d\9e\82Ý\82½\82¢\8fê\8d\87\82Í\81AbHeaderOnly = true \82É\82·\82é\81B
+
+       (4) LoadBMP(), LoadAVI() \82Å\83f\83o\83C\83X\88Ë\91\83I\83u\83W\83F\83N\83g\82Æ\93®\89æ\82ð\8d\\92z\82·\82é\81B
+                       \81ELoad() \8cã\82É\8eÀ\8ds\82·\82é\82±\82Æ\81B
+
+       (5) \89\89\91t\91O\82É Random() \82Å\83M\83^\81[\83`\83b\83v\82É RANDOM \89Á\8dH\82ð\93K\97p\82·\82é\81B\81i\83I\83v\83V\83\87\83\93\81j
+                       \81ELoad() \8cã\82É\8eÀ\8ds\82·\82é\82±\82Æ\81B
+
+       (6) \89\89\91t\82Ü\82½\82Í\89\89\91t\8fî\95ñ\82Ì\95\\8e¦\81B\83A\83v\83\8a\91¤\82Å DTX \82Ì\8ae public \83\81\83\93\83o\82É\8e©\97R\82É\83A\83N\83Z\83X\82·\82é\81B
+
+       (7) UnActivate() \82ð\8cÄ\82Ñ\8fo\82·\81B
+                       \81E\8bó\83\81\83\\83b\83h\81B\89½\82à\8ds\82í\82ê\82È\82¢\81B
+
+       (8) Clear() \82ð\8cÄ\82Ñ\8fo\82µ\81A\93à\95\94\8fî\95ñ\82ð\83\8a\83Z\83b\83g\82·\82é\81B
+                       \81EDTX::bWAVCache, DTX::bBMPCache \82ª false \82Ì\8fê\8d\87\81A\8ae Manager \82Ì\8e\9d\82Â\8eÀ\83f\81[\83^\82É\82Â\82¢\82Ä\82Í\81A\82±\82±\82Å\82Í\89½\82à\82µ\82È\82¢\81B
+                        \81i\8ae Manager \82»\82ê\82¼\82ê\82Ì\83\89\83C\83t\83T\83C\83N\83\8b\82É\8f]\82¤\81B\81j
+                        true \82Ì\8fê\8d\87\82Í\82±\82±\82Å\8eÀ\83f\81[\83^\82ð\83N\83\8a\83A\82·\82é\81B
+
+       (9) FinalCleanup() \82ð\8cÄ\82Ñ\8fo\82·\81B
+                       \81E\8ae Manager \82ð\8fI\97¹\82·\82é\81B\82±\82±\82Å\82Í\93à\95\94\8fî\95ñ\82É\82Â\82¢\82Ä\82Í\89½\82à\82µ\82È\82¢\82Ì\82Å\81A\8e\96\91O\82É Clear() \82µ\82Ä\82¨\82­\82±\82Æ\81B
+
+       \82»\82Ì\91¼\81AActivity \83\8b\81[\83\8b\82É\8f]\82Á\82Ä\81A\89º\8bL\83\81\83\\83b\83h\82ð\8cÄ\82Ñ\8fo\82·\81B
+               \81EMyInitDeviceObjects()                         \8ae Manager \82É\90Ú\91±\81B
+               \81EMyRestoreDeviceObjects()                      \93¯\8fã
+               \81EMyInvalidateDeviceObjects()           \93¯\8fã
+               \81EMyDeleteDeviceObjects()                       \93¯\8fã
+*/
+
+#pragma once
+
+#include "Activity.h"
+#include "CTimer.h"
+#include "CSound.h"
+#include "CSoundManager.h"
+#include "CSurfaceManager.h"
+#include "CTextureManager.h"
+#include "CAvi.h"
+#include "CD3DApplication.h"
+
+namespace FDK {
+       namespace General {
+
+// \8f\94\83p\83\89\83\81\81[\83^\92è\8b`
+#define        DTX_TEXTLEN             1024            // \95\8e\9a\97ñ\83\81\83\93\83o\82Ì\8dÅ\91å\92·
+#define        DTX_LINELEN             32768           // \93Ç\82Ý\8d\9e\82Ý\97p\95\8e\9a\97ñ\81i\89\89\91t\83t\83@\83C\83\8b\93à\82Ì\82P\8ds\81j\82Ì\8dÅ\91å\92·
+#define        DTX_MAX_SOUND   2                       // \83T\83E\83\93\83h\82²\82Æ\82Ì\8dÅ\91å\93¯\8e\9e\94­\90º\90\94
+#define        DTX_RESOLVE             384                     // \82P\8f¬\90ß\82Ì\89ð\91\9c\93x
+#define        DTX_PLAYVOLUME  100                     // \8eè\93®\89\89\91t\83p\81[\83g\82Ì\8aî\8f\80\89¹\97Ê[\81\93]
+#define        DTX_AUTOVOLUME  80                      // \8e©\93®\89\89\91t\83p\81[\83g\82Ì\8aî\8f\80\89¹\97Ê[\81\93]
+
+// ScoreType \92è\8b` - \89\89\91t\83f\81[\83^\82Ì\8eí\95Ê
+enum ScoreType {
+       SCORETYPE_UNKNOWN,
+       SCORETYPE_DTX,
+       SCORETYPE_BMS,
+       SCORETYPE_GDA,
+       SCORETYPE_G2D,
+       SCORETYPE_MID
+};
+
+// BGAType \92è\8b` - BGA\83R\83}\83\93\83h\8e¯\95Ê\97p
+enum BGAType {
+       BGATYPE_UNKNOWN,
+       BGATYPE_BMP,
+       BGATYPE_BMPTEX,
+       BGATYPE_BGA,
+       BGATYPE_BGAPAN
+};
+
+// AVIType \92è\8b` - AVI\83R\83}\83\93\83h\8e¯\95Ê\97p
+enum AVIType {
+       AVITYPE_UNKNOWN,
+       AVITYPE_AVI,
+       AVITYPE_AVIPAN
+};
+
+// DTXCPT_xxx \92è\8b` - DTX::Chip \82Ì\88ø\90\94(nParam=zz)\82Ì\8eí\97Þ (DWORD)
+#define DTXCPT_WAV             (1 << 0)
+#define        DTXCPT_WAVVOL   (1 << 1)
+#define        DTXCPT_WAVPAN   (1 << 2)
+#define        DTXCPT_BPM              (1 << 3)
+#define        DTXCPT_BPMEX    (1 << 4)
+#define        DTXCPT_BMP              (1 << 5)
+#define        DTXCPT_BMPTEX   (1 << 6)
+#define        DTXCPT_BGA              (1 << 7)
+#define        DTXCPT_BGAPAN   (1 << 8)
+#define        DTXCPT_AVI              (1 << 9)
+
+class DTX : public Activity
+{
+public:
+       void    Clear();        // \93à\95\94\8fó\91Ô\82Ì\8f\89\8aú\89»\81A\83\8a\83\\81[\83X(WAV,BMP)\82Ì\89ð\95ú\81A\93à\95\94\83\8a\83X\83g\82Ì\83N\83\8a\83A
+
+       void    SetTimer( CTimerEx* pc ) {this->pTimer = pc;}
+       void    SetMIDIOut( HMIDIOUT hMidiOut ) {this->hMidiOut = hMidiOut;}
+       void    SetWAVCache( bool bON );
+       void    SetBMPCache( bool bON );
+
+       // \89\89\91t\83t\83@\83C\83\8b\82Ì\93Ç\82Ý\8d\9e\82Ý\81G
+       // Activate()\8cã\82É\8cÄ\82Ñ\8fo\82·\82±\82Æ\81B
+       // \81@fname ,........ \83t\83@\83C\83\8b\96¼\81i\83t\83\8b\83p\83X\81j
+       // \81@bHeaderOnly ... \83w\83b\83_\82Ì\82Ý\82Ì\93Ç\82Ý\8d\9e\82Ý\82È\82çtrue
+       // \81@dbSpeed ....... \89\89\91t\91¬\93x\81iBPM\82É\8fæ\82\82é\90\94\92l\81G\83f\83t\83H\83\8b\83g1.0\81j
+       bool    Load( LPCTSTR fname, bool bHeaderOnly=false, double dbPlaySpeed=1.0 );
+
+       // \89\89\91t\83t\83@\83C\83\8b\82Ì\93Ç\82Ý\8d\9e\82Ý\81G
+       // Activate()\8cã\82É\8cÄ\82Ñ\8fo\82·\82±\82Æ\81B
+       // \81@fname ,........ \83t\83@\83C\83\8b\96¼\81i\83t\83\8b\83p\83X\81j
+       // \81@bHeaderOnly ... \83w\83b\83_\82Ì\82Ý\82Ì\93Ç\82Ý\8d\9e\82Ý\82È\82çtrue
+       // \81@dbSpeed ....... \89\89\91t\91¬\93x\81iBPM\82É\8fæ\82\82é\90\94\92l\81G\83f\83t\83H\83\8b\83g1.0\81j
+       //   bLv100 ........ 10\88È\89º\82Ì\83\8c\83x\83\8b\82ð10\94{\82·\82é\8fê\8d\87\82Ítrue
+       bool    Load( tstring &fname, bool bHeaderOnly=false, double dbPlaySpeed=1.0 )
+                       { return Load( fname.c_str(), bHeaderOnly, dbPlaySpeed ); }
+       
+       // BMP, BMPTEX \82Ì\93o\98^\81B
+       // Load()\8cã\82É\8eÀ\8ds\82·\82é\82±\82Æ\81B
+       // \82±\82±\82Å\82Í m_TextureManager|m_SurfaceManager.CreateCachedSurface() \82ð\8eg\97p\82·\82é\81B
+       void    LoadBMP();
+       
+       // AVI \83t\83@\83C\83\8b\82Ì\93Ç\82Ý\8d\9e\82Ý
+       // Load()\8cã\82É\8eÀ\8ds\82·\82é\82±\82Æ\81B
+       // \82±\82±\82Å\82Í\81ACAvi::Init() \82Æ CAvi::Open() \82Ü\82Å\82ð\8ds\82¤\81B
+       void    LoadAVI();
+       
+       // \83M\83^\81[\81^\83x\81[\83X\82É\82Â\82¢\82Ä\81A\83\89\83\93\83_\83\80\82ð\93K\97p\82·\82é\81B
+       // \81@nType = 0:Guitar, 1:Bass
+       // \81@bSuper = true: SUPER RANDOM, false: RANDOM
+       void    Random( int nType, bool bSuper=false );
+
+       class   Chip;
+
+       // \91S\83`\83b\83v\82ÌWAVE/BGA\82É\82Â\82¢\82Ä dwStartTime \8e\9e\93_\82Å\8dÄ\90\92\86\82©\94Û\82©\92²\8d¸\82µ\81A
+       // \8dÄ\90\92\86\82È\82ç\93K\90Ø\82È\8cÂ\8f\8a\82©\82ç\8dÄ\90\82ð\8aJ\8en\82·\82é\81B
+       void    SkipStart( double dbStartTime );
+
+       // WAVE \82Ì\94­\90º\89¹\97Ê\82Ì\90Ý\92è
+       // \81@nLane = \83\8c\81[\83\93\94Ô\8d\86\81iDrums=0\81`6, Guitar=7, Bass=8, BGM=9\81j
+       // \81@lVolume = \89¹\97Ê 0..100 [%]
+       void    SetVolume( int nWave, long lVolume=DTX_AUTOVOLUME, int nLane=9 );
+       
+       //
+       // \8c»\8dÝ\82ÌWAV\83\8a\83X\83g\82É\82 \82é\82·\82×\82Ä\82ÌWave\82Ì\8dÄ\90\83X\83s\81[\83h\82ð\95Ï\8dX\82·\82é\81B
+       void    SetSpeed( float fSpeed=1.0f );
+
+       // \82·\82×\82Ä\82ÌWAVE\82Ì\8e\9e\8aÔ\92²\90®\81G
+       // \8aJ\8en\8e\9e\8d\8f\82©\82ç\94»\92f\82µ\82Ä\81A\8dÄ\90\83J\81[\83\\83\8b\82ð\8c»\8dÝ\82 \82é\82×\82«\90³\82µ\82¢\88Ê\92u\82É\88Ú\93®\82·\82é\81B
+       void    AdjustWaves();
+
+       //
+       // \8bÈ\83f\81[\83^\83n\83b\83V\83\85\82ð\8cv\8eZ\82µ\82Ä m_strHash \82É\8ai\94[\82·\82é\81B
+       void    CalcHash();
+       
+       // \8ew\92è\82³\82ê\82½Chip\82Ì nParam \82ð Wave \8eÀ\94Ô\8d\86\82Æ\82Ý\82È\82µ\82Ä\94­\90º
+       // \81@pChip = Chip \82Ö\82Ì\83|\83C\83\93\83^
+       // \81@nLane = \83\8c\81[\83\93\94Ô\8d\86\81iDrums=0\81`7, Guitar=8, Bass=9, BGM=10\81j
+       // \81@lVol  = \8aî\96{\89¹\97Ê[%]\81iDTX::Wave.volume \82ð\94½\89f\82·\82é\91O\82Ì\89¹\97Ê\81j
+       // \81@bMonitor = MIDI\82Ì\89¹\97ÊUP\82È\82çtrue
+       // \81@bBad  = \89¹\92ö\82ð\82¸\82ç\82·\82È\82ç true
+       void    PlayChip( Chip* pChip, int nLane=10, long lVol=DTX_AUTOVOLUME, bool bMIDIMonitor=false, bool bBad=false );
+
+       // WAVE \82Ì\94­\90º\92â\8e~
+       // \81@nWave = Wave\94Ô\8d\86
+       // \81@nLane = \83\8c\81[\83\93\94Ô\8d\86\81iDrums=0\81`6, Guitar=7, Bass=8, BGM=9\81j
+       void    StopWave( int nWave, int nLane );
+
+       void    StopAllWaves();                 // \82·\82×\82Ä\82ÌWAVE\82Ì\94­\90º\92â\8e~
+       void    PauseWaves();                   // \91S Wave \82Ì\94­\90º\88ê\8e\9e\92â\8e~
+       void    ContWaves();                    // \91S Wave \82Ì\94­\90º\8dÄ\8aJ
+
+       bool    MyOneTimeSceneInit();                           // \8f\89\8aú\89»\81G\8ae Manager \82Ì\8f\89\8aú\89»
+       bool    MyActivate();                                           // \8a\88\90«\89»\81GClear() \82ð\8cÄ\82Ñ\8fo\82·\82¾\82¯
+       bool    MyUnActivate();                                         // \94ñ\8a\88\90«\89»\81GWAV,BMP,BMPTEX \88È\8aO\82Ì\83\8a\83\\81[\83X\81iAVI, Chip\82È\82Ç\81j\82Ì\89ð\95ú\81i\82±\82ê\82ç\82Í Clear()\93à\82Å\82à\8ds\82í\82ê\82é\82ª\81A\88ê\89\9e\82±\82±\82Å\82à\81c\81B\81j
+       bool    MyFinalCleanup();                                       // \8fI\97¹\8f\88\97\9d\81G\8ae Manager \82Ì\89ð\95ú
+       bool    MyInitDeviceObjects();                          // \83f\83o\83C\83X\88Ë\91\83I\83u\83W\83F\83N\83g\82Ì\8f\89\8aú\89»
+       bool    MyRestoreDeviceTextures();                      // \83f\83o\83C\83X\88Ë\91\83I\83u\83W\83F\83N\83g\82Ì\8d\\92z\81i\83e\83N\83X\83`\83\83\81j\81B\8e\96\91O\82É SetDirect3DDevice() \82Å Direct3D \83f\83o\83C\83X\82ð\93o\98^\82µ\82Ä\82¨\82­\82±\82Æ\81B
+       bool    MyRestoreDeviceSurfaces();                      // \83f\83o\83C\83X\88Ë\91\83I\83u\83W\83F\83N\83g\82Ì\8d\\92z\81i\83T\81[\83t\83F\83C\83X\81j\81B\8e\96\91O\82É SetDirect3DDevice() \82Å Direct3D \83f\83o\83C\83X\82ð\93o\98^\82µ\82Ä\82¨\82­\82±\82Æ\81B
+       bool    MyInvalidateDeviceObjects();            // \83f\83o\83C\83X\88Ë\91\83I\83u\83W\83F\83N\83g\82Ì\89ð\95ú
+       bool    MyDeleteDeviceObjects();                        // Desc: \83f\83o\83C\83X\88Ë\91\83I\83u\83W\83F\83N\83g\82Ì\94j\8aü
+
+       DTX();
+       virtual ~DTX();
+
+public:
+       bool                    bDTXV;                                          // DTXV \82Å\82Ì\97\98\97p\82È\82ç\81A\90\90¬\92¼\8cã\82É true \82É\82·\82é\81B
+       tstring                 strFullPath;                            // \83t\83@\83C\83\8b\96¼\81i\83t\83\8b\83p\83X\81j\81i\97á\81F"C:\DTXFiles\50000t\50000t.gda")
+       tstring                 strFolder;                                      // \83t\83@\83C\83\8b\83p\83X\81i\97á\81F"C:\DTXFiles\50000t\")
+       TCHAR                   strFileExt[ _MAX_EXT ];         // \83t\83@\83C\83\8b\82Ì\8ag\92£\8eq\81i\97á: "gda"\81j
+       ScoreType               scoreType;                                      // \8ag\92£\8eq\82É\91Î\89\9e\82·\82é\83X\83R\83A\83^\83C\83v
+       tstring                 strTitle;                                       // \83^\83C\83g\83\8b\96¼
+       tstring                 strArtist;                                      // \83A\81[\83e\83B\83X\83g\96¼
+       tstring                 strComment;                                     // \83R\83\81\83\93\83g
+       tstring                 strPanel;                                       // \83p\83l\83\8b\83R\83\81\83\93\83g
+       tstring                 strGenre;                                       // \83W\83\83\83\93\83\8b
+       bool                    bHiddenLevel;                           // \83\8c\83x\83\8b\82ð\95s\96¾\82Æ\82µ\82Ä\95\\8e¦\82·\82é\8fê\8d\87\82É true \81B
+       int                             nLevel[ 3 ];                            // \83\8c\83x\83\8b(\88Õ:1-100:\93ï)\81i\92\8d\81F\8dÅ\91å\92l\82Í\90§\8cÀ\82µ\82Ä\82È\82¢\81j(0:Drums, 1:Guitar, 2:Bass)
+       double                  dbBPM;                                          // BPM\92\81¨ #BPM: \82Ì\92l\82ª\93ü\82é\81B
+       double                  dbBaseBPM;                                      // \8aî\96{BPM\92l
+       tstring                 strStage;                                       // Stage\83t\83@\83C\83\8b\96¼
+       tstring                 strPresound;                            // \83v\83\8c\83r\83\85\81[\89¹\83t\83@\83C\83\8b\96¼
+       tstring                 strPreimage;                            // \83v\83\8c\83r\83\85\81[\89æ\91\9c\83t\83@\83C\83\8b\96¼
+       tstring                 strPremovie;                            // \83v\83\8c\83r\83\85\81[\93®\89æ\83t\83@\83C\83\8b\96¼
+       tstring                 strBackground;                          // \94w\8ci\83t\83@\83C\83\8b\96¼\81i\83h\83\89\83\80\89æ\96Ê\81j
+       tstring                 strBackgroundGR;                        // \94w\8ci\83t\83@\83C\83\8b\96¼\81i\82f\82q\89æ\96Ê\81j
+       tstring                 strResultImage[7];                      // \83\8a\83U\83\8b\83g\89æ\91\9c\83t\83@\83C\83\8b\96¼\81irank SS,S,A,B,C,D,E \82Ì\8f\87\82É\82V\82Â\81j
+       tstring                 strResultMovie[7];                      // \83\8a\83U\83\8b\83g\93®\89æ\83t\83@\83C\83\8b\96¼\81irank SS,S,A,B,C,D,E \82Ì\8f\87\82É\82V\82Â\81j
+       tstring                 strResultSound[7];                      // \83\8a\83U\83\8b\83g\89¹\83t\83@\83C\83\8b\96¼\81irank SS,S,A,B,C,D,E \82Ì\8f\87\82É\82V\82Â\81j
+       tstring                 strMIDI;                                        // MIDI\83t\83@\83C\83\8b\96¼
+       bool                    bMIDINote;                                      // MIDI\83m\81[\83g
+       int                             nMIDILevel;                                     // MIDI\83\8c\83x\83\8b(0:EASY, 1:REAL, 2:RAW;  MID\82Å\82Ì\82Ý\97L\8cø,\91¼\82Í0)      --> MyActivate() \82Ì\8cã \82©\82 Load() \82Ì\91O\82É\90Ý\92è\82·\82é\82±\82Æ\81I
+       int                             nMIDIMap;                                       // MIDI\83}\83b\83v\81iDM_MIDIMAP_...; DrumMIDI.h \8eQ\8fÆ\81j
+       bool                    bBlackColorKey;                         // BMP \89æ\91\9c\82Ì\8d\95\92l\82ð\93§\89ß\82·\82é\82È\82çtrue
+       tstring                 strPathWav;                                     // WAV,BMP,etc. \82Ì\91\8dÝ\82·\82é\83t\83H\83\8b\83_\81i#PATH_WAV \8ew\92è\81j
+       float                   fSpeed;                                         // \8dÄ\90\91¬\93x\81i\83f\83t\83H\83\8b\83g\81F1.0f\81j(DTXV\90ê\97p\81j
+       bool                    bHeaderOnly;                            // Header \82¾\82¯\82Ì\93Ç\82Ý\8d\9e\82Ý\82È\82ç true
+
+       // BPM \8d\\91¢\91Ì
+       struct BPM {
+               int             num;                                                            // BPM\8eÀ\94Ô\8d\86
+               int             vnum;                                                           // \95\\8bL\8fã\82ÌBPM\94Ô\8d\86(00\81`ZZ; 00 \82Í#BPM: \82Ì\92l)
+               double  bpm;                                                            // BPM\92l
+               BPM             *prev, *next;                                           // \91O\8cã\82Ì\83Z\83\8b
+       } *pBPM, *pBPMLast;
+
+       // WAVE \8d\\91¢\91Ì
+       struct Wave {
+               int             num;                                                            // WAV\8eÀ\94Ô\8d\86
+               int             vnum;                                                           // \95\\8bL\8fã\82ÌWAV\94Ô\8d\86(01\81`ZZ)
+               int             volume;                                                         // \89¹\97Ê(0\81`100[%])
+               int             pan;                                                            // \83p\83\93(-100(\8d¶)\81`0\81`100(\89E))
+               bool    bUse;                                                           // \82±\82ê\82ª false \82È\82ç\82Πopen \82É\8e¸\94s\82µ\82½\82±\82Æ\82ð\88Ó\96¡\82·\82é\81B
+               tstring strFileName;                                            // WAV\83t\83@\83C\83\8b\96¼
+               // \88È\89º\81A[0..7]:\83h\83\89\83\80\81A[8]:\83M\83^\81[\81A[9]:\83x\81[\83X\81A[10]:BGM
+               bool    bUseByLane[ 11 ];                                       // \8ae\83\8c\81[\83\93\82Å\82±\82ÌWave\82ª\8eg\82í\82ê\82é\82È\82çtrue\81B\82±\82ê\82ª false \82È\82ç\81A\82½\82Æ\82¦ bUse=true \82Å\82à sound[] \82Í\8eg\82¦\82È\82¢\81B([0..7]:\83h\83\89\83\80\81A[8]:\83M\83^\81[\81A[9]:\83x\81[\83X\81A[10]:BGM)
+               int             nCurSound[ 11 ];                                        // \8c»\8dÝ\8dÄ\90\92\86\82Ì\83T\83E\83\93\83h\94Ô\8d\86(0..MAX_SOUND-1; \8f\89\8aú\92l\82Í-1) ([0..7]:\83h\83\89\83\80\81A[8]:\83M\83^\81[\81A[9]:\83x\81[\83X\81A[10]:BGM)
+               CSound* sound[ 11 ][ DTX_MAX_SOUND ];           // \83T\83E\83\93\83h\81i\82P\83\8c\81[\83\93\82É\82Â\82«MAX_SOUND\8cÂ\82¸\82Â\81\81j([0..7]:\83h\83\89\83\80\81A[8]:\83M\83^\81[\81A[9]:\83x\81[\83X\81A[10]:BGM)
+               bool    bPlaying[ 11 ][ DTX_MAX_SOUND ];        // \8dÄ\90\92\86\82È\82ç true([0..7]:\83h\83\89\83\80\81A[8]:\83M\83^\81[\81A[9]:\83x\81[\83X\81A[10]:BGM)
+               double  dbStartTime[ 11 ][ DTX_MAX_SOUND ];     // \8dÄ\90\8aJ\8en\8e\9e\8d\8f([0..7]:\83h\83\89\83\80\81A[8]:\83M\83^\81[\81A[9]:\83x\81[\83X\81A[10]:BGM)
+               double  dbPauseTime[ 11 ][ DTX_MAX_SOUND ];     // \88ê\8e\9e\92â\8e~\8e\9e\8d\8f([0..7]:\83h\83\89\83\80\81A[8]:\83M\83^\81[\81A[9]:\83x\81[\83X\81A[10]:BGM)
+               DWORD   dwBufferSize;                                           // \83T\83E\83\93\83h\83o\83b\83t\83@\82Ì\83T\83C\83Y
+               double  dbTotalTime;                                            // \83T\83E\83\93\83h\83o\83b\83t\83@\82Ì\91\8d\89\89\91t\8e\9e\8aÔ[ms]
+               Wave    *prev, *next;                                           // \91O\8cã\82Ì\83Z\83\8b
+       } *pWave, *pWaveLast;
+
+       // BMP \8d\\91¢\91Ì
+       struct BMP {
+               int                     num;                                                    // BMP\94Ô\8d\86(00\81`ZZ; 00 \82Í\8f\89\8aú\89æ\91\9c)
+               bool            bUse;                                                   // \82±\82ê\82ª false \82È\82ç\82Πopen \82É\8e¸\94s\82µ\82½\82±\82Æ\82ð\88Ó\96¡\82·\82é\81B
+               tstring         strFileName;                                    // BMP\83t\83@\83C\83\8b\96¼
+               CSurface*       pSurface;                                               // \89æ\91\9c
+               BMP                     *prev, *next;                                   // \91O\8cã\82Ì\83Z\83\8b
+       } *pBMP, *pBMPLast;
+       bool    bUseBMP;                                                        // BMP\82ª\82P\82Â\82Å\82à\82 \82é\82È\82çtrue
+       DWORD   dwBMPWidthMax;                                          // BPM \82Ì\8dÅ\91å\95\9d
+       DWORD   dwBMPHeightMax;                                         // BPM \82Ì\8dÅ\91å\8d\82
+
+       // BMPTEX \8d\\91¢\91Ì
+       struct BMPTEX {
+               int                     num;                                                    // BMPTEX\94Ô\8d\86(01\81`ZZ)
+               bool            bUse;                                                   // \82±\82ê\82ª false \82È\82ç\82Πopen \82É\8e¸\94s\82µ\82½\82±\82Æ\82ð\88Ó\96¡\82·\82é\81B
+               tstring         strFileName;                                    // BMPTEX\83t\83@\83C\83\8b\96¼
+               CTexture*       pTexture;                                               // \89æ\91\9c
+               BMPTEX          *prev, *next;                                   // \91O\8cã\82Ì\83Z\83\8b
+       } *pBMPTEX, *pBMPTEXLast;
+       bool    bUseBMPTEX;                                                     // BMPTEX\82ª\82P\82Â\82Å\82à\82 \82é\82È\82çtrue
+       DWORD   dwBMPTEXWidthMax;                                       // BPMTEX \82Ì\8dÅ\91å\95\9d
+       DWORD   dwBMPTEXHeightMax;                                      // BPMTEX \82Ì\8dÅ\91å\8d\82
+
+       // BGA \8d\\91¢\91Ì
+       struct BGA {
+               int             num;                                                            // BGA\94Ô\8d\86(01\81`ZZ)
+               int             bmp;                                                            // BMP\94Ô\8d\86(01\81`ZZ)
+               int             x1, y1;                                                         // BGA\82Ì\8d\8fã\8dÀ\95W(BMP\89æ\91\9c\93à\91\8a\91Î\8dÀ\95W)
+               int             x2, y2;                                                         // BGA\82Ì\89E\89º\8dÀ\95W(        \81V       )
+               int             ox, oy;                                                         // BGA\82Ì\95\\8e¦\88Ê\92u(DTXMania\82ÌBGA\97Ì\88æ\91\8a\91Î)
+               BGA             *prev, *next;                                           // \91O\8cã\82Ì\83Z\83\8b
+       } *pBGA, *pBGALast;
+
+       // BGAPan \8d\\91¢\91Ì
+       struct BGAPan {
+               int             num;                                                            // BGAPAN\94Ô\8d\86(01\81`ZZ)
+               int             bmp;                                                            // BMP\94Ô\8d\86(01\81`ZZ)
+               int             sw, sh;                                                         // \8aJ\8en\93]\91\97\83T\83C\83Y
+               int             ew, eh;                                                         // \8fI\97¹\93]\91\97\83T\83C\83Y
+               int             ssx, ssy;                                                       // \89æ\91\9c\91¤\8aJ\8en\8dÀ\95W(BMP\89æ\91\9c\93à\91\8a\91Î\8dÀ\95W)
+               int             sex, sey;                                                       // \89æ\91\9c\91¤\8fI\97¹\8dÀ\95W(        \81V       )
+               int             dsx, dsy;                                                       // \95\\8e¦\91¤\8aJ\8en\88Ê\92u(DTXMania\82ÌBGA\97Ì\88æ\91\8a\91Î\8dÀ\95W)
+               int             dex, dey;                                                       // \95\\8e¦\91¤\8fI\97¹\88Ê\92u(            \81V           )
+               int             len;                                                            // \8aJ\8en\88Ê\92u\82©\82ç\8fI\97¹\88Ê\92u\82Ö\82Ì\88Ú\93®\82É\82©\82¯\82é\8e\9e\8aÔ[ct]\81i\82P\8f¬\90ß\81\81PART_RESOLV ct\81j
+               BGAPan  *prev, *next;                                           // \91O\8cã\82Ì\83Z\83\8b
+       } *pBGAPan, *pBGAPanLast;
+
+       // AVI \8d\\91¢\91Ì
+       struct AVI {
+               int             num;                                                            // AVI\94Ô\8d\86(01\81`ZZ)
+               bool    bUse;                                                           // \82±\82ê\82ª false \82È\82ç open \82É\8e¸\94s\82µ\82½\82±\82Æ\82ð\88Ó\96¡\82·\82é\81B
+               tstring strFileName;                                            // AVI\83t\83@\83C\83\8b\96¼
+               CAvi    avi;                                                            // AVI\83X\83g\83\8a\81[\83\80
+               AVI             *prev, *next;                                           // \91O\8cã\82Ì\83Z\83\8b
+       } *pAVI, *pAVILast;
+       bool bUseAVI;                                                           // AVI\82ª\82P\82Â\82Å\82à\82 \82é\82È\82çtrue
+
+       // AVIPan \8d\\91¢\91Ì
+       struct AVIPan {
+               int             num;                                                            // AVIPAN\94Ô\8d\86(01\81`ZZ)
+               int             avi;                                                            // AVI\94Ô\8d\86(01\81`ZZ)
+               int             sw, sh;                                                         // \8aJ\8en\93]\91\97\83T\83C\83Y
+               int             ew, eh;                                                         // \8fI\97¹\93]\91\97\83T\83C\83Y
+               int             ssx, ssy;                                                       // \89æ\91\9c\91¤\8aJ\8en\8dÀ\95W(AVI\89æ\91\9c\93à\91\8a\91Î\8dÀ\95W)
+               int             sex, sey;                                                       // \89æ\91\9c\91¤\8fI\97¹\8dÀ\95W(        \81V       )
+               int             dsx, dsy;                                                       // \95\\8e¦\91¤\8aJ\8en\88Ê\92u(DTXMania\82ÌBGA\97Ì\88æ\91\8a\91Î\8dÀ\95W)
+               int             dex, dey;                                                       // \95\\8e¦\91¤\8fI\97¹\88Ê\92u(            \81V           )
+               int             len;                                                            // \8aJ\8en\88Ê\92u\82©\82ç\8fI\97¹\88Ê\92u\82Ö\82Ì\88Ú\93®\82É\82©\82¯\82é\8e\9e\8aÔ[ct]\81i\82P\8f¬\90ß\81\81PART_RESOLV ct\81j
+               AVIPan  *prev, *next;                                           // \91O\8cã\82Ì\83Z\83\8b
+       } *pAVIPan, *pAVIPanLast;
+
+       // Chip \83N\83\89\83X
+       class Chip
+       {                                                                                               // \81\9cCHIP \83\8a\83X\83g
+       public:
+               DWORD   dwPosition;                                                     // \94­\90º\88Ê\92u\81i\90æ\93ª\82©\82ç\82Ì\90â\91Î\88Ê\92u\81G\82P\8f¬\90ß\82Ì\92·\82³\82Í\8f¬\90ß\92·\94{\97¦\82É\8aÖ\82í\82ç\82¸ PART_RESOLV \82Å\8cÅ\92è\81j; MID\82Ì\8fê\8d\87\81A\8f¬\90ß\90ü\81E\94\8f\90ü\88È\8aO\82±\82±\82Í 0
+               int             nChannel;                                                       // \83`\83\83\83\93\83l\83\8b\94Ô\8d\86
+               int             nParam;                                                         // [\90®\90\94\8e\9e] Wave,BMP,BGA,BGAPAN,AVI,BPM \94Ô\8d\86(01\81`ZZ)
+               int             nRealParam;                                                     //          Wave,AVI,BPM \82Ì\8eÀ\94Ô\8d\86(1\81`...\96³\8cÀ)
+               double  dbParam;                                                        // [\8eÀ\90\94\8e\9e\83p\83\89\83\81\81[\83^\92l(ch.02)
+               Chip    *prev, *next;                                           // \91O\8cã\82Ì\83Z\83\8b
+               double  dbTime;                                                         // \94­\90º\8e\9e\8d\8f[ms]\81iMID \82Å\82Í g_dmCHIP_Event \82©\82ç\8eæ\93¾\81j
+
+               // MID\90ê\97p; g_dmCHIP_Event \82©\82ç\8eæ\93¾\81inChannel \82ª\83h\83\89\83\80\83`\83b\83v\82Ì\8e\9e\82Ì\82Ý\97L\8cø\81j
+               union {              
+                       DWORD dwMsg;                                                    // DWORD\83A\83N\83Z\83X\97p\83C\83x\83\93\83g\83f\81[\83^
+                       BYTE bData[4];                                                  // BYTE\83A\83N\83Z\83X\97p\83C\83x\83\93\83g\83f\81[\83^ [0]:\83X\83e\81[\83^\83X
+               } message;                                                                      // \83\81\83b\83Z\81[\83W\95Ï\8a·\97p\8b¤\97p\91Ì
+
+               // BMP,BGA,BGAPAN \90§\8cä\97p;
+               // (1) nChannel = BGA\83\8c\83C\83\84\83`\83\83\83l\83\8b(04,07,55\81`59,60) \82Ì\8fê\8d\87\81F
+               //   BGAType==BGATYPE_BMP    \82Ì\8fê\8d\87\81ApBMP \82¾\82¯\82ª\97L\8cø\81B\81i\91¼\82R\82Â\82ÍNULL\81j
+               //            BGATYPE_BMPTEX \82Ì\8fê\8d\87\81ApBMPTEX \82¾\82¯\82ª\97L\8cø\81B\81i\91¼\82R\82Â\82ÍNULL\81j
+               //            BGATYPE_BGA    \82Ì\8fê\8d\87\81A(pBMP|pBMPTEX)\82ÆpBGA\82ª\97L\8cø\81B\81i\91¼\82Q\82Â\82ÍNULL\81j
+               //                BGATYPE_BGAPAN \82Ì\8fê\8d\87\81A(pBMP|pBMPTEX)\82ÆpBGAPAN\82ª\97L\8cø\81B\81i\91¼\82Q\82Â\82ÍNULL\81j
+               // (2) nChannel = BGA\83X\83R\81[\83v\89æ\91\9c\90Ø\91Ö\83`\83\83\83\93\83l\83\8b(C4,C7,D5\81`D9,E0) \82Ì\8fê\8d\87\81F
+               //   BGAType==BGATYPE_BMP    \82Ì\8fê\8d\87\81ApBMP \82¾\82¯\82ª\97L\8cø\81B\81i\91¼\82R\82Â\82ÍNULL\81j
+               //            BGATYPE_BMPTEX \82Ì\8fê\8d\87\81ApBMPTEX \82¾\82¯\82ª\97L\8cø\81B\81i\91¼\82R\82Â\82ÍNULL\81j
+               //   BGAType \82ª BGATYPE_BGA|BGAPAN \82Ì\8fê\8d\87\82Í\82 \82è\82¦\82È\82¢\81i\96³\8cø\81j\81B
+               BGAType         BGAtype;                                                //
+               BMP*            pBMP;                                                   //
+               BMPTEX*         pBMPTEX;                                                // 
+               BGA*            pBGA;                                                   //
+               BGAPan*         pBGAPan;                                                //
+
+               // AVI,AVIPAN \90§\8cä\97p\81F
+               // nChannel = AVI\83`\83\83\83l\83\8b(54) \82Ì\8fê\8d\87\81A
+               //   AVIType==AVITYPE_AVI    \82Ì\8fê\8d\87\81ApAVI \82¾\82¯\82ª\97L\8cø\81B\81ipAVIPan\82ÍNULL\81j
+               //            AVITYPE_AVIPAN \82Ì\8fê\8d\87\81ApAVI, pAVIPan \82Ì\97¼\95û\82ª\97L\8cø\81B
+               AVIType         AVItype;                                                //
+               AVI*            pAVI;                                                   //
+               AVIPan*         pAVIPan;                                                //
+
+               // BGAPAN/AVIPAN \90§\8cä\97p
+               double          dbLong;                                                 // \91\8d\88Ú\93®\8e\9e\8aÔ
+
+               // \88È\89º\82Í\89\89\91t\90§\8cä\97p
+               bool    bHit;                                                           // \8f\88\97\9d\8dÏ\82È\82çtrue;
+               bool    bVisible;                                                       // \95s\89Â\8e\8b\82È\82çtrue;
+               long    nDotFromBarD;                                           // \83o\81[\82©\82ç\82Ì\8b\97\97£[dot] \82P\83`\83b\83v\82É\82Â\82«\81A\82±\82Ì\82R\82Â\82ð\91S\95\94\8cv\8eZ\82·\82é\81B
+               long    nDotFromBarG;                                           // \83o\81[\82©\82ç\82Ì\8b\97\97£[dot]
+               long    nDotFromBarB;                                           // \83o\81[\82©\82ç\82Ì\8b\97\97£[dot]
+               int             nType;                                                          // 0:Drum, 1:Guitar, 2:Bass, -1:Other
+
+       public:
+               Chip() {
+                       dwPosition              = 0;
+                       nChannel                = -1;
+                       nParam                  = 0;
+                       nRealParam              = 0;
+                       dbParam                 = 0.0;
+                       prev = next             = NULL;
+                       dbTime                  = 0;
+                       message.dwMsg   = 0;
+                       dbLong                  = 0;
+                       BGAtype                 = BGATYPE_UNKNOWN;
+                       pBMP                    = NULL;
+                       pBMPTEX                 = NULL;
+                       pBGA                    = NULL;
+                       pBGAPan                 = NULL;
+                       AVItype                 = AVITYPE_UNKNOWN;
+                       pAVI                    = NULL;
+                       pAVIPan                 = NULL;
+                       bHit                    = false;
+                       bVisible                = true;
+                       nDotFromBarD    = 500;
+                       nDotFromBarG    = 500;
+                       nDotFromBarB    = 500;
+                       nType                   = -1;
+               }
+       } *pChip, *pChipLast;
+       
+       int             nTotalChipsD[ 10 ];                                     // \91S\83`\83b\83v\90\94\81i\83h\83\89\83\80\81j; AutoPlay \82Ì\83`\83b\83v\82à\8aÜ\82Þ\81i\81¨Auto\82©\94Û\82©\82Ì\83t\83\89\83O\82Í\83A\83v\83\8a\88Ë\91\82Å\82 \82è FDK \82É\82Í\82È\82¢\81j
+       int             nTotalChipsG;                                           // \91S\83`\83b\83v\90\94\81i\83M\83^\81[\81j; \93¯\8fã
+       int             nTotalChipsB;                                           // \91S\83`\83b\83v\90\94\81i\83x\81[\83X\81j; \93¯\8fã
+       bool    bUseDrum;                                                       // \83h\83\89\83\80\83p\81[\83g\82É\83`\83b\83v\82ª\82 \82é\82È\82ç true
+       bool    bUseGuitar;                                                     // \83M\83^\81[\83p\81[\83g\82É\83`\83b\83v\82ª\82 \82é\82È\82ç true
+       bool    bUseBass;                                                       // \83x\81[\83X\83p\81[\83g\82É\83`\83b\83v\82ª\82 \82é\82È\82ç true
+       bool    bUseHHOpen;                                                     // HHOpen \83`\83b\83v\82ª\82 \82é\82È\82ç true
+       bool    bUseRide;                                                       // Ride \83`\83b\83v\82ª\82 \82é\82È\82ç true
+       bool    bUseLeftCymal;                                          // LeftCymbal \83`\83b\83v\82ª\82 \82é\82È\82ç true
+       TCHAR   strHash[33];                                            // \8bÈ\83f\81[\83^\83n\83b\83V\83\85
+
+protected:
+       void                    LoadDTX();                                      // DTX \8c`\8e®\83X\83R\83A\83t\83@\83C\83\8b\82Ì\93Ç\82Ý\8d\9e\82Ý
+       virtual void    LoadMID() {};                           // MIDI \8c`\8e®\83X\83R\83A\83t\83@\83C\83\8b\82Ì\93Ç\82Ý\8d\9e\82Ý\81i\83I\81[\83o\81[\83\89\83C\83h\97p\81j
+
+       // WAV \82Ì\93Ç\82Ý\8d\9e\82Ý
+       // \82±\82±\82Å\82Í m_pSoundManager.CreateCachedSound() \82Ì\82Ý\8eg\97p\82·\82é\81B
+       void    LoadWAV();
+       
+       void    InsertChip( Chip *cell );                       // \88Ê\92u\81idwPosition\81j\82ª\8f¸\8f\87\82É\82È\82é\82æ\82¤\82É\81A\93K\90Ø\82È\8fê\8f\8a\82É Chip \82ð\91}\93ü\82·\82é\81B
+       void    InsertMIDIChip( Chip *cell );           // \88Ê\92u\81idwTime\81j\82ª\8f¸\8f\87\82É\82È\82é\82æ\82¤\82É\81A\93K\90Ø\82È\8fê\8f\8a\82É cell \82ð\91}\93ü\82·\82é\81BMIDI\97p\81B
+       void    InsertLines();                                          // \8f¬\90ß\90ü\81A\94\8f\90ü\82Ì\91}\93ü
+
+       // \83`\83b\83v\82Ì\94­\90º\8e\9e\8d\8f\82Ì\8eZ\8fo\81B
+       // \82±\82±\82Å\82Í\81A\89\89\91t\91¬\93x\81iBPM\82É\8fæ\82\82é\8a\84\8d\87\81j\82Í 1.0 \82Å\8cÅ\92è\82Æ\82µ\81A
+       // \8cã\82Å AdjustChipTimeByPlaySpeed() \82Å\94½\89f\82³\82¹\82é\81B\81iDTX \82Æ MID \82Å\8b¤\92Ê\82Ì\82½\82ß\81j
+       void    CalcChipTime();
+
+       // \91S\83`\83b\83v\82Ì\94­\90º\8e\9e\8d\8f\82ð\81AdbPlaySpeed \82É\82 \82í\82¹\82Ä\8fC\90³\82·\82é\81B
+       // \81@dbSpeed ... \89\89\91t\91¬\93x\81iBPM\82É\8fæ\82\82é\90\94\92l\81G\83f\83t\83H\83\8b\83g1.0\81j
+       void    AdujstChipTimeByPlaySpeed( double dbPlaySpeed=1.0 );
+
+       // \8ew\92è\82³\82ê\82½\83`\83\83\83\93\83l\83\8b nCh \82Ì nParam (zz) \82ª\89½\82ð\8ew\92è\82·\82é\82à\82Ì\82Å\82 \82é\82©\82ð\95Ô\82·\81B
+       // Ret:  \88È\89º\82Ì\83}\83X\83N\82Ì\98_\97\9d\97Ö\82ð\95Ô\82·\81B
+       //       DTXCPT_WAV
+       //       DTXCPT_BPM
+       //       DTXCPT_BPMEX
+       //       DTXCPT_BMP
+       //       DTXCPT_BMPTEX
+       //       DTXCPT_BGA
+       //       DTXCPT_BGAPAN
+       //       DTXCPT_AVI
+       DWORD   GetChipParamType( int nCh );
+
+       void    AdjustWave( DTX::Wave* pWave, double dbStartTime, CSound* pSound );             // Wave \92P\88Ê\82Å\82Ì\8dÄ\90\88Ê\92u\8e©\93®\92²\90®
+
+       void    SkipStartWave( double dbStartTime, Chip* cell );        // \8ew\92èWAVE\82É\82Â\82¢\82Ä dbStartTime \8e\9e\93_\82©\82ç\8dÄ\90\82ð\8aJ\8en\82·\82é\81B
+       void    SkipStartBGA( double dbStartTime, Chip* cell );         // \91S\83`\83b\83v\82ÌBGA\82É\82Â\82¢\82Ä dbStartTime \8e\9e\93_\82©\82ç\8dÄ\90\82ð\8aJ\8en\82·\82é\81B
+
+       // \97D\90æ\8f\87\88Ê\82ð\8c©\82È\82ª\82ç\81A\93K\90Ø\82È m_strResultImage[] \82É\83t\83@\83C\83\8b\96¼\82ð\90Ý\92è\82·\82é\81B
+       // \81@rank ... 0:SS,S,A,B,C,D,E:6
+       void    SetResultImage( int rank, LPCTSTR fname, int arPriority[] );
+       
+       // \97D\90æ\8f\87\88Ê\82ð\8c©\82È\82ª\82ç\81A\93K\90Ø\82È m_strResultMovie[] \82É\83t\83@\83C\83\8b\96¼\82ð\90Ý\92è\82·\82é\81B
+       // \81@rank ... 0:SS,S,A,B,C,D,E:6
+       void    SetResultMovie( int rank, LPCTSTR fname, int arPriority[] );
+
+       // \97D\90æ\8f\87\88Ê\82ð\8c©\82È\82ª\82ç\81A\93K\90Ø\82È m_strResultSound[] \82É\83t\83@\83C\83\8b\96¼\82ð\90Ý\92è\82·\82é\81B
+       // \81@rank ... 0:SS,S,A,B,C,D,E:6
+       void    SetResultSound( int rank, LPCTSTR fname, int arPriority[] );
+
+       // \83R\83}\83\93\83h\95\8e\9a\97ñ\94ä\8ar
+       bool    IsCommand( LPTSTR *p, LPCTSTR cmd );
+
+       // \83R\83}\83\93\83h\83`\83F\83b\83N
+       // (1) \95\8e\9a\97ñ p \82©\82ç\8ew\92è\82³\82ê\82½\83R\83}\83\93\83h\95\8e\9a\97ñ\82ª\91±\82­\82©\94»\92è\81@\81¨\81@\91±\82©\82È\82¢\82È\82ç 0 \82ð\95Ô\82·
+       // (2) \82»\82Ì\8cã\82É [\8bó\94\92][':'][\8bó\94\92\82ª\82 \82ê\82Î\83X\83L\83b\83v\82·\82é
+       // (3) \82»\82Ì\8cã\82É36\90i\90\94\95\8e\9a\97ñ\82Q\83P\83^\82ª\91±\82­\82©\94»\92f\81@\81¨\81@\91±\82©\82È\82¢\82È\82ç -1 \82ð\95Ô\82·
+       // (4) (3)\82Å\8bL\89¯\82µ\82½\92l\82ð\96ß\82è\92l\82Æ\82µ\82Ä\95Ô\82·
+       int             GetCommand( LPTSTR *p, LPCTSTR cmd );
+
+       int             GetZex( LPCTSTR p );                                    // 36\90i\90\94\82Q\83P\83^\82Ì\8eæ\93¾
+       int             GetHex( LPCTSTR p );                                    // 16\90i\90\94\82Q\83P\83^\82Ì\8eæ\93¾
+       int             GetDec( LPCTSTR p );                                    // 10\90i\90\94\81i\96³\8cÀ\8c\85\81j\82Ì\8eæ\93¾
+       int             GetDec3( LPCTSTR p );                                   // 10\90i\90\94\82R\8c\85\82Ì\8eæ\93¾\81i1\8c\85\96Ú\82Í 0\81`Z \82Ü\82Å\91Î\89\9e (2002/11/03)\81j
+       int             GetChannel( LPCTSTR p );                                // \83`\83\83\83\93\83l\83\8b\94Ô\8d\86\82Ì\8eæ\93¾
+
+protected:
+       CSoundManager           soundManager;                           // \83T\83E\83\93\83h\83}\83l\81[\83W\83\83
+       CSurfaceManager         surfaceManager;                         // \83T\81[\83t\83F\83C\83X\83}\83l\81[\83W\83\83
+       CTextureManager         textureManager;                         // \83e\83N\83X\83`\83\83\83}\83l\81[\83W\83\83
+       CTimerEx*                       pTimer;                                         // CTimerEx \82Ö\82Ì\83|\83C\83\93\83^
+       HMIDIOUT                        hMidiOut;                                       // MIDI \8fo\97Í
+       bool                            bWAVCache;                                      // WAV\82ð\83L\83\83\83b\83V\83\85\82·\82é\8fê\8d\87\82Í true
+       bool                            bBMPCache;                                      // BMP\82ð\83L\83\83\83b\83V\83\85\82·\82é\8fê\8d\87\82Í true
+
+private:
+       void    tAVI\83\8a\83X\83g\82Ì\89ð\95ú\82Æ\8f\89\8aú\89»();
+       void    tAVIPAN\83\8a\83X\83g\82Ì\89ð\95ú\82Æ\8f\89\8aú\89»();
+       void    tCHIP\83\8a\83X\83g\82Ì\89ð\95ú\82Æ\8f\89\8aú\89»();
+
+       // \88È\89º\82Í\8dì\8bÆ\97p\95Ï\90\94\81i LoadDTX() \97p\81j
+       int             m_nLine;                                                // \8c»\8dÝ\8f\88\97\9d\92\86\82Ì\8ds\94Ô\8d\86
+       int             m_nResultImagePriority[7];              // #RESULTIMAGE \97\97D\90æ\8f\87\88Ê\83o\83b\83t\83@
+       int             m_nResultMoviePriority[7];              // #RESULTMOVIE \97\97D\90æ\8f\87\88Ê\83o\83b\83t\83@
+       int             m_nResultSoundPriority[7];              // #RESULTSOUND \97\97D\90æ\8f\87\88Ê\83o\83b\83t\83@
+       int             m_nWaveNum[36*36];                              // #WAV \97p\82Ì\8eÀ\94Ô\8d\86\83X\83^\83b\83N
+       int             m_nWaveNumCur;                                  // \8c»\8dÝ\82Ì#WAV \8eÀ\94Ô\8d\86
+       int             m_nWaveVol[36*36];                              // #WAVVOL \97p\83X\83^\83b\83N[36*36]
+       int             m_nWavePan[36*36];                              // #WAVPAN \97p\83X\83^\83b\83N[36*36]
+       int             m_nBPMNum[36*36];                               // #BPM \97p\82Ì\8eÀ\94Ô\8d\86\83X\83^\83b\83N
+       int             m_nBPMNumCur;                                   // \8c»\8dÝ\82Ì#BPM \8eÀ\94Ô\8d\86
+       int             m_nBMPNum[36*36];                               // #BMP \97p\82Ì\8eÀ\94Ô\8d\86\83X\83^\83b\83N
+       int             m_nBMPTEXNum[36*36];                    // #BMPTEX \97p\82Ì\8eÀ\94Ô\8d\86\83X\83^\83b\83N
+       int             m_nBGANum[36*36];                               // #BGA \97p\82Ì\8eÀ\94Ô\8d\86\83X\83^\83b\83N
+       int             m_nBGAPanNum[36*36];                    // #BGAPAN \97p\82Ì\8eÀ\94Ô\8d\86\83X\83^\83b\83N
+       int             m_nBMPNumCur;                                   // \8c»\8dÝ\82Ì#BMP,BMPTEX,BGA,BGAPAN \8eÀ\94Ô\8d\86\81i\82S\82Â\82Å\8b¤\92Ê\81j
+       int             m_nRand;                                                // \8c»\8dÝ\82Ì\97\90\90\94
+       bool    m_bSkip[256];                                   // IF\81`ENDIF\82ð\83X\83L\83b\83v\82·\82é\82È\82ç true\81i\8dÅ\91å255\83l\83X\83g\81j
+       int             m_nSkip;                                                // IF\82Ì\83l\83X\83g\90\94\81ibSkip[] \82Ì\88ø\90\94\92l\81j
+};
+
+       }//General
+}//FDK
+
+using namespace FDK::General;