Log inRegister an accountBrowse CSDbHelp & documentationFacts & StatisticsThe forumsAvailable RSS-feeds on CSDbSupport CSDb Commodore 64 Scene Database
You are not logged in - nap
CSDb User Forums


Forums > C64 Coding > Is this a proper stable raster?
2010-09-20 22:37
MC
Account closed

Registered: Jul 2009
Posts: 71
Is this a proper stable raster?

I was searching for stable raster interrupts and only found ugly looking code tbh. I came up with this little trick and wonder if it will be stable under all conditions...

It is on VICE but I haven't had the chance to test this interrupt on a real machine yet... This is what I do in the IRQ:

raster1:	lda #rast1
br1:		cmp $d012
		bne br1
		nop
		nop
		nop
		nop
		nop
		lda #$00
		sta $d020
		sta $d021
(rest of interrupt stuff goes here)


The code simply compares the value in $d012 with the value stored in there by the last IRQ call and waits until the raster makes the switch, then a built in delay of 5 x nop makes sure we are in between the left and right border flip. (4 x nop and 6x nop also seem to work so I chose the safe value of 5 nops).

It SEEMS to work properly but I forgot how I used to do stuff before my 20 year lunchbreak...

I managed to open up the border with my second attempt at an all dancing & singing piece of raster interrupts with music-assembler tunes playing. Next up is a bouncy sprite scroller in the lower (and side) border area.

 
... 3 posts hidden. Click here to view all posts....
 
2010-09-21 06:23
Mr. SID

Registered: Jan 2003
Posts: 421
With that you probably only were able to open the top/bottom border, not the sideborder, right?

Btw, in VICE you can set the VIC border size to Normal, Full or Debug. The latter option will show you that your raster is not stable, but flickering somewhere off-screen. Good enough for a lot of things, but not perfectly stable.
2010-09-21 07:07
TPM

Registered: Jan 2004
Posts: 109
heheh.. that's exactly the way i did back then. Put some nops here and there, have a jmp * for the main program and voila.
I didn't know it was unstable like hell (well, i did know, but had no solution for it), but by playing with those nops it became stable enough to do the thing.

maybe that's why i hated to open borders.. i couldn't manage it, now i know why :D
2010-09-21 08:13
daison

Registered: May 2005
Posts: 90
There's a forum post floating around here in which I make the same mistake based on the confusion of what a stable raster actually is ;)

A stable raster is basically the luxury of having an exact X position on where your IRQ execution starts.

Your raster starts 'somewhere' off screen. Which is nice for rasterbars and many other cool fx, but this is not yet what stable means.

With a stable raster you should be able to see a non flickering line starting somewhere on-screen.

This way you can for example open the sideborder by adjusting the 38/40 column setting *exactly* in the 40th column. Without a stable raster, you'll never hit the 40th column each frame.
2010-09-21 08:19
Frantic

Registered: Mar 2003
Posts: 1627
Imagine the amount of effort that would have been spared throughout the years if Commodore had simply included a switch in the VIC to disable the border. ;)
2010-09-21 08:22
wacek

Registered: Nov 2007
Posts: 501
Quote: Imagine the amount of effort that would have been spared throughout the years if Commodore had simply included a switch in the VIC to disable the border. ;)

Imagine how much poorer the scene history would have been if they did :)
2010-09-21 09:16
enthusi

Registered: May 2004
Posts: 675
IMHO it always helps to have SOME SID tune playing inbetween.
You can more less be certain of something being stable or not.
JMP * oder BVC * wont do any good there.
2010-09-21 10:07
MC
Account closed

Registered: Jul 2009
Posts: 71
well my last raster plays music and jumps to $ea31... It seems stable enoug to start outside screen but it does flicker one cycle.

Thanks for the infos
2010-09-21 11:07
Mr. SID

Registered: Jan 2003
Posts: 421
Have a look at Fungus' double irq stable raster, it's pretty simple:

http://codebase64.org/doku.php?id=base:double_irq
2010-09-21 21:03
MC
Account closed

Registered: Jul 2009
Posts: 71
Thanks. I dropped the idea of having a stable raster running as I'm now using two interrupts (experimenting with the NMI to handle sfx like vibrato, pulse modulation and really fast arps ) while the raster IRQ handles the music tracking.

Experiments experiments I do love em...
2010-09-22 12:13
Testa
Account closed

Registered: Oct 2004
Posts: 197
I always do this:

Init interrupt:

Disable timer interrupts
Enable raster interrupt
Interrupt vector $ffffe/$ffff
$01 = $35
$d012 = $2c
ack interrupt before clear the interrupt flag


Stable1:
inc $d012
inc $d019
cli

stable2:
nop
nop
nop
nop
nop
nop
nop
nop
jmp stable2

irq
ldx #$2c
cpx $d012
beq stable1
dec $d012
inc $d019
ldy #5
dey
bne *-1
nop
inx
cpx $d012
beq stable3
stable3

raster is stable here

don't know if it is sloppy code, but it seems to work...


Previous - 1 | 2 - Next
RefreshSubscribe to this thread:

You need to be logged in to post in the forum.

Search the forum:
Search   for   in  
All times are CET.
Search CSDb
Advanced
Users Online
psych
Apollyon/ALD
DuncanTwain
Menace/Spaceballs
megasoftargentina
Alakran_64
Guests online: 121
Top Demos
1 Next Level  (9.8)
2 Mojo  (9.7)
3 Coma Light 13  (9.7)
4 Edge of Disgrace  (9.6)
5 Comaland 100%  (9.6)
6 No Bounds  (9.6)
7 Uncensored  (9.6)
8 Wonderland XIV  (9.6)
9 Bromance  (9.6)
10 Memento Mori  (9.6)
Top onefile Demos
1 It's More Fun to Com..  (9.7)
2 Party Elk 2  (9.7)
3 Cubic Dream  (9.6)
4 Copper Booze  (9.5)
5 Rainbow Connection  (9.5)
6 TRSAC, Gabber & Pebe..  (9.5)
7 Onscreen 5k  (9.5)
8 Wafer Demo  (9.5)
9 Dawnfall V1.1  (9.5)
10 Quadrants  (9.5)
Top Groups
1 Oxyron  (9.3)
2 Nostalgia  (9.3)
3 Booze Design  (9.3)
4 Censor Design  (9.3)
5 Crest  (9.3)
Top Swappers
1 Derbyshire Ram  (10)
2 Jerry  (9.8)
3 Violator  (9.8)
4 Acidchild  (9.7)
5 Starlight  (9.6)

Home - Disclaimer
Copyright © No Name 2001-2024
Page generated in: 0.038 sec.