VDP always busy (Development MSX Fora)MSX Resource Center PassionMSX MSX2 contest           
            
English Nederlands Español Português Russian         
 Nieuws
   Voorpagina
  Nieuws archief
  Nieuws onderwerpen

 Informatie
   MSX Fora
  Artikelen
  Recensies
  Beursverslagen
  Fotoreportages
  Beurzen en meetings
  Enquêtes
  Links
  Zoek

 Software
   Downloads
  Webshop

 MRC
   Wie we zijn
  Kom bij ons team
  Doneren
  Policies
  Contact met het MRC
  Link naar Ons
  Statistieken

 Zoek
 
  

  

 Login
 

Gebruikersnaam

Wachtwoord




Ben je nog niet lid? Klik hier en word MSX vriend!


 Statistieken
 

Er zijn 119 gasten en 4 MSX vrienden online

Je bent een anonieme bezoeker.
 

MSX Fora


MSX Fora

Development - VDP always busy

Ga naar pagina ( Vorige pagina 1 | 2 | 3 | 4 Volgende pagina )
Schrijver

VDP always busy

Sonic_aka_T

msx guru
Berichten: 2261
Geplaatst: 02 Mei 2005, 13:55   
Quote:

Quote:


...
LD C,$E7
IN H,(C)
IN A,($E6)
LD L,A
AND $80
JR NZ,DONE
IN H,(C)
DONE:
...
RET



@ fly:

Ok, I think your method is better.
What is not so clear to me is the reasone to use

AND $80

instead of OR A (for example), you only need to test if L (A) is 0 or not,
why should you test "bit 7"?

Hey! That's my method! And indeed, it should be OR A like I wrote, not AND $80...
MicroTech
msx lover
Berichten: 108
Geplaatst: 02 Mei 2005, 14:18   
Quote:

Hey! That's my method! And indeed, it should be OR A like I wrote, not AND $80...



Ops sorry Sonic_aka_T

MicroTech
msx lover
Berichten: 108
Geplaatst: 02 Mei 2005, 15:21   
Quote:

3D and MSX? A very difficult match!


I agree

Quote:

Your problem is the VDP of the MSX2. It is too slow to render at
reasonable frame rate a full page of 3D objects with filled polygons.
The only possibility you have for reaching a good frame rate is to resort to incremental algorithms for updating the screen. The limitation is that you cannot use shadows, but only flat colours.


My first target is wireframe and flat polygons.
Gourad shaded and bitmapped polygons are too "heavy" also for MSX TurboR.
Perhaps One Chip MSX will give us the missing processing power... and maybe somebody will modify VDP VHDL code to design an hardware polygon rasterizer
In the meanwhile we can use V9990

Quote:


The idea is to store 3 successive frames in memory as bulks of polygons (let say frames (a), (b), (c) ).
While displaying frame (b) in page 0, you have frame (a) in page 1 (hidden) and you
need rendering frame (c).



Yet only 2 pages are enough processing power consuming.

Quote:


Using the 2D representations of frames (a) and (c) as bulks of polygons you get the a new list of polygons which is the difference of (c) with respect to (a). This new frame "difference" has probably more complex 2D polygons, but has smaller surfaces to be filled as you fill only
the areas not already filled by (a).
With large objects which move slowly, you can get very high frame-rates.



I should "make a comparison" between one frame and the next?

I see, from your email, that you are from Italy... where are you from?
MicroTech

flyguille
msx master
Berichten: 1182
Geplaatst: 02 Mei 2005, 15:24   
AND $80 is better, because it makes the routine NOT timming sensitive.. so you can use it in Z80 mode.

note: $80 = &B1000 0000


MicroTech
msx lover
Berichten: 108
Geplaatst: 02 Mei 2005, 15:36   
Quote:

AND $80 is better, because it makes the routine NOT timming sensitive.. so you can use it in Z80 mode.
note: $80 = &B1000 0000



In which sense it is not "timing sensitive"?
In Z80 mode I think it's better to read only the m.s.b. of system timer.
Only in R800 mode reading system timer in 16bit mode is useful.
MicroTech

ARTRAG
msx master
Berichten: 1587
Geplaatst: 02 Mei 2005, 15:38   
You have to use page swap (this is a fact independent from by proposal).

You should do a comparison between two frames which have to be plotted in the same page and plot only their differences.

Due to pageswap frames have distance 2 instead of being successive.
If you do not do page swap incremental drawing goes better
but the VDP cannot trace the screen in 1/50 so images become crappy.

Quote:


Yet only 2 pages are enough processing power consuming.



You process one page at time, and you store only the 2D polygonal description
of 3 pages (in memory as data structure, I mean).

While you display one page you plot the hidden one.

Having the 2D polygonal description of what was already in that page
and of the new frame to be plotted, you draw only the differences.


flyguille
msx master
Berichten: 1182
Geplaatst: 02 Mei 2005, 16:02   
mmmm that is a problem with the mask

offcourse it will works if you only does wireframe without masking
ARTRAG
msx master
Berichten: 1587
Geplaatst: 02 Mei 2005, 16:08   
masking??? what you mean?
Wireframe? It cannot work if
you use Wireframe! You need filled polygons!

If you use wireframe you need only to retrace
the same scene in black in order to cancel it.



flyguille
msx master
Berichten: 1182
Geplaatst: 02 Mei 2005, 19:52   
weel, if you have a far object and a near too... being the far object covered by the near one... do you want to see the far one? i thinks NO!.

So 3d wire drawing also needs a Z mask!
ARTRAG
msx master
Berichten: 1587
Geplaatst: 02 Mei 2005, 20:00   
I understand Z masking
I repeat that my idea can work only if you use filled polygons
and have little sense for wireframe animation (even with Z masking)
as the 99% of the lines move at each frame!!

The incremental plot works only for filled areas which overlap in
successive frames.

It is the "ANARCHY" demo trick, that is not a trick at all,
only a clever algorithm for reducing the load of VDP processing,
at the expenses of CPU processing.

ARTRAG
msx master
Berichten: 1587
Geplaatst: 02 Mei 2005, 20:42   
@MicroTech
send me an email, I will answer your question.
Are you looking for a co-developer?
Sonic_aka_T

msx guru
Berichten: 2261
Geplaatst: 02 Mei 2005, 22:50   
Quote:

AND $80 is better, because it makes the routine NOT timming sensitive.. so you can use it in Z80 mode.

note: $80 = &B1000 0000


Dude, you need to check for a Zer0 value! How the heck do you expect to check for zero using an AND $80!?!
MicroTech
msx lover
Berichten: 108
Geplaatst: 10 Mei 2005, 17:29   
Quote:

Yes MicroTech. I'm developing a G9K library. Ask all you want :-)



Well msd, I've downloaded G9K Lib (vers. 0.51) and sjasm (vers.0.39),
I've done some little adaptations (org 0D000h, undefined unused routines
and added a custom jp table).
Now a V9990 related question rises:
I use B1 mode, 8 bit/dot, screen 8 like.
How can I change the "display" page?
I imagine I have to call SetScrollMode to define the size of scroll in Y direction
and then I have to change R#17 and R#18 to starting line of the page I wish to be displayed.
Is it correct?
Thanks
MicroTech


msd
msx professional
Berichten: 607
Geplaatst: 10 Mei 2005, 19:49   
MicroTech: That's correct you have to change the scroll registers to make a different part of the vram visable. I wouldn't take about pages in v9990.. it's just one big image space. You can set the starting position with G9k.SetScrollY or G9k.SetScrollX. just e-mail me if you have more questions.. m.delorme@chello.nl.
flyguille
msx master
Berichten: 1182
Geplaatst: 10 Mei 2005, 20:26   
Quote:

Quote:

AND $80 is better, because it makes the routine NOT timming sensitive.. so you can use it in Z80 mode.

note: $80 = &B1000 0000


Dude, you need to check for a Zer0 value! How the heck do you expect to check for zero using an AND $80!?!



with and $80, that not check for a Zer0 value!, because you don't need to check is it or not ZERO.

you just needs, to knows if the LOW byte is <127 or bigger. So, if it is <127, you can read again the high byte to be sure of reading a correct measure, if it isn't you not needs re-read again, because it is already acurate the high byte value readed before.

if you only checks for ZERO or NOT... when you are in Z80 MODE!, can be that the timer already has the value 1 in its low byte having you readed the old value of the high byte.


 
Ga naar pagina ( Vorige pagina 1 | 2 | 3 | 4 Volgende pagina )
 







(c) 1994 - 2008 Stichting MSX Resource Center. MSX is een trademark van MSX Licensing Corporation.