diff --git a/build/Makefile.common b/build/Makefile.common index 8a06b67..d6ff383 100644 --- a/build/Makefile.common +++ b/build/Makefile.common @@ -38,6 +38,7 @@ SOURCES_C := \ $(CORE_DIR)/source/Video_x4.c \ $(CORE_DIR)/source/Video_x5.c \ $(CORE_DIR)/source/Video_x6.c \ + $(CORE_DIR)/source/Video_x7.c \ $(CORE_DIR)/source/Video.c \ $(CORE_DIR)/resource/PokeMini_ColorPal.c \ $(CORE_DIR)/libretro/libretro.c diff --git a/libretro/libretro.c b/libretro/libretro.c index b7e9a6e..f4980a5 100644 --- a/libretro/libretro.c +++ b/libretro/libretro.c @@ -31,6 +31,7 @@ #include "Video_x4.h" #include "Video_x5.h" #include "Video_x6.h" +#include "Video_x7.h" #ifdef _3DS void* linearMemAlign(size_t size, size_t alignment); @@ -614,6 +615,10 @@ static void InitialiseVideo(void) { video_scale = 6; } + else if (strcmp(variables.value, "7x") == 0) + { + video_scale = 7; + } #endif } @@ -662,6 +667,9 @@ static void InitialiseVideo(void) case 6: video_spec = (TPokeMini_VideoSpec *)&PokeMini_Video6x6; break; + case 7: + video_spec = (TPokeMini_VideoSpec *)&PokeMini_Video7x7; + break; default: // video_scale == 1 video_spec = (TPokeMini_VideoSpec *)&PokeMini_Video1x1; break; diff --git a/libretro/libretro_core_options.h b/libretro/libretro_core_options.h index 2f260aa..59fb5e0 100644 --- a/libretro/libretro_core_options.h +++ b/libretro/libretro_core_options.h @@ -61,6 +61,7 @@ struct retro_core_option_definition option_defs_us[] = { { "4x", NULL }, { "5x", NULL }, { "6x", NULL }, + { "7x", NULL }, #endif { NULL, NULL }, }, diff --git a/source/Video_x7.c b/source/Video_x7.c new file mode 100644 index 0000000..49f1a06 --- /dev/null +++ b/source/Video_x7.c @@ -0,0 +1,1487 @@ +/* + PokeMini - Pokémon-Mini Emulator + Copyright (C) 2009-2012 JustBurn + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#include "PokeMini.h" +#include "Video_x7.h" + +const TPokeMini_VideoSpec PokeMini_Video7x7 = { + 7, 7, + PokeMini_GetVideo7x7_16, + PokeMini_GetVideo7x7_32 +}; + +const int LCDMask7x7[7*7] = { + 240, 256, 256, 256, 256, 240, 128, + 256, 256, 256, 256, 256, 256, 160, + 256, 256, 256, 256, 256, 256, 160, + 256, 256, 256, 256, 256, 256, 160, + 256, 256, 256, 256, 256, 256, 160, + 240, 256, 256, 256, 256, 240, 192, + 128, 160, 160, 160, 160, 192, 160 +}; + +TPokeMini_DrawVideo32 PokeMini_GetVideo7x7_32(int filter, int lcdmode) +{ + if (filter == PokeMini_Scanline) { + switch (lcdmode) { + case 3: return PokeMini_VideoColorL7x7_32; + case 2: return PokeMini_Video2ScanLine7x7_32; + case 1: return PokeMini_Video3ScanLine7x7_32; + default: return PokeMini_VideoAScanLine7x7_32; + } + } else if (filter == PokeMini_Matrix) { + switch (lcdmode) { + case 3: return (VidEnableHighcolor) ? PokeMini_VideoColorH7x7_32 : PokeMini_VideoColor7x7_32; + case 2: return PokeMini_Video2Matrix7x7_32; + case 1: return PokeMini_Video3Matrix7x7_32; + default: return PokeMini_VideoAMatrix7x7_32; + } + } else { + switch (lcdmode) { + case 3: return PokeMini_VideoColor7x7_32; + case 2: return PokeMini_Video2None7x7_32; + case 1: return PokeMini_Video3None7x7_32; + default: return PokeMini_VideoANone7x7_32; + } + } +} + +TPokeMini_DrawVideo16 PokeMini_GetVideo7x7_16(int filter, int lcdmode) +{ + if (filter == PokeMini_Scanline) { + switch (lcdmode) { + case 3: return PokeMini_VideoColorL7x7_16; + case 2: return PokeMini_Video2ScanLine7x7_16; + case 1: return PokeMini_Video3ScanLine7x7_16; + default: return PokeMini_VideoAScanLine7x7_16; + } + } else if (filter == PokeMini_Matrix) { + switch (lcdmode) { + case 3: return (VidEnableHighcolor) ? PokeMini_VideoColorH7x7_16 : PokeMini_VideoColor7x7_16; + case 2: return PokeMini_Video2Matrix7x7_16; + case 1: return PokeMini_Video3Matrix7x7_16; + default: return PokeMini_VideoAMatrix7x7_16; + } + } else { + switch (lcdmode) { + case 3: return PokeMini_VideoColor7x7_16; + case 2: return PokeMini_Video2None7x7_16; + case 1: return PokeMini_Video3None7x7_16; + default: return PokeMini_VideoANone7x7_16; + } + } +} + +void PokeMini_VideoAScanLine7x7_32(uint32_t *screen, int pitchW) +{ + int xk, yk, LCDY; + uint32_t *ptr, pix; + + LCDY = 0; + for (yk=0; yk<32; yk++) { + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalette32[LCDPixelsA[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*4); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalette32[LCDPixelsA[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*4); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalette32[LCDPixelsA[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*4); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalette32[LCDPixelsA[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + LCDY += 96; + memset(screen, 0, 672*4); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalette32[LCDPixelsA[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*4); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalette32[LCDPixelsA[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*4); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalette32[LCDPixelsA[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*4); + screen += pitchW; + LCDY += 96; + } +} + +void PokeMini_VideoAScanLine7x7_16(uint16_t *screen, int pitchW) +{ + int xk, yk, LCDY; + uint16_t *ptr, pix; + + LCDY = 0; + for (yk=0; yk<32; yk++) { + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalette16[LCDPixelsA[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*2); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalette16[LCDPixelsA[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*2); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalette16[LCDPixelsA[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*2); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalette16[LCDPixelsA[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + LCDY += 96; + memset(screen, 0, 672*2); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalette16[LCDPixelsA[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*2); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalette16[LCDPixelsA[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*2); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalette16[LCDPixelsA[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*2); + screen += pitchW; + LCDY += 96; + } +} + +void PokeMini_Video3ScanLine7x7_32(uint32_t *screen, int pitchW) +{ + int xk, yk, LCDY; + uint32_t *ptr, pix; + + LCDY = 0; + for (yk=0; yk<32; yk++) { + ptr = screen; + for (xk=0; xk<96; xk++) { + switch (LCDPixelsD[LCDY + xk] + LCDPixelsA[LCDY + xk]) { + case 2: pix = VidPalette32[MinxLCD.Pixel1Intensity]; break; + case 1: pix = VidPalette32[(MinxLCD.Pixel0Intensity + MinxLCD.Pixel1Intensity) >> 1]; break; + default: pix = VidPalette32[MinxLCD.Pixel0Intensity]; break; + } + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*4); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + switch (LCDPixelsD[LCDY + xk] + LCDPixelsA[LCDY + xk]) { + case 2: pix = VidPalette32[MinxLCD.Pixel1Intensity]; break; + case 1: pix = VidPalette32[(MinxLCD.Pixel0Intensity + MinxLCD.Pixel1Intensity) >> 1]; break; + default: pix = VidPalette32[MinxLCD.Pixel0Intensity]; break; + } + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*4); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + switch (LCDPixelsD[LCDY + xk] + LCDPixelsA[LCDY + xk]) { + case 2: pix = VidPalette32[MinxLCD.Pixel1Intensity]; break; + case 1: pix = VidPalette32[(MinxLCD.Pixel0Intensity + MinxLCD.Pixel1Intensity) >> 1]; break; + default: pix = VidPalette32[MinxLCD.Pixel0Intensity]; break; + } + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*4); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + switch (LCDPixelsD[LCDY + xk] + LCDPixelsA[LCDY + xk]) { + case 2: pix = VidPalette32[MinxLCD.Pixel1Intensity]; break; + case 1: pix = VidPalette32[(MinxLCD.Pixel0Intensity + MinxLCD.Pixel1Intensity) >> 1]; break; + default: pix = VidPalette32[MinxLCD.Pixel0Intensity]; break; + } + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*4); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + switch (LCDPixelsD[LCDY + xk] + LCDPixelsA[LCDY + xk]) { + case 2: pix = VidPalette32[MinxLCD.Pixel1Intensity]; break; + case 1: pix = VidPalette32[(MinxLCD.Pixel0Intensity + MinxLCD.Pixel1Intensity) >> 1]; break; + default: pix = VidPalette32[MinxLCD.Pixel0Intensity]; break; + } + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + LCDY += 96; + memset(screen, 0, 672*4); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + switch (LCDPixelsD[LCDY + xk] + LCDPixelsA[LCDY + xk]) { + case 2: pix = VidPalette32[MinxLCD.Pixel1Intensity]; break; + case 1: pix = VidPalette32[(MinxLCD.Pixel0Intensity + MinxLCD.Pixel1Intensity) >> 1]; break; + default: pix = VidPalette32[MinxLCD.Pixel0Intensity]; break; + } + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*4); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + switch (LCDPixelsD[LCDY + xk] + LCDPixelsA[LCDY + xk]) { + case 2: pix = VidPalette32[MinxLCD.Pixel1Intensity]; break; + case 1: pix = VidPalette32[(MinxLCD.Pixel0Intensity + MinxLCD.Pixel1Intensity) >> 1]; break; + default: pix = VidPalette32[MinxLCD.Pixel0Intensity]; break; + } + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*4); + screen += pitchW; + LCDY += 96; + } +} + +void PokeMini_Video3ScanLine7x7_16(uint16_t *screen, int pitchW) +{ + int xk, yk, LCDY; + uint16_t *ptr, pix; + + LCDY = 0; + for (yk=0; yk<32; yk++) { + ptr = screen; + for (xk=0; xk<96; xk++) { + switch (LCDPixelsD[LCDY + xk] + LCDPixelsA[LCDY + xk]) { + case 2: pix = VidPalette16[MinxLCD.Pixel1Intensity]; break; + case 1: pix = VidPalette16[(MinxLCD.Pixel0Intensity + MinxLCD.Pixel1Intensity) >> 1]; break; + default: pix = VidPalette16[MinxLCD.Pixel0Intensity]; break; + } + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*2); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + switch (LCDPixelsD[LCDY + xk] + LCDPixelsA[LCDY + xk]) { + case 2: pix = VidPalette16[MinxLCD.Pixel1Intensity]; break; + case 1: pix = VidPalette16[(MinxLCD.Pixel0Intensity + MinxLCD.Pixel1Intensity) >> 1]; break; + default: pix = VidPalette16[MinxLCD.Pixel0Intensity]; break; + } + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*2); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + switch (LCDPixelsD[LCDY + xk] + LCDPixelsA[LCDY + xk]) { + case 2: pix = VidPalette16[MinxLCD.Pixel1Intensity]; break; + case 1: pix = VidPalette16[(MinxLCD.Pixel0Intensity + MinxLCD.Pixel1Intensity) >> 1]; break; + default: pix = VidPalette16[MinxLCD.Pixel0Intensity]; break; + } + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*2); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + switch (LCDPixelsD[LCDY + xk] + LCDPixelsA[LCDY + xk]) { + case 2: pix = VidPalette16[MinxLCD.Pixel1Intensity]; break; + case 1: pix = VidPalette16[(MinxLCD.Pixel0Intensity + MinxLCD.Pixel1Intensity) >> 1]; break; + default: pix = VidPalette16[MinxLCD.Pixel0Intensity]; break; + } + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + LCDY += 96; + memset(screen, 0, 672*2); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + switch (LCDPixelsD[LCDY + xk] + LCDPixelsA[LCDY + xk]) { + case 2: pix = VidPalette16[MinxLCD.Pixel1Intensity]; break; + case 1: pix = VidPalette16[(MinxLCD.Pixel0Intensity + MinxLCD.Pixel1Intensity) >> 1]; break; + default: pix = VidPalette16[MinxLCD.Pixel0Intensity]; break; + } + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*2); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + switch (LCDPixelsD[LCDY + xk] + LCDPixelsA[LCDY + xk]) { + case 2: pix = VidPalette16[MinxLCD.Pixel1Intensity]; break; + case 1: pix = VidPalette16[(MinxLCD.Pixel0Intensity + MinxLCD.Pixel1Intensity) >> 1]; break; + default: pix = VidPalette16[MinxLCD.Pixel0Intensity]; break; + } + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*2); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + switch (LCDPixelsD[LCDY + xk] + LCDPixelsA[LCDY + xk]) { + case 2: pix = VidPalette16[MinxLCD.Pixel1Intensity]; break; + case 1: pix = VidPalette16[(MinxLCD.Pixel0Intensity + MinxLCD.Pixel1Intensity) >> 1]; break; + default: pix = VidPalette16[MinxLCD.Pixel0Intensity]; break; + } + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*2); + screen += pitchW; + LCDY += 96; + } +} + +void PokeMini_Video2ScanLine7x7_32(uint32_t *screen, int pitchW) +{ + int xk, yk, LCDY; + uint32_t *ptr, pix, pix1, pix0; + + LCDY = 0; + pix1 = VidPalette32[MinxLCD.Pixel1Intensity]; + pix0 = VidPalette32[MinxLCD.Pixel0Intensity]; + for (yk=0; yk<32; yk++) { + ptr = screen; + for (xk=0; xk<96; xk++) { + if (LCDPixelsD[LCDY + xk]) pix = pix1; + else pix = pix0; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*4); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + if (LCDPixelsD[LCDY + xk]) pix = pix1; + else pix = pix0; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*4); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + if (LCDPixelsD[LCDY + xk]) pix = pix1; + else pix = pix0; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*4); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + if (LCDPixelsD[LCDY + xk]) pix = pix1; + else pix = pix0; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + LCDY += 96; + memset(screen, 0, 672*4); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + if (LCDPixelsD[LCDY + xk]) pix = pix1; + else pix = pix0; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*4); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + if (LCDPixelsD[LCDY + xk]) pix = pix1; + else pix = pix0; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*4); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + if (LCDPixelsD[LCDY + xk]) pix = pix1; + else pix = pix0; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*4); + screen += pitchW; + LCDY += 96; + } +} + +void PokeMini_Video2ScanLine7x7_16(uint16_t *screen, int pitchW) +{ + int xk, yk, LCDY; + uint16_t *ptr, pix, pix1, pix0; + + LCDY = 0; + pix1 = VidPalette16[MinxLCD.Pixel1Intensity]; + pix0 = VidPalette16[MinxLCD.Pixel0Intensity]; + for (yk=0; yk<32; yk++) { + ptr = screen; + for (xk=0; xk<96; xk++) { + if (LCDPixelsD[LCDY + xk]) pix = pix1; + else pix = pix0; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*2); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + if (LCDPixelsD[LCDY + xk]) pix = pix1; + else pix = pix0; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*2); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + if (LCDPixelsD[LCDY + xk]) pix = pix1; + else pix = pix0; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*2); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + if (LCDPixelsD[LCDY + xk]) pix = pix1; + else pix = pix0; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + LCDY += 96; + memset(screen, 0, 672*2); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + if (LCDPixelsD[LCDY + xk]) pix = pix1; + else pix = pix0; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*2); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + if (LCDPixelsD[LCDY + xk]) pix = pix1; + else pix = pix0; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*2); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + if (LCDPixelsD[LCDY + xk]) pix = pix1; + else pix = pix0; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*2); + screen += pitchW; + LCDY += 96; + } +} + +void PokeMini_VideoAMatrix7x7_32(uint32_t *screen, int pitchW) +{ + int xk, yk, level, LCDY, maskH; + uint32_t *ptr; + + LCDY = 0; + maskH = 0; + for (yk=0; yk<64*7; yk++) { + ptr = screen; + for (xk=0; xk<96; xk++) { + level = LCDPixelsA[LCDY + xk]; + *ptr++ = VidPalette32[level * LCDMask7x7[maskH] >> 8]; + *ptr++ = VidPalette32[level * LCDMask7x7[maskH+1] >> 8]; + *ptr++ = VidPalette32[level * LCDMask7x7[maskH+2] >> 8]; + *ptr++ = VidPalette32[level * LCDMask7x7[maskH+3] >> 8]; + *ptr++ = VidPalette32[level * LCDMask7x7[maskH+4] >> 8]; + *ptr++ = VidPalette32[level * LCDMask7x7[maskH+5] >> 8]; + *ptr++ = VidPalette32[level * LCDMask7x7[maskH+6] >> 8]; + } + screen += pitchW; + maskH += 7; + if (maskH >= 49) { + maskH = 0; + LCDY += 96; + } + } +} + +void PokeMini_VideoAMatrix7x7_16(uint16_t *screen, int pitchW) +{ + int xk, yk, level, LCDY, maskH; + uint16_t *ptr; + + LCDY = 0; + maskH = 0; + for (yk=0; yk<64*7; yk++) { + ptr = screen; + for (xk=0; xk<96; xk++) { + level = LCDPixelsA[LCDY + xk]; + *ptr++ = VidPalette16[level * LCDMask7x7[maskH] >> 8]; + *ptr++ = VidPalette16[level * LCDMask7x7[maskH+1] >> 8]; + *ptr++ = VidPalette16[level * LCDMask7x7[maskH+2] >> 8]; + *ptr++ = VidPalette16[level * LCDMask7x7[maskH+3] >> 8]; + *ptr++ = VidPalette16[level * LCDMask7x7[maskH+4] >> 8]; + *ptr++ = VidPalette16[level * LCDMask7x7[maskH+5] >> 8]; + *ptr++ = VidPalette16[level * LCDMask7x7[maskH+6] >> 8]; + } + screen += pitchW; + maskH += 7; + if (maskH >= 49) { + maskH = 0; + LCDY += 96; + } + } +} + +void PokeMini_Video3Matrix7x7_32(uint32_t *screen, int pitchW) +{ + int xk, yk, level, LCDY, maskH; + uint32_t *ptr; + + LCDY = 0; + maskH = 0; + for (yk=0; yk<64*7; yk++) { + ptr = screen; + for (xk=0; xk<96; xk++) { + switch (LCDPixelsD[LCDY + xk] + LCDPixelsA[LCDY + xk]) { + case 2: level = MinxLCD.Pixel1Intensity; break; + case 1: level = (MinxLCD.Pixel0Intensity + MinxLCD.Pixel1Intensity) >> 1; break; + default: level = MinxLCD.Pixel0Intensity; break; + } + *ptr++ = VidPalette32[level * LCDMask7x7[maskH] >> 8]; + *ptr++ = VidPalette32[level * LCDMask7x7[maskH+1] >> 8]; + *ptr++ = VidPalette32[level * LCDMask7x7[maskH+2] >> 8]; + *ptr++ = VidPalette32[level * LCDMask7x7[maskH+3] >> 8]; + *ptr++ = VidPalette32[level * LCDMask7x7[maskH+4] >> 8]; + *ptr++ = VidPalette32[level * LCDMask7x7[maskH+5] >> 8]; + *ptr++ = VidPalette32[level * LCDMask7x7[maskH+6] >> 8]; + } + screen += pitchW; + maskH += 7; + if (maskH >= 49) { + maskH = 0; + LCDY += 96; + } + } +} + +void PokeMini_Video3Matrix7x7_16(uint16_t *screen, int pitchW) +{ + int xk, yk, level, LCDY, maskH; + uint16_t *ptr; + + LCDY = 0; + maskH = 0; + for (yk=0; yk<64*7; yk++) { + ptr = screen; + for (xk=0; xk<96; xk++) { + switch (LCDPixelsD[LCDY + xk] + LCDPixelsA[LCDY + xk]) { + case 2: level = MinxLCD.Pixel1Intensity; break; + case 1: level = (MinxLCD.Pixel0Intensity + MinxLCD.Pixel1Intensity) >> 1; break; + default: level = MinxLCD.Pixel0Intensity; break; + } + *ptr++ = VidPalette16[level * LCDMask7x7[maskH] >> 8]; + *ptr++ = VidPalette16[level * LCDMask7x7[maskH+1] >> 8]; + *ptr++ = VidPalette16[level * LCDMask7x7[maskH+2] >> 8]; + *ptr++ = VidPalette16[level * LCDMask7x7[maskH+3] >> 8]; + *ptr++ = VidPalette16[level * LCDMask7x7[maskH+4] >> 8]; + *ptr++ = VidPalette16[level * LCDMask7x7[maskH+5] >> 8]; + *ptr++ = VidPalette16[level * LCDMask7x7[maskH+6] >> 8]; + } + screen += pitchW; + maskH += 7; + if (maskH >= 49) { + maskH = 0; + LCDY += 96; + } + } +} + +void PokeMini_Video2Matrix7x7_32(uint32_t *screen, int pitchW) +{ + int xk, yk, level, LCDY, maskH; + uint32_t *ptr; + + LCDY = 0; + maskH = 0; + for (yk=0; yk<64*7; yk++) { + ptr = screen; + for (xk=0; xk<96; xk++) { + if (LCDPixelsD[LCDY + xk]) level = MinxLCD.Pixel1Intensity; + else level = MinxLCD.Pixel0Intensity; + *ptr++ = VidPalette32[level * LCDMask7x7[maskH] >> 8]; + *ptr++ = VidPalette32[level * LCDMask7x7[maskH+1] >> 8]; + *ptr++ = VidPalette32[level * LCDMask7x7[maskH+2] >> 8]; + *ptr++ = VidPalette32[level * LCDMask7x7[maskH+3] >> 8]; + *ptr++ = VidPalette32[level * LCDMask7x7[maskH+4] >> 8]; + *ptr++ = VidPalette32[level * LCDMask7x7[maskH+5] >> 8]; + *ptr++ = VidPalette32[level * LCDMask7x7[maskH+6] >> 8]; + } + screen += pitchW; + maskH += 7; + if (maskH >= 49) { + maskH = 0; + LCDY += 96; + } + } +} + +void PokeMini_Video2Matrix7x7_16(uint16_t *screen, int pitchW) +{ + int xk, yk, level, LCDY, maskH; + uint16_t *ptr; + + LCDY = 0; + maskH = 0; + for (yk=0; yk<64*7; yk++) { + ptr = screen; + for (xk=0; xk<96; xk++) { + if (LCDPixelsD[LCDY + xk]) level = MinxLCD.Pixel1Intensity; + else level = MinxLCD.Pixel0Intensity; + *ptr++ = VidPalette16[level * LCDMask7x7[maskH] >> 8]; + *ptr++ = VidPalette16[level * LCDMask7x7[maskH+1] >> 8]; + *ptr++ = VidPalette16[level * LCDMask7x7[maskH+2] >> 8]; + *ptr++ = VidPalette16[level * LCDMask7x7[maskH+3] >> 8]; + *ptr++ = VidPalette16[level * LCDMask7x7[maskH+4] >> 8]; + *ptr++ = VidPalette16[level * LCDMask7x7[maskH+5] >> 8]; + *ptr++ = VidPalette16[level * LCDMask7x7[maskH+6] >> 8]; + } + screen += pitchW; + maskH += 7; + if (maskH >= 49) { + maskH = 0; + LCDY += 96; + } + } +} + +void PokeMini_VideoANone7x7_32(uint32_t *screen, int pitchW) +{ + int xk, yk, LCDY; + uint32_t *ptr, pix; + + LCDY = 0; + for (yk=0; yk<64; yk++) { + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalette32[LCDPixelsA[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalette32[LCDPixelsA[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalette32[LCDPixelsA[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalette32[LCDPixelsA[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalette32[LCDPixelsA[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalette32[LCDPixelsA[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalette32[LCDPixelsA[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + LCDY += 96; + } +} + +void PokeMini_VideoANone7x7_16(uint16_t *screen, int pitchW) +{ + int xk, yk, LCDY; + uint16_t *ptr, pix; + + LCDY = 0; + for (yk=0; yk<64; yk++) { + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalette16[LCDPixelsA[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalette16[LCDPixelsA[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalette16[LCDPixelsA[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalette16[LCDPixelsA[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalette16[LCDPixelsA[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalette16[LCDPixelsA[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalette16[LCDPixelsA[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + LCDY += 96; + } +} + +void PokeMini_Video3None7x7_32(uint32_t *screen, int pitchW) +{ + int xk, yk, LCDY; + uint32_t *ptr, pix; + + LCDY = 0; + for (yk=0; yk<64; yk++) { + ptr = screen; + for (xk=0; xk<96; xk++) { + switch (LCDPixelsD[LCDY + xk] + LCDPixelsA[LCDY + xk]) { + case 2: pix = VidPalette32[MinxLCD.Pixel1Intensity]; break; + case 1: pix = VidPalette32[(MinxLCD.Pixel0Intensity + MinxLCD.Pixel1Intensity) >> 1]; break; + default: pix = VidPalette32[MinxLCD.Pixel0Intensity]; break; + } + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + switch (LCDPixelsD[LCDY + xk] + LCDPixelsA[LCDY + xk]) { + case 2: pix = VidPalette32[MinxLCD.Pixel1Intensity]; break; + case 1: pix = VidPalette32[(MinxLCD.Pixel0Intensity + MinxLCD.Pixel1Intensity) >> 1]; break; + default: pix = VidPalette32[MinxLCD.Pixel0Intensity]; break; + } + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + switch (LCDPixelsD[LCDY + xk] + LCDPixelsA[LCDY + xk]) { + case 2: pix = VidPalette32[MinxLCD.Pixel1Intensity]; break; + case 1: pix = VidPalette32[(MinxLCD.Pixel0Intensity + MinxLCD.Pixel1Intensity) >> 1]; break; + default: pix = VidPalette32[MinxLCD.Pixel0Intensity]; break; + } + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + switch (LCDPixelsD[LCDY + xk] + LCDPixelsA[LCDY + xk]) { + case 2: pix = VidPalette32[MinxLCD.Pixel1Intensity]; break; + case 1: pix = VidPalette32[(MinxLCD.Pixel0Intensity + MinxLCD.Pixel1Intensity) >> 1]; break; + default: pix = VidPalette32[MinxLCD.Pixel0Intensity]; break; + } + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + switch (LCDPixelsD[LCDY + xk] + LCDPixelsA[LCDY + xk]) { + case 2: pix = VidPalette32[MinxLCD.Pixel1Intensity]; break; + case 1: pix = VidPalette32[(MinxLCD.Pixel0Intensity + MinxLCD.Pixel1Intensity) >> 1]; break; + default: pix = VidPalette32[MinxLCD.Pixel0Intensity]; break; + } + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + switch (LCDPixelsD[LCDY + xk] + LCDPixelsA[LCDY + xk]) { + case 2: pix = VidPalette32[MinxLCD.Pixel1Intensity]; break; + case 1: pix = VidPalette32[(MinxLCD.Pixel0Intensity + MinxLCD.Pixel1Intensity) >> 1]; break; + default: pix = VidPalette32[MinxLCD.Pixel0Intensity]; break; + } + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + switch (LCDPixelsD[LCDY + xk] + LCDPixelsA[LCDY + xk]) { + case 2: pix = VidPalette32[MinxLCD.Pixel1Intensity]; break; + case 1: pix = VidPalette32[(MinxLCD.Pixel0Intensity + MinxLCD.Pixel1Intensity) >> 1]; break; + default: pix = VidPalette32[MinxLCD.Pixel0Intensity]; break; + } + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + LCDY += 96; + } +} + +void PokeMini_Video3None7x7_16(uint16_t *screen, int pitchW) +{ + int xk, yk, LCDY; + uint16_t *ptr, pix; + + LCDY = 0; + for (yk=0; yk<64; yk++) { + ptr = screen; + for (xk=0; xk<96; xk++) { + switch (LCDPixelsD[LCDY + xk] + LCDPixelsA[LCDY + xk]) { + case 2: pix = VidPalette16[MinxLCD.Pixel1Intensity]; break; + case 1: pix = VidPalette16[(MinxLCD.Pixel0Intensity + MinxLCD.Pixel1Intensity) >> 1]; break; + default: pix = VidPalette16[MinxLCD.Pixel0Intensity]; break; + } + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + switch (LCDPixelsD[LCDY + xk] + LCDPixelsA[LCDY + xk]) { + case 2: pix = VidPalette16[MinxLCD.Pixel1Intensity]; break; + case 1: pix = VidPalette16[(MinxLCD.Pixel0Intensity + MinxLCD.Pixel1Intensity) >> 1]; break; + default: pix = VidPalette16[MinxLCD.Pixel0Intensity]; break; + } + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + switch (LCDPixelsD[LCDY + xk] + LCDPixelsA[LCDY + xk]) { + case 2: pix = VidPalette16[MinxLCD.Pixel1Intensity]; break; + case 1: pix = VidPalette16[(MinxLCD.Pixel0Intensity + MinxLCD.Pixel1Intensity) >> 1]; break; + default: pix = VidPalette16[MinxLCD.Pixel0Intensity]; break; + } + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + switch (LCDPixelsD[LCDY + xk] + LCDPixelsA[LCDY + xk]) { + case 2: pix = VidPalette16[MinxLCD.Pixel1Intensity]; break; + case 1: pix = VidPalette16[(MinxLCD.Pixel0Intensity + MinxLCD.Pixel1Intensity) >> 1]; break; + default: pix = VidPalette16[MinxLCD.Pixel0Intensity]; break; + } + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + switch (LCDPixelsD[LCDY + xk] + LCDPixelsA[LCDY + xk]) { + case 2: pix = VidPalette16[MinxLCD.Pixel1Intensity]; break; + case 1: pix = VidPalette16[(MinxLCD.Pixel0Intensity + MinxLCD.Pixel1Intensity) >> 1]; break; + default: pix = VidPalette16[MinxLCD.Pixel0Intensity]; break; + } + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + switch (LCDPixelsD[LCDY + xk] + LCDPixelsA[LCDY + xk]) { + case 2: pix = VidPalette16[MinxLCD.Pixel1Intensity]; break; + case 1: pix = VidPalette16[(MinxLCD.Pixel0Intensity + MinxLCD.Pixel1Intensity) >> 1]; break; + default: pix = VidPalette16[MinxLCD.Pixel0Intensity]; break; + } + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + switch (LCDPixelsD[LCDY + xk] + LCDPixelsA[LCDY + xk]) { + case 2: pix = VidPalette16[MinxLCD.Pixel1Intensity]; break; + case 1: pix = VidPalette16[(MinxLCD.Pixel0Intensity + MinxLCD.Pixel1Intensity) >> 1]; break; + default: pix = VidPalette16[MinxLCD.Pixel0Intensity]; break; + } + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + LCDY += 96; + } +} + +void PokeMini_Video2None7x7_32(uint32_t *screen, int pitchW) +{ + int xk, yk, LCDY; + uint32_t *ptr, pix, pix1, pix0; + + LCDY = 0; + pix1 = VidPalette32[MinxLCD.Pixel1Intensity]; + pix0 = VidPalette32[MinxLCD.Pixel0Intensity]; + for (yk=0; yk<64; yk++) { + ptr = screen; + for (xk=0; xk<96; xk++) { + if (LCDPixelsD[LCDY + xk]) pix = pix1; + else pix = pix0; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + if (LCDPixelsD[LCDY + xk]) pix = pix1; + else pix = pix0; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + if (LCDPixelsD[LCDY + xk]) pix = pix1; + else pix = pix0; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + if (LCDPixelsD[LCDY + xk]) pix = pix1; + else pix = pix0; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + if (LCDPixelsD[LCDY + xk]) pix = pix1; + else pix = pix0; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + if (LCDPixelsD[LCDY + xk]) pix = pix1; + else pix = pix0; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + if (LCDPixelsD[LCDY + xk]) pix = pix1; + else pix = pix0; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + LCDY += 96; + } +} + +void PokeMini_Video2None7x7_16(uint16_t *screen, int pitchW) +{ + int xk, yk, LCDY; + uint16_t *ptr, pix, pix1, pix0; + + LCDY = 0; + pix1 = VidPalette16[MinxLCD.Pixel1Intensity]; + pix0 = VidPalette16[MinxLCD.Pixel0Intensity]; + for (yk=0; yk<64; yk++) { + ptr = screen; + for (xk=0; xk<96; xk++) { + if (LCDPixelsD[LCDY + xk]) pix = pix1; + else pix = pix0; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + if (LCDPixelsD[LCDY + xk]) pix = pix1; + else pix = pix0; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + if (LCDPixelsD[LCDY + xk]) pix = pix1; + else pix = pix0; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + if (LCDPixelsD[LCDY + xk]) pix = pix1; + else pix = pix0; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + if (LCDPixelsD[LCDY + xk]) pix = pix1; + else pix = pix0; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + if (LCDPixelsD[LCDY + xk]) pix = pix1; + else pix = pix0; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + if (LCDPixelsD[LCDY + xk]) pix = pix1; + else pix = pix0; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + LCDY += 96; + } +} + +void PokeMini_VideoColor7x7_32(uint32_t *screen, int pitchW) +{ + int xk, yk, LCDY; + uint32_t *ptr, pix; + + LCDY = 0; + for (yk=0; yk<64; yk++) { + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalColor32[PRCColorPixels[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalColor32[PRCColorPixels[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalColor32[PRCColorPixels[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalColor32[PRCColorPixels[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalColor32[PRCColorPixels[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalColor32[PRCColorPixels[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalColor32[PRCColorPixels[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + LCDY += 96; + } +} + +void PokeMini_VideoColor7x7_16(uint16_t *screen, int pitchW) +{ + int xk, yk, LCDY; + uint16_t *ptr, pix; + + LCDY = 0; + for (yk=0; yk<64; yk++) { + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalColor16[PRCColorPixels[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalColor16[PRCColorPixels[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalColor16[PRCColorPixels[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalColor16[PRCColorPixels[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalColor16[PRCColorPixels[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalColor16[PRCColorPixels[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalColor16[PRCColorPixels[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + LCDY += 96; + } +} + +void PokeMini_VideoColorL7x7_32(uint32_t *screen, int pitchW) +{ + int xk, yk, LCDY; + uint32_t *ptr, pix; + + LCDY = 0; + for (yk=0; yk<32; yk++) { + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalColor32[PRCColorPixels[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*4); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalColor32[PRCColorPixels[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*4); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalColor32[PRCColorPixels[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*4); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalColor32[PRCColorPixels[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + LCDY += 96; + memset(screen, 0, 672*4); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalColor32[PRCColorPixels[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*4); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalColor32[PRCColorPixels[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*4); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalColor32[PRCColorPixels[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*4); + screen += pitchW; + LCDY += 96; + } +} + +void PokeMini_VideoColorL7x7_16(uint16_t *screen, int pitchW) +{ + int xk, yk, LCDY; + uint16_t *ptr, pix; + + LCDY = 0; + for (yk=0; yk<32; yk++) { + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalColor16[PRCColorPixels[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*2); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalColor16[PRCColorPixels[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*2); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalColor16[PRCColorPixels[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*2); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalColor16[PRCColorPixels[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + LCDY += 96; + memset(screen, 0, 672*2); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalColor16[PRCColorPixels[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*2); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalColor16[PRCColorPixels[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*2); + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalColor16[PRCColorPixels[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + memset(screen, 0, 672*2); + screen += pitchW; + LCDY += 96; + } +} + +void PokeMini_VideoColorH7x7_32(uint32_t *screen, int pitchW) +{ + int xk, yk, LCDY; + uint32_t *ptr, pix; + + LCDY = 0; + for (yk=0; yk<64; yk++) { + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalColorH32[PRCColorPixels[LCDY + xk] * 256 + PRCColorPixelsOld[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalColorH32[PRCColorPixels[LCDY + xk] * 256 + PRCColorPixelsOld[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalColorH32[PRCColorPixels[LCDY + xk] * 256 + PRCColorPixelsOld[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalColorH32[PRCColorPixels[LCDY + xk] * 256 + PRCColorPixelsOld[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalColorH32[PRCColorPixels[LCDY + xk] * 256 + PRCColorPixelsOld[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalColorH32[PRCColorPixels[LCDY + xk] * 256 + PRCColorPixelsOld[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalColorH32[PRCColorPixels[LCDY + xk] * 256 + PRCColorPixelsOld[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + LCDY += 96; + } +} + +void PokeMini_VideoColorH7x7_16(uint16_t *screen, int pitchW) +{ + int xk, yk, LCDY; + uint16_t *ptr, pix; + + LCDY = 0; + for (yk=0; yk<64; yk++) { + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalColorH16[PRCColorPixels[LCDY + xk] * 256 + PRCColorPixelsOld[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalColorH16[PRCColorPixels[LCDY + xk] * 256 + PRCColorPixelsOld[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalColorH16[PRCColorPixels[LCDY + xk] * 256 + PRCColorPixelsOld[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalColorH16[PRCColorPixels[LCDY + xk] * 256 + PRCColorPixelsOld[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalColorH16[PRCColorPixels[LCDY + xk] * 256 + PRCColorPixelsOld[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalColorH16[PRCColorPixels[LCDY + xk] * 256 + PRCColorPixelsOld[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + ptr = screen; + for (xk=0; xk<96; xk++) { + pix = VidPalColorH16[PRCColorPixels[LCDY + xk] * 256 + PRCColorPixelsOld[LCDY + xk]]; + *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; *ptr++ = pix; + } + screen += pitchW; + LCDY += 96; + } +} diff --git a/source/Video_x7.h b/source/Video_x7.h new file mode 100644 index 0000000..7790e5f --- /dev/null +++ b/source/Video_x7.h @@ -0,0 +1,75 @@ +/* + PokeMini - Pokémon-Mini Emulator + Copyright (C) 2009-2012 JustBurn + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifndef POKEMINI_VIDEO_X7 +#define POKEMINI_VIDEO_X7 + +#include + +// Video specs +extern const TPokeMini_VideoSpec PokeMini_Video7x7; + +// Return the best blitter +TPokeMini_DrawVideo32 PokeMini_GetVideo7x7_32(int filter, int lcdmode); +TPokeMini_DrawVideo16 PokeMini_GetVideo7x7_16(int filter, int lcdmode); + +// Render to 672x448, analog + scanline +void PokeMini_VideoAScanLine7x7_32(uint32_t *screen, int pitchW); +void PokeMini_VideoAScanLine7x7_16(uint16_t *screen, int pitchW); + +// Render to 672x448, 3-colors + scanline +void PokeMini_Video3ScanLine7x7_32(uint32_t *screen, int pitchW); +void PokeMini_Video3ScanLine7x7_16(uint16_t *screen, int pitchW); + +// Render to 672x448, 2-colors + scanline +void PokeMini_Video2ScanLine7x7_32(uint32_t *screen, int pitchW); +void PokeMini_Video2ScanLine7x7_16(uint16_t *screen, int pitchW); + +// Render to 672x448, analog + dot matrix +void PokeMini_VideoAMatrix7x7_32(uint32_t *screen, int pitchW); +void PokeMini_VideoAMatrix7x7_16(uint16_t *screen, int pitchW); + +// Render to 672x448, 3-colors + dot matrix +void PokeMini_Video3Matrix7x7_32(uint32_t *screen, int pitchW); +void PokeMini_Video3Matrix7x7_16(uint16_t *screen, int pitchW); + +// Render to 672x448, 2-colors + dot matrix +void PokeMini_Video2Matrix7x7_32(uint32_t *screen, int pitchW); +void PokeMini_Video2Matrix7x7_16(uint16_t *screen, int pitchW); + +// Render to 672x448, analog +void PokeMini_VideoANone7x7_32(uint32_t *screen, int pitchW); +void PokeMini_VideoANone7x7_16(uint16_t *screen, int pitchW); + +// Render to 672x448, 3-colors +void PokeMini_Video3None7x7_32(uint32_t *screen, int pitchW); +void PokeMini_Video3None7x7_16(uint16_t *screen, int pitchW); + +// Render to 672x448, 2-colors +void PokeMini_Video2None7x7_32(uint32_t *screen, int pitchW); +void PokeMini_Video2None7x7_16(uint16_t *screen, int pitchW); + +// Render to 672x448, unofficial colors +void PokeMini_VideoColor7x7_32(uint32_t *screen, int pitchW); +void PokeMini_VideoColor7x7_16(uint16_t *screen, int pitchW); +void PokeMini_VideoColorL7x7_32(uint32_t *screen, int pitchW); +void PokeMini_VideoColorL7x7_16(uint16_t *screen, int pitchW); +void PokeMini_VideoColorH7x7_32(uint32_t *screen, int pitchW); +void PokeMini_VideoColorH7x7_16(uint16_t *screen, int pitchW); + +#endif