Bigbass
He/Him
Moderator
Joined: 2/2/2021
Posts: 220
Location: Midwest
I am proud to announce, Version 1 of the Tool Assisted Speedrun Dump (TASD) format specification has officially released! Site: https://tasd.io/ Github: https://github.com/tasd-org/tasd-spec Feel free to ask questions here or message me in Discord.
TAS Replay Refresher In order to properly replay a TAS movie on real hardware, we need a sequence of controller inputs to feed to the console. However, due to how most emulators are designed, the input values a TASer sets in their movie does not necessarily represent what a real controller is doing. For example, most cores in BizHawk represent each row in TAStudio as a single input for an entire frame. However, in reality, the console may be reading inputs from the controller multiple times, or even zero times, during each frame. In order to rectify this inconsistency, scripts are used to "dump" the inputs into a new format that contains sufficient information to replay the TAS. History Previously, dump formats were designed to be "good enough" for the immediate use-case of the person replaying the TASes. After I had started console verifying TASes, I quickly began noticing the severe limitations of those old formats (e.g. no reset support, different interpretations of the data, no way to identify which ROM to use.) So I felt there needed to be a new format; ideally something that would work regardless of which console or replay device was being used. ViGrey and I started this project back in 2021 after we both shared interest into creating a new format. Vi has been a massive help, writing up the bulk of the specification document and working with me to form the core layout and structure of the format. Progress has been especially slow the last few years; I hadn't worked on it at all during 2024. Slowly but surely though, work has progressed and here we are. Feature Highlights TASD is designed to be as hardware and software agnostic as reasonably possible. Both the creation and parsing of the format should be doable on most architectures, even microcontrollers, and with (practically) all programming languages. While intended as a file format, it can also be used to stream input and configuration data (no reliance on pointers to other files or other segments of data). The format itself explicitly supports the NES, SNES, N64, GameCube, Game Boy / Color / Advance, Sega Genesis, and Atari 2600. Adding additional systems is relatively simple and won't break backwards or forwards compatibility. Though, software will still need to be written to handle these systems appropriately. Other metadata is supported too. Such as attributions (for several different roles), ROM identification, verified status, game-genie codes, memory initialization, and more! Check out the specification for all the details. A word of caution though: it's very dry reading! There may still be some ambiguities or wording issues that I've missed, so let me know if something doesn't sound right. Dump Scripts and Parsers Nothing at the moment... Getting the specification out first was higher priority. JS/TypeScript and Rust parsers should be available soon. Go, C, and Python parsers are likely to happen in the future. I have an outdated Lua serializer that I'll either update or rewrite eventually.
TAS Verifications | Mastodon | Github | Discord: @bigbass
Dimon12321
He/Him
Editor, Reviewer, Experienced player (606)
Joined: 4/5/2014
Posts: 1281
Location: Romania
Congratulations, man! It's good to have task delegation, so console verifiers would not do all the work on their own
Bigbass wrote:
Site: https://tasd.io/ JS/TypeScript and Rust parsers should be available soon. Go, C, and Python parsers are likely to happen in the future.
The site cannot be reached at the moment. Why specifically these languages? Why not Java, for example?
TASing is like making a film: only the best takes are shown in the final movie.
Bigbass
He/Him
Moderator
Joined: 2/2/2021
Posts: 220
Location: Midwest
Dimon12321 wrote:
Bigbass wrote:
Site: https://tasd.io/ JS/TypeScript and Rust parsers should be available soon. Go, C, and Python parsers are likely to happen in the future.
The site cannot be reached at the moment.
Hmm you're the only one who I've heard that can't access it. I've tried several different VPN locations too, and the site itself is actually github, so not sure why you wouldn't be able to access the site. You can download it though, either as a text file or HTML https://github.com/tasd-org/tasd-spec/releases/tag/v1
Dimon12321 wrote:
Why specifically these languages? Why not Java, for example?
Those are the languages people have told me they are either working on parsers for (or would like to soon). There's no reason a parser couldn't be made for Java, I just don't know of anyone who's planning to do that.
TAS Verifications | Mastodon | Github | Discord: @bigbass
YoshiRulz
Any
Editor, Emulator Coder
Joined: 8/30/2020
Posts: 143
Location: Sydney, Australia
I don't think I'll have the time to finish it, but here's what I have so far for C#/.NET: https://github.com/YoshiRulz/TASDDotnet
I contribute to BizHawk as Linux/cross-platform lead, testing and automation lead, and UI designer. This year, I'm experimenting with streaming BizHawk development on Twitch. nope Links to find me elsewhere and to some of my side projects are on my personal site. I will respond on Discord faster than to PMs on this site.
Hey look buddy, I'm an engineer. That means I solve problems. Not problems like "What is software," because that would fall within the purview of your conundrums of philosophy. I solve practical problems. For instance, how am I gonna stop some high-wattage thread-ripping monster of a CPU dead in its tracks? The answer: use code. And if that don't work? Use more code.