Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

The issue with the tooth isn't a bug in the renderer. That's how the image is defined. The skull's teeth are two pixels wide. Their edges are stored as vectors, with yellow fill in places.

The missing tooth consists of a black line painted over the (already-drawn) teeth. It is one pixel wide, and it either covers both pixels of the tooth's width due to being drawn over a pixel boundary, or it covers the lower (rightmost) half of the tooth while the upper half is covered by the strangely pointed jawline that you can see in the "upscaled" image. The "upscaler" sees that it's defined as a line and renders it at the width of a line, which ruins the artwork, but it's a faithful interpretation of the stored data if you really believe that the stored data is vector art rather than compressed pixel art.

Exactly the same thing happens with the blue lighting on the same skull's forehead. As you can clearly see by looking at the original artwork, this is blue shading over a three-dimensional roughly spherical surface. But, because the image has a low resolution, the shading is defined as three vertical lines, one pixel wide each, which just happen to paint over the edge of the skull shape. Those three lines are still present in the rerender, but it has interpreted them as lines instead of areas, which is nonsensical.

> Either way, the second skull to the right has the tooth blacked out correctly and looks great.

But that skull also looks terrible. It's covered in weird squiggles that have no image data for the space between them, because they're supposed to be wider. Look at the lower jaw, right under the teeth. Look at the blue lighting in the skull's upper right. Look at the lighting on the neck vertebrae. Look at the nasal opening.



> "The issue with the tooth isn't a bug in the renderer. That's how the image is defined."

OK, "Bug" is the wrong word. This renderer/up-scaler is using various tricks and techniques to render the image at a higher resolution than it was ever designed for. Elsewhere it's scaling up the width of a line / size of a pixel so that it looks appropriate, but for whatever reason it's missed a trick here.

> "But that skull also looks terrible."

I think your expectations are too high! You can't expect it to look as good as modern game art, but it's neat that such an old and tiny game can be made to look much sharper than it originally did.


It would be interesting to take this vector data and do some more sophisticated rendering on it. If this output EPS/SVG I would be tempted to load a few images into Illustrator and play around with assigning various brushes to the lines; replacing the naive line rendering with something that looks more like a slightly messy paintbrush that mostly fills the same space as a big fat EGA pixel could fix all the rendering errors you’ve noted, and look pretty.


Looks like the message for the last commit touching pic_path.rb was "can make a crappy SVG".

A fatter brush would go a long way toward fixing the rendering errors, but I don't think it could do much about the blue shading on the left of the left skull being defined as three separate vertical lines when conceptually it's one spherical shadow. If you can determine the orientation of the lines at all, they're going to be wrong.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: