Jump to content
IGNORED

MSX/Coleco Sprite & Tile Set Editor


Tony Cruise

Recommended Posts

Version 1.0.7923.34004 Uploaded.

Main change is to re-published with a new app signing certificate as the other one had expired.   

This provider, Sectigo, is more trusted so less people should have issues installing on Windows 10 and pass most Malware and Anti-virus scanners as trusted.

More actual functionality updates soon.

  • Like 1
Link to comment
Share on other sites

  • 1 year later...

I have discovered that the game I am working on so far has 50 sprite patterns with more to come.

 

Working with all of that data is not so hard but when you go to use the pattern you have to figure out where it in the table.
Even if you assign it a label with EQU you still have to know where it starts in the table.  is it pattern number 27 or 32

 

Pattern 0, 4, 8, 12....

Or double sprites 0,8,16,24......

 

Is it possible that in the auto-generating comments you can put a count next to it.

As in

pattern01 ;........00

pattern02 ;........04

pattern03 ;........08

pattern04 ;........12

ect.....

 

With the tiles portion of your data listing you have them displayed with a number in the comments for quick reference.

; 000

; 001

; 002

and so on

 

In the early stages it was not a big deal but when you get up there in numbers it becomes a real chore especially when rearranging everything.

 

Thank you for your time

CC

Link to comment
Share on other sites

On 10/21/2022 at 1:37 AM, Captain Cozmos said:

I have discovered that the game I am working on so far has 50 sprite patterns with more to come.

 

Working with all of that data is not so hard but when you go to use the pattern you have to figure out where it in the table.
Even if you assign it a label with EQU you still have to know where it starts in the table.  is it pattern number 27 or 32

 

Pattern 0, 4, 8, 12....

Or double sprites 0,8,16,24......

 

Is it possible that in the auto-generating comments you can put a count next to it.

As in

pattern01 ;........00

pattern02 ;........04

pattern03 ;........08

pattern04 ;........12

ect.....

 

With the tiles portion of your data listing you have them displayed with a number in the comments for quick reference.

; 000

; 001

; 002

and so on

 

In the early stages it was not a big deal but when you get up there in numbers it becomes a real chore especially when rearranging everything.

 

Thank you for your time

CC

A good idea, I will see if I can add it to the next version.  Also going to add sprite sets at the same time.

  • Thanks 1
Link to comment
Share on other sites

Something else that, at least I think, that would be consistency.

 

You can load in a whole screen from the clip board.

You can load in a slew of tiles and tile colors through the clip board.

but, the sprites you have to do one at a time.

 

It would be a convenience to be able to copy a set of sprite data then past them as you would the tile and screen editors.

 

I have also found that using the copy and paste you have to click on an older sprite then back again in order to update the data.

Link to comment
Share on other sites

On 10/27/2022 at 11:27 PM, Captain Cozmos said:

Something else that, at least I think, that would be consistency.

 

You can load in a whole screen from the clip board.

You can load in a slew of tiles and tile colors through the clip board.

but, the sprites you have to do one at a time.

 

It would be a convenience to be able to copy a set of sprite data then past them as you would the tile and screen editors.

 

I have also found that using the copy and paste you have to click on an older sprite then back again in order to update the data.

Also another good idea, I will see if I can add that one in shortly.  Already did the other change, but my app signing certifcate has expired again, just going through the process of getting a new one before I can release the new version.

Link to comment
Share on other sites

I doubt if everything I come up with is a great idea.
I list things that would help me get work done.
If I need to fix a car I grab a screwdriver and socket wrench.

When I am working on graphics for the Colecovision your tile editor is the first tool I grab.
The problem is that graphics take up 90% of the time when I am programing.  Your tile editor does a great job but sometimes there are parts of it that slow me down because of little quirks here and there.

One of them being it is not meant for a modern working environment.  Multiple Monitors, High resolution, non scalable, popout windows fly to the farthest it can away from your main window.
The latest issue has been that if you rearrange your tiles in the character sets that it does not rearrange that same tile in your screen layout.  Twice the work by forcing you to redraw your screen every time you rearrange your tiles.

 

The non scalability of the main program is another huge issue when working in 4k or even 1080p  I think it was OK when I tried it at 1024x720.

But, no matter where the future lays with your editor this is my go to tool and will be always grateful for it.
Now if someone wants to release a modern sound and music editor for the Colecovision that works in windows without installing JAVA I am all for that too.

Link to comment
Share on other sites

Here is an idea, and you should know by now I love to run my mouth on ideas.

In the screen layout.  There is the option to move the patterns by single pixels instead of 8 with your defined arrow keys.  Better yet in the full screen editor.

 

I understand that may be a bear to tackle but my point of view as working on these types of graphics (limitations) I am relying how it would help me to tackle certain issues.

 

My goal is to lay down a set of patterns for example a 10x10 grid with whatever picture I created.

Then be able to shift that picture left, right, up, or down then save that new set of patterns and use them like a scroll effect.

 

You already do this with your character editor by having 4x4 patterns so what I am suggesting is that you make that same tool but for a much larger set of tiles 10x10,  20x20 or whatever size you need within the boundaries of the screen.

 

If I knew windows programing as much as I do Coleco and the Z80 then I would try and write my own graphics editor but being as it would take me forever and away from what I do best, I rely on others for the tools I use.

 

Link to comment
Share on other sites

  • 7 months later...

Finally have some time off from work, and have been catching up on requests for new features, plus some things to assist a new game I have started working on.

I have uploaded a new version of the editor with the following changes:

  • finally you can have multiple sets of sprite patterns
  • adjusted the layout of the sprite editor screen
  • on both the sprite and tile editor sections I have extended what it can automatically parse from pasted text, allow binary and skipping lines with labels

Note: The file format has changed it will open all old files but when you save it will be in the new file format (which of course won't work in older versions of the program).

image.thumb.png.019f1e014a0e02662f6e0b64cdb0c635.png

Download the new version from here

  • Like 3
Link to comment
Share on other sites

  • 2 weeks later...

Using, working superb.

To put some polishing on it would it be possible to add hex values to the import of NAME TABLE data in the screen layout.
I have been only able to import decimal such as DB 000,001,003,098 ect...
 

If I save a screen in hex, I can't load it back in with the import feature.
At least I haven't been able to.

TIA

 

 

 

EDIT....

 

Another thing I found, and please implement it....
When you move a tile inside the character sets, it does not update inside of the screen layout (name table editor)

So any time you reorganize your tile sets you end up having to redraw all your pictures with the new values.

 

A reason for my bringing this up.

Say, you go through a tile set and delete any duplicates.  You then move all your patterns to the left or right one space to fill in that deleted tile.

You then have to redraw every single one of the tiles inside the name table editor.  If it is at the end of 100 tiles ok but if it is tile 3, you end up redrawing 97 tiles.

 

If there is a way that you can have a tick mark to turn that ability on and off.
On to update the positions and off so changes are not made for those times that you do not need that behavior.

 

thanks again,

CC


Another programing tip for those using high res and 3 different tile sets for upper, middle and lower.
I found out that you have to set MODE 2 with these two registers in mind.
    LD BC,03FFH
    CALL WRITE_REGISTER
    LD BC,0403H
    CALL WRITE_REGISTER

 

for the longest time I could not get it to work because it kept using the 1st set of patterns regardless of 3 types loaded into vram at the proper areas.
CC

Edited by Captain Cozmos
Link to comment
Share on other sites

  • 2 weeks later...

Another change if I may ask.

Beyond the Name Table (Screen Layout) not accepting Hex values format, Sprites do not either.  At least I could not get it to work.

I started using your hex value output trying to basically make my work look professional just to find out that I have to convert everything back to decimal if I need to import it later.
 

 

Some bugs I have found;

 

Character Sets:

When arranging the sets, if you are under the 006, it will not move to 000 using the up arrow.  If you are at 001 and shifting to 000 with the left arrow, it works as expected.

 

Sprites:

If you decide to delete all the sprites you can not delete the first one.  A work around is to clear out the sprite and delete the extra data from the produced source.

 

The single and two color modes seem to have a mind of their own at times.  They switch back and forth between one and two during editing, deleting.

 

Full Screen Editor:

If you try to import an image from the daughter menu that pops up, the select file does not work.
I don't use this feature so I am not 100% sure if this was the intended behavior or is a future option.

 

 

 

 

Thanks in advance...
CC

 

Edited by Captain Cozmos
  • Like 1
Link to comment
Share on other sites

  • 2 months later...
2 minutes ago, Kiwi said:

Question, is there a way to output the entire sheet of data that's in a group instead of individual sprite image?

If you turn compression on for sprites it will output each set of sprites as a single compressed data block.

But do you mean output each animation group block of data?  I could add an option for that.

Link to comment
Share on other sites

2 hours ago, Kiwi said:

Spriteset.thumb.png.a7d4e9642f3d6e074bed6c7509b67b9f.png

The sprite set section that's is in the red rectangle.  If it can generate a list of sprite pattern, that would make it a lot easier.

 

So a list of pattern numbers that comprise each sprite in a set?

So in this example, it would generate:

PIDX_sprite1_01:

db 000,004

PIDX_sprite1_02:

db 008,012

PIDX_sprite1_03:

db 016,020

PIDX_sprite1_04:

db 024,028

 

It could also generate a table for each Group of sprites i.e. animation sequence. 

So if you added all four of those sprites to the same group [Green Drop] it would generate:

SPR_ANIM_GREEN_DROP:

db 000,004,008,012,016,020,024,028,255

or one for each layer:

SPR_ANIM_GREEN_DROP_1

db 000,008,016,024,255

SPR_ANIM_GREEN_DROP_2

db 004,012,020,028,255

 

Is this what you meant?

 

 

Link to comment
Share on other sites

I mean it would generate a table of sprite pattern like,

 

const byte facing down[] = {
 0x00,0x00,0x00,0x01,0x02,0x04,0x08,0x08,
 0x0A,0x0A,0x04,0x03,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x80,0x40,0x20,0x10,0x10,
 0x50,0x50,0x20,0xC0,0x00,0x00,0x00,0x00
};
// Sprite facing down pattern 2
const byte facing down_2[] = {
 0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x07,
 0x05,0x05,0x03,0x00,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xE0,
 0xA0,0xA0,0xC0,0x00,0x00,0x00,0x00,0x00};

 

// Sprite facing right pattern 1
const byte facing right[] = {
 0x00,0x00,0x00,0x01,0x02,0x04,0x08,0x08,
 0x08,0x08,0x04,0x03,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x80,0x40,0x20,0x10,0x10,
 0x50,0x50,0x20,0xC0,0x00,0x00,0x00,0x00
};
// Sprite facing right pattern 2
const byte facing right_2[] = {
 0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x07,
 0x07,0x07,0x03,0x00,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xE0,
 0xA0,0xA0,0xC0,0x00,0x00,0x00,0x00,0x00};

 

// Sprite facing up pattern 1
const byte facing up[] = {
 0x00,0x00,0x00,0x01,0x02,0x04,0x08,0x08,
 0x08,0x08,0x04,0x03,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x80,0x40,0x20,0x10,0x10,
 0x10,0x10,0x20,0xC0,0x00,0x00,0x00,0x00
};
// Sprite facing up pattern 2
const byte facing up_2[] = {
 0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x07,
 0x07,0x07,0x03,0x00,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xE0,
 0xE0,0xE0,0xC0,0x00,0x00,0x00,0x00,0x00};

 

const byte facing left[] = {
 0x00,0x00,0x00,0x01,0x02,0x04,0x08,0x08,
 0x0A,0x0A,0x04,0x03,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x80,0x40,0x20,0x10,0x10,
 0x10,0x10,0x20,0xC0,0x00,0x00,0x00,0x00
};
// Sprite facing left pattern 2
const byte facing left_2[] = {
 0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x07,
 0x05,0x05,0x03,0x00,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xE0,
 0xE0,0xE0,0xC0,0x00,0x00,0x00,0x00,0x00};

 

 

Link to comment
Share on other sites

5 hours ago, Kiwi said:

I mean it would generate a table of sprite pattern like,

 

const byte facing down[] = {
 0x00,0x00,0x00,0x01,0x02,0x04,0x08,0x08,
 0x0A,0x0A,0x04,0x03,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x80,0x40,0x20,0x10,0x10,
 0x50,0x50,0x20,0xC0,0x00,0x00,0x00,0x00
};
// Sprite facing down pattern 2
const byte facing down_2[] = {
 0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x07,
 0x05,0x05,0x03,0x00,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xE0,
 0xA0,0xA0,0xC0,0x00,0x00,0x00,0x00,0x00};

 

// Sprite facing right pattern 1
const byte facing right[] = {
 0x00,0x00,0x00,0x01,0x02,0x04,0x08,0x08,
 0x08,0x08,0x04,0x03,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x80,0x40,0x20,0x10,0x10,
 0x50,0x50,0x20,0xC0,0x00,0x00,0x00,0x00
};
// Sprite facing right pattern 2
const byte facing right_2[] = {
 0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x07,
 0x07,0x07,0x03,0x00,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xE0,
 0xA0,0xA0,0xC0,0x00,0x00,0x00,0x00,0x00};

 

// Sprite facing up pattern 1
const byte facing up[] = {
 0x00,0x00,0x00,0x01,0x02,0x04,0x08,0x08,
 0x08,0x08,0x04,0x03,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x80,0x40,0x20,0x10,0x10,
 0x10,0x10,0x20,0xC0,0x00,0x00,0x00,0x00
};
// Sprite facing up pattern 2
const byte facing up_2[] = {
 0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x07,
 0x07,0x07,0x03,0x00,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xE0,
 0xE0,0xE0,0xC0,0x00,0x00,0x00,0x00,0x00};

 

const byte facing left[] = {
 0x00,0x00,0x00,0x01,0x02,0x04,0x08,0x08,
 0x0A,0x0A,0x04,0x03,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x80,0x40,0x20,0x10,0x10,
 0x10,0x10,0x20,0xC0,0x00,0x00,0x00,0x00
};
// Sprite facing left pattern 2
const byte facing left_2[] = {
 0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x07,
 0x05,0x05,0x03,0x00,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xE0,
 0xE0,0xE0,0xC0,0x00,0x00,0x00,0x00,0x00};

 

 

Ah I get it now, so group 16x16 sprite patterns for the C output.  I'll make it an option to turn on and off etc.

  • Like 1
Link to comment
Share on other sites

19 hours ago, Kiwi said:

I mean it would generate a table of sprite pattern like,

 

const byte facing down[] = {
 0x00,0x00,0x00,0x01,0x02,0x04,0x08,0x08,
 0x0A,0x0A,0x04,0x03,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x80,0x40,0x20,0x10,0x10,
 0x50,0x50,0x20,0xC0,0x00,0x00,0x00,0x00
};
// Sprite facing down pattern 2
const byte facing down_2[] = {
 0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x07,
 0x05,0x05,0x03,0x00,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xE0,
 0xA0,0xA0,0xC0,0x00,0x00,0x00,0x00,0x00};

 

// Sprite facing right pattern 1
const byte facing right[] = {
 0x00,0x00,0x00,0x01,0x02,0x04,0x08,0x08,
 0x08,0x08,0x04,0x03,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x80,0x40,0x20,0x10,0x10,
 0x50,0x50,0x20,0xC0,0x00,0x00,0x00,0x00
};
// Sprite facing right pattern 2
const byte facing right_2[] = {
 0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x07,
 0x07,0x07,0x03,0x00,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xE0,
 0xA0,0xA0,0xC0,0x00,0x00,0x00,0x00,0x00};

 

// Sprite facing up pattern 1
const byte facing up[] = {
 0x00,0x00,0x00,0x01,0x02,0x04,0x08,0x08,
 0x08,0x08,0x04,0x03,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x80,0x40,0x20,0x10,0x10,
 0x10,0x10,0x20,0xC0,0x00,0x00,0x00,0x00
};
// Sprite facing up pattern 2
const byte facing up_2[] = {
 0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x07,
 0x07,0x07,0x03,0x00,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xE0,
 0xE0,0xE0,0xC0,0x00,0x00,0x00,0x00,0x00};

 

const byte facing left[] = {
 0x00,0x00,0x00,0x01,0x02,0x04,0x08,0x08,
 0x0A,0x0A,0x04,0x03,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x80,0x40,0x20,0x10,0x10,
 0x10,0x10,0x20,0xC0,0x00,0x00,0x00,0x00
};
// Sprite facing left pattern 2
const byte facing left_2[] = {
 0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x07,
 0x05,0x05,0x03,0x00,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xE0,
 0xE0,0xE0,0xC0,0x00,0x00,0x00,0x00,0x00};

 

 

Howdy I went and had a look at the tool, if you select 'C' output and Hex, it already outputs the sprite data like that :)  There are maybe some options in the Options screen that you don't have turned on.

I don't use the C output that often, so let me know if anything needs to be updated.

 

Link to comment
Share on other sites

  • 1 month later...

Version 1.0.8705.41754 has been uploaded to my website.

No actual program changes but it is now signed with an EV Code certificate. 

The old certificate was about to expire (11/11/23), plus the new one will ensure it will be a recognised application and not blocked by Windows Defender and other virus scanners.

  • Like 1
Link to comment
Share on other sites

  • 1 month later...

As I am working on the Dino Eggs tech Demo I came to the conclusion that a really excellent feature would be if you can place your sprite or animations of sprites on the Screen layout.

 

Now I am trying to stop short of why not make it an entire game builder.  Now all of a sudden you have sprites on the playfield.

 

Nope, just wanted be able to have my sprites, even at the minimum level, on the Screen Layout to judge Color Schemes, Scale ......

(reposition-able and sits above the screen so it is not defined by a pattern position) like if you took a chess piece and placed it on the board but not inside a square.

 

Some other observations that I may have mentioned before:

 

Being able to import multiple sprite data like the tiles.

 

Having hex, decimal, oct universal across the board.  You can output hex but sprite can not import it back.

 

A work area that scales with your computers resolution.

 

Add a radio button that when set will update the Screen Layout with the pattern location if you move it in the tiles area.  As of now, you have to redraw your playfield every time you organize your tiles.

 

I know all of this is free and on your time.  So I am grateful for this tool no matter what.  It's just some times it's frustrating to navigate when building large projects.

 

Edited by Captain Cozmos
Link to comment
Share on other sites

  • 2 weeks later...

I've been talking with Tursi to see if there was some way to coordinated using the output of his image convertor to work with your tile editor.

 

If you follow the chat you can get a feel for what I have been trying to do.

 

His output is basically

Patterns 0-768

Colors 0-768

 

While everything your editor is about is 256 x3 patterns and colors.

Your full screen editor kind of touches on that but, for my work, has not matured enough to be useful.  Again, to me.

 

So the next best thing would be to get the picture, draw the picture, in another program.  Scale it down through his 9918 convertor then import it into your program for editing and output for the Colecovision.

 

So is there any way you can use his output for your import.  He seems to be using standard Coleco formats like Power Paint for instance.

 

 

 

Edited by Captain Cozmos
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...