Ok, so I'm a moron. Yeah. Record fix and preliminary chapter stuff included.

This commit is contained in:
grinvader
2005-03-16 14:16:29 +00:00
parent c56419c49a
commit 2f514471d0
3 changed files with 88 additions and 42 deletions

View File

@@ -167,7 +167,8 @@ EXTSYM GUIHQ3X
EXTSYM GUIHQ4X
EXTSYM firstsaveinc
EXTSYM nssdip1,nssdip2,nssdip3,nssdip4,nssdip5,nssdip6
EXTSYM SkipMovie,MovieStop,MoviePlay,MovieRecord
EXTSYM SkipMovie,MovieStop,MoviePlay,MovieRecord,MovieInsertChapter
EXTSYM MovieSeekAhead,MovieSeekBehind
%ifdef __LINUX__
EXTSYM numlockptr

View File

@@ -566,21 +566,23 @@ ProcessMouseButtons:
je near SetDevice
cmp byte[GUICBHold],15
je near CalibrateDev1
cmp byte[GUICBHold],16
cmp byte[GUICBHold],16 ; movie replay
jne .notMoviePlay
mov byte[GUICBHold],0
pushad
call MoviePlay
popad
ret
.notMoviePlay
cmp byte[GUICBHold],17
jne .notMovieRecord0
jne .notMovieRecord0 ; movie record
mov byte[GUICBHold],0
pushad
call MovieRecord
popad
ret
.notMovieRecord0
cmp byte[GUICBHold],18
cmp byte[GUICBHold],18 ; movie stop
jne .notMovieStop
mov byte[GUICBHold],0
pushad
@@ -588,20 +590,46 @@ ProcessMouseButtons:
popad
ret
.notMovieStop
cmp byte[GUICBHold],19
cmp byte[GUICBHold],19 ; overwrite zmv ? yes
jne .notMovieRecord1
mov byte[GUICBHold],0
pushad
call MovieRecord
popad
ret
.notMovieRecord1
cmp byte[GUICBHold],20
cmp byte[GUICBHold],20 ; overwrite zmv ? no
jne .notSkipMovie
mov byte[GUICBHold],0
pushad
call SkipMovie
popad
ret
.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
je near SetAllKeys
cmp byte[GUICBHold],50

View File

@@ -286,12 +286,12 @@ void zmv_header_write(struct zmv_header *zmv_head, FILE *fp)
case zmv_vm_ntsc:
flag &= ~BIT(5);
break;
case zmv_vm_pal:
flag |= BIT(5);
break;
break;
}
//Not needed, but oh well, it makes it easier to read for some.
//Reserved bits:
flag &= ~BIT(4);
@@ -513,8 +513,7 @@ Create and record ZMV
void zmv_create(char *filename)
{
memset(&zmv_vars, 0, sizeof(zmv_vars));
zmv_vars.fp = fopen(filename,"wb");
if (zmv_vars.fp)
if ((zmv_vars.fp = fopen(filename,"wb")))
{
strncpy(zmv_vars.header.magic, "ZMV", 3);
zmv_vars.header.zsnes_version = versionNumber & 0xFFFF;
@@ -531,29 +530,29 @@ void zmv_create(char *filename)
}
}
#define RECORD_PAD(prev, cur, bit) \
cur >>= 20; \
if (cur != prev) \
{ \
prev = cur; \
flag |= BIT(bit); \
\
if (nibble & 1) \
{ \
press_buf[nibble/2] |= ((unsigned char)(prev & 0x0F)) << 4; \
nibble++; \
press_buf[nibble/2] = (unsigned char)(prev >> 4); \
nibble += 2; \
} \
else \
{ \
press_buf[nibble/2] = (unsigned char)(prev & 0xFF); \
nibble += 2; \
press_buf[nibble/2] = (unsigned char)(prev >> 8); \
nibble++; \
} \
} \
cur <<= 20;
#define RECORD_PAD(prev, cur, bit) \
if (cur != prev) \
{ \
prev = (cur >> 20); \
flag |= BIT(bit); \
\
if (nibble & 1) \
{ \
press_buf[nibble/2] |= ((unsigned char)(prev & 0x0F)) << 4; \
nibble++; \
press_buf[nibble/2] = (unsigned char)(prev >> 4); \
nibble += 2; \
} \
else \
{ \
press_buf[nibble/2] = (unsigned char)(prev & 0xFF); \
nibble += 2; \
press_buf[nibble/2] = (unsigned char)(prev >> 8); \
nibble++; \
} \
\
prev <<= 20; \
}
void zmv_record()
{
@@ -721,6 +720,7 @@ bool zmv_replay()
if (flag & BIT(2))
{
puts("Skipping Chapter");
fseek(zmv_vars.fp, cur_zst_size+4, SEEK_CUR);
fread(&flag, 1, 1, zmv_vars.fp);
}
@@ -840,7 +840,6 @@ void zmv_replay_finished()
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));
}
extern unsigned char CNetType;
void ProcessMovies()
{
if (MovieProcessing == 2) { zmv_record(); }
@@ -902,7 +899,6 @@ extern unsigned int GUICBHold;
void SkipMovie()
{
MovieRecordWinVal = 0;
GUICBHold &= 0xFFFFFF00;
}
void MovieStop()
@@ -929,8 +925,6 @@ void MoviePlay()
{
unsigned char FileExt[4];
GUICBHold &= 0xFFFFFF00;
if (!MovieProcessing)
{
GUIQuit = 2;
@@ -959,8 +953,6 @@ void MoviePlay()
void MovieRecord()
{
GUICBHold &= 0xFFFFFF00;
if (!MovieProcessing)
{
unsigned char FileExt[4];
@@ -991,3 +983,28 @@ void MovieRecord()
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();
}
}