Author Topic: Nearest neighbor interpolation...  (Read 1338 times)

GreatMightyMoe (OP)

  • Posts: 3
Nearest neighbor interpolation...
« on: June 28, 2018, 08:53:19 pm »
Hello,

I bought my GCW0 several years ago, when it came out. Unfortunately I never played very much on it...  :'( The reason for that is that most emulated systems look really... blurry.

So... is there any way to just have the image scaled by nearest-neighbor interpolation?
Maybe there is some config file to set the hardware upscaler to nearest neighbor?
Or does anyone know a GB/GBC emulator that has a setting to deactivate bilinear filtering/use nearest neighbor in fullscreen mode?

Please do not lecture me about the pros and cons of different interpolation methods... This thread should just answer the question of how to get nearest-neighbour scaling for the emulators.


Thanks!!  :)

gameblabla

  • Posts: 1345
Re: Nearest neighbor interpolation...
« Reply #1 on: June 28, 2018, 10:40:21 pm »
If the picture looks blurry or smeared, then they're using the IPU for rescaling with a linear algorithm.
I guess in theory it would be possible to add support for nearest neighbor for the IPU, they had already added support for bilinear in the yet-to-be-released newer kernel. (if i'm not mistaken)

But right now, the only way to have that pixelated look is to use software rendering. (either by just centering the picture, deboubling or do some ugly pixel scaling, which is rarely done now because it also slow downs the emulator)

For reGBA, you should just activate the border mode. Ohboy, dunno.

EDIT: Oh wait, you want a fullscreen nearest neighbor option ? Sorry but few emulators provide that option, not even ReGBA. (they got rid of it because it ran slower and looked uglier i think)
« Last Edit: June 28, 2018, 11:32:16 pm by gameblabla »

GreatMightyMoe (OP)

  • Posts: 3
Re: Nearest neighbor interpolation...
« Reply #2 on: June 30, 2018, 11:23:56 pm »
Hm, that's a pity.
I found these lines in the framebuffer code (display driver?):
https://github.com/gcwnow/linux/blob/db79c83da67abdba123a2ee449a386fdc1ed5f39/drivers/video/fbdev/jz4770_fb.c#L122

There seems to be a setting for sharpness, but it looks like it's hardcoded to 8? Or is this somehow exposed to be changed by the user? There seems to be some code for some system files further down, but I don't know how all of that really works...

There are some files on the system located in /sys/devices/platform/jz-lcd.0/graphics/fb0 that look like they hold some graphics related settings, but I am not able to change any of the files anyways, because of lacking permissions...

Is there maybe some old opk of ReGBA floating around, that still supports nearest neigbor?


Edit:
Ah okay, this code belongs to a brand new commit from April, so it's not available for the 2014 firmware anyways:
https://github.com/gcwnow/linux/commit/8dc42ea962b0b875610088ba092fc3155c4f926e
The commit message talks about "Added two sysfs settings 'sharpness_upscaling', 'sharpness_downscaling'." Are these sysfs settings somehow exposed to the user? I hope they are?!  :o :o
« Last Edit: June 30, 2018, 11:46:22 pm by GreatMightyMoe »

pcercuei

  • Posts: 1643
    • My devblog
Re: Nearest neighbor interpolation...
« Reply #3 on: July 01, 2018, 08:37:05 pm »
It will be possible to change that setting from sysfs, or maybe from a GUI if somebody's motivated enough to make one.
It will be available in the next firmware release, coming Soon?.