Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
alexbevi
GitHub Repository: alexbevi/BizHawk
Path: blob/master/libmeteor/include/ameteor/eeprom.hpp
2 views
1
// Meteor - A Nintendo Gameboy Advance emulator
2
// Copyright (C) 2009-2011 Philippe Daouadi
3
//
4
// This program is free software: you can redistribute it and/or modify
5
// it under the terms of the GNU General Public License as published by
6
// the Free Software Foundation, either version 3 of the License, or
7
// (at your option) any later version.
8
//
9
// This program is distributed in the hope that it will be useful,
10
// but WITHOUT ANY WARRANTY; without even the implied warranty of
11
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
// GNU General Public License for more details.
13
//
14
// You should have received a copy of the GNU General Public License
15
// along with this program. If not, see <http://www.gnu.org/licenses/>.
16
17
#ifndef __EEPROM_H__
18
#define __EEPROM_H__
19
20
#include "cartmem.hpp"
21
#include <stdint.h>
22
#include <istream>
23
#include <ostream>
24
25
namespace AMeteor
26
{
27
class Eeprom : public CartMem
28
{
29
public :
30
Eeprom (bool big);
31
32
void Reset ();
33
34
uint16_t GetSize () const
35
{
36
return m_size;
37
}
38
39
bool Load (std::istream& f);
40
bool Save (std::ostream& f);
41
42
uint8_t Read (uint16_t add);
43
bool Write (uint16_t add, uint8_t val);
44
45
uint16_t Read ();
46
//bool Write (uint16_t val);
47
48
bool Write (uint16_t* data, uint16_t size);
49
//XXX
50
#if 0
51
void Read (uint16_t* pOut);
52
#endif
53
54
bool SaveState (std::ostream& stream);
55
bool LoadState (std::istream& stream);
56
57
private :
58
enum State
59
{
60
IDLE,
61
//WAITING,
62
63
//READ_ADD,
64
//READ_END,
65
READ_GARBAGE,
66
READ_DATA
67
68
/*WRITE_ADD,
69
WRITE_DATA,
70
WRITE_END*/
71
};
72
73
uint8_t m_state;
74
uint16_t m_add;
75
uint8_t m_pos;
76
};
77
}
78
79
#endif
80
81