1 #pragma once
2 
3 #include <memory>
4 #include "Types.h"
5 #include "../BiosDebugInfoProvider.h"
6 #include "zip/ZipArchiveWriter.h"
7 #include "zip/ZipArchiveReader.h"
8 #ifdef DEBUGGER_INCLUDED
9 #include "xml/Node.h"
10 #endif
11 
12 namespace Iop
13 {
14 	class CBiosBase : public CBiosDebugInfoProvider
15 	{
16 	public:
17 		virtual ~CBiosBase() = default;
18 		virtual void HandleException() = 0;
19 		virtual void HandleInterrupt() = 0;
20 		virtual void CountTicks(uint32) = 0;
21 
22 		virtual void NotifyVBlankStart() = 0;
23 		virtual void NotifyVBlankEnd() = 0;
24 
25 		virtual bool IsIdle() = 0;
26 
27 		virtual void SaveState(Framework::CZipArchiveWriter&) = 0;
28 		virtual void LoadState(Framework::CZipArchiveReader&) = 0;
29 
30 #ifdef DEBUGGER_INCLUDED
31 		virtual void SaveDebugTags(Framework::Xml::CNode*) = 0;
32 		virtual void LoadDebugTags(Framework::Xml::CNode*) = 0;
33 #endif
34 	};
35 
36 	typedef std::shared_ptr<CBiosBase> BiosBasePtr;
37 }
38