Ok, so I'm a moron. Yeah. Record fix and preliminary chapter stuff included.
This commit is contained in:
@@ -167,7 +167,8 @@ EXTSYM GUIHQ3X
|
|||||||
EXTSYM GUIHQ4X
|
EXTSYM GUIHQ4X
|
||||||
EXTSYM firstsaveinc
|
EXTSYM firstsaveinc
|
||||||
EXTSYM nssdip1,nssdip2,nssdip3,nssdip4,nssdip5,nssdip6
|
EXTSYM nssdip1,nssdip2,nssdip3,nssdip4,nssdip5,nssdip6
|
||||||
EXTSYM SkipMovie,MovieStop,MoviePlay,MovieRecord
|
EXTSYM SkipMovie,MovieStop,MoviePlay,MovieRecord,MovieInsertChapter
|
||||||
|
EXTSYM MovieSeekAhead,MovieSeekBehind
|
||||||
|
|
||||||
%ifdef __LINUX__
|
%ifdef __LINUX__
|
||||||
EXTSYM numlockptr
|
EXTSYM numlockptr
|
||||||
|
|||||||
@@ -566,21 +566,23 @@ ProcessMouseButtons:
|
|||||||
je near SetDevice
|
je near SetDevice
|
||||||
cmp byte[GUICBHold],15
|
cmp byte[GUICBHold],15
|
||||||
je near CalibrateDev1
|
je near CalibrateDev1
|
||||||
cmp byte[GUICBHold],16
|
cmp byte[GUICBHold],16 ; movie replay
|
||||||
jne .notMoviePlay
|
jne .notMoviePlay
|
||||||
|
mov byte[GUICBHold],0
|
||||||
pushad
|
pushad
|
||||||
call MoviePlay
|
call MoviePlay
|
||||||
popad
|
popad
|
||||||
ret
|
ret
|
||||||
.notMoviePlay
|
.notMoviePlay
|
||||||
cmp byte[GUICBHold],17
|
cmp byte[GUICBHold],17
|
||||||
jne .notMovieRecord0
|
jne .notMovieRecord0 ; movie record
|
||||||
|
mov byte[GUICBHold],0
|
||||||
pushad
|
pushad
|
||||||
call MovieRecord
|
call MovieRecord
|
||||||
popad
|
popad
|
||||||
ret
|
ret
|
||||||
.notMovieRecord0
|
.notMovieRecord0
|
||||||
cmp byte[GUICBHold],18
|
cmp byte[GUICBHold],18 ; movie stop
|
||||||
jne .notMovieStop
|
jne .notMovieStop
|
||||||
mov byte[GUICBHold],0
|
mov byte[GUICBHold],0
|
||||||
pushad
|
pushad
|
||||||
@@ -588,20 +590,46 @@ ProcessMouseButtons:
|
|||||||
popad
|
popad
|
||||||
ret
|
ret
|
||||||
.notMovieStop
|
.notMovieStop
|
||||||
cmp byte[GUICBHold],19
|
cmp byte[GUICBHold],19 ; overwrite zmv ? yes
|
||||||
jne .notMovieRecord1
|
jne .notMovieRecord1
|
||||||
|
mov byte[GUICBHold],0
|
||||||
pushad
|
pushad
|
||||||
call MovieRecord
|
call MovieRecord
|
||||||
popad
|
popad
|
||||||
ret
|
ret
|
||||||
.notMovieRecord1
|
.notMovieRecord1
|
||||||
cmp byte[GUICBHold],20
|
cmp byte[GUICBHold],20 ; overwrite zmv ? no
|
||||||
jne .notSkipMovie
|
jne .notSkipMovie
|
||||||
|
mov byte[GUICBHold],0
|
||||||
pushad
|
pushad
|
||||||
call SkipMovie
|
call SkipMovie
|
||||||
popad
|
popad
|
||||||
ret
|
ret
|
||||||
.notSkipMovie
|
.notSkipMovie
|
||||||
|
cmp byte[GUICBHold],29 ; insert chapter
|
||||||
|
jne .noInsertChap
|
||||||
|
mov byte[GUICBHold],0
|
||||||
|
pushad
|
||||||
|
call MovieInsertChapter
|
||||||
|
popad
|
||||||
|
ret
|
||||||
|
.noInsertChap
|
||||||
|
cmp byte[GUICBHold],30 ; back to previous chapter
|
||||||
|
jne .noPrevChap
|
||||||
|
mov byte[GUICBHold],0
|
||||||
|
pushad
|
||||||
|
call MovieSeekBehind
|
||||||
|
popad
|
||||||
|
ret
|
||||||
|
.noPrevChap
|
||||||
|
cmp byte[GUICBHold],31 ; jump to next chapter
|
||||||
|
jne .noNextChap
|
||||||
|
mov byte[GUICBHold],0
|
||||||
|
pushad
|
||||||
|
call MovieSeekAhead
|
||||||
|
popad
|
||||||
|
ret
|
||||||
|
.noNextChap
|
||||||
cmp byte[GUICBHold],40
|
cmp byte[GUICBHold],40
|
||||||
je near SetAllKeys
|
je near SetAllKeys
|
||||||
cmp byte[GUICBHold],50
|
cmp byte[GUICBHold],50
|
||||||
|
|||||||
@@ -513,8 +513,7 @@ Create and record ZMV
|
|||||||
void zmv_create(char *filename)
|
void zmv_create(char *filename)
|
||||||
{
|
{
|
||||||
memset(&zmv_vars, 0, sizeof(zmv_vars));
|
memset(&zmv_vars, 0, sizeof(zmv_vars));
|
||||||
zmv_vars.fp = fopen(filename,"wb");
|
if ((zmv_vars.fp = fopen(filename,"wb")))
|
||||||
if (zmv_vars.fp)
|
|
||||||
{
|
{
|
||||||
strncpy(zmv_vars.header.magic, "ZMV", 3);
|
strncpy(zmv_vars.header.magic, "ZMV", 3);
|
||||||
zmv_vars.header.zsnes_version = versionNumber & 0xFFFF;
|
zmv_vars.header.zsnes_version = versionNumber & 0xFFFF;
|
||||||
@@ -531,29 +530,29 @@ void zmv_create(char *filename)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#define RECORD_PAD(prev, cur, bit) \
|
#define RECORD_PAD(prev, cur, bit) \
|
||||||
cur >>= 20; \
|
if (cur != prev) \
|
||||||
if (cur != prev) \
|
{ \
|
||||||
{ \
|
prev = (cur >> 20); \
|
||||||
prev = cur; \
|
flag |= BIT(bit); \
|
||||||
flag |= BIT(bit); \
|
\
|
||||||
\
|
if (nibble & 1) \
|
||||||
if (nibble & 1) \
|
{ \
|
||||||
{ \
|
press_buf[nibble/2] |= ((unsigned char)(prev & 0x0F)) << 4; \
|
||||||
press_buf[nibble/2] |= ((unsigned char)(prev & 0x0F)) << 4; \
|
nibble++; \
|
||||||
nibble++; \
|
press_buf[nibble/2] = (unsigned char)(prev >> 4); \
|
||||||
press_buf[nibble/2] = (unsigned char)(prev >> 4); \
|
nibble += 2; \
|
||||||
nibble += 2; \
|
} \
|
||||||
} \
|
else \
|
||||||
else \
|
{ \
|
||||||
{ \
|
press_buf[nibble/2] = (unsigned char)(prev & 0xFF); \
|
||||||
press_buf[nibble/2] = (unsigned char)(prev & 0xFF); \
|
nibble += 2; \
|
||||||
nibble += 2; \
|
press_buf[nibble/2] = (unsigned char)(prev >> 8); \
|
||||||
press_buf[nibble/2] = (unsigned char)(prev >> 8); \
|
nibble++; \
|
||||||
nibble++; \
|
} \
|
||||||
} \
|
\
|
||||||
} \
|
prev <<= 20; \
|
||||||
cur <<= 20;
|
}
|
||||||
|
|
||||||
void zmv_record()
|
void zmv_record()
|
||||||
{
|
{
|
||||||
@@ -721,6 +720,7 @@ bool zmv_replay()
|
|||||||
|
|
||||||
if (flag & BIT(2))
|
if (flag & BIT(2))
|
||||||
{
|
{
|
||||||
|
puts("Skipping Chapter");
|
||||||
fseek(zmv_vars.fp, cur_zst_size+4, SEEK_CUR);
|
fseek(zmv_vars.fp, cur_zst_size+4, SEEK_CUR);
|
||||||
fread(&flag, 1, 1, zmv_vars.fp);
|
fread(&flag, 1, 1, zmv_vars.fp);
|
||||||
}
|
}
|
||||||
@@ -840,7 +840,6 @@ void zmv_replay_finished()
|
|||||||
fclose(zmv_vars.fp);
|
fclose(zmv_vars.fp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -886,8 +885,6 @@ unsigned int bytemerger (unsigned char heaviest, unsigned char heavy, unsigned c
|
|||||||
return ((heaviest << 24) | (heavy << 16) | (light << 8) | (lightest));
|
return ((heaviest << 24) | (heavy << 16) | (light << 8) | (lightest));
|
||||||
}
|
}
|
||||||
|
|
||||||
extern unsigned char CNetType;
|
|
||||||
|
|
||||||
void ProcessMovies()
|
void ProcessMovies()
|
||||||
{
|
{
|
||||||
if (MovieProcessing == 2) { zmv_record(); }
|
if (MovieProcessing == 2) { zmv_record(); }
|
||||||
@@ -902,7 +899,6 @@ extern unsigned int GUICBHold;
|
|||||||
void SkipMovie()
|
void SkipMovie()
|
||||||
{
|
{
|
||||||
MovieRecordWinVal = 0;
|
MovieRecordWinVal = 0;
|
||||||
GUICBHold &= 0xFFFFFF00;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MovieStop()
|
void MovieStop()
|
||||||
@@ -929,8 +925,6 @@ void MoviePlay()
|
|||||||
{
|
{
|
||||||
unsigned char FileExt[4];
|
unsigned char FileExt[4];
|
||||||
|
|
||||||
GUICBHold &= 0xFFFFFF00;
|
|
||||||
|
|
||||||
if (!MovieProcessing)
|
if (!MovieProcessing)
|
||||||
{
|
{
|
||||||
GUIQuit = 2;
|
GUIQuit = 2;
|
||||||
@@ -959,8 +953,6 @@ void MoviePlay()
|
|||||||
|
|
||||||
void MovieRecord()
|
void MovieRecord()
|
||||||
{
|
{
|
||||||
GUICBHold &= 0xFFFFFF00;
|
|
||||||
|
|
||||||
if (!MovieProcessing)
|
if (!MovieProcessing)
|
||||||
{
|
{
|
||||||
unsigned char FileExt[4];
|
unsigned char FileExt[4];
|
||||||
@@ -991,3 +983,28 @@ void MovieRecord()
|
|||||||
memcpy (&fnamest[statefileloc-3], FileExt, 4);
|
memcpy (&fnamest[statefileloc-3], FileExt, 4);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MovieInsertChapter()
|
||||||
|
{
|
||||||
|
switch (MovieProcessing)
|
||||||
|
{
|
||||||
|
case 1: puts("Adding external chapter"); zmv_add_chapter(); break; // replaying - external
|
||||||
|
case 2: puts("Adding internal chapter"); zmv_insert_chapter(); break; // recording - internal
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MovieSeekAhead()
|
||||||
|
{
|
||||||
|
if (MovieProcessing == 1) // replaying only - record can use ZMTs
|
||||||
|
{
|
||||||
|
puts("Going to next chapter"); zmv_next_chapter();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MovieSeekBehind()
|
||||||
|
{
|
||||||
|
if (MovieProcessing == 1) // replaying only - record can use ZMTs
|
||||||
|
{
|
||||||
|
puts("Going to previous chapter"); zmv_prev_chapter();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user