mirror of https://github.com/mgba-emu/mgba.git
Define memory regions
This commit is contained in:
parent
f72c195739
commit
1972e73bec
|
@ -1,6 +1,8 @@
|
||||||
#ifndef GBA_VIDEO_H
|
#ifndef GBA_VIDEO_H
|
||||||
#define GBA_VIDEO_H
|
#define GBA_VIDEO_H
|
||||||
|
|
||||||
|
#include "gba-memory.h"
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
|
@ -21,6 +23,71 @@ enum {
|
||||||
REG_DISPSTAT_MASK = 0xFF38
|
REG_DISPSTAT_MASK = 0xFF38
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum ObjMode {
|
||||||
|
OBJ_MODE_NORMAL = 0,
|
||||||
|
OBJ_MODE_SEMITRANSPARENT = 1,
|
||||||
|
OBJ_MODE_OBJWIN = 2
|
||||||
|
};
|
||||||
|
|
||||||
|
enum ObjShape {
|
||||||
|
OBJ_SHAPE_SQUARE = 0,
|
||||||
|
OBJ_SHAPE_HORIZONTAL = 1,
|
||||||
|
OBJ_SHAPE_VERTICAL = 2
|
||||||
|
};
|
||||||
|
|
||||||
|
union GBAOAM {
|
||||||
|
struct {
|
||||||
|
int y : 8;
|
||||||
|
unsigned transformed : 1;
|
||||||
|
union {
|
||||||
|
unsigned doublesize : 1;
|
||||||
|
unsigned disable : 1;
|
||||||
|
};
|
||||||
|
enum ObjMode mode : 2;
|
||||||
|
unsigned mosaic : 1;
|
||||||
|
unsigned multipalette : 1;
|
||||||
|
enum ObjShape shape : 2;
|
||||||
|
|
||||||
|
int x : 9;
|
||||||
|
union {
|
||||||
|
unsigned matIndex : 5;
|
||||||
|
struct {
|
||||||
|
int : 3;
|
||||||
|
unsigned hflip : 1;
|
||||||
|
unsigned vflip : 1;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
unsigned size : 2;
|
||||||
|
|
||||||
|
unsigned tile : 10;
|
||||||
|
unsigned priority : 2;
|
||||||
|
unsigned palette : 4;
|
||||||
|
|
||||||
|
int : 16;
|
||||||
|
} obj[128];
|
||||||
|
|
||||||
|
struct {
|
||||||
|
int : 16;
|
||||||
|
int : 16;
|
||||||
|
int : 16;
|
||||||
|
int a : 16;
|
||||||
|
int : 16;
|
||||||
|
int : 16;
|
||||||
|
int : 16;
|
||||||
|
int b : 16;
|
||||||
|
int : 16;
|
||||||
|
int : 16;
|
||||||
|
int : 16;
|
||||||
|
int c : 16;
|
||||||
|
int : 16;
|
||||||
|
int : 16;
|
||||||
|
int : 16;
|
||||||
|
int d : 16;
|
||||||
|
} mat[32];
|
||||||
|
|
||||||
|
uint16_t raw[512];
|
||||||
|
};
|
||||||
|
|
||||||
struct GBAVideoRenderer {
|
struct GBAVideoRenderer {
|
||||||
void (*init)(struct GBAVideoRenderer* renderer);
|
void (*init)(struct GBAVideoRenderer* renderer);
|
||||||
void (*deinit)(struct GBAVideoRenderer* renderer);
|
void (*deinit)(struct GBAVideoRenderer* renderer);
|
||||||
|
@ -28,6 +95,10 @@ struct GBAVideoRenderer {
|
||||||
uint16_t (*writeVideoRegister)(struct GBAVideoRenderer* renderer, uint32_t address, uint16_t value);
|
uint16_t (*writeVideoRegister)(struct GBAVideoRenderer* renderer, uint32_t address, uint16_t value);
|
||||||
void (*drawScanline)(struct GBAVideoRenderer* renderer, int y);
|
void (*drawScanline)(struct GBAVideoRenderer* renderer, int y);
|
||||||
void (*finishFrame)(struct GBAVideoRenderer* renderer);
|
void (*finishFrame)(struct GBAVideoRenderer* renderer);
|
||||||
|
|
||||||
|
uint16_t palette[SIZE_PALETTE_RAM >> 1];
|
||||||
|
uint16_t vram[SIZE_VRAM >> 1];
|
||||||
|
union GBAOAM oam;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct GBAVideo {
|
struct GBAVideo {
|
||||||
|
|
Loading…
Reference in New Issue