Posts for scubed

1 2
6 7
Experienced Forum User, Published Author, Former player
Joined: 7/6/2004
Posts: 155
Thanks a lot for the help! I finally got it to compile. When cleaning and rebuilding, it died on making the resource file. But, when I tried to compile again, for some reason, it started AFTER the resource file. So, I guess it did have a truncated file. It turns out this was a problem with my system, not mono or BizHawk. I had a buggy version of libpng. The problem is described in: https://bugs.gentoo.org/show_bug.cgi?id=472764 (Though, this wasn't on Gentoo. But, that's the problem I had.) They have a simple workaround: for i in BizHawk.Client.EmuHawk/images/*.png; { convert "$i" png32:out.png; mv out.png "$i"; } for i in BizHawk.Client.EmuHawk/images/ControllerImages/*.png; { convert "$i" png32:out.png; mv out.png "$i"; } for i in BizHawk.Client.EmuHawk/images/tastudio/*.png; { convert "$i" png32:out.png; mv out.png "$i"; } That fixed the issue, and it fully compiled, and was runnable. I also ended up changing cgc to cgc.exe in BizHawk.Client.EmuHawk/MainForm.cs and doing chmod 755 output/dll/cgc.exe (I'm not sure if just the latter is necessary.) Of course, now that I got it to start, I'm getting all sorts of problems with it trying to load win32 dlls, e.g. output/dll/blip_buf.dll How is that part supposed to work? I take it this is where the different cores come in? Is there a list of which parts are in C# as opposed to a pre-compiled DLL, or what configuration I need to use to get that?
Post subject: Linux part 2
Experienced Forum User, Published Author, Former player
Joined: 7/6/2004
Posts: 155
Thanks for the advice. I tried building from the mono-portable branch this time. Version.csproj still wouldn't compile, with error CSC: error CS2008: No files to compile were specified I found a workaround. Inside of the csproj file, I added: <CoreBuildDependsOn> </CoreBuildDependsOn> (That should probably be committed to git.) Then it compiled until it reached Input/Input.cs(132,27): error CS0234: The type or namespace name `GamePad360' does not exist in the namespace `BizHawk.Client.EmuHawk'. Are you missing an assembly reference? This message was very strange. As far as I can tell, all of the GamePad360 parts are correctly #if'd out. I even tried putting gibberish in them to see if that would prevent compiling. It didn't. But, apparently there's some later phase that still finds the symbol somehow? So, I ran cpp manually to remove those parts. After that, it compiled! It took me a bit to realize that the binaries were in output. I guess the other .exe files in obj/x86/Release are actually object files or something? When I try to run output/EmuHawk.exe (I'm guessing that's the main program?), I get a window which says: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.ArgumentException: Stream is not a valid .resources file! It was possibly truncated. ---> System.IO.EndOfStreamException: Failed to read past end of stream. at System.IO.BinaryReader.FillBuffer (Int32 numBytes) [0x00000] in <filename unknown>:0 ... at BizHawk.Client.EmuHawk.Properties.Resources.get_logo () [0x00000] in <filename unknown>:0 I have no idea what that means. I figured the resource files would be built into the .exe file? Does that mean I have to give the executable the path to the .resources files? Or does it mean it didn't include them properly during linking? The .resources files appear to exist alongside the .resx files.
Experienced Forum User, Published Author, Former player
Joined: 7/6/2004
Posts: 155
Good to know that the filenames are being fixed. Could you please point me to what to link against for PresentationFramework and System.Windows.Shell on Linux with mono?
Post subject: Linux builds
Experienced Forum User, Published Author, Former player
Joined: 7/6/2004
Posts: 155
I'm not familiar at all with C#, so please point me in the right direction. I wanted to try BizHawk on Linux. Are there any existing packages in major distributions? Not knowing that, I tried to compile BizHawk. So, I grabbed the tarball from https://github.com/TASVideos/BizHawk/archive/1.11.4.tar.gz I don't see a LICENSE file. What is it distributed under? Are there instructions for how to build? It would be helpful to have them at the top level directory. http://tasvideos.org/Bizhawk/Compiling.html doesn't seem to have anything about Linux. It looks like the make command for C# is "msbuild", but mono has a corresponding command "xbuild". So, I tried: xbuild /p:Configuration=Release BizHawk.sln It tried to run Build/BizHawk.Build.Tool.exe, but that failed, since it didn't say "mono" in front. I tried it with "mono". fatal: Not a git repository (or any of the parent directories): .git That's very strange. I'm using the official release. Why would it expect to find .git? I tried removing the reference to Version.csproj from BizHawk.sln. That worked until it got to files being misnamed. (I realize Windows API is case preserving, so on a case sensitive filesystem, the files all show as not being found.) So, I tried to patch that: mv Version/version.csproj Version/Version.csproj mv BizHawk.Emulation.Cores/Consoles/Nintendo/N64/NativeAPI BizHawk.Emulation.Cores/Consoles/Nintendo/N64/NativeApi mv BizHawk.Emulation.Cores/Consoles/Nintendo/N64/NativeApi/mupen64plusInputAPI.cs BizHawk.Emulation.Cores/Consoles/Nintendo/N64/NativeApi/mupen64plusInputApi.cs mv BizHawk.Client.Common/tools/Watch/DwordWatch.cs BizHawk.Client.Common/tools/Watch/DWordWatch.cs mv BizHawk.Client.EmuHawk/CustomControls/ExceptionBox.Designer.cs BizHawk.Client.EmuHawk/CustomControls/ExceptionBox.designer.cs mv BizHawk.Client.EmuHawk/tools/CDL.Designer.cs BizHawk.Client.EmuHawk/tools/CDL.designer.cs After that, it compiled. However, it failed at linking: /nix/store/j3pdxzddyh8z9l3sym8ym1x1aln92291-mono-4.0.4.1/lib/mono/4.5/Microsoft.Common.targets: warning : Reference 'PresentationFramework' not resolved JumpLists.cs(6,22): error CS0234: The type or namespace name `Shell' does not exist in the namespace ` System.Windows'. Are you missing an assembly reference? I see that there's http://www.go-mono.com/status/status.aspx?reference=4.0&profile=4.5&assembly=PresentationFramework but, it's not clear to me what to install for that. Is it in a separate package from mono itself? That it mentions a Linux version of BizHawk elsewhere, I take it this has been solved previously. Sorry again for the basic questions. Any help would be appreciated.
Experienced Forum User, Published Author, Former player
Joined: 7/6/2004
Posts: 155
Ah, you're right. I just had a cached version. Thanks for pointing that out. I should have noticed, since that's a common problem. As another recommendation for next time, you probably shouldn't set the cache time as large. For this page, a day would be appropriate, so the browser will start fetching the page again not too long after it has been returned to being dynamic.
Experienced Forum User, Published Author, Former player
Joined: 7/6/2004
Posts: 155
Like others in this thread, when I visited http://tasvideos.org/ and saw the broken page, I got confused. I understand the need to protect the front page from lots of traffic, but I have a few questions: 1) Why not put a comment explaining that the main front page is currently disabled and link to somewhere explaining in more detail? 2) Why did you use an old snapshot showing being from the end of 2014? If you had a recent snapshot, then at least people would see newer movies. 3) Are pages cached? If the issue was server load, and serving a static page works, that suggests that you could have just put caching in front of the normal page and have been able to continue serving. 4) Is there another page to see the most recently accepted movies? 5) When are you going to restore the main page to serving normally again? Just generally, it would be helpful to be more clear about what's going on, instead of making it look like the front page is broken.
Experienced Forum User, Published Author, Former player
Joined: 7/6/2004
Posts: 155
It's great to see such a big improvement. Luck manipulation makes getting enough magic much faster. The final boss fight is so much better. This is a fantastic way to celebrate the 10th anniversary.
Experienced Forum User, Published Author, Former player
Joined: 7/6/2004
Posts: 155
Ah, I didn't realize the Time Lord did anything. Still, without talking to the Time Lord, it is possible to walk by the enemies in Castle Exodus (though, with heavy use of status to regroup away from them and careful timing). So, I was wondering if talking to the Time Lord was actually necessary. It seems that it should be faster without talking to him.
Experienced Forum User, Published Author, Former player
Joined: 7/6/2004
Posts: 155
Kuwaga: Yes, what you describe is roughly what I had in mind. Note to self: Give examples to be more intelligible. Thanks for giving an example to make it clearer. There is 1 minor difference. For frame 55: hold B for 800 frames you wouldn't want to just give a number of frames. That would still be prone to desyncing. (And is easily accomplished by run length encoding.) Consider if you wanted to go to the end of a platform. Instead of saying number of frames, you could run until the "on ground" bit disabled, then go back 1 frame. So, Segment "Run to end of platform 3": hold right and B while on ground This is similar to your example, but has the extra advantage of working even if there is a different amount of lag. Or, if the previous segment is modified to land on a different position on the platform.
This is a typo, right? I don't understand, why would a complicated (I should say "more precise") AI be slower than a simple AI that checks fewer conditions.
Your question reveals the answer. The more of the space you have to search, the longer it will take. There is also the question of how much domain specific knowledge (i.e. tricks for that game) you feed into the AI. If you don't give it everything that is currently known, it is unlikely to figure much of it out. But, with the small segments approach, you are basically encoding the current best movie, thus it should take almost the exact same amount of time. Even if you fed all known tricks into a more general AI, it is unlikely to produce something as good as the current best movie (depending on the exact type of search it is doing) just for not figuring out how to efficiently put all of the tricks together.
Experienced Forum User, Published Author, Former player
Joined: 7/6/2004
Posts: 155
I don't understand what's your point. You are talking about making LUA scripts that uses artificial AI? Please explain it. Otherwise: Use the search function.
AI stands for artificial intelligence. Previously, people have thought about trying to make bigger, more complicated AIs to complete the games. But, those would be very big and complicated. Likely, they would be far from the fastest known times and would take a very long time to do backtracking search too. What I'm proposing instead is a bunch of little AIs, each capable of doing a segment of the movie. They should be much simpler, and in fact similar to what already exists. But, it should be much easier to manipulate a movie if expressed in terms of them. There is nothing in what I said that is LUA specific. But, since that's what FCEUX uses, that is likely what it would be written in.
I think he means LUA scripts, which allow to find a better route for a TAS. i.e. in Pokemon Yellow run, it would be a script, which calculates the fastet way of beating this game.
This also allows putting in domain-specific knowledge that it would be extremely difficult for an AI to figure out. Indeed, some segments are likely to be exact keypresses for lack of a better way of expressing it, such as entering the name in Pokemon which affects which messed up pokemon appear much later in the game. An AI wouldn't figure that out on its own in any reasonable amount of time. Also, note that it wouldn't be for the whole game at once. It would be in short segments.
It's not always the best solution if a text advances, the LUA script presses the button, there are also frame-rules.
This is where the conditions come in. It could check if pressing A on that frame actually causes the text to advance, and only press when it would. For the Chrono Trigger TAS, for example, they only used turbo A since it would be too tedious. But, an AI would be able to do that trivially. There are other tricks that require frame rules, so it could just check the relevant counter to align it properly. So, yes, you would tell it the frame rules, and it would take that into account when searching.
To improve the entertainment of a movie we should do different actions, like shoot an enemy from far away as possible and the next enemy from near as possible. Lag should be considered.
Some of the segments could easily be dance segments, such as the spelling out text in Gradius. As for variety like that, you could specify in the segments how to mix it up, but if such annotations were missing, yes, the movie would be likely to be bland. But, we already have movies doing such things, just at the input per frame level. Instead, we could be doing it at a higher level of abstraction. You could still say to do different maneuvers for variety. As far as optimization factors, most movies would try to minimize enemies on the screen and lag frames directly. So, the simple backtracking search would search for ways that have less lag, yes.
Post subject: Higher Level Movies
Experienced Forum User, Published Author, Former player
Joined: 7/6/2004
Posts: 155
I was considering how movies could be expressed in higher level terms. Right now, most of the movies are done by humans with only really tricky and tedious parts done by AI. Currently, movies are represented as a sequence of button presses. This is a very low level way of expressing it. When we think of movies, we think of them in terms of events. We think about Mario starting to run, jumping off of a koopa troopa, and landing on a platform. What if we expressed movies this way too? So, this could be implemented by having a script in the sense of a movie script implemented as a LUA script with the emulator. The movie could be divided into discrete steps. Each step would have: 1) What to do 2) When the step was over 3) What constraints have to hold afterwards For what to do, there would be a bunch of standard maneuvers for a game. For example, 1) Have Mario run right with holding right and B 2) Swim by pressing A on certain frames, maintaining X velocity. 3) Press A every time it would advance the text. The idea is that these should be fairly simple and not require large amounts of backtracking. Some backtracking would be allowed for simple optimization, but it should try to keep it much less than in the AI search case, such as getting the large weapon capsules in Megaman 1. This way movies could be tweaked easily. (But, for it to work, there would probably have to be a few parts where it would go out of its way to manipulate a drop or enemy spawn, etc.) To remain tractable, backtracking should be contained within a step, not between separate steps. (But I'm not sure if that would work in practice. It seems that there will be a few parts where it would just get stuck then.) To know when to go on to the next step, a condition would have to be given to know when the current step is done. Some example conditions would be: 1) player.x >= 500 2) player.state == on_ground 3) enemy[1].state == dead 4) enemy[1].drop == weapon_capsule 5) respawn_time < 20 6) at_title_screen 7) level == 8 Since some searching would be involved, constraints can also be given. They can be soft or hard constraints. These can also help with pruning. Obviously, the more searching is involved, the more important these are. 1) bombs.count > 7 2) money > 100 3) ammo == 0 4) hp == 100 5) next_prn & 63 == 35 Some constraints can be put on the whole movie too. That way it will try to enforce that it is a no damage, no dying, or all enemies killed run. For testing, tweaking, and making the movie originally, it would need to be possible to resume making a movie from where you left off in terms of both which step you are on and the input already generated. For reproducability, a fixed pseudorandom number (PRN) seed would be used, and reset for each step. This has some notable differences from other proposals on this site. This is NOT saying that we would need to make a really good AI capable of beating the game entirely on its own. This is about having a middle ground between the two, so a human is still making ("directing") the movie, and the AI is filling in small blanks, which should be much more tractable. Advantages: 1) Easier to splice movies together. 2) Can have very simple frame reference for when events occurred. 3) Can more directly compare different paths. 4) Can update entire movie as new tricks are found. Difficulties: 1) It doesn't exist yet. 2) It requires more programming knowledge, and in that sense is more obscure. 3) Have to track down all of the relevant memory addresses. 4) Have to catalog all of the standard techniques used in the game. 5) Some parts won't fit standard techniques and need custom code. Though, a lot of that has already been done for current tools. The additional parts could well lead to even better tools. If this caught on, the script could be included with the submissions. I realize this is a bit pie-in-the-sky, but figured I should write it down and see what others thought about it.
Post subject: mplayer2 testing
Experienced Forum User, Published Author, Former player
Joined: 7/6/2004
Posts: 155
I tried playing the new encode. Here's what I found. I updated my machine to have the latest version of mplayer, ffmpeg, and mplayer2 as provided by my OS (Gentoo). mplayer SVN-r32624-4.4.5: Played sound, but video was gray with noise on top ffmpeg 0.7.5: Worked perfectly mplayer2 2.0: Died immediately with "Unsupported PixelFormat 78" (Off topic) Also, I tested out mplayer2's other claims. It says it better handles high FPS movies on nVidia cards. That's exactly the problem I have on my machine watching videos on this site. I am using the proprietary nvidia driver. So, I put a video, let it fall behind on mplayer and reproduced it on mplayer2. Unfortunately, it behaved identically. It can't handle high FPS movies any better. (Or there's something else wrong with my machine. Or the fix is in a newer version of mplayer2.) Looks like it is still going to be watching movies in slow motion for me when it would be a problem. It also says it has multithreading. I'm on a dual core machine. I found a movie that my computer was too slow to play at full speed. mplayer: it wasn't able to keep up and the audio fell out of sync. It used 50% CPU (1 of the 2 cores) ffmpeg: Seemed to use less CPU overall (38%) but once it got to a busier scene, it stopped rendering altogether. mplayer2: CPU was at 94% and the movie played faster. For comparison, I also tried a regular movie to see how much CPU it used. mplayer2 used slightly move CPU than mplayer for playing the movie identically. Though, for trying to use both cores when you don't need it and the extra cost of synchronizing, this is probably fair. So, as far as I can see: mplayer2: Can watch this movie: No Handles high FPS: No Is multithreaded: Yes
Experienced Forum User, Published Author, Former player
Joined: 7/6/2004
Posts: 155
Did anyone notice the names at the end are off by 2? It looks like they meant to put Chip and Dale as the first 2 characters to walk across the screen, but forgot to, so the first 2 enemies are labelled Chip and Dale instead. So similarly, for all of the other enemies to walk across. For example, towards the end, Candle and Ghost occur 2 after the candle and ghost enemies.
Experienced Forum User, Published Author, Former player
Joined: 7/6/2004
Posts: 155
> I think the published run can be improved by quite a few seconds. I strongly agree. My first movie was rather sloppy in retrospect. You should easily be able to do it much faster. Especially, if you take on all 4 elementals simultaneously and get multi-hits on them. Also, for the Earth elemental, I show off a bug where you can attack from 1 screen over. It's probably faster not to use the bug. Taking damage makes enough sense. You should do whatever is fastest. I eagerly await seeing the full run.
Experienced Forum User, Published Author, Former player
Joined: 7/6/2004
Posts: 155
I see that there's a separate movie above, but are there any plans to make a movie including the special world? It should end right after getting the master key. As for whether hacks should be allowed, each one should be examined on its own merits. If it is substantially different in an interesting way, then it should be allowed. I agree with the above comment about considering if someone said that it was its own game, if you would believe them (excluding that you know it is a hack). Also, it would be convenient if movie submissions also link to the regular forum thread about the game, in addition to the per-submission thread.
Experienced Forum User, Published Author, Former player
Joined: 7/6/2004
Posts: 155
I'm on AMD64 on Linux. Does anyone know if it's possible to run pcsx-rr on such a machine? I just downloaded the v009 and extracted it. I had to mess with it a bit. I figured out that I could get around DWORD and BOOL (Microsoft types) by including plugins/gpuTASsoft/externals.h from cheats.h . It wanted setlocale despite not having #include <locale.h> (even though I didn't set ENABLE_NLS) so I added in that. Then, it fails to assemble due to trying to use x86 assembly on an AMD64 machine. So, I tried adding in the flag -m32 to make it generate 32-bit code. Of course, then it can't link to any of the libraries I have installed. Has anyone had any luck here? Is there an easy way to get it to work? I'm a bit curious how much faster asm is vs. the compiler nowadays.
Experienced Forum User, Published Author, Former player
Joined: 7/6/2004
Posts: 155
This movie addressed my main complaint with the previous movie by getting the speedups. Getting the shuriken power-up definitely helped. The final boss fight was great. However, there is still 1 more thing I would like to see, that should make it faster. The final boss fight was about 18 s long. Each shot from the scroll does 16 damage. Aimed properly, you should be able to hit twice with each wave. The boss of the game has 128 HP, I think. So, if you hit him with all 3 shots twice, he'd be down to only 32 HP. So, it should take roughly 5 s to kill him if you use both the scroll and shurikens. So, I think that you can get a scroll faster than that, though manipulating the doors is difficult, if I recall correctly. I've had the final area give me scrolls without the miniboss fight before. So, has anyone investigated if use the scroll secondary weapon would be faster on the boss of the game?
Experienced Forum User, Published Author, Former player
Joined: 7/6/2004
Posts: 155
While not exactly what asked for, this video goes along similar lines: http://www.youtube.com/watch?v=Xz0PaPpmGa8 It is the "self-playing Mario", but set to coincide with the song.
Experienced Forum User, Published Author, Former player
Joined: 7/6/2004
Posts: 155
It's been a while since I've used the Windows version of FCEU, but I believe that F3 hides the menu. I think it shows the shortcut key in the menu. That way you can use ALT as a button. (I also use ALT and CTRL.)
Experienced Forum User, Published Author, Former player
Joined: 7/6/2004
Posts: 155
I'm curious. Is there an official place that the recent executables for FCEU are hosted? It looks like they are just on different file holding sites. Also, is the code base in any one place? Or are there just patches floating around? I have a lot of webspace and am able to host compiled versions. I might also be able to host the source code in svn or something like that, if it would be useful to people. Any thoughts?
Post subject: Newer version
Experienced Forum User, Published Author, Former player
Joined: 7/6/2004
Posts: 155
I have updated that version. Now it includes a compiled version for x86 and AMD64. It has source code that can be directly compiled on Linux without tweaking. http://lingcog.iit.edu/~scubed/games.xml#Modified_FCEU http://lingcog.iit.edu/~scubed/fceu_luke_linux.tar.bz2
Experienced Forum User, Published Author, Former player
Joined: 7/6/2004
Posts: 155
I found that the version of ZSNES I'm using segfaults if you try to take a picture, so I ended up using printscreen on a window. http://lingcog.iit.edu/~scubed/m3dep_flyingjunk.png I tried for a while to get where the ground was flying, but didn't have much luck. Instead, here is a bit of the background flying 1 screen above where it should be. It goes away if you scroll there and back. The glitch is purely graphical. Even if solid ground tiles are copied, they do not make the sky solid. This happens in all big rooms, notably the starting room. http://lingcog.iit.edu/~scubed/m3dep_whysolid.png Also, I found that tile curious. Why is it solid, but nothing's there? (Note that the pictures will only be there temporarily.)
Experienced Forum User, Published Author, Former player
Joined: 7/6/2004
Posts: 155
I just beat the game with v1.87. During the final escape, after reaching your ship, you can go back up to the map room, however, the screen stops scrolling, which makes it difficult to reach. The timer graphics gets messed up once you are in the room. Is there a way to save the ecoons in there? Or are they somewhere else? Or are they not reachable in the hack? Also, I noticed many Metroid 2 style glitches where part of the map would wrap around. However, it was only the graphics. The tiles would still act properly. I found many places where you can get stuck by standing up from the ball. Since you just get the wave beam after lowering the lava, I think I would have preferred that I could just swim down through the lava without needing to get the space jump to activate the statue. Getting over the lava is easy since the area below is all flat which allows you to build a shinespark. It was generous of you to make the screw attack easy to get without fighting anything. The gate is easy to raise without the wave beam.
Experienced Forum User, Published Author, Former player
Joined: 7/6/2004
Posts: 155
I see that you did the whole run without powerups. Have you considered getting any powerups? Or are they too hard to manipulate. Specifically: 1) Getting speedups in the more horizontal areas so you can run through them faster. If you can manipulate their drop, these should be able to pay for themselves. 2) In the locked doors, you can get scrolls. They inflict 16 damage each. This could make the final battle much shorter. 3) There are shuriken powerups. Their position appears to be fixed. This would only be useful if you couldn't get the scroll. I'm guessing that the shurikens are too slow to actually be useful against bosses? Still, getting 1 to double the damage might make the later boss battles go much faster. Have you tested any of these possibilities?
Experienced Forum User, Published Author, Former player
Joined: 7/6/2004
Posts: 155
Wow, this game is amazing. Thanks for bringing it to my attention. Area 7 is just ... scary. I had to use save states to get past it. After beating the last guy, after the ending credits, it shows a big green ship. Is there any way to fight it? If you beat the game with the Smart side, it will aim at the green ship in the ending credits and you can fire at him, but he doesn't get hurt.
1 2
6 7