Short: switches PAL to NTSC on interlace screens to reduce flicker Architecture: m68k-amigaos PatchLace v1.0 © Martin W. Scott, 1992 --------------------------------------- [Released 7/92] Requirements ------------ Workbench 2.04 ESC ('Fatter') Agnus (the 1-meg chipram Agnus) When you won't need PatchLace ----------------------------- You have a flicker-fixer You have a VGA or A2024 monitor Overview -------- As a poor Amiga owner, I can't afford a multiscan monitor or flicker fixer, so when a program uses an interlaced screen, it's a real pain on the eyes. Ways to reduce flicker are: - Fiddle around with the palette (if you get the chance); - Wear shades (hmm...feel a bit stupid doing that); - If you're machine is PAL, switch it to NTSC mode. The latter one reduces flicker since frames are updated 30 frames/second rather than 25 frames/second. Now with the ECS Agnus (8372A/B) installed, you can switch between PAL and NTSC, and there are programs to do this (by Nico Francois, for example). The trouble is that non-interlaced screens get put into NTSC, you lose the bottom of some screens, and the top border looks garbled. This program patches the OpenScreen routines to kick in NTSC mode when the following criteria are met: - An interlaced screen is wanted; - PAL mode has NOT been specifically requested; - The screen height is no greater than the Workbench overscan prefs allow, or a 'standard' screen is asked for, implying caller will use what it gets. These conditions could be tightened to look at things like overscan tags. If there's enough interest, I'll change it. Starting PatchLace ------------------ Easiest is to plonk the PatchLace program to your WBStartup drawer, and forget about it. You can also start it from CLI, by a command such as > Run >NIL: PatchLace in your user-startup. The patches are applied safely (in the Commodore- approved manner) and can be removed by sending PatchLace a CONTROL_C break signal. How this is done depends on hou you started PatchLace. If it was from the Workbench, you'll have to use a program such as Xoper or TaskX to send a break signal. If it was started from the CLI, you can use the 'Break' command, in conjunction with the 'Status' command to determine which process number it has. For example: > Status Process 1: Loaded as command: status Process 2: Loaded as command: patchlace > Break 2 C ; send CONTROL_C signal The patches can be toggled on and off by sending a CONTROL_D signal by a similar procedure. When a signal is sent, PatchLace flashes the screen if you are turning OFF the patch. A stack size of 2000 bytes seems sufficient (from Workbench startup anyway). Well, that's about it. Don't expect the miraculous disappearance of flicker, but there is a significant improvement. And if you don't already use it, check out LacePointer by Nico Francois - it makes the pointer prettier on interlaced screens. Compatability List ------------------ This is not at all meant to be all-encompassing, just an indication of what you can expect. The following work as you'd expect: Display (Commodore picture viewer); Mostra 1.04; PhotonPaint; PicBase 0.36; SunClock 1.0; AHextrix 1.0; Hex 1.01; Vertex; DirWork 1.62; And the following don't switch into NTSC mode: DeluxePaint III; Feel free to inform me of programs which should appear on either list. Finally... ---------- I wrote this for my own use, specifically for a few programs that use interlaced screens (PicBase, SunClock etc.). However, other users (mainly PAL users) may have a use for it. Note that it won't work with some programs (such as DPaint) which check to see what displaymode you're using and ask for a screen to fit -- in such instances, you may use programs that GLOBALLY alter the displaymode. Another small problem I've found is that Spliner, the screen-blanking program by Sebastiano Vigna, allows you to select the displaymode, but doesn't request exactly what you ask. Instead it checks which mode you're in, and only asks for the one you specified if it is different. Here's an example of what I mean: You are running a PAL system; You want to blank with a PAL interlaced screen; Spliner sees you're in PAL already, so just asks for interlace; PatchLace assumes the caller doesn't care which, and adds NTSC; You get the wrong screen. At least, I assume that's what's happening -- my code may be wrong. This isn't a major problem generally (or is it?) but when it comes to screen blanking, I can do without the PAL-to-NTSC monitor jump. Other display blankers, such as ASwarmIII, request what YOU request. One last thing. Programs such as this should perhaps be written as commodities. This one isn't, since I don't (at present) use any commodities, and so don't want that library wasting space in my system. However, if this is something you'd like to see, let me know. Distribution ------------ PatchLace is freely redistributable; it must be distributed with this document intact, and it may not be sold for profit. Permission must be obtained from me to distribute this program on a magazine-disk (since that is a form of profit-making). Contact ------- I'd be very grateful for bug-reports, comments or suggestions. As always, contributions are not obligatory, but would be happily accepted. I can be reached by postal mail at: Martin W. Scott, 23, Drum Brae North, Edinburgh, EH4 8AT United Kingdom (the one that keeps getting Conservative governments it didn't elect democratically). or by e-mail, mws@castle.ed.ac.uk Source is available on request (by email or reply-paid envelope with disk). Enjoy! Martin.