@2{Be Professional! @3 }By Andrew J. Campbell @4 People who've just coded a new AMOS production and are eager to try and get it released (as either commercial, licenceware or shareware) might like to know a few tricks to hide the fact that their program was coded with AMOS. Yes, of course we should all be proud our programs were coded in AMOS, after all, the language is by far the best for the Amiga and has allowed thousands of would-be games writers make their dreams come true. But consider the following: Commercial software houses don't like AMOS. It's a sad fact indeed. Apparently AMOS is a 'games creator' just like S.E.U.C.K (the Shoot Em Up Construction Kit by Palace software) and 3D Construction Kit by Domark. Of course, WE know this is a load of rubbish - it's not the language you code something in, it's the finished product that counts. But for AMOS success, you have to hide the AMOS origins of your program. It's not as difficult as it sounds. Let us see how we can go about 'hiding AMOS'...The AMOS mouse pointer and file selector are both pretty naff. How do you think a new Amiga user or young child would feel about using the AMOS Professional file- selector? Fairly perplexed I should say. Similarly, unless you change the mouse pointer in your program (assuming it uses one) you'll not only end up revealing everything to 'AMOS-spotters' but also find you have a mouse pointer exactly like a million others found in typical AMOS PD games! @3 Here are some tips to aid your coding: @1 * Always make sure you start with a BLANK screen, not the AMOS default one. Not only is it a sickly colour, it gives AMOS programs away instantly and makes them look cheap and unprofessional. A good tip is to start a program with the following line: @3 Default palette 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0... etc. @1 This will ensure any new screens are blanked out immediately, even before the user knows they've arrived. Always use the command FLASH OFF when opening a new screen. Also, a quick short-cut I'm sure most of you will be familiar with: if you wanted to make a screen turn entirely white, try this: @3 A=$FFF : Palette a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a... etc. @1 It saves you keying in 32 $FFF's, that's all. * If you can, use the FADE option as much as possible when loading and displaying screens. It 'smooths out' your program and makes it look far more professional. Make FADES quick and attractive - don't make the user wait 5 seconds as the screen gradually darkens!! And NEVER use the APPEAR command unless you're doing a slideshow. It takes far too long and is over-used by inexperienced AMOS users. * RENAME .ABK FILES!! This is a DEAD give-away to AMOS programs. You don't have to rename anything until your program is finished. Then, if you'd written a game called 'Killer Sharks', you could rename your files like this: @3 rename BOBS.ABK to BOBS.SHARK @1 It makes absolutely NO difference to the performance of your programs of course, but it does make paranoid 'AMOS-spotters' scratch their heads a bit. * Replacing the AMOS file selector with one of your own is a tough job unless you're a good coder. There are many excellent selectors already done for you by various programmers. Check out some of the many AMOS source code disks, or get in touch with F1. I'm sure they'll sort you something out. Make sure you trap errors with the commands "ON ERROR..." and "RESUME...". Remember - users don't always pick something from the selector; they might change their minds, in which case you program needs to be able to cope with this. Also be aware of people loading the wrong file types into your program. For example: if you're requesting the user to pick an IFF picture to display on the screen, what will happen if he/she picks a music track or an ASCII file by accident? * Use the DIR$ command at the start of your program. You can then set up all your filenames and if at any point you wish to change the name of your disk, you only have to alter one line. E.g.: @3 Dir$="Killer Sharks:SHARKDATA/" Load Dir$+"BOBS.SHARK",1 Load Dir$+"SOUNDFX.SHARK",5 Load Dir$+"MUSIC.SHARK",3 @1 * Alter the mouse pointer by using the 'Object Editor' accessory and creating a 4-colour sprite. If you're using a 32-colour screen, make a note of the colours 17,18 and 19 - these are the ones the mouse pointer uses (colour 16 is invisible). Remember to position the hot-spot where the 'point' of your mouse pointer is. And, of course, make sure you use the command CHANGE MOUSE in your program! * If your program loads BIG files or leaves the user waiting for a task to finish, try animating the mouse pointer with AMAL or, more simply, make it change appearance - to a disk or a clock for example. What's that? You want an example? Deary me. Okay, try adding something like this into your program: @3 >>>> NOTE: (replace all the stars with your own values!) A$="Anim 0,(*,*),(*,*)(*,*)(*,*); Loop: Let X=XM; Let Y=YM;" A$=A$+"Pause; Jump Loop" Channel 9 to sprite 9 Amal 9,A$ Sprite 9,Xmouse,Ymouse,* Hide on Amal On @1 This little routine will animate your mouse pointer. Yes! AMAL does have a use! Amazing isn't it? Be warned: The animation pauses when the disk is being accessed! * ALWAYS use the command BREAK OFF and substitute it with some kind of quit option. I must admit I have written a lot of games that still recognise the CTRL+C program quit, but I just thought I'd mention this. Isn't it supposed to add speed to a program too? * Where you can, include the use of FONTS. Don't stick to the usual AMOS 'topaz' font (or what ever it is) - get hold of some new fonts from a PD library and exploit them like crazy. And make use of the SET FONT command - you'd be surprised how effective bold/italics can be. Also, a last warning about fonts: write yourself a routine that actually READS the NAMES of the fonts from disk: AMOS seems to come up with different numbers on the A500 and the A1200, therefore a command like... @3 Set Font 1 @1 ...would probably give you a completely different font, depending on which machine you ran the program on. What's that? You want ANOTHER example doing for you? Goodness me... @3 Get Disc Fonts : Rem * Reads the font list I=0 : Rem * Set variable 'I' to 0 Repeat Inc I : Rem * Increase variable 'I' F$=Left$(Font$(I),6) : Rem * Read first 6 chars of font Until F$="dpaint" : Rem * If first 6 chars="dpaint" : Rem * you've found what number that font is! F1=I : Rem * Load variable 'F1' with 'I' Set Font F1 : Rem * F1 now stores 'dpaint' font! @1 The above routine is very useful so... er, use it. Please note that the first 6 characters of the font you're looking for must be EXACT (that means lower/lower case characters as appropriate). Otherwise you'll end up with an infinite loop! * ALWAYS use the SPACK command when using pictures in your programs. Normal IFF screens can be loaded into almost any paint package and edited freely. I know this sounds completely obvious, and I've not taken my own advice in the past (so you're a hypocrite? - SB) (yes I suppose so - AJC) but it's much better than having screens anyone could rip off in your programs. * Try to make everything keyboard accessible, as well as icon/mouse operated. It's an easy enough feature to add into almost any program and will please users no end. Trust me - my game Black Dawn was criticized for not having keypad controls when it was reviewed (I have now fixed this to stop any mumbling!) There are millions more little details I could go into to make your programs more professional and efficient, but I'll have to stop there or I'll swamp the diskzine! I hope you've found some of that information useful (I'm talking to new users mainly here) and good luck with your AMOS creations!