| |
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)! |
|
... 15 posts hidden. Click here to view all posts.... |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
another thing is the "garbage" that you can read from open i/o space |
| |
Copyfault
Registered: Dec 2001 Posts: |
Quoting Krill...
Action Replay and similar cartridges allow you to programmatically enable the Ultimax mode. With some code below $1000, disable interrupts and write #$03 to $de00, and the graphics are revealed permanently.
Wondering if there are demos already that utilize this? Since years (if not decades) every compo-machine comes equipped with an AR, so it should be rather probable... |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
i doubt it, as ultimax mode also means that only the first 4k of memory are available as RAM - so you could display gfx from the non existing memory at $1000 =D (you could abuse it in cartridge memory at $9000 - not very useful though) |
| |
Copyfault
Registered: Dec 2001 Posts: |
Groepaz, it's correct that in ultimax there's only 4k of RAM ($0000-$0fff), but this ofcourse only applies for the cpu! The VIC sees all of'em 64k.
By switching to ultimax at the beginning of the display area and swichting back to full RAM/IO access e.g. at the beginning of the lower border, I guess some "nice things" might be possible.
Hmm, somehow cries for a 4K AR Compo ;) |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
Quote:but this ofcourse only applies for the cpu!
yes. forgot about that /o\ |
| |
Krill
Registered: Apr 2002 Posts: 2980 |
Quoting CopyfaultBy switching to ultimax at the beginning of the display area and swichting back to full RAM/IO access e.g. at the beginning of the lower border, I guess some "nice things" might be possible.
Hmm, somehow cries for a 4K AR Compo ;) Hmm, while there might be some things not possible otherwise (display RAM under chargen ROM, use AR extra RAM), i think the gain in possibilities will be quite subtle and not as striking as, e.g., using REU DMA transfers to hammer a single register with a new value every cycle.
I always thought of Ultimax mode as a means to have VIC display external memory contents without the need to hog the bus or CPU with memory transfers. Something like piping a preprocessed full-framerate video stream from a PC into a cartridge and let VIC display it just like that, while the CPU is free to replay high-res samples which also come in through the cartridge.
Of course, that'd just be a toy not giving much more than the novelty of watching TV or Youtube through a VIC+SID filter :) (Could Chameleon be used for such a hack?) |
| |
ChristopherJam
Registered: Aug 2004 Posts: 1409 |
An ultimax mode demo might open the door for many more lines of char based FPP - you'd get 16*8=128 lines in *every* bank, not just the 'clean' one.
Of course, fitting your display list code and the update code around a memory map that has data in the first 40 bytes of every 1k, and most of every 2k corrupted every 8 bytes.. it would not be a trivial undertaking. |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
Quote:Could Chameleon be used for such a hack?
much of how the chameleon works is based on that ultimax idea you described, so yes :) |
| |
AmiDog
Registered: Mar 2003 Posts: 97 |
I've tried to understand the Ultimax mode, but I always get confused. My idea was to use the Ultimax mode to be able to quickly switch between lots of charsets (since the VIC can read from the cartridge in Ultimax mode). Also, since the VIC can access all of the 64k of RAM even in Ultimax mode, one should be able to put sprites there as normal.
The plan was to have a cartridge with lots of RAM, using the IO area to write to it using paging, and run the code from the cartridge RAM using the two ROM areas that are available in Ultimax mode. Unless it's actually possible to write to the ROM areas in Ultimax mode, in which case one don't have to resort to the IO area, but I don't think the ROM areas are writable.
The main problem is to actually find a cartridge which has some 512KB or more of RAM and which can be told to put the C64 into Ultimax mode at will... Perhaps modding the 1541U firmware could work. |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
thats another property of ultimax: write signal is generated for the whole memory area - the ultimax was designed so cartridges could bring whatever additional memory they need. |
Previous - 1 | 2 | 3 - Next |