Some comments, first modifications for ZMV format using variable speed code.

This commit is contained in:
grinvader
2005-05-13 16:13:49 +00:00
parent dcd315d436
commit 886fec7b7d
3 changed files with 21 additions and 26 deletions

View File

@@ -55,7 +55,7 @@ EXTSYM fxbit67pcal,SfxSFR,nosprincr,cpucycle,switchtovirqdeb,switchtonmideb
EXTSYM MovieSeekBehind,SaveSramData,BackupCVFrame,RestoreCVFrame,loadstate
EXTSYM KeyInsrtChap,KeyNextChap,KeyPrevChap,MovieInsertChapter,MovieSeekAhead
EXTSYM ResetDuringMovie,EMUPauseKey,INCRFrameKey,MovieWaiting,NoInputRead
EXTSYM AllocatedRewindStates
EXTSYM AllocatedRewindStates,SlowDownLock
%ifdef __MSDOS__
EXTSYM dssel
@@ -1432,6 +1432,7 @@ NEWSYM cpuover
.noframeincr
cmp byte[EMUPause],1
jne .noemupause
mov byte[SlowDownLock],0 ; prevents some random desyncs
call ProcessRewind
@@ -2336,6 +2337,3 @@ NEWSYM execsingle
mov byte[intrset],2
.nointrset2
jmp switchtovirqdeb

View File

@@ -232,10 +232,10 @@ SaveRamSaved db 'SAVED SRAM DATA',0
SECTION .bss
FastForwardLock resb 1
SlowDownLock resb 1
NEWSYM SlowDownLock, resb 1
FastForwardLockp resb 1
NEWSYM CSprWinPtr, resd 1
NEWSYM SloMo50, resb 1
NEWSYM SloMo, resb 1 ; number of extra times to draw a frame
section .text
NEWSYM cachevideo
@@ -313,12 +313,10 @@ NEWSYM cachevideo
.ffmode2
mov eax,[KeyFastFrwrd]
test byte[pressed+eax],1
je .nofastfor
jz .nofastfor
mov byte[pressed+eax],2
xor byte[FastForwardLock],1
jmp .ff
.nofastfor
.ff
cmp byte[FastForwardLock],1
je near .fastfor
.ffskip
@@ -332,7 +330,7 @@ NEWSYM cachevideo
.sdmode2
mov eax,[KeySlowDown]
test byte[pressed+eax],1
je .noslowdwn
jz .noslowdwn
mov byte[pressed+eax],2
xor byte[SlowDownLock],1
.noslowdwn
@@ -340,13 +338,13 @@ NEWSYM cachevideo
je near .slowdwn
jmp .sdskip
.slowdwn
mov ax,2
mov byte[SloMo50],1
mov byte[SloMo],1 ; hardcoded 50% slowdown
jmp .skipnoslowdown
.sdskip
mov ax,1
mov byte[SloMo50],0
mov byte[SloMo],0
.skipnoslowdown
mov ax,[SloMo]
inc ax ; total times frame is drawn
cmp byte[frameskip],0
jne near .frameskip
@@ -370,15 +368,13 @@ NEWSYM cachevideo
jbe near .nofrskip
mov word[t1cc],0
mov byte[curblank],0
mov byte[fskipped],0
jmp .nofrskip
.noskip2
mov byte[fskipped],0
jmp .nofrskip
.fastfor
inc byte[frskipper]
push ebx
mov bl,10
mov bl,10 ; hardcoded number of frames to skip
jmp .fastforb
.frameskip
inc byte[frskipper]

View File

@@ -118,7 +118,7 @@ Header
4 bytes - Number of frames in this movie
4 bytes - Number of rerecords
4 bytes - Number of frames removed by rerecord
4 bytes - Number of frames with slow down
4 bytes - Number of frames advanced step-by-step
4 bytes - Number of key combos
2 bytes - Number of internal chapters
2 bytes - Length of author name
@@ -240,7 +240,7 @@ struct zmv_header
unsigned int frames;
unsigned int rerecords;
unsigned int removed_frames;
unsigned int slow_frames;
unsigned int incr_frames;
unsigned int key_combos;
unsigned short internal_chapters;
unsigned short author_len;
@@ -263,7 +263,7 @@ static void zmv_header_write(struct zmv_header *zmv_head, FILE *fp)
fwrite4(zmv_head->frames, fp);
fwrite4(zmv_head->rerecords, fp);
fwrite4(zmv_head->removed_frames, fp);
fwrite4(zmv_head->slow_frames, fp);
fwrite4(zmv_head->incr_frames, fp);
fwrite4(zmv_head->key_combos, fp);
fwrite2(zmv_head->internal_chapters, fp);
fwrite2(zmv_head->author_len, fp);
@@ -325,7 +325,7 @@ static bool zmv_header_read(struct zmv_header *zmv_head, FILE *fp)
zmv_head->frames = fread4(fp);
zmv_head->rerecords = fread4(fp);
zmv_head->removed_frames = fread4(fp);
zmv_head->slow_frames = fread4(fp);
zmv_head->incr_frames = fread4(fp);
zmv_head->key_combos = fread4(fp);
zmv_head->internal_chapters = fread2(fp);
zmv_head->author_len = fread2(fp);
@@ -853,13 +853,13 @@ static void zmv_record_command(enum zmv_commands command)
skip_bits = bit_encoder(prev, 0xFFF00000, press_buf, skip_bits); \
}
static void zmv_record(bool slow, unsigned char combos_used)
static void zmv_record(bool pause, unsigned char combos_used, unsigned char slow)
{
unsigned char flag = 0;
unsigned char press_buf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
size_t skip_bits = 0;
if (slow) { zmv_vars.header.slow_frames++; }
if (pause) { zmv_vars.header.incr_frames++; }
zmv_vars.header.key_combos += combos_used;
@@ -1811,10 +1811,11 @@ enum MovieStatus { MOVIE_OFF = 0, MOVIE_PLAYBACK, MOVIE_RECORD, MOVIE_OLD_PLAY }
#define SetMovieMode(mode) (MovieProcessing = (unsigned char)mode)
bool RawDumpInProgress = false;
extern bool SRAMState, SloMo50;
bool PrevSRAMState;
extern bool SRAMState;
extern unsigned char ComboCounter, MovieRecordWinVal, AllocatedRewindStates;
extern unsigned char SloMo, EMUPause;
char MovieFrameStr[10];
void SRAMChdir();
void ChangetoLOADdir();
@@ -2082,7 +2083,7 @@ void ProcessMovies()
Replay();
break;
case MOVIE_RECORD:
zmv_record(SloMo50 ? true : false, ComboCounter);
zmv_record(EMUPause ? true : false, ComboCounter, SloMo);
break;
case MOVIE_OLD_PLAY:
OldMovieReplay();