Short: Handy 'ScreenWizard' screen generator Author: megacz@usa.com Uploader: megacz usa com Type: util/cdity Version: 0.2 Requires: 68020+/os2.04+ Architecture: m68k-amigaos; generic scrwizgen-0.2 --------------- --- Me is having new utility! Me is able to redefine each screen entry auto- magically! Me enjoys same public screens on AGA/CGX & P96! Me was also so kind to allow others have such a comfort! Isn't Me a super-cool guy ;-) ? Yes Me is! Glory to Me!!! Yep, this program makes everything really simple. No need to set anything through the GUI anymore(maybe except for palette to have direct feedback), even though it is quite user friendly. --- NEWS: [08-May-2010] 0.2 Holy, shmoly i forgot to re-NULL certain members of extra 'RDArgs' that is used inside a loop in 'swg_parseinputfile()'. This was causing mysterious duplicate warnings and generally trashing the mem. sometimes... --- NOTES: [*] Requires 68020(no FPU)+, OS 2.04+, 32+ KiB of free memory, 'ScreenWizard' [*] You will need: http://aminet.net/util/cdity/scrwiz11.lha and if you want palette freely settable: http://aminet.net/util/cdity/ScreenWizard-39.3.m1.lha [*] Unlike 'ScreenWizard' GUI, 'scrwizgen' can reassign display modes in each screen definition leaving original data file intact. Moreover it tries to be smart and match the resolution and depth, so your public screen will always look good! Aside from that, there is also extensive flag support, so you can decide what modes should be considered best suited. [*] This proggy uses clear-text data files to define screens, so there is much more control over the configuration. You only need text editor to fully customise any public screen! The gain is obvious, now you can control the monster('ScreenWizard') with scripts. [*] From now on you are not limited to the very few "approved" screen modes that showup in the requester. If you need HAM compliant public screen then no problem! [*] All the 'warning' messages generated during parsing have no effect on the $RC environment variable, only when using '[ar=amidrange/k]' return code might/will be set to 5 to indicate missed modeid assignments. [*] Beware, using highly compressed and/or big pictures for the background may delay screen opening very much! Uncompressed, hand crafted ILBM pics seem to be the best solution. --- USAGE: *** template: scrwizgen [ar=amidrange/k] [or=origreso/s] [od=origdepth/s] - Input file, a clear-text, ini-style one. - Output file, 'ScreenWizard' compatible. [ar=amidrange/k] - This argument allows to reassign modes, automatically, its sub-syntax is as f.: '[,rhigh][,flags]'. First two args are modeid values, which makes the range and the last('flags') allows to narrow or expand that range even more. Literal flags are as follows: LACE, DUALPF, PF2PRI, HAM, ECS, AA, PAL, SPRITES, GENLOCK, WB, DRAGGABLE, PANELLED, BEAMSYNC, EXTRAHALFBRITE, SPRITES_ATT , SPRITES_CHNG_RES, SPRITES_BORDER , SCANDBL, SPRITES_CHNG_BASE , SPRITES_CHNG_PRI, DBUFFER, PROGBEAM, FOREIGN . All these flags can be found in 'graphics/displayinfo.h'. See the 'EXAMPLES' on on how to use. [or=origreso/s] - Insist on keeping original resolution after using automated modeid assignment. [od=origdepth/s] - By default bit depths are truncated to 8 for compatibility reasons. If you want original depths anyway use this switch. --- DATAFILE(options): [pn = pubscreen/k] - Each new entry must start with this argument, its formely "Public name" in 'ScreenWizard'. [se = scrntitle/k] - Title that will be associated with the public screen you have created('[pn=pubscreen/k]'). [pi = picture/k] - File that could be used as a background pic. [nt = newfont/k] - Fontname/fontsize to use('[ct=customfont/s]') Dont suffix fontname with '.font'! [md = modeid/k] - ModeID to use, can be decimal or hexadecimal. Please note that 'scrwizgen' allows to attach the ID dynamically looking into resolution. By default 0 will be used. [rn = resolution/k] - Resolution/bounds of the screen. The format is: '[x[x[x]]]'. Depth must be expressed in bits and scanmode should be one of these values: 1 = text, 2 = graphics, 3 = extreme, 4 = maximum. By def. '640x480x3x1' will be used. [pp = penmap/k] - Pen mappings, formely "Drawing pens". The format is: '0x,0x,...'(oo - obj. pointer(0-9), pp - pen number(0-7)). [pe = palette/k] - Palette settings where each setting is ULONG. The fmt is: '0x,0x,...' (pp - pen number, rr - red value, gg - green value, bb - blue value). [bs = backargs/k] - Backdrop type, where first two UBYTE values define "Checkers"(pattern). The format is: '0x'(c1 - checkers pen one, c2 - ch. pen two, tt - type of background, where 0 = no background, 1 = picture, 2 = checkers). By default '0x010102' will be used. [mc = mtpensloc/k] - Multicolor pens location: 0 = last 4 pens, 1 = pens 4-7, 2 = pens 4-7 and last 4 . By default 0 will be used. [mr = multicolor/s] - Multicolor pens activation. [ie = interleave/s] - Allows to have interleaved public screen. [al = autoscroll/s] - Allows to autoscroll the screen with mice. [de = defpalette/s] - Use the default palette of the deamon. [si = shanghai/s] - Allow parent prg. windows(such as requesters) to show up on the public screen as well. This has also disadvantages, because screen with this flag triggered on will be the default! [ct = customfont/s] - Use '[nt=newfont/k]' instead of the def. OS one. --- EXAMPLES: ; suppose you want to try the examples that come with this archive, ; but you dont own a gfx card and/or your modeid values dont match ; and you use NTSC, so you need to(where any single modeid will ; expand to the whole monitor area): cd scrwizgen-0.1 scrwizgen examples.swgdata env:ScreenWizard.prefs amidrange 0x19004 ; /// will use guessed = '0x00011000-0x00019024' modeid range. ; /// attempting to open input file = 'examples.swgdata' ... ; /// attempting to open output file = 'env:ScreenWizard.prefs' ... ; /// parsing input file, dont blink yer eyes now ... ; /// creating new public screen definition = 'DUMMY' ... ; /// creating new public screen definition = 'WHITE' ... ; /// creating new public screen definition = 'REV' ... ; /// creating new public screen definition = 'PINK' ... ; /// creating new public screen definition = 'WARM' ... ; /// creating new public screen definition = 'C64' ... ; /// creating new public screen definition = 'PASTEL' ... ; /// creating new public screen definition = 'FADER' ... ; /// creating new public screen definition = 'FROGGISH' ... ; /// creating new public screen definition = 'HEAVEN' ... ; /// going to automatically determine best modeid values ... ; /// saving gathered data to 'ScreenWizard' compat. file ... ; lets now use just one modeid for everything, it is as simple as: scrwizgen examples.swgdata env:ScreenWizard.prefs amidrange 0x19004,0x19004 ; if your TFT flat panel doesnt like interlace and you use ; DblNTSC, then to eliminate these modeid values you would need ; to(flags need to be space separated): scrwizgen examples.swgdata env:ScreenWizard.prefs amidrange "0x99004,0,aa ecs" ; you think that certain monitors in your system may match the ; resolution flawlessly and you generally dont want 15kHz ones, ; but you dont want to scramble with some system monitor to find ; them out, in such case make the range very wide: scrwizgen examples.swgdata env:ScreenWizard.prefs amidrange 0x2FFFF,0xFFFFFFFF ; no auto modeid assignment scrwizgen examples.swgdata env:ScreenWizard.prefs ; to see the final effect use 'clispawn'(public screen names are ; case sensitive!) clispawn pub WARM ; or you can use 'newcli' newcli CON://///SCREENWARM --- INTEGRATION: ; add this to your 'user-startup' if you want your public screens ; to follow 'Workbench' screenmode/monitor setting(first line is ; to silently start 'RexxMast') rx >nil: "a=dummy" set workbenchmodeid `rx "if open(a, 'env:sys/screenmode.prefs', 'r')>0 then do;b=readch(a, 62);say '0x'||c2x(substr(b, 51, 4));end"` scrwizgen >nil: envarc:ScreenWizard.swgdata env:ScreenWizard.prefs amidrange $workbenchmodeid unset workbenchmodeid --- megacz@usa.com