Some comments, first modifications for ZMV format using variable speed code.
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user