Posts for BadPotato

1 2 3
22 23
Experienced Forum User
Joined: 1/26/2009
Posts: 558
Location: Canada - Québec
So, any result? I guess it all come on how you do training. So I'm not sure if random input alone can build a good enough model to apply new data. Even if you probably have a set of rule to reward/punish to handle randomness, maybe adding a human playthrough into your training set can help.
Experienced Forum User
Joined: 1/26/2009
Posts: 558
Location: Canada - Québec
Thanks for all the resources. Keep it up.
RL_scientist wrote:
Is there a way to disable the video to have faster emulation ?
Out of of the box, I believe FCEUX is a bit limited with these kind of rendering option.
RL_scientist wrote:
To a better extent, I wonder if it's possible to take into account all of the RAM as a state. It's probably too heavy for a fast computation (2000*8bits) and too noisy for a good learning (the bits encoding the music or the sprites are useless) but maybe there's a way to pre-process it to remove the useless stuff and shrink the size.
Yeah, any static data such as music or sprite, wouldn't be relevant 99.9% of the time. Maybe you can tune up some function to filter those... so again you don't get out of hand with too much processing. That being said, if you can take a screenshot, I guess this could be reusable data for ML. It's true that with a resolution of 256x240 pixel for the NES, it can be hard to settle down with a particuliar kind of algorithm you can use without getting out of hand. But I still think it could be relevant data. As for the script using the q-value, well I'll need to check up more stuff about how Q-learning works, but I just wanted to point out there's a 0 on the numerator division when you update the Q-value : (1-1/a)*q_value[state_action]+... Also do you think math.random() could help for the choice of input? In any case, your script seem to work just fine for gradius... yet for this particular game, I'm a bit unsure how well it perform in comparison to simply bruteforcing or backtracking on the long run.
Experienced Forum User
Joined: 1/26/2009
Posts: 558
Location: Canada - Québec
I did a bit of ML lately as well and I seriously really don't think using lua could lead to any great implementation which can be easily maintained or been improved. It's true that MarI/O did quite a bit of buzz, but the result is actually quite simple, since the fitness function only check for horizontal scroll. So, if you don't go the lua-way, maybe could be to directly hack fceux in C... or: An another possibility could be to add a socket capability which can remotely call the lua API from an external language. If you are interested, I started a simple project that call the bizhawk lua API from an external app using java with UDP. Here you go:
    -Server(luascript+luasocket+timer) -Client(java... but you could re-implement it to any language you want).
Of course, it would be much better to embed the udp-server directly in the emulator rather than lua.... also huh, the project I made is kind of unfinished, but you could definitely build on something like that. And I guess it go without saying, but the benefit of this approach is that you can make a real distributed system accross different computer(and on different platform), so your processing can easily scale. So far, I thought this could help for a genetic algorithm performing several prediction from a large dataset. In any case, let me known if you like the idea or if this sound too confusing, maybe I'll just try to eleborate. edit: fixed github branch url
Experienced Forum User
Joined: 1/26/2009
Posts: 558
Location: Canada - Québec
I agree, but I complain about the fact this submission use the "Aims for the fastest time" objective. Yet, there's no statement or restriction in the list of objective explaining why it is forbidden to manipulate the registry in such way you could skip a major part of the game. Personally, I consider the list of objective misleading, since it contradict both "aims for the fastest time" and "abuses programming errors" objectives. Anyway, I guess anyone can have their own belief about this, but reiterate that this submission doesn't make sense to me, if the list of objective isn't clear enough about what is allowed. Edit: What about adding something like "Avoid game-breaking exploit" to the list of objective? Edit2: Sorry, I wasn't looking at the right place for the list of objective.
Experienced Forum User
Joined: 1/26/2009
Posts: 558
Location: Canada - Québec
-Aims for fastest time -Abuses programming errors -Uses death to save time
To be honest, I don't see the point of the "Aims for fastest time" objective, since this run doesn't abuse of the "running arbitrary code" exploit. I'll like to see this whole branch getting deprecated or adding the objective "use arbitrary route" objective. After all, why doesn't this run use "arbitrary code" to write the "level skip" item in the item slot permanently, so each stage can be skipped(while using the arbitrary "wraps" route)? Sorry, but this run doesn't make any sense to me, since this clearly doesn't aims for fastest time.
Experienced Forum User
Joined: 1/26/2009
Posts: 558
Location: Canada - Québec
If anyone want to try a design for mobile, I'll suggest to learn a "responsive" CSS framework such as Bootstrap. You can see some samples here. Try to resize your browser window and see how it fit all together. Basically, each column add up to twelve for a single horizontal block. Of course, there's ton of other examples on the web to make pretty much anything responsive.
Experienced Forum User
Joined: 1/26/2009
Posts: 558
Location: Canada - Québec
Thank you, I was actually surprise to get iup working on bizhawk. At this point, I don't see why the script wouldn't work on other emulator as well. Also, look like I didn't really bother to explain what's happening in the script or adding any meaningful comments, but basically you'll notice the key idea is to get some sort of "refresh" while being single-threaded. So using simple enter/exit of `MainLoopLevel` function continually in the timer does the job. Any action that may require some sort refresh should called in `idle_cb`. Thought, if you want to call frameadvance(), I'll suggest to put it in the timer. Now, there's other alternative idea which could be worth exploring if you dislike the iup api or any other reason. For instance, you could give the love2d library a try. I saw an interesting post about the ability to run the lib from a console, so maybe it's possible to run some function from an emulator and do a similar sync/refresh setup, but that's yet an another subject to investigation for those interested.
Experienced Forum User
Joined: 1/26/2009
Posts: 558
Location: Canada - Québec
FatRatKnight wrote:
I need to focus more on workarounds I have available.
Maybe I missed something, but what about using a third party library in Lua? (*) That being said, I'm sure it would a lot more convenient to get everything packaged in Bizhawk out of the box, but I'll rather see the dev refactor what need to be changed(or working on the other platform core), before building new stuff on a somewhat unstable and undocumented base(yet innovative). Well at least, that's my impression when reading what zeromus said.
Experienced Forum User
Joined: 1/26/2009
Posts: 558
Location: Canada - Québec
Ok, I did a couple of trial and error with IUP and the result look pretty good so far: Demo Basically this is a minimap using x,y position. How to run it? Currently, my script can be downloaded on GitHub Extract all the dll and dk_canvas.lua in your bizhawk folder*. Start a game(e.g. Donkey Kong(JU) for GB). Obviously, you may experiment some lag if try to listen the music, this is due to Lua lacking a multithread feature. So I get around this issue with a timer to schedule the task using the best way that I figured. The script run well, enjoy. You can read the script here(further modification may come later). *You can also get the dll on sourceforge. edit: Fixed release link
Experienced Forum User
Joined: 1/26/2009
Posts: 558
Location: Canada - Québec
As an alternative idea, you could try to play around with the iup module. I believe they have some module for canvas drawing in an external window. http://webserver2.tecgraf.puc-rio.br/iup/ http://webserver2.tecgraf.puc-rio.br/iup/en/download_tips.html (canvas is CD) http://webserver2.tecgraf.puc-rio.br/iup/en/elem/iupcanvas.html http://webserver2.tecgraf.puc-rio.br/cd/ I managed to run some of these lib a while ago in both FCEU and PCSX-rr. Though, a special workaround is required in order to load the iup module. If I remember right, this involved loading a dll at the start of the luascript, but in the end it worked just fine. Yet, I doubt it works well with bizhawk(well.. at the moment), since this workaround did only work with a LuaEngine base like fceu, but I guess it's still worth investigating.
Post subject: Re: Success! Now on to the secret payload.
Experienced Forum User
Joined: 1/26/2009
Posts: 558
Location: Canada - Québec
dwangoAC wrote:
it's been a hectic week, a tree fell on our house and it was a bit of a mess there for a while
Wow, actually the same happened to me few month ago when I got very busy. I guess the Moore's law alway strike at the worst moment :p But you guys still manage to show off a great performance, keep it up!
Experienced Forum User
Joined: 1/26/2009
Posts: 558
Location: Canada - Québec
Well, I just started working on this a couple of day ago during my short vacation, but I sended him a pm!
Experienced Forum User
Joined: 1/26/2009
Posts: 558
Location: Canada - Québec
Hello, As a side project, I thought it would be nice to add some feature such as sync a real keyboard with the VirtualKeyboard. For instance, this could be handy for testing in real time, etc. So, I browsed the JPCRR code and managed to build something interesting while forking from JPC-RR-r11.8-rc1. Futhermore I added some buttons on the VirtualKeyboard to make it easier to move around the mouse, press/release the mouse button(MouseLeft0,MouseRight1,MouseMiddle2). Yet, I didn't test yet if it work well when recording a .jrsr. Github is up there: https://github.com/antogerva/jpcrr To start this application, simply run start-jpcrr.bat or start-jpcrr.sh. If you want to build JPCRR yourself, you can use "Eclipse IDE for Java EE Developers" or equivalent as long as the Maven plugin is available. That being said, there's a lot of stuff that I'm not sure about, so any constructive feedback would be appreciated. Have a good day! ps: Other plan for future, I might start a test run on Secret of Monkey Island, if the mouse support is good enough.
Experienced Forum User
Joined: 1/26/2009
Posts: 558
Location: Canada - Québec
Salut, si je me souviens bien, tu peux collecter des beans(ou c'était des grenouilles?) pour échanger pour des cartes, est-ce que tu comptais les obtenir pour finir le jeu à 100%? Aussi, tu peux probablement t'inspirer/contribuer sur ce thread: http://tasvideos.org/forum/viewtopic.php?t=15958
Post subject: TASing through a web browser with asm.js
Experienced Forum User
Joined: 1/26/2009
Posts: 558
Location: Canada - Québec
Few month ago, I watched a talk about the birth and death of javascript, that introduced me for the first time to asm.js and I thought we could still wait a while before anything awesome happen. Then, recently I saw the Humble Bundle can play games natively from the web, here. I guess they use a minimal OS with a light version of their game, so it can get a decent FPS. Also, there's a project called jor1k, that can run linux and ScummVM with a demo of Secret of Monkey Island, The(without sound). At this rate, I think asm.js might become a huge deal in the future. So what do you guys think? If this isn't impressive, then I have at least some question: Does fceux or any emulator be compiled and then run under asm.js? Could asm.js be a better alternative to run DOS games instead of jpcrr? Do you think a there's a way to record an input file directly on the asm.js canvas? I remember we alway had some sort of issue when trying to TAS through a virtual machine. What are these issues and do you think they may still apply on asm.js? In any case, there is certainly some performance issue at the moment when trying anything big, but this is certainly something I'll keep looking foward too.
Experienced Forum User
Joined: 1/26/2009
Posts: 558
Location: Canada - Québec
Well, if you make a multiple TAS for 5 games, while making an additionnal hack sync for a very low(or none if you're good in TAS management) cost in frame. Then nobody is armed. If the judge reject the final submission because of the hack, just resubmit the very same movie and just say it sync 5 legit games. edit: Anyway, either way I admit that it's still far fetched.
Experienced Forum User
Joined: 1/26/2009
Posts: 558
Location: Canada - Québec
GoddessMaria15 wrote:
The first issue would be with Gyakuten Kenji 2 [AAI2: Prosecutor's Path, the English Translation's title] and the other games due to that game being released only in Japan and the other games being in English
I believe only the Gyakuten Kenji 2 title wasn't localized outside of japan, but there's a rather nice and high-quality fan-translation hack. So, you may consider this hack as viable option since we probably won't see this title make a come back on the market with the regular DS(it's shame, since I played it and thought it was really good or at least way better than the first one!)
GoddessMaria15 wrote:
Second issue involves presenting evidence during trials as well as during the Psyche-lock bits.
A workaround would be to present evidence at same time as browsing some dialog or trying to trigger something that make the "Y" button unusable for few frame. Even with that many game, this shouldn't a huge deal, but I agree t that some occasion could be a challenge :) Also, at some point, I'm sure it would be easy to make a lua script to press B and skip the text at the right frame.
Experienced Forum User
Joined: 1/26/2009
Posts: 558
Location: Canada - Québec
The vault concept has been introduced after the ban, I don't see why it wouldn't be considered. Some other banned user could probably receive a second jugement too, for instance I believe there's also Nineko submission which could fit in this category as well. Thought, I don't known if there's any other. edit: typo
Experienced Forum User
Joined: 1/26/2009
Posts: 558
Location: Canada - Québec
Despite you can prove us wrong, this game would probably be guilty to be boring as hell. Also, I see no evidence about how the run would be any different from a realtime speedrunner. Seriously thought, if you're really motivited, I'll suggest you make all the sixth title on DS with one input. That could be actually worth a watch.
Experienced Forum User
Joined: 1/26/2009
Posts: 558
Location: Canada - Québec
Spikestuff wrote:
PSXjin is more accurate PCSX-rr is less accurate
Honestly, they both suck. You're gonna have your share of problem with either one. If you think that pcsxrr is going to be more comfortable on the long run, I'll suggest to test if the switch-cd feature work fine at first, so you don't have bad surprise later. You can probably load a memory card from some else game to test those part.
Experienced Forum User
Joined: 1/26/2009
Posts: 558
Location: Canada - Québec
Voted no at first watch as well. The game didn't look hard enough to me. Well not anymore, I guess. Maybe this TAS is just too good, thought. But yeah, to be fair, I expected more technical dept with creative use of glitches as some kind of puzzle while pushing the hardware to his limit(e.g. turtle shell going in all direction or something). In this hack, we just place some obstacle that require a particular trick. Thought, if I take a couple of minute or hour to study the previous TAS for this game, then maybe I could appreciate the hardwork made in this submission. That said, at some point, it's like trying to evaluate some weird painting at a museum. Maybe a painting can attract a particular feeling in you, but some other look just bland and cheaply made, no matter how you look at it. edit: In term of game design, I'm not even sure if this game is better than Air 2. Yes, there's less trick required to beat the game, but so does the original game. Does that mean it is better?
Experienced Forum User
Joined: 1/26/2009
Posts: 558
Location: Canada - Québec
I started to look around the source code and thought it would be great if I could figure how to build jpcrr without using the pre-compiled jar. So I managed to find the source of the "mnj.lua" package by checking the provided "jpcrr-r11.7-precompiled.zip/sources.zip/src/" archive, but I'm missing some other libs. I guess those class aren't really mandatory and I could probably write those myself if look at this hard enough, but could it be possible to provide an example for "org.jpc.Exceptions" and "org.jpc.Revision" classes? I believe those classes might have been retired in order to avoid adding unnecessary third party library. Yet if that's the case I would be interested to known what are those, as well. At some point, I've been thinking to mavenify the project to make the overall setup and build process easier and later, maybe look out if it's possible to help with UI. edit: Nevermind, I found a workaround.
Experienced Forum User
Joined: 1/26/2009
Posts: 558
Location: Canada - Québec
I used to play this game at the arcade, great game. But, it seem like some client are more generous with the bonuses than other. Couldn't the route be optimized to get directly to those client rather than the first one at the beggining?
Experienced Forum User
Joined: 1/26/2009
Posts: 558
Location: Canada - Québec
First, sorry for the late reply.
feos wrote:
Found why it was crashing when loading from debug. That was causing it:
Language: lua

if(movieEnd == nil or movieEnd == 0) then movieEnd = getStatusDetectInfo()["MovieDuration"]; end
It never writes the value of movieEnd to the xml file. And still tries to read if from there.
Damn, well this simply proove that using lua XML api was the worse idea I had. Also I wouldn't be surprise that some of our previous problem with memory overflow was caused by that third party library. The best thing to do would be the write our own little file format to store data about desync in the right order, a bit we do with the hashfile. Talking about hashfile, I guess this should work by editing getHashFromFile(framecount) and writeHashframe(lineInfo) in synchCheckpoint.lua and detectCheckpoint:
math.floor((framecount+1) / hashFrameSplit) .. ".txt";
I would suggest to make a backup for the hashFrame-0, load a savestate from a couple of frame before 10000 and then let him continue the hash process. Also, glad that you got that plugin working, hopefully we can get some decent encode with this.
Experienced Forum User
Joined: 1/26/2009
Posts: 558
Location: Canada - Québec
First, sorry for the late reply.
feos wrote:
Found why it was crashing when loading from debug. That was causing it:
Language: lua

if(movieEnd == nil or movieEnd == 0) then movieEnd = getStatusDetectInfo()["MovieDuration"]; end
It never writes the value of movieEnd to the xml file. And still tries to read if from there.
Damn, well this simply proove that using lua XML api was the worse idea I had. Also I wouldn't be surprise that some of our previous problem with memory overflow was caused by that third party library. The best thing to do would be the write our own little file format to store data about desync in the right order, a bit we do with the hashfile. Talking about hashfile, you may try:
math.floor((framecount+1) / hashFrameSplit) .. ".txt";
But you have to start exactly at the right frame. So I would suggest to make a backup for the hashFrame-0, load a savestate from a couple of frame before 10000 and then let him continue to hash all those frames.
1 2 3
22 23