So, I did a test commentary for a couple of my runs, and found it a fairly enjoyable experience. I decided to see what kind of improvements I could do for streaming
the first is my setup to include the emulator audio, Skype, and my microphone. There are a few options to do this, however, this is the solution that worked for me.
My Via Audio Deck (Onboard soundcard software) has the ability to create, in windows, a playback channel and a recording channel. Thus, I unmute my mic (so it can be heard through the speakers) and run the line-out through a standard 3/4" splitter, and run one side to my speakers, and the other directly back into the line-in port. Now, to stop feedback, the line-in is muted, however, it is still fed to the recording channel. Thus, everything coming through my speakers is heard in ustream.
Also, I felt that the ability to draw on the screen, like a sports-commentator, would be beneficial for explaining parts of the runs. Thus, I whipped up a Lua script, and will be using this to do future commentaries. This one was built for gens, but could be easily adapted to other platforms.
Download Madden.luaLanguage: lua
TempBuf ={};
ScreenBuffer = {};
for i = 1,120,1 do
NewBuf = {};
for j = 1,160,1 do
NewBuf[j] = 0;
end;
ScreenBuffer[i] = NewBuf;
end;
--*****************************************************************************
function press(button)
--*****************************************************************************
-- Checks if a button is pressed.
-- The tables it accesses should be obvious in the next line.
-- best function EVER, written by FatRatKnight
if keys[button] and not last_keys[button] then
return true
end
return false
end
pause_mode = false;
cleared = true;
PM = savestate.create();
while true do
keys = input.get();
if keys.leftclick then
cleared = false;
xm = math.max(1,math.floor(keys.xmouse/2));
ym = math.max(1,math.floor(keys.ymouse/2));
TempBuf = ScreenBuffer[ym];
TempBuf[xm] = 1;
ScreenBuffer[ym] = TempBuf;
end;
if keys.rightclick then
end;
if press("C") then
cleared =true;
for i = 1,120,1 do
TempBuf = ScreenBuffer[i];
for j = 1,160,1 do
TempBuf[j] = 0;
end;
ScreenBuffer[i] = TempBuf;
end;
end;
if press("space") then
pause_mode = not pause_mode;
if pause_mode then
savestate.save(PM);
end;
end;
last_keys = keys;
if pause_mode then
savestate.load(PM);
sound.clear();
end;
gens.frameadvance();
if not cleared then
for i = 1,120,1 do
TempBuf = ScreenBuffer[i];
for j = 1,160,1 do
if TempBuf[j] == 1 then
gui.drawbox((j-1)*2+1,(i-1)*2+1,(j-1)*2+2,(i-1)*2+2,'yellow');
end;
end;
end;
end;
end;
This script has a psuedo-pause function, that allows you to draw on the screen, while the game appears to be paused. As most lua implementations don't have sound.clear(), there will be buzzing noises during these pauses.
Here is an example
So, I'm think I will do a full, real commentary of Shining Force 1 soon.