Joined: 3/15/2018
Posts: 235
Location: United States
A terrible LJN game with an incredible soundtrack by Tim Follin. The drawing mode is probably the best thing about this game. It's archaic, but it's probably the best anyone could implement this concept on the NES (besides Color a Dinosaur, of course).
I've already created two TASes for it: one that beats "alternative mode," and a purely-for-entertainment one which I'm calling a fun run. Check the userfiles for more details.
Alternative mode TAS: http://tasvideos.org/userfiles/info/45772070955058652Link to video
Fun Run: http://tasvideos.org/userfiles/info/45790926035309033Link to video
Btw, this game isn't on the drop down list! It's almost as if this is a really obscure and kinda bad game that no one cares about. This may need to be rectified if I make actual submissions of these movies.
Only games with published runs are in the drop-down list on the submission form. If you submit and your run is accepted, it will then be in the list. If you're going to submit, just select (default) for your game on the submission form.
I watched both. The first one would qualify for vault if it passes the "board game" test. It has arcade elements, so normally it should pass, however none of that is actually seen in the TAS, so it may be argued to be just a roll-the-die, move your token game.
There were many points in the playaround I found fun, but between them were points that felt boring, or like I was just watching a human play. Making wrong guesses doesn't really add anything for me, and I had to question why you took hits or let people just hit the ground. I have trouble seeing a playaround make it to moons, and it wouldn't qualify for vault.
The potential I see in this game is TASing one of each minigame as fast as possible. This would be an "All mini-games" category, or one could argue it would be a 100% run.
The goal is to run one of each minigame and end the game in the shortest amount of time. This is a goal that others could then try to better, which is really the point of the site, while showcasing RNG manipulation and strategy. Which order you do the games in may make a difference in how fast your final time is, so it would require planning. I think this category would stand a good chance of making a moons publication.
Joined: 3/15/2018
Posts: 235
Location: United States
In alternative mode, you draw pictures on the NES and tell the game who won, on the honor system. So you really have a point, there...
Regular mode has some gameplay (which would be skipped) and blind guesses (which would have to be manipulated) involved. I think the 1 in 500 RNG manipulation would be astronomically more effort for a marginally more entertaining movie, but do you suppose it would be more likely to pass the "board game" test?
Yeah, I seem to have overestimated how funny those wrong guesses would be.
I'll be lame and justify a couple of the points I think you're referring to:
The paint bucket getting hit (not when suiciding): sloppy workmanship. Sorry.
Boxes getting hit: I was manipulating the positon of the bad guys to make a 6-stack just barely possible. I admit I could have probably done this more quickly and elegantly.
Letting people hit the ground: It is impossible to get that game perfect without some God-tier RNG, which may not even exist. The manual even says something to the effect of, "These people aren't very smart, so don't feel too bad if a few of them don't make it."
What about the Family Feud TAS? Someone described it as an "incident" in my userfile, leading me to believe it may be a special case, where similar movies are unlikely to be accepted. I don't claim this TAS is as funny or as fast, I just thought it was a generally accepted type of movie here.
I think I agree. Due to the board layout, all 4 minigames are necessarily shown off, but there's plenty of cool (but extremely tedious) RNG manipulation involved.
Thank you for your comments. I hope I don't sound too defensive right now; a bad TAS is a bad TAS! I want to fix it if possible, or create something better if not.
Yeah, in that case I'd say it would definitely be declared a "trivial" game.
Playing a regular mode with quickest failures on each mini-game, and manipulating the shortest words would stand a chance at passing the test and making vault.
There are precedents both ways: The Monopoly run got whereas the Wheel of Fortune run didn't. Both were "trivial" games with heavy rng manipulation.
Not lame at all. I appreciate the extra information, and helps to understand what you're working with.
The Family Feud run was certainly a good example of a playaround, and abusing the parser. However, replicating it is a difficult thing to do, something I found out myself firsthand when I tried it.
Yeah, the RNG manipulation would be a fair bit of work, but really that's what would put it over the top. It only question is whether it's worth your time to do it.
You're not sounding defensive at all! You're actually doing the right thing by posting this on WIP and getting feedback, so you're already leagues ahead of many others (myself included for the Jeopardy run) who just submit their work and then argue it in the submission comments.
I can tell your dedication will lead to a great TAS soon, either on this game or another.
Joined: 3/15/2018
Posts: 235
Location: United States
What a nice comment, c-square! Thank you!
Sorry about your Jeaopardy TAS. I bet it took a lot more work than my wrong guesses :)
It was very clever, but I can kind of see why 26 minutes of that didn't get accepted.
Well, either way, your feedback has inspired me to create a new run: an "Any%" TAS!
http://tasvideos.org/userfiles/info/45878339804197968Link to video
As I wrote in the userfile, I've imposed a stipulation on this run: No pressing start to skip minigames. Without this, there'd be no gameplay, making the "alternative" TAS the most interesting movie this game has to offer. Which would suck!
I'd like to see that rule worked into an official category somehow, but I don't really know how all that works.
I came up with a cool alternative to the wrong guesses from the previous run: typing out different words along the way to the next letter. It's esentially a more "TAS-like" execution of the same joke.
I may also redo the firefighter portion to have them always move away at the last possible frame, or something. It's kinda bland as is.
Well done! I think this has a high chance at getting published, maybe even making moons because of its short length! If you can think of anything that makes it more entertaining (such as the firefighter suggestion you had) without losing any time, then it'll increase your chances.
Kudos to you!
I have a small concern that "No pressing start to skip minigames" will exclude it from being vaultable, but I think we can make an argument that there's no valid run without that.
So I was curious about this game and decided to throw together a TAS myself. If nothing else, any submission that is optimized (even if deemed not worthy of publication due to vault rules) can be included in the TASmania project.
While minimal, there is still opportunity for optimization and (very mild) RNG manipulation even when using 'start' to skip the mini-games.
Aside from the fact that intentionally losing them is exactly the opposite of what the developers intended, the failed mini-games don't really add much entertainment value to a viewer in my opinion. I highly doubt it'd be enough to bump a run to moons. I also doubt that the little optimization available (with or without) the mini-games will be enough to lift this game above board-game status. I'd love to be wrong on this though.
My current WIP is Regular Mode and roughly 6100 frames with no mini-games. I think it may be possible to shorten. I have a theory and am researching a possible way to quickly evaluate all practical word sequences to find which would be the fastest.
warmCabin, please don't let my comments stop you from working on your TAS. I'm curious to see the community's response if you and I both end up submitting runs using different rules/strategies. Perhaps one will be deemed vault eligible.
Joined: 3/15/2018
Posts: 235
Location: United States
Hell yeah! Let's see where this goes.
While I disagree with you about the minigames, it almost doesn't matter. Because if you and I press start on the same frame, I do the minigames, and you don't...we still get the same sequence of words. Meaning your findings will be optimal for every category, and I can steal your work collaborate with you easily.
Have you found a better sequence than "NO," "PIN," "THINK"...?
Due to the 128 frame rule between entering your guess and the board appearing, the first 6 words almost don't matter. The final word (on which we end our movie) is much more important. And since my final word is "THIRD FLOOR," I think we can do much better.
I assume you've figured out the text encoding, but here is the table file anyway. Check out RAM offset 0x0448. Also check out ROM offset 0x1C84C while you're at it! I highly recommend it.
Sweet! I'll probably hold off until DrD2k9's lua script (I assume) finds some faster word sequence. Knowingly submitting a likely suboptimal run just to see if the rules stick is probably a sin ._.
What's the TASmania project, btw? I had trouble finding results that weren't about the actual island of Tasmania...
Thus far I haven't gotten to this sequence. While what I'm working on is much easier than manually playing every sequence to figure out the words, it's still time consuming to run through the various word sequences. I'll let you know when I get to that sequence.
All the words will matter because of the time it takes to input the words. Part of what I'm looking into with my work is total letters of input for the run. Currently my shortest two word sequences require 27 and 28 letter inputs. The average for sequences I've tested require around 40 letter inputs.
Yep.
See here for some info.
Joined: 3/15/2018
Posts: 235
Location: United States
Yeah, that's fair. It's the 24th sequence. I'm curious, what's your method? I was theorizing a lua script that mashes start and reports any changes in offset 0x0448, then loads a savestate at the name entry box and tries the next frame. I may decide to code it up if it's not too similar to what you're doing.
Here's some data on the sequence I chose, which has 29 letters:
Word/Phrase: Frames to type -> frame rule hit
NO: 13 -> 128
PIN: 128 -> 128
THINK: 182 -> 256
SHIN: 140 -> 256
HOUSE: 237 -> 256
THIRD FLOOR: 286 -> 286 (end of movie, frame rule doesn't apply)
Can you tell me the 27 and 28-letter sequences? I want to see if they're faster in practice than my one.
I'd argue that that's an insufficient metric. Not all words of the same length take the same amount of time to type; just look at THINK and HOUSE in my table. But I'd also argue that, unless you're right on the edge of a frame rule, it most likely makes no difference. With that in mind, I'd say it's the second best metric to the "spend a few hours making a whole TAS" metric :p
CUP and TEARDROP are the starting words for the two short sequences I've found thus far.
I'm not good enough at lua to completely automate the testing.
I've just been using one to display the answer on the screen and one to limit token movement to 1 space at a time to speed up the time between puzzles. I've been manually inputting the letters.
Here are my lua scripts:
--Display Answer
local x = 0
local y = 10
local i = 0
local l = 0
local lvalue = 0
function letter()
if lvalue==10 then
return ("A")
else
if lvalue==11 then
return ("B")
else
if lvalue==12 then
return ("C")
else
if lvalue==13 then
return ("D")
else
if lvalue==14 then
return ("E")
else
if lvalue==15 then
return ("F")
else
if lvalue==16 then
return ("G")
else
if lvalue==17 then
return ("H")
else
if lvalue==18 then
return ("I")
else
if lvalue==19 then
return ("J")
else
if lvalue==20 then
return ("K")
else
if lvalue==21 then
return ("L")
else
if lvalue==22 then
return ("M")
else
if lvalue==23 then
return ("N")
else
if lvalue==24 then
return ("O")
else
if lvalue==25 then
return ("P")
else
if lvalue==26 then
return ("Q")
else
if lvalue==27 then
return ("R")
else
if lvalue==28 then
return ("S")
else
if lvalue==29 then
return ("T")
else
if lvalue==30 then
return ("U")
else
if lvalue==31 then
return ("V")
else
if lvalue==32 then
return ("W")
else
if lvalue==33 then
return ("X")
else
if lvalue==34 then
return ("Y")
else
if lvalue==35 then
return ("Z")
else
return ("")
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
while true do
while i<16 do
i=i+1
l=l+1
x=x+15
lvalue= memory.readbyte (0x447+l)
gui.text(x,y,letter())
--gui.text(x,y,str);
end
emu.frameadvance();
x = 0
i = 0
l = 0
lvalue = 0
end
--limit token movement to 1 space
while true do
x=memory.readbyte(0x89)
if x<255>0 then
memory.writebyte(0x89,0)
else end
end
emu.frameadvance();
end
There may be much more efficient ways to do these, but my programming knowledge is so limited that this is the best I can come up with.
Wow...I just realized how much of an idiot I am. I can simply press start to not input a guess at a word and move onto the next word in the sequence.
Well that was a bunch of unnecessary time wasted.
You're correct for progressing through the game...but I was referring to building a spreadsheet of answer sequences. If you give up trying to guess a word, the game will move on to the next word in the sequence.
I'm doing this as much for the RTA community as I am for TASing.
EDIT: For anyone interested, here is my (in-progress) spreadsheet of word sequences. I've listed the first 10 words in each sequence. https://docs.google.com/spreadsheets/d/12_ealGeGx_VdxQLL0J2xylnTWGoEjA7itqnwEeJF7wc/edit?usp=sharing
Joined: 3/15/2018
Posts: 235
Location: United States
I went and wrote my own script after all.
I'm too lazy for a spreadsheet, but here's the output from it: https://pastebin.com/FBfEpLfU
You can ctrl+F for "BEST" and "WORST" to see the results.
Looks like we're off by 1 frame from each other somehow...but we got the same data. I ran mine out to about 600 sequences, but only read 6 words per sequence; I just had the TAS in mind.
Lua script on pastebin, if you don't feel like downloading it.
It's pretty sloppy atm. Read from range is much less useful than I thought. It converts the bytes to an ASCII string, so you have to manually convert them back and then re-encode them. I should just read the bytes one by one...
Holy shit!!! Have you heard of the elseif keyword? I think you might like it :p
Nope....never knew of that until now. You're lightyears beyond me in terms of lua scripting (and probably programming in general). Thanks for the mini-lesson.
On a more positive note, my experimental WIP of the TAS currently uses the sequence starting with "CUP." Which means, I just need to clean it up a bit and I'll be done!
Curiosity question. Your script generated multiple sequences labeled "Best so far." Does it take into consideration how many frames you have to wait to initiate the other sequences besides the one starting with "CUP"?
Joined: 3/15/2018
Posts: 235
Location: United States
DrD2k9 wrote:
Thanks for the mini-lesson.
Happy to help!
DrD2k9 wrote:
Does it take into consideration how many frames you have to wait to initiate the other sequences...?
sum = sum + spacelessLen(word)
...
if sum < best then
emu.print("!!BEST SO FAR!!")
best = sum
elseif sum [greater than] worst then
emu.print("...WORST SO FAR...")
worst = sum
end
(I wrote [greater than] instead of a greater than symbol because BBCode bizarrely parsed it as an HTML tag)
Nope. Because of the stupid accelerating shoes, I couldn't figure out how long a given phrase would take to type without actually typing it, so I just looked at the shortest length. Although, I guess we could come up with an estimate based on holding right the whole time; then we could factor in the waiting time.
DrD2k9 wrote:
my experimental WIP of the TAS currently uses the sequence starting with "CUP."
Can't wait to see it! Is it finished?
I'm going to code up my estimate that I described to see if some longer sequences might not actually be faster, so don't submit it quite yet!
Testing frame 529...
TWINS (124)
SWAN (108)
COMEDY (168)
LEFT (160)
LIP (112)
STOP (116)
26 characters
788 frames to type + 44 frames of waiting = 832
!!BEST SO FAR!!
My original sequence takes 1092 frames. Yours takes 1148 frames. None of these numbers account for the 128 frame rule. It also assumes you type each word by either holding left, or holding right; it can be optimal to stop and turn around, but my script doesn't account for that.
Testing frame 529...
TWINS (124)
SWAN (108)
COMEDY (168)
LEFT (160)
LIP (112)
STOP (116)
26 characters
788 frames to type + 44 frames of waiting = 832
!!BEST SO FAR!!
My original sequence takes 1092 frames. Yours takes 1148 frames. None of these numbers account for the 128 frame rule. It also assumes you type each word by either holding left, or holding right; it can be optimal to stop and turn around, but my script doesn't account for that.
Great....but if your script doesn't account for changing directions, what's the point in calculating how many frames it takes with the shoes just going one direction? I wouldn't be surprised if that factor alone significantly changes the outcome.
To truly determine what run may be fastest, we must consider both the time waiting to get a later starting frame as well as any frames saved by changing direction. Not to mention the frame rule (which I, admittedly, need to look into more myself.)
My WIP using the 'CUP' word sequence starting at frame 481 has its final input on frame 6102.
I may TAS a few other word sequences that appear as though they may be close and see if there is a better one than 'CUP.'
EDIT Something you could consider doing is calculating how many spaces away in the alphabet one letter has to be from another to make changing directions more efficient than wrapping around the alphabet. (If you decide to do this, don't forget to calculate the blank spaces between Z and A.)
EDIT 2: Something else to factor in is the time required for die rolls. Sometimes the RNG manipulation to guarantee a 6 roll can take quite a few frames. This can be affected by changing when the 'Start' button press happens to select "Regular Game."
So when the game mode is selected , the die roll RNG is affected. When the team name is selected determines word sequence.
Joined: 3/15/2018
Posts: 235
Location: United States
DrD2k9 wrote:
Great....but if your script doesn't account for changing directions, what's the point...?
You're absolutely right. Additionally, I forgot that the cursor always starts on N!!!!!!!! My old code assumes that it always starts right where you want it.
Are you familiar with dynamic programming, or DP? It allows us to compute all possible solutions (in this case, which direction to go from each letter), while storing stuff along the way so we don't have to compute the same thing more than once. With a few simplifications, this problem lends itself really well to this technique.
Here is the output of my word typing DP. Out of curiosity, I left in the results of the dumb, "hold one direction" algorithm to compare them; they're the second numbers after each word. The new numbers are much smaller, but interestingly, the results barely change! The only difference is that my original "NO, PIN, THINK" sequence is no longer a relative minimum. Ouch...
I plan to post the script after I clean up a few things.
The frame rules are going to be a pain to deal with. I thought about having my code round up to the next multiple of 128, but that's not really how frame rules work, is it? However, the results of my script are so much better than the average word sequence that they'll most likely still be the best. It may be worth it to try all of them out.
DrD2k9 wrote:
Something else to factor in is the time required for die rolls.
I don't think this is going to have a big enough impact to make us choose another word sequence. In my fun run I think I had to wait like 20 frames for one roll, but otherwise, a 1 in 6 roll is extremely quick to manipulate. The way I see it, all possible runs are equally affected by die roll manipulation, and I doubt we'll be unlucky enough to see an outlier. But you never know...
Something else to factor in is the time required for die rolls.
I don't think this is going to have a big enough impact to make us choose another word sequence. In my fun run I think I had to wait like 20 frames for one roll, but otherwise, a 1 in 6 roll is extremely quick to manipulate. The way I see it, all possible runs are equally affected by die roll manipulation, and I doubt we'll be unlucky enough to see an outlier. But you never know...
In my WIP waiting just two frames before selecting the game mode changed the die rolls enough to save over 30 frames on the final TAS. I still enter the team name on the same frame to get the 'CUP' word sequence. 30 frames is a lot considering the die roll RNG changes every frame; and to me, half a second is a lot over a 1 minute 41 second run.
Please don't take my comments wrongly. I'm very impressed with your work on the scripts (partially because I recognize that I'm currently incapable of producing what you have). I just feel that there are too many factors to automate everything in determining the fastest potential. At some point it's going to take some 'brute force' testing of the handful of options that show the best potential.
EDIT: I have no idea why the font size changed in this post. Thanks Spikestuff.
Joined: 3/15/2018
Posts: 235
Location: United States
DrD2k9 wrote:
waiting just two frames before selecting the game mode changed the die rolls enough to save over 30 frames...I still enter the team name on the same frame...
So what you're saying is...we can manipulate better dice RNG...by wasting ZERO FRAMES!?!? That's incredible!!!
DrD2k9 wrote:
Please don't take my comments wrongly...I just feel that there are too many factors to automate everything..
You're good! And I agree. While something like frame 530 (2145 frames) is probably not worth testing, frames 524 and 529 (889 and 770 frames) are probably both worth testing, and maybe a few more. These are hundreds of frames better than the average sequence, but close enough to each other that dice RNG might fuck you.
Like I said in the comments of my lua script: "I think its results are worth considering for a TAS." Not "using without thought!" It's only meant to give us a few good starting points.
Here is the script, if you're interested.
Btw, I've just console verified the sequences we found...they're 100% accurate! Your spreadsheet is extremely helpful, too; I didn't record it, but I may now be the world record holder for Regular Mode :0 :0 :0LOL NEVER MIND
Apparently this sequence thing has been known for some time. Weirdly, all the runs on the leaderboard were done earlier this month. They seem to like to grind for the "NO, PIN..." sequence. But maybe our faster sequences might still be useful anyway.
You know, if you could play it off like you're fidgeting with your phone, checking texts and stuff, making these "blind" guesses would make a great party trick :D
Joined: 3/15/2018
Posts: 235
Location: United States
I had an RNG breakthrough last night on my stream! I was trying to manipulate the congratulations message by finishing the word on a different frame, but I noticed that it weirdly seemed to affect dice RNG when I did that. That discovery you had about entering the number of teams seems to apply to any group of lag frames. Due to the text entry frame rule, this means that we can easily manipulate a first frame 6 roll, every time, while wasting zero frames across the whole run!
Here's my theory on why this works: Pictionary probably has an RNG variable that updates every frame, except lag frames. Whatever arcane RNG math gets performed takes into account the current frame, as well as the previous value. After sitting through different numbers of lag frames, even though we make a roll on the same frame, the formula is looking at a different previous value in each situation, and so the results are completely different than before.