FSkip behaviour changed, RefreshLine_PPU_hook optimized
[fceu.git] / cart.h
CommitLineData
d97315ac 1#ifndef _CART_H
2#define _CART_H
3
4typedef struct {
5 /* Set by mapper/board code: */
6 void (*Power)(void);
7 void (*Reset)(void);
8 void (*Close)(void);
9 uint8 *SaveGame[4]; /* Pointers to memory to save/load. */
10 uint32 SaveGameLen[4]; /* How much memory to save/load. */
11
12 /* Set by iNES/UNIF loading code. */
13 int mirror; /* As set in the header or chunk.
14 iNES/UNIF specific. Intended
15 to help support games like "Karnov"
16 that are not really MMC3 but are
17 set to mapper 4.
18 */
19 int battery; /* Presence of an actual battery. */
20 uint8 MD5[16];
21 uint32 CRC32; /* Should be set by the iNES/UNIF loading
22 code, used by mapper/board code, maybe
23 other code in the future.
24 */
25} CartInfo;
26
27void FCEU_SaveGameSave(CartInfo *LocalHWInfo);
28void FCEU_LoadGameSave(CartInfo *LocalHWInfo);
29
c62d2810 30extern uint8 *Page[32],*VPage[8],*MMC5SPRVPage[8],*MMC5BGVPage[8];
31
32void ResetCartMapping(void);
33void SetupCartPRGMapping(int chip, uint8 *p, uint32 size, int ram);
34void SetupCartCHRMapping(int chip, uint8 *p, uint32 size, int ram);
35void SetupCartMirroring(int m, int hard, uint8 *extra);
36
d97315ac 37DECLFR(CartBROB);
c62d2810 38DECLFR(CartBR);
d97315ac 39DECLFW(CartBW);
937bf65b 40
c62d2810 41extern uint8 *PRGptr[32];
42extern uint8 *CHRptr[32];
43
44extern uint32 PRGsize[32];
45extern uint32 CHRsize[32];
46
47extern uint32 PRGmask2[32];
48extern uint32 PRGmask4[32];
49extern uint32 PRGmask8[32];
50extern uint32 PRGmask16[32];
51extern uint32 PRGmask32[32];
52
53extern uint32 CHRmask1[32];
54extern uint32 CHRmask2[32];
55extern uint32 CHRmask4[32];
56extern uint32 CHRmask8[32];
57
58void FASTAPASS(2) setprg2(uint32 A, uint32 V);
59void FASTAPASS(2) setprg4(uint32 A, uint32 V);
60void FASTAPASS(2) setprg8(uint32 A, uint32 V);
61void FASTAPASS(2) setprg16(uint32 A, uint32 V);
62void FASTAPASS(2) setprg32(uint32 A, uint32 V);
63
64void FASTAPASS(3) setprg2r(int r, unsigned int A, unsigned int V);
65void FASTAPASS(3) setprg4r(int r, unsigned int A, unsigned int V);
66void FASTAPASS(3) setprg8r(int r, unsigned int A, unsigned int V);
67void FASTAPASS(3) setprg16r(int r, unsigned int A, unsigned int V);
68void FASTAPASS(3) setprg32r(int r, unsigned int A, unsigned int V);
69
70void FASTAPASS(3) setchr1r(int r, unsigned int A, unsigned int V);
71void FASTAPASS(3) setchr2r(int r, unsigned int A, unsigned int V);
72void FASTAPASS(3) setchr4r(int r, unsigned int A, unsigned int V);
73void FASTAPASS(2) setchr8r(int r, unsigned int V);
74
75void FASTAPASS(2) setchr1(unsigned int A, unsigned int V);
76void FASTAPASS(2) setchr2(unsigned int A, unsigned int V);
77void FASTAPASS(2) setchr4(unsigned int A, unsigned int V);
d97315ac 78void FASTAPASS(1) setchr8(unsigned int V);
c62d2810 79
80void FASTAPASS(2) setvram4(uint32 A, uint8 *p);
81void FASTAPASS(1) setvram8(uint8 *p);
82
83void FASTAPASS(3) setvramb1(uint8 *p, uint32 A, uint32 b);
84void FASTAPASS(3) setvramb2(uint8 *p, uint32 A, uint32 b);
85void FASTAPASS(3) setvramb4(uint8 *p, uint32 A, uint32 b);
86void FASTAPASS(2) setvramb8(uint8 *p, uint32 b);
87
88void FASTAPASS(1) setmirror(int t);
89void setmirrorw(int a, int b, int c, int d);
90void FASTAPASS(3) setntamem(uint8 *p, int ram, uint32 b);
91
92#define MI_H 0
93#define MI_V 1
94#define MI_0 2
95#define MI_1 3
96
97extern int geniestage;
98
99void GeniePower(void);
100
101void OpenGenie(void);
102void CloseGenie(void);
d97315ac 103void FCEU_KillGenie(void);
b8da43fb 104void GenieSetPages(int restore);
d97315ac 105
106#endif // ndef _CART_H
107