* HideMenu (Esc) only works when FCEU window has focus
* moved "Display movie status icon" from Config->Movie options to Config->Display * File->AVI/Wav->Enable HUD recording
This commit is contained in:
parent
ae1bb879ef
commit
84ae16d8c2
|
@ -1,233 +1,121 @@
|
||||||
--Input and frame counter display by andymac (by feos' request)
|
-- Script by amaurea, andymac and feos for FCEUX 2.1.6 and earlier versions.
|
||||||
--Useful for recording input onto avi, or if you just don't want the
|
-- Allows customizable recording of Frame, Lag, Timer and Input display to AVI dump.
|
||||||
--display getting in the way of your movie!
|
-- Drag and drop HUD items with mouse, use Numpad 1-6 to switch them on/off.
|
||||||
--Simply drag and drop the input display or frame counter
|
|
||||||
--Middle click to disable a display
|
|
||||||
--Numpad 1-5 to enable displays.
|
|
||||||
|
|
||||||
print("Input, frame & lag counter display by andymac (by feos' request).",
|
print("Drag and drop HUD items with mouse, use Numpad 1-6 to switch them on/off.")
|
||||||
"\r\nUseful for recording input & these counters onto avi.",
|
|
||||||
"\r\nSimply drag and drop the input display or frame counter.",
|
|
||||||
"\r\nMiddle click to disable a display.",
|
|
||||||
"\r\nNumpad 1-4 to enable input displays.",
|
|
||||||
"\r\nNumpad 5 to enable conters display.")
|
|
||||||
|
|
||||||
function drawpad(padnum,cx,cy) -- draws a gamepad on the screen
|
screen = {w=256,h=231}
|
||||||
|
move = {object=nil,offx=0,offy=0}
|
||||||
|
|
||||||
gui.transparency (0) --draws backround box
|
pads = {
|
||||||
gui.drawbox (cx - 3,cy - 3,cx + 28,cy + 6,"blue")
|
{num=1,on=true, color="red", x=9, y=220,w=34,h=10,toggle="numpad1"},
|
||||||
gui.transparency (0)
|
{num=2,on=true, color="yellow",x=54, y=220,w=34,h=10,toggle="numpad2"},
|
||||||
|
{num=3,on=false,color="green", x=99, y=220,w=34,h=10,toggle="numpad3"},
|
||||||
|
{num=4,on=false,color="orange",x=144,y=220,w=34,h=10,toggle="numpad4"}
|
||||||
|
}
|
||||||
|
|
||||||
gui.drawbox (cx,cy,cx + 3,cy + 3,"black") --centre square
|
buttons = {
|
||||||
|
A = {x=30,y=5,w=3,h=3},
|
||||||
|
B = {x=24,y=5,w=3,h=3},
|
||||||
|
start = {x=12,y=7,w=3,h=1},
|
||||||
|
select = {x=18,y=7,w=3,h=1},
|
||||||
|
up = {x=4, y=1,w=2,h=2},
|
||||||
|
down = {x=4, y=7,w=2,h=2},
|
||||||
|
left = {x=1, y=4,w=2,h=2},
|
||||||
|
right = {x=7, y=4,w=2,h=2}
|
||||||
|
}
|
||||||
|
|
||||||
controller = joypad.read(padnum)
|
text = {on=true,x=1, y=9,w=30,h=16,toggle="numpad5"}
|
||||||
|
timer = {on=true,x=197,y=9,w=58,h= 7,toggle="numpad6"}
|
||||||
if (padnum == 1) then
|
|
||||||
colour = "red" --changes colour of gamepads
|
|
||||||
elseif (padnum == 2) then
|
|
||||||
colour = "yellow"
|
|
||||||
elseif (padnum == 3) then
|
|
||||||
colour = "green"
|
|
||||||
elseif (padnum == 4) then
|
|
||||||
colour = "orange"
|
|
||||||
end
|
|
||||||
|
|
||||||
if (controller.A) then
|
function drawpad(pad)
|
||||||
gui.drawbox (cx + 25,cy,cx + 28,cy + 3,colour) --other buttons
|
gui.drawbox( pad.x, pad.y, pad.x+pad.w, pad.y+pad.h, "#3070ffb0" )
|
||||||
else
|
gui.drawbox( pad.x+4, pad.y+4, pad.x+6, pad.y+6, "black" )
|
||||||
gui.drawbox (cx + 25,cy,cx + 28,cy + 3,"black")
|
controller = joypad.read(pad.num)
|
||||||
end
|
for name, b in pairs(buttons) do
|
||||||
|
gui.drawbox( pad.x + b.x, pad.y + b.y, pad.x + b.x + b.w, pad.y + b.y + b.h,
|
||||||
|
controller[name] and pad.color or "black" )
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
if (controller.B) then
|
function mouseover(pad, margin)
|
||||||
gui.drawbox (cx + 20,cy,cx + 23,cy + 3,colour)
|
return keys.xmouse >= pad.x-margin and keys.xmouse <= pad.x+pad.w+margin and
|
||||||
else
|
keys.ymouse >= pad.y-margin and keys.ymouse <= pad.y+pad.h+margin
|
||||||
gui.drawbox (cx + 20,cy,cx + 23,cy + 3,"black")
|
end
|
||||||
end
|
|
||||||
|
|
||||||
if (controller.start) then
|
function inrange(upper, lower, testval)
|
||||||
gui.drawbox (cx + 14,cy + 1,cx + 18,cy + 2,colour)
|
if testval >= upper then return upper
|
||||||
else
|
elseif testval <= lower then return lower
|
||||||
gui.drawbox (cx + 14,cy + 1,cx + 18,cy + 2,"black")
|
else return testval
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
if (controller.select) then
|
function concat(tables)
|
||||||
gui.drawbox (cx + 8,cy + 1,cx + 12,cy + 2,colour)
|
local res = {}
|
||||||
else
|
for _, tab in ipairs(tables) do
|
||||||
gui.drawbox (cx + 8,cy + 1,cx + 12,cy + 2,"black")
|
for _, val in ipairs(tab) do
|
||||||
end
|
table.insert(res, val)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return res
|
||||||
|
end
|
||||||
|
|
||||||
if (controller.up) then
|
prev_keys = input.get()
|
||||||
gui.drawbox (cx,cy - 3,cx + 3,cy,colour)
|
objects = concat({pads, {text, timer}})
|
||||||
else
|
|
||||||
gui.drawbox (cx,cy - 3,cx + 3,cy,"black")
|
|
||||||
end
|
|
||||||
|
|
||||||
if (controller.down) then
|
function everything()
|
||||||
gui.drawbox (cx,cy + 3,cx + 3,cy + 6,colour)
|
keys = input.get()
|
||||||
else
|
|
||||||
gui.drawbox (cx,cy + 3,cx + 3,cy + 6,"black")
|
|
||||||
end
|
|
||||||
|
|
||||||
if (controller.left) then
|
-- Are we moving anything around?
|
||||||
gui.drawbox (cx - 3,cy,cx,cy + 3,colour)
|
if move.object then
|
||||||
else
|
if keys["leftclick"] then
|
||||||
gui.drawbox (cx - 3,cy,cx,cy + 3,"black")
|
-- Do not go outside screen
|
||||||
end
|
local safex = inrange(screen.w - move.object.w, 0, keys.xmouse - move.offx)
|
||||||
|
local safey = inrange(screen.h - move.object.h, 8, keys.ymouse - move.offy)
|
||||||
|
move.object.x = safex
|
||||||
|
move.object.y = safey
|
||||||
|
else move.object = nil end
|
||||||
|
|
||||||
|
-- Try to pick something up
|
||||||
|
elseif keys["leftclick"] then
|
||||||
|
for _,object in ipairs(objects) do
|
||||||
|
if mouseover(object,0) then
|
||||||
|
move.object = object
|
||||||
|
move.offx = keys.xmouse - object.x
|
||||||
|
move.offy = keys.ymouse - object.y
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
if (controller.right) then
|
-- Toggle displays
|
||||||
gui.drawbox (cx + 3,cy,cx + 6,cy + 3,colour)
|
for _, object in ipairs(objects) do
|
||||||
else
|
if keys[object.toggle] and not prev_keys[object.toggle] then
|
||||||
gui.drawbox (cx + 3,cy,cx + 6,cy + 3,"black")
|
object.on = not object.on
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Actually draw the stuff
|
||||||
|
if timer.on then
|
||||||
|
mins = math.floor(movie.framecount()/3600)
|
||||||
|
secs = movie.framecount()/60-mins*60
|
||||||
|
gui.text( timer.x, timer.y, string.format("%s:%05.2f",os.date("!%H:%M",mins*60),secs), "white" )
|
||||||
|
end
|
||||||
|
|
||||||
end
|
if text.on then
|
||||||
|
local done = movie.mode() == "finished" or movie.mode() == nil
|
||||||
|
gui.text( text.x, text.y, movie.framecount(), done and "red" or "white" )
|
||||||
|
gui.text( text.x, text.y + 9, FCEU.lagcount(), FCEU.lagged() and "red" or "green" )
|
||||||
|
end
|
||||||
|
|
||||||
function mouseover(boxx, boxy) --checks if mouseover
|
for _, pad in ipairs(pads) do
|
||||||
|
if pad.on then drawpad(pad) end
|
||||||
|
end
|
||||||
|
|
||||||
if keys.xmouse >= ( boxx - 5 ) and keys.xmouse <= ( boxx + 30 ) then
|
prev_keys = keys
|
||||||
|
end
|
||||||
|
|
||||||
if keys.ymouse >= ( boxy -3 ) and keys.ymouse <= ( boxy + 21 ) then
|
gui.register(everything)
|
||||||
|
|
||||||
return true
|
while (true) do
|
||||||
end
|
FCEU.frameadvance()
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function inrange(upper, lower, testval)
|
|
||||||
|
|
||||||
if testval >= upper then return upper
|
|
||||||
|
|
||||||
elseif testval <= lower then return lower
|
|
||||||
|
|
||||||
else return testval
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
function everything()
|
|
||||||
|
|
||||||
keys = input.get()
|
|
||||||
|
|
||||||
if (text == 1) then
|
|
||||||
|
|
||||||
if (FCEU.lagged()) then --flash lagcounter red if lagged, otherwise green.
|
|
||||||
gui.text (ex,ey + 9,FCEU.lagcount(), "red")
|
|
||||||
else
|
|
||||||
gui.text (ex,ey + 9,FCEU.lagcount(), "green")
|
|
||||||
end
|
|
||||||
|
|
||||||
if (movie.mode() == "finished" or movie.mode() == nil) then
|
|
||||||
gui.text (ex,ey,movie.framecount(), "red")
|
|
||||||
else
|
|
||||||
gui.text (ex,ey,movie.framecount())
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
if keys["numpad5"] then text = 1 end --enable 1-4 and text using and numpad 1-5
|
|
||||||
if keys["numpad1"] then pad1 = 1 end
|
|
||||||
if keys["numpad2"] then pad2 = 1 end
|
|
||||||
if keys["numpad3"] then pad3 = 1 end
|
|
||||||
if keys["numpad4"] then pad4 = 1 end
|
|
||||||
|
|
||||||
|
|
||||||
xmouse = inrange(240, 16, keys.xmouse) --limits x and y mouse position to be on screen
|
|
||||||
|
|
||||||
ymouse = inrange(225, 11, keys.ymouse) --so we can't drag items off the screen.
|
|
||||||
|
|
||||||
xmouse2 = inrange(241, 10, keys.xmouse)
|
|
||||||
|
|
||||||
ymouse2 = inrange(223, 16, keys.ymouse)
|
|
||||||
|
|
||||||
if keys.xmouse >= ( ex - 10 ) and keys.xmouse <= ( ex + 40 ) then -- test if mouse is over text
|
|
||||||
|
|
||||||
if keys.ymouse >= ( ey ) and keys.ymouse <= ( ey + 40 ) then
|
|
||||||
|
|
||||||
motext = true
|
|
||||||
else
|
|
||||||
motext = false
|
|
||||||
end
|
|
||||||
else motext = false
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
if mouseover(pad1x, pad1y) then -- checks if clicked, or middle clicked
|
|
||||||
|
|
||||||
if keys["leftclick"] then
|
|
||||||
pad1x = xmouse - 13
|
|
||||||
pad1y = ymouse - 8
|
|
||||||
elseif keys["middleclick"] then
|
|
||||||
pad1 = 0
|
|
||||||
end
|
|
||||||
|
|
||||||
elseif mouseover(pad2x, pad2y) then
|
|
||||||
|
|
||||||
if keys["leftclick"] then
|
|
||||||
pad2x = xmouse - 13
|
|
||||||
pad2y = ymouse - 8
|
|
||||||
elseif keys["middleclick"] then
|
|
||||||
pad2 = 0
|
|
||||||
end
|
|
||||||
|
|
||||||
elseif mouseover(pad3x, pad3y) then
|
|
||||||
|
|
||||||
if keys["leftclick"] then
|
|
||||||
pad3x = xmouse - 13
|
|
||||||
pad3y = ymouse - 8
|
|
||||||
elseif keys["middleclick"] then
|
|
||||||
pad3 = 0
|
|
||||||
end
|
|
||||||
|
|
||||||
elseif mouseover(pad4x, pad4y) then
|
|
||||||
|
|
||||||
if keys["leftclick"] then
|
|
||||||
pad4x = xmouse - 13
|
|
||||||
pad4y = ymouse - 8
|
|
||||||
elseif keys["middleclick"] then
|
|
||||||
pad4 = 0
|
|
||||||
end
|
|
||||||
|
|
||||||
elseif motext then
|
|
||||||
if keys["leftclick"] then
|
|
||||||
ex = xmouse2 - 10
|
|
||||||
ey = ymouse2 - 16
|
|
||||||
elseif keys["middleclick"] then
|
|
||||||
text = 0
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
if (pad1 == 1) then drawpad(1,pad1x, pad1y) end --draw pads
|
|
||||||
if (pad2 == 1) then drawpad(2,pad2x, pad2y) end
|
|
||||||
if (pad3 == 1) then drawpad(3,pad3x, pad3y) end
|
|
||||||
if (pad4 == 1) then drawpad(4,pad4x, pad4y) end
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
while (true) do
|
|
||||||
|
|
||||||
pad1x = 10
|
|
||||||
pad1y = 200
|
|
||||||
pad2x = 60
|
|
||||||
pad2y = 200
|
|
||||||
pad3x = 110
|
|
||||||
pad3y = 200
|
|
||||||
pad4x = 160
|
|
||||||
pad4y = 200
|
|
||||||
ex = 200
|
|
||||||
ey = 200
|
|
||||||
pad1 = 1
|
|
||||||
pad2 = 0
|
|
||||||
pad3 = 0
|
|
||||||
pad4 = 0
|
|
||||||
text = 1
|
|
||||||
|
|
||||||
while (true) do
|
|
||||||
|
|
||||||
gui.register(everything)
|
|
||||||
FCEU.frameadvance()
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
end
|
|
@ -274,6 +274,8 @@ void FCEUI_AviEnd(void);
|
||||||
void FCEUI_AviVideoUpdate(const unsigned char* buffer);
|
void FCEUI_AviVideoUpdate(const unsigned char* buffer);
|
||||||
void FCEUI_AviSoundUpdate(void* soundData, int soundLen);
|
void FCEUI_AviSoundUpdate(void* soundData, int soundLen);
|
||||||
bool FCEUI_AviIsRecording();
|
bool FCEUI_AviIsRecording();
|
||||||
|
bool FCEUI_AviEnableHUDrecording();
|
||||||
|
void FCEUI_SetAviEnableHUDrecording(bool enable);
|
||||||
bool FCEUI_AviDisableMovieMessages();
|
bool FCEUI_AviDisableMovieMessages();
|
||||||
void FCEUI_SetAviDisableMovieMessages(bool disable);
|
void FCEUI_SetAviDisableMovieMessages(bool disable);
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,7 @@ extern PALETTEENTRY *color_palette;
|
||||||
#define VIDEO_WIDTH 256
|
#define VIDEO_WIDTH 256
|
||||||
|
|
||||||
//adelikat: TODO - perhaps put this in AVIFile
|
//adelikat: TODO - perhaps put this in AVIFile
|
||||||
|
bool enableHUDrecording = false;
|
||||||
bool disableMovieMessages = false;
|
bool disableMovieMessages = false;
|
||||||
int AVICapture; //This initiates AVI capture mode with a frame number, on that frame number the AVI will stop, FCEUX will close, and a special return value will be set. The intent is for this to be used in commandline
|
int AVICapture; //This initiates AVI capture mode with a frame number, on that frame number the AVI will stop, FCEUX will close, and a special return value will be set. The intent is for this to be used in commandline
|
||||||
|
|
||||||
|
@ -437,6 +438,18 @@ bool FCEUI_AviIsRecording()
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool FCEUI_AviEnableHUDrecording()
|
||||||
|
{
|
||||||
|
if (enableHUDrecording)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
void FCEUI_SetAviEnableHUDrecording(bool enable)
|
||||||
|
{
|
||||||
|
enableHUDrecording = enable;
|
||||||
|
}
|
||||||
|
|
||||||
bool FCEUI_AviDisableMovieMessages()
|
bool FCEUI_AviDisableMovieMessages()
|
||||||
{
|
{
|
||||||
if (disableMovieMessages)
|
if (disableMovieMessages)
|
||||||
|
@ -444,7 +457,6 @@ bool FCEUI_AviDisableMovieMessages()
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void FCEUI_SetAviDisableMovieMessages(bool disable)
|
void FCEUI_SetAviDisableMovieMessages(bool disable)
|
||||||
{
|
{
|
||||||
disableMovieMessages = disable;
|
disableMovieMessages = disable;
|
||||||
|
|
|
@ -61,6 +61,7 @@ extern uint8 gNoBGFillColor;
|
||||||
extern bool rightClickEnabled;
|
extern bool rightClickEnabled;
|
||||||
extern int CurrentState;
|
extern int CurrentState;
|
||||||
extern bool pauseWhileActive; //adelikat: Cheats dialog
|
extern bool pauseWhileActive; //adelikat: Cheats dialog
|
||||||
|
extern bool AVIenableHUDrecording;
|
||||||
extern bool AVIdisableMovieMessages;
|
extern bool AVIdisableMovieMessages;
|
||||||
extern bool replaceP2StartWithMicrophone;
|
extern bool replaceP2StartWithMicrophone;
|
||||||
extern bool SingleInstanceOnly;
|
extern bool SingleInstanceOnly;
|
||||||
|
@ -326,6 +327,7 @@ static CFGSTRUCT fceuconfig[] = {
|
||||||
AC(backupSavestates),
|
AC(backupSavestates),
|
||||||
AC(compressSavestates),
|
AC(compressSavestates),
|
||||||
AC(pauseWhileActive),
|
AC(pauseWhileActive),
|
||||||
|
AC(AVIenableHUDrecording),
|
||||||
AC(AVIdisableMovieMessages),
|
AC(AVIdisableMovieMessages),
|
||||||
AC(replaceP2StartWithMicrophone),
|
AC(replaceP2StartWithMicrophone),
|
||||||
AC(SingleInstanceOnly),
|
AC(SingleInstanceOnly),
|
||||||
|
|
|
@ -27,7 +27,6 @@ int closeFinishedMovie = 0; //Flag for clossing movie when it is finished
|
||||||
int suggestReadOnlyReplay = 1;
|
int suggestReadOnlyReplay = 1;
|
||||||
|
|
||||||
//external
|
//external
|
||||||
extern int status_icon; //In main.cpp - For displaying movie status icons (play,record,pause)
|
|
||||||
extern bool movieSubtitles; //In fceu.cpp - Toggle for displaying movie subtitles
|
extern bool movieSubtitles; //In fceu.cpp - Toggle for displaying movie subtitles
|
||||||
extern bool subtitlesOnAVI; //In movie.cpp - Toggle for putting movie subtitles in an AVI
|
extern bool subtitlesOnAVI; //In movie.cpp - Toggle for putting movie subtitles in an AVI
|
||||||
extern bool autoMovieBackup;//In fceu.cpp - Toggle that determines if movies should be backed up automatically before altering them
|
extern bool autoMovieBackup;//In fceu.cpp - Toggle that determines if movies should be backed up automatically before altering them
|
||||||
|
@ -40,7 +39,6 @@ void UpdateCheckBoxes(HWND hwndDlg)
|
||||||
CheckDlgButton(hwndDlg, IDC_MOVIE_CLOSEAFTERPLAYBACK, closeFinishedMovie ? BST_CHECKED : BST_UNCHECKED);
|
CheckDlgButton(hwndDlg, IDC_MOVIE_CLOSEAFTERPLAYBACK, closeFinishedMovie ? BST_CHECKED : BST_UNCHECKED);
|
||||||
CheckDlgButton(hwndDlg, IDC_MOVIE_SUGGEST_READONLY, suggestReadOnlyReplay ? BST_CHECKED : BST_UNCHECKED);
|
CheckDlgButton(hwndDlg, IDC_MOVIE_SUGGEST_READONLY, suggestReadOnlyReplay ? BST_CHECKED : BST_UNCHECKED);
|
||||||
CheckDlgButton(hwndDlg, IDC_MOVIE_BINDSAVESTATES, bindSavestate ? BST_CHECKED : BST_UNCHECKED);
|
CheckDlgButton(hwndDlg, IDC_MOVIE_BINDSAVESTATES, bindSavestate ? BST_CHECKED : BST_UNCHECKED);
|
||||||
CheckDlgButton(hwndDlg, IDC_MOVIE_DISPLAYSTATUSICON, status_icon ? BST_CHECKED : BST_UNCHECKED);
|
|
||||||
CheckDlgButton(hwndDlg, IDC_MOVIE_DISPLAYSUBTITLES, movieSubtitles ? BST_CHECKED : BST_UNCHECKED);
|
CheckDlgButton(hwndDlg, IDC_MOVIE_DISPLAYSUBTITLES, movieSubtitles ? BST_CHECKED : BST_UNCHECKED);
|
||||||
CheckDlgButton(hwndDlg, IDC_MOVIE_SUBTITLESINAVI, subtitlesOnAVI ? BST_CHECKED : BST_UNCHECKED);
|
CheckDlgButton(hwndDlg, IDC_MOVIE_SUBTITLESINAVI, subtitlesOnAVI ? BST_CHECKED : BST_UNCHECKED);
|
||||||
CheckDlgButton(hwndDlg, IDC_MOVIE_AUTOBACKUP, autoMovieBackup ? BST_CHECKED : BST_UNCHECKED);
|
CheckDlgButton(hwndDlg, IDC_MOVIE_AUTOBACKUP, autoMovieBackup ? BST_CHECKED : BST_UNCHECKED);
|
||||||
|
@ -91,10 +89,6 @@ BOOL CALLBACK MovieOptionsCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM l
|
||||||
bindSavestate ^= 1;
|
bindSavestate ^= 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IDC_MOVIE_DISPLAYSTATUSICON:
|
|
||||||
status_icon = status_icon?0:1;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case IDC_MOVIE_DISPLAYSUBTITLES:
|
case IDC_MOVIE_DISPLAYSUBTITLES:
|
||||||
movieSubtitles ^= 1;
|
movieSubtitles ^= 1;
|
||||||
if (movieSubtitles) FCEU_DispMessage("Movie subtitles on",0);
|
if (movieSubtitles) FCEU_DispMessage("Movie subtitles on",0);
|
||||||
|
|
|
@ -67,8 +67,10 @@ BEGIN
|
||||||
MENUITEM "&Record AVI...", MENU_RECORD_AVI
|
MENUITEM "&Record AVI...", MENU_RECORD_AVI
|
||||||
MENUITEM "&Stop AVI", MENU_STOP_AVI
|
MENUITEM "&Stop AVI", MENU_STOP_AVI
|
||||||
MENUITEM "&Record WAV...", MENU_RECORD_WAV
|
MENUITEM "&Record WAV...", MENU_RECORD_WAV
|
||||||
MENUITEM "&Stop WAV", MENU_STOP_WAV
|
MENUITEM "&Stop WAV", ID_AVI_STOPWAV
|
||||||
MENUITEM "Disable Movie Messages", ID_AVI_DISMOVIEMESSAGE
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "Enable HUD recording", ID_AVI_ENABLEHUDRECORDING
|
||||||
|
MENUITEM "Disable messages recording", ID_AVI_DISMOVIEMESSAGE
|
||||||
END
|
END
|
||||||
POPUP "&Lua"
|
POPUP "&Lua"
|
||||||
BEGIN
|
BEGIN
|
||||||
|
@ -127,6 +129,7 @@ BEGIN
|
||||||
MENUITEM "&Lag Counter", MENU_DISPLAY_LAGCOUNTER
|
MENUITEM "&Lag Counter", MENU_DISPLAY_LAGCOUNTER
|
||||||
MENUITEM "&Frame Counter", ID_DISPLAY_FRAMECOUNTER
|
MENUITEM "&Frame Counter", ID_DISPLAY_FRAMECOUNTER
|
||||||
MENUITEM "&Rerecord Counter", ID_DISPLAY_RERECORDCOUNTER
|
MENUITEM "&Rerecord Counter", ID_DISPLAY_RERECORDCOUNTER
|
||||||
|
MENUITEM "Movie status icon", ID_DISPLAY_MOVIESTATUSICON
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "Graphics: &BG", MENU_DISPLAY_BG
|
MENUITEM "Graphics: &BG", MENU_DISPLAY_BG
|
||||||
MENUITEM "Graphics: &OBJ", MENU_DISPLAY_OBJ
|
MENUITEM "Graphics: &OBJ", MENU_DISPLAY_OBJ
|
||||||
|
@ -897,32 +900,31 @@ BEGIN
|
||||||
CONTROL "Set high-priority thread.",CB_SET_HIGH_PRIORITY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,24,146,12
|
CONTROL "Set high-priority thread.",CB_SET_HIGH_PRIORITY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,24,146,12
|
||||||
END
|
END
|
||||||
|
|
||||||
MOVIEOPTIONS DIALOGEX 65520, 76, 147, 231
|
MOVIEOPTIONS DIALOGEX 65520, 76, 147, 222
|
||||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||||
CAPTION "Movie Options"
|
CAPTION "Movie Options"
|
||||||
FONT 8, "MS Sans Serif", 0, 0, 0x0
|
FONT 8, "MS Sans Serif", 0, 0, 0x0
|
||||||
BEGIN
|
BEGIN
|
||||||
DEFPUSHBUTTON "Close",IDC_MOVIE_CLOSE,47,210,49,14,BS_CENTER
|
DEFPUSHBUTTON "Close",IDC_MOVIE_CLOSE,48,200,49,14,BS_CENTER
|
||||||
CONTROL "Pause after playback",IDC_MOVIE_PAUSEAFTERPLAYBACK,
|
CONTROL "Pause after playback",IDC_MOVIE_PAUSEAFTERPLAYBACK,
|
||||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,28,110,10
|
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,26,110,10
|
||||||
CONTROL "Bind savestates to movies",IDC_MOVIE_BINDSAVESTATES,
|
CONTROL "Bind savestates to movies",IDC_MOVIE_BINDSAVESTATES,
|
||||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,66,111,10
|
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,64,111,10
|
||||||
CONTROL "Display movie status icon",IDC_MOVIE_DISPLAYSTATUSICON,
|
|
||||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,85,109,10
|
|
||||||
CONTROL "Display movie subtitles",IDC_MOVIE_DISPLAYSUBTITLES,
|
CONTROL "Display movie subtitles",IDC_MOVIE_DISPLAYSUBTITLES,
|
||||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,105,102,10
|
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,83,102,10
|
||||||
CONTROL "Put movie subtitles in AVI",IDC_MOVIE_SUBTITLESINAVI,
|
CONTROL "Put movie subtitles in AVI",IDC_MOVIE_SUBTITLESINAVI,
|
||||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,33,124,102,10
|
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,33,101,102,10
|
||||||
CONTROL "Automatically backup movies",IDC_MOVIE_AUTOBACKUP,
|
CONTROL "Automatically backup movies",IDC_MOVIE_AUTOBACKUP,
|
||||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,144,114,10
|
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,122,114,10
|
||||||
CONTROL "Load full savestate-movies",IDC_FULLSAVESTATES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,163,110,10
|
CONTROL "Load full savestate-movies:",IDC_FULLSAVESTATES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,141,110,10
|
||||||
LTEXT "loaded states in record mode not",IDC_STATIC,24,175,110,8
|
LTEXT "Loading states in record mode",IDC_STATIC,24,153,106,8
|
||||||
LTEXT "truncated until next frame",IDC_STATIC,23,185,94,8
|
LTEXT "does not immediately truncate",IDC_STATIC,23,163,107,8
|
||||||
LTEXT "(VBA-rr & SNES9x style)",IDC_STATIC,23,195,93,8
|
LTEXT "movie, next frame input does it",IDC_STATIC,23,173,108,8
|
||||||
CONTROL "Close after playback",IDC_MOVIE_CLOSEAFTERPLAYBACK,
|
CONTROL "Close after playback",IDC_MOVIE_CLOSEAFTERPLAYBACK,
|
||||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,47,89,10
|
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,45,89,10
|
||||||
CONTROL "Always suggest Read-Only replay",IDC_MOVIE_SUGGEST_READONLY,
|
CONTROL "Always suggest Read-Only replay",IDC_MOVIE_SUGGEST_READONLY,
|
||||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,10,125,10
|
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,8,125,10
|
||||||
|
LTEXT "(VBA-rr and SNES9x style)",IDC_STATIC,24,184,93,8
|
||||||
END
|
END
|
||||||
|
|
||||||
DWBDIALOGSIMPLE DIALOGEX 33, 99, 250, 39
|
DWBDIALOGSIMPLE DIALOGEX 33, 99, 250, 39
|
||||||
|
@ -1792,7 +1794,7 @@ BEGIN
|
||||||
LEFTMARGIN, 4
|
LEFTMARGIN, 4
|
||||||
RIGHTMARGIN, 138
|
RIGHTMARGIN, 138
|
||||||
TOPMARGIN, 8
|
TOPMARGIN, 8
|
||||||
BOTTOMMARGIN, 226
|
BOTTOMMARGIN, 217
|
||||||
END
|
END
|
||||||
|
|
||||||
"DWBDIALOGSIMPLE", DIALOG
|
"DWBDIALOGSIMPLE", DIALOG
|
||||||
|
|
|
@ -422,7 +422,6 @@
|
||||||
#define IDC_SOUNDS_RESTOREDEFAULTS 1199
|
#define IDC_SOUNDS_RESTOREDEFAULTS 1199
|
||||||
#define BTN_CANCELED 1200
|
#define BTN_CANCELED 1200
|
||||||
#define ID_SOUND_TRITOP 1201
|
#define ID_SOUND_TRITOP 1201
|
||||||
#define IDC_MOVIE_ALWAYS_READONLY 1201
|
|
||||||
#define IDC_MOVIE_SUGGEST_READONLY 1201
|
#define IDC_MOVIE_SUGGEST_READONLY 1201
|
||||||
#define ID_SOUND_QUALITYNOTIFY 1202
|
#define ID_SOUND_QUALITYNOTIFY 1202
|
||||||
#define IDC_CHECK1 1203
|
#define IDC_CHECK1 1203
|
||||||
|
@ -825,6 +824,10 @@
|
||||||
#define ACCEL_CTRL_INSERT 40433
|
#define ACCEL_CTRL_INSERT 40433
|
||||||
#define ID_CONFIG_MUTETURBO 40435
|
#define ID_CONFIG_MUTETURBO 40435
|
||||||
#define ID_DISPLAY_RERECORDCOUNTER 40436
|
#define ID_DISPLAY_RERECORDCOUNTER 40436
|
||||||
|
#define ID_DISPLAY_MOVIESTATUSICON 40437
|
||||||
|
#define ID_AVI_DISPLAYHUD 40438
|
||||||
|
#define ID_AVI_STOPWAV 40439
|
||||||
|
#define ID_AVI_ENABLEHUDRECORDING 40440
|
||||||
#define IDC_DEBUGGER_ICONTRAY 55535
|
#define IDC_DEBUGGER_ICONTRAY 55535
|
||||||
#define MW_ValueLabel2 65423
|
#define MW_ValueLabel2 65423
|
||||||
#define MW_ValueLabel1 65426
|
#define MW_ValueLabel1 65426
|
||||||
|
@ -834,7 +837,7 @@
|
||||||
#ifdef APSTUDIO_INVOKED
|
#ifdef APSTUDIO_INVOKED
|
||||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||||
#define _APS_NEXT_RESOURCE_VALUE 160
|
#define _APS_NEXT_RESOURCE_VALUE 160
|
||||||
#define _APS_NEXT_COMMAND_VALUE 40437
|
#define _APS_NEXT_COMMAND_VALUE 40441
|
||||||
#define _APS_NEXT_CONTROL_VALUE 1262
|
#define _APS_NEXT_CONTROL_VALUE 1262
|
||||||
#define _APS_NEXT_SYMED_VALUE 101
|
#define _APS_NEXT_SYMED_VALUE 101
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -248,8 +248,7 @@ void RedrawList()
|
||||||
}
|
}
|
||||||
void RedrawRow(int index)
|
void RedrawRow(int index)
|
||||||
{
|
{
|
||||||
if (ListView_IsItemVisible(hwndList, index))
|
ListView_RedrawItems(hwndList,index,index);
|
||||||
ListView_RedrawItems(hwndList,index,index);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
enum ECONTEXTMENU
|
enum ECONTEXTMENU
|
||||||
|
|
|
@ -122,6 +122,7 @@ int GetCheckedAutoFirePattern();
|
||||||
int GetCheckedAutoFireOffset();
|
int GetCheckedAutoFireOffset();
|
||||||
|
|
||||||
//Internal variables-------------------------------------
|
//Internal variables-------------------------------------
|
||||||
|
bool AVIenableHUDrecording = false;
|
||||||
bool AVIdisableMovieMessages = false;
|
bool AVIdisableMovieMessages = false;
|
||||||
char *md5_asciistr(uint8 digest[16]);
|
char *md5_asciistr(uint8 digest[16]);
|
||||||
static int winwidth, winheight;
|
static int winwidth, winheight;
|
||||||
|
@ -398,6 +399,7 @@ void UpdateCheckedMenuItems()
|
||||||
//File Menu
|
//File Menu
|
||||||
CheckMenuItem(fceumenu, ID_FILE_MOVIE_TOGGLEREAD, movie_readonly ? MF_CHECKED : MF_UNCHECKED);
|
CheckMenuItem(fceumenu, ID_FILE_MOVIE_TOGGLEREAD, movie_readonly ? MF_CHECKED : MF_UNCHECKED);
|
||||||
CheckMenuItem(fceumenu, ID_FILE_OPENLUAWINDOW, LuaConsoleHWnd ? MF_CHECKED : MF_UNCHECKED);
|
CheckMenuItem(fceumenu, ID_FILE_OPENLUAWINDOW, LuaConsoleHWnd ? MF_CHECKED : MF_UNCHECKED);
|
||||||
|
CheckMenuItem(fceumenu, ID_AVI_ENABLEHUDRECORDING, AVIenableHUDrecording ? MF_CHECKED : MF_UNCHECKED);
|
||||||
CheckMenuItem(fceumenu, ID_AVI_DISMOVIEMESSAGE, AVIdisableMovieMessages ? MF_CHECKED : MF_UNCHECKED);
|
CheckMenuItem(fceumenu, ID_AVI_DISMOVIEMESSAGE, AVIdisableMovieMessages ? MF_CHECKED : MF_UNCHECKED);
|
||||||
|
|
||||||
//NES Menu
|
//NES Menu
|
||||||
|
@ -418,6 +420,7 @@ void UpdateCheckedMenuItems()
|
||||||
CheckMenuItem(fceumenu, MENU_DISPLAY_LAGCOUNTER, lagCounterDisplay?MF_CHECKED : MF_UNCHECKED);
|
CheckMenuItem(fceumenu, MENU_DISPLAY_LAGCOUNTER, lagCounterDisplay?MF_CHECKED : MF_UNCHECKED);
|
||||||
CheckMenuItem(fceumenu, ID_DISPLAY_FRAMECOUNTER, frame_display ? MF_CHECKED : MF_UNCHECKED);
|
CheckMenuItem(fceumenu, ID_DISPLAY_FRAMECOUNTER, frame_display ? MF_CHECKED : MF_UNCHECKED);
|
||||||
CheckMenuItem(fceumenu, ID_DISPLAY_RERECORDCOUNTER, rerecord_display ? MF_CHECKED : MF_UNCHECKED);
|
CheckMenuItem(fceumenu, ID_DISPLAY_RERECORDCOUNTER, rerecord_display ? MF_CHECKED : MF_UNCHECKED);
|
||||||
|
CheckMenuItem(fceumenu, ID_DISPLAY_MOVIESTATUSICON, status_icon ? MF_CHECKED : MF_UNCHECKED);
|
||||||
CheckMenuItem(fceumenu, MENU_DISPLAY_BG, bg?MF_CHECKED:MF_UNCHECKED);
|
CheckMenuItem(fceumenu, MENU_DISPLAY_BG, bg?MF_CHECKED:MF_UNCHECKED);
|
||||||
CheckMenuItem(fceumenu, MENU_DISPLAY_OBJ, spr?MF_CHECKED:MF_UNCHECKED);
|
CheckMenuItem(fceumenu, MENU_DISPLAY_OBJ, spr?MF_CHECKED:MF_UNCHECKED);
|
||||||
CheckMenuItem(fceumenu, ID_INPUTDISPLAY_OLDSTYLEDISP, oldInputDisplay?MF_CHECKED:MF_UNCHECKED);
|
CheckMenuItem(fceumenu, ID_INPUTDISPLAY_OLDSTYLEDISP, oldInputDisplay?MF_CHECKED:MF_UNCHECKED);
|
||||||
|
@ -1014,7 +1017,7 @@ void HideFWindow(int h)
|
||||||
//Toggles the display status of the main menu.
|
//Toggles the display status of the main menu.
|
||||||
void ToggleHideMenu(void)
|
void ToggleHideMenu(void)
|
||||||
{
|
{
|
||||||
if(!fullscreen && (GameInfo || tog))
|
if(!fullscreen && !nofocus && (GameInfo || tog))
|
||||||
{
|
{
|
||||||
tog ^= 1;
|
tog ^= 1;
|
||||||
HideMenu(tog);
|
HideMenu(tog);
|
||||||
|
@ -1651,6 +1654,10 @@ LRESULT FAR PASCAL AppWndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
|
||||||
CloseWave();
|
CloseWave();
|
||||||
loggingSound = false;
|
loggingSound = false;
|
||||||
break;
|
break;
|
||||||
|
case ID_AVI_ENABLEHUDRECORDING:
|
||||||
|
AVIenableHUDrecording ^= 1;
|
||||||
|
FCEUI_SetAviEnableHUDrecording(AVIenableHUDrecording);
|
||||||
|
break;
|
||||||
case ID_AVI_DISMOVIEMESSAGE:
|
case ID_AVI_DISMOVIEMESSAGE:
|
||||||
AVIdisableMovieMessages ^= 1;
|
AVIdisableMovieMessages ^= 1;
|
||||||
FCEUI_SetAviDisableMovieMessages(AVIdisableMovieMessages);
|
FCEUI_SetAviDisableMovieMessages(AVIdisableMovieMessages);
|
||||||
|
@ -1811,6 +1818,10 @@ LRESULT FAR PASCAL AppWndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
|
||||||
rerecord_display ^= 1;
|
rerecord_display ^= 1;
|
||||||
UpdateCheckedMenuItems();
|
UpdateCheckedMenuItems();
|
||||||
break;
|
break;
|
||||||
|
case ID_DISPLAY_MOVIESTATUSICON:
|
||||||
|
FCEUD_ToggleStatusIcon();
|
||||||
|
break;
|
||||||
|
|
||||||
case MENU_DISPLAY_BG:
|
case MENU_DISPLAY_BG:
|
||||||
case MENU_DISPLAY_OBJ:
|
case MENU_DISPLAY_OBJ:
|
||||||
{
|
{
|
||||||
|
|
|
@ -1250,13 +1250,13 @@ void FCEU_DrawMovies(uint8 *XBuf)
|
||||||
if(counterbuf[0])
|
if(counterbuf[0])
|
||||||
DrawTextTrans(ClipSidesOffset+XBuf+FCEU_TextScanlineOffsetFromBottom(30)+1, 256, (uint8*)counterbuf, color+0x80);
|
DrawTextTrans(ClipSidesOffset+XBuf+FCEU_TextScanlineOffsetFromBottom(30)+1, 256, (uint8*)counterbuf, color+0x80);
|
||||||
}
|
}
|
||||||
if(rerecord_display)
|
if(rerecord_display && movieMode != MOVIEMODE_INACTIVE)
|
||||||
{
|
{
|
||||||
char counterbuf[32] = {0};
|
char counterbuf[32] = {0};
|
||||||
sprintf(counterbuf,"%d",currMovieData.rerecordCount);
|
sprintf(counterbuf,"%d",currMovieData.rerecordCount);
|
||||||
|
|
||||||
if(counterbuf[0])
|
if(counterbuf[0])
|
||||||
DrawTextTrans(ClipSidesOffset+XBuf+FCEU_TextScanlineOffsetFromBottom(50)+1, 256, (uint8*)counterbuf, 0x38+0x80);
|
DrawTextTrans(ClipSidesOffset+XBuf+FCEU_TextScanlineOffsetFromBottom(50)+1, 256, (uint8*)counterbuf, 0x28+0x80);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -209,16 +209,15 @@ void FCEU_PutImage(void)
|
||||||
FCEU_LuaGui(XBuf);
|
FCEU_LuaGui(XBuf);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//Update AVI before overlay stuff is written
|
//Save snapshot
|
||||||
if(!FCEUI_EmulationPaused())
|
|
||||||
FCEUI_AviVideoUpdate(XBuf);
|
|
||||||
|
|
||||||
//Save snapshot before overlay stuff is written.
|
|
||||||
if(dosnapsave==1)
|
if(dosnapsave==1)
|
||||||
{
|
{
|
||||||
ReallySnap();
|
ReallySnap();
|
||||||
dosnapsave=0;
|
dosnapsave=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!FCEUI_AviEnableHUDrecording()) snapAVI();
|
||||||
|
|
||||||
if(GameInfo->type==GIT_VSUNI)
|
if(GameInfo->type==GIT_VSUNI)
|
||||||
FCEU_VSUniDraw(XBuf);
|
FCEU_VSUniDraw(XBuf);
|
||||||
|
|
||||||
|
@ -229,8 +228,6 @@ void FCEU_PutImage(void)
|
||||||
FCEU_DrawRecordingStatus(XBuf);
|
FCEU_DrawRecordingStatus(XBuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
DrawMessage(false);
|
|
||||||
|
|
||||||
if(FCEUD_ShouldDrawInputAids())
|
if(FCEUD_ShouldDrawInputAids())
|
||||||
FCEU_DrawInput(XBuf);
|
FCEU_DrawInput(XBuf);
|
||||||
|
|
||||||
|
@ -413,6 +410,26 @@ void FCEU_PutImage(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (FCEUI_AviEnableHUDrecording())
|
||||||
|
{
|
||||||
|
if (FCEUI_AviDisableMovieMessages())
|
||||||
|
{
|
||||||
|
snapAVI();
|
||||||
|
DrawMessage(false);
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
DrawMessage(false);
|
||||||
|
snapAVI();
|
||||||
|
}
|
||||||
|
} else DrawMessage(false);
|
||||||
|
|
||||||
|
}
|
||||||
|
void snapAVI()
|
||||||
|
{
|
||||||
|
//Update AVI
|
||||||
|
if(!FCEUI_EmulationPaused())
|
||||||
|
FCEUI_AviVideoUpdate(XBuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FCEU_DispMessageOnMovie(char *format, ...)
|
void FCEU_DispMessageOnMovie(char *format, ...)
|
||||||
|
|
|
@ -28,4 +28,5 @@ extern GUIMESSAGE subtitleMessage;
|
||||||
void FCEU_DrawNumberRow(uint8 *XBuf, int *nstatus, int cur);
|
void FCEU_DrawNumberRow(uint8 *XBuf, int *nstatus, int cur);
|
||||||
|
|
||||||
std::string FCEUI_GetSnapshotAsName();
|
std::string FCEUI_GetSnapshotAsName();
|
||||||
void FCEUI_SetSnapshotAsName(std::string name);
|
void FCEUI_SetSnapshotAsName(std::string name);
|
||||||
|
void snapAVI();
|
Loading…
Reference in New Issue