Posts for Dromiceius


Experienced Forum User
Joined: 10/3/2005
Posts: 1332
*raises hand* I also would like to see this finished, too! Seriously though, I'm surprised there aren't more people working on this. It's Kirby for chrissakes.
Experienced Forum User
Joined: 10/3/2005
Posts: 1332
I liked how you shot the already-dead dinosaur with the grenade launcher while waiting for the wall to come down... and then ran across a pond like a ninja. A ninja Indian who runs around stabbing raptors in the head. It was worth the wait, and I had a great time watching. The pulse timing and walljumps were particularly impressive. My only gripe is that you didn't shoot the monkeys. Was there a particular reason for that? Edit: obviously my vote is not contingent on the feasibility of monkey-shooting, so I voted Yes.
Experienced Forum User
Joined: 10/3/2005
Posts: 1332
Ha! Yeah, it didn't really occur to me that the ATB was reversed. I realized after seeing your changes to the code that I could make the ATB go left to right, and remove "barlen" entirely. Ever the efficiency nazi, I also trimmed a few things. It's probably not perfect, but the mouse thing is fixed this time. :D Apropos, Inichi, do you have any interest in writing a "director's commentary" to be added as subtitles in the movie? It's relatively simple to code, but the subtitles themselves could be laborious to write.
Experienced Forum User
Joined: 10/3/2005
Posts: 1332
Inichi wrote:
That's awesome! I've tried out your script and found it could make the run very informative. Thanks a lot. By the way, I just found an invalid enemie's Hp appears at Arris Dome Rafters if you press the down key there. Here are scripts to fix the problem, I'm not sure this is the right solution though.
Thanks. :) I just had to move the "overlap check" into the drawing code. It should do the Right Thing at all times now. The script is updated.
Experienced Forum User
Joined: 10/3/2005
Posts: 1332
DeHackEd wrote:
I can not reproduce the problem. gui.transparency(0) works correctly for me.
I think there's a problem with gui.transparency not resetting correctly. I ran a script with gui.transparency(1), removed the call, ran it again, and it was stuck on transparency(1). Stopping the script causes the transparency to get stuck like that, ignoring calls to gui.transparency. Also, I notice Snes9x only cares about the last call to gui.transparency in the loop. So this:
    gui.transparency(3)
    gui.drawbox(x, y, x2, y2, "#FFFFFF")

    gui.transparency(0)
    gui.text(x, y, "Fuzzy pickle!")
...comes out completely opaque. It would be nice if it didn't, but it's no big deal.
Experienced Forum User
Joined: 10/3/2005
Posts: 1332
In anticipation of what is obviously going to be one of the most impressive expositions of TAS-kickery we'll see this year, I've written a Lua script, the purpose of which is to show interesting information during the movie. It displays the HP of the enemies underneath their sprites, along with their ATB meters... the ATBs don't seem to be a "real" representation of enemy behavior in some cases, and so are a bit wonky at times. I'm open to suggestions for more features. Rock on, Inichi! :)
Experienced Forum User
Joined: 10/3/2005
Posts: 1332
DaTeL237 wrote:
so there's a new request.... some way of handling events such as (manual) savestate-loading/saving (not sure if there's other interesting events?)
It could plausibly be done with movie.framecount().
DeHackEd wrote:
Any bug reports or feature requests? I'm listening...
What do you think about a function like Sleep(DWORD milliseconds) to pass CPU time back to the emulator? In other words, to prevent snes9x from going insane when I try something like this:
while blocking do
readinput()
modifyguidisplaystuff()
if joypad5.start ~= nil then snes9x.frameadvance()
--Sleep(5)
end
Any means of passing an arbitrary amount of input to the script between frames is what I'm after, really. Preferably with gui/screen refreshing. I just haven't been able to think of any other solution.
Experienced Forum User
Joined: 10/3/2005
Posts: 1332
From what I can tell by watching, it's a lot more polished than the last submission for this game, though I wouldn't be at all surprised if sub-15 were possible. The game itself is somewhat boring, but not without interesting elements, and some variety in the platforming. I give it a weak Yes.
Experienced Forum User
Joined: 10/3/2005
Posts: 1332
Actually, I meant that I had only tested so far as getting my ass kicked. Checking again just to be sure, it does emulate correctly between battles, so it should be fine to TAS.
Experienced Forum User
Joined: 10/3/2005
Posts: 1332
mudlord wrote:
But is it all emulated perfectly? ;)
Ah, you've got me there. I can only play it far enough to get my ass kicked by the first opponent.
Experienced Forum User
Joined: 10/3/2005
Posts: 1332
Yeah, this game works fine in Mupen. Did for me, at least, using Jabo's D3D8 v1.6.
Post subject: Can ya smell what the Ferret is cookin'?
Experienced Forum User
Joined: 10/3/2005
Posts: 1332
sub-text wrote:
Bosses go down insanely fast, so I consider them the highlight of the movie.
Indeed. WHACK-AK-AK-AK-AK-AK, dead. Just as any time-traveling samurai should operate. I've been looking forward to this since the first WIP, and lived up to expectations. Though I probably should have played the game for five minutes to see what the hell is going on before watching this movie, I give it a Yes vote for the boss fights, the deliberate drowning, the awesome music in level 1, and general polish. :)
Experienced Forum User
Joined: 10/3/2005
Posts: 1332
Neophos wrote:
Did you pick up programming as a supplement to another interest (TAS'ing), were you already learning or educated in programming when you discovered TAS'es, or were they two different interests that just happens to mold together very well?
The latter. I already knew quite a bit of C and had spent time hacking ROMs before NESvideos came into existence. But since coming here, I've been motivated to learn about things I probably wouldn't have otherwise- like using programming environments like MinGW to compile open-source projects, (i.e, FCEU.) There's also the S/NES ASM. I think nearly all of us are here both because we like games, and have a natural hackerish interest in learning how things work. Programming certainly falls within that domain.
Experienced Forum User
Joined: 10/3/2005
Posts: 1332
atro city wrote:
Just out of curiosity, has anyone figured out what circumstances make the robots in Stage 6 explode? My guess is that it's completely random, which means I would have to look in the game's memory to be able to manipulate them. Unfortunately, I know nothing about RAM watching...
Glad to see you back to work on this, atro! I've made a watchlist for you. Right click -> save as It lists what I am fairly certain are the Hit Point values for the eight possible enemies that can exist at any point in time. I didn't test it too thoroughly, since my gimpy wrist doesn't agree with SoR type games. Damn ninjas. If you don't already know, usage is simple: in Gens 9.5b, click tools -> ram Watch. In the dialog that pops up, click "Load..." and select the .wch file I just linked you. If you need any more addresses, give the word and I'll see what I can do.
Experienced Forum User
Joined: 10/3/2005
Posts: 1332
FWIW, I made a Lua script in snes9x that can rewind however the heck I want it to. The only problem with it is that the current implementation of Lua in that emulator seems to require the frame advance button to be pressed concurrently with the rewind button... one step forward, two steps back. It works, at least. I can upload it later if anyone's interested... though it's not like it's hard to write, or anything. We need moar Lua, clearly.
Experienced Forum User
Joined: 10/3/2005
Posts: 1332
I can't reproduce it anymore, either.
Experienced Forum User
Joined: 10/3/2005
Posts: 1332
Doesn't improvement 12 beta fix the problem?
Why, yes it does! :D Thanks, Gocha.
Post subject: Re: Super Idiot World
Experienced Forum User
Joined: 10/3/2005
Posts: 1332
DK64_MASTER wrote:
Reminds me of when I created this topic?
Kind of. I did want to make a "learning program" that didn't need heuristics, but heuristics and randomization is all I've used so far. Now it's stuck at the start of Yoshi's Island 3 because I've not been able to explain that "you're just running back and forth, not getting anywhere! Try walking slowly and jumping more." Methinks it's time Mario became acquainted with his own X/Y coords and a little modal logic...
It's touch-and-go for me to say the least, but the only thing stopping it from working perfectly were finding out how to correctly determine what a lag frame was, and make sure that the amount of lag does correspond with a "poked" score.
Wouldn't the overall frame count be adequate? I guess it's one thing if you want to figure out how it works, but for the purposes of TASing, I wouldn't think it really matters. Unrelated note: v0.04 is crashing whenever I load a ROM. I'm just going to assume the problem is my system, until someone else reports the same problem.
Experienced Forum User
Joined: 10/3/2005
Posts: 1332
Ah. Sorry to hear that. Here's the thread on Snes9x-Lua.
Experienced Forum User
Joined: 10/3/2005
Posts: 1332
DaTeL237 wrote:
looks very nice to me tbh, you plan to expand it? :) would be great to see a more general version (e.g. one that does not assume that holding right+Y is best, and one that might start flying? :D)
Yeah, definitely. Hal's ridiculously awesome script has blown my mind and inspired me to brute force the hell out of 7th Saga, so I'm somewhat diverted, though. The inputs will become more random in the next version. It might also be cool to use hard-coded input sets to affect flying and certain glitches from the TASes, but I expect that it will be stuck as a dodo, considering the unlikelihood of Mario grabbing a feather. ;)
Experienced Forum User
Joined: 10/3/2005
Posts: 1332
Ahoy, mates. I don't know if anyone is actually working on subtitles anymore, but this TAS seems to sync with DeHackEd's Lua-enabled version of Snes9x, for which I have cobbled together a very serviceable subtitle script out of straws and chewing gum. Uh... has work progressed?
Experienced Forum User
Joined: 10/3/2005
Posts: 1332
Kirkq wrote:
Also, Anyone who thinks they are able to manipulate the RNG in this game well, I would love your help in the future. Otherwise I'd say I'm doing fairly optimally, disregarding acknowledged laziness sacrificing a few frames here and there, in my test run.
I'm working on a Lua script at the moment that should facilitate luck manipulation and general strategery. I'm not sure if I should bother with decoding the algos/RNG, since: 1) knowing what is going to happen doesn't mean being able to change anything, and 2) the bot could just brute force (with some degree of intelligence) the overworld instead; test a slew of different battles to see which has the overall best outcome. If there's interest (i.e., if someone wants to deal with the strategy and route-planning end) I'll get right on it.
Post subject: Super Idiot World
Experienced Forum User
Joined: 10/3/2005
Posts: 1332
Just when I thought this Lua thing couldn't get more awesome, I realized it could be used for botting, and created a rudimentary bot script for SMW. How it works is, it runs to the right while holding Y, and randomly presses B. Brilliant, isn't it? Here's a movie of it in action... sort of. I had to help it a lot with the savestates, because it does not yet know how to avoid getting caught in an infinite death loop. Linky Here's the general outline of what I'm planning:
local buttons = { Y = 1, right = 1 }
local sol = savestate.create(5)
savestate.save(sol)

--start movie recording to random filename, set speed to maximum
while true do
    joypad.set(1, buttons)

    --if mario dies, reload.
    if (memory.readbyte(0x7e0071)) == 9 then
        savestate.load(sol)
        --compare input to previous inputs, dump results into a buttons table
    end

    --TODO: pseudo-randomize input, weighted according to previous attempts
    --but for now, just jump up and down like an idiot
    resetbuttons = math.random(0,20)
    if resetbuttons == 1 then
        buttons.B = math.random(0,2)
        if buttons.B == 0 then buttons.B = nil end
    end

    --incrementally save every N frames
    --detect instant death
    --detect end of level, drop out of warp
    snes9x.frameadvance();
end
I think it has potential. More ideas, anyone?
DeHackEd wrote:
Anything else requested?
It would be nice (if not incredibly handy) if movies could be handled as objects, the way savestates are- particularly with regards to the creation of temporary files. Edit: Also, I couldn't get savestate.create() to work without passing an integer. Bah. It sorted itself out. Nevermind. Sorry for the edits, IRC. ;)
Experienced Forum User
Joined: 10/3/2005
Posts: 1332
It's definitely a lot better than Gex64, which I couldn't sit through; an hour of this wouldn't be excessive. Still pretty mediocre, though. It seems to have some of the same factors that made the original monotonous to watch. So, even though I'd most likely vote yes on a submission of this, there are bound to be other projects out there more deserving of a skilled hand.
Experienced Forum User
Joined: 10/3/2005
Posts: 1332
It looks good, though I haven't banged on it to see if there are any faults. If you're still using Gens 9j, you might want to upgrade.