Main Menu

Removing horizontal line between screens

Started by Umpal, 27 Feb, 2017, 12:05 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Umpal

I did not find any tip on how to remove the black horizontal line between two (and more) different screens AMOS Pro puts between. Is there a workaround or it's impossible and has to stay that way?

SamuraiCrow

Do your own Copper list generation but it is very difficult because you lose most of the Amos commands.

Sidewinder

My understanding is that the black horizontal line is necessary because of the time required by the CPU to update all the color registers and change the bitplane pointers for the new screen.  The blank line hides these actions, otherwise you'd get some strange graphical artifacts (I'm assuming that these actions are done in an interrupt and that bitplane DMA is halted during this time which is the technical reason for the black line).  But as SamuraiCrow said, if you want to get rid of the line it may be possible if you roll your own Copper List.  If the screen you're switching to doesn't have too many bitplanes/colors to it may be possible to perform all the necessary move instructions in the horizontal blank period after the scanline, although after reading this thread over at EAB, it may require a faster processor.
- Sidewinder

Umpal

I understand there is a change in the way the graphics is displayed when showing next "layer" as a different screen. I haven't seen it in others [non AMOS] productions so I assume it is achieved by the method SamuraiCrow mentioned. But how about that line that is over the mouse pointer? Is there a reason it has a higher priority than hardware sprite? In fact, the black line is not as much annoying as the line over the cursor when you move it across different screens.

SamuraiCrow

It might be disabling the display DMA altogether for that row.

Umpal

Would it affect the pointer as well? And is it achievable from AMOS directly*?

*I mean AMOS' instructions, not some deep hack or assembler code. However, in the last option if it was just a small piece of code easily injected not causing any "disturbance" to the AMOS program then I'd go for it.

SamuraiCrow

Bypassing the screen code requires deep hacks.

Umpal

It seems I'll have to accept it "as is". Thanks anyway.

Sidewinder

Quote from: Umpal on 28 Feb, 2017, 03:39 PM
It seems I'll have to accept it "as is". Thanks anyway.

Unfortunately I think you might.  I did some testing yesterday with the OS and the screen dragging (which does this exact same thing) puts in 2 blank lines in OS3.1 and 3 blank lines in OS1.3.  The mouse pointer also disappears on those blanked lines.  It seems as if AMOS is actually a pretty good implementation requiring only one blank line.
- Sidewinder

Umpal

You are right. How could I forget about the dragging screen and its line? Never mind, it's easier to accept in now  ;)

KevG

Why don't you use overscan mode and the palette trick?
It works for me.

Umpal


KevG

If you set the background colour to something other than black and set the location of the top of the screen off screen then you will not see a black line. Use Screen Display to position it. You may have to use overscan mode so that any odd colour doesn't appear in the border region.

Umpal

I guess I'm not following you. Correct me if I don't see it right. Even if you set overscan (for your base or additional screen or both), in case of... let's say a panel with commands for an adventure game, it will always have a line that will be separating it from the screen behind (and the mouse pointer will experience the move beneath it while changing from the location screen to the panel and vice versa). So setting the overscan mode will only change the width of the line but will not make it disappear. Of course I'm open for different approach :)

KevG

Here is an example of how someone did it recently. Its the Super Mario remake.
http://eab.abime.net/showthread.php?t=84783

You will notice that there is no black line between the score panel and the scrolling screen.
How he actually did this may be different from how i did it in the past. But the top of the top screen is OFF screen so you don't see the black line. And the bottom of the top screen you don't see because the background colour is set to that of the background colour of the main screen. Its just one example but you get the idea.

The best thing to do is post your screen setup code here so that we can have a look at it.
You will still get the  unwanted mouse effect though between the two screens.