Some image conversions I made

A place for your artistic side. Discuss techniques and tools for pixel art on the NES, GBC, or similar platforms.

Moderator: Moderators

Post Reply
User avatar
thefox
Posts: 3134
Joined: Mon Jan 03, 2005 10:36 am
Location: 🇫🇮
Contact:

Some image conversions I made

Post by thefox »

Image

Some time ago I wrote a tool in C# to convert arbitrary images to be displayed in NES demos etc. I thought I'd share some of the images I've converted using it (most found from the interwebs). The tool isn't completely automatic, it requires preprocessing in Photoshop/some other image editor.

The above image was captured from Nestopia with NTSC filter turned on, although I had to manually blend the "interlace" frames together in Photoshop because GIF can't animate fast enough. It's pretty close anyways.

The images are "bitmapped", i.e. CHR bank is switched 3 times while rendering. Nametable is also switched every 8 scanlines for 16x8 attribute area. Sprites are overlayed on top for more detail, with varying results. Also (in some images) a different image is displayed every two frames for bigger (pseudo)resolution. Total amount of data per image is about 20KB, twice that for interlaced ones. Some of my personal favourites are "cry", "hui", "hui2", "kompovoittaja", "koopa", "luut", "testi" and "woo". "testi" is special, it has slower flicker rate to give it a 3D feel.

There are 35 images in the pack. Nestopia is preferred. Some images are NSFW. :oops:

Download: http://kkfos.aspekt.fi/downloads/bunch- ... l-1-v2.zip

EDIT: version 2 link updated
Last edited by thefox on Mon Jan 10, 2011 10:01 am, edited 2 times in total.
User avatar
koitsu
Posts: 4201
Joined: Sun Sep 19, 2004 9:28 pm
Location: A world gone mad

Post by koitsu »

I should note that the ROMs when loaded in Nestopia with its Region option set to "Auto" (the default) do not appear to work correctly -- they appear to resort to NTSC. Forcing PAL in the emulator fixes it.

The problem is that the header on the ROMs is incorrect. Taken from angel2.nes, file offset 0:

Code: Select all

00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
-------------------------------------------------------------------
4E 45 53 1A 08 08 40 00 00 00 00 00 00 00 00 00    NES...@.........
-------------------------------------------------------------------
                           ^^
Byte 9, as shown above, is zero, which means NTSC. Set this to 0x01 (bit 0 = 1) to indicate PAL. Doing so fixes the problem. File format documentation is available.

Please fix this in all of your ROMs and remake the .zip file. Thanks!

EDIT: The Famitracker playback code apparently automatically detects an NTSC or PAL console; possibly you could use the same technique to ensure that the ROMs work on both regions?
User avatar
thefox
Posts: 3134
Joined: Mon Jan 03, 2005 10:36 am
Location: 🇫🇮
Contact:

Post by thefox »

koitsu wrote:I should note that the ROMs when loaded in Nestopia with its Region option set to "Auto" (the default) do not appear to work correctly -- they appear to resort to NTSC. Forcing PAL in the emulator fixes it.
Thanks, I didn't know Nestopia checks (and honors) that flag. Not going to update the zip right now though. :)
EDIT: The Famitracker playback code apparently automatically detects an NTSC or PAL console; possibly you could use the same technique to ensure that the ROMs work on both regions?
Yeah I'll probably do that when I get around to polishing the code. Pornotracker iNES player does the same.
User avatar
Bregalad
Posts: 8056
Joined: Fri Nov 12, 2004 2:49 pm
Location: Divonne-les-bains, France

Post by Bregalad »

Well I see your passion for girls is still as intense. (and 60's supposedly herotic stuff isn't my thing but oh well everyone likes different things)

The quality of images is really breathtaking ! It remembers me a C64 utility that was called Project One (if I remember well....) that could convert any pic to be displed on the C64, and it was similar. I worked also wonder with hentai-ish pics, not so well with real pics.

Why are some pics flicering (well a good half of them actually) ? I prefer the still ones. Are they supposed to be interlaced ? If so it'll only work on modern displays (like mine) but then you have 1/2 chances of having lines reversed, how can you prevent that ?

Of if they aren't supposed to be interlaced, but are supposed to average the colors, then I beg you to give up this idea. Batman's intro looks horrible on all displays I tried it on (interlaced and not, emulated and not), I don't want this error to be repeated.

But yeah the quality is really awesome ! Hard to imagine you had to work with the limiations of the NES, which are complex to handle, as opposed to the limitatoins of the C64 which doesn't have this attribute table thing.
Useless, lumbering half-wits don't scare us.
User avatar
thefox
Posts: 3134
Joined: Mon Jan 03, 2005 10:36 am
Location: 🇫🇮
Contact:

Post by thefox »

Bregalad wrote:Well I see your passion for girls is still as intense.
Haha.. what can I say. :twisted:
(and 60's supposedly herotic stuff isn't my thing but oh well everyone likes different things)
60's where? :)
The quality of images is really breathtaking ! It remembers me a C64 utility that was called Project One (if I remember well....) that could convert any pic to be displed on the C64, and it was similar. I worked also wonder with hentai-ish pics, not so well with real pics.
Thanks! I also think the result are decent. I've also used Project One (trivia: it's called that because it's made in Visual Basic and the default project name is Project1 :) ).
Why are some pics flicering (well a good half of them actually) ? I prefer the still ones. Are they supposed to be interlaced ? If so it'll only work on modern displays (like mine) but then you have 1/2 chances of having lines reversed, how can you prevent that ?

Of if they aren't supposed to be interlaced, but are supposed to average the colors, then I beg you to give up this idea. Batman's intro looks horrible on all displays I tried it on (interlaced and not, emulated and not), I don't want this error to be repeated.
Yeah it's supposed to average the colors, there's no way to combat that 50%/50% problem to display a real 256x480 interlaced image and even then, like you said, it would only work on modern displays.

I was aiming for "average the colors" with flickering (I have source images which are 512x240 or 256x480)... so it basically simulates resampling 512x240 or 256x480 image to 256x240. That's what I mean with "pseudo resolution". Personally I like the effect, but I guess it's not for everybody.

I think Batman is little bit different though, in most of these images the flicker effect is quite subtle (large pixel areas usually stay static) whereas in Batman it flickers between two completely different screens. I'm not fan of that intro either.
User avatar
B00daW
Posts: 586
Joined: Thu Jan 03, 2008 1:48 pm

Post by B00daW »

thefox: :D

Some of my personal favorites are kameli, kompovoittaja, luut, testi (of course), tubak, and woo. Very beautiful stuff.

Now this is all very beautiful, and I'm pretty sure you might have considered this idea, but as a challenge do you think you would be able to pull off a water ripple effect with the dithering? Maybe you can find an image of someone looking at their reflection in a puddle or something.
User avatar
Bregalad
Posts: 8056
Joined: Fri Nov 12, 2004 2:49 pm
Location: Divonne-les-bains, France

Post by Bregalad »

Well, I think one should never make something blinking if it's not supposed to flicker.

For example, if your hero is invincible after getting hit, make him flicker. If you want to add a cool effect to animated fire, make it flicker. But, by all means, if you want something to be transparent or some way to average color, DO NOT MAKE THEM FLICKER.
This is the global consensus, no matter if it's still screens or wathever. I mentionned Batman's intro, but there is also the water area in Castlevania 3, which are the same problem.
Konami throught "well we'll make Trevor's leg's flickering so that the color will average, and they'll look like they're in water". NO THEY DON'T they look like crappy filtering legs (emulator / old display) or like horizontal vermicelli (modern display with interlacing).

Also I tested them on my new monitor, and apparently it switches the even/odd interlacing every half second or so for some reason, so it looks horrible, it flickers at about 1 Hz, which is even worse.

The pics that doesn use flickering, such as Angel 2, Joku, Teen and Teen2 looks really amazing.

The individual frames in most flickering images looks really good by themselves, but you have to pause emulation to really admire the pic.

When the flickering is very slight, such as in "retarded", it might actually look decent. The worst is as seen in "cry", there is a lot of flickering full areas which looks just horrible.
60's where?
Well some of those pics are just 60's old-fashioned (or it might be 70's, to me it's the same).
Useless, lumbering half-wits don't scare us.
3gengames
Formerly 65024U
Posts: 2284
Joined: Sat Mar 27, 2010 12:57 pm

Post by 3gengames »

Agreed, flicker is SO annoying. (I paused it on FCEUXD. Couldn't take it.) but other then thats, it's awesome! The NESS one was terrific! :D Awesome tool and cool stuff. :D
User avatar
tokumaru
Posts: 12427
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Post by tokumaru »

Unfortunately, flickering doesn't work as well as we'd like. The result is too distracting and hard to look at, killing all the beauty of the images.

Still, most of these images look nice, even though flickering at 50Hz is even worse than flickering at 60Hz. The tricks with the vertical stripes are very nice, and more suited to actual games IMO.
User avatar
Dwedit
Posts: 4924
Joined: Fri Nov 19, 2004 7:35 pm
Contact:

Post by Dwedit »

If you're running it on an emulator on a laptop display, the flicker looks good from LCD blur. If you're running it on a NES connected to a HDTV, there is real interlacing, hopefully not inverted.
Here come the fortune cookies! Here come the fortune cookies! They're wearing paper hats!
User avatar
thefox
Posts: 3134
Joined: Mon Jan 03, 2005 10:36 am
Location: 🇫🇮
Contact:

Post by thefox »

Thanks for all the comments.
B00daW wrote:Now this is all very beautiful, and I'm pretty sure you might have considered this idea, but as a challenge do you think you would be able to pull off a water ripple effect with the dithering? Maybe you can find an image of someone looking at their reflection in a puddle or something.
Other than converting each animation frame separately (at 20KB a pop) can't really be done. Would still make a funny tech demo so I might give it a go if I find a good animation. ~10 or so frames should make a pretty good repetitive animation. :)
tokumaru wrote:Unfortunately, flickering doesn't work as well as we'd like. The result is too distracting and hard to look at, killing all the beauty of the images.

Still, most of these images look nice, even though flickering at 50Hz is even worse than flickering at 60Hz. The tricks with the vertical stripes are very nice, and more suited to actual games IMO.
Yeah, some images work better than others, much of it is up to randomness (and tweaking the parameters). The two flicker/interlace frames are converted separately without knowledge of each other so sometimes large areas might receive completely different colors, so it doesn't always look that great.

Oh well, I was expecting that the flicker would split opinions. :)
User avatar
Bregalad
Posts: 8056
Joined: Fri Nov 12, 2004 2:49 pm
Location: Divonne-les-bains, France

Post by Bregalad »

If you're running it on an emulator on a laptop display, the flicker looks good from LCD blur.
You probably have a quite old laptom then. Mine is a Lenovo Think Pad T400 bought in 2009, and it doesn't have any blur at all.
Useless, lumbering half-wits don't scare us.
User avatar
Dwedit
Posts: 4924
Joined: Fri Nov 19, 2004 7:35 pm
Contact:

Post by Dwedit »

I only get limited LCD blur when the picture is two frames perfectly alternating at 60FPS. When you flicker Red and Blue on the screen, it looks like solid purple.
Here come the fortune cookies! Here come the fortune cookies! They're wearing paper hats!
User avatar
Bregalad
Posts: 8056
Joined: Fri Nov 12, 2004 2:49 pm
Location: Divonne-les-bains, France

Post by Bregalad »

Well, I tested Rad Racer, to see what it would look like. When you turn "3D glasses mode", outside of the road the blank area flickers between solid red and solid green, so that's a good test :

- PAL : It looks like very flickering, the colors definitely don't blend
- NTSC : The colors blends pretty much OK, but you can see some interference going slowly downwards. Likely due to the difference between NES's almost 60Hz refresh and my 60Hz refresh.

My laptop screen only supports 60Hz refresh, so I can't change that. On my old CRT I could put it at 72 Hz, but I can't any longer.

EDIT : Oh in fact it supports 60Hz and 50 Hz. So I put it in 50Hz mode, and MAN THE FLICKERING IMAGES LOOKS RIDICULOUSLY BETTER. The colors blend together perfectly, you can still see that downwards interference.
Cry still looks bad (visible flickering on some colors + blocky), but the others looks amazing, with more colors.

So yeah this flickering method works only if the host's screen refresh rate is the same as the emulated NES.

To bad I'm afraid on real HW this won't work as well.
Useless, lumbering half-wits don't scare us.
User avatar
thefox
Posts: 3134
Joined: Mon Jan 03, 2005 10:36 am
Location: 🇫🇮
Contact:

Post by thefox »

I updated the code to be both PAL/NTSC compatible with automatic detection, here's an example: http://thefox.aspekt.fi/nes/hui-ntsc.nes. I'll see about updating the rest of the images later. I don't have an NTSC console so I couldn't test this on real NES, so there might be attribute glitches. If somebody can test it for me I'd be grateful, altho it might be hard to spot the glitches on that specific image.
Bregalad wrote:To bad I'm afraid on real HW this won't work as well.
Why is that? I don't think it should look too bad on a CRT. It does look like shit on my HDTV but that is to be expected when it treats the signal as 480i. Need to get me that upscaler...
Post Reply