*exwindow numalias EXWINDOW_FONTSIZE_TINY,14 ; tiny指定時のフォントサイズ numalias EXWINDOW_FONTSIZE_SMALL,20 ; small指定時のフォントサイズ numalias EXWINDOW_FONTSIZE_MEDIUM,26 ; medium指定時のフォントサイズ numalias EXWINDOW_FONTSIZE_LARGE,32 ; large指定時のフォントサイズ numalias EXWINDOW_FONTSIZE_HUGE,38 ; huge指定時のフォントサイズ numalias exwindow_arg_begin,100 ; 使用する変数の開始番号。終了はexwindow_arg_end defsub textspeed defsub exwindowdefault defsub setexwindow defsub registerwindowrect defsub registerlocation defsub registertextinfo defsub registerwindowfile defsub fontsize defsub fontsize2 defsub getmaxlength numalias tiny,-1 numalias small,-2 numalias medium,-3 numalias large,-4 numalias huge,-5 mov %0,exwindow_arg_begin ; 変数番号 numalias exwindow_locate_x,%0:inc %0 numalias exwindow_locate_y,%0:inc %0 numalias exwindow_length_x,%0:inc %0 numalias exwindow_length_y,%0:inc %0 numalias exwindow_fontsize,%0:inc %0 numalias exwindow_span_x,%0:inc %0 numalias exwindow_span_y,%0:inc %0 numalias exwindow_textspeed,%0:inc %0 numalias exwindow_bold,%0:inc %0 numalias exwindow_shadow,%0:inc %0 numalias exwindow_image,%0:inc %0 numalias exwindow_window_x,%0:inc %0 numalias exwindow_window_y,%0:inc %0 numalias exwindow_window_w,%0:inc %0 numalias exwindow_window_h,%0:inc %0 numalias exwindow_result_x,%0:inc %0 numalias exwindow_result_y,%0:inc %0 numalias exwindow_text_w,%0:inc %0 numalias exwindow_text_h,%0:inc %0 numalias exwindow_arg_end,%0-1 ; 最後の番号 return ; USAGE: textspeed テキスト速度 ; FUNC: textspeed上書き命令。 ; NOTE: 追随用。setwindow、textspeeddefault、!sを呼ぶと追随できない。 *textspeed getparam %exwindow_textspeed _textspeed %exwindow_textspeed return ; USAGE: exwindowdefault ; FUNC: デフォルト値の登録。 ; NOTE: setwindowをカスタマイズする場合は呼び出し不要。 *exwindowdefault ; setwindow 8,16,23,16,26,26,0,2,20,1,1,#999999,0,0,639,479 registerlocation 8,16 registertextinfo 20,1,1 registerwindowfile "" registerwindowrect 0,0,639+1,479+1 return ; USAGE: setexwindow <setwindowの画像指定時と同一> ; FUNC: テキストウィンドウの指定。 ; NOTE: 画像指定でsetwindowを呼ぶ。こちらを呼ぶならregisterwindowrectだけでよい。 *setexwindow getparam %exwindow_locate_x,%exwindow_locate_y,%exwindow_length_x,%exwindow_length_y,%exwindow_fontsize,%exwindow_fontsize,%exwindow_span_x,%exwindow_span_y,%exwindow_textspeed,%exwindow_bold,%exwindow_shadow,$exwindow_image,%exwindow_window_x,%exwindow_window_y _setwindow %exwindow_locate_x,%exwindow_locate_y,%exwindow_length_x,%exwindow_length_y,%exwindow_fontsize,%exwindow_fontsize,%exwindow_span_x,%exwindow_span_y,%exwindow_textspeed,%exwindow_bold,%exwindow_shadow,$exwindow_image,%exwindow_window_x,%exwindow_window_y return ; USAGE: registerwindowrect ウィンドウX,Y,W,H ; FUNC: ウィンドウ領域の登録。 ; NOTE: ウィンドウサイズがデフォルトと異なる場合は、fontsize実行前に呼ぶこと。 *registerwindowrect getparam %exwindow_window_x,%exwindow_window_y,%exwindow_window_w,%exwindow_window_h return ; USAGE: registerlocation テキスト表示位置X,Y ; FUNC: テキスト表示位置の登録。 ; NOTE: テキスト表示位置がデフォルトと異なる場合は、fontsize実行前に呼ぶこと。 *registerlocation getparam %exwindow_locate_x,%exwindow_locate_y return ; USAGE: registertextinfo テキスト速度,太字,影 ; FUNC: テキスト情報の登録。 ; NOTE: テキスト情報がデフォルトと異なる場合は、fontsize実行前に呼ぶこと。 *registertextinfo getparam %exwindow_textspeed,%exwindow_bold,%exwindow_shadow return ; USAGE: registerwindowfile ウィンドウファイル ; FUNC: テキストウィンドウファイルの登録。 ; NOTE: テキストウィンドウファイルがデフォルトと異なる場合は、fontsize実行前に呼ぶこと。 *registerwindowfile getparam $exwindow_image return ; USAGE: fontsize フォントサイズ|tiny|small|medium|large|huge ; FUNC: フォントサイズを変更する。 ; NOTE: 縦、横の文字数は自動で算出される。画像指定、縦横等幅文字のみ対応。 *fontsize getparam %exwindow_fontsize if %exwindow_fontsize=tiny mov %exwindow_fontsize,EXWINDOW_FONTSIZE_TINY if %exwindow_fontsize=small mov %exwindow_fontsize,EXWINDOW_FONTSIZE_SMALL if %exwindow_fontsize=medium mov %exwindow_fontsize,EXWINDOW_FONTSIZE_MEDIUM if %exwindow_fontsize=large mov %exwindow_fontsize,EXWINDOW_FONTSIZE_LARGE if %exwindow_fontsize=huge mov %exwindow_fontsize,EXWINDOW_FONTSIZE_HUGE if %exwindow_fontsize<=0 return ; 不正なフォントサイズ指定 mov %exwindow_text_w,%exwindow_window_w - 2*(%exwindow_locate_x - %exwindow_window_x) mov %exwindow_text_h,%exwindow_window_h - 2*(%exwindow_locate_y - %exwindow_window_y) mov %exwindow_length_x,%exwindow_text_w / %exwindow_fontsize mov %exwindow_length_y,%exwindow_text_h / %exwindow_fontsize if %exwindow_length_x<=0 return ; 不正な領域指定 if %exwindow_length_y<=0 return ; 不正な領域指定 ; 文字間隔=(テキスト表示幅-(文字数*文字幅))/(文字数-1) mov %exwindow_span_x,0 mov %exwindow_span_y,0 if %exwindow_length_x>1 mov %exwindow_span_x,(%exwindow_text_w - (%exwindow_length_x * %exwindow_fontsize)) / (%exwindow_length_x - 1) if %exwindow_length_y>1 mov %exwindow_span_y,(%exwindow_text_h - (%exwindow_length_y * %exwindow_fontsize)) / (%exwindow_length_y - 1) if $exwindow_image="" setwindow3 %exwindow_locate_x,%exwindow_locate_y,%exwindow_length_x,%exwindow_length_y,%exwindow_fontsize,%exwindow_fontsize,%exwindow_span_x,%exwindow_span_y,%exwindow_textspeed,%exwindow_bold,%exwindow_shadow,#999999,%exwindow_window_x,%exwindow_window_y,%exwindow_window_x+%exwindow_window_w-1,%exwindow_window_y+%exwindow_window_h-1:return setwindow3 %exwindow_locate_x,%exwindow_locate_y,%exwindow_length_x,%exwindow_length_y,%exwindow_fontsize,%exwindow_fontsize,%exwindow_span_x,%exwindow_span_y,%exwindow_textspeed,%exwindow_bold,%exwindow_shadow,$exwindow_image,%exwindow_window_x,%exwindow_window_y return ; USAGE: fontsize2 フォントサイズ|tiny|small|medium|large|huge,文字間隔X,Y ; FUNC: 文字間隔固定でフォントサイズを変更する。 ; NOTE: 縦、横の文字数は自動で算出される。画像指定、縦横等幅文字のみ対応。 *fontsize2 getparam %exwindow_fontsize,%exwindow_span_x,%exwindow_span_y if %exwindow_fontsize=tiny mov %exwindow_fontsize,EXWINDOW_FONTSIZE_TINY if %exwindow_fontsize=small mov %exwindow_fontsize,EXWINDOW_FONTSIZE_SMALL if %exwindow_fontsize=medium mov %exwindow_fontsize,EXWINDOW_FONTSIZE_MEDIUM if %exwindow_fontsize=large mov %exwindow_fontsize,EXWINDOW_FONTSIZE_LARGE if %exwindow_fontsize=huge mov %exwindow_fontsize,EXWINDOW_FONTSIZE_HUGE if %exwindow_fontsize<=0 return ; 不正なフォントサイズ指定 mov %exwindow_text_w,%exwindow_window_w - 2*(%exwindow_locate_x - %exwindow_window_x) mov %exwindow_text_h,%exwindow_window_h - 2*(%exwindow_locate_y - %exwindow_window_y) ; 文字数=(テキスト表示幅+文字間隔)/(文字数+文字間隔) mov %exwindow_length_x,(%exwindow_text_w + %exwindow_span_x) / (%exwindow_fontsize + %exwindow_span_x) mov %exwindow_length_y,(%exwindow_text_h + %exwindow_span_y) / (%exwindow_fontsize + %exwindow_span_y) if %exwindow_length_x<=0 return ; 不正な領域指定 if %exwindow_length_y<=0 return ; 不正な領域指定 if $exwindow_image="" setwindow3 %exwindow_locate_x,%exwindow_locate_y,%exwindow_length_x,%exwindow_length_y,%exwindow_fontsize,%exwindow_fontsize,%exwindow_span_x,%exwindow_span_y,%exwindow_textspeed,%exwindow_bold,%exwindow_shadow,#999999,%exwindow_window_x,%exwindow_window_y,%exwindow_window_x+%exwindow_window_w-1,%exwindow_window_y+%exwindow_window_h-1:return setwindow3 %exwindow_locate_x,%exwindow_locate_y,%exwindow_length_x,%exwindow_length_y,%exwindow_fontsize,%exwindow_fontsize,%exwindow_span_x,%exwindow_span_y,%exwindow_textspeed,%exwindow_bold,%exwindow_shadow,$exwindow_image,%exwindow_window_x,%exwindow_window_y return ; USAGE: getmaxlength %文字数X,%文字数Y ; FUNC: 自動調整後の文字数を取得する。 ; NOTE: setwindowと同様、全角換算。 *getmaxlength getparam i%exwindow_result_x,i%exwindow_result_y mov %%exwindow_result_x,%exwindow_length_x mov %%exwindow_result_y,%exwindow_length_y return