First off: great progress so far. The only thing I didn't like is that if you keep pressing a directional button, the cursor keeps moving rapidly, making it jump two squares at once sometimes when you press the key for slightly too long (this was in an emulator, going to try it on a phone later)
Here's the notes I made so far ([J] is four directional joystick):
Application states:
- Draw mode
- Palette mode
- Menu mode?
Draw mode
Tool states:
- 3 step marker, 1 step marker (marker state, as explained by Ilkke)
- pencil tool, fill tool (1 pixel selector, set to flood fill or fill-one-pixel, selector state)
Marker state:
1-9: place pixel on marker position in selected color
[J]: move marker in either 3 or 1 steps
0: Turn color selection on: choose palette row with 9, select color on row with (1->8)
Selector State:
1-8: place color with index of (1->8) on selected palette row on position of brush (or flood fill)
9: change palette row
[J]: move brush
0: switch between flood and pencil mode
Palette mode:
A screen for changing the palette (RGB, HSV, color wheel, that kind of stuff). Haven't got further info for that yet.
Extra notes:
- In terms of abstraction, color selection in selector state is the same as color selection in draw mode after pushing the "0" key
- I moved the keys around a bit, so now the left/right/OK buttons and stuff are free to use for other purposes. I propose that the OK button shows the menu and that the left button shows the palette mode. Right button could switch between draw and selector state, but the # key might be better for that
Is that helpful? It's a little more structured and thorough in terms of preparing to program it.