summaryrefslogtreecommitdiffhomepage
path: root/dev
diff options
context:
space:
mode:
Diffstat (limited to 'dev')
-rw-r--r--dev/SIGG/Format.hxx (renamed from dev/SIGG/Drv.hxx)0
-rw-r--r--dev/ZBA/Sources/Thread.cxx2
-rw-r--r--dev/ZKA/Modules/CoreCG/Accessibility.hxx4
-rw-r--r--dev/ZKA/Modules/CoreCG/FbRenderer.hxx21
-rw-r--r--dev/ZKA/Modules/CoreCG/Lerp.hxx6
-rw-r--r--dev/ZKA/Modules/CoreCG/Rsrc/WndControls.rsrc28
-rw-r--r--dev/ZKA/Modules/CoreCG/TextRenderer.hxx8
-rw-r--r--dev/ZKA/Modules/CoreCG/WindowRenderer.hxx152
-rw-r--r--dev/ZKA/NewKit/Utils.hxx2
-rw-r--r--dev/ZKA/Sources/DLLMain.cxx22
-rw-r--r--dev/ZKA/Sources/KernelCheck.cxx2
-rw-r--r--dev/ZKA/Sources/ThreadScheduler.cxx2
-rw-r--r--dev/ZKA/Sources/Utils.cxx4
13 files changed, 238 insertions, 15 deletions
diff --git a/dev/SIGG/Drv.hxx b/dev/SIGG/Format.hxx
index e7d9f60b..e7d9f60b 100644
--- a/dev/SIGG/Drv.hxx
+++ b/dev/SIGG/Format.hxx
diff --git a/dev/ZBA/Sources/Thread.cxx b/dev/ZBA/Sources/Thread.cxx
index 610d45b8..aba6b03b 100644
--- a/dev/ZBA/Sources/Thread.cxx
+++ b/dev/ZBA/Sources/Thread.cxx
@@ -15,7 +15,7 @@
#include <CFKit/LoaderUtils.hxx>
#include <Modules/CoreCG/TextRenderer.hxx>
-#include <SIGG/Drv.hxx>
+#include <SIGG/Format.hxx>
EXTERN_C{
#include <string.h>
diff --git a/dev/ZKA/Modules/CoreCG/Accessibility.hxx b/dev/ZKA/Modules/CoreCG/Accessibility.hxx
index 3ba942dc..11fed494 100644
--- a/dev/ZKA/Modules/CoreCG/Accessibility.hxx
+++ b/dev/ZKA/Modules/CoreCG/Accessibility.hxx
@@ -13,8 +13,10 @@
#include <Modules/CoreCG/Lerp.hxx>
#include <ArchKit/ArchKit.hxx>
-namespace Kernel
+namespace CG
{
+ using namespace Kernel;
+
inline Bool cKTSyncCall = false;
inline float cDeviceWidthAlert = 150;
diff --git a/dev/ZKA/Modules/CoreCG/FbRenderer.hxx b/dev/ZKA/Modules/CoreCG/FbRenderer.hxx
index 06c27949..890dd1ee 100644
--- a/dev/ZKA/Modules/CoreCG/FbRenderer.hxx
+++ b/dev/ZKA/Modules/CoreCG/FbRenderer.hxx
@@ -67,13 +67,26 @@
/// @brief Draws inside a zone.
#define CGDrawInRegion(_Clr, _Height, _Width, BaseX, BaseY) \
\
- for (Kernel::SizeT x_base = BaseX; x_base < (_Width + BaseX); ++x_base) \
+ for (Kernel::SizeT x_base = BaseX; x_base < (_Width + BaseX); ++x_base) \
{ \
- for (Kernel::SizeT y_base = BaseY; y_base < (_Height + BaseY); ++y_base) \
+ for (Kernel::SizeT y_base = BaseY; y_base < (_Height + BaseY); ++y_base) \
{ \
*(((volatile Kernel::UInt32*)(kHandoverHeader->f_GOP.f_The + \
4 * kHandoverHeader->f_GOP.f_PixelPerLine * \
- x_base + \
- 4 * y_base))) = _Clr; \
+ x_base + \
+ 4 * y_base))) = _Clr; \
+ } \
+ }
+
+#define CGDrawInRegionA(_Clr, _Height, _Width, BaseX, BaseY) \
+ \
+ for (Kernel::SizeT x_base = BaseX; x_base < (_Width + BaseX); ++x_base) \
+ { \
+ for (Kernel::SizeT y_base = BaseY; y_base < (_Height + BaseY); ++y_base) \
+ { \
+ *(((volatile Kernel::UInt32*)(kHandoverHeader->f_GOP.f_The + \
+ 4 * kHandoverHeader->f_GOP.f_PixelPerLine * \
+ x_base + \
+ 4 * y_base))) |= _Clr; \
} \
}
diff --git a/dev/ZKA/Modules/CoreCG/Lerp.hxx b/dev/ZKA/Modules/CoreCG/Lerp.hxx
index 2b3addb1..ea2de1dd 100644
--- a/dev/ZKA/Modules/CoreCG/Lerp.hxx
+++ b/dev/ZKA/Modules/CoreCG/Lerp.hxx
@@ -9,14 +9,14 @@
/// @file Lerp.hxx
/// @brief Linear interpolation implementation.
-typedef float GXReal;
+typedef float CGReal;
/// @brief Linear interpolation equation solver.
/// @param from where?
/// @param to to?
/// @param at which state we're at **to**.
-inline GXReal GXLerp(GXReal to, GXReal from, GXReal stat)
+inline CGReal CGLerp(CGReal to, CGReal from, CGReal stat)
{
- GXReal difference = to - from;
+ CGReal difference = to - from;
return from + (difference * stat);
}
diff --git a/dev/ZKA/Modules/CoreCG/Rsrc/WndControls.rsrc b/dev/ZKA/Modules/CoreCG/Rsrc/WndControls.rsrc
new file mode 100644
index 00000000..f89815fb
--- /dev/null
+++ b/dev/ZKA/Modules/CoreCG/Rsrc/WndControls.rsrc
@@ -0,0 +1,28 @@
+#define FLATCONTROLS_HEIGHT 22
+#define FLATCONTROLS_WIDTH 116
+
+// array size is 7656
+static inline const unsigned int FlatControls[] = {
+ 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545,
+ 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545,
+ 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545,
+ 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545,
+ 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545,
+ 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545,
+ 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545,
+ 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xfe5151, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xfe5151, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545,
+ 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff5151, 0xfacdcd, 0xfe5d5d, 0xff4545, 0xff4545, 0xfe5d5d, 0xfacdcd, 0xfe5151, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545,
+ 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xfe5d5d, 0xfacdcd, 0xfe5d5d, 0xfe5d5d, 0xfacdcd, 0xfe5d5d, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545,
+ 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xfe5d5d, 0xfacdcd, 0xfacdcd, 0xfe5d5d, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545,
+ 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xfe5d5d, 0xfacdcd, 0xfacdcd, 0xfe5d5d, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545,
+ 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xfe5d5d, 0xfacdcd, 0xfe5d5d, 0xfe5d5d, 0xfacdcd, 0xfe5d5d, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545,
+ 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff5151, 0xfacdcd, 0xfe5d5d, 0xff4545, 0xff4545, 0xfe5d5d, 0xfacdcd, 0xfe5151, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545,
+ 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xfe5151, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xfe5151, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545,
+ 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545,
+ 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545,
+ 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545,
+ 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545,
+ 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545,
+ 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545,
+ 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xf3f3f3, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545, 0xff4545
+};
diff --git a/dev/ZKA/Modules/CoreCG/TextRenderer.hxx b/dev/ZKA/Modules/CoreCG/TextRenderer.hxx
index eada9b9f..086d0399 100644
--- a/dev/ZKA/Modules/CoreCG/TextRenderer.hxx
+++ b/dev/ZKA/Modules/CoreCG/TextRenderer.hxx
@@ -1,3 +1,9 @@
+/* -------------------------------------------
+
+ Copyright ZKA Technologies.
+
+------------------------------------------- */
+
#pragma once
#include <NewKit/Defines.hxx>
@@ -174,4 +180,4 @@ inline Kernel::Void cg_write_text(const Kernel::Char* text, Kernel::Int32 x_dst,
cg_render_text_font(&cFontBitmap[text[i]][0], x_dst, y_dst, color);
y_dst += FONT_SIZE_Y;
}
-} \ No newline at end of file
+}
diff --git a/dev/ZKA/Modules/CoreCG/WindowRenderer.hxx b/dev/ZKA/Modules/CoreCG/WindowRenderer.hxx
new file mode 100644
index 00000000..a1aadf8a
--- /dev/null
+++ b/dev/ZKA/Modules/CoreCG/WindowRenderer.hxx
@@ -0,0 +1,152 @@
+/* -------------------------------------------
+
+ Copyright ZKA Technologies.
+
+------------------------------------------- */
+
+#pragma once
+
+#include <Modules/CoreCG/Accessibility.hxx>
+#include <KernelKit/Heap.hxx>
+#include <KernelKit/ProcessScheduler.hxx>
+#include <KernelKit/LPC.hxx>
+#include <NewKit/Defines.hxx>
+#include <NewKit/Utils.hxx>
+#include <Modules/CoreCG/FbRenderer.hxx>
+#include <Modules/CoreCG/Rsrc/WndControls.rsrc>
+#include <Modules/CoreCG/TextRenderer.hxx>
+
+namespace CG
+{
+ using namespace Kernel;
+
+ enum
+ {
+ cWndFlagNoShow = 0x04,
+ };
+
+ struct CG_WINDOW
+ {
+ Int32 w_flags{0};
+ Char w_window_name[255]{0};
+ Char w_class_name[255]{0};
+ Int32 w_x{0};
+ Int32 w_y{0};
+ Int32 w_w{0};
+ Int32 w_h{0};
+ UInt32* display_ptr{nullptr};
+ Bool w_needs_repaint{false};
+ };
+
+ typedef struct CG_WINDOW CG_WINDOW;
+
+ inline struct CG_WINDOW* CGCreateWindow(Int32 flags, const Char* window_name, const Char* class_name, Int32 x, Int32 y, Int32 width, Int32 height)
+ {
+ const auto cMaxLimit = 214;
+
+ if (width < cMaxLimit ||
+ height < cMaxLimit)
+ {
+ ErrLocal() = kErrorInvalidData;
+ return nullptr;
+ }
+
+ CG_WINDOW* wnd = new CG_WINDOW();
+
+ if (!wnd)
+ {
+ ErrLocal() = kErrorHeapOutOfMemory;
+ return nullptr;
+ }
+
+ rt_copy_memory((VoidPtr)window_name, wnd->w_window_name, rt_string_len(window_name));
+ rt_copy_memory((VoidPtr)class_name, wnd->w_class_name, rt_string_len(class_name));
+
+ wnd->w_flags = flags;
+ wnd->w_x = x;
+ wnd->w_y = y;
+
+ wnd->w_w = width;
+ wnd->w_h = height;
+
+ wnd->display_ptr = new UInt32[width * height];
+ rt_set_memory(wnd->display_ptr, CGColor(0xF5, 0xF5, 0xF5), width * height);
+
+ return wnd;
+ }
+
+ inline bool CGDestroyWindow(struct CG_WINDOW* wnd)
+ {
+ if (wnd)
+ {
+ delete wnd;
+
+ if (!mm_is_valid_heap(wnd))
+ {
+ wnd = nullptr;
+ return true;
+ }
+
+ wnd = nullptr;
+ }
+
+ return false;
+ }
+
+ inline SizeT CGDrawWindowList(CG_WINDOW** wnd, SizeT wnd_cnt)
+ {
+ if (wnd_cnt == 0 ||
+ !wnd)
+ return 0;
+
+ SizeT cnt = 0;
+
+ for (SizeT index = 0; index < wnd_cnt; ++index)
+ {
+ if (!wnd[index] ||
+ wnd[index]->w_flags & cWndFlagNoShow ||
+ !wnd[index]->w_needs_repaint)
+ continue;
+
+ wnd[index]->w_needs_repaint = false;
+
+ if (UIAccessibilty::The().Width() < wnd[index]->w_x)
+ {
+ if ((wnd[index]->w_x - UIAccessibilty::The().Width()) > 1)
+ {
+ wnd[index]->w_x -= wnd[index]->w_x - UIAccessibilty::The().Width();
+ }
+ else
+ {
+ wnd[index]->w_x = 0;
+ }
+ }
+
+ if (UIAccessibilty::The().Height() < wnd[index]->w_y)
+ {
+ if ((wnd[index]->w_y - UIAccessibilty::The().Height()) > 1)
+ {
+ wnd[index]->w_y -= wnd[index]->w_y - UIAccessibilty::The().Width();
+ }
+ else
+ {
+ wnd[index]->w_y = 0;
+ }
+ }
+
+ ++cnt;
+
+ CGInit();
+
+ CGDrawBitMapInRegionA(wnd[index]->display_ptr, wnd[index]->w_h, wnd[index]->w_w, wnd[index]->w_y, wnd[index]->w_x);
+ CGDrawInRegion(CGColor(0xFF, 0xFF, 0xFF), wnd[index]->w_w, FLATCONTROLS_HEIGHT, wnd[index]->w_y, wnd[index]->w_x);
+ CGDrawBitMapInRegion(FlatControls, FLATCONTROLS_HEIGHT, FLATCONTROLS_WIDTH, wnd[index]->w_y, wnd[index]->w_x+wnd[index]->w_w-FLATCONTROLS_WIDTH);
+
+ cg_write_text(wnd[index]->w_window_name, wnd[index]->w_y + 8, wnd[index]->w_x + 8, CGColor(0x00, 0x00, 0x00));
+
+ CGFini();
+ }
+
+ return cnt;
+ }
+} // namespace CG
diff --git a/dev/ZKA/NewKit/Utils.hxx b/dev/ZKA/NewKit/Utils.hxx
index 38f44f70..05664a24 100644
--- a/dev/ZKA/NewKit/Utils.hxx
+++ b/dev/ZKA/NewKit/Utils.hxx
@@ -13,7 +13,7 @@ namespace Kernel
{
Int rt_copy_memory(const voidPtr src, voidPtr dst, Size len);
Int rt_move_memory(const voidPtr src, voidPtr dst, Size len);
- voidPtr rt_set_memory(voidPtr dst, Char val, Size len);
+ voidPtr rt_set_memory(voidPtr dst, UInt32 val, Size len);
void rt_zero_memory(voidPtr pointer, Size len);
Int rt_string_cmp(const Char* src, const Char* cmp, Size len);
const Char* alloc_string(const Char* text);
diff --git a/dev/ZKA/Sources/DLLMain.cxx b/dev/ZKA/Sources/DLLMain.cxx
index edfc804f..16e7a82a 100644
--- a/dev/ZKA/Sources/DLLMain.cxx
+++ b/dev/ZKA/Sources/DLLMain.cxx
@@ -23,6 +23,7 @@
#include <NewKit/Utils.hxx>
#include <KernelKit/CodeManager.hxx>
#include <CFKit/Property.hxx>
+#include <Modules/CoreCG/WindowRenderer.hxx>
EXTERN Kernel::Property cKernelVersion;
@@ -184,6 +185,27 @@ namespace Kernel::Detail
/// @return Void
EXTERN_C Kernel::Void KeMain(Kernel::Void)
{
+
+ CGInit();
+
+ CGDrawInRegion(CGColor(0x45, 0x00, 0x06), CG::UIAccessibilty::The().Height(), CG::UIAccessibilty::The().Width(),
+ 0, 0);
+
+ CGFini();
+
+ auto root_zka_wnd = CG::CGCreateWindow(0, "ZKA System", "Window", 0, 0, 512, 214);
+
+ root_zka_wnd->w_x = 10;
+ root_zka_wnd->w_y = 10;
+
+ root_zka_wnd->w_needs_repaint = Yes;
+
+ CG::CGDrawWindowList(&root_zka_wnd, 1);
+
/// Now run kernel loop, until no process are running.
Kernel::Detail::FilesystemInstaller(); // automatic filesystem creation.
+
+ while (Yes)
+ {
+ }
}
diff --git a/dev/ZKA/Sources/KernelCheck.cxx b/dev/ZKA/Sources/KernelCheck.cxx
index 7b919613..f046fe41 100644
--- a/dev/ZKA/Sources/KernelCheck.cxx
+++ b/dev/ZKA/Sources/KernelCheck.cxx
@@ -35,7 +35,7 @@ namespace Kernel
auto panicBack = RGB(0xff, 0x3a, 0x3a);
auto panicTxt = RGB(0xff, 0xff, 0xff);
- CGDrawInRegion(panicBack, UIAccessibilty::The().Height(), UIAccessibilty::The().Width(), 0, 0);
+ CGDrawInRegion(panicBack, CG::UIAccessibilty::The().Height(), CG::UIAccessibilty::The().Width(), 0, 0);
auto start_y = 10;
auto x = 10;
diff --git a/dev/ZKA/Sources/ThreadScheduler.cxx b/dev/ZKA/Sources/ThreadScheduler.cxx
index fe2a4782..a38ff9bc 100644
--- a/dev/ZKA/Sources/ThreadScheduler.cxx
+++ b/dev/ZKA/Sources/ThreadScheduler.cxx
@@ -28,7 +28,7 @@ namespace Kernel::Detail
UIntPtr fBSS;
UIntPtr fProcessHeader;
- // GX buffers.
+ // CG video buffer and it's size.
UIntPtr fTGB;
UIntPtr fTGBSize;
};
diff --git a/dev/ZKA/Sources/Utils.cxx b/dev/ZKA/Sources/Utils.cxx
index 1557ce7d..4a56df3b 100644
--- a/dev/ZKA/Sources/Utils.cxx
+++ b/dev/ZKA/Sources/Utils.cxx
@@ -62,12 +62,12 @@ namespace Kernel
return cnt;
}
- voidPtr rt_set_memory(voidPtr src, char value, Size len)
+ voidPtr rt_set_memory(voidPtr src, UInt32 value, Size len)
{
if (!src || len < 1)
return nullptr;
- char* start = reinterpret_cast<Char*>(src);
+ UInt32* start = reinterpret_cast<UInt32*>(src);
while (len)
{