95 lines
1.2 KiB
Markdown
95 lines
1.2 KiB
Markdown
|
|
|
|
|
|
|
|
# Background
|
|
<div style="text-align: center"><img src="screenshot.png" alt="" /></div>
|
|
|
|
Renders a full-screen background image.
|
|
|
|
## Source
|
|
|
|
|
|
|
|
|
|
```c
|
|
|
|
#include <gb/gb.h>
|
|
|
|
#include "bg_data.c"
|
|
#include "bg_data.map"
|
|
|
|
void main() {
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
First load the tile patterns in the Background Tile Pattern table. This
|
|
means that we load all the 8x8 images that make up our picture (131 of them
|
|
to be exact).
|
|
|
|
|
|
|
|
|
|
```c
|
|
set_bkg_data(0, 131, tiledata);
|
|
|
|
VBK_REG = 1;
|
|
VBK_REG = 0;
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Then we set the tile pattern in the background tile table. The variable
|
|
`tilemap` contains an array of tile numbers that reference to the the tiles
|
|
we loaded previously using `set_bkg_data`.
|
|
|
|
Our image is `20` tiles wide and `18` tiles high, thus having a total of 360
|
|
tiles. How is that possible when we only loaded `131` tiles?
|
|
|
|
Well, that is because some in the image are identical. So instead the tile
|
|
is only saved once in the `tiledata` variable and reused multiple times in
|
|
the `tilemap` variable.
|
|
|
|
|
|
|
|
|
|
```c
|
|
set_bkg_tiles(0, 0, 20, 18, tilemap);
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
In order for the background to actually show up we call `SHOW_BKG`.
|
|
|
|
|
|
|
|
|
|
```c
|
|
SHOW_BKG;
|
|
|
|
DISPLAY_ON;
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|