Path: utzoo!utgpu!water!watmath!clyde!rutgers!husc6!m2c!ulowell!masscomp!rtc From: rtc@masscomp.UUCP (Richard Carling) Newsgroups: comp.graphics Subject: Re: Real time video animation Message-ID: <2782@masscomp.UUCP> Date: 19 Jan 88 15:51:53 GMT References: <159@abvax.UUCP> <38786@sun.uucp> <2185@gryphon.CTS.COM> Reply-To: rtc@masscomp.UUCP (Richard Carling) Organization: MASSCOMP - Westford, Ma Lines: 159 I have posted a number of articles to rec.video on a very similiar subject. Since I KNOW the type of images I generate will take sometimes hours, and since on most computers it isn't possible to sustain realtime animation from disk for any great length of time I concentrated on finding ways to CHEAPLY make something as close to single frame animation as possible (under 3K for everything except the computer). Now if your really interested, grep thru rec.video looking for my name. But briefly here is what I do to create clean videotaped animation at a speed of at least 8 frames a second. I first run my color MAC II in NTSC mode, using a small C program (enclosed). I run this (now interlaced RS-170) into an RGB to NTSC encoder. Then, using a video recorder which can do interval recording, Sony SLHF-1000 (beta) or Sony CCD-V110 (8mm) or Panasonic 1950/2950 (VHS/SVHS) I record each image in my movie onto an "interval" of the tape. The interval on the 1000 is 6 frames, on the 110, 8 frames. Since all of these decks have flying erase heads, edits are very clean. I then take this very clean but jerky animation tape and tape it onto a digital video recorder which has clean 2X playback (e.g. JVC 570 and many others). Taping this 2X signal back to the first deck gives me 8 to 10 frames a second of animation. If I do this again, it works but creates mild flagging or tearing at the top of the screen (with the equipment I am using). So I stick with doing this just once. I have not looked at the Panasonic, but from the literature, it looks like it can do all of this in one deck (you still need a second deck to capture the finished product). A company (whose name escapes me, but was at the Amiga booth at Siggraph) has a very cheap ($200) controller for the SLHF-1000 which is supposed to be able to do single frame animation. All of the decks I listed have insert-edit capabilities so in theory, all could do single framing given the proper controller. Issues of tape wear and manual labor (if an automatic controller is not available) are the major concern. This is not strictly graphics related, so no flames please.... Richard Carling ....................................... So you say, hey where is this MAC II code which converts a MAC II running in non-interlaced 8 bit color mode to interlaced RGB RS-170 using the standard video card. Ok, ok... /************************ The Slot must be between 9 and 14 inclusive. I am running in slot 4 so 9 + 3 == 12 if you run in the first slot it is 9 + 0 = 9 I should use slot manager calls to automatically find the video card but not today. If looking at the back of the MAC II, the first slot is the rightmost slot, which is where most individuals have their MAC II video card placed (so use 9). This may only work when the MAC II is in 8 bit color mode. ---> And disconnect your expensive monitor first!!!!! <--- Disclaimer: I am not responsible if it doesn't work. It works for me. If you have an RGB compatible interlaced monitor such as a Sony XBR25 or many others, you can view the output on it. Pinouts have been provided in the mac & video newsgroups for cables. If you have an RGB to NTSC encoder you can view the output on virtually anything that accepts a standard video input. */ main() { SetInterlace( 12 ) ; /* !!! You will want SetInterlace( 9 ); */ } /* Set to NTSC Video */ SetInterlace(Slot ) int Slot; { long ll, *CardPtr, Calc; int Dummy; ll = (long ) Slot; CardPtr = (long *) ((ll << 20) + 0x80000L); /* << is the shift left OP */ CardPtr[0] = 0xFF; CardPtr[1] = 0x48; CardPtr[2] = 0xff; CardPtr[3] = 0xf7; CardPtr[4] = 0x9f; CardPtr[5] = 0x1a; CardPtr[6] = 0xc4; CardPtr[7] = 0xe6; CardPtr[8] = 0xfa; CardPtr[9] = 0xf7; CardPtr[10] = 0xe5; CardPtr[11] = 0xF1; CardPtr[12] = 0x7b; CardPtr[13] = 0xf1; CardPtr[14] = 0xd1; CardPtr[15] = 0x06; ll = (long)Slot; CardPtr = (long *)((ll <<20) + 0xC0000) ; Dummy = *CardPtr ; /* Must be a Longint reference */ } /* Set To Mac Normal video */ ClearInterlace(Slot) int Slot; { long *CardPtr, ll; int Dummy; ll = Slot; CardPtr = (long *)((ll << 20) + 0x80000L); /* card = $00100000*slot +$80000 */ CardPtr[0] = 0xFF; CardPtr[1] = 0xB8; CardPtr[2] = 0xff; CardPtr[3] = 0xf7; CardPtr[4] = 0x0f; CardPtr[5] = 0x1a; CardPtr[6] = 0x88; CardPtr[7] = 0xb9; CardPtr[8] = 0xfa; CardPtr[9] = 0xe1; CardPtr[10] = 0xe1; CardPtr[11] = 0xe9; CardPtr[12] = 0x79; CardPtr[13] = 0x69; CardPtr[14] = 0xd2; CardPtr[15] = 0x02; ll = Slot; CardPtr = (long *)((ll << 20) +0xB0000) ; Dummy = *CardPtr ; } .................... Richard Carling