release r2, update credits
[fceu.git] / cart.h
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
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
37 DECLFR(CartBROB);
38 DECLFR(CartBR);
39 DECLFW(CartBW);
40
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);
78 void FASTAPASS(1) setchr8(unsigned int V);
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);
103 void FCEU_KillGenie(void);
104 void GenieSetPages(int restore);
105
106 #endif // ndef _CART_H
107