Fixed playback of 'compressed' movies.
This commit is contained in:
@@ -531,9 +531,9 @@ void zmv_create(char *filename)
|
||||
}
|
||||
|
||||
#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); \
|
||||
\
|
||||
if (nibble & 1) \
|
||||
@@ -550,8 +550,6 @@ void zmv_create(char *filename)
|
||||
press_buf[nibble/2] = (unsigned char)(prev >> 8); \
|
||||
nibble++; \
|
||||
} \
|
||||
\
|
||||
prev <<= 20; \
|
||||
}
|
||||
|
||||
void zmv_record()
|
||||
@@ -687,26 +685,27 @@ bool zmv_open(char *filename)
|
||||
return(false);
|
||||
}
|
||||
|
||||
#define REPLAY_PAD(cur, bit) \
|
||||
#define REPLAY_PAD(prev, cur, bit) \
|
||||
if (flag & BIT(bit)) \
|
||||
{ \
|
||||
if (mid_byte) \
|
||||
{ \
|
||||
cur = (byte & 0xF0) >> 4; \
|
||||
prev = (byte & 0xF0) >> 4; \
|
||||
fread(&byte, 1, 1, zmv_vars.fp); \
|
||||
cur |= ((unsigned long)byte) << 4; \
|
||||
prev |= ((unsigned long)byte) << 4; \
|
||||
mid_byte = false; \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
fread(&byte, 1, 1, zmv_vars.fp); \
|
||||
cur = byte; \
|
||||
prev = byte; \
|
||||
fread(&byte, 1, 1, zmv_vars.fp); \
|
||||
cur |= ((unsigned long)(byte & 0xF)) << 8; \
|
||||
prev |= ((unsigned long)(byte & 0xF)) << 8; \
|
||||
mid_byte = true; \
|
||||
} \
|
||||
cur <<= 20; \
|
||||
}
|
||||
} \
|
||||
cur = (((unsigned int)prev) << 20) | 0x8000;
|
||||
|
||||
|
||||
bool zmv_replay()
|
||||
{
|
||||
@@ -725,11 +724,11 @@ bool zmv_replay()
|
||||
fread(&flag, 1, 1, zmv_vars.fp);
|
||||
}
|
||||
|
||||
REPLAY_PAD(JoyAOrig, 7);
|
||||
REPLAY_PAD(JoyBOrig, 6);
|
||||
REPLAY_PAD(JoyCOrig, 5);
|
||||
REPLAY_PAD(JoyDOrig, 4);
|
||||
REPLAY_PAD(JoyEOrig, 3);
|
||||
REPLAY_PAD(zmv_vars.last_joy_state.A, JoyAOrig, 7);
|
||||
REPLAY_PAD(zmv_vars.last_joy_state.B, JoyBOrig, 6);
|
||||
REPLAY_PAD(zmv_vars.last_joy_state.C, JoyCOrig, 5);
|
||||
REPLAY_PAD(zmv_vars.last_joy_state.D, JoyDOrig, 4);
|
||||
REPLAY_PAD(zmv_vars.last_joy_state.E, JoyEOrig, 3);
|
||||
|
||||
zmv_open_vars.frames_replayed++;
|
||||
return(true);
|
||||
@@ -963,14 +962,16 @@ void MovieRecord()
|
||||
fnamest[statefileloc] = CMovieExt;
|
||||
|
||||
SRAMChdir();
|
||||
tempfhandle = fopen(fnamest+1,"rb");
|
||||
|
||||
if ((MovieRecordWinVal == 1) || (tempfhandle == NULL))
|
||||
if (MovieRecordWinVal == 1)
|
||||
{
|
||||
remove(fnamest+1);
|
||||
MovieRecordWinVal = 0;
|
||||
}
|
||||
|
||||
if (!(tempfhandle = fopen(fnamest+1,"rb")))
|
||||
{
|
||||
zmv_create(fnamest+1);
|
||||
|
||||
MovieProcessing = 2;
|
||||
}
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user