[comp.sys.amiga] BADGE contest hack

keithd@cadovax.UUCP (Keith Doyle) (09/14/88)

Contest rules say you have to be able to drag the drawer with a demo
in it to a hard disk and have it run without any assigns, assumed disk
names etc.

If you are using the Director and doing stuff with either sound or
custom fonts, this is pretty difficult.  While you can run the AmigaDOS
assign command from within the Director, it uses the AmigaDOS Execute()
call which won't preserve the current directory for the command being
Execute()'d.  Thus, commands such as EXECUTE v,"assign fonts: foo" 
(Director syntax) will always assume that foo is on DF0:.  Don't know
if this is an AmigaDOS bug or feature, it sure has been a pain regardless...

So, I put together this little hack.  It figures out the correct
current directory, does an ASSIGN HERE:   to the current directory
and will run whatever list of AmigaDOS commands you might want to give
it (in the icon's tooltypes).  If you make sure *all* files in your
Director script are referenced via HERE:, pictures, fonts, location of
sound module, etc. the resultant demo should meet all of the criteria
outlined in the BADGE contest rules.  Hope you don't spend more time
making your demo comply to the rules than you did making it do it's
neet stuff in the first place.  

This hack will also unassign HERE: when it's done so even the memory
used by the entry in the ASSIGN table will be freed.  It will also
work correctly from the CLI (as per BADGE rules).

Perhaps this all could have been done with XICON, but it took me less time
to hack this out than it would have to wander through several thousand
library disks looking for my copy of the instructions on how to use it  
(where's my disk catalog disk again?) and I wasn't sure if it wouldn't
end up having the same Execute() problem anyway.

Oh and BTW, we have tested Director under 1.3 and haven't found any
problems.  'Course we haven't seen the release version yet so there's
still a chance that it won't work on that one... :-)

We've also tested it on 68020's, and found that it works, but its
speed can call even more attention to a display glitch that can 
happen sometimes when double buffering.  The Director's DISPLAY command 
will complete as soon as it has signaled the system where to get the next
video frame.  However, the video beam may only be halfway down the
screen still displaying the old buffer at the time.  If you follow
your display command soon after with a command that modifies the
buffer that USED to be the displayed buffer, it's still on the screen
until the next video frame and you can see the result as a flicker
or flash in the lower quarter of the screen (in a 68000.  in a 68020,
it becomes the lower 3/4.)  Newer ANIMs usually exhibit a color palette
weirdness symptom of this problem on the lefthand side of the screen,
due to the fact that they're vertical-byte oriented.

The best way to solve this problem is to do your DISPLAY twice in
succession to the same buffer, the second one will wait for the next 
video frame, so you're guranteed not to have any flicker, and it will 
work correctly on all processors.

Good luck, and happy demomaking.  This hack could be useful for other 
programs besides Director I suppose, kind of a tiny XICON, it can run 
mini-scripts stashed in your tooltypes.  It uses Execute() too, so 
current directory isn't preserved, you'll have to use HERE: in front 
of everything that isn't in your c: directory.

-------------cut here ---------------
begin 644 demorun.arc
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
DD"I4BO2`(^>-FC)CZ+R1`P)-&3EE=)`IT^:-"S-IV+0!`!H`
`
end
--------------
Keith Doyle
#  {ucbvax,decvax}!trwrb!cadovax!keithd