Files
bananarchy/src/games/gambatte/src/mem/huc3.h
T

80 lines
1.9 KiB
C++
Raw Normal View History

//
// Copyright (C) 2007 by sinamas <sinamas at users.sourceforge.net>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 2 as
// published by the Free Software Foundation.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License version 2 for more details.
//
// You should have received a copy of the GNU General Public License
// version 2 along with this program; if not, write to the
// Free Software Foundation, Inc.,
// 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
//
#ifndef HuC3Chip_H
#define HuC3Chip_H
enum
{
HUC3_READ = 0,
HUC3_WRITE = 1,
HUC3_NONE = 2
};
#include <ctime>
#include <stdint.h>
namespace gambatte {
struct SaveState;
class HuC3Chip {
public:
HuC3Chip();
uint64_t baseTime() const { return baseTime_; }
void setBaseTime(uint64_t baseTime) { baseTime_ = baseTime; }
uint64_t& getBaseTime()
{
return baseTime_;
}
void saveState(SaveState &state) const;
void loadState(SaveState const &state);
void setRamflag(unsigned char ramflag) { ramflag_ = ramflag; irReceivingPulse_ = false; }
bool isHuC3() const { return enabled_; }
void set(bool enabled) {
enabled_ = enabled;
}
unsigned char read(unsigned p, unsigned long const cc);
void write(unsigned p, unsigned data);
private:
uint64_t baseTime_;
uint64_t haltTime_;
unsigned dataTime_;
unsigned writingTime_;
unsigned char ramValue_;
unsigned char shift_;
unsigned char ramflag_;
unsigned char modeflag_;
unsigned long irBaseCycle_;
bool enabled_;
bool halted_;
bool irReceivingPulse_;
void doLatch();
void updateTime();
};
}
#endif