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

User avatar
thefox
Posts: 3141
Joined: Mon Jan 03, 2005 10:36 am
Location: Tampere, Finland
Contact:

Post by thefox » Sun Mar 04, 2012 3:04 am

I recently found out there's a nice feature in Photoshop called "Actions" which allow you to record a list of actions taken (like a macro) and then rerun it later. This makes it much easier to test different configurations of contrast/dithering/etc on images to be converted to find out what settings give the best results.

--
Bregalad wrote:Question : is there a way to get a converted image that isn't "shaky" ?
I just hate how shaky the resluting NES ROMs are, I understand you want this effect to add more colors but it really looks terrible on my computer.
Just make the image at 256x240 resolution and resize (nearest neighbor, that is no filtering) to 512x240 or 256x480, then convert.
PS : Also, is there a way to prepare the images for conversions without using a pay-ware (fotshop) ? Because the results looks horrible if I don't prepare them for conversion.
You can use Imagemagick or any other tool that allows mapping to a specific palette, but I never got as good results out of Imagemagick as Photoshop.
Macbee wrote:I'm still having a lot of fun with this program.
I even started a blog with title screen remakes of classic games (all created with NES Image Converter): http://mcbremakes.blogspot.com/

Thanks again for this wonderful software!
Macbee
Pretty cool stuff, you're welcome!

User avatar
Roni
Posts: 113
Joined: Fri Sep 26, 2008 7:55 pm
Location: Montreal
Contact:

Post by Roni » Fri May 25, 2012 3:10 pm

I just had to try it from scratch, since I couldn't get the converter tool working. a lot of trial & error between GIMP, mspaint and Nesst but I finally got the basic idea. it might flicker a little due to the contrast difference between the 2 frames but it's no worse than I expected. anyway here's my attempt:


https://www.dropbox.com/s/48a45c0pl03hpib/inta.zip


I couldn't quite figure out how to split an image into two interlaced frames so i just found two other elements to split it into, the red colour channel and the blue/green (cyan) colour channel. I've yet to try it on a CRT with a devcart but i'm hoping the flicker won't be as noticeable...

tepples
Posts: 21748
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Post by tepples » Fri May 25, 2012 4:00 pm

To split an image into interlaced pairs in GIMP, try using "erase every other row" then copy and paste a pixel up or down.

I'd recommend splitting into green and magenta planes, as the eye is more sensitive to green detail. I'd also recommend switching between the images per scanline if possible. Should I make my own ROM to demonstrate this?

User avatar
infiniteneslives
Posts: 2097
Joined: Mon Apr 04, 2011 11:49 am
Location: WhereverIparkIt, USA
Contact:

Post by infiniteneslives » Fri May 25, 2012 4:29 pm

It doesn't work very well on the NES...

I get a different color base and graphics glitch on each power up. Usually it won't run at power up either, you've got to hit reset.

Realize the colors aren't what they should be but the flickering is pretty noticeable.

User avatar
Roni
Posts: 113
Joined: Fri Sep 26, 2008 7:55 pm
Location: Montreal
Contact:

Post by Roni » Fri May 25, 2012 6:14 pm

infiniteneslives wrote: I get a different color base and graphics glitch on each power up. Usually it won't run at power up either, you've got to hit reset.
my bad...in my rushed programming I often forget to clear PPU and RAM which often reveals glitchy data when I finally run the program on NES hardware
tepples wrote: I'd also recommend switching between the images per scanline if possible. Should I make my own ROM to demonstrate this?
I thought that any mid-rendering PPU operation beyond a Sprite Zero Hit required timed code or an IRQ timer...

User avatar
Roni
Posts: 113
Joined: Fri Sep 26, 2008 7:55 pm
Location: Montreal
Contact:

Post by Roni » Fri May 25, 2012 6:18 pm

I guess my real question is: could the average player handle playing through an entire Shadowgate-style RPG made of images of this quality?

tepples
Posts: 21748
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Post by tepples » Fri May 25, 2012 6:34 pm

I shopped up something quick in GIMP as a demonstration.

ImageImage
Green and magenta channels from this render

Image
Green and magenta channels summed (not possible on NES)

Image
Channels displayed in alternate frames (trivial on NES)

Image
Channels displayed on alternate scanlines (far more stable-appearing; requires one scroll change per scanline on NES)

If the last picture is acceptable to players, then of course a point-and-click-fest would be possible on an NES.

User avatar
Roni
Posts: 113
Joined: Fri Sep 26, 2008 7:55 pm
Location: Montreal
Contact:

Post by Roni » Fri May 25, 2012 7:33 pm

so...that means on one fully rendered frame there would be all the even scanlines of the Magenta channel / odd scanlines of the Green channel ; and on the next frame it would be evens-green/odds magenta?

tepples
Posts: 21748
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Post by tepples » Fri May 25, 2012 7:56 pm

Correct. How does it look in the GIF? Should I try making a ROM next to demonstrate?

User avatar
rainwarrior
Posts: 7669
Joined: Sun Jan 22, 2012 12:03 pm
Location: Canada
Contact:

Post by rainwarrior » Fri May 25, 2012 9:15 pm

Those last two examples would look the same on my TV, actually; it combines two interlaced frames into one image.

User avatar
Roni
Posts: 113
Joined: Fri Sep 26, 2008 7:55 pm
Location: Montreal
Contact:

Post by Roni » Sat May 26, 2012 7:31 am

would you do it using timed code to change $2005 and $2000.1 every scanline? would there be any time left to run a game engine after that? maybe if the engine started running halfway down the screen...

tepples
Posts: 21748
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Post by tepples » Sat May 26, 2012 8:01 am

Roni wrote:would you do it using timed code to change $2005 and $2000.1 every scanline?
I think it's just one write to $2000.0 per scanline with vertical mirroring, or one write to the mapper per scanline with 1-screen mirroring. Both nametables have the same tile numbers loaded into them, just different attributes.
would there be any time left to run a game engine after that? maybe if the engine started running halfway down the screen...
You mentioned Shadowgate. A turn-based graphical adventure or visual novel like Shadowgate or Myst or Ace Attorney series could certainly get away with running the engine halfway down. Mapper support to switch between nametables after each scanline (similar to the pattern table switching of MMC2) could make it even easier.

User avatar
Roni
Posts: 113
Joined: Fri Sep 26, 2008 7:55 pm
Location: Montreal
Contact:

Post by Roni » Sat May 26, 2012 9:14 am

I am thinking a seamless optimized blend of high and low-res regions with the text superimposed incidentally, perhaps by mapping the text over each tile in chr-ram. maybe SxROM can do this?

User avatar
Roni
Posts: 113
Joined: Fri Sep 26, 2008 7:55 pm
Location: Montreal
Contact:

Post by Roni » Sat May 26, 2012 2:19 pm

I forget...how many NES CPU cycles long is an NTSC scanline? is it a whole number? IIRC I can't use simple timed code, like NOP strings, to land on each scanline.

User avatar
Dwedit
Posts: 4236
Joined: Fri Nov 19, 2004 7:35 pm
Contact:

Post by Dwedit » Sat May 26, 2012 2:36 pm

For NTSC and Dendy, 341 ppu dots is 113.66666 CPU cycles per scanline.
For PAL, I think it's 106.5625 CPU cycles per scanline.
Here come the fortune cookies! Here come the fortune cookies! They're wearing paper hats!

Post Reply