FairLight TV #80, Stable rasters - the base of demo coding
HTML-код
- Опубликовано: 29 июн 2023
- Released 30/06/2023
Intro video: Zo0lon
Video Edit: Zo0lon
Intro Music: Lukhash
Usefull links:
#General description + double IRQ
codebase64.org/doku.php?id=ba...
codebase64.org/doku.php?id=ba...
DMA: Sprites method
codebase64.org/doku.php?id=ma...
bumbershootsoft.wordpress.com...
DMA: VSP
codebase64.org/doku.php?id=ba...
Lightpen method
codebase64.org/doku.php?id=ba...
github.com/Zibri/C64_Stable_R...
CIA Method
codebase64.org/doku.php?id=ba...
Clock slide
codebase64.org/doku.php?id=ba... Игры
Great topic. You explained it fine imo. Kudos for including links to codebase.
Safe VSP (Variable Screen Position) by LFT (iirc) explains how to avoid the random crashes that happens on some C64 versions (likely due to unstable DMA chip data- fetch that is a part of the VIC2 chip) on which addresses code is written to. One should avoid certain IRQ memory locations in a page that execute commands (a page being every 255 byte segment from $00 - $FF). Like the zero page is from $0000--to-->$0100. These locations should have a NOP and not any other code, as it can corrupt data to the VICII IRQ's and data fetching, which must be totally stable and precise. Mastery of the raster interrupt is essential in order to unleash the VIC-II's capabilities, as it's known. If it doesn't crash the C64 it can make a mess out of the bitmap data (weird visual bugs) as the VICII chip fetches garbage in stead of what's supposed to be there.
From LFT's "SAFE VSP" scrolltext:
"memory locations ending in "7" or "F" is fragile. sometimes when VSP is performed, several fragile memory cells are randomly corrupted according to the following rule: each bit in a fragile memory cell might be changed into the corresponding bit of another fragile cell within the same page"
I suspect the Rowlands also found out a safe VSP method before they made Mayhem in Monsterland, which from my experience wasn't plagued with random crashes when using VSP to scroll the bitmap screens, or corrupt the data fetching of the bitmap data. It wouldn't be the classic it is if it was bugged on a lot of machines?
To make a smooth VSP scroller of a larger bitmap screen, you need to push in data, every frame, to the bitmap memory on either side (depending on the direction of scroll) and/or delete the data on the other side. Else the screen just wraps around. Sure VSP saves rastertime when moving a whole bitmap screen 8 chars left or right, but the data deletion and buffering will take a lot of rastertime on its own Also it needs to add the correct $D016 values (which moves the horizontal bitmap screen by pixels - while VSP moves the vertical offset of a bitmap screen in chunks of 8 pixels (horizontal) for each new VSP value.
Agree. You use VSP as a method to scroll full characters. No need to move all memory - just populate the edges as you correctly state.
Thank you for this lesson!
You are most welcome. Please support by sharing with others who might be interested.
Many thanks for the video and this very extensive list of references !
Thanks. Took some time to research this, and still a lot of the facts are only in the links
thank you! another great episode. enjoy your summer.
Humble thanks. To be honest it was a rather quick one but hopefully fruitful for a number of people never the less.
Nice, always good to have more C64 tutorials 👍 I think it was Ecan of Wizax who taught me how to do stable rasters on PAL back in the mid 80s, using 8,8,8,8,8,8,8,1 tables to deal with bad lines/VIC II doing it's thing. And of course that you're screwed if you move sprites over the lines.
Yepp... Thanks :)
watching this one now, so far really good stuff
Humble thanks.
Thanks for the in depth explanations! Just in time to support me in getting started with C64 coding!
Great and welcome to the kluster of nerds :)
Just two things: 1) the "fiddling" with the data direction registers is the same as a user pressing the lightpen button. 2) after getting the X position, there is a clock slide to correct the jitter. That's all. And yes, pressing SPACE or FIRE on the joystick will trigger the lightpen and gloriously fu*kup this routine... which obviously is not suitable for games. :D
Thanks for the clarification
Another great and informative one. Thanks alot for all your effort!. What about a second part with some coding on the concepts you described here ? Enjoy the summer :-)
The information had links to the Codebase articles on the subject. There you have actual code examples.
Very interesting, glad to see you are recovering well from X!
I was very light on the alcohol on the actual party (in Amsterdam before the party, not so much ;). So I recovered really fast!
Very interesting information 🧐Have a nice holiday. ✌
Many thanks!
This was cool! I used to use nmi to get stable rasters in the days, but I never knew about the CIA timer trick. Very cool.
Yeah. Ninjas method? I skipped that one...
very kool episode!
Humble thanks!
I am not a demo coder either :D but it's fun to find methods...
You might eventually be a demo coder :)
Njut sommaren!
Tack :)
Oh my god, don't do that, call people hackers, Biden might jail you lol.
Not worried the least. Biden is also one of the good guys.
Never forget SEI. Important for super stable code!
Ha ha ha. Internal joke for those who found that comment confusing.
Arduino coders are confused by this... lol