nnnファイル形式 { char nnnHeaderMessage[16] = "NNN DATA HEADER"; char myname[64]; char memo[256]; int nnnFlag[16]; if (nnnFlag[1] == 1) { int pic128x96[128*96]; } else (nnnFlag[1] == 2) { int pic256x192[256*192]; } CFilmCaseData filmCaseData; CStoryBookData storyBookData; } CFilmCaseData形式 { char filmCaseHeaderMessage[16] = "[FILMCASEDATA] "; int filmCaseFlag[16]; CFilmData filmData[filmNumber]; } filmNumber = filmCaseFlag[0]; CFilmData形式 { char filmHeaderName[16] = "FILMDATA "; char filmName[64]; int filmFlag[16]; if (miniPicFlag) { int miniPic[32*24]; } CKomaData komaData[komaNumber]; } int komaNumber = filmFlag[0]; int createEffectFlag = filmFlag[1]; int miniPicFlag = filmFlag[2]; int filmColor = filmFlag[3]; int filmSpecialTypeTime = filmFlag[4]; int configMask = filmFlag[5]; int taikenLevel = filmFlag[6]; int cutinFlag = filmFlag[7]; CKomaData形式 { char komaHeaderMessage[16] ="-KOMADATA "; int komaFlag1[16]; if (komaFlag2ExistFlag) { int komaFlag2[16]; } int paraKosuu[16]; if (effectVersion >= 3) { int selectParam[16]; } for (int i=0;i<16;i++) { if (effectExistFlag & (1 << i)) { if (effectVersion == 0) { COLDEFFECT effect; } else { EFFECT effect; } } } for (int i=0;i<16;i++) { if (pictureExistFlag & (1 << i)) { if (effectVersion <= 1) { char pictureFileName[16]; } else { char pictureFileName[256]; } } } if (miniPicFlag) { int miniPic[32*24]; } if (largePicFlag) { int largePic[64*48]; } if (veryLargePic) { int veryLargePic[128*96]; } if (komaNameFlag) { char komaName[64]; } if (exMusicFlag) { int exMusicParam[16]; } CMessageData messageData[messageNumber]; } messageNumber = komaFlag1[0]; overrapCount = komaFlag1[1]; overrapType = komaFlag1[2]; windowOffFlag = komaFlag1[3]; setCG = komaFla1g[4]; effectVersion = komaFlag1[5]; bgmNumber = komaFlag1[6]; frameTime = komaFlag1[7]; selectLayer = komaFlag1[8] - 1; selectEffectLayer = komaFlag1[9] - 1; miniPicFlag = komaFlag1[10] & 1; largePicFlag = komaFlag1[10] & 2; veryLargePicFlag = komaFlag1[10] & 4; komaNameFlag = komaFlag1[11]; demoFlag = komaFlag1[12] & 3; exMusicFlag = komaFlag1[13] & 1; komaFlag2ExistFlag = komaFlag1[13] & 2; pictureExistFlag = komaFlag1[14]; effectExistFlag = komaFlag1[15]; if (komaFlag2ExistFlag) { windowNumber = komaFlag2[0]; cursorNumber = komaFlag2[1]; mouseNumber = komaFlag2[2]; autoMessage = komaFlag2[3]; cannotClick = komaFlag2[4]; cannotSkip = komaFlag2[5]; optionOff = komaFlag2[6]; cutin = komaFlag2[7]; preload = komaFlag[8]; } else { windowNumber = 0; cursorNumber = 0; mouseNumber = 0; autoMessage = 0; cannotClick = 0; cannotSkip = 0; optionOff = 0; cutin = 0; preload = 0; } CMessageData形式 { char messageHeadermessage[16] = "--MESSAGEDATA "; int messageFlag1[16]; if (exWork > 0) { int messageFlag2[exWork]; } char messageBuffer[messageSize]; for (int i=0;i<16;i++) { if (voiceFileFlag & (1 << i)) { char voiceFileName[64]; } } if ((version > 0) && (seFileFlag > 1)) { for (int i=1;i<16;i++) { if (seFileFlag & (1 << i)) { int seNumber;//seNumber[i]; } } } for (int i=0;i<16;i++) { if (seFileFlag & (1 << i)) { char seFileName[64]; } } if (voiceControlFlag) { for (int i=0;i<16;i++) { if (voiceControlFlag & (1 << i)) { int voiceControlData[8]; } } } if (seControlFlag) { for (int i=0;i<16;i++) { if (seControlFlag & (1 << i)) { int seControlData[8]; } } } } messageMode = messageFlag[0]; drawCount = messageFlag[1]; voiceCharaNumber = messageFlag[2];; voiceNumber = messageFlag[3]; seNumber[0] = messageFlag[4]; voiceFileFlag = messageFlag[5]; seFileFlag = messageFlag[6]; serialNumber = messageFlag[7]; renameFileFlag = messageFlag[8]; voiceLockFlag = messageFlag[9]; version = messageFlag[10]; messageSize = messageFlag[11]; seControlFlag = messageFlag[12]; voiceControlFlag = messageFlag[13]; messageColor = messageFlag[14]; exWork = messageFlag[15]; canotClickFlag = 0; automessageTime = 0; autoMessageSpeed = 0; expStatus = 0; if (exWork > 0) { canotClickFlag = messageFlag2[0]; } if (exWork > 2) { autoMessageTime = messageFlag2[1]; autoMessageSpeed = messageFlag2[2]; } if (exWork > 3) { expStatus = messageFlag2[3]; } CStoryBookData形式 { char storyBookHeaderMessage[16] = "[STORYBOOKDATA]"; int storyBookFlag[16]; CStoryData storyDaya[storyNumber]; } storyNumber = storyBookFlag[0]; CStoryData形式 { char storyDataHeaderMessage[16] = "STORYDATA "; char storyName[64]; int storyFlag[16]; CCommandData commandData[commandNumber]; } commandNumber = storyFlag[0]; version = storyFlag[1]; CCommandData形式 { char commandHeadermessage[16] = "-COMMANDDATA "; char typeName[16]; int commandFlag[16]; char buffer[bufferSize]; } commandType = commandFlag[0]; //bufferSize = commandFlag[1]; //bufferSizeはcommandTypeで決定するのでこれはダミーである level = commandFlag[2]; para = commandFlag[3]; subNumber = commandFlag[4]; systemCommandType = commandFlag[5]; systemCommandNumber = commandFlag[6]; bgmNumber = commandFlag[7];//dummy? serial = commandFlag[8]; color = commandFlag[9] & 0xffff; backColor = (commandFlag[9] >> 16) & 0xffff; タイプ - バッファーサイズ対応 int CCommandData::m_needBufferSize[]= { 0, //NOP 1024, //IF 1024, //ELSIF 0, //ELSE 256, //CASE 64, //STORY 64, //FILM 64, //BGM-MIDI 64, //BGM-CD 1024, //SYSTEM 4096, //CALCU 0, //RET 0, //NEXT 0, //END 64, //SCRIPT 0, 0, 1024, //while 0, 0, //ENDIF 64, //DEBUG 64, //JUMP 64, //SUBSCRIPT };