-
Notifications
You must be signed in to change notification settings - Fork 1
/
YieArVideo.h
73 lines (58 loc) · 1.69 KB
/
YieArVideo.h
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
64
65
66
67
68
69
70
71
72
73
//
// YieArVideo.h
// Konami Yie Ar Video Chip emulator for GBA/NDS.
//
// Created by Fredrik Ahlström on 2009-08-25.
// Copyright © 2009-2024 Fredrik Ahlström. All rights reserved.
//
#ifndef YIEARVIDEO_HEADER
#define YIEARVIDEO_HEADER
/** Game screen width in pixels */
#define GAME_WIDTH (256)
/** Game screen height in pixels */
#define GAME_HEIGHT (224)
/** Total horizontal pixel count */
#define H_PIXEL_COUNT (384)
typedef struct {
u32 scanline;
u32 nextLineChange;
u32 lineState;
void *periodicIrqFunc;
void *frameIrqFunc;
u8 irqControl;
u8 sprMemReload;
u8 koPadding1[2];
u32 sprMemAlloc;
u32 *spriteRomBase;
u8 *gfxRAM;
u32 *sprBlockLUT;
} YieArVideo;
/**
* Initializes the tile decoder.
* @param *chrDecode: Pointer to a 0x400 large byte buffer.
*/
void yiearInit(u8 *chrDecode);
void yiearReset(void *periodicIrqFunc(), void *frameIrqFunc(), u8 *ram);
/**
* Saves the state of the YieArVideo chip to the destination.
* @param *destination: Where to save the state.
* @param *chip: The YieArVideo chip to save.
* @return The size of the state.
*/
int yiearSaveState(void *destination, const YieArVideo *chip);
/**
* Loads the state of the YieArVideo chip from the source.
* @param *chip: The YieArVideo chip to load a state into.
* @param *source: Where to load the state from.
* @return The size of the state.
*/
int yiearLoadState(YieArVideo *chip, const void *source);
/**
* Gets the state size of a YieArVideo chip.
* @return The size of the state.
*/
int yiearGetStateSize(void);
void yiearConvertTileMap(void *destination, const void *source, int length);
void yiearConvertSprites(void *destination);
void yiearDoScanline(void);
#endif // YIEARVIDEO_HEADER