Dev tools: MAPeD-SPReD [win/linux]

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
Dev tools: MAPeD-SPReD [win/linux]
by on (#238387)
Hi all!

I'd like to share with you the new NES development tools I developed for myself, but maybe they will be useful to someone...

MAPeD-NES - Game maps editor
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The main features are:

    - tiles drawing\composing tools
    - building a game map using 2x2 or\and 4x4 tiles
    - data optimization tool
    - several game maps in one project
    - detachable UI
    - entities editor
    - tile properties editing ( can be used as collisions data etc )
    - palette per 1x1 tile support ( MMC5 )
    - import tiles from images
    - export to CA65\NESasm with wide variety of options:
      - 2x2\4x4 tiles
      - column\row data order
      - RLE compression
      - modes: multidirectional \ bidirectional scrolling, static screens switching
      - attributes per 1x1\2x2 tile
      - tiles properties per 1x1\2x2 tile
      - level topology options
      - entities
      - etc...
    - [UPD] built-in Python script editor for writing custom data export scripts
    - export to SjASMPlus ( ZX Spectrum assembler )
    - etc...

It's almost all-in-one to make a game levels and export all necessary data.

SPReD-NES/SMS - Sprites editor
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Some features are:

    - handy drawing mode
    - group operations on sprites
    - sprites data packing ( 1/2/4 KB ) and optimization
    - 8x16 mode support
    - images import\export
    - export to NES: CA65/NESasm / SMS: WLA-DX
    - [UPD] built-in Python script editor for writing custom data export scripts
    - [UPD] NES <-> SMS data conversion*
    - etc...

* You can load a NES project into SMS editor and vice versa.

The main purpose of the SPReD development was the need to convert prepared images into NES/SMS format and manage CHR data. Each sprite can has its own CHR bank, but when you export your project, you can pack all graphics into a set of 1/2/4 or 8 KB (SMS) banks.

NES: Assembly sources of various tilemap renderers ( multidirectional scroller, bidirectional scroller with dynamic mirroring and CHR bank switching, simple static screens switching ) and of simple character controllers are also available.

More details and the tools sources:
https://github.com/0x8BitDev/MAPeD-SPReD

Compiled executables, example projects files and compiled NES/ZX samples:
https://github.com/0x8BitDev/MAPeD-SPReD/releases

[UPD] The latest development build can be found here.

Development build changes:
16.07.2019 - MAPeD: Quick guide added
06.07.2019 - SPReD: Quick guide added
14.06.2019 - SPReD-SMS added
05.06.2019 - Python script editor added as separate project for both MAPeD/SPReD, API docs and sample scripts are also included


[UPD] Documentation is available for both MAPeD and SPReD ( Main Menu -> Help -> Quick Guide or F1 ).


Some screens:

Image

Image

Image

Image
Re: Dev tools: MAPeD, SPReD
by on (#238389)
Sounds great, I'll test it soon! By the way, there is a tool called MapEd Pro. So this is unrelated?
Re: Dev tools: MAPeD, SPReD
by on (#238391)
nesrocks wrote:
Sounds great, I'll test it soon! By the way, there is a tool called MapEd Pro. So this is unrelated?


Never heard about it. ))
Re: Dev tools: MAPeD, SPReD
by on (#238403)
I've seen quite a few map editors go by the name "maped" over the years. ;)
Re: Dev tools: MAPeD, SPReD
by on (#238406)
^ Yup. Pick a different name please, even if it's just something as minute as putting "x" on the end. Honestly, you want something that people can search for in a search engine and find relevant results for -- so in this case, unique is good. (Please do not let his last line de-rail the thread, thanks.)
Re: Dev tools: MAPeD, SPReD
by on (#238446)
koitsu wrote:
^ Yup. Pick a different name please, even if it's just something as minute as putting "x" on the end. Honestly, you want something that people can search for in a search engine and find relevant results for -- so in this case, unique is good. (Please do not let his last line de-rail the thread, thanks.)


Actually, the full names are MAPeD(NES), SPReD(NES)... So, the only thing I can do is rename the thread name :)
Re: Dev tools: MAPeD, SPReD
by on (#238447)
Those are the names of the actual executables? They have parenthesis in them? This is a very strange naming convention that I know of no one using except maybe Stephen Wolfram and Wolfram|Alpha. The concern lies with the names of the program themselves, not with the name of this forum thread.

Edit: yup, they sure do.

Attachment:
Capture.PNG
Capture.PNG [ 13.52 KiB | Viewed 6320 times ]
Re: Dev tools: MAPeD, SPReD
by on (#238448)
koitsu wrote:
Those are the names of the actual executables? They have parenthesis in them? This is a very strange naming convention that I know of no one using except maybe Stephen Wolfram and Wolfram|Alpha. The concern lies with the names of the program themselves, not with the name of this forum thread.


Nothing special, the Windows allows such naming, so I used it.
Re: Dev tools: MAPeD, SPReD
by on (#238450)
nesrocks wrote:
Sounds great, I'll test it soon! By the way, there is a tool called MapEd Pro. So this is unrelated?


I've taken a look at the MapEd Pro thread. Cool features list! I hope that is a great tool.

Just in case, I want to clarify one thing. I do not compete with anyone, I just made my tools public. :)
Re: Dev tools: MAPeD(NES), SPReD(NES)
by on (#238455)
Looking forward to try these out in a while! Looks really neat.
Re: Dev tools: MAPeD(NES), SPReD(NES)
by on (#238458)
Do you plan to support other OSes?
Tried to run on Linux with wine and mono but none worked...too bad
Re: Dev tools: MAPeD(NES), SPReD(NES)
by on (#238462)
@NOOPr

From the error message, it's because the app uses somewere specific win32 things in shell32 or something like that and mono doesn't like that (maybe file related, need to check the code and error again). If those would be removed, there is good chances that it would work.
Re: Dev tools: MAPeD(NES), SPReD(NES)
by on (#238463)
NOOPr wrote:
Do you plan to support other OSes?
Tried to run on Linux with wine and mono but none worked...too bad


Sorry, I did not plan to support other OSes... I just do not use Linux.
Re: Dev tools: MAPeD(NES), SPReD(NES)
by on (#238464)
In that case, I am unable to provide feedback on these tools.
Re: Dev tools: MAPeD(NES), SPReD(NES)
by on (#238465)
Banshaku wrote:
@NOOPr

From the error message, it's because the app uses somewere specific win32 things in shell32 or something like that and mono doesn't like that (maybe file related, need to check the code and error again). If those would be removed, there is good chances that it would work.


There are a few potentially platform dependent things: pngcs.dll ( the third-party library used in the SPReD(NES) ) and file_associations.cs ( the tools write to registry ). Try to comment out these dependencies.
Re: Dev tools: MAPeD(NES), SPReD(NES)
by on (#238468)
This looks really cool!

I'm trying out SPReD and I like how you've made the viewport zoom and panable. The GUI is overall very good looking I would say!
Loading some of the files from the data folder seems to work fine but I find myself struggling with understanding how to make something from scratch.

    * Is there no way to load in my own CHR data? Does it have to be imported from a png?

    * How do I cycle CHR banks when building my sprites?

If you were to add the ability to import raw CHR and palette data, make it more clear how to switch banks and add a JSON export I think the tool would become much more user friendly. I understand if you feel satisfied with how the tool works now and just wanted to share it. Thanks for doing so! :)

I'll definitely check out MAPeD at some point!

Cheers!
Re: Dev tools: MAPeD(NES), SPReD(NES)
by on (#238516)
pwnskar wrote:
I find myself struggling with understanding how to make something from scratch.

    * Is there no way to load in my own CHR data? Does it have to be imported from a png?

    * How do I cycle CHR banks when building my sprites?

If you were to add the ability to import raw CHR and palette data, make it more clear how to switch banks and add a JSON export I think the tool would become much more user friendly.


Thank you for your feedback!

To make something from scratch is quite easy.

1) Select sprite mode do you want to work with: 8x8 by default or 8x16
2) Menu: Sprite -> Create New or RMB on the Sprite List -> Create New
3) Select created sprite
4) Press the "Draw" button ( or Alt+D ) to enable drawing mode
5) Select a color and draw something...

After creating each sprite has its own CHR bank. You can make a copy of your sprite in two ways: full copy or reference. Full copy ( "Create Copy" or Alt+C ) will have a separate CHR bank. Reference ( "Create Ref" or Alt+E ) shares the same CHR bank as original sprite.

You can import raw CHR bank: File->Import, select 'CHR bank (*.chr, *.bin)' then you have to press the "Build" button ( or Alt+B ) and construct your sprite dragging selected CHRs to layout window using a RMB.

Also you can import sprites from 4 colors bmp or png images. File->Import, select '4 colors image (*.png, *.bmp)'.

Palette data can't be imported at the moment. But I'm going to add this feature.
[UPD] Custom palette import added. The latest development build can be found here.

As for JSON format... How do you plan to use it ?
Re: Dev tools: MAPeD(NES), SPReD(NES)
by on (#238522)
If anybody can help me with Linux versions ( compiling prepared solutions and writing makefiles for NES samples based on 'compile.bat' files ), please, write me PM, I would appreciate it.

p.s.: Monodevelop and CC65 ( CA65/LD65 ) need to be installed on your Linux machine.

[UPD] p.p.s.: I need someone who can load fixed C# solutions in Monodevelop and press the "Build" button. No programming required!

[UPD] The question is still open :)
[UPD] The question is closed...
Re: Dev tools: MAPeD(NES), SPReD(NES)
by on (#238686)
NOOPr wrote:
Tried to run on Linux with wine and mono but none worked...too bad

Banshaku wrote:
From the error message, it's because the app uses somewere specific win32 things in shell32 or something like that and mono doesn't like that (maybe file related, need to check the code and error again). If those would be removed, there is good chances that it would work.

tepples wrote:
In that case, I am unable to provide feedback on these tools.

I've tried to run the tools on Linux ( Ubuntu 16.04.6 desktop i386 ) with the latest Mono ( v5.20.1.19 ) and... UI looks really ugly, awful ( stretched in width, fonts sizes... ), but they work !.. Also solutions build well in the latest Monodevelop ( 7.8.2 build 2 ).

Guys, I need your help! Could you please install the latest Mono / Monodevelop and try to run the last public beta on Github and try to build the sources coming with the beta in release section. Please, let me know.

p.s.: just in case the Linux screenshot
Image
Re: Dev tools: MAPeD(NES), SPReD(NES)
by on (#238770)
Quote:
Guys, I need your help! Could you please install the latest Mono / Monodevelop and try to run the last public beta on Github

I've updated my Mono to 5.20.1.19 and it runs.

Quote:
and try to build the sources coming with the beta in release section. Please, let me know.

I can try to compile but you have to gimme the directions to build it since I'm not familiar with C#
Re: Dev tools: MAPeD(NES), SPReD(NES)
by on (#238816)
NOOPr wrote:
I've updated my Mono to 5.20.1.19 and it runs.

Thank you!
NOOPr wrote:
I can try to compile but you have to gimme the directions to build it since I'm not familiar with C#

The directions are quite simple:
    - Install the latest Monodevelop 7.8.2
    - Run it
    - Open the solution: .\src\MAPeD\MAPeD(NES).sln
    - Menu: Run -> Start Without Debugging

BTW, I've fixed the GUI issues on Linux. Now the tools look almost like on Windows. I hope this week I'll have done either dev build or another public beta with Linux support. It depends on results...
Re: Dev tools: MAPeD(NES), SPReD(NES)
by on (#238818)
I couldn't build the sources from v0.5b...I got this error:
Code:
Symbol file /usr/lib/mono/4.5/mscorlib.dll.mdb doesn't match image /usr/lib/mono/4.5/mscorlib.dll
Cannot open assembly '/tmp/MAPeD-SPReD-0.5-beta/bin/MAPeD%28NES%29.exe': No such file or directory.


But I could build and run from the master branch.

I got these warns for MAPeD:
Code:
/usr/lib/mono/msbuild/15.0/bin/Microsoft.Common.CurrentVersion.targets(5,5): Warning MSB3256: No assemblies were read in from the redist lists. A TargetFramework profile exclusion list could not be generated.  (MSB3256) (MAPeD-NES)
/usr/lib/mono/msbuild/15.0/bin/Microsoft.Common.CurrentVersion.targets(5,5): Warning MSB3245: Could not resolve this reference. Could not locate the assembly "System.Runtime.Serialization.Json". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. (MSB3245) (MAPeD-NES)


And this one for SPReD:
Code:
/usr/lib/mono/msbuild/15.0/bin/Microsoft.Common.CurrentVersion.targets(5,5): Warning MSB3256: No assemblies were read in from the redist lists. A TargetFramework profile exclusion list could not be generated.  (MSB3256) (SPReD-NES)


BTW, I have no played with it yet, but seems to run very fine.
Re: Dev tools: MAPeD(NES), SPReD(NES)
by on (#238819)
NOOPr wrote:
I couldn't build the sources from v0.5b...

Yes, with old names there may be compilation errors. But sometimes they compile... :? So I've renamed the projects to avoid errors on Linux.
Re: Dev tools: MAPeD-NES, SPReD-NES [win/linux]
by on (#238982)
The new public beta v0.54b with Linux support is available.

More detailed info in the README file.
So, please, test it and feel free to ask any questions.

Warning: It's not necessary to rebuild the tools on Linux if you don't want to make any changes in sources. You can use the same executables files on Windows and Linux.

P.S.: Does anybody can test the apps on Mac with the latest Mono ?..
Re: Dev tools: MAPeD-SPReD [win/linux]
by on (#241972)
Is this usable on its own to edit an INES file's tiles? Or do I need to do my own import/export from an INES file?

I've been looking high and low for a good way to get into sprite hacking and there didn't seem to be any tool out there I could use. I was about to start shaving the giant yak of making my own, until I found this, which looks almost exactly like what I want! Linux support is a big priority for me.
Re: Dev tools: MAPeD-SPReD [win/linux]
by on (#241981)
JordiGH wrote:
Is this usable on its own to edit an INES file's tiles? Or do I need to do my own import/export from an INES file?
These tools are meant to be used for making graphics from scratch for new projects, using it's own specific formats. I think you would have little luck using it for any hacking of an existing rom unless you first identify where and how the metasprite data is stored for that specific game. You would then have to convert it to a format usable by SPReD to make your edits and then convert it back and figure out a way to inject it back into the original rom file, possibly even having to disassemble and reassemble it. It might end up being a much more difficult task than you would hope for but it is doable.