gbadev.org forum archive

This is a read-only mirror of the content originally found on forum.gbadev.org (now offline), salvaged from Wayback machine copies. A new forum can be found here.

Beginners > Background Priorities

#9572 - yaustar - Sat Aug 09, 2003 5:15 am

I have an idea how to set them but am new to the whole 'bits' and 'bit shifting'.

would I define them as:
Code:

#define BG_PRIORITY(n)  ((n)<<1)

and add it to:
Code:

temp = bg->size | (bg->charBaseBlock<<CHAR_SHIFT) | (bg->screenBaseBlock<<SCREEN_SHIFT)
      | bg->colorMode | bg->mosaic | bg->wraparound | bg->bg_priority;


While on the topic of backgrounds, do text backgrounds wraparound no matter what?

Thanks for your time[/code]
_________________
[Blog] [Portfolio]

#9573 - tepples - Sat Aug 09, 2003 5:32 am

Close. You're supposed to shift left by the number of the LOWEST order bit in the field. In the case of BG priority, the lowest order bit is bit 0, so
Code:
#define BG_PRIORITY(n) ((n) << 0)

A non-trivial example might be sprite priority, which occupies bits 11 and 10 of a sprite's attribute 2.
Code:
#define OAM_PRIORITY(n) ((n) << 10)

And yes, text backgrounds always wrap. You can make a text background not wrap by setting a window and telling the background to draw only within the window.
_________________
-- Where is he?
-- Who?
-- You know, the human.
-- I think he moved to Tilwick.

#9588 - yaustar - Sat Aug 09, 2003 3:19 pm

thanks, that explains a lot
_________________
[Blog] [Portfolio]

#9600 - yaustar - Sun Aug 10, 2003 2:49 am

how would I change the priority on the fly, i.e. after initialisation.
_________________
[Blog] [Portfolio]

#9616 - niltsair - Sun Aug 10, 2003 11:26 pm

You retrieve the old 16bits value with a mask, leaving out the 2 bits concerning priority. You then 'or' this value with your new shifted priority value.

Say priority are bit 3&4 (I don't remember them offhand)

*bgRegValX = ( bgRegValX & 0xFFE7) | ( newPrioVal << 3);

(1111 1111 1110 0111 = 0xFFE7)

#22531 - jhinders - Wed Jun 23, 2004 8:12 pm

tepples wrote:

And yes, text backgrounds always wrap. You can make a text background not wrap by setting a window and telling the background to draw only within the window.



how exactly would you set a window and tell the background to only draw within it?

#22535 - Miked0801 - Wed Jun 23, 2004 9:23 pm

No text backgrounds do not always wrap. There is a bit you set in the BG control register that tells it to wrap or fill 0 color. I don't have it handy, but could look it up if needed.

#22536 - poslundc - Wed Jun 23, 2004 9:52 pm

I'm fairly positive that bit only does anything for rotation backgrounds.

Dan.

#22537 - jhinders - Wed Jun 23, 2004 9:53 pm

Miked0801 wrote:
No text backgrounds do not always wrap. There is a bit you set in the BG control register that tells it to wrap or fill 0 color. I don't have it handy, but could look it up if needed.


according to the documentation i have you can't set that bit for BG0 and BG1.

#22538 - Miked0801 - Wed Jun 23, 2004 11:38 pm

Ok, strange - our engine is always playing with that bit. I'll have to go in and see if it is just being ignored or whatever on our side.

#22541 - tepples - Thu Jun 24, 2004 12:46 am

jhinders wrote:
how exactly would you set a window and tell the background to only draw within it?

Peruse this.
_________________
-- Where is he?
-- Who?
-- You know, the human.
-- I think he moved to Tilwick.