CadEditor. Release 5.1

in #utopian-io6 years ago

CadEditor

https://github.com/spiiin/CadEditor

CadEditor is the universal level editor for NES/SMD/SNES games, I describe project on steemit here.
cad_editor_v51_mickey_letter.png

What feature(s) did you add?

  • CadEditor now has the installer.
  • Release at itch.io use it's native update system via butler
  • Settings were moved from root editor directory to platform-specific folders (It required a special script for rename and change include paths in more than 2000 settings files, this script now in the repository now, but it will be included when it will be cleaner for creating similar refactoring tasks).
  • Bug fixes.
    The list will be included in the below section.
  • Support for new games added.
    This work includes reverse-engineering of games. After that, if the game has one of a standard system, config for it may be added via using CadEditor common functions, but if it some new format, some code needed to load it in CadEditor. I'll show three new games with specific attribute layer system, not seen until this release.

How did you implement it/them?

  • CadEditor now has the installer.

This is the solution of the bug, that many users have with the archive.
(1, 2 3(message from Kasumi))
After unzipping downloaded from the internet archive, executable files and dlls was marked as untrusted by windows, so Cadeditor can't load plugins dlls after running until users not unlock all files or entire archive manually. Installer solves this problem.

Here is the first release with the installer. I used InnoSetup as it's free and simple.
Users of Mac and Linux can still build CadEditor from sources and uses Mono to run it.

  • Release at itch.io use it's native update system via butler

This system allows settings the directory to upload to site, and it automatically checked, what files are changed and upload the only patch of changed files, like version control system does. Here is test commit with butler upload command.

This allows committing minor changes and delivering updates to itch.io users via the site application update system faster.

  • Settings were cleaned and moved from root editor directory to platform-specific folders

There are about 200 supported games in CadEditor now, and, I think, that there was a good idea to move it to separate folders. It's hard to rename files and change include paths in it, so I wrote python script to do it for me. Now it not in the repository because it was written in a quick-and-dirty way, but it can be base of future refactoring tool for thousands of config files. There are huge commits (1, 2, 3), doing after work of script.

I have a tool to check the correctness of every config after renaming/moving/cleaning, it really helps me to do this work.
cad_verifier.png

  • Bug fixes

  • Fixes for rendering and selection for vertical-described screens and non-square blocks (commits - 1)

  • Fix selection for big sprites (commit)

  • Allow negative block number (some games can define it) (commit)

  • Fix export to TMX format script (commit)

  • And many other small fixes.

  • Support for new games added.

As I say, some games have an interesting level format, and for adding them it need not only reverse it but adding code to save/load this formats. It this release, it was an intersting to add games with separate attribute layer. In NES games, tiles (8x8 images, basic build block of graphics) has incomplete colors and 2 bits of it stores separately. Most games define blocks as a group of tiles + color bits for it. But some games abuse ability to store color bits (tiles attributes) separately, and, even more, doing it in different ways.

For example, Asterix game store blocks per column, and attributes as a separate layer, also stored per column. The first screenshot shows blocks without additional color bits, at second screenshot additional color bits are mixed with blocks).
asterix_1.png
asterix_2.png
(commit for asterix)

But, in other game, Silent Assault, screens described as blocks per column as in Asterix, but attributes bits described per rows:
cad_silent_assault.png
(commit for silent assault)

For describing all possible variations, I introduced the next configs options:

  public MapInfo[] getMapsInfo()      { return SilentUtils.makeMapsInfo(); } //function to load needed addresses of attributes and blocks
  public LoadMapFunc getLoadMapFunc() { return SilentUtils.loadMap; } //function to select how map will be loaded (for example, loaded from blocks per row or per column).
  public SaveMapFunc getSaveMapFunc() { return MapUtils.saveAttribs; } //simmetrical function, how map will be saved back.
  public bool isMapReadOnly()         { return true; } //option to show, that map builded from blocks and only attributes bits (and not tiles) can be changed from map editor plugin.

Other games with separate attribute bits:
Circus Caper (blocks per column, attributes per row by screens)
Hudson Hawk(blocks per row, attributes per row)

All games added in this release:

  Hudson Hawk (1 level)
  Asterix (all levels)
  Silent Assault (all levels)
  Aliens FDS (all levels)
  Gaiapolis (1 level)
  Tagin's Dragon (all levels)
  Ikari Warriors (1 level)
  Parasol Henbee (all levels)
  Doki Doki Yuuoenchi (all levels)
  Super Pitfall (all levels)
  Panda Prince (all levels)
  Rocman X (all levels)
  Jetsons (all levels)
  Spelunker 2 (all levels)
  Ji Qi Mao Xiao Ding Dang (all levels)
  Garfield (all levels)
  Wai Wai World (all levels)
  Wizzard of The Oz (all levels)
  Splatterhouse (all levels)
  Indivisible (all levels)
  Mickey's Safari in Letterland (all levels)
  Juuonki (all levels)
  Metal Storm (all levels)

Release changelog:

https://github.com/spiiin/CadEditor/releases/tag/v5.1

My github account

https://github.com/spiiin/

Sort:  

Thank you for your contribution. Its better to keep development branch and then wherever you are releasing merge it with master with a pull request.

Your contribution has been evaluated according to Utopian policies and guidelines, as well as a predefined set of questions pertaining to the category.

To view those questions and the relevant answers related to your post, click here.


Need help? Write a ticket on https://support.utopian.io/.
Chat with us on Discord.
[utopian-moderator]

Thanks for the idea, I was already thinking about the development branch, maybe it's really time to create it.

Hey @codingdefined
Here's a tip for your valuable feedback! @Utopian-io loves and incentivises informative comments.

Contributing on Utopian
Learn how to contribute on our website.

Want to chat? Join us on Discord https://discord.gg/h52nFrV.

Vote for Utopian Witness!

Hey @pinkwonder
Thanks for contributing on Utopian.
We’re already looking forward to your next contribution!

Want to chat? Join us on Discord https://discord.gg/h52nFrV.

Vote for Utopian Witness!

YOU JUST GOT UPVOTED

Congratulations,
you just received a 21.53% upvote from @steemhq - Community Bot!

Wanna join and receive free upvotes yourself?
Vote for steemhq.witness on Steemit or directly on SteemConnect and join the Community Witness.

This service was brought to you by SteemHQ.com

Congratulations! This post has been upvoted from the communal account, @minnowsupport, by spiiin from the Minnow Support Project. It's a witness project run by aggroed, ausbitbank, teamsteem, theprophet0, someguy123, neoxian, followbtcnews, and netuoso. The goal is to help Steemit grow by supporting Minnows. Please find us at the Peace, Abundance, and Liberty Network (PALnet) Discord Channel. It's a completely public and open space to all members of the Steemit community who voluntarily choose to be there.

If you would like to delegate to the Minnow Support Project you can do so by clicking on the following links: 50SP, 100SP, 250SP, 500SP, 1000SP, 5000SP.
Be sure to leave at least 50SP undelegated on your account.

Coin Marketplace

STEEM 0.16
TRX 0.13
JST 0.027
BTC 58394.86
ETH 2618.86
USDT 1.00
SBD 2.39