FULLSCREEN FOR GFA FULLSCREEN IN GFA-BASIC: "GfA has no limits..." by Jedi of Sector One (still a crew from The Heavy Killers) First, everyone said: "GfA-Basic, pfff... wot a lame language to code demos...". Then came the first screens coded in GfA-Basic, like the "AXIA DEMO" who were, mmm..., yeah, they were demos. Then came the "Ultimate GfA-Demo" by the Overlanders. It was so good that nobody wanted to believe that it was coded in Basic. But some shrewd minds tried to understand the trick, found how (relatively !) fast were instructions like CARD{}, and recognized that it was really coded in Basic. So, for most the people, it was possible to code some demo-stuff in GFA-Basic, but only simple and classic things like sprites, dists, screxx, stars, and so on. But there was one thing that betrayed all screens coded in Basic: rasters weren't stable. But when the "Kidney Bean Demo" was released...surprise ! The Overlanders-screen used stable rasters, as well as my "Genious Demo" that featured...plasmas !!! We explained the technique and everybody answered that it was finally easy and that we had broken a limit of the GfA. Ok, rasters in GfA were possible, but demos coded in this language were still old-fashioned compared to assembly ones that featured things like soundtrack, fullscreen, syncscroll,... But it seemed to be something close to the Basic. But in a little coding-party organized in France by Dr Snake, I worked on a syncscroll in GFA-Basic. First, everybody was laughing. Then, they were weeping... When our "Bee Forol Demo" was released, everyone had to say that GFA-Basic was finally not so lame and that a new limit was broken. There was only one thing never done in Basic: a full screen-routine. Even after having seen the main-menu of the Bee Forol Demo (by the way: press [*] to unshift the planes...and read the screx next time !), everyone said that it was impossible to do. Even I said the same thing, as in assembly, toggles were too fast for Basic. Anyway, some dangerous dudes tried and failed, excepted Dogue de Mauve from the Overlanders who told me that he managed to kick out the right border, but that the other one was impossible to delete. Time passed... And a beautiful day, I decided to focus on fullscreen in Basic, because I didn't feel like working on assembly demos. The first thing I did was calculating how much time was taken by an instruction like BYTE{&HFFFF820A}=2 I compiled it, disassembled it, peeked at my cycle-table and found 20 cycles, or an equivalent of 5 NOPS. So, I took an assembly fullscreen- routine and tried to recode it about to gap every toggle of 6 NOPS from the previous one. A bit afraid, I assembled it, closed the eyes and launched it. When I timidly opened the right eye... Yoohoo !!! It works !!! I knew that the shifter had some key-positions, but I thought that reading its status too late after those positions would lead to a very unstable result. But no, it wasn't the case, if you leave apart some vertical parasitics happening one time out of five. In this case, switching off the computer and turning it on anew was enough to avoid this problem. The conversion in GFA-Basic was easy: as the BYTE{adr.w}=number.s took 20 cycles and a number.s (<127 because it generates a MOVEQ) 4 cycles, I translated the assembly-source into GfA-Basic to set all toggles to the same time. The only problem was finding how many cycles I had to wait after the stabilisation. I had to do many tries till it worked... The low-border was added with the same technique. I also wanted to delete the upper-border, but it's very difficult: VSYNC isn't stable at all (it moves on more than one scanline even though all interrupts are cut) . The only solution would have been waiting after the last line of the low-border. But in those conditions: whaddaya do to include music, huh ??? ODC and I are still trying to solve this nasty problem... During this time, I give you a little present: the fully commented source of my routine. Of course, it must be compiled to work. I think it should work on all kinds of computer, but who knows... Just note that sometimes, odd rows can appears every 32 pixels. It can't be avoided, so the only way to get a correct fullscreen is switching off the computer, waiting a bit and then turning it on again... As you seem to be a cool guy, I've added the assembly-sourcecode I converted into basic. Enjoy... You can find those sources on this disk, in the folder containing this text-file... Tot ziens...See ya...A+... _________________________________________________________________ /////////////////////////// J E D I \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\ S E C T O R O N E ///////////////////////// ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ You can get in touch with me at the following address: Frank DENIS 54 rue Saint Denis F- 93100 MONTREUIL FRANCE Frogs can write a little message on RTEL (bal JEDI/SCT1 - et surtout pas JEDI tout court), GEN4 or STMAG (bal SECTOR ONE - precisez que c'est pour moi !!!), LEADER (bal JEDI) ou EINSTEL (bal JEDI aussi) .