Posts for Dammit

Experienced Forum User, Published Author, Experienced player (590)
Joined: 1/11/2007
Posts: 103
FatRatKnight wrote:
for some reason, FCEUX's gui.register is called repeatedly while paused.
Good job finding that. I went ahead and tested some more: Works in: FCEUX, PCSX, FBA Doesn't work in: Gens, snes9x, VBA It doesn't work in Gens so it must not be the intended behavior. I'm going to work with the assumption that no one is fixing the broken, missing, or wrongly implemented Lua things, so I put out a new version exploiting it. Beware that input.get catches keys even when the emu is out of focus. There was another problem: FBA cannot run a register function more than once or else the new call overrides the old. But "input-display.lua" is already using gui.register. I had to make a small change to it to deal with this.
BadPotato wrote:
Use hotkey, while unpaused? Nice! I tried the Dammit script and it work fine here. But on my keyboard(cf layout) the "quote" hotkey is "#" instead.
It looks like the emulua hotkey naming was designed without any regard for non-US keyboards. I can't do anything about that but it shouldn't be a serious problem.
Also, it would be nice to have an another hotkey that load the last saved macro, rather than playbackfile = "myMacro.mis" in macro-options.lua everytime you record something.
It's doable but that would be another hotkey for the user to worry about. Can you record the macro then just rename the file to myMacro.mis? All this would be easier if there was a filepicker function in Lua.
Thought, I'm somewhat confuse how you manage to do this... Could you post a sample script where I can trigger a part of my code when some key is pressed. (emulator used: pcsxrr) Example: I press the "w" hotkey and it print in the console "You pressed the 'w' hotkey."
FatRatKnight's trick also works in PCSX so try this:
local key="W"
local lastframe=nil

function Fn()
		local now=input.get()[key]
		if now and not lastframe then
			print("You pressed the '" .. key .. "' hotkey.")
		end
		lastframe=now
end
gui.register(Fn)

while true do
	emu.frameadvance()
end
Experienced Forum User, Published Author, Experienced player (590)
Joined: 1/11/2007
Posts: 103
mz wrote:
MAME/MESS have something like this too for their movie code, if I recall correctly.
Hm. Any more info on this?
mz wrote:
If you need to take screenshots or AVI dumps with it, I can tell you where to add a line of code to the CPS2 driver (or any other you need).
Eh, you know how much I fail at compiling. Maybe you could make the changes at your leisure.
BadPotato wrote:
Can you give us directly a .zip package with all the dll, gd, and other lua script?
I'd like to, but I can't find a reliable, fire-and-forget filehost. mz, can you put a package in the fba-rr downloads?
Experienced Forum User, Published Author, Experienced player (590)
Joined: 1/11/2007
Posts: 103
Try setting buffersize to 1 and y to 0xc0.
Experienced Forum User, Published Author, Experienced player (590)
Joined: 1/11/2007
Posts: 103
Sort of a related thing, I made a lua script to add vertically scrolling display, as seen in training mode in some fighting games. It's for 6-button Capcom games, but it could be expanded to cover other kinds. It currently works in fba, snes9x and gens. I'd like to add pcsx when it gets better lua support. Instructions: Download the script, and the dll files for gd mentioned in the script. Put the dlls with the emulator's exe and put the image files wherever the script is. Run the game and the script and it should be working. If the images aren't found, it will resort to ghetto mode, where only text is shown. (That's bad.) Some of the buttons are from SF4, courtesy of error1. If you idle too long, the next command will clear the buffer, just like in training mode. You can disable each player with the q and w keys. (You can change those keys, the idle time, and other stuff by editing the things above the dotted line.) If you want to totally clear everything you can just reload the script. Some limitations of the current emulators:
    * The images don't show up in FBA's screenshots or AVI dumps. * When I try to dump AVI in snes9x with the script on, it crashes. * The images look messed up in gens. * If you load savestates, the buffer will not be updated to reflect the new state. That can't be fixed until all the emus get savestate.registerload.
Experienced Forum User, Published Author, Experienced player (590)
Joined: 1/11/2007
Posts: 103
If it plays and sounds fine it should be OK. Probably the difference is due to different dumping procedures. Interestingly, your cue does not work with my bin (BIOS loads but boot fails), and probably my cue does not work with your bin. We are obviously working with the same source files.
Experienced Forum User, Published Author, Experienced player (590)
Joined: 1/11/2007
Posts: 103
Mednafen supports iso+wav+cue also. In other words, you could have stopped after converting the mp3s to wavs, and just used your valis1 (J).cue. However, mednafen-rr and pcejin accept only bin+cue. Plus it's touchy that the cue only reference data and audio tracks and no other information. So do the following: 1) Throw away the bin file you made from the iso file. 2) Put the wavs with your iso file and mount them in Daemon with this cue:
FILE "Track No01.wav" WAVE
  TRACK 01 AUDIO
    INDEX 01 00:00:00
FILE "track02.iso" BINARY
  TRACK 02 MODE1/2048
    PREGAP 00:03:09
    INDEX 01 00:00:00
FILE "Track No03.wav" WAVE
  TRACK 03 AUDIO
    PREGAP 00:02:00
    INDEX 01 00:00:00
FILE "Track No04.wav" WAVE
  TRACK 04 AUDIO
    PREGAP 00:00:06
    INDEX 01 00:00:00
FILE "Track No05.wav" WAVE
  TRACK 05 AUDIO
    PREGAP 00:00:07
    INDEX 01 00:00:00
FILE "Track No06.wav" WAVE
  TRACK 06 AUDIO
    PREGAP 00:00:06
    INDEX 01 00:00:00
FILE "Track No07.wav" WAVE
  TRACK 07 AUDIO
    PREGAP 00:00:06
    INDEX 01 00:00:00
FILE "Track No08.wav" WAVE
  TRACK 08 AUDIO
    PREGAP 00:00:07
    INDEX 01 00:00:00
FILE "Track No09.wav" WAVE
  TRACK 09 AUDIO
    PREGAP 00:00:05
    INDEX 01 00:00:00
FILE "Track No10.wav" WAVE
  TRACK 10 AUDIO
    PREGAP 00:00:07
    INDEX 01 00:00:00
FILE "Track No11.wav" WAVE
  TRACK 11 AUDIO
    PREGAP 00:00:05
    INDEX 01 00:00:00
FILE "Track No12.wav" WAVE
  TRACK 12 AUDIO
    PREGAP 00:00:06
    INDEX 01 00:00:00
FILE "Track No13.wav" WAVE
  TRACK 13 AUDIO
    PREGAP 00:00:08
    INDEX 01 00:00:00
FILE "Track No14.wav" WAVE
  TRACK 14 AUDIO
    PREGAP 00:00:07
    INDEX 01 00:00:00
FILE "Track No15.wav" WAVE
  TRACK 15 AUDIO
    PREGAP 00:00:04
    INDEX 01 00:00:00
FILE "Track No16.wav" WAVE
  TRACK 16 AUDIO
    PREGAP 00:00:06
    INDEX 01 00:00:00
FILE "Track No17.wav" WAVE
  TRACK 17 AUDIO
    PREGAP 00:00:05
    INDEX 01 00:00:00
FILE "Track No18.wav" WAVE
  TRACK 18 AUDIO
    PREGAP 00:00:07
    INDEX 01 00:00:00
FILE "Track No19.wav" WAVE
  TRACK 19 AUDIO
    PREGAP 00:00:06
    INDEX 01 00:00:00
FILE "Track No20.wav" WAVE
  TRACK 20 AUDIO
    PREGAP 00:00:06
    INDEX 01 00:00:00
FILE "Track No21.wav" WAVE
  TRACK 21 AUDIO
    PREGAP 00:00:05
    INDEX 01 00:00:00
FILE "Track No22.wav" WAVE
  TRACK 22 AUDIO
    PREGAP 00:00:03
    INDEX 01 00:00:00
FILE "Track No23.wav" WAVE
  TRACK 23 AUDIO
    PREGAP 00:00:07
    INDEX 01 00:00:00
FILE "Track No24.wav" WAVE
  TRACK 24 AUDIO
    PREGAP 00:00:04
    INDEX 01 00:00:00
FILE "Track No25.wav" WAVE
  TRACK 25 AUDIO
    PREGAP 00:00:05
    INDEX 01 00:00:00
FILE "Track No26.wav" WAVE
  TRACK 26 AUDIO
    PREGAP 00:00:07
    INDEX 01 00:00:00
FILE "Track No27.wav" WAVE
  TRACK 27 AUDIO
    PREGAP 00:00:05
    INDEX 01 00:00:00
FILE "Track No28.wav" WAVE
  TRACK 28 AUDIO
    PREGAP 00:00:07
    INDEX 01 00:00:00
FILE "Track No29.wav" WAVE
  TRACK 29 AUDIO
    PREGAP 00:00:08
    INDEX 01 00:00:00
3)Use a dumping program to convert the mounted virtual CD to bin+cue. I used ImgBurn myself. 4) You should end up with a big (>500 MB) bin file and a cue that looks something like this:
FILE "Valis.bin" BINARY
  TRACK 01 AUDIO
    INDEX 01 00:00:00
  TRACK 02 MODE1/2352
    PREGAP 00:02:00
    INDEX 00 00:44:53
    INDEX 01 00:45:63
  TRACK 03 AUDIO
    PREGAP 00:02:00
    INDEX 01 03:38:42
  TRACK 04 AUDIO
    INDEX 00 05:38:61
    INDEX 01 05:38:68
  TRACK 05 AUDIO
    INDEX 00 07:42:16
    INDEX 01 07:42:24
  TRACK 06 AUDIO
    INDEX 00 09:43:74
    INDEX 01 09:44:06
  TRACK 07 AUDIO
    INDEX 00 11:45:20
    INDEX 01 11:45:27
  TRACK 08 AUDIO
    INDEX 00 13:47:70
    INDEX 01 13:48:03
  TRACK 09 AUDIO
    INDEX 00 15:49:60
    INDEX 01 15:49:66
  TRACK 10 AUDIO
    INDEX 00 17:52:34
    INDEX 01 17:52:42
  TRACK 11 AUDIO
    INDEX 00 18:12:67
    INDEX 01 18:12:73
  TRACK 12 AUDIO
    INDEX 00 18:38:02
    INDEX 01 18:38:09
  TRACK 13 AUDIO
    INDEX 00 19:03:60
    INDEX 01 19:03:69
  TRACK 14 AUDIO
    INDEX 00 19:34:06
    INDEX 01 19:34:14
  TRACK 15 AUDIO
    INDEX 00 19:48:09
    INDEX 01 19:48:14
  TRACK 16 AUDIO
    INDEX 00 20:12:58
    INDEX 01 20:12:65
  TRACK 17 AUDIO
    INDEX 00 21:43:66
    INDEX 01 21:43:72
  TRACK 18 AUDIO
    INDEX 00 23:17:48
    INDEX 01 23:17:56
  TRACK 19 AUDIO
    INDEX 00 25:53:57
    INDEX 01 25:53:64
  TRACK 20 AUDIO
    INDEX 00 27:31:54
    INDEX 01 27:31:61
  TRACK 21 AUDIO
    INDEX 00 28:51:59
    INDEX 01 28:51:65
  TRACK 22 AUDIO
    INDEX 00 30:02:01
    INDEX 01 30:02:05
  TRACK 23 AUDIO
    INDEX 00 35:18:16
    INDEX 01 35:18:24
  TRACK 24 AUDIO
    INDEX 00 42:00:66
    INDEX 01 42:00:71
  TRACK 25 AUDIO
    INDEX 00 45:03:55
    INDEX 01 45:03:61
  TRACK 26 AUDIO
    INDEX 00 48:23:36
    INDEX 01 48:23:44
  TRACK 27 AUDIO
    INDEX 00 48:57:22
    INDEX 01 48:57:28
  TRACK 28 AUDIO
    INDEX 00 49:43:17
    INDEX 01 49:43:25
  TRACK 29 AUDIO
    INDEX 00 49:56:22
    INDEX 01 49:56:31
5) Now load pcejin (or mednafen-rr) and point it to that cue file. It should work now if you have your bios set up right.
Post subject: FBA input display project
Experienced Forum User, Published Author, Experienced player (590)
Joined: 1/11/2007
Posts: 103
One of the difficulties in adding input display is that there are so many different input setups. Different games have different numbers of buttons and players. The buttons have different names. Some have analog controls. Some modules (unique setups) cover many games, some just one. If you want to add input display to an uncovered game, you just need to add a module to the list by defining the input abbreviations and where on screen you want them shown. Find the unabbreviated names under "Input" > "Map game inputs..." Then come up with sensible text symbols for each of them, and place them somewhere on screen that doesn't cover important stuff. Follow the examples given for formatting and syntax. You don't have to use x,dx,y,dy for positioning or loops for multiple players, but they make it easier to do tweaks later. Share your added modules here. This information needs to be collected for all games sooner or later, and at some point input display can be internalized into FBA. The script in the FBArr-004 archive can be split into the active part and the module list for easier reading. Make sure the list is named "modules.lua" in this case. input display.lua
--FBA-rr input display script (preliminary)
--This script must be reloaded when you change games.

local c={        --colors:
on1 =0xffff00ff, --pressed: yellow inside
on2 =0x000000ff, --pressed: black border
off1=0x00000000, --unpressed: clear inside
off2=0x00000033  --unpressed: mostly-clear black border
}

inp={}
dofile("modules.lua","r")

local function inputsmatch(table1,table2) --check if all keys of table1 are also keys of table2
	local checklist={}
	for k,v in pairs(table1) do
		checklist[k]=false
		for l,u in pairs(table2) do
			if k==l then
				checklist[k]=true
				break
			end
		end
	end
	for k,v in pairs(checklist) do
		if v==false then
			return false
		end
	end
	return true
end

local module
for k,v in pairs(inp) do --find out which module is the correct one
	if inputsmatch(v,joypad.get(1)) then
		module=k
		break
	end
end

local function inpdisplay(m)
	if not module then
		gui.text(0,0,"I don't know how to display this game's input.\nPlease add a module for it!")
	else
		for k,v in pairs(joypad.get(1)) do
			if m[k] then --display only defined inputs
				local color1,color2=c.on1,c.on2
				if m[k][4] then --analog
					gui.text(m[k][2]+m[k][4],m[k][3]+m[k][5],v,color1,color2) --display the value
				else --digital
					if v==0 then color1,color2=c.off1,c.off2 end --button not pressed
				end
				gui.text(m[k][2],m[k][3],m[k][1],color1,color2)
			end
		end
	end
end

gui.register(function()
	inpdisplay(inp[module])
end)
modules.lua
--Define below input abbreviations and on-screen positions for each module.
--You may add new modules and comment out any inputs you never want displayed.

local x,dx,y,dy,i
--------------------------------------------------------------------------------
--Capcom 6-button fighters
x,dx=0x8,0x128
y,dy=0xd0,0
i={}
for n=0,1 do
	i["P"..(n+1).." Coin"]        ={"C", x+dx*n+0x00,y+dy*n+0x0}
	i["P"..(n+1).." Start"]       ={"S", x+dx*n+0x00,y+dy*n+0x8}
	i["P"..(n+1).." Up"]          ={"^", x+dx*n+0x18,y+dy*n+0x0}
	i["P"..(n+1).." Down"]        ={"v", x+dx*n+0x18,y+dy*n+0x8}
	i["P"..(n+1).." Left"]        ={"<", x+dx*n+0x10,y+dy*n+0x4}
	i["P"..(n+1).." Right"]       ={">", x+dx*n+0x20,y+dy*n+0x4}
	i["P"..(n+1).." Weak Punch"]  ={"LP",x+dx*n+0x30,y+dy*n+0x0}
	i["P"..(n+1).." Medium Punch"]={"MP",x+dx*n+0x38,y+dy*n+0x0}
	i["P"..(n+1).." Strong Punch"]={"HP",x+dx*n+0x40,y+dy*n+0x0}
	i["P"..(n+1).." Weak Kick"]   ={"LK",x+dx*n+0x30,y+dy*n+0x8}
	i["P"..(n+1).." Medium Kick"] ={"MK",x+dx*n+0x38,y+dy*n+0x8}
	i["P"..(n+1).." Strong Kick"] ={"HK",x+dx*n+0x40,y+dy*n+0x8}
end
table.insert(inp,i)

--------------------------------------------------------------------------------
--NeoGeo
x,dx=0x8,0xd0
y,dy=0xc8,0
i={}
for n=0,1 do
	i["P"..(n+1).." Coin"]    ={"C",x+dx*n+0x04,y+dy*n+0x0}
	i["P"..(n+1).." Start"]   ={"S",x+dx*n+0x00,y+dy*n+0x8}
	i["P"..(n+1).." Select"]  ={"s",x+dx*n+0x08,y+dy*n+0x8}
	i["P"..(n+1).." Up"]      ={"^",x+dx*n+0x20,y+dy*n+0x0}
	i["P"..(n+1).." Down"]    ={"v",x+dx*n+0x20,y+dy*n+0x8}
	i["P"..(n+1).." Left"]    ={"<",x+dx*n+0x18,y+dy*n+0x4}
	i["P"..(n+1).." Right"]   ={">",x+dx*n+0x28,y+dy*n+0x4}
	i["P"..(n+1).." Button A"]={"A",x+dx*n+0x38,y+dy*n+0x4}
	i["P"..(n+1).." Button B"]={"B",x+dx*n+0x40,y+dy*n+0x4}
	i["P"..(n+1).." Button C"]={"C",x+dx*n+0x48,y+dy*n+0x4}
	i["P"..(n+1).." Button D"]={"D",x+dx*n+0x50,y+dy*n+0x4}
end
table.insert(inp,i)

--------------------------------------------------------------------------------
--PGM
x,dx=0x10,0x70
y,dy=0xc0,0
i={}
for n=0,3 do
	i["P"..(n+1).." Coin"]    ={"C",x+dx*n+0x00,y+dy*n+0x0}
	i["P"..(n+1).." Start"]   ={"S",x+dx*n+0x00,y+dy*n+0x8}
	i["P"..(n+1).." Up"]      ={"^",x+dx*n+0x14,y+dy*n+0x0}
	i["P"..(n+1).." Down"]    ={"v",x+dx*n+0x14,y+dy*n+0x8}
	i["P"..(n+1).." Left"]    ={"<",x+dx*n+0x0c,y+dy*n+0x4}
	i["P"..(n+1).." Right"]   ={">",x+dx*n+0x1c,y+dy*n+0x4}
	i["P"..(n+1).." Button 1"]={"1",x+dx*n+0x2c,y+dy*n+0x4}
	i["P"..(n+1).." Button 2"]={"2",x+dx*n+0x34,y+dy*n+0x4}
	i["P"..(n+1).." Button 3"]={"3",x+dx*n+0x3c,y+dy*n+0x4}
	i["P"..(n+1).." Button 4"]={"4",x+dx*n+0x44,y+dy*n+0x4}
end
table.insert(inp,i)

--------------------------------------------------------------------------------
--TMNT games (Konami)
x,dx=0x10,0x48
y,dy=0x20,0
i={}
for n=0,3 do
	i["Coin "..(n+1)]       ={"C",x+dx*n+0x00,y+dy*n+0x4}
	i["P"..(n+1).." Up"]    ={"^",x+dx*n+0x14,y+dy*n+0x0}
	i["P"..(n+1).." Down"]  ={"v",x+dx*n+0x14,y+dy*n+0x8}
	i["P"..(n+1).." Left"]  ={"<",x+dx*n+0x0c,y+dy*n+0x4}
	i["P"..(n+1).." Right"] ={">",x+dx*n+0x1c,y+dy*n+0x4}
	i["P"..(n+1).." Fire 1"]={"1",x+dx*n+0x2c,y+dy*n+0x4}
	i["P"..(n+1).." Fire 2"]={"2",x+dx*n+0x34,y+dy*n+0x4}
end
table.insert(inp,i)

--------------------------------------------------------------------------------
--After Burner II (Sega)
x,dx=0x80,0x10
y,dy=0xc8,0
i={
	["Coin 1"]    ={"C1", x+0x00,y+0x00},
	["Coin 2"]    ={"C2", x+0x00,y+0x08},
	["Start 1"]   ={"S1", x+0x00,y+0x10},
	["Left/Right"]={"L/R",x+0x10,y+0x00,dx,dy},
	["Up/Down"]   ={"U/D",x+0x10,y+0x08,dx,dy},
	["Throttle"]  ={"T",  x+0x10,y+0x10,dx,dy},
	["Vulcan"]    ={"V",  x+0x30,y+0x04},
	["Missile"]   ={"M",  x+0x30,y+0x0c}
}
table.insert(inp,i)

--------------------------------------------------------------------------------
Experienced Forum User, Published Author, Experienced player (590)
Joined: 1/11/2007
Posts: 103
The fastest is going to be the SNES version, since it's missing the Intestinal Distress level. (It also has better colors.) But the best version now available for TASing is Sega CD. It has the Big Bruty level missing in the others (but not an additional Andy Asteroids), homing missiles, and the improved CDA music. Some new sections have been added to the Junkyard and Heck stages. (Snowman might not be skippable.) Plus if you finish on hard you get this. (Easy mode gets this.) There's a comparison between SNES and SegaCD here: http://www.gamefaqs.com/console/segacd/file/922262/43975 This doesn't leave a whole lot of reason to stick with the Genesis cart.
Experienced Forum User, Published Author, Experienced player (590)
Joined: 1/11/2007
Posts: 103
So, should the winning entry be submitted or not? Not surprisingly, some of the contestants want to go over the game again with the proper optimization treatment. I know I want to, and Cpadolf and Truncated are also interested. Anyone else? How much interest is there in a collaboration? Because I don't want to enter into a competition that never ends. PS. Thanks to andymac for being the impresario. That is an important role and you did it well.
Experienced Forum User, Published Author, Experienced player (590)
Joined: 1/11/2007
Posts: 103
Whenever going into something like this I never know whether to expect to win or expect to lose, so I just don't expect anything. The first two days were spent trying to find our asses with both hands (and succeeding only partially). The next four days saw only one stage/boss per day. On Saturday morning we were only done with stage 2 and strongly considering quitting. After some pep-talk from Truncated I punched the "quit screwing around" button and 30 or so sleepless hours later, the rest is history. I can't emphasize how much my work would have sucked if it hadn't been for mz's support. He is a great source of ideas and criticism and tested things out and wrote lua scripts so I could concentrate on the grunt work. Up to the very end, he was watching micro progress reports and giving feedback. I could not have kept working had it not been for his support. I must also thank paul_t for his testruns and satan the Sega enthusiast for the insights in the game thread. When you compare the gameplay to Team 2 you can see that we won against a smarter, tighter team thanks in no small part to guileful thinking. mz's analysis of stage 3 saved a huge amount of time. We skipped the user-friendly seeking lasers and wide beam, and did something totally unexpected in stage 6. I suppose we should leave the details to a submission text?
Experienced Forum User, Published Author, Experienced player (590)
Joined: 1/11/2007
Posts: 103
adelikat wrote:
Also, should the time reflect the fps of the emulator? Or the fps of the real console?
The listed time should be derived from the emu framerate, because that's how long the movie actually takes to play. If the emu framerate is inaccurate, it's up to the emu developers to fix that. Shortcuts like 50 fps and 60 fps are fine for casual conversions, but tasvideoagent does not mind the extra computation. Also, would it be too much trouble to make TVA report the number of frames, in addition to the seconds conversion?
Experienced Forum User, Published Author, Experienced player (590)
Joined: 1/11/2007
Posts: 103
moozooh wrote:
byuusan wrote:
That's probably the biggest hurdle. I am very, very big on release early, release often. And indeed I have no desire to maintain backward-compatibility at the expense of progress. I'm at v048, and I think since bsnes started, there's only been one new release of ZSNES, and two of Snes9X.
It will probably make sense to make a feature-freeze branch at one point (say, after that cycle-PPU thingie gets finished), and only update it once per year or so. On one hand, it will let you update the main branch as often as you see fit, on the other, it will reduce the version conflicts to acceptable minimum.
Here's another approach: Separate the emulation core from the rest of the application and develop them separately. The core to be used would be selected (via dropbox, config file setting, whatever) before playing or recording. You would be able to use one binary and set of configs to play any number of versions. When a movie is recorded, the core being used would be keyed to the input file, so viewers know which core to use. Since it's all transparent to the user, this frees you up as the developer from worrying about the frequency of releases. I think this would be a good model for any fast-moving emu, e.g. MAME and MESS derivatives.
Post subject: Re: TASVideos on Streaming media sites.
Experienced Forum User, Published Author, Experienced player (590)
Joined: 1/11/2007
Posts: 103
adelikat wrote:
This is still in the experimental stages. So far I have only uploaded AVI files. I have yet to try to upload a new MKV that takes advantage of brframes & deldup (this causes youtube to freak out).
In general, wouldn't it be better for the encoder/publisher to upload a lossless or minimally lossy encode to the streaming site, instead of the final, hyper-optimized MKV product? Since the other site is going to do its own processing anyway, this may result in marginally better quality, and avoids the risk of choking on complicated features like brframes & deldup.
Experienced Forum User, Published Author, Experienced player (590)
Joined: 1/11/2007
Posts: 103
Whatever happened with this? Looks like the only torrents currently on mininova are the Jewel Master and Alien Soldier movies. But they're not the same as the torrents tracked by tasvideos. http://www.mininova.org/user/TASvideos Isn't it possible to host a torrent from multiple trackers at once?
Experienced Forum User, Published Author, Experienced player (590)
Joined: 1/11/2007
Posts: 103
Using Electrospecter's info, here is a script that shows the HP next to the enemies, so you don't have to puzzle over the ramwatch window.
local address = {enemy=0xFFB090, xcam=0xFF01A8, ycam=0xFF01AA}
local ex,ey,ehp = 0x0,0x2,0xC
local maxslots,interval = 9,0x80

gui.register ( function()
	for slot = 0,maxslots do
		local hp = memory.readwordsigned(address.enemy+ehp+slot*interval)
		if hp > 0 then
			local x = memory.readwordsigned(address.enemy+ex+slot*interval)
			local y = memory.readwordsigned(address.enemy+ey+slot*interval)
			gui.text(x-memory.readword(address.xcam),y-memory.readword(address.ycam),hp)
		end
	end
end)
Experienced Forum User, Published Author, Experienced player (590)
Joined: 1/11/2007
Posts: 103
OK, here is an encode, 143 MB, with deldup and chapters. The optimal bitrate turned out to be about the same as the Gunstar Heroes movie. http://www.sendspace.com/file/pwun6q edit: The quotas and limits seem to be temporary. Keep trying if you can't get it. Of course, it will eventually expire in a month or so.
Experienced Forum User, Published Author, Experienced player (590)
Joined: 1/11/2007
Posts: 103
The new mednafen (0.8.C) has some fix related to PCE audio tracks. (Current mednafen-rr is forked from 0.8.A, according to the cfg.) I recall that Alcohol makes cue sheets off by 2 seconds. It's manually correctable, but still a bad choice unless you are trying to defeat some exotic copy prevention.
Post subject: Optimize Your Profits
Experienced Forum User, Published Author, Experienced player (590)
Joined: 1/11/2007
Posts: 103
Found the manual here: http://pdf.textfiles.com/manuals/ARCADE/S-Z/ Nando speed seems to control how fast things get harder. (Nando means difficulty level.) Stage magic continue gives free weapon power ups each stage.
Ferret Warlord wrote:
Edit: Hm, the movie file seems to save your current dip settings when you start recording. Will people berate me if I choose to start with preferred settings?
In that case there's no point in starting from default. One frame saved. So it is possible to record dipswitch changes, but pointless because you'd have to reset.
Experienced Forum User, Published Author, Experienced player (590)
Joined: 1/11/2007
Posts: 103
You don't bind them to keys. Just set them and they get recorded. Pause, start recording, go to Game > Set Dipswitches and make the changes. Then reset button + frame advance to apply them. (What's "Nando Speed"?)
Experienced Forum User, Published Author, Experienced player (590)
Joined: 1/11/2007
Posts: 103
Hey, what about mednafen? It does SMS and GG. But they're not documented because the developer apparently doesn't like the system. The core is from an emulator called SMS plus. How does that compare to Dega? Edit: Oh, it's not news.
Experienced Forum User, Published Author, Experienced player (590)
Joined: 1/11/2007
Posts: 103
Thanks, everyone. It's good we have another publisher too.
Derakon wrote:
How'd you do that "jump off the bottom of the screen, then come back on" trick? It seemed like you stayed down there far too long for it to be just a generous "this is where you die" line.
Indeed that's what it was, to one frame from death.
Experienced Forum User, Published Author, Experienced player (590)
Joined: 1/11/2007
Posts: 103
adelikat wrote:
Accepting for publication & processing. I can't encode this, hopefully someone else will.
Dromiceius wrote:
Derakon wrote:
The encoding for this movie gets pretty badly desynced (desunc?) starting on the first cycle, third stage or thereabouts. Unfortunate.
Same. MPlayer is reporting that my machine is too slow. It's a Celeron D 3.2ghz and hasn't had this problem with any other video I've downloaded in the last two years, so I figure that's probably not the case. Turning on -frameskip "solves" the problem by running at about 45 FPS. This is with the latest SVN of MPlayer, FFmpeg, and x264. Converting the video to another format didn't seem to help at all.
And how about the one I provided? I did aim to meet the publication rules. I'm pretty much ambivalent on the obsoletion issue for reasons above.
Experienced Forum User, Published Author, Experienced player (590)
Joined: 1/11/2007
Posts: 103
The script is good but not ready for prime time if that's what we want. The gamefaqs source from which LagDotCom prepared the pngs has problems in labyrinth L3 (missing data), courage L2 (missing entirely) and wisdom L2 (off by one). Some better maps are here: http://shrines.rpgclassics.com/genesis/sitd/maps.shtml The best solution is to pull them right out of the ROM, but what we have going here is pretty elegant too. I made some improvements(?), a more visible cursor and enabled more color coding, but the maps still need to be fixed. http://lua.pastey.net/116119
Experienced Forum User, Published Author, Experienced player (590)
Joined: 1/11/2007
Posts: 103
Non-dipswitch configuration data and gameplay usage data are stored in NVRAM (.nv files in ./config/games/). There is no need to use start-from-savestate movies if fbm can be given an option to start with "dirty" NVRAM. And because the possibility of using NVRAM to cheat or give unfair advantage is nil, there is no need for verification movies either. (We're not talking about new-game+ characters with maxed out stats here.)
Experienced Forum User, Published Author, Experienced player (590)
Joined: 1/11/2007
Posts: 103
Ferret Warlord wrote:
And seriously, go ahead of let it replace my run; I honestly think this version deserves precedent over it.
Well this is abnormal situation for two reasons. First, the home port looks, sounds and plays like the arcade. (Usually arcade is plainly better. I predict many cross-system obsoletions for that reason.) Second is you get to shorten your Genesis run with the level select, which is (sort of) more in the spirit of a TAS. How ironic that the first arcade movie is such a case.