diff options
Diffstat (limited to 'SrcShared/Hardware/EmRegsSED1376.h')
-rw-r--r-- | SrcShared/Hardware/EmRegsSED1376.h | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/SrcShared/Hardware/EmRegsSED1376.h b/SrcShared/Hardware/EmRegsSED1376.h new file mode 100644 index 0000000..62a1c56 --- /dev/null +++ b/SrcShared/Hardware/EmRegsSED1376.h @@ -0,0 +1,106 @@ +/* -*- mode: C++; tab-width: 4 -*- */ +/* ===================================================================== *\ + Copyright (c) 2000-2001 Palm, Inc. or its subsidiaries. + All rights reserved. + + This file is part of the Palm OS Emulator. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. +\* ===================================================================== */ + +#ifndef EmRegsSED1376_h +#define EmRegsSED1376_h + +#include "EmHAL.h" // EmHALHandler +#include "EmPalmStructs.h" +#include "EmRegs.h" +#include "EmStructs.h" // RGBList + +class SessionFile; +class EmScreenUpdateInfo; + + +#define sed1376RegsAddr (0x1FF80000) +#define sed1376VideoMemStart (0x1FFA0000) +#define sed1376VideoMemSize (80 * 1024L) + + +class EmRegsSED1376 : public EmRegs, public EmHALHandler +{ + public: + EmRegsSED1376 (emuptr baseRegsAddr, + emuptr baseVideoAddr); + virtual ~EmRegsSED1376 (void); + + // EmRegs overrides + virtual void Initialize (void); + virtual void Reset (Bool hardwareReset); + virtual void Save (SessionFile&); + virtual void Load (SessionFile&); + virtual void Dispose (void); + + virtual void SetSubBankHandlers (void); + virtual uint8* GetRealAddress (emuptr address); + virtual emuptr GetAddressStart (void); + virtual uint32 GetAddressRange (void); + + // EmHAL overrides + virtual Bool GetLCDScreenOn (void); + virtual Bool GetLCDBacklightOn (void); + virtual Bool GetLCDHasFrame (void); + virtual void GetLCDBeginEnd (emuptr& begin, emuptr& end) = 0; + virtual void GetLCDScanlines (EmScreenUpdateInfo& info) = 0; + + private: + uint32 powerSaveConfigurationRead (emuptr address, int size); + + void invalidateWrite (emuptr address, int size, uint32 value); + void lutWriteAddressWrite (emuptr address, int size, uint32 value); + void lutReadAddressWrite (emuptr address, int size, uint32 value); + + protected: + void PrvGetPalette (RGBList& thePalette); + + protected: + emuptr fBaseRegsAddr; + emuptr fBaseVideoAddr; + EmProxySED1376RegsType fRegs; + RGBType fClutData[256]; +}; + + +class EmRegsSED1376VisorPrism : public EmRegsSED1376 +{ + public: + EmRegsSED1376VisorPrism (emuptr baseRegsAddr, + emuptr baseVideoAddr); + virtual ~EmRegsSED1376VisorPrism (void); + + virtual void SetSubBankHandlers (void); + + virtual void GetLCDBeginEnd (emuptr& begin, emuptr& end); + virtual void GetLCDScanlines (EmScreenUpdateInfo& info); + + private: + void reservedWrite (emuptr address, int size, uint32 value); + + private: + int32 PrvGetLCDDepth (void); +}; + + +class EmRegsSED1376PalmGeneric : public EmRegsSED1376 +{ + public: + EmRegsSED1376PalmGeneric (emuptr baseRegsAddr, + emuptr baseVideoAddr); + virtual ~EmRegsSED1376PalmGeneric (void); + + virtual void GetLCDBeginEnd (emuptr& begin, emuptr& end); + virtual void GetLCDScanlines (EmScreenUpdateInfo& info); +}; + +#endif /* EmRegsSED1376_h */ |