Jump to content
IGNORED

New Year´s Disc 2010


pps

Recommended Posts

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.

Link to comment
Share on other sites

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
  • Like 1
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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 ;)

Link to comment
Share on other sites

  • 5 years later...

If it's not too late, you can throw this on there, if you like:

 

attachicon.gif130XE Slide Show.zip

 

Well,

 

in the last picture of your slideshow you said thats its okay to change / patch / bastardize / ... this demo. And so I did - making two "new" versions:

 

- Version 1 (RGB8_V1x.ATR, where x is the side, e.g. side a, b, c, etc.) comes on five 130k disksides, it still requires 128k RAM and separate Antic/CPU access to run. Since I am absolutely no programmer, I could not change the viewer-program much, so each diskside will always show you the title picture first... (otherwise four disksides might have been enough).

 

- Version 2 (RGB8_V2x.ATR) comes on four 130k disksides, it requires only 64k RAM and thus no sep. Antic/CPU acces to run. I compressed the RGB pictures with Clay Halliwell`s Colourview-Squash program (RLE-compression or something like that, does not work very good with dithered pictures) and therefore put his Coloursquashview program on these diskettes. Allthough the compressed RGB-viewer works under Atari Basic, I put Altirra Basic (V1.33) on these disks.

 

Both versions still include the 17 pictures from the 16MB ATR image, but now in DOS 2.5 well-known 130k format. So, if you do not want (or cannot use) a 16MB ATR image and/or if you do not want / do not have 128k RAM and sep. Antic/CPU access, you now have two more versions of this slideshow available. Please be aware, that on a PAL machine, this Gr. 8 - RGB slideshow will not have as many colours as on a NTSC machine...

rgb8_slideshow_v1.zip

rgb8_slideshow_v2.zip

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...