/* * This file is part of the Advance project. * * Copyright (C) 2003 Andrea Mazzoleni * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * 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, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * In addition, as a special exception, Andrea Mazzoleni * gives permission to link the code of this program with * the MAME library (or with modified versions of MAME that use the * same license as MAME), and distribute linked combinations including * the two. You must obey the GNU General Public License in all * respects for all of the code used other than MAME. If you modify * this file, you may extend this exception to your version of the * file, but you are not obligated to do so. If you do not wish to * do so, delete this exception statement from your version. */ #ifdef HAVE_CONFIG_H #include #endif #include "SDL.h" #include "../screen.h" #include "../video.h" #include "lq3x.h" static Uint16 *dst0, *dst1, *dst2, *src0, *src1, *src2; static Uint16 height; /***************************************************************************/ /* LQ3x C implementation */ /* * This effect is derived from the hq3x effect made by Maxim Stepin */ SDL_bool effect_lq3x_init(void) { return SDL_TRUE; } void lq3x_16_def(Uint16 *dst0, Uint16 *dst1, Uint16 *dst2, Uint16 *src0, Uint16 *src1, Uint16 *src2, unsigned count) { unsigned i; for(i=0;i0) { c[0] = src0[-1]; c[3] = src1[-1]; c[6] = src2[-1]; } else { c[0] = c[1]; c[3] = c[4]; c[6] = c[7]; } if (ipixels; dst1 = (Uint16 *)dst0 + visible_area.w*3; dst2 = (Uint16 *)dst1 + visible_area.w*3; src1 = (Uint16 *)buffer->pixels + 352 * visible_area.y + visible_area.x; src0 = (Uint16 *)src1 - 352; src2 = (Uint16 *)src1 + 352; while(height--) { lq3x_16_def(dst0, dst1, dst2, src0, src1, src2, visible_area.w); dst0 += (visible_area.w*9); dst1 += (visible_area.w*9); dst2 += (visible_area.w*9); src0 += 352; src1 += 352; src2 += 352; } }