Fixed playback of 'compressed' movies.

This commit is contained in:
n-a-c-h
2005-03-16 16:29:44 +00:00
parent 02064eb993
commit 7b7f9a501e

View File

@@ -531,9 +531,9 @@ void zmv_create(char *filename)
} }
#define RECORD_PAD(prev, cur, bit) \ #define RECORD_PAD(prev, cur, bit) \
if (cur != prev) \ if ((unsigned short)(cur >> 20) != prev) \
{ \ { \
prev = (cur >> 20); \ prev = (unsigned short)(cur >> 20); \
flag |= BIT(bit); \ flag |= BIT(bit); \
\ \
if (nibble & 1) \ if (nibble & 1) \
@@ -550,8 +550,6 @@ void zmv_create(char *filename)
press_buf[nibble/2] = (unsigned char)(prev >> 8); \ press_buf[nibble/2] = (unsigned char)(prev >> 8); \
nibble++; \ nibble++; \
} \ } \
\
prev <<= 20; \
} }
void zmv_record() void zmv_record()
@@ -687,27 +685,28 @@ bool zmv_open(char *filename)
return(false); return(false);
} }
#define REPLAY_PAD(cur, bit) \ #define REPLAY_PAD(prev, cur, bit) \
if (flag & BIT(bit)) \ if (flag & BIT(bit)) \
{ \ { \
if (mid_byte) \ if (mid_byte) \
{ \ { \
cur = (byte & 0xF0) >> 4; \ prev = (byte & 0xF0) >> 4; \
fread(&byte, 1, 1, zmv_vars.fp); \ fread(&byte, 1, 1, zmv_vars.fp); \
cur |= ((unsigned long)byte) << 4; \ prev |= ((unsigned long)byte) << 4; \
mid_byte = false; \ mid_byte = false; \
} \ } \
else \ else \
{ \ { \
fread(&byte, 1, 1, zmv_vars.fp); \ fread(&byte, 1, 1, zmv_vars.fp); \
cur = byte; \ prev = byte; \
fread(&byte, 1, 1, zmv_vars.fp); \ fread(&byte, 1, 1, zmv_vars.fp); \
cur |= ((unsigned long)(byte & 0xF)) << 8; \ prev |= ((unsigned long)(byte & 0xF)) << 8; \
mid_byte = true; \ mid_byte = true; \
} \ } \
cur <<= 20; \ } \
} cur = (((unsigned int)prev) << 20) | 0x8000;
bool zmv_replay() bool zmv_replay()
{ {
if (zmv_open_vars.frames_replayed < zmv_vars.header.frames) if (zmv_open_vars.frames_replayed < zmv_vars.header.frames)
@@ -725,11 +724,11 @@ bool zmv_replay()
fread(&flag, 1, 1, zmv_vars.fp); fread(&flag, 1, 1, zmv_vars.fp);
} }
REPLAY_PAD(JoyAOrig, 7); REPLAY_PAD(zmv_vars.last_joy_state.A, JoyAOrig, 7);
REPLAY_PAD(JoyBOrig, 6); REPLAY_PAD(zmv_vars.last_joy_state.B, JoyBOrig, 6);
REPLAY_PAD(JoyCOrig, 5); REPLAY_PAD(zmv_vars.last_joy_state.C, JoyCOrig, 5);
REPLAY_PAD(JoyDOrig, 4); REPLAY_PAD(zmv_vars.last_joy_state.D, JoyDOrig, 4);
REPLAY_PAD(JoyEOrig, 3); REPLAY_PAD(zmv_vars.last_joy_state.E, JoyEOrig, 3);
zmv_open_vars.frames_replayed++; zmv_open_vars.frames_replayed++;
return(true); return(true);
@@ -963,14 +962,16 @@ void MovieRecord()
fnamest[statefileloc] = CMovieExt; fnamest[statefileloc] = CMovieExt;
SRAMChdir(); SRAMChdir();
tempfhandle = fopen(fnamest+1,"rb");
if (MovieRecordWinVal == 1)
if ((MovieRecordWinVal == 1) || (tempfhandle == NULL))
{ {
remove(fnamest+1);
MovieRecordWinVal = 0; MovieRecordWinVal = 0;
}
if (!(tempfhandle = fopen(fnamest+1,"rb")))
{
zmv_create(fnamest+1); zmv_create(fnamest+1);
MovieProcessing = 2; MovieProcessing = 2;
} }
else else