d97315ac |
1 | #ifndef _CART_H |
2 | #define _CART_H |
3 | |
4 | typedef 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 | |
27 | void FCEU_SaveGameSave(CartInfo *LocalHWInfo); |
28 | void FCEU_LoadGameSave(CartInfo *LocalHWInfo); |
29 | |
c62d2810 |
30 | extern uint8 *Page[32],*VPage[8],*MMC5SPRVPage[8],*MMC5BGVPage[8]; |
31 | |
32 | void ResetCartMapping(void); |
33 | void SetupCartPRGMapping(int chip, uint8 *p, uint32 size, int ram); |
34 | void SetupCartCHRMapping(int chip, uint8 *p, uint32 size, int ram); |
35 | void SetupCartMirroring(int m, int hard, uint8 *extra); |
36 | |
d97315ac |
37 | DECLFR(CartBROB); |
c62d2810 |
38 | DECLFR(CartBR); |
d97315ac |
39 | DECLFW(CartBW); |
937bf65b |
40 | |
c62d2810 |
41 | extern uint8 *PRGptr[32]; |
42 | extern uint8 *CHRptr[32]; |
43 | |
44 | extern uint32 PRGsize[32]; |
45 | extern uint32 CHRsize[32]; |
46 | |
47 | extern uint32 PRGmask2[32]; |
48 | extern uint32 PRGmask4[32]; |
49 | extern uint32 PRGmask8[32]; |
50 | extern uint32 PRGmask16[32]; |
51 | extern uint32 PRGmask32[32]; |
52 | |
53 | extern uint32 CHRmask1[32]; |
54 | extern uint32 CHRmask2[32]; |
55 | extern uint32 CHRmask4[32]; |
56 | extern uint32 CHRmask8[32]; |
57 | |
58 | void FASTAPASS(2) setprg2(uint32 A, uint32 V); |
59 | void FASTAPASS(2) setprg4(uint32 A, uint32 V); |
60 | void FASTAPASS(2) setprg8(uint32 A, uint32 V); |
61 | void FASTAPASS(2) setprg16(uint32 A, uint32 V); |
62 | void FASTAPASS(2) setprg32(uint32 A, uint32 V); |
63 | |
64 | void FASTAPASS(3) setprg2r(int r, unsigned int A, unsigned int V); |
65 | void FASTAPASS(3) setprg4r(int r, unsigned int A, unsigned int V); |
66 | void FASTAPASS(3) setprg8r(int r, unsigned int A, unsigned int V); |
67 | void FASTAPASS(3) setprg16r(int r, unsigned int A, unsigned int V); |
68 | void FASTAPASS(3) setprg32r(int r, unsigned int A, unsigned int V); |
69 | |
70 | void FASTAPASS(3) setchr1r(int r, unsigned int A, unsigned int V); |
71 | void FASTAPASS(3) setchr2r(int r, unsigned int A, unsigned int V); |
72 | void FASTAPASS(3) setchr4r(int r, unsigned int A, unsigned int V); |
73 | void FASTAPASS(2) setchr8r(int r, unsigned int V); |
74 | |
75 | void FASTAPASS(2) setchr1(unsigned int A, unsigned int V); |
76 | void FASTAPASS(2) setchr2(unsigned int A, unsigned int V); |
77 | void FASTAPASS(2) setchr4(unsigned int A, unsigned int V); |
d97315ac |
78 | void FASTAPASS(1) setchr8(unsigned int V); |
c62d2810 |
79 | |
80 | void FASTAPASS(2) setvram4(uint32 A, uint8 *p); |
81 | void FASTAPASS(1) setvram8(uint8 *p); |
82 | |
83 | void FASTAPASS(3) setvramb1(uint8 *p, uint32 A, uint32 b); |
84 | void FASTAPASS(3) setvramb2(uint8 *p, uint32 A, uint32 b); |
85 | void FASTAPASS(3) setvramb4(uint8 *p, uint32 A, uint32 b); |
86 | void FASTAPASS(2) setvramb8(uint8 *p, uint32 b); |
87 | |
88 | void FASTAPASS(1) setmirror(int t); |
89 | void setmirrorw(int a, int b, int c, int d); |
90 | void 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 | |
97 | extern int geniestage; |
98 | |
99 | void GeniePower(void); |
100 | |
101 | void OpenGenie(void); |
102 | void CloseGenie(void); |
d97315ac |
103 | void FCEU_KillGenie(void); |
b8da43fb |
104 | void GenieSetPages(int restore); |
d97315ac |
105 | |
106 | #endif // ndef _CART_H |
107 | |