Best fullscreen screen.

All about ST/STE demos

Moderators: Mug UK, lotek_style, Moderator Team

User avatar
troed
Atari God
Atari God
Posts: 1087
Joined: Mon Apr 30, 2012 6:20 pm
Location: Sweden

Re:

Postby troed » Sun Jul 08, 2012 1:26 am

ijor wrote:It does open the left border. But seems the timing is wrong and it works in one wakeup only.


(Really old thread .. but seems to be a good place for it)

This is the demo screen that made me figure out how to jump from a "bad" wakeup to a "good" wakeup, using a technique I think I saw you discuss in another thread. Basically a really quick flick of the power button caused my 520ST to display Spectrum 512 pictures correctly, display the Omega fullscreen correctly (but even then usually with every second 16 pixels black, every line - I even thought that was what the demo should look like for a long while) etc - which I now understand to be how it snapped to the other wakeup mode.

(And there are still a few demo history pages that need correction: Alyssa/TEX - lower. TEX - right. TNT Crew - left. XXX - top. Omega - full)

Gunstick
Captain Atari
Captain Atari
Posts: 254
Joined: Thu Jun 20, 2002 6:49 pm
Location: Luxembourg
Contact:

Re: Re:

Postby Gunstick » Sun Jul 08, 2012 1:39 pm

troed wrote:(And there are still a few demo history pages that need correction: Alyssa/TEX - lower. TEX - right. TNT Crew - left. XXX - top. Omega - full)


I guess the XXX and Omaga feats get mostly ignored because they were generally unstable.
XXX had like 20 lines of squeezed hsync signal on top. and Omega did not work well (did it miss the stabilizer?).

The history list here is quite accurate: http://dhs.nu/video.php?history=yes but it would really need an update to the 90ies

User avatar
troed
Atari God
Atari God
Posts: 1087
Joined: Mon Apr 30, 2012 6:20 pm
Location: Sweden

Re: Re:

Postby troed » Sun Jul 08, 2012 4:06 pm

Gunstick wrote:
troed wrote:I guess the XXX and Omaga feats get mostly ignored because they were generally unstable.
XXX had like 20 lines of squeezed hsync signal on top. and Omega did not work well (did it miss the stabilizer?).


Yeah the warped top border had more than a few people scratch their heads since it didn't show on all TV sets. Mine showed the XXX version just fine, IIRC.

Actually, I often had to use the wakeup-mode flick of the power button to get the TNT Crew left border to work correctly as well (some issue with every second word there as well, I think). But that was all on my very first 520ST.

User avatar
troed
Atari God
Atari God
Posts: 1087
Joined: Mon Apr 30, 2012 6:20 pm
Location: Sweden

Re: Re:

Postby troed » Mon Jul 09, 2012 2:15 am

Gunstick wrote:and Omega did not work well (did it miss the stabilizer?)


Since we are curious ;) Here's the full scanline as ripped from the Omega demo, from a clean part of the screen where the only code run changes background raster color:

Code: Select all

$080176 : 41f9 00ff 820a                       lea       $ff820a,a0
$08017c : 43f9 00ff 8260                       lea       $ff8260,a1
$0801ac : 7000                                 moveq     #0,d0
$0801ae : 123c 00fe                            move.b    #$fe,d1
...

$08041c : 343c 001b                            move.w    #$1b,d2
$080420 : 1080                                 move.b    d0,(a0)
$080422 : 1081                                 move.b    d1,(a0)
$080424 : 4e71                                 nop     
$080426 : 4e71                                 nop     
$080428 : 4e71                                 nop     
$08042a : 4e71                                 nop     
$08042c : 4e71                                 nop     
$08042e : 4e71                                 nop     
$080430 : 4e71                                 nop     
$080432 : 4e71                                 nop     
$080434 : 4e71                                 nop     
$080436 : 4e71                                 nop     
$080438 : 4e71                                 nop     
$08043a : 4e71                                 nop     
$08043c : 4e71                                 nop     
$08043e : 4e71                                 nop     
$080440 : 4e71                                 nop     
$080442 : 4e71                                 nop     
$080444 : 4e71                                 nop     
$080446 : 4e71                                 nop     
$080448 : 4e71                                 nop     
$08044a : 4e71                                 nop     
$08044c : 4e71                                 nop     
$08044e : 4e71                                 nop     
$080450 : 4e71                                 nop     
$080452 : 4e71                                 nop     
$080454 : 4e71                                 nop     
$080456 : 23dc 00ff 8240                       move.l    (a4)+,$ff8240
$08045c : 1281                                 move.b    d1,(a1)
$08045e : 4e71                                 nop     
$080460 : 1280                                 move.b    d0,(a1)
$080462 : 4e71                                 nop     
$080464 : 4e71                                 nop     
$080466 : 4e71                                 nop     
$080468 : 4e71                                 nop     
$08046a : 4e71                                 nop     
$08046c : 4e71                                 nop     
$08046e : 4e71                                 nop     
$080470 : 4e71                                 nop     
$080472 : 4e71                                 nop     
$080474 : 4e71                                 nop     
$080476 : 4e71                                 nop     
$080478 : 4e71                                 nop     
$08047a : 4e71                                 nop     
$08047c : 4e71                                 nop     
$08047e : 4e71                                 nop     
$080480 : 4e71                                 nop     
$080482 : 4e71                                 nop     
$080484 : 4e71                                 nop     
$080486 : 4e71                                 nop     
$080488 : 4e71                                 nop     
$08048a : 4e71                                 nop     
$08048c : 4e71                                 nop     
$08048e : 4e71                                 nop     
$080490 : 4e71                                 nop     
$080492 : 4e71                                 nop     
$080494 : 4e71                                 nop     
$080496 : 4e71                                 nop     
$080498 : 4e71                                 nop     
$08049a : 4e71                                 nop     
$08049c : 4e71                                 nop     
$08049e : 4e71                                 nop     
$0804a0 : 4e71                                 nop     
$0804a2 : 4e71                                 nop     
$0804a4 : 4e71                                 nop     
$0804a6 : 4e71                                 nop     
$0804a8 : 4e71                                 nop     
$0804aa : 4e71                                 nop     
$0804ac : 4e71                                 nop     
$0804ae : 4e71                                 nop     
$0804b0 : 4e71                                 nop     
$0804b2 : 4e71                                 nop     
$0804b4 : 4e71                                 nop     
$0804b6 : 4e71                                 nop     
$0804b8 : 4e71                                 nop     
$0804ba : 4e71                                 nop     
$0804bc : 4e71                                 nop     
$0804be : 4e71                                 nop     
$0804c0 : 4e71                                 nop     
$0804c2 : 4e71                                 nop     
$0804c4 : 4e71                                 nop     
$0804c6 : 4e71                                 nop     
$0804c8 : 4e71                                 nop     
$0804ca : 4e71                                 nop     
$0804cc : 4e71                                 nop     
$0804ce : 4e71                                 nop     
$0804d0 : 4e71                                 nop     
$0804d2 : 4e71                                 nop     
$0804d4 : 4e71                                 nop     
$0804d6 : 4e71                                 nop     
$0804d8 : 4e71                                 nop     
$0804da : 4e71                                 nop     
$0804dc : 4e71                                 nop     
$0804de : 4e71                                 nop     
$0804e0 : 4e71                                 nop     
$0804e2 : 4e71                                 nop     
$0804e4 : 4e71                                 nop     
$0804e6 : 4e71                                 nop     
$0804e8 : 4e71                                 nop     
$0804ea : 4e71                                 nop     
$0804ec : 4e71                                 nop     
$0804ee : 4e71                                 nop     
$0804f0 : 4e71                                 nop     
$0804f2 : 4e71                                 nop     
$0804f4 : 4e71                                 nop     
$0804f6 : 4e71                                 nop     
$0804f8 : 4e71                                 nop     
$0804fa : 4e71                                 nop     
$0804fc : 4e71                                 nop     
$0804fe : 4e71                                 nop     
$080500 : 4e71                                 nop     
$080502 : 4e71                                 nop     
$080504 : 4e71                                 nop     
$080506 : 4e71                                 nop     
$080508 : 4e71                                 nop     
$08050a : 51ca ff14                            dbra      d2,$80420


So, short answer is yes. I haven't checked the actual timings though to see why it works in one wakeup etc.

User avatar
troed
Atari God
Atari God
Posts: 1087
Joined: Mon Apr 30, 2012 6:20 pm
Location: Sweden

Re: Best fullscreen screen.

Postby troed » Mon Jul 09, 2012 7:57 pm

And for completeness sake, here's the scanline from TNT Crew's "Death of the left border". Interestingly enough, while being seen as much more stable (although I got a bitplane shift when running it in Hatari just now!?), it doesn't stabilize the right border either.

Trivia: The first few sync locking routines I saw in Sweden (by SYNC et al) were of the long form, jumping to an offset in a long nop-sequence. When I later saw the short form using a shift instead I thought that was really clever. Omega's code above used the long form, TNT Crew used the short form.

Anyway:

Code: Select all

$0006da : 43f9 00ff 8260                       lea       $ff8260,a1
$0006f2 : 41f9 00ff 820a                       lea       $ff820a,a0
...

$000718 : 46fc 2700                            move      #$2700,sr
$00071c : 7203                                 moveq     #3,d1
$00071e : 4e71                                 nop     
$000720 : 51c9 fffc                            dbra      d1,$71e
$000724 : 349b                                 move.w    (a3)+,(a2)
$000726 : 12bc 0002                            move.b    #2,(a1)
$00072a : 4e71                                 nop     
$00072c : 12bc 0000                            move.b    #0,(a1)
$000730 : 4e71                                 nop     
$000732 : 4e71                                 nop     
$000734 : 4e71                                 nop     
$000736 : 4e71                                 nop     
$000738 : 4e71                                 nop     
$00073a : 4e71                                 nop     
$00073c : 4e71                                 nop     
$00073e : 4e71                                 nop     
$000740 : 4e71                                 nop     
$000742 : 4e71                                 nop     
$000744 : 4e71                                 nop     
$000746 : 4e71                                 nop     
$000748 : 4e71                                 nop     
$00074a : 4e71                                 nop     
$00074c : 4e71                                 nop     
$00074e : 4e71                                 nop     
$000750 : 4e71                                 nop     
$000752 : 4e71                                 nop     
$000754 : 4e71                                 nop     
$000756 : 4e71                                 nop     
$000758 : 4e71                                 nop     
$00075a : 4e71                                 nop     
$00075c : 4e71                                 nop     
$00075e : 4e71                                 nop     
$000760 : 4e71                                 nop     
$000762 : 4e71                                 nop     
$000764 : 4e71                                 nop     
$000766 : 4e71                                 nop     
$000768 : 4e71                                 nop     
$00076a : 4e71                                 nop     
$00076c : 4e71                                 nop     
$00076e : 4e71                                 nop     
$000770 : 4e71                                 nop     
$000772 : 4e71                                 nop     
$000774 : 4e71                                 nop     
$000776 : 4e71                                 nop     
$000778 : 4e71                                 nop     
$00077a : 4e71                                 nop     
$00077c : 4e71                                 nop     
$00077e : 4e71                                 nop     
$000780 : 7c00                                 moveq     #0,d6
$000782 : 1c1d                                 move.b    (a5)+,d6
$000784 : e74e                                 lsl.w     #3,d6
$000786 : 49fb 685a                            lea       $7e2(pc,d6.l),a4
$00078a : 281c                                 move.l    (a4)+,d4
$00078c : 3a14                                 move.w    (a4),d5
$00078e : 09ce 0000                            movep.l   d4,0(a6)
$000792 : 0b8e 0000                            movep.w   d5,0(a6)
$000796 : 7201                                 moveq     #1,d1
$000798 : 4e71                                 nop     
$00079a : 51c9 fffc                            dbra      d1,$798
$00079e : 4e71                                 nop     
$0007a0 : 4e71                                 nop     
$0007a2 : 4e71                                 nop     
$0007a4 : 4e71                                 nop     
$0007a6 : 4e71                                 nop     
$0007a8 : 4e71                                 nop     
$0007aa : 4e71                                 nop     
$0007ac : 4e71                                 nop     
$0007ae : 4e71                                 nop     
$0007b0 : 4e71                                 nop     
$0007b2 : 10bc 0000                            move.b    #0,(a0)
$0007b6 : 10bc 0002                            move.b    #2,(a0)
$0007ba : 51c8 ff5c                            dbra      d0,$718


Again, I haven't done the cycle count to see how far off current best knowledge these are.

User avatar
troed
Atari God
Atari God
Posts: 1087
Joined: Mon Apr 30, 2012 6:20 pm
Location: Sweden

Re: Best fullscreen screen.

Postby troed » Mon Jul 09, 2012 11:07 pm

Alright, so I actually got quite intrigued with my little investigation into "best fullscreen", when it comes to the actual removal code. Since neither TNT Crew nor Omega stabilized their scanlines - who did?

Swedish New Year demo 1 (89-01-01) includes the "TV snow" screen by TCB (left/right/top), already mentioned in this thread. I can only assume TCB knowing Omega already having beaten them to the first true full screen didn't care to remove the lower border as well .. or maybe not, see later ;)

On with the code. Short-form synclock btw.

Code: Select all

$00dda0 : 43f9 00ff 8260                       lea       $ff8260,a1
$00ddb8 : 7602                                 moveq     #2,d3
$00ddba : 7800                                 moveq     #0,d4
$00de32 : 41f9 00ff 820a                       lea       $ff820a,a0
...

$00de3c : 4e71                                 nop     
$00de3e : 1283                                 move.b    d3,(a1)
$00de40 : 1284                                 move.b    d4,(a1)
$00de42 : 720c                                 moveq     #$c,d1
$00de44 : 4e71                                 nop     
$00de46 : 51c9 fffc                            dbra      d1,$de44
$00de4a : 4e71                                 nop     
$00de4c : 4bfa 044e                            lea       $e29c(pc),a5
$00de50 : 7a00                                 moveq     #0,d5
$00de52 : 1a1c                                 move.b    (a4)+,d5
$00de54 : e74d                                 lsl.w     #3,d5
$00de56 : 2c35 5000                            move.l    (a5,d5.w),d6
$00de5a : 3a35 5004                            move.w    4(a5,d5.w),d5
$00de5e : 4bf8 8800                            lea       $ffff8800.w,a5
$00de62 : 0dcd 0000                            movep.l   d6,0(a5)
$00de66 : 0b8d 0000                            movep.w   d5,0(a5)
$00de6a : 4e71                                 nop     
$00de6c : 4e71                                 nop     
$00de6e : 4e71                                 nop     
$00de70 : 1084                                 move.b    d4,(a0)
$00de72 : 1083                                 move.b    d3,(a0)
$00de74 : 4e71                                 nop     
$00de76 : 4e71                                 nop     
$00de78 : 4e71                                 nop     
$00de7a : 4e71                                 nop     
$00de7c : 4e71                                 nop     
$00de7e : 4e71                                 nop     
$00de80 : 4e71                                 nop     
$00de82 : 4e71                                 nop     
$00de84 : 4e71                                 nop     
$00de86 : 4e71                                 nop     
$00de88 : 4e71                                 nop     
$00de8a : 4e71                                 nop     
$00de8c : 4e71                                 nop     
$00de8e : 1283                                 move.b    d3,(a1)
$00de90 : 4e71                                 nop     
$00de92 : 1284                                 move.b    d4,(a1)
$00de94 : 4e71                                 nop     
$00de96 : 4e71                                 nop     
$00de98 : 4e71                                 nop     
$00de9a : 4e71                                 nop     
$00de9c : 4e71                                 nop     
$00de9e : 4e71                                 nop     
$00dea0 : 4e71                                 nop     
$00dea2 : 4e71                                 nop     
$00dea4 : 4e71                                 nop     
$00dea6 : 51c8 ff94                            dbra      d0,$de3c


Now who would've guessed - it's stabilized ;) Well, TCB were already members in the Union then and I can only speculate that it was set in stone to have Level 16's fullscreen in the Union demo - released just six days after SNYD1 - which could explain both from where the original code came and why TCB didn't make their screen a fullscreen in SNYD1.

edit: I quickly analyzed the Union Demo as well. Main menu borders are credited to TNT Crew, and there seems to be no difference between them, TCB above and Level 16. I didn't count the exact cycles though, only some relative distances and that they were all of the dx,(ay) style.

User avatar
Steven Seagal
Atari God
Atari God
Posts: 1688
Joined: Sun Dec 04, 2005 9:12 am
Location: Undisclosed
Contact:

Re: Best fullscreen screen.

Postby Steven Seagal » Thu Jul 12, 2012 7:18 am

The SNYD1/TCB 3/4 screen is quite strange. The first "right off" is missed because we're still at 60hz when the sync switch is made, if it wasn't the logo would be far more on the left. A higher black right border is apparent. And it seems that the "left off" happening at 60hz causes a -2byte shift if the right border isn't removed as well.
I'm still not sure what it is on a real ST.

Shifter tricks timings as detected in Steem, relative to HBL (R res, S sync, T trick detect):

Code: Select all

004:R0002 012:R0000 376:S0000 384:S0002 444:R0002 456:R0000 512:T0811

The lines are "stabilised" (444:R0002 456:R0000)
For DOLB:

Code: Select all

016:R0000 376:S0000 388:S0002 500:P1000 512:R0002 512:T0011

No stabiliser. The same for Omega:

Code: Select all

008:R00FE 020:R0000 376:S0000 384:S00FE 512:P0303 512:T0011

The current theory is that 230byte lines with late HI/LO switch and without stabiliser only work on STF in "wake-up state 2", and that some 4byte shift must be emulated (future version of Steem, but you can already check the demos in Steem SSE 3.3).
The only other overscan demos wihtout stabiliser I know are STE-only.


EDIT: since the thread has been bumped, I'd like to point out that those "theories" have changed since. :)
Last edited by Steven Seagal on Thu Jun 08, 2017 8:16 am, edited 1 time in total.
In the CIA we learned that ST ruled
Steem SSE: http://ataristeven.exxoshost.co.uk/Steem.htm

User avatar
troed
Atari God
Atari God
Posts: 1087
Joined: Mon Apr 30, 2012 6:20 pm
Location: Sweden

Re: Best fullscreen screen.

Postby troed » Sun Jun 04, 2017 8:06 pm

troed wrote: Well, TCB were already members in the Union then and I can only speculate that it was set in stone to have Level 16's fullscreen in the Union demo - released just six days after SNYD1 - which could explain both from where the original code came and why TCB didn't make their screen a fullscreen in SNYD1.


Looking at the source code (!) for the TCB SNYD1-screen, we quickly see that all comments are in English. Except those that have to do with the border removal - those comments are in German.

We also see the bug (that I can't find which thread I identified it in now) where they move.w instead of move.b to end the top border, which causes the first line to still be in 60Hz. And, we see how they got confused by this and have to add a nop later to get back on the right track.

Top border:

Code: Select all

bwaitis:
        cmp.l   d7,a4
        blt.s   bwaitis
        move.w  #$2700,sr
        moveq   #8,d0
bomw1:  dbf     d0,bomw1
        move.w  #$00,$ffff8240.w        ;70
        clr.b   $ffff820a.w
        moveq   #3,d0
bomw2:  nop
        dbf     d0,bomw2
        move.w  #2,$ffff820a.w 
        move.w  #$000,$ffff8240.w       ;700


Comments in German:

Code: Select all

;monochromeumschaltung fuer linken rand

 move.b d3,(a1)
 move.b d4,(a1)
 
 ;50/60 Hz fuer rechten rand
 move.b d4,(a0)
 move.b d3,(a0)


 


... and the patch because of the earlier .w bug:

Code: Select all

;                               120
; or 4 cycles wrong!
;************************
 nop


... so, I would consider my speculation to have been quite on point ;)

/Troed

ijor
Hardware Guru
Hardware Guru
Posts: 2927
Joined: Sat May 29, 2004 7:52 pm
Contact:

Re: Best fullscreen screen.

Postby ijor » Sun Jun 04, 2017 9:03 pm

troed wrote:... so, I would consider my speculation to have been quite on point ;)


As usual ... :)


Social Media

     

Return to “Demos - General”

Who is online

Users browsing this forum: No registered users and 2 guests