Joined: 11/11/2006
Posts: 1235
Location: United Kingdom
A test by micro500 seems to suggest that I was under the false pretence that the only thing necessary to get an fm2 to sync in bizhawk is to add an extra frame to the start.
While a few fm2 movies did succeed it seemed many failed on the clown room where there is an excessive amount of lag. The only way around this that I know of is to actually run the verifier Lua on FCEUX, or verify the FM2 runs manually.
Since I know barely any Lua (and knew practically zero prior to taking up this task) I am leaning towards manually verifying the FM2 runs.
I am open to any suggestions!
<adelikat> I am annoyed at my irc statements ending up in forums & sigs
Moderator, Senior Ambassador, Experienced player
(907)
Joined: 9/14/2008
Posts: 1014
I will take the fall for this - in earlier tests with a couple of different test movies I discovered that they could always be played back in BizHawk by appending a single frame of lag to the beginning of imported .fm2 submissions. In testing, none of the movies I tried triggered this difference in lag. Lessons learned for next time: We need independent scripts running on each accepted emulator for a given competition with a single leaderboard shared between them in some way. I suspect the Lua script can be adapted to work in FCEUX and I would welcome a volunteer to help with that, otherwise we will sort the .fm2's by frame length and prioritize manually checking the shortest ones just to get a quick turnaround on finding the real fastest submission as part of the competition.
I put the disclaimer in when I announced the competition but I didn't want to need it. :) We did have an active attacker sending in fake submissions in rapid fire with the count of fake submissions in the thousands that we had to sort out. We also had some last-minute script scrambling to get leaderboard metadata working rather than just identifying the fastest completion which I'm glad we did but at the same time we had so many submissions that the script didn't have enough time to complete before my time was up, even with only ~11 seconds on average for each movie file. These challenges put a strain on all of us involved in the submissions acceptance and judging process - namely, RGamma, Raiscan, SMK, adelikat, Nach and myself. Thank you to everyone for showing grace and for the patience from all who were affected by these problems.
To add to my previous comment, including the emulator used (and maybe the core used too in BizHawk's case) to the leader table might be a good idea, considering movie conversion between emulators is not possible after all.
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
This was fun. I had thought I would be too busy but it happened that my schedule opened up enough to use most of the time. Submitted a really crappy test run and then didn't finish my second version before the cutoff. I was a few seconds behind the leaders anyway. Still a pretty neat contest.
I've done quite a bit of lua scripting in FCEUX so let me know if you need help next time.
The timer starts at $4D in RAM. It takes 4 bytes and is stored in BCD with the digits reversed. For example a time of 12:34:56:78 would be stored as $21, $43, $65, $87.
Moderator, Senior Ambassador, Experienced player
(907)
Joined: 9/14/2008
Posts: 1014
thefox wrote:
The timer starts at $4D in RAM. It takes 4 bytes and is stored in BCD with the digits reversed. For example a time of 12:34:56:78 would be stored as $21, $43, $65, $87.
Thanks! It's always awesome when the developer chimes in with the real answer (it's not unheard of, but it's still a nice surprise). That would have been somewhat hard to locate via memory search. If you don't mind me asking, why did you write it with the digits reversed?
Again, thank you for giving me permission to use your port. By all accounts the competition was a huge success and a number of people have told me that they thoroughly enjoyed playing the game.
If you don't mind me asking, why did you write it with the digits reversed?
We write numbers from left to right but start with the most significant digit, whereas on a PC the least significant digits come first.
$21, $43, $65, $87 (four 8-bit values) == $87654321 (one 32-bit value)
On a PC, it's easy to treat the whole time value as a 32-bit integer. The drawing routine most probably starts drawing at the leftmost digit. It loads the time value, uses the lowest 4 bits as the digit to draw on screen, shifts the value 4 bits to the right, and repeats that process another 7 times.
Which order you write the digits/bytes of a number in is actually a time-honoured debate of computer science. Wikipedia has a good article here.
The practical implication of this is that you look up what endianness is standard on the processor you're using, and use that. If you're using a little-endian processor, you put the least significant digits first, because otherwise manipulating the data will be much more difficult. (Even if the big-endian representation is what became standard for doing arithmetic via pencil and paper.)
Joined: 11/11/2006
Posts: 1235
Location: United Kingdom
It's time :)
Thanks to a couple days of rest and relaxation, I have rewritten the judging script to produce a leaderboard of the BK2 files.
Here goes!
The spreadsheet for these results can be found here on Google Sheets.
Top 10 by framecount to victory condition:
Mothrayas - 18637
kaizoman - 18693
mugg1991 - 18704
Dragonfangs - 18735
TehSeven - 18760
Bisqwit - 18872
Atma - 18891
scrm - 18908
Aglar - 18938
TASeditor - 18949
Top 10 by movie framecount:
Mothrayas - 18541
kaizoman - 18597
Dragonfangs - 18639
TehSeven - 18644
Bisqwit - 18776
Atma - 18795
scrm - 18812
Aglar - 18842
TASeditor - 18853
Bisqwit - 18855
arandomgameTASer - 18890
Top 10 by ingame time:
Mothrayas - 3:44.86
kaizoman - 3:45.74
mugg1991 - 3:45.97
TehSeven - 3:46.37
Dragonfangs - 3:46.56
Bisqwit - 3:47.87
Aglar - 3:48.22
Atma - 3:49.07
Bisqwit - 3:49.13
scrm - 3:49.25
TASeditor - 3:50.00
Top people most likely to be Mothrayas:
Mothrayas
Special thanks to:
adelikat - for making last-day/last-hour/last-minute/last-second changes to bizhawk's lua functionality
Mothrayas - Patience and understanding after being denied victory on SGDQ's stream :)
RGamma - For fighting spam and taking names
dwangoAC - For hosting the competition
thefox - For supplying the in-game timer RAM locations. THANK YOU!
Solarplex - Whose absence gave me the opportunity to help out
<adelikat> I am annoyed at my irc statements ending up in forums & sigs
http://www.youtube.com/Noxxa
<dwangoAC> This is a TAS (...). Not suitable for all audiences. May cause undesirable side-effects. May contain emulator abuse. Emulator may be abusive. This product contains glitches known to the state of California to cause egg defects.
<Masterjun> I'm just a guy arranging bits in a sequence which could potentially amuse other people looking at these bits
<adelikat> In Oregon Trail, I sacrificed my own family to save time. In Star trek, I killed helpless comrades in escape pods to save time. Here, I kill my allies to save time. I think I need help.
The timer starts at $4D in RAM. It takes 4 bytes and is stored in BCD with the digits reversed. For example a time of 12:34:56:78 would be stored as $21, $43, $65, $87.
Thanks! It's always awesome when the developer chimes in with the real answer (it's not unheard of, but it's still a nice surprise). That would have been somewhat hard to locate via memory search. If you don't mind me asking, why did you write it with the digits reversed?
No problem! I'm a little bit hazy on the details, but I think I reversed the digits because it worked out to be better (faster, more compact) for the routine that increases the timer. Minor optimization, but I guess I felt like doing it at the time.
Is there a chance we could have another one of these in the future? I had to work and missed this, but I really want to participate in something like this.
Moderator, Senior Ambassador, Experienced player
(907)
Joined: 9/14/2008
Posts: 1014
OK, let's do it. I'm still somewhat recovering from SGDQ 2015 but I agree we should do this again sooner rather than later, perhaps a month from now. Having said that, I don't have to be the organizer every time - if someone else wants to step up to do one for the site please let me know as organizing this does take a bit of time due to the need to find and select a good game.
Take note that this one was based on a predefined deadline for start and stop (albeit with a sliding window tied to the SGDQ schedule). The first speed TAS competition featuring Baby Moses worked on an honor system whereas the SGDQ event with Streemerz was very much a hard deadline, with announcements of the ending being neigh and all of the requisite panic that goes with it (although I'll admit that the actual cutoff was substantially delayed due to a long setup block for Super Metroid).
If we were to have another event, should it be a hard start and stop time like Streemerz (which may not work well for people in odd timezones but has that panic factor) or should it be on the honor system like Baby Moses was (more flexible but easier to cheat at)? Thoughts?
Maybe use operating system timestamps? I know when you right-click a file in Windows and open its' properties, you can see its' creation time, last modified time, and last time accessed.
This of course is not cheat-proof (you can always spoof your operating system's time) but it's an idea.
Moderator, Senior Ambassador, Experienced player
(907)
Joined: 9/14/2008
Posts: 1014
boct1584 wrote:
Maybe use operating system timestamps? I know when you right-click a file in Windows and open its' properties, you can see its' creation time, last modified time, and last time accessed.
This seems interesting on the surface but the ease with which this data could be modified means it's actually *worse* than the honor system. If we want to introduce an additional option as kind of a halfway point between a hard start and stop time and an honor system with no tracking at all, we could use a gated registration system to download the file which starts a clock and allows the same user to upload a movie file within a time limit. It can still be cheated by out-of-band communication (first competitor downloads it, shares it with a buddy, the buddy does tons of research and starts his time period much later, etc.).
Effectively, my take is that the hard limit is the best way to avoid cheating, but if it is a generally fun competition it should probably just be on the honor system as I suspect any attempt to create a technological solution won't actually improve things... Just my (overly wordy) take, any thoughts?
I really prefer the panic aspect of the competition. I can then expect everyone is working at the same time and trying to finish in time. The IRC was active with messages like "what framecount is everyone at" or "I'm at the Get him Boys dialogue". I liked that.
I was afraid that I over-optimized my run and was falling behind. I just kept going and going, and as said, I liked that panic aspect. But I can see inexperienced players falling behind easily or being too late to submit their run...
Why is Bisqwit's name struck through?
Is it simply that that trick doesn't work with this game?
It does work but it can't be done everywhere because the setup takes too long or for other reasons. I looked at the first two rooms and it seems it was done the best possible way.
Joined: 8/14/2009
Posts: 4090
Location: The Netherlands
Warp wrote:
Mothrayas wrote:
Video of the winning entry for those who want to see it:
It seems to forego this tactic:
Is it simply that that trick doesn't work with this game?
This game mode controls like VVVVVV - you can't simply "jump" down, you can only invert gravity, and can only do so while on the ground. In cases where it was possible to walk on the opposite floor/ceiling for the same momentum effect, I did that wherever possible.
EDIT: As MUGG said, such a setup also takes time, so sometimes simply falling down was faster.
http://www.youtube.com/Noxxa
<dwangoAC> This is a TAS (...). Not suitable for all audiences. May cause undesirable side-effects. May contain emulator abuse. Emulator may be abusive. This product contains glitches known to the state of California to cause egg defects.
<Masterjun> I'm just a guy arranging bits in a sequence which could potentially amuse other people looking at these bits
<adelikat> In Oregon Trail, I sacrificed my own family to save time. In Star trek, I killed helpless comrades in escape pods to save time. Here, I kill my allies to save time. I think I need help.
This game mode controls like VVVVVV - you can't simply "jump" down, you can only invert gravity, and can only do so while on the ground.
Can't you "jump" by simply inverting gravity for a bit and then restoring it? It ought to increase your falling speed from a ledge.
But I haven't played this game, so I'm just shooting in the dark.
Joined: 8/14/2009
Posts: 4090
Location: The Netherlands
Warp wrote:
Can't you "jump" by simply inverting gravity for a bit and then restoring it? It ought to increase your falling speed from a ledge.
But I haven't played this game, so I'm just shooting in the dark.
Mothrayas wrote:
This game mode controls like VVVVVV - you can't simply "jump" down, you can only invert gravity, and can only do so while on the ground.
http://www.youtube.com/Noxxa
<dwangoAC> This is a TAS (...). Not suitable for all audiences. May cause undesirable side-effects. May contain emulator abuse. Emulator may be abusive. This product contains glitches known to the state of California to cause egg defects.
<Masterjun> I'm just a guy arranging bits in a sequence which could potentially amuse other people looking at these bits
<adelikat> In Oregon Trail, I sacrificed my own family to save time. In Star trek, I killed helpless comrades in escape pods to save time. Here, I kill my allies to save time. I think I need help.