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 > FASTER 3D GRAPHICS
2004-10-26 06:24
Stingray
Account closed

Registered: Feb 2003
Posts: 117
FASTER 3D GRAPHICS

I've heard it said before that the way the VIC chip addresses memory (8x8 cells) makes it slower fo rendering graphics because of the extra calculations needed. So what way would you have had the Commodore engineers design an alternative addressing mode so that 3D graphics could be calculated quicker? I would realy appreciate your ideas on this.
 
... 185 posts hidden. Click here to view all posts....
 
2010-03-02 15:47
Stingray
Account closed

Registered: Feb 2003
Posts: 117
The EOR-filler was to work by:

40 registers (in hardware), lets say they all start with #$00

The 40 bytes are for setting what the first byte will EOR with at the start of each column. This byte will not EOR with every byte of the column but just the first byte and the 40 bytes are used to hold the result of that EOR and then the next.

e.g.

byte for first column first row of bitmap is EOR with register 0, and result is stored in register 0.

byte for first column 2nd row of bitmap is EOR with register 1, and result is stored in register 1.

So on and so on, then VIC starts on next row, excepte registers now have a value in them.

repeat 200 times

screen done.
2010-03-02 15:54
JackAsser

Registered: Jun 2002
Posts: 1989
Quote: The EOR-filler was to work by:

40 registers (in hardware), lets say they all start with #$00

The 40 bytes are for setting what the first byte will EOR with at the start of each column. This byte will not EOR with every byte of the column but just the first byte and the 40 bytes are used to hold the result of that EOR and then the next.

e.g.

byte for first column first row of bitmap is EOR with register 0, and result is stored in register 0.

byte for first column 2nd row of bitmap is EOR with register 1, and result is stored in register 1.

So on and so on, then VIC starts on next row, excepte registers now have a value in them.

repeat 200 times

screen done.


Sounds good. And for dithered filling the engine have to update those registers prior to the second pass.
2010-03-02 15:57
Stingray
Account closed

Registered: Feb 2003
Posts: 117
do you mean that you need to initialize the registers to specific numbers at the start of the screen draw?

The EOR is taking place as the sceen is drawn.

The memory does not get touched. (EOR fill is done with no cpu cycles!)
2010-03-02 16:05
JackAsser

Registered: Jun 2002
Posts: 1989
Quote: do you mean that you need to initialize the registers to specific numbers at the start of the screen draw?

The EOR is taking place as the sceen is drawn.

The memory does not get touched. (EOR fill is done with no cpu cycles!)


Well, for dithered eor-filling you need to fill the screen in two passes. And the initial state for those registers are most often 0, but for objects partly outside the screen the state can be different.

So if you wanna support dithered eor-filling in one pass directly in the screen refresh you need to remap the addresses so that it uses the first 40 registers during the even 100 rows, then the second 40 registers during the odd 100 rows.
2010-03-02 16:12
Stingray
Account closed

Registered: Feb 2003
Posts: 117
ok, so a second set of 40 registers that can be used on every second row would do the trick?

Can you give simple explanation of dithering to me?

I can see the visual effect in the Demo, looks like you get diffrent shades, but how does it do that?
2010-03-02 18:18
JackAsser

Registered: Jun 2002
Posts: 1989
Quote: ok, so a second set of 40 registers that can be used on every second row would do the trick?

Can you give simple explanation of dithering to me?

I can see the visual effect in the Demo, looks like you get diffrent shades, but how does it do that?


Yeps, a second set of registers for the odd rows would do the trick indeed.

Normal eor filling:

Line buffer:
11100000
00011100
00000011
00000000
00000000
00000000
00000000
00000000

After eor-filling:
11100000
11111100
11111111
11111111
11111111
11111111
11111111
11111111

Dither eor-filling, line buffer (2x thick lines, odd/even with 50% checker pattern):
10100000
01010100
00001010
00000001
00000000
00000000
00000000
00000000

Eor-Filling, even lines:
10100000
01010100
10101010
00000001
10101010
00000000
10101010
00000000

Eor-filling, odd lines also:
10100000
01010100
10101010
01010101
10101010
01010101
10101010
01010101
2010-03-02 19:07
PopMilo

Registered: Mar 2004
Posts: 145
@stingray: How hard would it be to implement graphic mode that would do something like 'repeat whole line N times' ?
To make 160x100, or 80x50 possible in pure hardware (no double STA's, and no cpu cycle steeling, and less memory needed).

I guess you can trick VIC to take data from same memory as last line?

It would be usefull for 3d...
2010-03-04 03:20
Stingray
Account closed

Registered: Feb 2003
Posts: 117
PopMilo,
It would be possible, would you really want to use the low res mode though?
2010-03-04 03:25
Stingray
Account closed

Registered: Feb 2003
Posts: 117
Quoting JackAsser
Yeps, a second set of registers for the odd rows would do the trick indeed.

So if I include the extra circuitry will you make your portal engine more awesome for it?

BTW Any chance of getting a bigger 3D area? that would be a cool Doom maze :)
2010-03-04 03:41
Stingray
Account closed

Registered: Feb 2003
Posts: 117
BTW, we really need a name for this project.

Ideas so far:

VIC X (for VIC eXpanded or VIC eXtreme)
VIC ENHANCER
VIC UNLEASHED
VIC INTERCEPTOR
VIC AAA (Awesome Addressing Add-on)
BAD VIC
or
Alien VIC!

Or we could even name it after someone, like in honor of someone who has made massive contributions to the C64. Or maybe just name parts of the circuit in honor of some ppl. Like maybe we could name the blitter circuit the ....?
Previous - 1 | ... | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | ... | 20 - 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
Adder/Triad
Guests online: 143
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 Wonderland XIV  (9.6)
9 Memento Mori  (9.6)
10 Bromance  (9.5)
Top onefile Demos
1 It's More Fun to Com..  (9.7)
2 Party Elk 2  (9.7)
3 Cubic Dream  (9.6)
4 Copper Booze  (9.5)
5 TRSAC, Gabber & Pebe..  (9.5)
6 Rainbow Connection  (9.5)
7 Wafer Demo  (9.5)
8 Dawnfall V1.1  (9.5)
9 Quadrants  (9.5)
10 Daah, Those Acid Pil..  (9.5)
Top Groups
1 Nostalgia  (9.3)
2 Oxyron  (9.3)
3 Booze Design  (9.3)
4 Censor Design  (9.3)
5 Crest  (9.3)
Top NTSC-Fixers
1 Pudwerx  (10)
2 Booze  (9.7)
3 Stormbringer  (9.7)
4 Fungus  (9.6)
5 Grim Reaper  (9.3)

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