pendell

Current Hyperfixation: Wizard of Oz

  • He/Him

I use outdated technology just for fun, listen to crappy music, and watch a lot of horror movies. Expect posts about These Things. I talk a lot.

Check tags like Star Trek Archive and Media Piracy to find things I share for others.



cathoderaydude
@cathoderaydude

I believe I have completely worked out the internal functioning of the video toaster, a device which nobody has ever been able to explain to me in any detail, and which should not have been able to exist at the time it did and for the price it cost. I did this by thinking about it real hard, and reading six vague sentences from its designer.

The shame is that there's absolutely nobody I could run this by for confirmation other than the guy who designed it, because anyone else who thinks they know would either be completely guessing (but incredibly certain they're right) or would be a crotchety old fuck who would be so rude about what I got wrong that I would delete his email.

anyway i'm pretty convinced it contains nothing more than an analog mixer, two framebuffers and a pair of RAMDACs, and literally everything else is done through extremely clever ways of mapping prebaked bitmaps and lookup tables into values to drive those devices.


cathoderaydude
@cathoderaydude

I'm going to be expanding on this in the (at this point 28,000 word) video I'm composing on the subject, but I just keep thinking about what I've learned and being staggered by it

the Video Toaster, an addon card for the Amiga which integrates deeply with a piece of software that runs under AmigaOS, has no ability to talk to the Amiga at all. it plugs into the machine's video slot, which is - very literally - equivalent to a VGA port, or perhaps a DVI port. there are no address or data lines. there's nothing at all except sync signals and RGB values. all commands have to be encoded into pixel data. fucking madmen.


cathoderaydude
@cathoderaydude

thanks to @kyogi linking me to a page that contained the toaster developer guide (oh my god) I have now confirmed that I got everything right. which is shocking even to me. the one thing I missed: they use the TTL RGB lines on the Amiga's video interface to get cleaner values for keying operations. alright, fair.

the video about this thing is going to probably be like four hours long so i'm just going to "spoil" the real "oh fuck off" reveal of it because I feel like it should be discussed publicly more than I feel like having an "omg" moment in a video almost nobody will watch all the way through.

the toaster has lots of effects that do things like wrap the camera image onto a sphere and whisk it offscreen. that was impossible with the technology of 1990, but since the Toaster contains a digital framestore with a RAMDAC, and that can be programmed arbitrarily, for every pixel it outputs you can instead tell it to grab pixel data from another place in the framebuffer. instead of plotting pixel 5,5 at screen position 5,5, you can tell it to put 10,10 there. and that's free; it costs nothing, as long as you don't need to spend any time loading the target coordinate into registers.

well, the amiga's video output delivers an RGB value for every single pixel on the screen. so... with a bunch of precalculation, you can turn a real 3D transform into a lookup table, which instructs the Toaster on how to fake that transform solely by relocating pixels. then, to get that into the toaster, you render it into a 60fps animation that plays on the Amiga's screen, where each pixel is actually a set of packed coordinates. the Toaster's RAMDAC converts them back into numbers, then retrieves whatever pixel they point at, and in this way it's prevented from having to do any real work. the Amiga also does no work. all the work was done when the effect was designed.

the end result is that, if we could see what's on the Amiga's video output, it would be a wild clusterfuck of rainbow noise with a vague shape showing through. i would love to be able to do this, but i don't currently have the technology; eventually, I would like to.


You must log in to comment.

in reply to @cathoderaydude's post:

My guess based on the fact that it wound up being even remotely affordable is... that you are exactly correct. Does the Video Toaster have a burst sync input? Ir not, I suspect it still has genlock internally to make all the magic work.

The Panasonic WJ-MX12 I have which I think is from vaaaaaguely the same era works the same way internally, it just has a frame buffer and ramdac in line with one of the two inputs and then feeds the video split into Y and C channels into analog mixers and cmos switches

The other possibility is he is a very nice (and maybe also crotchety) old fuck (eg. my friend Dave who loves nothing more than to talk about how he designed shit in the 80s and what kind of equipment they were using and how to make a PDP-11 keep running in a steel mill etc)

in reply to @cathoderaydude's post:

Oh interesting, the doc I looked at only listed the pinout for the front half! Dang, I should have counted the pins. At any rate, I'm going off a statement by Tim Jenison (toaster designer) that the card can't talk to the CPU in any way; I'll get the link for that later

Hey, I want to thank you so much for pointing this out; I DID visit this website, but I didn't realize there was technical info here, and the doc I linked below confirms EVERYTHING. I got the whole thing right. I'm blown away. I... I have to rewrite a lot of my script now...

This just improved the quality of my video by about 50%.

I'm looking forward to the video!

With any luck, you might be able to tap those digital RGB signals off the monitor port - apparently the original plan for those was to support TTL RGB monitors like CGA/EGA did.

I 100% believe you, but I am having trouble braining together what "transitions specifically intended for porn" entail

.... but the "slime splat" program wipe from '90s Nickelodeon comes to mind, and now my entire childhood is in ruins

in reply to @cathoderaydude's post:

As I understand it, the video slot is just a duplication of the 23 Pin video port and the parallel port, with a couple extra reference clocks, audio

So if this is how it works, then how come we can't see that shit on the main monitor? its supposed to have identical output to the slot

yeah, and I haven't worked that part out yet but it seems reasonable that it would be possible to disable the onboard video DAC by reprogramming it's registers, that's generally how computer stuff worked in this era. the toaster software probably just kills the screen to avoid dazzling the operator

Also, if you go back to the original toaster, it seems that it can't completely blank the display; based on the footage "the guru meditation" uploaded using an amiga 2000, you can see the analog component of some of the wipes, so they must have added something to the 4000 that made it possible to kill the built in output completely

unfortunately the amiga video dac is three covox speech things taped together. (literally just resistors in a SIP package). so i don't think you can turn it off at all

do you have a toaster 4000? the video slot on A4000s is inline with a zorro slot, maybe it uses that instead of farting data over the video lines. that'd make sense with the flyer turning it into an NLE

oh good point, the DAC would be before both outputs anyway.

I do have a 4k, but if it's using data lines, why would it shut off the screen? Tim Jenison also asserts in the effects guide and the Screamer white paper (both 1995 I believe, so after the toaster 4k) that the amiga toaster has no way to communicate with the CPU and does everything with color data.

also re the flyer, that worked with the OG toaster and could go in Amiga 2000s. so everything still points to the lol solution as far as I can tell

that sounds a lot like modern "deferred rendering", where you just blindly splat unlit and unshaded texture data into a rainbow kaleidoscope called a "g-buffer". Looks like this:

a g-buffer containing some backpacks

from here, you render the lights as geometry and you only ever need to do the shading calculations for stuff that's actually visible on-screen.