Iniciado por
bitrider
La 7, cogiendo de Steward-fu y compilando para que me permita estático ya que por defecto viene como dinámico sólo. Probé la 10 de mil maneras y nada, la 9 creo que igual, con la 8 no he probado.
Yo con la de Steward y gcc 10 no tuve problemas y para musl y gcc 10, convirtiendo todos los .cpp a .c cogiendo de base este commit tampoco.
Queda muy resultón y el bilinear y no parece chupar muchos recursos. Estás tirando de APU fast o compatible ?
Con cualquiera de los dos (las imágenes están tomadas con el compatible) no noto bajón en el rendimiento, pero puede ser debido a que igual la velocidad de las operaciones de memoria en el QEMU va a lo máximo que permita el PC y no es comparable con lo que pueda suceder en el hardware real.
Este es el código que uso modificando el de Wiz:
Código:
void gp_video_RGB_setscaling(int W, int H)
{
uint16_t * pSource = (uint16_t *)pOutputScreen;
uint16_t * pTarget = (uint16_t *)framebuffer16[currFB];
unsigned short y;
unsigned short x;
if (H == 239)
{
for (y = 240; y != 0; y--)
{
pSource+=32;
for (x = 64; x != 0; x--)
{
uint16_t _1 = pSource[0];
pTarget[0] = _1;
uint16_t _2 = pSource[1];
pTarget[1] = Weight1_3( _1, _2);
uint16_t _3 = pSource[2];
pTarget[2] = Weight1_1( _2, _3);
uint16_t _4 = pSource[3];
pTarget[3] = Weight3_1( _3, _4);
pTarget[4] = _4;
pTarget+=5;
pSource+=4;
}
pSource+=32;
}
}
else // 224
{
pSource += 2560;
unsigned short pos = 2;
for (y = 240; y != 0; y--)
{
pSource+=32;
for (x = 64; x != 0; x--)
{
uint16_t _1 = pSource[0];
pTarget[0] = _1;
uint16_t _2 = pSource[1];
pTarget[1] = Weight1_3( _1, _2);
uint16_t _3 = pSource[2];
pTarget[2] = Weight1_1( _2, _3);
uint16_t _4 = pSource[3];
pTarget[3] = Weight3_1( _3, _4);
pTarget[4] = _4;
pTarget+=5;
pSource+=4;
}
pSource+=32;
pos--;
if (pos == 0)
{
pSource -= 320;
pos = 14;
}
}
}
}
basado en https://github.com/m45t3r/snes9x2002...s/scaler.c#L31
El de alekmaul para el mame4all se ve bastante peor.
Código:
if (H == 224)
bitmap_scale(32, 8, W, H, 320, 240, 320, 0, pSource, pTarget);
else
bitmap_scale(32, 0, W, H, 320, 240, 320, 0, pSource, pTarget);
Marcadores