Posts for partyboy1a

1 2
5 6 7
15 16
Experienced Forum User, Published Author, Player (136)
Joined: 9/18/2007
Posts: 389
One of the crazier ideas I got while making the inputreplayer script allow "movie playback" and "movie record" on a per-player base. So if you create a multiplayer run, and have recorded enough for player one, you could load some state and start recording for player two while preserving input from player one... Maybe something like this can already be done with TAS movie editor, but I'm not sure. In general, I think that someone using the emulator shouldn't need any knowledge about the internal structure of the SNES. It should be like a blackbox which can be used in the most understandable way. And with the tables in inputreplayer, the SNES comes closer to this black box. And when there is an instruction like input.set(5,5,1), this requires details from inside the black box. input.joyset(player, buttontable) doesn't require the same knowledge, which is actually a good thing. Where more knowledge is needed, there exist more sources for errors. An even more extreme example would be extracting graphics There could be a command like graphics.get("sprites") which returns a table {[1] = {x = 12, y = 32, verticalflip = true, horizontalflip = false, bitmap = somebitmap}, [2] = ... }. (Well, I don't know if anything like that is possible with the bsnes core.) You wouldn't even have to know that there is some OAM which has some of these information, and it needs absolutely no knowledge about the bitplane format used by SNES games.
Experienced Forum User, Published Author, Player (136)
Joined: 9/18/2007
Posts: 389
Well, why not. Just tell me all programs I need for that and where to get them (and the compile instructions)
Experienced Forum User, Published Author, Player (136)
Joined: 9/18/2007
Posts: 389
natt wrote:
partyboy1a wrote:
Randil wrote:
partyboy1a wrote:
I can't start Bizhawk at all. I can see the menus for a moment, but before I can do anything, it gives me a Direct3D error: D3DERR_INVALIDCALL -2005530516. Windows XP SP3.
This sounds like the problem I had, and the solution was to install the BizHawk prereqs: http://bizhawk.googlecode.com/files/bizhawk_prereqs.zip
still the same error. Just if it matters: DirectX 9.0c 4.09.0000.0904 Edit: dxdiag.txt has been sent to natt.
It seems that you are running a multi-monitor setup? If so, does the problem go away when in single monitor mode?
No, this didn't fix it, still exactly the same error. Too bad I don't know any reason for that... Most probably it's happening just before Bizhawk starts simulating noise.
Experienced Forum User, Published Author, Player (136)
Joined: 9/18/2007
Posts: 389
I think this game is quite a nice candidate for a 2-player 100% run -- collect every collectable item, defeat every single enemy which appears on screen, complete every bonus stage. Here's a small testrun for the first level: http://www.youtube.com/watch?v=dimBeM9HjwQ I think you can see quite clearly that 2 players will bring in a lot of action. This game will be very hard to TAS. Even in this seemingly straight-forward level there are a lot of difficult and non-trivial turn-arounds. And the bonus stages... They are about as complex for a TAS as solving the traveling salesman problem. EDIT: There is also a WIP for the GBA version of this game from Cloudragonz, for one player. Most levels seem to be identical in this game, but Asterix moves 10% faster, and there is no damage animation at all, and the cutscenes are shorter, and you can take a lot more damage. So for one player, the GBA version is the better choice.
Experienced Forum User, Published Author, Player (136)
Joined: 9/18/2007
Posts: 389
Randil wrote:
partyboy1a wrote:
I can't start Bizhawk at all. I can see the menus for a moment, but before I can do anything, it gives me a Direct3D error: D3DERR_INVALIDCALL -2005530516. Windows XP SP3.
This sounds like the problem I had, and the solution was to install the BizHawk prereqs: http://bizhawk.googlecode.com/files/bizhawk_prereqs.zip
still the same error. Just if it matters: DirectX 9.0c 4.09.0000.0904 Edit: dxdiag.txt has been sent to natt.
Experienced Forum User, Published Author, Player (136)
Joined: 9/18/2007
Posts: 389
Oh, PointResize is an internal AVIsyth function by now? I didn't know that... (But I'm quite sure HQ2x() is not, which is also in pointsize.dll) And DSS2 is also something new to me... Good thing I posted it, so I learned something new. Then, here this should be the code you want:
DSS2("00.avi") 

i      = Height / 2 
top    = Crop(0, 0, -0, -i) 
bottom = Crop(0, i, -0, -0) 
left = last
right = top.Pointresize(top.Width() * 2, top.Height() * 2)
StackHorizontal(left, right)
Experienced Forum User, Published Author, Player (136)
Joined: 9/18/2007
Posts: 389
McBobX wrote:
how I can put the top screen on the left or right corner when encoding NDS Runs,Like this: [...] Please,what's avaiable script for doing that
This script requires pointsize.dll
loadplugin("pointsize.dll")
directshowsource("your_dumped_emulator_video_goes_here.avi")
left = last
right = last.crop(0,0,width(),height()/2))
right = right.pointresize(right.width()*2,right.height()*2)
stackhorizontal(left, right)
Experienced Forum User, Published Author, Player (136)
Joined: 9/18/2007
Posts: 389
I can't start Bizhawk at all. I can see the menus for a moment, but before I can do anything, it gives me a Direct3D error D3DERR_INVALIDCALL -2005530516. Windows XP SP3. Edit r3527 fixes this problem, at least for me.
Experienced Forum User, Published Author, Player (136)
Joined: 9/18/2007
Posts: 389
dnnzao wrote:
partyboy1a wrote:
I guess that the last Snes9x movie on this site will be Yoshis Island 100%.[...]
Super Mario World 100% and Super Demo World 100% also has too much work done. Restarting them would be a pain in the ass for the TASers
Oh, almost forgot about them. But as I said, we shouldn't START new runs with Snes9x. FINISHing existing WIPs is OK, no matter how long it takes. Well, I hope that not a single Snes9x WIP becomes abandoned, this would make it really complicated.
Experienced Forum User, Published Author, Player (136)
Joined: 9/18/2007
Posts: 389
Yay, that's a lot more convenient. This way, it will be a lot easier to translate Snes9x scripts to lsnes. There should also be input.joyget(player) returning such a table. (Then it also doesn't require something like
input.joyset(1, {right = "toggle", other = "keep"})
you can use
joykeys = input.joyget(1)
joykeys.right = not joykeys.right
input.joyset(1,joykeys)
instead.)
Experienced Forum User, Published Author, Player (136)
Joined: 9/18/2007
Posts: 389
Deprecating an old emulator is always a good idea. It makes life easier for the emulator developers. And switching to LSNES will increase chances for console verification for sure. And I also don't like what seems to happen because of the inaccuracies of Snes9x -- some movies were optimized for emulator-dependant lag, at least I think so. The biggest problem for me are the very high requirements for LSNES -- "fast forward" speed there is 50% realtime speed for me, Snes9x gives 1000% realtime speed. Well, and I fast-forwarded a few hundred times through my movies... And: While I agree that the UI of LSNES isn't as user-friendly as Snes9x, you will get used to it. All the important functions can be used by hotkeys anyway, so there is no big difference during the actual movie making. I guess that the last Snes9x movie on this site will be Yoshis Island 100%. (I think the WIP won't sync on LSNES or Bizhawk, and restarting this movie is far too much work.) And I think we shouldn't allow anyone to START new Snes9x movies anymore. This is a rule that absolutely everyone will understand. By the way: I didn't know that Bizhawk actually has support for SNES, the Bizhawk page also doesn't tell about that.
Experienced Forum User, Published Author, Player (136)
Joined: 9/18/2007
Posts: 389
a small testrun for the first level, and a timestretch 2x encode (This game uses flickering almost everywhere.)
Post subject: Super Widget
Experienced Forum User, Published Author, Player (136)
Joined: 9/18/2007
Posts: 389
I saw this game on the SNES Wishlist, so it might be a candidate for a nice TAS. The bad thing is that there is nearly no source of information for this one. There are level passwords, and a longplay, but nothing more. As far as I could deduce it from the video, you can become a world watcher level 5. This might or might not require collecing all 4 blue coins in each level. If you have become world watcher level 5, you can skip four stages. I have not verified that. There are three autoscrollers in the game. And there seems to be no "run" button, and not even a single warp. So... do you think this game is well-suited for a TAS or not?
Experienced Forum User, Published Author, Player (136)
Joined: 9/18/2007
Posts: 389
Experienced Forum User, Published Author, Player (136)
Joined: 9/18/2007
Posts: 389
Thanks for all the votes and comments so far. kooz I was able to copy quite large parts from your movie, and I would have copied the last part from Real Rumblings (where you shoot away the last wall) too if it worked. For example, your attempt in the beginning of Ploktown was more than a second better than my best attempt. And I think I would still struggle with the Penkino fight. It's insanely confusing to fight all of them at the same time. II think I would have given up there if your fight didn't sync... (And If you are a co-author, you will remain a "Player", otherwise you become a "Former Player". I think you don't care about that.) So if you claim co-authorship, you'll get it.
Experienced Forum User, Published Author, Player (136)
Joined: 9/18/2007
Posts: 389
That was a fairly short and optimized run, so this one gets a Yes from me.
Experienced Forum User, Published Author, Player (136)
Joined: 9/18/2007
Posts: 389
Well, it's not memory watch, but also a Lua script from Snes9x. Just some sample code:
	for i = 1, 60 do
		joypad.set(1,{right=true,down=true,A=true})
		snes9x.frameadvance()
	end
	for i = 1, 200 do
		joypad.set(1,{})
		snes9x.frameadvance()
	end
	for i = 1, 70 do
		joypad.set(1,{L=true})
		snes9x.frameadvance()
	end
There are some limitations in lsnes making the same code impossible: There is no frame-advance Lua function in lsnes, and setting input is only allowed in the on_input callback. So here is my workaround:
button_by_index = {
	[4] = "u", [5] = "d", [6] = "l", [7] = "r",
	[8] = "A", [0] = "B", [9] = "X", [1] = "Y",
	[3] = "S", [2] = "s",[10] = "L",[11] = "R"
}

button_by_name = {}
for index,name in pairs(button_by_index) do
	button_by_name[name] = index
end

function press(keys, player)
	if player == nil or player == 1 then padnum = 0 end
	if player == 2 then padnum = 4 end
	assert(padnum ~= nil, "invalid player")

	local a = {[0] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
	
	for i=1,string.len(keys) do
		local index = button_by_name[string.sub(keys,i,i)]
		if index ~= nil then
			a[index] = 1
		end
	end
	
	input.seta(padnum, 0, a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11])
end

getnextinput = coroutine.create(function()
	for i = 1, 60 do
		coroutine.yield("rdA")
	end
	
	for i = 1, 200 do
		coroutine.yield("")
	end
	
	for i = 1, 70 do
		coroutine.yield("L")
	end
end)

function on_input()
	local b, keys = coroutine.resume(getnextinput)
	if b then
		press(keys)
	end
end
Some ideas to make it less complicated?
Experienced Forum User, Published Author, Player (136)
Joined: 9/18/2007
Posts: 389
Experienced Forum User, Published Author, Player (136)
Joined: 9/18/2007
Posts: 389
I was wondering too... maybe I should consider making a Fisherprice I Can Remember TAS, it seems to be more popular... Jokes aside. I think my submission is missing a streaming encode. Temp encode should be readyhttp://youtu.be/iWHZjMATjeI. Youtube destroyed my encode, no luck this time.
Experienced Forum User, Published Author, Player (136)
Joined: 9/18/2007
Posts: 389
I restarted again... Now the levels before Plok Town are 115 frames faster. I had the idea for a completely new strategy in Plok Town one of the fleas can be killed by beans, which lets me perform an additional slide. My current try is about 30 frames slower than the usual way, which is in the WIP storage. It might be worth to be done as a speed/entertainment tradeoff. If you are a luck manipulation master, you might be able to manage two eggs, three beans, and your positioning towards the sawblade at the same time better than me... I'd be glad to see someone beat my attempt there. Edit finished again, almost 10 seconds faster overall.
Post subject: Yay, it's done!
Experienced Forum User, Published Author, Player (136)
Joined: 9/18/2007
Posts: 389
I finally got it! This game got beaten, finally! The complete movie can be found in my WIP storage. It's 3 minutes and 47 seconds faster than the published movie.
Experienced Forum User, Published Author, Player (136)
Joined: 9/18/2007
Posts: 389
Yay, I could save about 24 seconds in Gohome Cavern... and another 58 frames were saved in the earlier levels. Sponge Rocks is now even more impressive. See here: http://dehacked.2y.net/microstorage.php/info/510602692/plok-wip64.smv If you want to, you can try your best and improve Gohome Cavern. I think the egg manipulation was quite good, but not perfect, and I haven't done that many attempts on improving the slides.
Experienced Forum User, Published Author, Player (136)
Joined: 9/18/2007
Posts: 389
Ilari wrote:
partyboy1a wrote:
- if your ROM doesn't end with .sfc: use SNESpurify to convert your ROM
Should not be needed (unless it is a bad dump, some really weird copier format or one of those weird double-headered ROMs).
Well, I haven't tested that. but I know that bsnes requires such a conversion in many cases. Anyway, I think the idea behind SNESpurify really makes sense to me. The emulator shouldn't have to handle all those obscure headers at all, because they are not present on the original SNES cartriges.
Experienced Forum User, Published Author, Player (136)
Joined: 9/18/2007
Posts: 389
It would be nice to have some kind of tutorial for lsnes. I needed about one hour just to find out how to configure the keys. And the wxwidgets version doesn't work for me, maybe because I use two keyboards, the SDL version seems to handle that nicely. An easy-to-use GUI would be nice. In the meantime, here is a little tutorial for those who want to give this emulator a try: How to configure the controllers - start lsnes-sdl.exe at least once - open %appdata%\lsnes\lsnes.rc with some editor. for example notepad++ - look for for the lines starting with "bind-key" - edit those lines, for example this way:
bind-key w +controller1up
bind-key a +controller1left
bind-key s +controller1down
bind-key d +controller1right
bind-key kp6 +controller1A
bind-key kp5 +controller1B
bind-key kp8 +controller1X
bind-key kp4 +controller1Y
bind-key kp3 +controller1start
bind-key kp2 +controller1select
bind-key kp_enter +advance-frame
bind-key pause pause-emulator
You can find out the correct key names in section 10 "Modifier and key names" of manual.txt or manual.lyx How to start a game - if your ROM doesn't end with .sfc: use SNESpurify to convert your ROM and now, either: - start cmd.exe - cd into the emulator directory - enter lsnes-sdl.exe --rom=<YOUR ROM HERE> or: - start lsnes-wxwidgets.exe - click "Pick..." to choose your ROM - click "Open ROM" - click "Start" to create a new movie, and to start the game. You can add this tutorial to the manual, or package it with the next release of the emulator, or modify it in some way.
Experienced Forum User, Published Author, Player (136)
Joined: 9/18/2007
Posts: 389
Yay, one more level with a big shortcut! This will be in the final TAS for sure! I will upload the most recent WIPs soon
1 2
5 6 7
15 16