games_player, on Sun Feb 17, 2008 5:16 AM, said:
Below is a picture of the Initial sprite Editor it is essentially the same as Attendo's version.
Is there any thing else you can think of that it needs ?.

There are a few things I can think of...
(1) A sprite doesn't have to be 8 lines. In batari Basic, a sprite can be as short as 1 line, or as tall as 256 lines. You can't display 256 lines at once, but a very tall sprite can still be useful-- e.g., you could scroll it vertically. And the 256-line limit is mostly a timing issue, to avoid page crossings, although I don't think batari Basic can compile sprite definitions that are longer than 256 bytes. So it would be best if you give the user a field for entering the desired height-- 1 to 256-- and then give them a grid with that many lines. That might require a window with a vertical scroll bar, since you won't be able to fit 256 grid rows in the window.
(2) In connection with (1) above, it might be helpful to show the row number beside each row of the grid.
(3) Since there are two player sprites in the standard batari Basic kernel, and six player sprites in the multisprite kernel, it would be best to let the user indicate which sprite is being defined. For example, either you could have a group of radio buttons for player0 through player5, so the user can select which of those sprites is being defined; or you could have a group of check boxes, so the user can select more than one sprite at a time-- and then the grid data would generate the same shape data for each of those selected sprites.
(4) In connection with (3) above, the most efficient way to define two or more player sprites with the same shape is to define just one player, and then copy the settings in that player's pointerlo, pointerhi, and height variables to the variables for the other sprites, rather than actually defining the same shape in ROM multiple times.
(5) Although batari Basic displays the sprites upside-down from the way they're defined in ROM, it would be helpful if you let the user draw the sprite rightside-up. Then you can output the data upside-down for insertion into batari Basic.
(6) It might be nice to have a few basic "drawing" functions, such as lines, rectangles, filled rectangles, ovals, filled ovals, connected lines, filling an enclosed area, as well as copying and pasting an area, selecting an area and then flipping it horizontally or vertically or rotating it 90-180-270 degrees, inserting one or more new rows between two existing rows, deleting two or more rows, etc.
(7) A player can be reflected horizontally, so it might be helpful to have two grids side by side-- one normal, and the other reflected-- and any pixel you turn on or off in one grid would automatically update the other grid as well, to help the user design sprites that look good when they're reflected. (Maybe it's just me, but I've noticed that sometimes when I draw a shape that looks good one way, it looks a bit "off" when I reflect it, so I end up having to make some adjustments to it.)
(8
) An Atari 2600 pixel isn't square. The actual aspect ratio will depend on two factors-- how many color clocks wide the pixel is, and how many scan lines tall the pixel is. The approximate aspect ratio of the smallest possible pixel (1 color clock wide and 1 scan line tall) is roughly 5:3-- although Atari 2600 emulators tend to use an aspect ratio of 2:1. In batari Basic, the display uses a 2-line kernel, and the smallest pixel is roughly 5:6, since the pixel is two scan lines tall. Also, players can have one of four width settings-- each pixel can be 1 color clock wide, 2 color clocks wide, or 4 color clocks wide. So it might be helpful to let the user specify the player's width setting, and then display the grid with the appropriate width, so the grid's boxes have the correct aspect ratio.
(9) An alternative to (7) and (8
) would be to use one grid, with square grid boxes, but display what the sprite will look like when it's reflected, as well as when it's single-wide, double-wide, and quadruple-wide.
(10) A sprite can be multicolor (at least in the standard kernel), so it would be helpful to let the user choose the color of each row, and then generate the output for the color data along with the shape data.
(11) It could be helpful to have an option for a grid with 16 pixels across, so the user can design a wider sprite that will be formed by positioning player1 beside player0.
(12) Or if the user wants to create a multicolored sprite by drawing player0 on top of player1, it could be helpful to have a grid where the pixels in each row can be either the player0 color or the player1 color. This might be a little tricky, though, because there's no reason why the two players need to be the same width, or aligned to the same horizontal position.
(13) It might be nice to have a special grid with 48 pixels across, for defining a 6-player wide shape that could be displayed in place of the score, such as a title or other message. The score digits are only 8 lines tall, so the grid would be 48x8. And the output would be different than for a player statement-- it should probably be formatted like the graphic shapes in the scoretable, so it can be inserted into a custom score_graphics.asm file. For that matter, you would probably want to let the user define all 10 or 16 digits. (There are only 10 digits-- 0 through 9-- but up to 16 "digits" can be defined for the score, such as for a space, a colon, or other characters.)
(14) It might be nice to have the ability to save "sprite definition" files, so they could be loaded back into the editor later and then modified.
Those are just some ideas you might want to think about, and you don't have to implement all of them at once, or at all. It would probably be easier for you to start with just the basic functionality, and then add new features over time. But at the very least, I suggest that you strongly consider (1) right now, rather than limiting the user to only 8x8 shapes.
Michael
Edited by SeaGtGruff, Sun Feb 17, 2008 3:04 PM.