aboutsummaryrefslogtreecommitdiff
path: root/SrcShared/Patches/EmPatchIf.h
diff options
context:
space:
mode:
Diffstat (limited to 'SrcShared/Patches/EmPatchIf.h')
-rw-r--r--SrcShared/Patches/EmPatchIf.h150
1 files changed, 150 insertions, 0 deletions
diff --git a/SrcShared/Patches/EmPatchIf.h b/SrcShared/Patches/EmPatchIf.h
new file mode 100644
index 0000000..e6e1d41
--- /dev/null
+++ b/SrcShared/Patches/EmPatchIf.h
@@ -0,0 +1,150 @@
+/* -*- mode: C++; tab-width: 4 -*- */
+/* ===================================================================== *\
+ Copyright (c) 2001 PocketPyro, Inc.
+ 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 EmPatchIf_h
+#define EmPatchIf_h
+
+#include "EcmIf.h"
+
+
+enum
+{
+ kPatchErrNone,
+ kPatchErrNotImplemented,
+ kPatchErrInvalidIndex
+};
+
+
+enum CallROMType
+{
+ kExecuteROM,
+ kSkipROM
+};
+
+
+// Function types for head- and Tailpatch functions.
+
+typedef CallROMType (*HeadpatchProc)(void);
+typedef void (*TailpatchProc)(void);
+
+
+// ==============================================================================
+// * BEGIN IEmPatchLoader
+// ==============================================================================
+
+const EcmIfName kEmPatchLoaderIfn = "loader.patchmodule.i.ecm";
+
+ecm_interface IEmPatchLoader : ecm_extends IEcmComponent
+{
+ virtual Err InitializePL (void) = 0;
+ virtual Err ResetPL (void) = 0;
+ virtual Err DisposePL (void) = 0;
+
+ virtual Err ClearPL (void) = 0;
+ virtual Err LoadPL (void) = 0;
+
+ virtual Err LoadAllModules (void) = 0;
+ virtual Err LoadModule (const string& url) = 0;
+};
+
+// ==============================================================================
+// * END IEmPatchLoader
+// ==============================================================================
+
+
+
+// ==============================================================================
+// * BEGIN IEmPatchContainer
+// ==============================================================================
+
+const EcmIfName kEmPatchContainerIfn = "container.patchmodule.i.ecm";
+
+ecm_interface IEmPatchContainer : ecm_extends IEcmContainer
+{
+};
+
+
+// ==============================================================================
+// * END IEmPatchContainer
+// ==============================================================================
+
+
+
+// ==============================================================================
+// * BEGIN IEmPatchDllTempHacks
+// ==============================================================================
+
+const EcmIfName kEmPatchDllTempHacksIfn = "hacks.dll.patchmodule.i.ecm";
+
+ecm_interface IEmPatchDllTempHacks : ecm_extends IEcmComponent
+{
+ virtual Err GetGlobalMemBanks(void** membanksPP)=0;
+ virtual Err GetGlobalRegs(void** regsPP)=0;
+};
+
+// ==============================================================================
+// * END IEmPatchDllTempHacks
+// ==============================================================================
+
+
+
+
+// ===========================================================================
+// IEmPatchModule interface exposed by all patch modules.
+// this is how all patch modules appear to the patching sub-system
+// ===========================================================================
+
+const EcmIfName kEmPatchModuleIfn = "patchmodule.i.ecm";
+
+ecm_interface IEmPatchModule : ecm_extends IEcmComponent
+{
+ virtual Err Initialize(IEmPatchContainer &containerIP) = 0;
+ virtual Err Reset() = 0;
+ virtual Err Dispose() = 0;
+
+ virtual Err Clear () = 0;
+ virtual Err Load () = 0;
+
+ virtual const string &GetName() = 0;
+
+ virtual Err GetHeadpatch (uint16 index, HeadpatchProc &procP) = 0;
+ virtual Err GetTailpatch (uint16 index, TailpatchProc &procP) = 0;
+};
+
+
+
+
+// ===========================================================================
+// IEmPatchModuleMap interface supporting a collection of PatchModules
+// Basically there is one component which maintains the list of all
+// installed patch modules, and it is accessed using IEmPatchModuleMap
+// ===========================================================================
+
+const EcmIfName kEmPatchModuleMapIfn = "map.patchmodule.i.ecm";
+
+ecm_interface IEmPatchModuleMap : ecm_extends IEcmComponent
+{
+ virtual Err InitializeAll(IEmPatchContainer &containerI) = 0;
+ virtual Err ResetAll() = 0;
+ virtual Err DisposeAll() = 0;
+
+ virtual Err ClearAll () = 0;
+ virtual Err LoadAll () = 0;
+
+ virtual Err AddModule (IEmPatchModule *moduleIP) = 0;
+
+ virtual Err GetModuleByName (const string &nameStr, IEmPatchModule *& moduleIP) = 0;
+};
+
+#endif // EmPatchIf_h