-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathsgb_assets.c
63 lines (53 loc) · 2.39 KB
/
sgb_assets.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#pragma bank 255
#include <gbdk/platform.h>
#include <stdint.h>
#include "compat.h"
#include "systemdetect.h"
#include "sgb_border.h"
#include "sgb_assets.h"
#include "gbcamera.h"
#include "state_camera.h"
#include "camera_sgb_border.h"
#include "camera_sgb_border_default.h"
BANKREF(module_sgb_assets)
static const uint8_t sgb_palette_gray[] = {
SGB_PKT(SGB_PAL_01),
SNES_LE(SNES_WHITE), SNES_LE(SNES_LIGHTGRAY), SNES_LE(SNES_DARKGRAY), SNES_LE(SNES_BLACK),
SNES_LE(SNES_LIGHTGRAY), SNES_LE(SNES_DARKGRAY), SNES_LE(SNES_BLACK)
};
static const uint8_t sgb_palette_red[] = {
SGB_PKT(SGB_PAL_01),
SNES_LE(RGB8(0xf3, 0xf8, 0xc3)), SNES_LE(RGB8(0xd1, 0xe4, 0x10)), SNES_LE(RGB8(0xe4, 0x3d, 0x20)), SNES_LE(SNES_BLACK),
SNES_LE(SNES_LIGHTGRAY), SNES_LE(SNES_DARKGRAY), SNES_LE(SNES_BLACK)
};
static const uint8_t * const sgb_palettes[] = { sgb_palette_gray, sgb_palette_red };
static const border_descriptor_t sgb_borders[] = {
{
.tiles = camera_sgb_border_default_tiles, .tiles_size = sizeof(camera_sgb_border_default_tiles),
.map = camera_sgb_border_default_map, .map_size = sizeof(camera_sgb_border_default_map),
.palettes = camera_sgb_border_default_palettes, .palettes_size = sizeof(camera_sgb_border_default_palettes),
.bank = BANK(camera_sgb_border_default)
}, {
.tiles = camera_sgb_border_tiles, .tiles_size = sizeof(camera_sgb_border_tiles),
.map = camera_sgb_border_map, .map_size = sizeof(camera_sgb_border_map),
.palettes = camera_sgb_border_palettes, .palettes_size = sizeof(camera_sgb_border_palettes),
.bank = BANK(camera_sgb_border)
}
};
inline void sgb_assets_set_palette(uint8_t palette_index) {
sgb_transfer((uint8_t *)sgb_palettes[palette_index]);
}
// load the SGB borders and palettes if SGB detected
uint8_t INIT_module_sgb_assets(void) BANKED {
if (_is_SUPER) {
CAMERA_SWITCH_RAM(CAMERA_BANK_REGISTERS);
if (OPTION(fancy_sgb_border)) {
set_sgb_border(&sgb_borders[SGB_BORDER_FANCY], BANK(module_sgb_assets));
sgb_assets_set_palette(SGB_PALETTE_RED);
} else {
set_sgb_border(&sgb_borders[SGB_BORDER_DEFAULT], BANK(module_sgb_assets));
sgb_assets_set_palette(SGB_PALETTE_GRAY);
}
}
return 0;
}