home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1997 December / VPR9712A.ISO / Ffilly / SUNDAY1 / Sunday1.tfy < prev   
Text File  |  1997-09-15  |  32KB  |  1,119 lines

  1. // 汎用MIDIカラオケTOFFYシナリオ Version 4.1
  2. // SUNDAY1.tfy
  3.  
  4. //作品情報
  5. #info INAM "今日は素敵な日曜日"
  6. #info GENR "music,lyric,picture"
  7. #info VIDO "640x480 256色以上"
  8. #info COMP "TAMUrA,GAF07007@niftyserve.or.jp"
  9. #info LYRC "TAMUrA,GAF07007@niftyserve.or.jp"
  10. #info GRPC "あんまん,DZD13663@niftyserve.or.jp"
  11. #info MDFY "Ask Me"
  12. #info TRNS "Ask Me"
  13.  
  14. #define COMMAS_S ,,,,,,
  15. #define COMMAS ,,,,,,,,
  16.  
  17. #define MAX 128
  18. //X position of buttons
  19. #define    PLAYBUTTON   112
  20. #define    PAUSEBUTTON  144
  21. #define    STOPBUTTON   176
  22. #define    PLUSBUTTON  264
  23. #define    MINUSBUTTON 376
  24. #define    TEMPORESETBUTTON 408
  25. #define    MESGBUTTON  448
  26. #define    ABOUTBUTTON 480
  27. #define    POSITIONWINDOW 216
  28. #define    TEMPOWINDOW1   296
  29. #define    TEMPOWINDOW2   336
  30.  
  31. int wordchg[];            //歌詞色変え情報格納用
  32.  
  33. //シナリオ本体
  34. main(){
  35.  
  36.     str midifile;            //演奏するMIDI曲ファイル
  37.     int wait[];            //一行の長さを延長するための、延長分の長さ(1/8行分)
  38.     int pic[];            //表示したい画像のID
  39.     str words[];            //歌詞格納用
  40.     int wordchgmode;        //0=通常, 1=滑らか
  41.     int picchg[];            //画像切り換えのタイミングであれば1、なければ0
  42.     int worddif[];            //行の横方向の位置の調整用
  43.     int framepic;            //枠用画像ID
  44.     int writepic, erasepic;        //歌詞表示作業用画像ID
  45.     int temppic;
  46.     int wordmax,wordcnt;        //歌詞行数カウンター用
  47.     int picmax,piccnt;        //画像枚数カウンター用
  48.     int ln;                //文字列の長さ
  49.     int i, j, k;
  50.     int win1;            //ウィンドウのID
  51.     int screen_w, screen_h;        //画面サイズ取得用
  52.     int winX, winY;            //ウィンドウ表示位置設定用
  53.     str title, subtitle;        //題名など表示用
  54.     str artist[];            //作詩作曲者等表示用
  55.     int titlemode;            //0=通常 1=影付き(タイトル)
  56.     int subtitlemode;        //0=通常 1=影付き(サブタイトル)
  57.     int artistmode;            //0=通常 1=影付き(タイトル)
  58.     int wordmode;            //0=通常 1=影付き(歌詞)
  59.     str titlefont;
  60.     str subtitlefont;
  61.     str artistfont;
  62.     str wordfont;
  63.     int titleItalic;        //イタリック体の指定
  64.     int subtitleItalic;
  65.     int artistItalic;
  66.     int wordItalic;
  67.     int titlesize;
  68.     int subtitlesize;
  69.     int titlecolor_R;        //タイトルの色
  70.     int titlecolor_G;
  71.     int titlecolor_B;
  72.     int subtitlecolor_R;        //サブタイトルの色
  73.     int subtitlecolor_G;
  74.     int subtitlecolor_B;
  75.     int artistcolor_R;        //作者情報表示の色
  76.     int artistcolor_G;
  77.     int artistcolor_B;
  78.     int wordcolor_R;        //歌詞の色
  79.     int wordcolor_G;
  80.     int chgcolor_B;
  81.     int chgcolor_R;            //歌詞の色
  82.     int chgcolor_G;
  83.     int wordcolor_B;
  84.     int lineflag;            //歌詞表示位置の切り換え
  85.     int wordcnt2, wordcnt3;
  86.     int x,y;
  87.     int xPos,yPos;
  88.     str msgtxt;
  89.     int BC, BFC, BTCR, BTCG, BTCB;    //ボタンの色
  90.     real tempo, new_tempo, orgtempo;
  91.     real tempo_bias;
  92.     int flag;
  93.     int winmode;
  94.     int tmp;
  95.     int pic_default;
  96.     int nn;
  97.  
  98.     tempo = 0.0;
  99.     orgtempo = 0.0;
  100.     tempo_bias = 1.0;
  101.     flag = 0;
  102.  
  103.  
  104.   //画像を読み込む
  105.     framepic=LoadPic("frame3.bmp");  //枠
  106.     pic_default=1;
  107.     pic[0]=CreatePic(framepic,600,400);
  108.     pic[1]=LoadPic("1.bmp"); //枠内に表示する画像
  109.     pic[2]=LoadPic("2.bmp"); //枠内に表示する画像
  110.     pic[3]=LoadPic("3.bmp"); //枠内に表示する画像
  111.     pic[4]=LoadPic("4.bmp"); //枠内に表示する画像
  112.     pic[5]=LoadPic("1.bmp"); //枠内に表示する画像
  113.     pic[6]=LoadPic("5.bmp"); //枠内に表示する画像
  114.     pic[7]=LoadPic("6.bmp"); //枠内に表示する画像
  115.     pic[8]=LoadPic("1.bmp"); //枠内に表示する画像
  116.     pic[9]=LoadPic("7.bmp"); //枠内に表示する画像
  117.     pic[10]=LoadPic("8.bmp"); //枠内に表示する画像
  118.     pic[11]=LoadPic("end.bmp"); //枠内に表示する画像
  119.     picmax=11;
  120.  
  121.   //演奏するMIDIファイルを設定する
  122.     midifile="sunday1.mid";
  123.  
  124.   //タイトルを設定する
  125.     title="今日は素敵な日曜日";
  126.     subtitle="";
  127.     artist[0]="作曲者:TAMUrA";
  128.     artist[1]="作詞者:TAMUrA";
  129.     artist[2]="作画者:あんまん";
  130.  
  131.   //歌詞を設定する
  132.     words[0]="";
  133.     words[1]="";
  134.     words[2]="";
  135.     words[3]="";
  136.     words[4]="";
  137.     words[5]="ドキドキハートが揺れる今日は素敵な日曜日";
  138.     words[6]="お気に入りの白い靴をはいたら駆け出して行こう";
  139.     words[7]="キラキラ太陽の下 駅であなたを待つの";
  140.     words[8]="遠くに姿を見つけたらハンカチ振って知らせよう";
  141.     words[9]="Please hold me! あなたの瞳";
  142.     words[10]="見つめているだけで 胸を熱い風が過ぎる";
  143.     words[11]="Please hold me and take me to the harbor.";
  144.     words[12]="二人だけの時間 時間をください";
  145.     words[13]="";
  146.     words[14]="";
  147.     words[15]="";
  148.     words[16]="";
  149.     words[17]="ユラユラ光が踊る海に願いかけてみるの";
  150.     words[18]="もっと素直にこの気持ちあなたに伝えられるように";
  151.     words[19]="Please hold me! 夕日が沈む";
  152.     words[20]="二人だけのシルエット ちょっとロマンチックにキメる";
  153.     words[21]="Please hold me and take me to the sky.";
  154.     words[22]="二人だけの世界 世界をください";
  155.     words[23]="";
  156.     words[24]="";
  157.     words[25]="";
  158.     words[26]="";
  159.     words[27]="ああ 遠くを見つめないで そんな寂しい瞳で";
  160.     words[28]="ねえお願い、どんなときだっていつもそばにいて";
  161.     words[29]="Please x 2 hold me tight and take me to the star.";
  162.     words[30]="二人だけの未来 未来が欲しいの";
  163.     words[31]="Please hold me and take me to the Heaven.";
  164.     words[32]="二人だけの世界 神様お願い";
  165.     words[33]="";
  166.     words[34]="";
  167.     words[35]="";
  168.     words[36]="";
  169.     words[37]="";
  170.     wordmax=37;
  171.  
  172.   //歌詞の色替えのタイミングを設定する
  173.     wordchg[651]=2;
  174.     wordchg[653]=2;
  175.     wordchg[655]=2;
  176.     wordchg[657]=2;
  177.     wordchg[662]=2;
  178.     wordchg[667]=2;
  179.     wordchg[672]=2;
  180.     wordchg[676]=2;
  181.     wordchg[678]=2;
  182.     wordchg[692]=2;
  183.     wordchg[694]=2;
  184.     wordchg[702]=2;
  185.     wordchg[704]=2;
  186.     wordchg[706]=2;
  187.     wordchg[710]=2;
  188.     wordchg[717]=2;
  189.     wordchg[724]=2;
  190.     wordchg[726]=2;
  191.     wordchg[735]=2;
  192.     wordchg[742]=2;
  193.     wordchg[743]=-1;
  194.     wordchg[772]=2;
  195.     wordchg[776]=2;
  196.     wordchg[780]=2;
  197.     wordchg[782]=2;
  198.     wordchg[787]=2;
  199.     wordchg[792]=2;
  200.     wordchg[796]=2;
  201.     wordchg[804]=2;
  202.     wordchg[808]=2;
  203.     wordchg[814]=2;
  204.     wordchg[826]=2;
  205.     wordchg[828]=2;
  206.     wordchg[830]=2;
  207.     wordchg[832]=2;
  208.     wordchg[842]=2;
  209.     wordchg[844]=2;
  210.     wordchg[846]=2;
  211.     wordchg[848]=2;
  212.     wordchg[852]=2;
  213.     wordchg[856]=2;
  214.     wordchg[860]=2;
  215.     wordchg[862]=2;
  216.     wordchg[863]=-1;
  217.     wordchg[899]=2;
  218.     wordchg[902]=2;
  219.     wordchg[904]=2;
  220.     wordchg[906]=2;
  221.     wordchg[910]=2;
  222.     wordchg[920]=2;
  223.     wordchg[926]=2;
  224.     wordchg[940]=2;
  225.     wordchg[944]=2;
  226.     wordchg[950]=2;
  227.     wordchg[954]=2;
  228.     wordchg[958]=2;
  229.     wordchg[968]=2;
  230.     wordchg[972]=2;
  231.     wordchg[974]=2;
  232.     wordchg[984]=2;
  233.     wordchg[988]=2;
  234.     wordchg[990]=2;
  235.     wordchg[991]=-1;
  236.     wordchg[1028]=2;
  237.     wordchg[1032]=2;
  238.     wordchg[1034]=2;
  239.     wordchg[1038]=2;
  240.     wordchg[1052]=2;
  241.     wordchg[1060]=2;
  242.     wordchg[1064]=2;
  243.     wordchg[1066]=2;
  244.     wordchg[1070]=2;
  245.     wordchg[1078]=2;
  246.     wordchg[1083]=2;
  247.     wordchg[1084]=2;
  248.     wordchg[1086]=2;
  249.     wordchg[1088]=2;
  250.     wordchg[1098]=2;
  251.     wordchg[1100]=2;
  252.     wordchg[1101]=2;
  253.     wordchg[1103]=2;
  254.     wordchg[1107]=2;
  255.     wordchg[1112]=2;
  256.     wordchg[1115]=2;
  257.     wordchg[1118]=2;
  258.     wordchg[1119]=-1;
  259.     wordchg[1158]=7;
  260.     wordchg[1161]=5;
  261.     wordchg[1167]=4;
  262.     wordchg[1176]=2;
  263.     wordchg[1180]=2;
  264.     wordchg[1182]=2;
  265.     wordchg[1186]=2;
  266.     wordchg[1190]=2;
  267.     wordchg[1191]=-1;
  268.     wordchg[1282]=2;
  269.     wordchg[1284]=2;
  270.     wordchg[1285]=2;
  271.     wordchg[1287]=2;
  272.     wordchg[1290]=2;
  273.     wordchg[1295]=2;
  274.     wordchg[1297]=2;
  275.     wordchg[1300]=2;
  276.     wordchg[1302]=2;
  277.     wordchg[1304]=2;
  278.     wordchg[1308]=2;
  279.     wordchg[1310]=2;
  280.     wordchg[1312]=2;
  281.     wordchg[1316]=2;
  282.     wordchg[1318]=2;
  283.     wordchg[1325]=2;
  284.     wordchg[1328]=2;
  285.     wordchg[1332]=2;
  286.     wordchg[1334]=2;
  287.     wordchg[1335]=-1;
  288.     wordchg[1421]=7;
  289.     wordchg[1425]=5;
  290.     wordchg[1431]=3;
  291.     wordchg[1436]=4;
  292.     wordchg[1440]=5;
  293.     wordchg[1444]=3;
  294.     wordchg[1448]=3;
  295.     wordchg[1452]=4;
  296.     wordchg[1457]=3;
  297.     wordchg[1461]=4;
  298.     wordchg[1462]=-1;
  299.     wordchg[1539]=2;
  300.     wordchg[1541]=2;
  301.     wordchg[1544]=2;
  302.     wordchg[1546]=2;
  303.     wordchg[1550]=2;
  304.     wordchg[1552]=2;
  305.     wordchg[1556]=2;
  306.     wordchg[1560]=2;
  307.     wordchg[1564]=2;
  308.     wordchg[1566]=2;
  309.     wordchg[1571]=2;
  310.     wordchg[1574]=2;
  311.     wordchg[1576]=2;
  312.     wordchg[1580]=2;
  313.     wordchg[1582]=2;
  314.     wordchg[1583]=-1;
  315.     wordchg[2187]=2;
  316.     wordchg[2189]=2;
  317.     wordchg[2190]=2;
  318.     wordchg[2193]=2;
  319.     wordchg[2197]=2;
  320.     wordchg[2210]=2;
  321.     wordchg[2213]=2;
  322.     wordchg[2230]=2;
  323.     wordchg[2236]=2;
  324.     wordchg[2241]=2;
  325.     wordchg[2245]=2;
  326.     wordchg[2255]=2;
  327.     wordchg[2259]=2;
  328.     wordchg[2262]=2;
  329.     wordchg[2268]=2;
  330.     wordchg[2271]=2;
  331.     wordchg[2275]=2;
  332.     wordchg[2277]=2;
  333.     wordchg[2278]=-1;
  334.     wordchg[2309]=2;
  335.     wordchg[2312]=2;
  336.     wordchg[2315]=2;
  337.     wordchg[2319]=2;
  338.     wordchg[2325]=2;
  339.     wordchg[2332]=2;
  340.     wordchg[2340]=2;
  341.     wordchg[2344]=2;
  342.     wordchg[2346]=2;
  343.     wordchg[2350]=2;
  344.     wordchg[2358]=2;
  345.     wordchg[2362]=2;
  346.     wordchg[2364]=2;
  347.     wordchg[2366]=2;
  348.     wordchg[2368]=2;
  349.     wordchg[2379]=2;
  350.     wordchg[2382]=2;
  351.     wordchg[2384]=2;
  352.     wordchg[2388]=2;
  353.     wordchg[2392]=2;
  354.     wordchg[2396]=2;
  355.     wordchg[2397]=2;
  356.     wordchg[2399]=2;
  357.     wordchg[2400]=-1;
  358.     wordchg[2436]=7;
  359.     wordchg[2440]=5;
  360.     wordchg[2446]=4;
  361.     wordchg[2455]=2;
  362.     wordchg[2462]=2;
  363.     wordchg[2466]=2;
  364.     wordchg[2469]=2;
  365.     wordchg[2475]=2;
  366.     wordchg[2476]=-1;
  367.     wordchg[2562]=2;
  368.     wordchg[2565]=2;
  369.     wordchg[2567]=2;
  370.     wordchg[2570]=2;
  371.     wordchg[2574]=2;
  372.     wordchg[2577]=2;
  373.     wordchg[2580]=2;
  374.     wordchg[2582]=7;
  375.     wordchg[2588]=6;
  376.     wordchg[2590]=2;
  377.     wordchg[2592]=2;
  378.     wordchg[2594]=2;
  379.     wordchg[2596]=2;
  380.     wordchg[2598]=4;
  381.     wordchg[2602]=2;
  382.     wordchg[2606]=2;
  383.     wordchg[2609]=2;
  384.     wordchg[2613]=2;
  385.     wordchg[2615]=2;
  386.     wordchg[2616]=-1;
  387.     wordchg[2696]=7;
  388.     wordchg[2700]=5;
  389.     wordchg[2706]=3;
  390.     wordchg[2712]=4;
  391.     wordchg[2716]=5;
  392.     wordchg[2719]=3;
  393.     wordchg[2723]=3;
  394.     wordchg[2727]=4;
  395.     wordchg[2731]=4;
  396.     wordchg[2732]=-1;
  397.     wordchg[2818]=2;
  398.     wordchg[2820]=2;
  399.     wordchg[2823]=2;
  400.     wordchg[2826]=2;
  401.     wordchg[2830]=2;
  402.     wordchg[2832]=2;
  403.     wordchg[2836]=2;
  404.     wordchg[2838]=2;
  405.     wordchg[2844]=2;
  406.     wordchg[2846]=2;
  407.     wordchg[2851]=2;
  408.     wordchg[2855]=2;
  409.     wordchg[2856]=2;
  410.     wordchg[2860]=2;
  411.     wordchg[2862]=2;
  412.     wordchg[2863]=-1;
  413.     wordchg[3464]=2;
  414.     wordchg[3468]=2;
  415.     wordchg[3471]=1;
  416.     wordchg[3479]=2;
  417.     wordchg[3482]=2;
  418.     wordchg[3484]=2;
  419.     wordchg[3488]=2;
  420.     wordchg[3492]=2;
  421.     wordchg[3494]=2;
  422.     wordchg[3504]=2;
  423.     wordchg[3508]=2;
  424.     wordchg[3510]=2;
  425.     wordchg[3513]=2;
  426.     wordchg[3532]=2;
  427.     wordchg[3536]=2;
  428.     wordchg[3539]=2;
  429.     wordchg[3542]=2;
  430.     wordchg[3547]=2;
  431.     wordchg[3549]=2;
  432.     wordchg[3552]=2;
  433.     wordchg[3558]=2;
  434.     wordchg[3559]=-1;
  435.     wordchg[3604]=2;
  436.     wordchg[3606]=2;
  437.     wordchg[3608]=2;
  438.     wordchg[3611]=2;
  439.     wordchg[3622]=4;
  440.     wordchg[3636]=2;
  441.     wordchg[3640]=2;
  442.     wordchg[3642]=2;
  443.     wordchg[3646]=2;
  444.     wordchg[3648]=2;
  445.     wordchg[3652]=2;
  446.     wordchg[3656]=2;
  447.     wordchg[3660]=2;
  448.     wordchg[3667]=2;
  449.     wordchg[3672]=2;
  450.     wordchg[3674]=2;
  451.     wordchg[3678]=2;
  452.     wordchg[3683]=2;
  453.     wordchg[3687]=2;
  454.     wordchg[3690]=2;
  455.     wordchg[3694]=2;
  456.     wordchg[3695]=-1;
  457.     wordchg[3712]=6;
  458.     wordchg[3716]=4;
  459.     wordchg[3720]=5;
  460.     wordchg[3724]=3;
  461.     wordchg[3730]=6;
  462.     wordchg[3736]=4;
  463.     wordchg[3740]=5;
  464.     wordchg[3744]=3;
  465.     wordchg[3748]=3;
  466.     wordchg[3752]=4;
  467.     wordchg[3756]=6;
  468.     wordchg[3757]=-1;
  469.     wordchg[3841]=2;
  470.     wordchg[3844]=2;
  471.     wordchg[3846]=2;
  472.     wordchg[3850]=2;
  473.     wordchg[3854]=2;
  474.     wordchg[3856]=2;
  475.     wordchg[3859]=2;
  476.     wordchg[3862]=2;
  477.     wordchg[3868]=2;
  478.     wordchg[3870]=2;
  479.     wordchg[3875]=2;
  480.     wordchg[3878]=2;
  481.     wordchg[3880]=2;
  482.     wordchg[3883]=2;
  483.     wordchg[3885]=2;
  484.     wordchg[3886]=-1;
  485.     wordchg[3972]=6;
  486.     wordchg[3976]=5;
  487.     wordchg[3982]=3;
  488.     wordchg[3988]=4;
  489.     wordchg[3992]=5;
  490.     wordchg[3996]=3;
  491.     wordchg[4000]=3;
  492.     wordchg[4004]=4;
  493.     wordchg[4008]=8;
  494.     wordchg[4009]=-1;
  495.     wordchg[4096]=2;
  496.     wordchg[4099]=2;
  497.     wordchg[4102]=2;
  498.     wordchg[4105]=2;
  499.     wordchg[4110]=2;
  500.     wordchg[4112]=2;
  501.     wordchg[4115]=2;
  502.     wordchg[4121]=2;
  503.     wordchg[4125]=2;
  504.     wordchg[4128]=2;
  505.     wordchg[4134]=2;
  506.     wordchg[4137]=2;
  507.     wordchg[4141]=2;
  508.     wordchg[4142]=-1;
  509.  
  510.   //画像の切り換えのタイミングを設定する
  511.     picchg[0]=1;
  512.     picchg[1]=40;
  513.     picchg[2]=0;
  514.     picchg[3]=0;
  515.     picchg[4]=0;
  516.     picchg[5]=22;
  517.     picchg[6]=0;
  518.     picchg[7]=1;
  519.     picchg[8]=0;
  520.     picchg[9]=1;
  521.     picchg[10]=0;
  522.     picchg[11]=0;
  523.     picchg[12]=0;
  524.     picchg[13]=-40;
  525.     picchg[14]=0;
  526.     picchg[15]=0;
  527.     picchg[16]=0;
  528.     picchg[17]=22;
  529.     picchg[18]=0;
  530.     picchg[19]=1;
  531.     picchg[20]=0;
  532.     picchg[21]=0;
  533.     picchg[22]=0;
  534.     picchg[23]=-40;
  535.     picchg[24]=0;
  536.     picchg[25]=0;
  537.     picchg[26]=0;
  538.     picchg[27]=22;
  539.     picchg[28]=0;
  540.     picchg[29]=1;
  541.     picchg[30]=0;
  542.     picchg[31]=0;
  543.     picchg[32]=0;
  544.     picchg[33]=0;
  545.     picchg[34]=0;
  546.     picchg[35]=0;
  547.     picchg[36]=-12;
  548.     picchg[37]=0;
  549.  
  550.   //タイミング調整の長さを設定する
  551.     wait[0]=-2;
  552.     wait[1]=0;
  553.     wait[2]=0;
  554.     wait[3]=0;
  555.     wait[4]=-1;
  556.     wait[5]=9;
  557.     wait[6]=8;
  558.     wait[7]=8;
  559.     wait[8]=7;
  560.     wait[9]=-1;
  561.     wait[10]=0;
  562.     wait[11]=0;
  563.     wait[12]=2;
  564.     wait[13]=-4;
  565.     wait[14]=4;
  566.     wait[15]=0;
  567.     wait[16]=-1;
  568.     wait[17]=9;
  569.     wait[18]=7;
  570.     wait[19]=-1;
  571.     wait[20]=0;
  572.     wait[21]=0;
  573.     wait[22]=2;
  574.     wait[23]=-4;
  575.     wait[24]=4;
  576.     wait[25]=0;
  577.     wait[26]=-1;
  578.     wait[27]=7;
  579.     wait[28]=12;
  580.     wait[29]=0;
  581.     wait[30]=1;
  582.     wait[31]=-1;
  583.     wait[32]=0;
  584.     wait[33]=-4;
  585.     wait[34]=4;
  586.     wait[35]=20;
  587.     wait[36]=0;
  588.     wait[37]=0;
  589.  
  590.   //タイトル・歌詞の表示属性を設定する
  591.     titlemode=1;
  592.     subtitlemode=0;
  593.     artistmode=1;
  594.     wordmode=1;
  595.     titleItalic=1;
  596.     subtitleItalic=0;
  597.     artistItalic=1;
  598.     wordItalic=0;
  599.     titlefont="MS ゴシック";
  600.     subtitlefont="MS ゴシック";
  601.     artistfont="MS ゴシック";
  602.     wordfont="MS ゴシック";
  603.     titlecolor_R=255;
  604.     titlecolor_G=0;
  605.     titlecolor_B=255;
  606.     subtitlecolor_R=128;
  607.     subtitlecolor_G=128;
  608.     subtitlecolor_B=128;
  609.     artistcolor_R=255;
  610.     artistcolor_G=255;
  611.     artistcolor_B=0;
  612.     wordcolor_R=0;
  613.     wordcolor_G=128;
  614.     wordcolor_B=0;
  615.     chgcolor_R=0;
  616.     chgcolor_G=255;
  617.     chgcolor_B=0;
  618.  
  619.   //歌詞の色替えのモードを設定する
  620.     wordchgmode=1;
  621.     msgtxt="今日が素敵な日(?)曜日になりますように!";
  622.     winmode=1;
  623.     //歌詞の表示位置の調整
  624.     for (i=0; i<=wordmax; i=i+1){
  625.         ln = StrLen(words[i]);
  626.         worddif[i] = (50 - ln) / 2 - 1;
  627.     }
  628.     //タイトルのフォントサイズの調整
  629.     ln = StrLen(title);
  630.     if (ln > 15) {
  631.         titlesize = 36;
  632.     } else {
  633.         titlesize = 48;
  634.     }
  635.     ln = StrLen(subtitle);
  636.     if (ln > 40) {
  637.         subtitlesize = 16;
  638.     } else {
  639.         subtitlesize = 24;
  640.     }
  641.  
  642.     //変数の初期化
  643.     wordcnt = 0;
  644.     piccnt = 0;
  645.  
  646.     //最初の画像が無指定の場合に黒一色にする処理
  647.     if (pic_default == 1){
  648.         MovePic(framepic,20,20,600,400,pic[piccnt],0,0);
  649.     }
  650.  
  651.     //タイトルを書く
  652.     BackMode(1);
  653.     for (i=0; i<=picmax; i=i+1){
  654.                 SetFont(titlesize,titlefont,128, 0, 0, 0,  800, titleItalic);
  655.         TextWriteX(title, pic[i], 32, 64-titlesize,titlemode,titlecolor_R,titlecolor_G,titlecolor_B,2);
  656.         SetFont(subtitlesize,subtitlefont,128, 0, 0, 0, 800, subtitleItalic);
  657.         TextWriteX(subtitle, pic[i], 80, 70,subtitlemode,subtitlecolor_R,subtitlecolor_G,subtitlecolor_B,2);
  658.         SetFont(16,artistfont,128, 0, 0, 0, 600, artistItalic);
  659.         for (j=0; j<3; j=j+1){
  660.             TextWriteX(artist[j], pic[i], 400, 16+j*18,artistmode,artistcolor_R,artistcolor_G,artistcolor_B,1);
  661.         }
  662.     }
  663.  
  664.     //ウィンドウ表示の準備
  665.     screen_w= WinInfo(0);
  666.     screen_h= WinInfo(1);
  667.     winX= (screen_w-640)/2;
  668.     winY= (screen_h-480)/2;
  669.     writepic=CreatePic(pic[piccnt],600,60);
  670.     erasepic=CreatePic(pic[piccnt],600,60);
  671.     temppic=CreatePic(pic[piccnt],600,400);
  672.  
  673.     MovePic(pic[piccnt],0,330,600,60,writepic,0,0);
  674.     MovePic(pic[piccnt],0,330,600,60,erasepic,0,0);
  675.     MovePic(pic[piccnt],0,0,600,400,temppic,0,0);
  676.  
  677.     SetFont(14,"Ariel",0, 0, 0, 0, 400);
  678.     SetPaintColor(0xC0C0C0);
  679.     TextColor(0,0,0);
  680.     TextWrite(RealtoStr("ラ%.2lf",tempo_bias),framepic,TEMPOWINDOW2+4,452);
  681.     TextWrite(StrPrint("%ld/%ld",wordcnt,wordmax),framepic,POSITIONWINDOW+4,452);
  682.  
  683.     mes (RBDOWN){    //右クリックで終了しないようにする
  684.     }
  685.     mes (LBUP){
  686.         if (winmode == 0) {
  687.             xPos = MesP2;
  688.             yPos = MesP3;
  689.         } else {
  690.             i = GetCurPos( );
  691.             xPos = GetLowWord(i)-(screen_w-640)/2;
  692.             yPos = GetHiWord(i)-(screen_h-480)/2;
  693.         }
  694.         if (PLAYBUTTON <= xPos && xPos < PLAYBUTTON+32 && 435 <= yPos && yPos <= 465){
  695.             MCI("Play song");   //一時停止中のMIDIの演奏再開
  696.         } else if (PAUSEBUTTON <= xPos && xPos < PAUSEBUTTON+32 && 435 <= yPos && yPos <= 465){
  697.             MCI("Pause song");  //演奏中のMIDIの一時停止
  698.         } else if (PLUSBUTTON <= xPos && xPos < PLUSBUTTON+32 && 435 <= yPos && yPos <= 465){
  699.             if (flag == 0){
  700.                 if (tempo_bias < 3.0){    //テンポを速くする
  701.                     flag = 1;
  702.                     tempo_bias = tempo_bias + 0.05;
  703.                     MCI(RealtoStr("set song tempo %.0lf", orgtempo * tempo_bias));    //テンポを設定する
  704.                     tempo = StrtoReal(StrMCI("status song tempo"));    //テンポを調べる
  705.                     DrawRect(framepic,TEMPOWINDOW1+2,452,TEMPOWINDOW1+38,464,0,0);
  706.                     DrawRect(framepic,TEMPOWINDOW2+2,452,TEMPOWINDOW2+38,464,0,0);
  707.                     TextColor(0,0,0);
  708.                     SetFont(14,"Ariel",0, 0, 0, 0, 400);
  709.                     TextWrite(RealtoStr("%.0lf",tempo),framepic,TEMPOWINDOW1+4,452);
  710.                     TextWrite(RealtoStr("ラ%.2lf",tempo_bias),framepic,TEMPOWINDOW2+4,452);
  711.                     SetFont(24,wordfont,128, 0, 0, 0, 400, wordItalic,0,0,0,0,0,1,0);
  712.                     flag = 0;
  713.                 }
  714.             }
  715.         } else if (MINUSBUTTON <= xPos && xPos < MINUSBUTTON+32 && 435 <= yPos && yPos <= 465){
  716.             if (flag == 0){
  717.                 if (tempo_bias > 0.5){    //テンポを遅くする
  718.                     flag = 1;
  719.                     tempo_bias = tempo_bias - 0.05;
  720.                     MCI(RealtoStr("set song tempo %.0lf", orgtempo * tempo_bias));    //テンポを設定する
  721.                     tempo = StrtoReal(StrMCI("status song tempo"));    //テンポを調べる
  722.                     DrawRect(framepic,TEMPOWINDOW1+2,452,TEMPOWINDOW1+38,464,0,0);
  723.                     DrawRect(framepic,TEMPOWINDOW2+2,452,TEMPOWINDOW2+38,464,0,0);
  724.                     TextColor(0,0,0);
  725.                     SetFont(14,"Ariel",0, 0, 0, 0, 400);
  726.                     TextWrite(RealtoStr("%.0lf",tempo),framepic,TEMPOWINDOW1+4,452);
  727.                     TextWrite(RealtoStr("ラ%.2lf",tempo_bias),framepic,TEMPOWINDOW2+4,452);
  728.                     SetFont(24,wordfont,128, 0, 0, 0, 400, wordItalic,0,0,0,0,0,1,0);
  729.                     flag = 0;
  730.                 }
  731.             }
  732.         } else if (TEMPORESETBUTTON <= xPos && xPos < TEMPORESETBUTTON+32 && 435 <= yPos && yPos <= 465){
  733.             //テンポリセット
  734.             if (flag == 0){
  735.                 flag = 1;
  736.                 tempo_bias = 1.0;
  737.                 MCI(RealtoStr("set song tempo %.0lf", orgtempo * tempo_bias));    //テンポを設定する
  738.                 tempo = StrtoReal(StrMCI("status song tempo"));    //テンポを調べる
  739.                 DrawRect(framepic,TEMPOWINDOW1+2,452,TEMPOWINDOW1+38,464,0,0);
  740.                 DrawRect(framepic,TEMPOWINDOW2+2,452,TEMPOWINDOW2+38,464,0,0);
  741.                 TextColor(0,0,0);
  742.                 SetFont(14,"Ariel",0, 0, 0, 0, 400);
  743.                 TextWrite(RealtoStr("%.0lf",tempo),framepic,TEMPOWINDOW1+4,452);
  744.                 TextWrite(RealtoStr("ラ%.2lf",tempo_bias),framepic,TEMPOWINDOW2+4,452);
  745.                 SetFont(24,wordfont,128, 0, 0, 0, 400, wordItalic,0,0,0,0,0,1,0);
  746.                 flag = 0;
  747.                 }
  748.         } else if (MESGBUTTON <= xPos && xPos < MESGBUTTON+32 && 435 <= yPos && yPos <= 465){
  749.             //メッセージを表示
  750.             MCI("Pause song");  //演奏中のMIDIの一時停止
  751.             MsgBox(msgtxt, 0x40);
  752.             MCI("Play song");   //一時停止中のMIDIの演奏再開
  753.         } else if (STOPBUTTON <= xPos && xPos < STOPBUTTON+32 && 435 <= yPos && yPos <= 465){
  754.             ExitTitle();  //作品を終了
  755.         } else if (ABOUTBUTTON <= xPos && xPos < ABOUTBUTTON+32 && 435 <= yPos && yPos <= 465){
  756.             //バージョン表示
  757.             MCI("Pause song");  //演奏中のMIDIの一時停止
  758.             MsgBox("Made by KARAYAN Version 4.1", 0x40);
  759.             MCI("Play song");   //一時停止中のMIDIの演奏再開
  760.         }
  761.     }
  762.  
  763.     //初回の歌詞を書く
  764.     SetFont(24,wordfont,128, 0, 0, 0, 400, wordItalic,0,0,0,0,0,1,0);
  765.     TextWriteX(words[wordcnt],temppic,16+worddif[wordcnt]*12,330,wordmode,wordcolor_R,wordcolor_G,wordcolor_B,2);
  766.     TextWriteX(words[wordcnt+1],temppic,16+worddif[wordcnt+1]*12,360,wordmode,wordcolor_R,wordcolor_G,wordcolor_B,2);
  767.     TextWriteX(words[wordcnt],writepic,16+worddif[wordcnt]*12,0,wordmode,chgcolor_R,chgcolor_G,chgcolor_B,2);
  768.     TextWriteX(words[wordcnt+1],writepic,16+worddif[wordcnt+1]*12,30,wordmode,chgcolor_R,chgcolor_G,chgcolor_B,2);
  769.  
  770.     //ウィンドウを表示する
  771.     if (picchg[0] == 0 || picchg[0] == 1){
  772.         MovePic(temppic,0,0,600,400,framepic,20,20);
  773.     }else{
  774.         MovePicX(temppic,0,0,600,400,framepic,20,20,picchg[0]);
  775.     }
  776.     if (piccnt < picmax) {    //画像が無くなるまで加算する
  777.         piccnt = piccnt+1;
  778.     }
  779.     if (winmode == 0){
  780.         CapTitle(title);
  781.         win1 = OpenWin(framepic, winX, winY, 640, 480, 0, 0, 0x000000);
  782.     }else{
  783.         CapTitle("");
  784.         win1 = OpenWin(framepic, 0, 0, screen_w, screen_h, 0-winX, 0-winY, 0x000000);
  785.     }
  786.  
  787.     mes(MIDI_END){     // 演奏終了処理
  788.         j=0;
  789.         mes(TIME){
  790.             j=j+1;
  791.             // 終了画面保持(2秒)
  792.             if(j>20*2){
  793.                 CloseWinAll();
  794.                 DelPic(framepic);
  795.                 DelPic(writepic);
  796.                 DelPic(erasepic);
  797.                 DelPic(temppic);
  798.                 for (i=0;i<=picmax;i=i+1){
  799.                     DelPic(pic[i]);
  800.                 }
  801.                 del_all;
  802.                 del_me;  // for mes(TIME)
  803.             }
  804.         }
  805.         del_me;  // for mes(MIDI_END)
  806.     }
  807.  
  808.     //lineflag初期値設定
  809.     //  0: 最初の歌詞の段階
  810.     //  1: 1行目の歌詞を歌っている状態
  811.     //  2: 2行目の歌詞を歌っている状態
  812.     lineflag = 1;
  813.     if (words[0] != ""){
  814.         //1行目から歌詞がある場合は、lineflagを0にする
  815.         lineflag = 0;
  816.     }
  817.  
  818.     // 歌詞表示実行
  819.     mes (MIDI_TIME) { step (1) {
  820.         TextChange(wordcnt,writepic,framepic,wordchgmode,lineflag, worddif[wordcnt]);    //歌詞の色替え開始
  821.         //次に使うwords[]の配列番号をwordcnt2,3に入れる
  822.         if (wordcnt < wordmax){
  823.             wordcnt2 = wordcnt + 1;
  824.         }else{
  825.             wordcnt2 = wordmax;
  826.         }
  827.         if (wordcnt2 < wordmax){
  828.             wordcnt3 = wordcnt2 + 1;
  829.         }else{
  830.             wordcnt3 = wordmax;
  831.         }
  832.         //次の歌詞の表示位置設定
  833.         if (lineflag == 1){
  834.             x = 16;
  835.             y = 30;
  836.         }else if (lineflag == 2){
  837.             x = 16;
  838.             y = 0;
  839.         }
  840.  
  841.         nn = wait[wordcnt];
  842.  
  843.         if (nn == -1){
  844.             goto J1;
  845.         }else if (nn == -2){
  846.             goto J2;
  847.         }else if (nn == -3){
  848.             goto J3;
  849.         }else if (nn == -4){
  850.             if (lineflag != 0){
  851.                 MovePic(erasepic,0,y,600,30,framepic,20,y+350,12,4);
  852.                 MovePic(erasepic,0,y,600,30,writepic,0,y);
  853.             }
  854.             goto J4;
  855.         }
  856. LP:;
  857.     COMMAS
  858.         if (nn > 0){
  859.             nn = nn - 1;
  860.             goto LP;
  861.         }
  862. J1:;
  863.     COMMAS
  864. J2:;
  865.     COMMAS
  866. J3:;
  867.         //前の歌詞を消す
  868.         if (lineflag != 0){
  869.             MovePic(erasepic,0,y,600,30,framepic,20,y+350,12,4);
  870.             MovePic(erasepic,0,y,600,30,writepic,0,y);
  871.         }
  872.     COMMAS
  873. J4:;
  874.     COMMAS
  875.         //次の歌詞を書く
  876.         // (初回は更に次の歌詞が表示されているので書き換えない)
  877.         if (lineflag != 0){
  878.             if (words[wordcnt] == "" && words[wordcnt2] != "") {
  879.                 //次から歌詞が始まる場合
  880.                 TextWriteX(words[wordcnt2],framepic,36+worddif[wordcnt2]*12,350,wordmode,wordcolor_R,wordcolor_G,wordcolor_B,2);
  881.                 TextWriteX(words[wordcnt3],framepic,36+worddif[wordcnt3]*12,380,wordmode,wordcolor_R,wordcolor_G,wordcolor_B,2);
  882.                 TextWriteX(words[wordcnt2],writepic,16+worddif[wordcnt2]*12,0,wordmode,chgcolor_R,chgcolor_G,chgcolor_B,2);
  883.                 TextWriteX(words[wordcnt3],writepic,16+worddif[wordcnt3]*12,30,wordmode,chgcolor_R,chgcolor_G,chgcolor_B,2);
  884.             }else{
  885.                 TextWriteX(words[wordcnt2],framepic,x+20+worddif[wordcnt2]*12,y+350,wordmode,wordcolor_R,wordcolor_G,wordcolor_B,2);
  886.                 TextWriteX(words[wordcnt2],writepic,x+worddif[wordcnt2]*12,y,wordmode,chgcolor_R,chgcolor_G,chgcolor_B,2);
  887.             }
  888.         }
  889.     COMMAS
  890.     COMMAS_S
  891.     COMMAS_S
  892.         //次の画像切り替えの準備
  893.         if (picchg[wordcnt2] != 0) {
  894.             MovePic(pic[piccnt],0,330,600,60,writepic,0,0);
  895.             MovePic(pic[piccnt],0,330,600,60,erasepic,0,0);
  896.             MovePic(pic[piccnt],0,0,600,400,temppic,0,0);
  897.         }
  898.         ,,
  899.         //歌詞の再描画
  900.         if (picchg[wordcnt2] != 0) {
  901.             if (words[wordcnt] == "" && words[wordcnt2] != "") {
  902.             //次が初回の歌詞表示の場合、次とその次の2行を新規に表示する
  903.                 TextWriteX(words[wordcnt2],temppic,16+worddif[wordcnt2]*12,330,wordmode,wordcolor_R,wordcolor_G,wordcolor_B,2);
  904.                 TextWriteX(words[wordcnt3],temppic,16+worddif[wordcnt3]*12,360,wordmode,wordcolor_R,wordcolor_G,wordcolor_B,2);
  905.                 TextWriteX(words[wordcnt2],writepic,16+worddif[wordcnt2]*12,0,wordmode,chgcolor_R,chgcolor_G,chgcolor_B,2);
  906.                 TextWriteX(words[wordcnt3],writepic,16+worddif[wordcnt3]*12,30,wordmode,chgcolor_R,chgcolor_G,chgcolor_B,2);
  907.             } else { //初回表示以外は、現在の行を残して次の行を表示する
  908.                 if (lineflag == 0 || lineflag == 1) {
  909.                     TextWriteX(words[wordcnt2],temppic,16+worddif[wordcnt2]*12,360,wordmode,wordcolor_R,wordcolor_G,wordcolor_B,2);
  910.                     TextWriteX(words[wordcnt],temppic,16+worddif[wordcnt]*12,330,wordmode,chgcolor_R,chgcolor_G,chgcolor_B,2);
  911.                     TextWriteX(words[wordcnt2],writepic,16+worddif[wordcnt2]*12,30,wordmode,chgcolor_R,chgcolor_G,chgcolor_B,2);
  912.                 } else {
  913.                     TextWriteX(words[wordcnt2],temppic,16+worddif[wordcnt2]*12,330,wordmode,wordcolor_R,wordcolor_G,wordcolor_B,2);
  914.                     TextWriteX(words[wordcnt],temppic,16+worddif[wordcnt]*12,360,wordmode,chgcolor_R,chgcolor_G,chgcolor_B,2);
  915.                     TextWriteX(words[wordcnt2],writepic,16+worddif[wordcnt2]*12,0,wordmode,chgcolor_R,chgcolor_G,chgcolor_B,2);
  916.                 }
  917.             }
  918.         }
  919.         ,
  920.         //次の歌詞の表示位置へフラグを切り換える
  921.         if (lineflag == 1){
  922.             lineflag=2;
  923.         }else if (lineflag == 2){
  924.             lineflag = 1;
  925.         }
  926.         //今回が初回の歌詞表示だった場合
  927.         if (lineflag == 0){
  928.             lineflag = 2;
  929.         }
  930.         //次が初回の歌詞表示の場合
  931.         if (words[wordcnt] == "" && words[wordcnt2] != ""){
  932.             lineflag = 0;
  933.         }
  934.         //画像を切り換える(歌詞付)
  935.         if (picchg[wordcnt2] != 0) {
  936.             if (picchg[wordcnt2] == 1){
  937.                 MovePic(temppic,0,0,600,400,framepic,20,20);
  938.             }else{
  939.                 MovePicX(temppic,0,0,600,400,framepic,20,20,picchg[wordcnt2]);
  940.             }
  941.             if (piccnt < picmax) {    //画像が無くなるまで加算する
  942.                 piccnt = piccnt+1;
  943.             }
  944.         }
  945.         //wordcntを加算する
  946.         wordcnt = wordcnt2;
  947.         DrawRect(framepic,POSITIONWINDOW+2,452,POSITIONWINDOW+38,464,0,0);
  948.         TextColor(0,0,0);
  949.         SetFont(14,"Ariel",0, 0, 0, 0, 400);
  950.         TextWrite(StrPrint("%ld/%ld",wordcnt,wordmax),framepic,POSITIONWINDOW+4,452);
  951.         SetFont(24,wordfont,128, 0, 0, 0, 400, wordItalic,0,0,0,0,0,1,0);
  952.     }}
  953.     PlayMIDI(midifile);
  954.  
  955.     mes (MIDI_TIME) {
  956.         if (flag == 0){
  957.             flag = 1;
  958.             new_tempo = StrtoReal(StrMCI("status song tempo"));    //テンポを調べる
  959.             if (new_tempo != tempo){        //テンポが変更されている場合
  960.                 orgtempo = new_tempo;        //基本のテンポを更新
  961.                 if (tempo_bias != 1.0) {    //基本のテンポを元にテンポを変更
  962.                     MCI(RealtoStr("set song tempo %.0lf", orgtempo * tempo_bias));
  963.                 }
  964.                 tempo = StrtoReal(StrMCI("status song tempo"));    //テンポを調べる
  965.                 DrawRect(framepic,TEMPOWINDOW1+2,452,TEMPOWINDOW1+38,464,0,0);
  966.                 TextColor(0,0,0);
  967.                 SetFont(14,"Ariel",0, 0, 0, 0, 400);
  968.                 TextWrite(RealtoStr("%.0lf",tempo),framepic,TEMPOWINDOW1+4,452);
  969.                 SetFont(24,wordfont,128, 0, 0, 0, 400, wordItalic,0,0,0,0,0,1,0);
  970.             }
  971.             flag = 0;
  972.         }
  973.     }
  974.  
  975. }
  976.  
  977. //テキスト表示
  978. TextWriteX(str word, int pic, int X, int Y, int wordmode, int R, int G, int B, int dif) {
  979.     if (wordmode == 1){
  980.         TextColor(R/2,G/2,B/2);
  981.         TextWrite(word, pic, X+dif, Y+dif);
  982.     }
  983.     TextColor(R,G,B);
  984.     TextWrite(word, pic, X, Y);
  985. }
  986.  
  987. //歌詞一行分の色替え
  988. TextChange(int wordcnt, int writepic, int framepic, int wordchgmode, int lineflag, int worddif){
  989.     int n;
  990.     int charcnt;
  991.     int ypos;
  992.  
  993.     if (lineflag == 2) {    //Y方向の表示位置の設定
  994.         ypos = 30;
  995.     } else {
  996.         ypos = 0;
  997.     }
  998.     n = 0;
  999.     charcnt = 0;
  1000.     mes (MIDI_TIME) { step (1) {
  1001.         if (wordchg[wordcnt*MAX+n] != 0){
  1002.             if (wordchgmode == 0){ //通常の色替え
  1003.                 TextColorChange(writepic,framepic,charcnt*12+worddif*12+16,ypos,wordchg[wordcnt*MAX+n]);
  1004.             } else {    //滑らか色替え
  1005.                 TextColorScroll(writepic,framepic,charcnt*12+worddif*12+16,ypos,wordchg[wordcnt*MAX+n]);
  1006.             }
  1007.         }
  1008.         charcnt = charcnt + wordchg[wordcnt*MAX+n];    //既に色を変えた文字の数を更新する
  1009.         n = n + 1;
  1010.         if (wordchg[wordcnt*MAX+n] == -1){  //この行の歌詞の終わり
  1011.             del_me;
  1012.         }
  1013.         if (n == MAX){  //この行の歌詞の終わり
  1014.             del_me;
  1015.         }
  1016.     }}
  1017. }
  1018.  
  1019. //歌詞の文字単位の色変え
  1020. TextColorChange(int backPic, int forePic, int XPos, int YPos, int n_char){
  1021.     int charcnt;
  1022.     for (charcnt=0; charcnt<n_char; charcnt=charcnt+1){
  1023.         MovePic(backPic,XPos+charcnt*12,YPos,12,24,forePic,XPos+20+charcnt*12,YPos+350);
  1024.     }
  1025. }
  1026.  
  1027. //歌詞の文字単位の滑らか色変え
  1028. TextColorScroll(int backPic, int forePic, int XPos, int YPos, int n_char){
  1029.     int n_split; //文字の分割数
  1030.     int w_split; //文字の分割幅
  1031.     int splitcnt;
  1032.     int charcnt;
  1033.     if (n_char <= 2) {
  1034.         n_split = 4;
  1035.         w_split = 3;
  1036.     } else if (n_char <= 4) {
  1037.         n_split = 3;
  1038.         w_split = 4;
  1039.     } else {
  1040.         n_split = 2;
  1041.         w_split = 6;
  1042.     }
  1043.     charcnt = 0;
  1044.     splitcnt = 0;
  1045.     mes(TIME){ step(1){
  1046.         MovePic(backPic,XPos+charcnt*12+splitcnt*w_split,YPos,w_split,24,forePic,XPos+charcnt*12+splitcnt*w_split+20,YPos+350);
  1047.         splitcnt = splitcnt + 1;
  1048.         if (splitcnt == n_split){    //1文字の表示が終わったらカウンターをリセットする
  1049.             splitcnt = 0;
  1050.             charcnt = charcnt + 1;    //次の文字を処理するためにカウンターを上げる
  1051.         }
  1052.         if (charcnt == n_char){        //最後までいったらmes文を終わる
  1053.             del_me;
  1054.         }
  1055.     } }
  1056. }
  1057.  
  1058. MovePicX(pic1,x1,y1,w,h,pic2,x2,y2,mode){
  1059.     int time;
  1060.     int i;
  1061.     if (mode < 0){    //slowモード
  1062.         time = 28;
  1063.         mode = -mode;
  1064.     } else {
  1065.         time = 10;
  1066.     }
  1067.     if (mode == 20){    //close (H)
  1068.         MovePic(pic1,x1    ,y1,w/2,h,pic2,x2    ,y2    ,6,time);
  1069.         MovePic(pic1,x1+w/2,y1,w/2,h,pic2,x2+w/2,y2    ,7,time);
  1070.     } else if (mode == 21){    //open (H)
  1071.         MovePic(pic1,x1    ,y1,w/2,h,pic2,x2    ,y2    ,7,time);
  1072.         MovePic(pic1,x1+w/2,y1,w/2,h,pic2,x2+w/2,y2    ,6,time);
  1073.     } else if (mode == 22){    //close (V)
  1074.         MovePic(pic1,x1,    y1,    w,h/2,pic2,x2    ,y2    ,4,time);
  1075.         MovePic(pic1,x1,    y1+h/2,w,h/2,pic2,x2    ,y2+h/2,5,time);
  1076.     } else if (mode == 23){    //open (V)
  1077.         MovePic(pic1,x1,    y1,    w,h/2,pic2,x2    ,y2    ,5,time);
  1078.         MovePic(pic1,x1,    y1+h/2,w,h/2,pic2,x2    ,y2+h/2,4,time);
  1079.     } else if (mode == 30){    //wipe
  1080.         MovePic(pic1,x1    ,y1    ,w/2,h/2,pic2,x2    ,y2    ,2,time);
  1081.         MovePic(pic1,x1    ,y1+h/2,w/2,h/2,pic2,x2    ,y2+h/2,3,time);
  1082.         MovePic(pic1,x1+w/2,y1    ,w/2,h/2,pic2,x2+w/2,y2    ,3,time);
  1083.         MovePic(pic1,x1+w/2,y1+h/2,w/2,h/2,pic2,x2+w/2,y2+h/2,2,time);
  1084.     } else if (mode == 31){    //Roll in
  1085.         MovePic(pic1,x1    ,y1    ,w/2,h/2,pic2,x2    ,y2    ,4,time);
  1086.         MovePic(pic1,x1    ,y1+h/2,w/2,h/2,pic2,x2    ,y2+h/2,6,time);
  1087.         MovePic(pic1,x1+w/2,y1    ,w/2,h/2,pic2,x2+w/2,y2    ,7,time);
  1088.         MovePic(pic1,x1+w/2,y1+h/2,w/2,h/2,pic2,x2+w/2,y2+h/2,5,time);
  1089.     } else if (mode == 32){    //Roll out
  1090.         MovePic(pic1,x1    ,y1    ,w/2,h/2,pic2,x2    ,y2    ,5,time);
  1091.         MovePic(pic1,x1    ,y1+h/2,w/2,h/2,pic2,x2    ,y2+h/2,7,time);
  1092.         MovePic(pic1,x1+w/2,y1    ,w/2,h/2,pic2,x2+w/2,y2    ,6,time);
  1093.         MovePic(pic1,x1+w/2,y1+h/2,w/2,h/2,pic2,x2+w/2,y2+h/2,4,time);
  1094.     } else if (mode == 33){    //Scroll in
  1095.         MovePic(pic1,x1    ,y1    ,w/2,h/2,pic2,x2    ,y2    ,8,time);
  1096.         MovePic(pic1,x1    ,y1+h/2,w/2,h/2,pic2,x2    ,y2+h/2,10,time);
  1097.         MovePic(pic1,x1+w/2,y1    ,w/2,h/2,pic2,x2+w/2,y2    ,11,time);
  1098.         MovePic(pic1,x1+w/2,y1+h/2,w/2,h/2,pic2,x2+w/2,y2+h/2,9,time);
  1099.     } else if (mode == 34){    //Scroll out
  1100.         MovePic(pic1,x1    ,y1    ,w/2,h/2,pic2,x2    ,y2    ,9,time);
  1101.         MovePic(pic1,x1    ,y1+h/2,w/2,h/2,pic2,x2    ,y2+h/2,11,time);
  1102.         MovePic(pic1,x1+w/2,y1    ,w/2,h/2,pic2,x2+w/2,y2    ,10,time);
  1103.         MovePic(pic1,x1+w/2,y1+h/2,w/2,h/2,pic2,x2+w/2,y2+h/2,8,time);
  1104.     } else if (mode == 40){    //Magnification
  1105.         i = 10;
  1106.         while(i <= 100){
  1107.             MoveSPic(pic1,0,0,600,400,pic2,x2+300-i*3,y2+200-i*2,i*6,i*4);
  1108.             if (mode < 0){    //slowモード
  1109.                 i = i + 1;
  1110.             }else{
  1111.                 i = i + 10;
  1112.             }
  1113.         }
  1114.     } else {
  1115.         MovePic(pic1,x1,y1,600,400,pic2,x2,y2,mode,time);
  1116.     }
  1117. }
  1118.  
  1119.