Jump to content
IGNORED

VBXE Tutorial - The XDL


Recommended Posts

1 minute ago, Rybags said:

User Guide describes things in depth in easier to understand language and has longer practical examples of things.

i guess that is what we're trying to accomplish here.....

although the title of the thread states XDL, we want to broader that a bit. if this causes an issue we can open a separate thread with the title VBXE for beginners and set everything there.... 

 

Link to comment
Share on other sites

9 minutes ago, Yaron Nir said:

i guess that is what we're trying to accomplish here.....

although the title of the thread states XDL, we want to broader that a bit. if this causes an issue we can open a separate thread with the title VBXE for beginners and set everything there.... 

 

Separate threads please - easier to search and they can become "chapters" of the User Guide.

Link to comment
Share on other sites

1 hour ago, Yaron Nir said:

was trying to figure out myself by reading some more.

is it safe to say that the first attribute is the start address of the screen and the second attribute is the length of 1 scanline?

so in your example you set:

so the 5 bytes address is for the VBXE screen to start and that is set to $013000

and each scanline will be 320 pixels (these are the 2 bytes representing the $140=320) ?

 

is that correct to state? or am i getting this all wrong?

  

Correct on both accounts.  Please note however, that $140 is OVSTEP, not OVSCRL.  I am not using smooth scrolling so OVSCRL is not used.

  • Thanks 1
Link to comment
Share on other sites

2 hours ago, Yaron Nir said:

@Stephen, some questions about the XDLC attributes

 

what are color attributes used for, and how?

I don't understand the OVADR and OVSCRL usage. maybe explain a bit more...?

 

- XDLC_CHBASE - so instead of creating a charset with 127 characters (4x8) we are creating a charset with 256 chars (8x8) and double the size (2K instead of 1K). how is it later being used? can you show an example? 

- color attribute map. again, if you can explain more about this.

- not sure about the logic behind 320 bytes to support 640 pixels but 160 bytes to support 160 bytes ? 

 

thanks for all your support! 

 

Fonts are always 8*8.  The ANTIC only allows 128 unique characters, and when bit 7 is set, they are displayed in inverse mode.  This is why the font only takes 1kB.  VBXE allows for 256 unique characters, hence the 2kB requirement.

 

CHBASE is not used in the example I have provided here because the XDL is a graphics mode, so no font data is ever used.  I'll post an example of setting up and using a text mode screen soon.  It will cover loading a font, setting up a custom palette, etc.  Here's a quick preview of what is described in the Programmer's Manual as "16+8" mode (16 foreground colours, with 8 independent background colours for each).

 

I haven't used the colour map yet, sorry I can't provide more info.  It's basically another overlay, which can be used to modify underlying ANTIC graphics.  You can add blocks of colour, change GTIA modes.  It is setup and accessed the same as the regular overlay, by setting its address.

 

There's a few ways the VBXE maps data to the screen:

  • Text mode uses 2 bytes per character that is displayed.  1st is the character number (when using a standard ASCII font, 65 would be A) and 2nd byte is the colour.
  • Graphics modes
    • 160 and 320 pixel mode use one byte per pixel - that is, the palette entry (colour) to use for that pixel.  $8F will draw a single pixel of colour $8F
    • 640 pixel mode uses nybbles for each pixel.  Therefore one byte describes 2 pixels.  Because only 4 bits per pixel are available, only 16 colours can be used in this mode.  $8F will therefore draw two pixels.  The left will be colour 8, the right will be colour F
  • Like 1
Link to comment
Share on other sites

If the 'what is a blitter' question is still in play - (if not, forgive me)

 

A blitter is, as was said, a very fast memory transfer unit optimized for video memory targets and sometimes specifically for rectangular arrays of bits. It is intended to move arrays of bits in a 'block transfer' to a destination memory, and it usually has facilities for controlling how the bits get laid into the destination memory - via or, xor, or replacement.It can be used as the core of a 'sprite engine'. but it is not correct to say 'it is the sprite engine'. There still needs to be software wrapped around it that knows what a sprite is, what the color bits in a memory word mean, contains the actual sprite movement and detection logic, etc.

Edited by danwinslow
  • Like 3
Link to comment
Share on other sites

  • 5 months later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...