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 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

View File

@@ -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

View File

@@ -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();
}
}