Posts for Sand


1 2 3 4 5 6 7
Sand
He/Him
Experienced Forum User, Published Author, Player (125)
Joined: 6/26/2018
Posts: 154
feos wrote:
We just don't link to Archive items, only directly to files. So maybe this part can be improved.
I like this idea. I have often wished that the archive.org links went to the item's /details/ page, not a direct /download/ URL. (I usually "Copy Link", paste, and manually edit the URL.) The details page not only has easy download and torrent links, but also favorites and review posts, and automatically derived lower-bandwidth video files you can play in the inline player. There's an opportunity for archive.org to serve even more of an archival purpose, by hosting emulator input files alongside the video, since an item can contain more than one file. Like MUGG, I used torrents a long time ago (I have a memory of watching a Mega Man X run while the video was half downloaded and enjoying the resulting video glitches), but I have not used them in years.
Post subject: media.tasvideos.org images are broken
Sand
He/Him
Experienced Forum User, Published Author, Player (125)
Joined: 6/26/2018
Posts: 154
There are a number of wiki pages and forum posts that load images from media.tasvideos.org, many of which are now broken. For example, at Wiki: TextFormattingRules#ReferencesLinks:
[https://media.tasvideos.org/guidelines/entertain.gif|right]
https://media.tasvideos.org/guidelines/entertain.gif is now 302 → 404 Not Found. What it used to look like: https://web.archive.org/web/20210421212329/https://tasvideos.org/TextFormattingRules.html#ReferencesLinks. There are more examples at /Search?SearchTerms=media.tasvideos.org. For example, Wiki: GameResources/DOS/Jetpack#NamingConventions has many missing images in a table, like https://media.tasvideos.org/jetpack/guy.png. However, Post #184070 shows that some media.tasvideos.org images still work, like https://media.tasvideos.org/lsamson1091.png.
Post subject: CORS on archive.org
Sand
He/Him
Experienced Forum User, Published Author, Player (125)
Joined: 6/26/2018
Posts: 154
TiKevin83 wrote:
I'm looking into next whether the player can stream from resources on archive.org. It should actually be possible to use this for cross domain resources if they send the correct CORS response, so I might have options to play back streaming video if from sites that supply the right CORS info.
I have found that archive.org sends CORS responses for video files if you request from cors.archive.org and use a /cors/ path prefix. Start from the item's details page:
  • https://archive.org/details/adventure-a2600-tas-katistrofic2
Find the download link of the specific video file you want:
  • https://archive.org/download/adventure-a2600-tas-katistrofic2/adventure-a2600-tas-katistrofic2.mp4
Then make the CORS changes:
  • https://cors.archive.org/cors/adventure-a2600-tas-katistrofic2/adventure-a2600-tas-katistrofic2.mp4
Here you can see the difference in response headers:
$ curl -i https://archive.org/download/adventure-a2600-tas-katistrofic2/adventure-a2600-tas-katistrofic2.mp4
HTTP/2 302 
server: nginx/1.18.0 (Ubuntu)
date: Sun, 02 Jan 2022 02:58:41 GMT
content-type: video/mp4
location: https://ia801507.us.archive.org/3/items/adventure-a2600-tas-katistrofic2/adventure-a2600-tas-katistrofic2.mp4
accept-ranges: bytes
strict-transport-security: max-age=15724800
referrer-policy: no-referrer-when-downgrade

$ curl -i https://cors.archive.org/cors/adventure-a2600-tas-katistrofic2/adventure-a2600-tas-katistrofic2.mp4
HTTP/2 302 
server: nginx/1.18.0 (Ubuntu)
date: Sun, 02 Jan 2022 02:58:50 GMT
content-type: video/mp4
location: https://ia601507.us.archive.org/cors_get.php?path=/3/items/adventure-a2600-tas-katistrofic2/adventure-a2600-tas-katistrofic2.mp4
access-control-allow-origin: *
access-control-allow-headers: Accept-Encoding,Accept-Language,Authorization,DNT,Cache-Control,Pragma,Range,Content-Range,Content-Length,X-Requested-With
accept-ranges: bytes
referrer-policy: no-referrer-when-downgrade
I don't remember how I figured this out. I cannot now find where it is documented. Strangely, in my experience, for audio files, you get access-control-allow-origin: * even with a normal archive.org/download URL; it's only video files that need cors.archive.org/cors.
Sand
He/Him
Experienced Forum User, Published Author, Player (125)
Joined: 6/26/2018
Posts: 154
It seems to me that good candidate games would not be too long, not do much loading from disk, have a low frame rate, not use subframe inputs, and not use the real-time clock (this last criterion eliminates the Commander Keen games). From a skim of the DOS movies list, some good first runs to try could be I don't know whether fast-paced adventure games like [4391] DOS Hero's Quest by c-square, mrprmiller & davidtki in 00:40.90 would be good or not. Because something is happening on nearly every frame, even a small inaccuracy could desync the run. On the other hand, they are short in real time, and may buffer keyboard inputs, providing some resilience against timing inaccuracies.
Sand
He/Him
Experienced Forum User, Published Author, Player (125)
Joined: 6/26/2018
Posts: 154
Post #509262 has details of how I played back [4345] DOS The Adventures of Captain Comic: Episode 1 - Planet of Death by Sand & Kabuto in 06:30.98 on a PC running FreeDOS, with an Arduino providing USB keyboard inputs. Link to video More attempts, source code, etc.
Sand
He/Him
Experienced Forum User, Published Author, Player (125)
Joined: 6/26/2018
Posts: 154
Link to video More attempts, source code, etc. This is [4345] DOS The Adventures of Captain Comic: Episode 1 - Planet of Death by Sand & Kabuto in 06:30.98 played back on a laptop running FreeDOS 1.3 RC4 connected to an Arduino Leonardo. The Leonardo model has the special feature that it can act as a USB keyboard. The board is programmed with the sequence of timed keypresses from the emulator movie file. It presses the right keys at the right times, as if it were a USB keyboard plugged into the laptop. The source code necessary to program the Arduino is available in comic-arduino-verification.zip, or in the tas/arduino-verification subdirectory of git clone https://www.bamsoftware.com/git/comic.git. There is a script there that parses a JRSR file and outputs a C++ array of microsecond timestamps and key press/release events:
$ ./jrsr comic1.jrsr
const struct {
        unsigned long delta_micros;
        unsigned char press;
        KeyboardKeycode keycode;
} TABLE[] PROGMEM = {
        {       0, 1, KEY_C          },
        {     667, 1, KEY_O          },
        {     666, 0, KEY_C          },
        {     667, 0, KEY_O          },
        { 8628995, 1, KEY_RIGHT_ARROW},
        // ...
};
The Arduino is wired to a simple circuit with a button to begin playback. I copied the circuit from the Arduino KeyboardMessage tutorial. I paid about USD 40 all together for the Arduino, breadboard, pushbutton, jumper wires, etc. I made some changes to the original JRSR file, for convenience or to get the run to sync. You can see the changes by diffing tas/comic1.jrsr (original) and tas/arduino-verification/comic1.jrsr (modified) in the Git repo. Apart from the first two changes in the list, the modified file still syncs in JPC-RR.
  1. I was not interested in playing back the boot sequence, so I trimmed the inputs up to the title screen. You have to boot the computer and run COMIC.EXE yourself, then press the button to begin playback.
  2. I shortened the delay between the title screen and the first game inputs by about 165 ms (equivalent to 1.5 game ticks). This is for sync; without it, Comic always made the first jump too late. I attribute this to the real laptop running the game's initialization code faster than the emulated CPU does.
  3. After the first death in CASTLE0, I moved the release of the Right key to happen about 1 s earlier. I don't know why this was necessary, but without it, the game would not register this particular key release and would desync.
  4. The original JRSR file continues holding the Left and Space keys at the end of input. On a real PC, this led to automatic keyboard repeat and annoying beeping at the high score screen. I added release events for these keys at the end of the input.
Even with the above changes to the JRSR file, the playback does not sync every time. At the archive page, you can see all 11 attempts I made, of which 3 synced to the end. The embedded video above is attempt #7. I attribute the sync failures to a lack of synchronization between the externally timed keyboard inputs and the game loop. In the emulator, inputs occur at certain times relative to the game's tick cycle. Because the USB keyboard inputs are not locked to the game loop, they may occur earlier or later in each tick, perhaps sometimes even splitting inputs that are meant to be in the same tick across adjacent ticks. Captain Comic is a forgiving game in that it has ticks of long duration (110 ms). The same technique may not work directly with other games that require more precise timing—though an idea for the future is to connect the VSYNC pin of the laptop's VGA port to the Arduino, as a timing source for games whose game loop is locked to the screen refresh.
Sand
He/Him
Experienced Forum User, Published Author, Player (125)
Joined: 6/26/2018
Posts: 154
I initially felt apprehension when I heard about the rewrite project. My experience with redesigns and migrations is that they can have the discouraging side effect of breaking years-old stable links and losing history. The gain—in new technologies, improved URL design, or what have you—was diminished by a break in continuity. I was therefore gladdened when I tried an old-style forum link: https://tasvideos.mistflux.net/forum/viewtopic.php?p=508259#508259 and saw that it redirected to the same post in the new forum, down to the HTML anchor! https://tasvideos.mistflux.net/Forum/Topics/22808?CurrentPage=1&Highlight=508259#508259 This is, honestly, tremendous. It gives me confidence in the developers and their attention to detail. It was this experience that made me feel the rewrite project was worth some of my time and attention. This site is not only a place for ongoing contemporary discussion and the development of new speedruns. Its history is one of its greatest assets. At a time when much of speedrunning history is falling into the black hole of Discord or random Google docs, where it is bound to disappear in a few years, TASVideos serves as an example of how to do things right. Think of those Summoning Salt videos that cite forum posts from a decade or more ago, and how those vital historical links might have been lost if not for careful stewardship. I see the preservation of past history as one of the main responsibilities of the site as it proceeds into the future. After all, cool URIs don't change 😎. I appreciate the effort that has gone into the rewrite. It is good to feel that what I contribute today will not be lost tomorrow. You have my support!
Post subject: Subpixel position address
Sand
He/Him
Experienced Forum User, Published Author, Player (125)
Joined: 6/26/2018
Posts: 154
redatchyon2098 wrote:
Now you just need to know the address of Mario's sub-pixel position
I don't know this game, but what you are looking for may be at /GameResources/NES/SuperMarioBros.html#MemoryAddresses.
Sand
He/Him
Experienced Forum User, Published Author, Player (125)
Joined: 6/26/2018
Posts: 154
OnehundredthCoin wrote:
It can also be a bit misleading, as there are several different cheep cheep objects, and only one of them has the odd bump behavior.
Thanks, made that correction and added your graphic in /diff.exe?page=GameResources%2FNES%2FSuperMarioBros3&rev=29.
Sand
He/Him
Experienced Forum User, Published Author, Player (125)
Joined: 6/26/2018
Posts: 154
OnehundredthCoin wrote:
I'm pretty sure this new glitch can save time in the 100% TAS. As a quick summary, you can store the most recent block a sprite detects, and if it's a bumped block when Boom Boom spawns in, they are instantly defeated.
This is a great find. I added information about the trick to the Game Resources page. Let me know if I got any facts wrong and I'll fix it.
Post subject: Explanation video
Sand
He/Him
Experienced Forum User, Published Author, Player (125)
Joined: 6/26/2018
Posts: 154
I watched the explanation video at https://www.youtube.com/watch?v=wzrKrAvyDZQ. Very interesting, particularly the detail about horizontal position mod 20. The technique of encoding TAS inputs into the code of the game is similar to what Typhon is doing with Nintendo Nightmare, another hard-to-emulate game.
Sand
He/Him
Experienced Forum User, Published Author, Player (125)
Joined: 6/26/2018
Posts: 154
Nice research, Typhon. It's fun to see the strategies evolve. That's an interesting discovery, that the pause menu cuts off the end of the game loop.
Post subject: PHP stack trace in http://tracker.tasvideos.org/api.wsdl
Sand
He/Him
Experienced Forum User, Published Author, Player (125)
Joined: 6/26/2018
Posts: 154
The WSDL file http://tracker.tasvideos.org/api.wsdl, linked from /SiteTechnology/API.html#SoapApiForTracker, has a PHP stack trace in the middle of the XML. (Archived.)
 <!-- Types for results -->
 <types>
  <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" 
                targetNamespace="urn:NesvTrackerQuery">





<br />
<font size='1'><table class='xdebug-error xe-notice' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Notice: Array to string conversion in /home/tasvideos/domains/tracker.tasvideos.org/public_html/api/wsdldesc_compiler.php on line <i>257</i></th></tr>
<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
...
When I try to parse the file using Zeep, it complains about the br element:
$ python3 -mzeep http://tracker.tasvideos.org/api.wsdl
  ...
ValueError: No visitor defined for '{http://www.w3.org/2001/XMLSchema}br'
Here is the stack trace as a table: [td colspan="5"]( ! ) Notice: Array to string conversion in /home/tasvideos/domains/tracker.tasvideos.org/public_html/api/wsdldesc_compiler.php on line 257[/td]
Call Stack
#TimeMemoryFunctionLocation
10.0068245328{main}( )../wsdldesc_compiler.php:0
20.0602285416ParseAndProduceWSDL( )../wsdldesc_compiler.php:288
30.0611314896produce_wsdl( )../wsdldesc_compiler.php:267
40.0613326144produce_wsdl_types( )../wsdldesc_compiler.php:120
50.0613326480produce_wsdl_types( )../wsdldesc_compiler.php:208
Sand
He/Him
Experienced Forum User, Published Author, Player (125)
Joined: 6/26/2018
Posts: 154
Great work. Speaking for myself, I prefer the "final input" ending criterion. At Post #506089 you mentioned using a solver; can you say more about how it works?
Sand
He/Him
Experienced Forum User, Published Author, Player (125)
Joined: 6/26/2018
Posts: 154
I enjoyed the movie, being familiar with the game. Thanks for the detail about the HOLL0350 naming convention. From it, I found The Adventure Family Tree (and a PDF chart). The version I know is KNUT0350.
Dacicus wrote:
The game does not work in Gnash or Lightspark. It seems to be a problem with the textbox used for input.
Through the family tree link, I found the HOLL0350 adventure.swf. I thought about uploading it to the Internet Archive to use their new in-browser Flash emulation. However, I tried the SWF at https://ruffle.rs/demo/ and also encountered a problem with text input: I can type, but cannot complete a command by pressing Enter. Is is possible to post a text transcript of commands entered? I stepped through the video slowly and the route looks reasonable. Besides the pour and fill shortcuts, I appreciated the use of destination names (e.g. pit) instead of step-by-step directional commands when possible. After toss eggs, does it save time to cross the chasm using ne instead of cross? (Similarly with sw after free bear.) Does the black rod count as a treasure in this version? I'm wondering if it's possible to skip dropping the rod in the house at the end.
Sand
He/Him
Experienced Forum User, Published Author, Player (125)
Joined: 6/26/2018
Posts: 154
I will add my support to SmashManiac's statement and say that HTTPS is important to me as well. Whenever I do something at TASVideos that requires logging in, I go to https://direct.tasvideos.org/ and click through the MD5 warning, because even bad TLS is vastly better than no TLS.
Sand
He/Him
Experienced Forum User, Published Author, Player (125)
Joined: 6/26/2018
Posts: 154
Awesome! I appreciate the detailed submission notes. It's interesting that optimizing this game is rather unlike other racing games.
Sand
He/Him
Experienced Forum User, Published Author, Player (125)
Joined: 6/26/2018
Posts: 154
Typhon wrote:
Should we merge the threads somehow?
I'm not sure how to request a thread merge—I see that XTREMAL93 has requested some merges in the "Feature Requests" thread in Post #499548, but I clicked on a few and they haven't been merged.
Sand
He/Him
Experienced Forum User, Published Author, Player (125)
Joined: 6/26/2018
Posts: 154
This is quite an interesting approach. If I understand you correctly, the source code of the game is available (nintendo-nightmare.gmk at the home page), and rather than provide inputs externally, you edit the source code to act as if the player had taken certain actions at certain times. I don't think there's anything wrong with calling it a bot. Did you use the same approach in your 24:04 run?
The primary technique used in this run is the CAD (control-alt-delete) exploit. To elaborate, on Windows pressing the CAD keyboard combination brings up a secondary desktop security window. Through errors in the underlying game engine that are not fully understood, large swaths of game code are not executed while in this menu and similar UAC menus.
That's a strange glitch. Do you know if it affects other GameMaker games, or is it specific to this one? I'm curious about the calls to random_set_seed. Does the game's RNG desync otherwise?
scr_tas_room1()
{
    internal_room = room1;
    random_set_seed(589190);
}
Post subject: Re: Mike Tyson's Punch Out, more mem locations
Sand
He/Him
Experienced Forum User, Published Author, Player (125)
Joined: 6/26/2018
Posts: 154
opnix wrote:
I noticed the memory map for Mike Tyson's Punch Out (http://tasvideos.org/GameResources/NES/MikeTysonsPunchout/RamMap.html) is missing the ram locations for the number star punches, heart block things, and each fighter's health.
I added your addresses in /diff.exe?page=GameResources%2FNES%2FMikeTysonsPunchout%2FRamMap&rev=5&prev=4.
Sand
He/Him
Experienced Forum User, Published Author, Player (125)
Joined: 6/26/2018
Posts: 154
Zinfidel, thanks for processing the publication. And slamo, it's an honor to have you for a judge.
Post subject: Inline encode
Sand
He/Him
Experienced Forum User, Published Author, Player (125)
Joined: 6/26/2018
Posts: 154
Post subject: Movie submission wiki links lose subdomain in the forum
Sand
He/Him
Experienced Forum User, Published Author, Player (125)
Joined: 6/26/2018
Posts: 154
I made a submission while browsing under https://direct.tasvideos.org/. The submission includes a wiki link. On the submission page, the link works as I expect, with a domain-relative URL that keeps me in direct.tasvideos.org:
<a href="/GameResources/DOS/CaptainComic.html">GameResources/DOS/CaptainComic</a>
But in the forum post, the link uses a scheme-relative URL that changes the domain from direct.tasvideos.org to tasvideos.org (it remains https):
<a href="//tasvideos.org/GameResources/DOS/CaptainComic.html">GameResources/DOS/CaptainComic</a>
Post subject: Submission 6944
Sand
He/Him
Experienced Forum User, Published Author, Player (125)
Joined: 6/26/2018
Posts: 154
Sand wrote:
If nobody spots any further improvements, I'm planning to make a submission on Wednesday, 2020-11-25.
Submitted as #6944: Kabuto & David Fifield's DOS The Adventures of Captain Comic: Episode 1 - Planet of Death in 06:30.98. Thanks!
Post subject: Re: Faster deathwarp in CASTLE0
Sand
He/Him
Experienced Forum User, Published Author, Player (125)
Joined: 6/26/2018
Posts: 154
Sand wrote:
I knew about the vertical velocity underflow thing, but I never considered applying it here. Using the underflow to warp to the bottom of the screen is 19 ticks (over 2 seconds) faster than taking enemy damage.
Incidentally, I don't think this trick helps in any of the other places a death is required:
  • After collecting the Door Key in FOREST2. You could die immediately after collecting the Door Key, instead of taking 8+8 ticks to collide with an enemy and play the death animation; but you would need to die on the way to the item to initiate hover. I hacked the route optimizer to require a hover-based deathwarp from this location and confirmed that it would be no faster.
  • To initiate hover at the LAKE1/LAKE2 boundary. The point of dying here is that we don't have hover, therefore we cannot use hover to die faster.
  • To get up to the platform in CAVE0. We don't have hover at this point, and besides there's a ceiling.
  • To get out of the pit CAVE1. We don't have hover at this point, and besides there's a ceiling.
  • Deathwarp after collecting the Teleport Wand in CAVE2. There's a ceiling.
If nobody spots any further improvements, I'm planning to make a submission on Wednesday, 2020-11-25. (I solved the login problem I was having.)
1 2 3 4 5 6 7