OSDN Git Service

show sprite developed.
[motonesemu/motonesemu.git] / emulator / ppucore / sprite.c
1 #include <stdlib.h>
2 #include <string.h>
3
4 #include "tools.h"
5 #include "vga.h"
6 #include "vram.h"
7 #include "ppucore.h"
8 #include "sprite.h"
9
10 void palette_index_to_rgb15(unsigned char index, struct rgb15* rgb);
11
12
13 static unsigned char * sprite_ram;
14
15 void spr_ram_tbl_set(unsigned short offset, unsigned char data) {
16     sprite_ram[offset & SPR_RAM_ADDR_MASK] = data;
17 }
18
19 void spr_ram_data_get(unsigned char index, unsigned char *x, unsigned char *y, 
20         unsigned char *tile_id, struct sprite_attr *sa) {
21     //index is multiple of 4.
22     index *= 4;
23     index &= SPR_RAM_ADDR_MASK;
24
25     *y = sprite_ram[index++];
26     *tile_id = sprite_ram[index++];
27     memcpy(sa, sprite_ram + index++, sizeof(struct sprite_attr));
28     *x = sprite_ram[index++];
29 }
30
31 int sprite_init(void) {
32     sprite_ram = malloc(SPRITE_RAM_SIZE);
33     if (sprite_ram == NULL)
34         return FALSE;
35     memset(sprite_ram, 0, SPRITE_RAM_SIZE);
36     return TRUE;
37 }
38
39 void clean_sprite(void) {
40     free(sprite_ram);
41 }
42