| |
TSM
Registered: Jan 2007 Posts: 42 |
Hires bitmap RAM arrangement
I wanted to make a little program to display the "Doodle" picture file from this page:
http://www.editorix.org/congo/html/c64_image_formats__part_i.ht..
It loads at $1C00, so you have screen data at $1C00 and bitmap data at $2000. I set everything up very carefully (screen mode, base VIC address, screen RAM and bitmap RAM addresses) and the bitmap is correct but the colors are all messed up. If I move the screen data to $0C00 and change the address accordingly in $D018, then it works.
I wanted to display the picture without moving any data around; is this possible at all?
Strangely, if I save a snapshot with Vice at the messed-up screen and feed the file to "vicegrab", it will spit up a perfectly working .prg file (although with screen RAM @ $0C00)! |
|
| |
Mixer
Registered: Apr 2008 Posts: 452 |
Please, take a minute to familiarize yourself with c-64 memory arrangement using common sources. (codebase,mapping c-64) etc.
Using $1000-$2000 for graphic data the way you wish is not doable. VIC sees system fonts there. Thus you need to relocate screen/color data. |
| |
tlr
Registered: Sep 2003 Posts: 1790 |
The VIC always sees the char rom at $1000-$1fff and $9000-$9fff so if you point screen fetch to $1c00 you'll get the screen memory fetched from the inverted lower case charset.
You could just load the data to a different load address, say $5c00 and it'll be fine. |
| |
TSM
Registered: Jan 2007 Posts: 42 |
Whoops, I overlooked that! Thank you! |
| |
Krill
Registered: Apr 2002 Posts: 2980 |
Just for the record, VIC can see RAM at $1000-$1fff in the Ultimax memory configuration, which can be enabled using a cartridge.
(Mixer, tlr: I'm sure you know this and just didn't mention it for the sake of simplicity, but your absolute qualifiers seemed a bit too strict.) |
| |
Graham Account closed
Registered: Dec 2002 Posts: 990 |
If you don't want to move memory around, load the image to address $5C00. The VIC-bank $4000-$7FFF doesn't have any restrictions due to character ROM mapping. |
| |
TSM
Registered: Jan 2007 Posts: 42 |
Thanks Graham, I did just that. Then, just the base address for the VIC had to be updated. |
| |
Cruzer
Registered: Dec 2001 Posts: 1048 |
Krill: But doesn't the VIC just see the RAM at $0000-$0fff when looking at $1000-$1fff in the Ultimax memory configuration, since there is only 4K of RAM available? Thanks for pointing out this very important and relevant fact, btw. :) |
| |
Oswald
Registered: Apr 2002 Posts: 5094 |
more cool facts: VICII will also display the contents of $0000 and $0001 instead of the CPU port. ;) there were also some wild speculations in a c= hacking (iirc) on how to write there. (have VICII read the data to be written while cpu sets bus to write) |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
nothing to speculate there... i have written a little test program recently that does just that, check this :) |
| |
Oswald
Registered: Apr 2002 Posts: 5094 |
its hard to see what it does (counts upwards, screen is at $0000?) so you have prooved this writing method works? and vice even emulates it? weird it does, the perequisites sound like they are only needed for this scenario. |
... 15 posts hidden. Click here to view all posts.... |
Previous - 1 | 2 | 3 - Next |