home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 3
/
FREEWARE.BIN
/
towns_os
/
tvi
/
tvi_src.lzh
/
REC
/
REC_PLAY.C
< prev
next >
Wrap
C/C++ Source or Header
|
1990-11-12
|
5KB
|
165 lines
/*
$Header: rec_play.cv 1.6 90/11/12 17:01:00 Nam Rel $
*/
#include <egb.h> /* グラフィック関連のヘッダファイル */
#include <mos.h> /* マウス関連のヘッダファイル */
#include <n_win.h> /* 自前のウィンドゥ関数ヘッダ */
pragma Include ("rec_st.h"); /* 標準ヘッダ */
extern char *EGB_work; /*** EGBワークエリア(disp.obj) ***/
extern char *VideoBufAdd; /*** 画像データバッファ ***/
extern FRAME tviframe; /*** 動画データの枠 ***/
extern unsigned long imgsize; /*** 画像データ1枚のサイズ ***/
extern unsigned short StartPage; /*** 画像データ指定開始ページ ***/
extern unsigned short EndPage; /*** 画像データ指定終了ページ ***/
extern unsigned short NowPage; /*** 画像データ現在ページ ***/
extern unsigned short LastPage; /*** 画像データ最終ページ ***/
extern unsigned short sysflag; /*** 設定状態フラグ ***/
/*extern void N_Vput_ful_11();*/ /*** 全画面転送(vputf11.obj) ***/
extern void VC8put_ful(); /*** テーブル参照全画面転送(vc_put.obj) ***/
/*extern void N_wait_vsync();*/ /*** Vsync待ち(video.obj) ***/
extern void N_set_disp(); /*** 表示ページ切り換え(video.obj) ***/
extern void set_page_slider(); /*** ページスライダの再設定(rec_main.obj) ***/
extern void N_set_resolution(); /*** 画面解像度設定(rec_disp.obj) ***/
void tvi_put(); /*TVIファイルを表示(内部・rec_play.obj)*/
void tvi_disp(); /*TVIファイルを1枚再生(rec_play.obj)*/
void disp_first(); /*TVIファイルを1枚再生(rec_play.obj)*/
void disp_rr(); /*TVIファイルを1枚再生(rec_play.obj)*/
void disp_rev(); /*TVIファイルを1枚再生(rec_play.obj)*/
void disp_cue(); /*TVIファイルを1枚再生(rec_play.obj)*/
void disp_ff(); /*TVIファイルを1枚再生(rec_play.obj)*/
void disp_last(); /*TVIファイルを1枚再生(rec_play.obj)*/
void disp_play(); /*TVIファイルを再生(rec_play.obj)*/
/*****************************************************************************/
void tvi_put(page,add) /*TVIファイルを表示(内部)*/
unsigned char page;
char *add;
{
/*
N_wait_vsync();
if ( (sysflag | _ExpandTable)==0 ) {
N_Vput_ful_11((page & 1)*0x40000,add);
} else {
VC8put_ful((page & 1)*0x40000,add);
}
*/
VC8put_ful((page & 1)*0x40000,add);
}
/*****************************************************************************/
void tvi_disp(page) /*TVIファイルを1枚再生*/
unsigned short page;
{
MOS_disp(FALSE);
tvi_put(1,VideoBufAdd+(imgsize*page));
set_page_slider();
MOS_disp(TRUE);
}
/*****************************************************************************/
void disp_first() /*動画先頭へ*/
{
if (NowPage!=0) {
NowPage=0;
tvi_disp(NowPage);
}
}
/*****************************************************************************/
void disp_rr() /*動画巻き戻し*/
{
if (NowPage>0) {
NowPage=(NowPage>5)?NowPage-5:0;
tvi_disp(NowPage);
}
}
/*****************************************************************************/
void disp_rev() /*動画一駒戻し*/
{
if (NowPage>0) {
NowPage=(NowPage>0)?NowPage-1:0;
tvi_disp(NowPage);
}
}
/*****************************************************************************/
void disp_cue() /*動画一駒進め*/
{
if (NowPage<LastPage) {
NowPage=(NowPage<LastPage)?NowPage+1:LastPage;
tvi_disp(NowPage);
}
}
/*****************************************************************************/
void disp_ff() /*動画進め*/
{
if (NowPage<LastPage) {
NowPage=(NowPage<(LastPage-5))?NowPage+5:LastPage;
tvi_disp(NowPage);
}
}
/*****************************************************************************/
void disp_last() /*動画最終ページへ*/
{
if (NowPage!=LastPage) {
NowPage=LastPage;
tvi_disp(NowPage);
}
}
/*****************************************************************************/
void disp_play() /*TVIファイルの連続再生*/
{
int mb=0,mx,my;
register unsigned short i,start,end;
register unsigned char page;
if ( ((sysflag & _TVI)==0)||LastPage==0 ) {
return;
}
start=(StartPage==0xffff)?0:StartPage;
end=(EndPage==0xffff)?LastPage:EndPage;
i=NowPage;
N_set_resolution(11,11,0,-1,3); /**32Kビデオ出力(とりあえず非表示に)**/
MOS_disp(FALSE);
page=0;
while ( mb!=_MosBtnRight ) {
N_set_disp((page+1)& 1);
tvi_put(page,VideoBufAdd+(imgsize*i)); /*TVIファイルを表示(内部)*/
MOS_rdpos(&mb,&mx,&my);
/*if ( mb==_MosBtnRight ) { break; }*/
i=(i<end)?i+1:start;
page=(page>0)?0:1;
}
NowPage=i;
N_set_disp(1);
N_set_resolution(3,10,0,0,2);
EGB_writePage(EGB_work,0); /*** ページ0に書き込み ***/
EGB_clearScreen(EGB_work);
N_WIN_dispWinAll();
tvi_disp(i); /*TVIファイルを1枚再生*/
MOS_disp(TRUE);
}
/*
$Log: RCS/rec_play.cv $
* Revision 1.6 90/11/12 17:01:00 Nam
* Release at V0.0 L18d
*
* Revision 1.5 90/11/12 17:01:00 Nam
* add optbtn operation
*
* Revision 1.4 90/10/31 14:57:54 Nam
* Rel V0.0L17 at '90.11.2 for FPICS.
*
* Revision 1.3 90/10/31 14:57:54 Nam
* rename 'disp()'->'tvi_disp()'
*
* Revision 1.2 90/10/25 18:50:26 Nam
* use 'rec_st.h'
*
* Revision 1.1 90/10/10 18:05:20 Nam
* Initial revision
*
*/