Tile set for Alisha's Adventure

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

Moderator: Moderators

User avatar
darryl.revok
Posts: 520
Joined: Sat Jul 25, 2015 1:22 pm

Re: Tile set for Alisha's Adventure

Post by darryl.revok »

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.
tepples
Posts: 22705
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: Tile set for Alisha's Adventure

Post by tepples »

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?
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.
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.
User avatar
thefox
Posts: 3134
Joined: Mon Jan 03, 2005 10:36 am
Location: 🇫🇮
Contact:

Re: Tile set for Alisha's Adventure

Post by thefox »

darryl.revok wrote:Can Asesprite export to a CHR file and does it support metasprite editing?
No and no.
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.
Download STREEMERZ for NES from fauxgame.com! — Some other stuff I've done: fo.aspekt.fi
User avatar
darryl.revok
Posts: 520
Joined: Sat Jul 25, 2015 1:22 pm

Re: Tile set for Alisha's Adventure

Post by darryl.revok »

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?
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.
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.
User avatar
thefox
Posts: 3134
Joined: Mon Jan 03, 2005 10:36 am
Location: 🇫🇮
Contact:

Re: Tile set for Alisha's Adventure

Post by thefox »

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
Download STREEMERZ for NES from fauxgame.com! — Some other stuff I've done: fo.aspekt.fi
User avatar
darryl.revok
Posts: 520
Joined: Sat Jul 25, 2015 1:22 pm

Re: Tile set for Alisha's Adventure

Post by darryl.revok »

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.
tepples
Posts: 22705
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: Tile set for Alisha's Adventure

Post by tepples »

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?
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."
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.
User avatar
darryl.revok
Posts: 520
Joined: Sat Jul 25, 2015 1:22 pm

Re: Tile set for Alisha's Adventure

Post by darryl.revok »

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.
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.
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.
Joe
Posts: 649
Joined: Mon Apr 01, 2013 11:17 pm

Re: Tile set for Alisha's Adventure

Post by Joe »

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.
User avatar
rainwarrior
Posts: 8731
Joined: Sun Jan 22, 2012 12:03 pm
Location: Canada
Contact:

Re: Tile set for Alisha's Adventure

Post by rainwarrior »

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 ... rials.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?).
tepples
Posts: 22705
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: Tile set for Alisha's Adventure

Post by tepples »

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: Select all

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: Select all

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: Select all

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.
psycopathicteen
Posts: 3140
Joined: Wed May 19, 2010 6:12 pm

Re: Tile set for Alisha's Adventure

Post by psycopathicteen »

Okay, I've been working on a few more tiles.
Attachments
platform place holder.png
platform place holder.png (12.18 KiB) Viewed 6478 times
User avatar
Drew Sebastino
Formerly Espozo
Posts: 3496
Joined: Mon Sep 15, 2014 4:35 pm
Location: Richmond, Virginia

Re: Tile set for Alisha's Adventure

Post by Drew Sebastino »

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.
psycopathicteen
Posts: 3140
Joined: Wed May 19, 2010 6:12 pm

Re: Tile set for Alisha's Adventure

Post by psycopathicteen »

You haven't been to Chicago then.

Edit: Made the beige walls a little darker.
Attachments
platform place holder.png
platform place holder.png (12.23 KiB) Viewed 6433 times
Post Reply