• Please review our updated Terms and Rules here

VT100 demo animation ideas

legalize

Experienced Member
Joined
Mar 24, 2006
Messages
391
Location
Salt Lake City, UT, USA
I may be dragging a VT100 to VCFMW. I've got some ideas already for creating a file containing ESC sequences to show off the terminal.

Please post any ideas you have for sharing to this thread. No promises, but maybe someone has some good ideas that I haven't thought of yet :)

And yes, I'll probably grab all the animations from textfiles.com for playback; are there any other archives of VT100 animations out there?
 
Yeah, where is that Star Wars movie?

If you have an internet connection on whatever you have the VT100 connected to try:

telnet towel.blinkenlights.nl

Here's a reddit thread that suggests a way of nabbing your own copy:

https://www.reddit.com/r/commandline/comments/5nn3k7/stars_wars_a_new_hope_ascii_movie/

And here's a server program:

https://github.com/nitram509/ascii-telnet-server

If you need to be stand alone; full disclosure, I haven't tried either of the latter two things.
 
Interesting. The Star Wars "animation" is really just repainting the entire screen (at 63x17 or whatever, it's not a full 80x24) for every "frame" of animation. AFAICT the original version may have used ESC sequences, but the current version does not and would play really slow on vintage hardware. However, by always repainting the same number of characters every frame, it has a consistent frame rate during playback.
 
It looks like this is the direct link from the source:

http://www.asciimation.co.nz/sw1.txt

It's *far* smaller than the tee-ed version, I think the server software may be pushing a constant number of frames per second even when the same frame sticks on the screen for some time?

Yes, the asciimation site explains the format. The number in the upper left corner is the repeat count for the frame.
 
Yeah, I'd assume that for vintage purposes you'd want to convert to something a little less intensive than the text equivalent of full-frame uncompressed video. It'd probably be pretty trivial to hack up a script to convert the raw data to escape-code-assisted deltas from previous frames...I might have a go at that...
 
What baud rate can your VT100 handle? Because, yeah, if it's just repainting the whole screen with spaces it's definitely not going to work well at 9600 or 19200. The latter would be just enough for about one FPS.
 
I'm sure, many moons ago, I saw the Star Wars animation playing just fine at 38400, which allows for two full-screen repaints per second. The delay numbers could certainly be scaled.
 
I imagine baud-rate concerns are one of the reasons the animation is only 68x13 (cinematic aspect ratio being another.) That's still 884 characters per frame, though.

Definitely gonna take a stab at converting this to a more vintage-friendly transfer format.
 
Simplest way to convert it might be to write a curses application that writes each frame into the window and then calls refresh.

Curses already has logic to determine the minimum amount of work needed to refresh the screen from the updated internal data structure.

Write the curses program to play back the uncompressed movie and just record the ESC sequences emitted by curses.
 
I did some hacking on my demo animation this weekend. It's coming along nicely. It's more of a demoscene kind of animation than it is like the Star Wars animation.
 
Work is continuing on this demo. I'll release it for public consumption after VCFMW, but I don't want to steal thunder from the show :).

I've decided that the "demo" will not only showcase features of the VT100 and some "programmer art", but will also tell the story of the VT100 with heavy emphasis on internal design details.
 
I've uploaded some code that I wrote to help produce VT100 animation effects:

https://github.com/LegalizeAdulthood/vteffect

There are three utilities in this repository:
  • scat, "slow cat" program for playing animations at a specific baud rate
  • vtdump, dumps a VT100 animation as a sequence of commands
  • vteffect, generates a particular effect as a VT100 escape sequence

I used this code and some hand editing to create an animation that I was displaying at VCF MidWest.

Pull requests welcome :)
 
Added a fourth utility, vtasm, that is the inverse of vtdump. I'm still not recovering byte identical output by doing vtdump -> vtasm, so there are obviously some bugs left to still work out. It's very close, but not perfect.
 
Back
Top