Jump to content



2

New Year´s Disc 2010


59 replies to this topic

#51 Rybags OFFLINE  

Rybags

    Quadrunner

  • 10,313 posts
  • Location:Australia

Posted Sun Jan 3, 2010 5:21 AM

Confirmed - Antic doesn't seem to reset it's counter properly and scrolling can get rightly screwed up when it's fullscreen.

I think a suitable fix might be something like have a DLI on the second last text line. Then have the DLI set VSCROL such that the last line of text gets terminated properly.

#52 Rybags OFFLINE  

Rybags

    Quadrunner

  • 10,313 posts
  • Location:Australia

Posted Sun Jan 3, 2010 6:13 AM

I think I've got a solution for you...

Store your desired VSCROL value during VBlank - I presume you'd be doing that anyway.

Setup a DLI on the third last line of your Display List, with VScrol enabled. The next 2 lines should just be straight Mode 5, no VScrol enabled.

Your DLI should just do a WSYNC, then LDA #$0F, STA VSCROL ($d405)

That should ensure the last scrolling line is always 16 pixels. The following line should just display however many pixels will fit onscreen.


ed - actually, thinking about it some more...

You could probably get away with just having one scroll-enabled line at the top of screen. Put the DLI in that one, set VScrol to $0F.
The rest of the screen should automatically be scrolled.

All we're doing here is overriding the normal behaviour which ensures a scrolling region always remains a static size. Since the entire screen is involved, we don't get any unwanted area jumping around since we're moving everything anyway.

Edited by Rybags, Sun Jan 3, 2010 7:05 AM.


#53 MaPa OFFLINE  

MaPa

    Dragonstomper

  • 564 posts
  • Location:Czech Republic

Posted Sun Jan 3, 2010 7:23 AM

If I understand it right, your first idea would screw the picture as the pattern would not fit at the bottom where we break the vscroll order.

The second.. If I set on first line vscroll to $f, will not be the whole screen static then (the vscroll value set in VBLANK will get overwritten)? :)

And what about setting vscroll value to $f after WSYNC on the last scanline? As I have no possibility to test it on real HW right now I can't fix it.

#54 Rybags OFFLINE  

Rybags

    Quadrunner

  • 10,313 posts
  • Location:Australia

Posted Sun Jan 3, 2010 7:44 AM

Your checkerboard scrolls over the entire screen, correct?

The importance of the VSCROL register is only important on the first scanline - so Antic skips the relevant number of lines in the first character.

Once the first character is shown, we change VSCROL to $0F. What that means is that at the end of the scrolling region, instead of Antic showing line 0 through "VSCROL value" of that character, it'll attempt to show the entire character.

After the end of the Vscrol region, subsequent characters get displayed right away.

Trust me - I tested it by modifying your program while running in the emulator - worked fine.

Tested also by doing a full-screen test DList on real hardware - was able to replicate your problem, then correct it using both the methods I've described above.


The method I'd suggest is the last one I mentioned - just have a DLI on the first text line. All it needs is:

pha
sta wsync
lda #$0f
sta vscrol
pla
rti

Only enable VScrol on your first screen line - the rest of the screen doesn't need them.

Edited by Rybags, Sun Jan 3, 2010 7:46 AM.


#55 MaPa OFFLINE  

MaPa

    Dragonstomper

  • 564 posts
  • Location:Czech Republic

Posted Sun Jan 3, 2010 10:18 AM

So this one is working correctly on real hw?

Attached Files



#56 _Fandal_ OFFLINE  

_Fandal_

    Dragonstomper

  • 762 posts
  • Location:Czech Republic

Posted Sun Jan 3, 2010 11:17 AM

View PostMaPa, on Sun Jan 3, 2010 10:18 AM, said:

So this one is working correctly on real hw?


Yes, this one works fine!

F.

#57 phaeron OFFLINE  

phaeron

    Dragonstomper

  • 629 posts
  • Location:USA

Posted Sun Jan 3, 2010 5:52 PM

View Post_Fandal_, on Sun Jan 3, 2010 11:17 AM, said:

View PostMaPa, on Sun Jan 3, 2010 10:18 AM, said:

So this one is working correctly on real hw?
Yes, this one works fine!

Anyone else seeing glitching once the scrolling starts? I modified Altirra to emulate the vertical scrolling bug, and the demo is not working properly even in PAL mode, as there is glitching once the scroller starts. It looks like the mainline code is sometimes overrunning a frame, resulting in VSCROL not being hit in time:

(2752:264, 86) PC=22BA A=92 X=A5 Y=5F S=F7 P=B1 (N C) 22BA: 8D 05 D4 STA VSCROL [$D405] = $FF
CPU: Address write breakpoint hit: D405
(2753: 21,110) PC=23F1 A=0F X=00 Y=F0 S=F3 P=34 ( I ) 23F1: 8D 05 D4 STA VSCROL [$D405] = $FF
CPU: Address write breakpoint hit: D405
(2753:264, 55) PC=22BA A=94 X=A6 Y=6B S=F7 P=B1 (N C) 22BA: 8D 05 D4 STA VSCROL [$D405] = $FF
CPU: Address write breakpoint hit: D405
(2754: 19,110) PC=23F1 A=0F X=01 Y=80 S=F3 P=34 ( I ) 23F1: 8D 05 D4 STA VSCROL [$D405] = $FF
CPU: Address write breakpoint hit: D405
(2755: 10,109) PC=23F1 A=0F X=6C Y=77 S=F5 P=35 ( I C) 23F1: 8D 05 D4 STA VSCROL [$D405] = $FF

CPU: Address write breakpoint hit: D405
(2755:264, 60) PC=22BA A=98 X=A8 Y=77 S=F7 P=B1 (N C) 22BA: 8D 05 D4 STA VSCROL [$D405] = $FF
CPU: Address write breakpoint hit: D405
(2756: 15,111) PC=23F1 A=0F X=01 Y=0D S=F3 P=35 ( I C) 23F1: 8D 05 D4 STA VSCROL [$D405] = $FF
CPU: Address write breakpoint hit: D405
(2756:264, 92) PC=22BA A=9A X=A9 Y=83 S=F7 P=B1 (N C) 22BA: 8D 05 D4 STA VSCROL [$D405] = $FF

History for the bad frame shows the wait loop at $2298 starting after the VBI at scan line 262, causing it to wait an entire frame extra. Works fine if I hack out the P/M scroller, even on my NTSC Atari.

#58 phaeron OFFLINE  

phaeron

    Dragonstomper

  • 629 posts
  • Location:USA

Posted Sun Jan 3, 2010 6:10 PM

View Postphaeron, on Sun Jan 3, 2010 5:52 PM, said:

View Post_Fandal_, on Sun Jan 3, 2010 11:17 AM, said:

View PostMaPa, on Sun Jan 3, 2010 10:18 AM, said:

So this one is working correctly on real hw?
Yes, this one works fine!

Anyone else seeing glitching once the scrolling starts? I modified Altirra to emulate the vertical scrolling bug, and the demo is not working properly even in PAL mode, as there is glitching once the scroller starts. It looks like the mainline code is sometimes overrunning a frame, resulting in VSCROL not being hit in time:

Never mind, I screwed up my DMA timing in VBLANK.

#59 pps OFFLINE  

pps

    Dragonstomper

  • 536 posts
  • Location:Berlin, Germany

Posted Wed Jan 6, 2010 11:47 AM

Ok, now this is the updated version of NYD 2010.

Sorry, that the first one had some issues.

Attached File  NYD_2010.zip   438.64K   41 downloads

Edited by pps, Wed Jan 6, 2010 12:35 PM.


#60 therealbountybob OFFLINE  

therealbountybob

    River Patroller

  • 3,235 posts
  • Lost
  • Location:In Space

Posted Wed Jan 13, 2010 6:34 AM

Nice work guys, had this on last night! Was just thinking how amazing it was that all these years on I'm looking at a disk created by guys from Germany, Czech Rep, Australia, Netherlands etc etc :thumbsup: Amazing graphics on PPS's "Happy 2010" :thumbsup: Liked the Snowworld by Thelen and Marius (yes I read all the scrolly message!) and the Joyride in "Homecon 5" is very impressive too :thumbsup:

p.s. am sure one of those christmas tunes reminded me of Popeye or Donkey Kong ;)




1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users