From 199641f46f9c7ac5ab21c91117e0e82fb2c12082 Mon Sep 17 00:00:00 2001 From: GPF Date: Sun, 13 Oct 2024 18:49:17 -0700 Subject: [PATCH] added Dreamcast specific texture formats to convert_format in the opengl hardware render driver for use with GLdc with new glTexSubImage2D function. Added 50hz/60hz selector from SDL 1.2, added more video framebuffer screen formats. --- src/render/opengl/SDL_render_gl.c | 23 + src/video/dreamcast/60hz.h | 807 ++++++++++++++++++ src/video/dreamcast/SDL_dreamcastopengl.c | 19 +- src/video/dreamcast/SDL_dreamcastvideo.c | 199 ++++- test/dreamcast/test/nehe06/nehe06.c | 8 +- test/dreamcast/test/sdlanimation/Makefile.dc | 2 +- .../test/textureGLrender/Makefile.dc | 29 + .../test/textureGLrender/romdisk/Troy2024.bmp | Bin 0 -> 196662 bytes test/dreamcast/test/textureGLrender/texture.c | 200 +++++ 9 files changed, 1265 insertions(+), 22 deletions(-) create mode 100644 src/video/dreamcast/60hz.h create mode 100644 test/dreamcast/test/textureGLrender/Makefile.dc create mode 100644 test/dreamcast/test/textureGLrender/romdisk/Troy2024.bmp create mode 100644 test/dreamcast/test/textureGLrender/texture.c diff --git a/src/render/opengl/SDL_render_gl.c b/src/render/opengl/SDL_render_gl.c index b1279a1066c79..4f6021e59f482 100644 --- a/src/render/opengl/SDL_render_gl.c +++ b/src/render/opengl/SDL_render_gl.c @@ -412,12 +412,35 @@ convert_format(GL_RenderData *renderdata, Uint32 pixel_format, GLint *internalFormat, GLenum *format, GLenum *type) { switch (pixel_format) { +#ifdef __DREAMCAST__ + case SDL_PIXELFORMAT_RGB888: + *internalFormat = GL_RGB; + *format = GL_RGB; + *type = GL_UNSIGNED_BYTE; // Dreamcast-specific handling for RGB888 + break; + case SDL_PIXELFORMAT_RGB565: + *internalFormat = GL_RGB; + *format = GL_RGB; + *type = GL_UNSIGNED_SHORT_5_6_5; // Dreamcast-specific handling for RGB565 + break; + case SDL_PIXELFORMAT_ARGB1555: + *internalFormat = GL_RGBA; + *format = GL_RGBA; + *type = GL_UNSIGNED_SHORT_5_5_5_1; // Dreamcast-specific handling for ARGB1555 + break; + case SDL_PIXELFORMAT_ARGB8888: + *internalFormat = GL_RGBA; + *format = GL_RGBA; + *type = GL_UNSIGNED_BYTE; // Dreamcast-specific handling for ARGB8888 + break; +#else case SDL_PIXELFORMAT_ARGB8888: case SDL_PIXELFORMAT_RGB888: *internalFormat = GL_RGBA8; *format = GL_BGRA; *type = GL_UNSIGNED_INT_8_8_8_8_REV; break; +#endif case SDL_PIXELFORMAT_ABGR8888: case SDL_PIXELFORMAT_BGR888: *internalFormat = GL_RGBA8; diff --git a/src/video/dreamcast/60hz.h b/src/video/dreamcast/60hz.h new file mode 100644 index 0000000000000..835f7cca7acad --- /dev/null +++ b/src/video/dreamcast/60hz.h @@ -0,0 +1,807 @@ +#define ASK_60HZ_WIDTH 96 +#define ASK_60HZ_HEIGHT 60 + +static unsigned short __ask_60hz__[96*60]= + { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x864, 0x18CA, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x18C9, 0x843, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x843, 0x18C9, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x18EB, 0x18C8, 0x842, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x22, 0x10A8, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x18EB, 0x10A7, 0x1, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x1085, 0x18EB, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x18EB, 0x864, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x21, + 0x18C8, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x18EB, 0x10A7, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x842, 0x18EA, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x18C9, 0x21, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x843, 0x18EB, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x18EB, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x844, 0x18EB, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x18EA, 0x843, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x843, 0x18EB, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x18EA, 0x22, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x843, 0x18EB, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x18EB, 0x21, 0x0, 0x0, + 0x0, 0x21, 0x18EA, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x18C9, 0x0, 0x0, + 0x0, 0x10A8, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x1087, 0x0, + 0x865, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x18EB, 0x843, + 0x18EB, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x18EA, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x52B1, + 0x52B1, 0x5290, 0x420F, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x422F, 0x212C, 0x4A70, 0x318D, 0x210C, 0x210C, 0x210C, 0x39CE, + 0x4A70, 0x296D, 0x39CE, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x212C, 0x73B4, 0xA518, 0x6312, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0xF79F, + 0xDEDD, 0xD6BD, 0xDEFE, 0x9CF7, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0xBDFA, 0x210C, 0x9CD7, 0xB5BA, 0x294C, 0x210C, 0x296D, 0xCE5C, + 0x8435, 0x52B1, 0x8C56, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x6312, 0xDEDD, 0x8C56, 0x52B1, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0xF79F, + 0x39CE, 0x210C, 0x4A70, 0xDEFE, 0x422F, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0xBDFA, 0x210C, 0x296D, 0xD69D, 0x7BF5, 0x210C, 0x9CD7, 0xBDFB, + 0x294C, 0x52B1, 0x8C56, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x8435, 0xA538, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0xF79F, + 0x39CE, 0x210C, 0x294D, 0xDEDD, 0x4A70, 0xA518, 0xA538, 0xBDFB, + 0xEF7F, 0x422F, 0x9CD7, 0xE73E, 0xE73F, 0xA538, 0x294D, 0x212C, + 0x9496, 0xE73E, 0xEF5F, 0xC63B, 0x210C, 0x212C, 0x9496, 0xE73E, + 0xEF5F, 0xC63B, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x94B7, 0x210C, 0x210C, 0x5290, 0xDEFE, 0x8435, 0xDEFE, 0x420F, + 0x210C, 0x422F, 0x6B73, 0x210C, 0x210C, 0x210C, 0x210C, 0xA518, + 0xF79F, 0xF79F, 0xF79F, 0x39CE, 0x212C, 0x9CD7, 0xE71E, 0xEF5F, + 0xA538, 0x318D, 0x210C, 0xA518, 0xA538, 0xBDFB, 0xEF7F, 0x39CE, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0xF79F, + 0x94B7, 0x8C56, 0xBDDA, 0xCE7C, 0x296D, 0xA518, 0xDEDD, 0x6312, + 0x39CE, 0x8C76, 0xB5BA, 0x4A4F, 0x4A4F, 0xBDDA, 0x8C56, 0x31AE, + 0xEF5F, 0x7394, 0x420F, 0x6312, 0x210C, 0x31AE, 0xEF5F, 0x7394, + 0x420F, 0x6312, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x8C76, 0xEF7F, 0x7393, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x318D, + 0x94B7, 0xAD79, 0x39CE, 0x210C, 0x7BD4, 0xD69C, 0x52B1, 0x4A50, + 0xC63B, 0x94B7, 0x210C, 0xA518, 0xDEDD, 0x6312, 0x39CE, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0xF79F, + 0xAD79, 0xA518, 0x8435, 0x39EE, 0x210C, 0xA518, 0x94B7, 0x210C, + 0x210C, 0xCE5C, 0xCE7C, 0xBDDA, 0xBDFA, 0xD69C, 0xB5BA, 0x212C, + 0xA518, 0xEF5F, 0xA518, 0x422F, 0x210C, 0x212C, 0xA518, 0xEF5F, + 0xA518, 0x422F, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x39EE, 0xF79F, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x8C55, 0xA518, 0x210C, 0x210C, 0xB59A, 0x7BF4, 0x210C, 0x210C, + 0x6332, 0xCE7C, 0x210C, 0xA518, 0x94B7, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0xF79F, + 0x39CE, 0x210C, 0x210C, 0x210C, 0x210C, 0xA518, 0x8C56, 0x210C, + 0x210C, 0xCE7C, 0x9CD7, 0x6B73, 0x6B73, 0x6B73, 0x5AD1, 0x210C, + 0x210C, 0x294D, 0x5AF2, 0xDEDD, 0x4A4F, 0x210C, 0x210C, 0x294D, + 0x5AF2, 0xDEDD, 0x4A4F, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x39CE, 0xF79F, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x8C56, 0xA518, 0x210C, 0x210C, 0xB59A, 0x7BF4, 0x210C, 0x210C, + 0x6332, 0xCE7C, 0x210C, 0xA518, 0x8C56, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0xF79F, + 0x39CE, 0x210C, 0x210C, 0x210C, 0x210C, 0xA518, 0x8C56, 0x210C, + 0x210C, 0x9496, 0xC61B, 0x5290, 0x39EF, 0x6B73, 0x5AD1, 0x318D, + 0x8C56, 0x420F, 0x5290, 0xD6BD, 0x6312, 0x318D, 0x8C56, 0x420F, + 0x5290, 0xD6BD, 0x6312, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x39CE, 0xF79F, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x8C56, 0xA518, 0x210C, 0x210C, 0x7BD4, 0xD69C, 0x52B1, 0x4A50, + 0xC63B, 0x94B7, 0x210C, 0xA518, 0x8C56, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0xF79F, + 0x39CE, 0x210C, 0x210C, 0x210C, 0x210C, 0xA518, 0x8C56, 0x210C, + 0x210C, 0x296D, 0x9CD7, 0xE71E, 0xEF5F, 0xB5BA, 0x39EE, 0x294C, + 0x9CD7, 0xE73E, 0xE73E, 0xA538, 0x294C, 0x294C, 0x9CD7, 0xE73E, + 0xE73E, 0xA538, 0x294C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x39CE, 0xF79F, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x8C56, 0xA518, 0x210C, 0x210C, 0x212C, 0x9CD7, 0xE73E, 0xEF5F, + 0xA538, 0x318D, 0x210C, 0xA518, 0x8C56, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x422F, 0xB5BA, 0xEF5F, 0xE71E, 0x8415, 0x210C, + 0x210C, 0x5AF1, 0xD6BD, 0xEF5F, 0xB5BA, 0x318D, 0x210C, 0x210C, + 0xF79F, 0x39CE, 0x210C, 0x210C, 0x210C, 0xBDFA, 0x6B73, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x318D, 0xCE7C, 0x9CF8, 0x420F, 0x4A4F, 0x5290, 0x210C, + 0x31AE, 0xDEDD, 0x73B4, 0x422F, 0xB59A, 0xA518, 0x210C, 0x210C, + 0xF79F, 0x39CE, 0x210C, 0x210C, 0x210C, 0xBDFA, 0x6B73, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x7393, 0xCE5C, 0x212C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x6332, 0xCE5C, 0x210C, 0x210C, 0x4A4F, 0xDEDD, 0x296D, 0x210C, + 0xF79F, 0x39CE, 0x210C, 0x210C, 0x210C, 0xBDFA, 0x6B73, 0x318D, + 0xBDFA, 0xBDFA, 0xBDFA, 0xBDFA, 0x94B7, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x9CD7, 0xAD79, 0xBDFA, 0xEF5F, 0xBDFB, 0x422F, 0x210C, + 0x8415, 0xA538, 0x210C, 0x210C, 0x212C, 0xEF7F, 0x39CE, 0x210C, + 0xF79F, 0xAD79, 0xA518, 0xA518, 0xA518, 0xDEFE, 0x6B73, 0x294C, + 0x6B73, 0x6B73, 0x8435, 0xEF5F, 0x73B4, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x9CF8, 0xD69C, 0x5AD1, 0x422F, 0xA538, 0xBDFB, 0x210C, + 0x8435, 0xA538, 0x210C, 0x210C, 0x212C, 0xEF7F, 0x39CE, 0x210C, + 0xF79F, 0x94B7, 0x8C56, 0x8C56, 0x8C56, 0xD6BD, 0x6B73, 0x210C, + 0x210C, 0x294D, 0xBDDA, 0xAD59, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x8C56, 0x8C76, 0x210C, 0x210C, 0x420F, 0xEF5F, 0x210C, + 0x7393, 0xBDFB, 0x210C, 0x210C, 0x39CE, 0xE71E, 0x318D, 0x210C, + 0xF79F, 0x39CE, 0x210C, 0x210C, 0x210C, 0xBDFA, 0x6B73, 0x210C, + 0x210C, 0x9CD7, 0xCE7C, 0x318D, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x5290, 0xBDDA, 0x31AD, 0x212C, 0x8415, 0xD69C, 0x210C, + 0x420F, 0xE73E, 0x4A70, 0x212C, 0x9497, 0xB5BA, 0x210C, 0x210C, + 0xF79F, 0x39CE, 0x210C, 0x210C, 0x210C, 0xBDFA, 0x6B73, 0x210C, + 0x73B4, 0xE71E, 0x4A4F, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x94B7, 0xD6BD, 0xD6BD, 0xD6BD, 0x5AF1, 0x210C, + 0x210C, 0x8435, 0xDEFE, 0xDEDD, 0xD6BD, 0x4A4F, 0x210C, 0x210C, + 0xF79F, 0x39CE, 0x210C, 0x210C, 0x210C, 0xBDFA, 0x6B73, 0x31AE, + 0xE73E, 0xEF5F, 0xD6BD, 0xD6BD, 0xAD59, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x420F, 0x5290, 0x318D, 0x210C, 0x210C, + 0x210C, 0x210C, 0x420F, 0x5290, 0x318D, 0x210C, 0x210C, 0x210C, + 0x52B1, 0x212C, 0x210C, 0x210C, 0x210C, 0x422F, 0x31AD, 0x212C, + 0x52B1, 0x52B1, 0x52B1, 0x52B1, 0x422F, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x18EA, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x18EA, + 0x843, 0x18EB, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x18EB, 0x843, + 0x0, 0x1087, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x1087, 0x0, + 0x0, 0x0, 0x18C9, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x18C9, 0x0, 0x0, + 0x0, 0x0, 0x21, 0x18EB, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x18EB, 0x21, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x22, 0x18EA, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x18EA, 0x22, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x843, 0x18EA, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x18EA, 0x843, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x18EB, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x18EB, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x21, 0x18C9, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x18C9, 0x21, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x10A7, 0x18EB, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x18EB, 0x10A7, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x864, 0x18EB, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x18EB, 0x864, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x1, 0x10A7, 0x18EB, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x18EB, 0x10A7, 0x1, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x842, 0x18C8, 0x18EB, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x18EB, 0x18C8, 0x842, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x843, 0x18C9, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, 0x210C, + 0x18C9, 0x843, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + }; + +static void __ask_60hz_fade16(unsigned short n) +{ + int i,j; + unsigned short rs=0xB; + unsigned short gs=0x5; + unsigned short bs=0x0; + unsigned short rm=0xF800; + unsigned short gm=0x07E0; + unsigned short bm=0x1F; + unsigned short * buff=(unsigned short*)((unsigned)vram_l+(640-96/2)+(640*2*((480-60)/2))); + for(j=0;j<60;j++) + for(i=0;i<96;i++) + { + register unsigned short r=(__ask_60hz__[i+j*96]&rm)>>rs; + register unsigned short g=(__ask_60hz__[i+j*96]&gm)>>gs; + register unsigned short b=(__ask_60hz__[i+j*96]&bm)>>bs; + if (r>n) + r-=n; + else + r=0; + if (g>n) + g-=n; + else + g=0; + if (b>n) + b-=n; + else + b=0; + buff[i+j*640]=((r<info.functions & MAPLE_FUNC_CONTROLLER) { + cond = (cont_state_t *)maple_dev_status(dev); + m=maple_addr(p,u); + } + } + } + + if (cond){ + for(i=0;i<500;i++) + { + if (cond->buttons & CONT_Y) return !sdl_dc_default_60hz; + timer_spin_sleep(10); + } + } + + return sdl_dc_default_60hz; +} + +static int sdl_dc_ask_60hz() +{ + static int ret=0x12345; + int i; + if (sdl_dc_no_ask_60hz) + return sdl_dc_default_60hz; + if (ret!=0x12345) + return ret; + for(i=128;i>=0;i--) + __ask_60hz_fade16(i); + + ret=__ask_60hz_wait(); + + for(i=0;i<=128;i++) + __ask_60hz_fade16(i); + return ret; +} diff --git a/src/video/dreamcast/SDL_dreamcastopengl.c b/src/video/dreamcast/SDL_dreamcastopengl.c index ed65870f1578c..1bc406eca3121 100644 --- a/src/video/dreamcast/SDL_dreamcastopengl.c +++ b/src/video/dreamcast/SDL_dreamcastopengl.c @@ -23,7 +23,9 @@ #include "SDL_dreamcastopengl.h" #include "SDL_video.h" + #if defined(SDL_VIDEO_DRIVER_DREAMCAST) && defined(SDL_VIDEO_OPENGL) +#include #include "GL/gl.h" #include "GL/glu.h" #include "GL/glkos.h" @@ -186,6 +188,8 @@ int DREAMCAST_GL_Initialize(_THIS) { if (DREAMCAST_GL_LoadLibrary(_this, NULL) < 0) { return -1; } + + // vid_set_mode(DM_640x480_VGA, PM_RGB888); return 0; } @@ -212,17 +216,18 @@ SDL_GLContext DREAMCAST_GL_CreateContext(_THIS, SDL_Window *window) { } // Store the GL attributes in the context - context->red_size = _this->gl_config.red_size; - context->green_size = _this->gl_config.green_size; - context->blue_size = _this->gl_config.blue_size; - context->alpha_size = _this->gl_config.alpha_size; - context->depth_size = _this->gl_config.depth_size; - context->stencil_size = _this->gl_config.stencil_size; - context->double_buffer = _this->gl_config.double_buffer; + // context->red_size = 5; // You can still set these if you want to keep them in context + // context->green_size = 6; + // context->blue_size = 5; + // context->alpha_size = 0; + // context->depth_size = 32; + // context->stencil_size = 8; + // context->double_buffer = 1; return (SDL_GLContext) context; } + int DREAMCAST_GL_MakeCurrent(_THIS, SDL_Window *window, SDL_GLContext context) { DreamcastGLContext *glcontext = (DreamcastGLContext *) context; diff --git a/src/video/dreamcast/SDL_dreamcastvideo.c b/src/video/dreamcast/SDL_dreamcastvideo.c index 13dabedebce8e..c34c8d3615db1 100644 --- a/src/video/dreamcast/SDL_dreamcastvideo.c +++ b/src/video/dreamcast/SDL_dreamcastvideo.c @@ -53,11 +53,25 @@ #define DREAMCASTVID_DRIVER_EVDEV_NAME "dcevdev" #include "SDL_dreamcastopengl.h" +//Custom code for 60Hz +static int sdl_dc_no_ask_60hz=0; +static int sdl_dc_default_60hz=0; +#include "60hz.h" +void SDL_DC_ShowAskHz(SDL_bool value) +{ + sdl_dc_no_ask_60hz=!value; +} + +void SDL_DC_Default60Hz(SDL_bool value) +{ + sdl_dc_default_60hz=value; +} /* Initialization/Query functions */ static int DREAMCAST_VideoInit(_THIS); static void DREAMCAST_VideoQuit(_THIS); - +void DREAMCAST_GetDisplayModes(_THIS, SDL_VideoDisplay *display); +int DREAMCAST_SetDisplayMode(_THIS, SDL_VideoDisplay *display, SDL_DisplayMode *mode); #ifdef SDL_INPUT_LINUXEV static int evdev = 0; static void DREAMCAST_EVDEV_Poll(_THIS); @@ -108,6 +122,8 @@ static SDL_VideoDevice *DREAMCAST_CreateDevice(void) device->VideoInit = DREAMCAST_VideoInit; device->VideoQuit = DREAMCAST_VideoQuit; device->PumpEvents = DREAMCAST_PumpEvents; + device->GetDisplayModes = DREAMCAST_GetDisplayModes; + device->SetDisplayMode = DREAMCAST_SetDisplayMode; #ifdef SDL_INPUT_LINUXEV if (evdev) { device->PumpEvents = DREAMCAST_EVDEV_Poll; @@ -152,32 +168,189 @@ static void DREAMCAST_EVDEV_Poll(_THIS) SDL_EVDEV_Poll(); } #endif - -int DREAMCAST_VideoInit(_THIS) -{ +int __sdl_dc_is_60hz=0; +int DREAMCAST_VideoInit(_THIS) { SDL_VideoDisplay display; SDL_DisplayMode current_mode; + int disp_mode; + int pixel_mode; + int width = 640, height = 480; // Default to 640x480, modify based on requirements + int bpp = 32; // Bits per pixel + Uint32 Rmask, Gmask, Bmask; SDL_zero(current_mode); - current_mode.w = 640; - current_mode.h = 480; - current_mode.refresh_rate = 60; + // Determine if we are in 60Hz or 50Hz mode based on cable type and region + if (!vid_check_cable()) { + __sdl_dc_is_60hz = 1; // 60Hz for VGA + if (width == 320 && height == 240) disp_mode = DM_320x240_VGA; + else if (width == 640 && height == 480) disp_mode = DM_640x480_VGA; + else if (width == 768 && height == 480) disp_mode = DM_768x480_PAL_IL; + else { + SDL_SetError("Couldn't find requested mode in list"); + return -1; + } + } else if (flashrom_get_region() != FLASHROM_REGION_US && !sdl_dc_ask_60hz()) { + __sdl_dc_is_60hz = 0; + if (width == 320 && height == 240) disp_mode = DM_320x240_PAL; + else if (width == 640 && height == 480) disp_mode = DM_640x480_PAL_IL; + else { + SDL_SetError("Couldn't find requested mode in list"); + return -1; + } + } else { + __sdl_dc_is_60hz = 1; // Default to 60Hz + if (width == 320 && height == 240) disp_mode = DM_320x240; + else if (width == 640 && height == 480) disp_mode = DM_640x480; + else if (width == 768 && height == 480) disp_mode = DM_768x480; + else { + SDL_SetError("Couldn't find requested mode in list"); + return -1; + } + } + + // Set pixel mode based on bpp + switch (bpp) { + case 15: // ARGB1555 + pixel_mode = PM_RGB555; + Rmask = 0x00007C00; // 5 bits for Red + Gmask = 0x000003E0; // 5 bits for Green + Bmask = 0x0000001F; // 5 bits for Blue + current_mode.format = SDL_PIXELFORMAT_ARGB1555; // Set the correct format + break; + case 16: // RGB565 + pixel_mode = PM_RGB565; + Rmask = 0x0000F800; + Gmask = 0x000007E0; + Bmask = 0x0000001F; + current_mode.format = SDL_PIXELFORMAT_RGB565; // Set the correct format + break; + case 24: // RGB888 + case 32: // ARGB8888 + pixel_mode = PM_RGB888; + Rmask = 0x00FF0000; + Gmask = 0x0000FF00; + Bmask = 0x000000FF; + current_mode.format = SDL_PIXELFORMAT_RGB888; // Set the correct format + break; + default: + SDL_SetError("Unsupported pixel format"); + return -1; + } - /* 32 bpp for default */ - current_mode.format = SDL_PIXELFORMAT_RGB888; + // Initialize other properties of current_mode as needed + current_mode.w = width; + current_mode.h = height; + current_mode.refresh_rate = (__sdl_dc_is_60hz) ? 60 : 50; // Set refresh rate based on __sdl_dc_is_60hz current_mode.driverdata = NULL; SDL_zero(display); display.desktop_mode = current_mode; display.current_mode = current_mode; display.driverdata = NULL; - SDL_AddDisplayMode(&display, ¤t_mode); + SDL_AddDisplayMode(&display, ¤t_mode); SDL_AddVideoDisplay(&display, SDL_TRUE); - /* Set video mode using KOS */ - vid_set_mode(DM_640x480_NTSC_IL, PM_RGB888); - return 1; + + // Set the mode using KOS + vid_set_mode(disp_mode, pixel_mode); + + SDL_Log("SDL2 Dreamcast video initialized."); + return 1; // Success +} + + +void DREAMCAST_GetDisplayModes(_THIS, SDL_VideoDisplay *display) { + SDL_DisplayMode mode; + int refresh_rate = __sdl_dc_is_60hz ? 60 : 50; // Determine refresh rate based on flag + + // Adding a 320x240 mode in ARGB1555 format + SDL_zero(mode); + mode.w = 320; + mode.h = 240; + mode.format = SDL_PIXELFORMAT_ARGB1555; // Change as necessary + mode.refresh_rate = refresh_rate; // Use the determined refresh rate + SDL_AddDisplayMode(display, &mode); + + // Adding a 640x480 mode in RGB565 format + SDL_zero(mode); + mode.w = 640; + mode.h = 480; + mode.format = SDL_PIXELFORMAT_RGB565; // Change as necessary + mode.refresh_rate = refresh_rate; // Use the determined refresh rate + SDL_AddDisplayMode(display, &mode); + + // Adding a 768x480 mode in RGB565 format + SDL_zero(mode); + mode.w = 768; + mode.h = 480; + mode.format = SDL_PIXELFORMAT_RGB565; // Change as necessary + mode.refresh_rate = refresh_rate; // Use the determined refresh rate + SDL_AddDisplayMode(display, &mode); + + // Adding a 640x480 mode in RGB888 format + SDL_zero(mode); + mode.w = 640; + mode.h = 480; + mode.format = SDL_PIXELFORMAT_RGB888; // Change as necessary + mode.refresh_rate = refresh_rate; // Use the determined refresh rate + SDL_AddDisplayMode(display, &mode); + + // Optionally, you can add more modes depending on your requirements + // e.g., 800x600, 1024x768, etc. + + SDL_Log("Display modes for Dreamcast retrieved successfully."); +} + +int DREAMCAST_SetDisplayMode(_THIS, SDL_VideoDisplay *display, SDL_DisplayMode *mode) { + int pixel_mode; + int disp_mode = -1; // Initialize to an invalid value + + // Determine the appropriate display mode based on width and height + if (__sdl_dc_is_60hz) { + if (mode->w == 320 && mode->h == 240) { + disp_mode = DM_320x240; // 60Hz mode + } else if (mode->w == 640 && mode->h == 480) { + disp_mode = DM_640x480; // 60Hz mode + } else if (mode->w == 768 && mode->h == 480) { + disp_mode = DM_768x480; // 60Hz mode + } + } else { // 50Hz + if (mode->w == 320 && mode->h == 240) { + disp_mode = DM_320x240_PAL; // 50Hz mode + } else if (mode->w == 640 && mode->h == 480) { + disp_mode = DM_640x480_PAL_IL; // 50Hz mode + } + } + + // Check if the determined display mode is valid + if (disp_mode < 0) { + SDL_SetError("Unsupported display mode"); + return -1; + } + + // Determine pixel mode based on the format in the mode + switch (mode->format) { + case SDL_PIXELFORMAT_ARGB1555: + pixel_mode = PM_RGB555; // Use the correct constant + break; + case SDL_PIXELFORMAT_RGB565: + pixel_mode = PM_RGB565; // Keep as is + break; + case SDL_PIXELFORMAT_RGB888: + pixel_mode = PM_RGB888; // Keep as is + break; + case SDL_PIXELFORMAT_UNKNOWN: + default: + SDL_SetError("Unsupported pixel format"); + return -1; + } + + // Set the video mode using KOS (no return value handling) + vid_set_mode(disp_mode, pixel_mode); // Assuming this function works fine without return checks + + SDL_Log("Display mode set to: %dx%d @ %dHz", mode->w, mode->h, mode->refresh_rate); + return 0; // Return success } void DREAMCAST_VideoQuit(_THIS) diff --git a/test/dreamcast/test/nehe06/nehe06.c b/test/dreamcast/test/nehe06/nehe06.c index ca7b284efa7c7..1ec664f9f84bf 100644 --- a/test/dreamcast/test/nehe06/nehe06.c +++ b/test/dreamcast/test/nehe06/nehe06.c @@ -71,11 +71,17 @@ void LoadGLTextures() { glBindTexture(GL_TEXTURE_2D, texture[0]); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexImage2D(GL_TEXTURE_2D, 0, 3, image1->w, image1->h, 0, GL_RGB, GL_UNSIGNED_BYTE, image1->pixels); + + // Create an empty texture first + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, image1->w, image1->h, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL); + + // Update the texture with the image data + glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, image1->w, image1->h, GL_RGB, GL_UNSIGNED_BYTE, image1->pixels); SDL_FreeSurface(image1); } + void InitGL(int Width, int Height) { glViewport(0, 0, Width, Height); LoadGLTextures(); diff --git a/test/dreamcast/test/sdlanimation/Makefile.dc b/test/dreamcast/test/sdlanimation/Makefile.dc index bfcf83e42345e..73496116f0f62 100644 --- a/test/dreamcast/test/sdlanimation/Makefile.dc +++ b/test/dreamcast/test/sdlanimation/Makefile.dc @@ -20,7 +20,7 @@ clean: rm -f $(OBJS) $(TARGET).elf $(TARGET).bin romdisk.img $(TARGET).elf: $(OBJS) - kos-cc -o $(TARGET).elf $(OBJS) -lSDL2 -lSDL2main -lm -lkosutils + kos-cc -o $(TARGET).elf $(OBJS) -lSDL2 -lSDL2main -lGL -lm -lkosutils $(TARGET).bin: $(TARGET).elf $(KOS_OBJCOPY) -O binary $(TARGET).elf $(TARGET).bin diff --git a/test/dreamcast/test/textureGLrender/Makefile.dc b/test/dreamcast/test/textureGLrender/Makefile.dc new file mode 100644 index 0000000000000..e271e709e756b --- /dev/null +++ b/test/dreamcast/test/textureGLrender/Makefile.dc @@ -0,0 +1,29 @@ +TARGET = texture +OBJS = texture.o romdisk.o +KOS_ROMDISK_DIR = romdisk + +# Update include paths for SDL2 +KOS_CFLAGS+= -I../../../../build-scripts/build/include -I../../../../build-scripts/build/include-config-/SDL2 -I../../../../build-scripts/build/include/SDL2 -I. -DDREAMCAST + +#KOS_CFLAGS+= -O3 -ffast-math -fno-common -fno-builtin -fno-exceptions -fstrict-aliasing + +#KOS_CPPFLAGS=-fno-operator-names -fno-exceptions $(KOS_CFLAGS) + +# Update library paths and libraries for SDL2 +KOS_LIBS+= -L../../../../build-scripts/build -lSDL2 -lSDL2main + +all: $(TARGET).bin + +include $(KOS_BASE)/Makefile.rules + +clean: + rm -f $(OBJS) $(TARGET).elf $(TARGET).bin romdisk.o romdisk.img + +$(TARGET).elf: $(OBJS) + kos-cc -o $(TARGET).elf $(OBJS) -lSDL2 -lSDL2main -lGL -lm -lkosutils + +$(TARGET).bin: $(TARGET).elf + $(KOS_OBJCOPY) -O binary $(TARGET).elf $(TARGET).bin + +run: $(TARGET).bin + $(KOS_LOADER) $(TARGET).bin diff --git a/test/dreamcast/test/textureGLrender/romdisk/Troy2024.bmp b/test/dreamcast/test/textureGLrender/romdisk/Troy2024.bmp new file mode 100644 index 0000000000000000000000000000000000000000..b084519845b00e1bb8bb7b338eadb5318231b538 GIT binary patch literal 196662 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

w{t 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 + #include + #include + #include + + #define FPS 60 + #define WINDOW_WIDTH 640 + #define WINDOW_HEIGHT 480 + + const Uint32 waittime = 1000 / FPS; + + float xrot = 0.0f, yrot = 0.0f, zrot = 0.0f; + const float ROTATION_SPEED = 0.1f; + + SDL_Texture* texture = NULL; + +SDL_Texture* LoadTexture(SDL_Renderer* renderer, const char* filename) { + Uint8 *rowhi, *rowlo; + Uint8 *tmpbuf, tmpch; + SDL_Surface* image = SDL_LoadBMP(filename); + if (!image) { + fprintf(stderr, "Unable to load %s: %s\n", filename, SDL_GetError()); + return NULL; + } + tmpbuf = (Uint8 *)malloc(image->pitch); + if (!tmpbuf) { + fprintf(stderr, "Out of memory\n"); + return NULL; + } + rowhi = (Uint8 *)image->pixels; + rowlo = rowhi + (image->h * image->pitch) - image->pitch; + for (int i = 0; i < image->h / 2; ++i) { + for (int j = 0; j < image->w; ++j) { + tmpch = rowhi[j * 3]; + rowhi[j * 3] = rowhi[j * 3 + 2]; + rowhi[j * 3 + 2] = tmpch; + tmpch = rowlo[j * 3]; + rowlo[j * 3] = rowlo[j * 3 + 2]; + rowlo[j * 3 + 2] = tmpch; + } + memcpy(tmpbuf, rowhi, image->pitch); + memcpy(rowhi, rowlo, image->pitch); + memcpy(rowlo, tmpbuf, image->pitch); + rowhi += image->pitch; + rowlo -= image->pitch; + } + free(tmpbuf); + + // Set transparent pixel as the pixel at (0,0) for BMPs with no alpha channel + if (image->format->BitsPerPixel == 24 || image->format->BitsPerPixel == 32) { + Uint32 transparentColor = *(Uint32 *)image->pixels; + SDL_SetColorKey(image, SDL_TRUE, transparentColor); + } + + // Convert the surface to a format compatible with the renderer + SDL_Surface* converted_surface = SDL_ConvertSurfaceFormat(image, SDL_PIXELFORMAT_ARGB1555, 0); + if (!converted_surface) { + SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Unable to convert surface: %s\n", SDL_GetError()); + SDL_FreeSurface(image); + return NULL; + } + + // Create texture from the converted surface + SDL_Texture* texture = SDL_CreateTextureFromSurface(renderer, converted_surface); + if (!texture) { + SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Unable to create texture: %s\n", SDL_GetError()); + } + + SDL_FreeSurface(image); // Free the original surface + SDL_FreeSurface(converted_surface); // Free the converted surface + return texture; +} + + + +void DrawScene(SDL_Renderer* renderer) { + SDL_SetRenderDrawColor(renderer, 0, 0, 255, 255); + SDL_RenderClear(renderer); + + // Calculate the center of the screen + int centerX = WINDOW_WIDTH / 2; + int centerY = WINDOW_HEIGHT / 2; + + // Define the center of the texture + int textureWidth = 256; // Width of your texture + int textureHeight = 256; // Height of your texture + + // Define the corners of the quad + SDL_Point corners[4] = { + {-textureWidth / 2, -textureHeight / 2}, // Top-left corner + {textureWidth / 2, -textureHeight / 2}, // Top-right corner + {textureWidth / 2, textureHeight / 2}, // Bottom-right corner + {-textureWidth / 2, textureHeight / 2} // Bottom-left corner + }; + + // Apply rotation around the center + for (int i = 0; i < 4; i++) { + float x = corners[i].x; + float y = corners[i].y; + + // Rotate around Z axis + corners[i].x = (int)(x * cos(zrot) - y * sin(zrot)); + corners[i].y = (int)(x * sin(zrot) + y * cos(zrot)); + } + + // Calculate the destination rectangle's position (centered) + SDL_Rect dstRect = { + centerX - textureWidth / 2, // Center the rectangle on the screen + centerY - textureHeight / 2, // Center the rectangle on the screen + textureWidth, // Texture width + textureHeight // Texture height + }; + + // Draw the rotated quad with vertical flip + SDL_RenderCopyEx(renderer, texture, NULL, &dstRect, zrot * (180.0 / M_PI), NULL, SDL_FLIP_VERTICAL); + + SDL_RenderPresent(renderer); +} + + + void HandleJoystickInput(SDL_Joystick* joystick) { + Uint8 hat = SDL_JoystickGetHat(joystick, 0); + + if (hat & SDL_HAT_UP) xrot += ROTATION_SPEED; + if (hat & SDL_HAT_DOWN) xrot -= ROTATION_SPEED; + if (hat & SDL_HAT_LEFT) yrot -= ROTATION_SPEED; + if (hat & SDL_HAT_RIGHT) yrot += ROTATION_SPEED; + + // Add Z-axis rotation with joystick buttons + if (SDL_JoystickGetButton(joystick, 0)) zrot += ROTATION_SPEED; + if (SDL_JoystickGetButton(joystick, 1)) zrot -= ROTATION_SPEED; + } + + int main(int argc, char** argv) { + if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK) < 0) { + SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "SDL could not initialize! SDL Error: %s\n", SDL_GetError()); + return 1; + } + + SDL_Window* window = SDL_CreateWindow("SDL2 Texture Demo", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, WINDOW_WIDTH, WINDOW_HEIGHT, SDL_WINDOW_SHOWN|SDL_VIDEO_OPENGL); + if (!window) { + SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Window could not be created! SDL Error: %s\n", SDL_GetError()); + return 1; + } + + SDL_SetHint(SDL_HINT_RENDER_DRIVER, "opengl"); + SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED); + if (!renderer) { + SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Renderer could not be created! SDL Error: %s\n", SDL_GetError()); + return 1; + } + SDL_RendererInfo info; + if (SDL_GetRendererInfo(renderer, &info) == 0) { + SDL_Log("Renderer Name: %s", info.name); + SDL_Log("Texture Formats: "); + for (int i = 0; i < info.num_texture_formats; i++) { + SDL_Log(" %s", SDL_GetPixelFormatName(info.texture_formats[i])); + } + } + texture = LoadTexture(renderer, "/rd/Troy2024.bmp"); + if (!texture) { + SDL_DestroyRenderer(renderer); + SDL_DestroyWindow(window); + SDL_Quit(); + return 1; + } + + SDL_Event event; + int running = 1; + + SDL_Joystick* joystick = SDL_JoystickOpen(0); + if (!joystick) { + SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Unable to open joystick: %s\n", SDL_GetError()); + } + + while (running) { + while (SDL_PollEvent(&event)) { + if (event.type == SDL_QUIT) { + running = 0; + } + } + + if (joystick) { + HandleJoystickInput(joystick); + } + + DrawScene(renderer); + + SDL_Delay(waittime); // Wait for the remaining frame time + } + + if (joystick) { + SDL_JoystickClose(joystick); + } + SDL_DestroyTexture(texture); + SDL_DestroyRenderer(renderer); + SDL_DestroyWindow(window); + SDL_Quit(); + return 0; + }