Tile set for Alisha's Adventure

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
Tile set for Alisha's Adventure
by on (#150424)
I want to work on the tile set for Alisha's Adventure. I'm planning on 8 levels, each with a different tile set, but can include shared tiles. To make it less intimidating, I'm going to start with only 64 16x16 tiles, and maybe only use 3 designated palettes, leaving 3 more palettes for BG2, and the last 2 palettes for BG3.

Possible level themes:

Level 1: City and Grassland
Level 2: Graveyard and Castle
Level 3: Pirate Ship
Level 4: Downtown City
Level 5: Rail Road
Level 6: Desert and Pyramid
Level 7: Ghost Ship
Level 8: Secret Base

Possible things to add to level 1 tile set:

Lava
Fence
Palm Trees
Iron Construction Bars
Re: Tile set for Alisha's Adventure
by on (#150434)
Are you saying you want people to help you? I can probably do that...

When you mean "iron construction bars", do you mean like large red girders, like on Donkey Kong? Also, why have the palettes be so strict? You could have it to where BG 1 and 2 share 6-7 palettes, and BG 3 uses the remaining 1-2.
Re: Tile set for Alisha's Adventure
by on (#150521)
The blue tiles are for the ceiling of an underground tunnel.
Re: Tile set for Alisha's Adventure
by on (#150525)
That seems like a waste of a palette... Chances are, the grass won't even touch the tunnel edges.

Anyway, I made some lava if you want to use it.

Attachment:
lava.png
lava.png [ 3.25 KiB | Viewed 5724 times ]
Re: Tile set for Alisha's Adventure
by on (#150652)
I darkened the blue ceiling to make it look more shadowing because it is underneath dirt. I adjust your colors to make it look a little more uniform with my colors, and added some boiling bubbles.
Re: Tile set for Alisha's Adventure
by on (#150653)
No joke, the lava looks awesome. (I forgot how you didn't like using the color white, although I've grown fond of it.) I didn't know how to draw lava that was being viewed from straight on, only from a slightly overhead view like the lava themed levels in DKC2. I do think the little black dots in the lava look a little odd though. (It looks like some sort of weird dithering when reducing the colors in a picture.) Are they also supposed to be bubbles? Another thing my OCD self noticed which was actually after I made the original lava is that the lava might be lowered down some, because the lava actually is above where the grass ends, and looking at it, it looks a bit funky to me. I'd lower it down about 5 pixels, but wait, won't this just mess with collision then? I hope the lava bubbles are going to be animated. One last little thing to take into consideration is that you can always use the same color for something else, like the the pure red in the lava could also be a color used in a girder. It kind of gives the illusion that there are more colors then there really are.
Re: Tile set for Alisha's Adventure
by on (#150663)
How doesn't the lava warm the rest of the room? Or is it not really lava but instead boiling Kool-Aid?
Re: Tile set for Alisha's Adventure
by on (#150672)
How are we sure the lava would be used in the same place as the grass tiles, anyway?
Re: Tile set for Alisha's Adventure
by on (#150682)
I'm pretty sure lava isn't supposed to have bubbles or be translucent, but it looks pretty cool. I always found it strange how DKC2, there is actually normal looking lava in the lava themed levels, but in the ship hold level Lava Lagoon, it looks like boiling Kool-Aid. (Has anyone ever actually sat down and thought about the name Kool-Aid? Is it meant to cure kids of un"kool"ness?) They could have at least disabled transparency and the bubbles, but that could potentially mess with the gameplay in the level in that you couldn't see through the lava if you had an invincibility or something. Wait, why am I talking about how realistic the lava is in a game where seals can spit ice cubes into water to turn it into lava?
Re: Tile set for Alisha's Adventure
by on (#150690)
No, I thing Kool-Aid is supposed to cure kids of aids.

DKC2 had a really cool 3D water effect. They probably used 8 HDMA channels for that.
Re: Tile set for Alisha's Adventure
by on (#150695)
psycopathicteen wrote:
I thing Kool-Aid is supposed to cure kids of aids

Wouldn't that be Aids-Aid?

psycopathicteen wrote:
DKC2 had a really cool 3D water effect. They probably used 8 HDMA channels for that.

Not just for the water. The background also uses raster effects to make it appear that it's popping out, and it's pretty convincing.
Re: Tile set for Alisha's Adventure
by on (#150697)
Espozo wrote:
psycopathicteen wrote:
I thing Kool-Aid is supposed to cure kids of aids

Wouldn't that be Aids-Aid?

That or AYDS diet candy.
Re: Tile set for Alisha's Adventure
by on (#150698)
Some improvement on my boiling kool-aid lava.

BTW, why do colors appear slightly different when I copy and paste the image over the original file in MS paint? Dark purplish brown comes out as dark brownish purple.
Re: Tile set for Alisha's Adventure
by on (#150699)
psycopathicteen wrote:
BTW, why do colors appear slightly different when I copy and paste the image over the original file in MS paint?

Does the original file use indexed colors (as opposed to 24-bit true color)? If that's the case, MS Paint might be converting the colors so they match what's available in the pallete.
Re: Tile set for Alisha's Adventure
by on (#150701)
It has the original colors in MS paint. just not when I copy it from nesdev onto MS paint.
Re: Tile set for Alisha's Adventure
by on (#150702)
Something is doing superfluous gamma correction most likely.
Re: Tile set for Alisha's Adventure
by on (#150705)
Paint? Yuck!
Re: Tile set for Alisha's Adventure
by on (#150709)
I love MS Paint for doing sprite work. The XP version was much better, though.
Re: Tile set for Alisha's Adventure
by on (#150716)
Espozo wrote:
Paint? Yuck!

There's no need to act that way if someone wants to use simple software that you don't like.

I agree that XP paint was better for the purpose, just because the UI is more concise and out of the way, and some tools don't apply AA without a clear option to disable them.
Re: Tile set for Alisha's Adventure
by on (#150717)
GraphicsGale completely dethrones any version of Paint though, especially when it comes to managing the palette.
Re: Tile set for Alisha's Adventure
by on (#150720)
mikejmoffitt wrote:
I agree that XP paint was better for [pixel art], just because the UI is more concise and out of the way, and some tools don't apply AA without a clear option to disable them.

That's one thing I like about GIMP. It has the brush tool, which applies AA, and the pencil tool, which doesn't apply AA. The eraser tool has a "Hard edge" checkbox for whether to apply AA or not, as do the elliptical and lasso selection tools. And its UI pretty much stays out of my way once I turn on single-window mode. Furthermore, GIMP has "rearrange color map" which is convenient.
Re: Tile set for Alisha's Adventure
by on (#150730)
mikejmoffitt wrote:
I agree that XP paint was better for the purpose, just because the UI is more concise and out of the way, and some tools don't apply AA without a clear option to disable them.

Besides the AA, my biggest complaints against the new MS Paint are the selection tool (you can't make a new selection near an old one because there's some sort of proximity threshold now, and it's hard as fuck to get the selection to start at the pixel you want) and the shapes (which are now treated as objects until you click away ).

Sik wrote:
GraphicsGale completely dethrones any version of Paint though, especially when it comes to managing the palette.

MS Paint is far from being the definitive sprite creation tool, mainly because of the lack of layering and any sort of palette management, so you may need to use other tools. My own conversion tools can recognize palettes drawn in the image itself, so the lack of palette management isn't really a problem for me.

tepples wrote:
That's one thing I like about GIMP.

GIMP is cool and all, but I find it too bloated for simple pixel art. I feel exactly the same about Photoshop.
Re: Tile set for Alisha's Adventure
by on (#150734)
mikejmoffitt wrote:
There's no need to act that way if someone wants to use simple software that you don't like.

I didn't mean to hurt any feelings...

tepples wrote:
That's one thing I like about GIMP. It has the brush tool, which applies AA, and the pencil tool, which doesn't apply AA. The eraser tool has a "Hard edge" checkbox for whether to apply AA or not, as do the elliptical and lasso selection tools. And its UI pretty much stays out of my way once I turn on single-window mode. Furthermore, GIMP has "rearrange color map" which is convenient.

Yup.

tokumaru wrote:
GIMP is cool and all, but I find it too bloated for simple pixel art.

That's why you hide a lot of features, although I see what you mean.
Re: Tile set for Alisha's Adventure
by on (#150752)
Neither GIMP nor Photoshop were designed for pixelart but for editing of way more complex images, so it's no wonder that doing pixelart with them is much harder than one feels it should be.
Re: Tile set for Alisha's Adventure
by on (#150753)
Gimp is quite a bit more barebones than Photoshop though.
Re: Tile set for Alisha's Adventure
by on (#152522)
Here is the palette for the first BG layer.

Code:
BG palette 2:
rgb(0,0,0)
rgb(0,10,6)
rgb(0,21,8)
rgb(8,28,9)
rgb(21,31,15)
rgb(0,0,0)
rgb(6,0,3)
rgb(13,1,4)
rgb(20,5,5)
rgb(26,12,5)
rgb(31,20,5)
rgb(0,3,6)
rgb(0,7,11)
rgb(3,13,18)
rgb(8,21,24)
rgb(17,28,30)

BG palette 3:
rgb(0,0,0)
rgb(0,0,0)
rgb(0,0,0)
rgb(0,0,0)
rgb(0,0,0)
rgb(0,0,0)
rgb(21,0,0)
rgb(27,6,0)
rgb(31,13,0)
rgb(31,21,0)
rgb(31,27,6)
rgb(18,8,6)
rgb(25,16,12)
rgb(29,23,18)
rgb(30,27,23)
rgb(31,31,27)


BG palettes 0 and 1 are reserved for BG3.
Re: Tile set for Alisha's Adventure
by on (#152538)
Sik wrote:
Neither GIMP nor Photoshop were designed for pixelart but for editing of way more complex images, so it's no wonder that doing pixelart with them is much harder than one feels it should be.

I find GIMP is quite good for pixel art, and use it frequently for this. I found this tutorial helpful: https://www.youtube.com/watch?v=PONe4IIYSnQp

The only ways I find it lacking are that palettes are not very convenient (though they can still be done), and it's not very good at all for animation.

For animated pixel art I use Aseprite, which I think is not as good an image editor as GIMP but is quite good for animation.
Re: Tile set for Alisha's Adventure
by on (#152544)
I haven't used GIMP in a while, but I remember testing animations with it. IIRC, each animation frame is a layer, and you can specify delays and other parameters using the layer's name. Then you can just go to Filters -> Animation -> Playback to see the animation. Do you need more than that?
Re: Tile set for Alisha's Adventure
by on (#152545)
Yes GIMP has very minimal support for animated GIFs, and there is a playback tool. It is very rudimentary, and awkward to use. A real animation tool is light years beyond this, really.

Aseprite lets you switch frames with a keypress, use several layers each animated separately (GIMP is using layers in lieu of real frames, preventing this possibility), easily change speeds and partial loops, onion skin to trace over previous frames, etc. etc.

There's really no comparison. GIMP's animated GIF support is a just barely working hack. Aseprite is designed around the task of animation.
Re: Tile set for Alisha's Adventure
by on (#152555)
rainwarrior wrote:
GIMP's animated GIF support is a just barely working hack.

There's no arguing that, but for simple sprite work I think it's enough.
Re: Tile set for Alisha's Adventure
by on (#152558)
rainwarrior wrote:
Aseprite lets you switch frames with a keypress, use several layers each animated separately (GIMP is using layers in lieu of real frames, preventing this possibility), easily change speeds and partial loops, onion skin to trace over previous frames, etc. etc.


Asesprite looks pretty neat. It looks like it's got most of the tools I like from photoshop without the ones that aren't useful for this workflow and a few that photoshop doesn't have.

Can Asesprite export to a CHR file and does it support metasprite editing?

I recently created my first CHR file with NES Screen Tool. It worked great for some things but had some big issues for me. One was that you couldn't arrange your metasprites first and then delete duplicates. Another was that it didn't export metasprite data in a form that was useful for me. It was set up for someone else's workflow.

I'd like to find a tool that will do these things before getting into the bulk of my animation workflow. Does any one know of an option? I'd like to avoid having to learn C at this time and spend a year making software to make my NES software, if that's possible.
Re: Tile set for Alisha's Adventure
by on (#152560)
darryl.revok wrote:
Can Asesprite export to a CHR file and does it support metasprite editing?

If you have a PNG to CHR converter, anything that can export to a PNG file can export to a CHR file. Then it's just a matter of telling your build system to rebuild the CHR file from the PNG file whenever the PNG file is newer. Are you familiar with GNU Make, Python, or both?

Quote:
Another was that it didn't export metasprite data in a form that was useful for me. It was set up for someone else's workflow.

I think the idea is that you create metasprites with the graphical tool and then run your own tool to convert them for use in your own program.

Quote:
I'd like to avoid having to learn C at this time and spend a year making software to make my NES software, if that's possible.

You don't need to learn C; you can learn something a bit more forgiving such as Python or Node.js.
Re: Tile set for Alisha's Adventure
by on (#152563)
darryl.revok wrote:
Can Asesprite export to a CHR file and does it support metasprite editing?

No and no.

Quote:
I'd like to find a tool that will do these things before getting into the bulk of my animation workflow. Does any one know of an option? I'd like to avoid having to learn C at this time and spend a year making software to make my NES software, if that's possible.

Unless you want to do a lot of manual work, you're unavoidably going to have to write some custom tools. Existing tools are few and far between. I think it's a small miracle that we even have anything like NES Screen Tool, considering how few good tools there are out there.
Re: Tile set for Alisha's Adventure
by on (#152567)
tepples wrote:
If you have a PNG to CHR converter, anything that can export to a PNG file can export to a CHR file. Then it's just a matter of telling your build system to rebuild the CHR file from the PNG file whenever the PNG file is newer. Are you familiar with GNU Make, Python, or both?


When you say a PNG to CHR convertor, do you mean an application like NES Screen Tool, Tile Layer Pro, or YY-CHR? This is what I found when I looked up PNG to CHR convertor. NES Screen Tool is the only one that I've used so far because the others looked like ROM hacking tools.

I've heard of Python but I don't know how to program for it or anything. I've never heard of GNU Make. It is a free software programming language?

Quote:
I think the idea is that you create metasprites with the graphical tool and then run your own tool to convert them for use in your own program.


The output is a binary file. How are you supposed to parse that? Even If I could program a tool to read the binary information into something that I could paste into my code, I don't know how the data is arranged.

Quote:
You don't need to learn C; you can learn something a bit more forgiving such as Python or Node.js.

I don't know much about Python, but is it possible to create a graphical interface with it wherein I could arrange metasprites? I'm intimidated to try to learn another language at the same time. I was intimidated about starting 6502 in the first place but I'm enjoying it more than I thought I would.

thefox wrote:
Unless you want to do a lot of manual work, you're unavoidably going to have to write some custom tools. Existing tools are few and far between. I think it's a small miracle that we even have anything like NES Screen Tool, considering how few good tools there are out there.


NES ST is great. With it I was able to create a CHR file and put it in a functional piece of NES software. That's pretty amazing to me. If I showed that to my 6 year old self I'd freak out.
Re: Tile set for Alisha's Adventure
by on (#152571)
darryl.revok wrote:
The output is a binary file. How are you supposed to parse that? Even If I could program a tool to read the binary information into something that I could paste into my code, I don't know how the data is arranged.

viewtopic.php?p=133350#p133350
Re: Tile set for Alisha's Adventure
by on (#152573)
Right on! Thank you for that!

So are blank tiles in the metasprite just 0s until the next metasprite begins?

Something that I figured out, that may be helpful to others, is the way NES ST translates 4-bit grayscale to 2-bit NES palette colors. It seems almost random at first, but it assigns them like this: (these are color numbers)

4-bit 2-bit
Input Output
0 = 0
1 = 1
2 = 2
3 = 3
4 = 0
5 = 1
6 = 2
7 = 3
8 = 0
9 = 1
10 = 2
11 = 3
12 = 0
13 = 1
14 = 2
15 = 3


So, I saved a swatch for color 0, color 5, color 10, and color 15, so that I would have choices which were distinguishable from one another.
Re: Tile set for Alisha's Adventure
by on (#152576)
darryl.revok wrote:
tepples wrote:
If you have a PNG to CHR converter

When you say a PNG to CHR convertor, do you mean an application like NES Screen Tool, Tile Layer Pro, or YY-CHR? This is what I found when I looked up PNG to CHR convertor. NES Screen Tool is the only one that I've used so far because the others looked like ROM hacking tools.

Some of them are command-line programs. You give it a PNG file in indexed color and a spec for a tile data format, and it spits out a CHR file containing the same pixels as the PNG, translated into tile data. There's a command-line PNG to CHR converter written in Python in the tools folder of my project templates for NES and Super NES. (Hint: NES format is 0;1, Game Boy format is 0,1, Super NES format is 0,1;2,3, and Genesis format is 3210.) Are you familiar with command-line tools?

Quote:
I've never heard of GNU Make. It is a free software programming language?

Make is a tool for expressing which files can be created from which other files, and then automatically converting them. For example, you might have a script called a "makefile" that says in essence: "This .sfc file depends on these .asm files and these .chr files, and here's how to build the .sfc file from those files. Each .chr file depends on a .png file, and here's how to convert each .png file into a .chr file."

Quote:
I don't know much about Python, but is it possible to create a graphical interface with it wherein I could arrange metasprites?

There are plenty of UI libraries for Python. Tkinter comes with the standard Windows distribution of Python. Others include wxPython, PyGTK, PyQt, and OcempGUI.
Re: Tile set for Alisha's Adventure
by on (#152844)
tepples wrote:
Are you familiar with command-line tools?


Vaguely. I grew up using DOS but never really did more in it than directory switching and running applications. My attempts to use Linux as an adult never produced much more than frustration.

Quote:
For example, you might have a script called a "makefile" that says in essence: "This .sfc file depends on these .asm files and these .chr files, and here's how to build the .sfc file from those files. Each .chr file depends on a .png file, and here's how to convert each .png file into a .chr file."


I do remember seeing makefile during any of my failed attempts at Linux. My friend and I were discussing maybe making a Linux move and I might do it. As it stands, I like OS X Snow Leopard, and Windows XP, and anything after that it too bloated for me. Apple used to be simplified and sleek because it was created for a professional graphic design and education market. Now that just kind of seems like a tiny niche to them.

Quote:
There are plenty of UI libraries for Python. Tkinter comes with the standard Windows distribution of Python. Others include wxPython, PyGTK, PyQt, and OcempGUI.


I'm really not sure what higher level language would be the best to go into. It seems like C/C++ would have the greatest functionality but may have a higher learning curve.

This might be silly but does anyone ever build PC apps in x86 ASY? I mean I'm guessing this is possible but very impractical for anything with a GUI.
Re: Tile set for Alisha's Adventure
by on (#152849)
darryl.revok wrote:
This might be silly but does anyone ever build PC apps in x86 ASY? I mean I'm guessing this is possible but very impractical for anything with a GUI.

Handling the GUI stuff in assembly isn't too bad; the real issue is the massive amount of code you have to write to get simple things done. Of course, some people still use assembly anyway.
Re: Tile set for Alisha's Adventure
by on (#152860)
Does ASY mean assembly?

Yeah, there's a fair amount of Win32 assembly programmers. There's plenty of reference material for using the API from assembly: http://win32assembly.programminghorizon.com/tutorials.html

It's a tiny minority for sure, but it's perfectly doable. There's some limited cases where it might actually be the best choice (e.g. making a 1k demo?).
Re: Tile set for Alisha's Adventure
by on (#152863)
The NO$ emulators are Win32 applications written in x86 assembly language. Their developer Martin Korth has mentioned code generation inefficiencies of "HLL" (that is, C or C++) code in GBATEK, the reference that accompanies NO$GBA. (And the most common abbreviation for assembly language is asm, not asy.)

This is what a makefile does:
Code:
obj/snes/kitten.chrgb: tilesets/kitten.png
   tools/pngtochr --format gb tilesets/kitten.png obj/snes/kitten.chrgb

This means "The file kitten.chrgb in the obj/snes folder can be created from the file kitten.png in the tilesets folder by running the command tools/pngtochr --format gb tilesets/kitten.png obj/snes/kitten.chrgb." This way you can specify how to run the conversion tool on each file.

Make also allows wildcard rules:
Code:
obj/snes/%.chrsfc: tilesets/%.png
   tools/pngtochr --format snes $< $@

This means "Files in the obj/snes folder named (something).chrsfc can be created from the corresponding file in the tilesets folder named (something).png by running the command tools/pngtochr --format snes followed by the first source file path and the target file path.

If one file has has .include or .incbin directives that refer to another file, you specify multiple dependencies:
Code:
obj/snes/graphics.o: src/graphics.s obj/snes/kitten.chrgb obj/snes/yarnball.chrsfc
   ca65 $< -o $@

This means "The file graphics.o in the obj/snes folder can be created from the file graphics.s in the tilesets folder, the file kitten.chrgb in the obj/snes folder, and the file yarnball.chrsfc in the obj/snes folder by running the command ca65 followed by the first source file path followed by -o followed by the target file path."

Then when you run Make, it'll build a map of what depends on what, find what's up to date and what's out of date based on last modification time, and determine in which order the programs need to be run to build your project. For example, if it has to build kitten.chrgb and yarnball.chrsfc before building graphics.o, it'll do so.
Re: Tile set for Alisha's Adventure
by on (#162826)
Okay, I've been working on a few more tiles.
Re: Tile set for Alisha's Adventure
by on (#162829)
The two beige colors are too similar too both exist. Why not just make the new blocks use the old color or vice versa, and use that for something else? Didn't you say you wanted it to be a city-like level? I've never seen lava pits in cities, so I don't really know what you want.
Re: Tile set for Alisha's Adventure
by on (#162831)
You haven't been to Chicago then.

Edit: Made the beige walls a little darker.