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 > Alt-history no-cost design changes with great value
2021-05-01 22:49
Krill

Registered: Apr 2002
Posts: 2839
Alt-history no-cost design changes with great value

Which things in the C-64 could have been implemented or connected differently without conceivable extra cost, for coding advantages?

Thinking of things like shuffling the chip register bits like VIC's $d011 and $d016 differently (such that some effects can be achieved with fewer register writes or less twiddling).
Or putting some IO register to $01 (and move the memory configuration somewhere else, somehow).
Maybe also having different PLA memory configurations (not necessarily more).
Or connecting external signals to the CIA port pins in a different order.

Discuss! =)
 
... 65 posts hidden. Click here to view all posts....
 
2021-06-08 13:23
Krill

Registered: Apr 2002
Posts: 2839
I see that it needs to be byte-wise (or word-wise) for vertical fill (with a buffer spanning the entirely horizontal width), but i don't see why simple bit-wise from left to right wouldn't work for horizontal fill.

The latter i've done in software in the zoomscroller of +H2K (but of course it uses a 256-entry lookup table to be somewhat efficient).

Edit: Oh, pattern fill... now that's a more complex beast anyways, certainly not a cheap add-on. :)
2021-06-08 15:52
Oswald

Registered: Apr 2002
Posts: 5017
I dont understand how a byte-wise-horizontall eor fill would work in higher res than bytes ? :)
2021-06-08 16:53
Krill

Registered: Apr 2002
Posts: 2839
Quoting Oswald
I dont understand how a byte-wise-horizontall eor fill would work in higher res than bytes ? :)
Filling is performed right-to-left.
Current fill state is held in the N flag.
Pick one out of two lookup-tables according to that state bit.
Read next unfilled input into an index register.
Look up filled output.
Store filled output.
Repeat. =)

(So yeah, two 256-entry tables, actually, but they're just inverted versions of each other. Probably you could use just one with shifting the previously-stored output still in the accu, then conditional inversion of the looked-up next filled value according to carry flag.)
2021-06-08 18:54
Oswald

Registered: Apr 2002
Posts: 5017
Quote: Quoting Oswald
I dont understand how a byte-wise-horizontall eor fill would work in higher res than bytes ? :)
Filling is performed right-to-left.
Current fill state is held in the N flag.
Pick one out of two lookup-tables according to that state bit.
Read next unfilled input into an index register.
Look up filled output.
Store filled output.
Repeat. =)

(So yeah, two 256-entry tables, actually, but they're just inverted versions of each other. Probably you could use just one with shifting the previously-stored output still in the accu, then conditional inversion of the looked-up next filled value according to carry flag.)


I dont get how CJ's HW version would work with only a 8 bit store previous result byte and byte wise eor.
2021-06-08 20:53
Krill

Registered: Apr 2002
Posts: 2839
Quoting Oswald
I dont get how CJ's HW version would work with only a 8 bit store previous result byte and byte wise eor.
Not so sure either. While VIC does have a line buffer, it only buffers screen data worth 40 bytes (whose update you can prevent by disabling badlines).

For vertical filling, the entire width (320 pixels) would have to be buffered for XORing a line later.

Edit: Hmm well, maybe he meant repurposing the line buffer for actual bit/pixel storage. Then the additional bits would only be needed with destructive shifting-out, for buffering that shifted-out byte. But then that extra buffer could well be only one bit, i guess. :)
And colours/screen data would be lost, so... each line a badline? =)
2021-06-08 22:36
ChristopherJam

Registered: Aug 2004
Posts: 1378
Why so complicated you lot? I was pretty clear I only need one additional byte of state.
Here's an extract from the fill code from Effluvium:

rqZapLine0
	lda rqkLBuf +$00
	sta rqkCSet0+$00*64,y
	eor rqkLBuf +$01
	sta rqkCSet0+$01*64,y
	eor rqkLBuf +$02
	sta rqkCSet0+$02*64,y
	eor rqkLBuf +$03
	sta rqkCSet0+$03*64,y
	eor rqkLBuf +$04
	sta rqkCSet0+$04*64,y
	eor rqkLBuf +$05
	sta rqkCSet0+$05*64,y
	eor rqkLBuf +$06
	sta rqkCSet0+$06*64,y
	eor rqkLBuf +$07
	sta rqkCSet0+$07*64,y

Obviously in this instance I was using a contiguous eorbuffer rather than plotting into the charset itself, but you can see how few operations the fill uses.
2021-06-09 00:56
Krill

Registered: Apr 2002
Posts: 2839
Not quite immediately obvious how this translates to hardware.

Can you elaborate?
2021-06-09 07:41
Oswald

Registered: Apr 2002
Posts: 5017
so how does that fill a line horizontally ? if I have

%00001100 %00000000 %00110000

this will fill with your code to:

%00001100 %00001100 %00111100

and not to:

%00001111 %11111111 %11110000
2021-06-09 08:26
Krill

Registered: Apr 2002
Posts: 2839
Okay, so... horizontal pattern fill in hardware, with one additional state byte.

The fill itself would be simple bitwise XOR from one pixel to the next, and that additional state byte is the pattern mask, applied (XOR/AND/OR) to the output with an 8-pixel granularity?
2021-06-09 10:35
oziphantom

Registered: Oct 2014
Posts: 478
I want cart memory without kernal.
Previous - 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 - 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
WVL/Xenon
Sentinel/Excess/TREX
DeMOSic/HF^MS^BCC^LSD
Nordischsound/Hokuto..
TheRyk/MYD!
Guests online: 162
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 The Ghost  (9.6)
9 Wonderland XIV  (9.6)
10 Bromance  (9.6)
Top onefile Demos
1 It's More Fun to Com..  (9.8)
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 Webmasters
1 Slaygon  (9.7)
2 Perff  (9.6)
3 Morpheus  (9.5)
4 Sabbi  (9.5)
5 CreaMD  (9.1)

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