These two foul language filters have been in my possession for quite some time. I bought the TVGuardian 101 in 2014 as alternative to a Closed Captioning decoder to view subtitles of some NTSC LaserDiscs. In 2015, I got a Pioneer DVL-909 LaserDisc player with S-Video output together with the newer TVGuardian 201, which supports both composite and S-Video. I never got around to write an article about it, but now it’s time to remove that from my to-do list.
As stated before, I had no interest in the primary function (censoring!) of these devices and they were just cheap and obtainable alternatives to CC decoders. Actual CC decoders are regularly listed and discussed in the LDDB forum (e.g., this thread) and now it seems that it is already possible to build them yourself, e.g. with the Video Experimenter Arduino shield.
While investigating and writing this article, I found out that my DVL-909 LaserDisc player stopped accepting LaserDiscs, so the topic somehow shifted towards the disassembly and analysis of the foul language filters.
To have an idea of what we are dealing with, this is an excerpt from the TVGuard 201 owner’s manual:
The phrase “GET THE HELL OUT” is muted and “GET
OUT” is displayed.
The phrase “MOVE YOU’RE A- -!” [sic] is muted and
“MOVE YOUR TAIL” is displayed
The TVGuardian 101 is an unremarkable little box. Be careful with the rubber feet, they tend to relocate themselves and stick somewhere else. I removed them a while ago and only put them back for the photo.
There isn’t a lot inside, just a single PCB.
When looking at the chips, it shouldn’t be too hard to figure out how this device works:
- U3A – Microchip PIC16C622A EPROM-Based 8-Bit CMOS Microcontroller
- U6A – Microchip 93LC86 16K 2.5V Microwire Serial EEPROM
- U7 – Philips 74HC4066 Quad Bilateral Switch
- U8 – NJRC NJM2207 Video Super Imposer
- U9A – Zilog Z86129 NTSC Line 21 Decoder
- U10 – NS LM358 Low-Power Dual-Operational Amplifier
- U11 – NS LM393 Low-Power Low-Offset Voltage Dual Comparator
The brain is a Microchip PIC MCU (U3A). It gets the CC data from the NTSC line 21 decoder (U9A) and matches it against the dictionary in the EEPROM (U6A). Depending on the settings (sliding switches on the back of the device), the captions are superimposed with the video super imposer (U8) and/or the audio is muted with the switch (U7).
The software and dictionary version of this device is 1.06. This is indicated by the label on the PIC (which is protected, unfortunately) and towards the end of the dictionary data in the EEPROM. The startup screen confirms that.
To make use of the CC superimposer without censoring set FILTER – OFF and CAPTION – ON with the slide switches on the back.
Foul language filter
Warning: If you belong to the target group of these devices, then cover your eyes and scroll down to the next section!
For your reference (and a good laugh), this is the content of the EEPROM. The last paragraph of keywords seems to be the replacements for some of the other words.
The successor TVGuardian 201 looks more like a TV receiver or A/V switch. Besides the CC decoding and censoring capabilities, it can also switch A/V signals (two inputs with composite and S-Video, as well as analog and digital audio). Here are some impressions of the box and the device:
Compared to the 101, the PCB is about the same size. The A/V connectors were moved to a larger PCB in the back and the control buttons to a little vertical PCB in the front.
How does this unit work? Let’s have a look at the chips:
- U1, U4 – Fairchild FAN1117A 1A Adjustable/Fixed Low Dropout Linear Regulator
- U2, U3 – Philips 74HC4066 Quad Bilateral Switch
- U5 – NJRC NJM2538 Video Amplifier with 75 ohms Driver
- U8 – Philips SAA5542PS TV microcontroller with Closed Captioning (CC) and On-Screen Display (OSD)
- U11 – Elantec EL1883 Sync Separator with Horizontal Output
- U13A – Microchip 24LC02B 2K I²C Serial EEPROM
Main program, dictionary, CC decoding and output are now handled by a Philips SAA55xx MCU (U8; marking: SAA5542PS/M4/1508 | CC3481 11 | TVG300 | PHILIPS 1998 | TSG0439 M4B). The audio is muted by the switches (U2, U3) and there are also some new components: Video amplifier (U5) and sync separator (U11).
This time, EEPROM (U13A) only contains the settings and not a dictionary. The startup screen of the OSD tells us the software version 3.00 (also on the MCU marking) and the dictionary version 2.02.
To make use of the CC superimposer without censoring don’t bother with the settings menu. Instead, press the odd-shaped TVG button on the front 5 times / until the OSD says TVG: Off/CC1.
An interesting addition is the TEST CONNECTOR (J2) on the right side of the PCB. Pins 1-2 are labelled RST and correspond with the unpopulated RESET button (PB1) on the PCB. Short these pins to — surprise — reset the device. Pins 9-10 are labelled MODE, but so far, I didn’t get any reaction when shorting these pins. Pins 2-9 go to various pins of the MCU, EEPROM and sync separator. This is surely an invitation for interesting experiments in the future.
- [RST] +3,3 V and PB1
- [RST] U8 pin 43 (RESET) and PB1
- U8 pin 52 (P1.5/SDA1)
- U8 pin 51 (P1.4/SCL1)
- U8 pin 50 (P1.7/SDA0) and U13A pin 5 (SDA)
- U8 pin 49 (P1.6/SCL0) and U13A pin 6 (SCL)
- U8 pin 6 (P2.5/PWM4)
- U8 pin 47 (P1.2/INT0) and U8 pin 37 (VSYNC) and U11 pin 3 (VERTICAL SYNC OUT)
- [MODE] U8 pin 5 (P2.4/PWM3)
- [MODE] GND
Luckily, my LaserDisc player still plays DVDs. So I checked all my region 1 DVDs for closed captions (in NTSC line 21, not DVD subtitles) and bad words (to trigger the censor). Here’s a sample from the NUON movie The Adventures of Buckaroo Banzai Across the 8th Dimension, which is mild according to the IMDB Parent’s Guide.
I think the samples (and quality of the censorship – 2nd picture) speak for themselves. Both devices did not mute the audio, by the way.
All in all, they’re still usable CC superimposers. Especially the TVG 201 via S-Video. The captions stay almost within the widescreen picture while the TVG 101 loses more than half of the second line.