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 > Self-modifying raster interrupt for multispeeds
2016-03-04 14:12
Jammer

Registered: Nov 2002
Posts: 1288
Self-modifying raster interrupt for multispeeds

I'm trying to use self modyfing raster interrupt handler which increments next interrupt line by given interval - to avoid writing separate code for subsequent interrupts per single frame. How to handle $d011 oldest bit in the most efficient and proper way?
2016-03-04 14:46
Mixer

Registered: Apr 2008
Posts: 418
I'd suggest that you use timer interrupt instead, but:

Quick and untested and unoptimised:
- Have lo and hi variables to store desired rasterline.
- Add the increment. increment must be less than 312.
- If result > $138 then substract $138. $138=312
- set next raster to d012/d011.


lda lo
clc
adc #lineaddlo
sta lo
lda hi
adc #lineaddhi
sta hi
lda lo
cmp #$38
bcc pass
lda hi
cmp #$01
bcc pass
lda lo        ; substract #138
sec
sbc #$38
sta lo
lda hi
sbc #$01
sta lo

pass:

lda lo
sta $d012    ; next raster irq line lo byte
lda hi
lsr          ; move lowest bit to highest bit.
ror
ora #$1b
sta $d011

2016-03-04 14:55
Mixer

Registered: Apr 2008
Posts: 418
.. and I see a bug already.

.           
.
lda hi         ;when substracting $138 highest byte
sbc #$01
sta hi     ;!


of course.
2016-03-04 15:21
Flavioweb

Registered: Nov 2011
Posts: 442
Use Cia timed irq, counting cycles per frame and divide them by multispeed factor...
2016-03-04 16:07
TheRyk

Registered: Mar 2009
Posts: 2035
Indeed that's how most people would do it
Here you find an overview of a few timer values
http://csdb.dk/forums/?roomid=11&topicid=58416&showallposts=1
2016-03-04 17:03
Jammer

Registered: Nov 2002
Posts: 1288
Thx, guys! :)
2016-03-04 17:12
chatGPZ

Registered: Dec 2001
Posts: 11088
good thing with using timers is... its trivial to make it work at the correct speed on NTSC too
2016-03-04 19:33
Flavioweb

Registered: Nov 2011
Posts: 442
Quote: good thing with using timers is... its trivial to make it work at the correct speed on NTSC too

Indeed is just what we do in our latest music releases like:
Toca Off Alone
where speed and pitch are "adjusted" for OLD/NTSC/DREAN to play the tune just like in PAL...
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
csio/monarchy c+4
Inge/HVSC
Guests online: 363
Top Demos
1 Next Level  (9.8)
2 Mojo  (9.7)
3 Coma Light 13  (9.7)
4 Edge of Disgrace  (9.6)
5 No Bounds  (9.6)
6 Comaland 100%  (9.6)
7 Uncensored  (9.6)
8 The Ghost  (9.6)
9 Wonderland XIV  (9.6)
10 Bromance  (9.6)
Top onefile Demos
1 Party Elk 2  (9.7)
2 Cubic Dream  (9.6)
3 Copper Booze  (9.5)
4 Rainbow Connection  (9.5)
5 TRSAC, Gabber & Pebe..  (9.5)
6 Onscreen 5k  (9.5)
7 Dawnfall V1.1  (9.5)
8 Quadrants  (9.5)
9 Daah, Those Acid Pil..  (9.5)
10 Birth of a Flower  (9.5)
Top Groups
1 Booze Design  (9.3)
2 Nostalgia  (9.3)
3 Oxyron  (9.3)
4 Censor Design  (9.3)
5 Crest  (9.3)
Top Graphicians
1 Sulevi  (10)
2 Mirage  (9.8)
3 Lobo  (9.7)
4 Mikael  (9.7)
5 Archmage  (9.7)

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