Update 5-29-2010:
I have made a small video showing progress. Watch it with annotation, it explains everything.
Without further delay here is Preview 1
The next step is to start implementing the loading of SMW graphics. No exact ETA on this, but I will keep you guys up to date on the progress of this. It all depends on my work load.
Original Post:
_____________________________________
Recently I have begun work on a new SMW level editor. For lack of a catchy name, that is all I am going to call it for now. This project will be made open source as soon as I start to get more functional code in place(which is a few weeks away). But before I get to far in development, I would like to get opinions on what features I am planning. This list is far from complete but if you think of something not on the list suggest it, I could have forgotten to mention it or overlooked it.
I would also like to note, I am far better at c++ than ASM and I will need quite a bit of help in that area.
So here is the far from complete list:
Technical features
*C++ will be the language of choice, In addition I will be using the Qt library for cross platform functionality.
*All hacks by the editor will be stored in a folder as ASM files. This will allow for easy updating and manual tweaking. This will also help document changes the editor makes to a ROM.
*A new compiler built from the ground up. This compiler will be based on XKAS, with a few new features added. Most added features will be specifically designed around SMW. More on this later.
*An update checker, simple but handy.
Generic features
*ASM editor, a simple text editor with highlighting and address lookups.
*IPS generation
*Auto backups every few saves.(customizable)
*ROM expander
*Hex editor that natively supports SNES addresses.
*A patch management system, allowing for updating of inserted patches.
Level features
*This is an area where I want opinions the most, otherwise I will implement it very similarly to LM.
*Hotkeys for nearly everything for example: ctrl-shift-# = sprite, alt-shift-# = block(number decided on release of alt-shift). Feel free to suggest another system. I will also be implementing a hotkey editor.
*Move message box text to the level editor instead of the overworld editor. This seems to make more sense to me.
*Ability to add level specific ASM. ASM code written from the level editor will only effect the current level.
*Undo button.
*Possibly level specific physics. Would be interesting at least.
*Rotation of blocks by 90 degrees, not sure why this is not already in LM...
Overworld features
*I know very little on the overworld, this will be played by ear.
*Other than that I will keep it much like the LM OW editor.
Included hacks
NOTE: I will be requesting permission for each requested patch/hack that I have not written myself.
NOTE 2: Some patches will be inserted only after it is practical. Such as levelASM, it will not be inserted if there is no need by the hacker.
*generic patches and fixes(like fade fix)
*Ersanio's LevelASM
*Overworld ASM (Kil / Chdata)
*Custom Mario Palettes
*Green Berry Eaten
*Anything else that comes to mind this list will not be final. Alse, due to the way hacks are handled adding more is simple.
The compiler
*DATE command, this will be used for tracking the last update to the patch, MMDD = byte 1 YYYY = byte 2 format.
*RATS just simplified way to use RATS tags. It will judge length based on how long to the next ORG, or until the end of the file.
*Functions, this is a feature that I may or may not include. They would work like labels that can take up to 3 arguments, and preserve values as needed.
*Warning system, so that when patching to a segment with a RATS tag it will ask if an overwrite is OK.
*predefined labels and definitions, like !powerup or similar. The database would be a easy to edit XML file. If redefined in a patch it will generate an error.
There is a lot more I would like to plan that would make this into a full blown IDE for SMW, but this is more than an adequate start. This project will be vastly a community driven project, and will need teamwork on many levels. C++ programmers, will be the most helpful to this project, as will ASM programmers. If you use C#(yuck...) the news is semi good for you, C++ using Qt should not be to complicated to pick up, if you wanted to try .
I hope to have a limited edition done sometime this summer so that we can begin with the major section of work. The biggest part will be the compiler as it is the backend of this entire project. After that we can start slowly coding in editors.
To start helping now just post any and all snippets you would fine useful here. If it is a longer snippet post it to http://p4plus2-smw.pastebin.com/.
Please post all feedback you have!! I need opinions before I do too much, it would be bad to get an entire feature done to find out it need completely redone.
(Sorry if I made any typos/grammar errors I am typing this at 1AM haha. Also, I forgot about a lot of features I am sure I will add more tomorrow after school I need to go to bed now...)
I have made a small video showing progress. Watch it with annotation, it explains everything.
Without further delay here is Preview 1
The next step is to start implementing the loading of SMW graphics. No exact ETA on this, but I will keep you guys up to date on the progress of this. It all depends on my work load.
Original Post:
_____________________________________
Recently I have begun work on a new SMW level editor. For lack of a catchy name, that is all I am going to call it for now. This project will be made open source as soon as I start to get more functional code in place(which is a few weeks away). But before I get to far in development, I would like to get opinions on what features I am planning. This list is far from complete but if you think of something not on the list suggest it, I could have forgotten to mention it or overlooked it.
I would also like to note, I am far better at c++ than ASM and I will need quite a bit of help in that area.
So here is the far from complete list:
Technical features
*C++ will be the language of choice, In addition I will be using the Qt library for cross platform functionality.
*All hacks by the editor will be stored in a folder as ASM files. This will allow for easy updating and manual tweaking. This will also help document changes the editor makes to a ROM.
*A new compiler built from the ground up. This compiler will be based on XKAS, with a few new features added. Most added features will be specifically designed around SMW. More on this later.
*An update checker, simple but handy.
Generic features
*ASM editor, a simple text editor with highlighting and address lookups.
*IPS generation
*Auto backups every few saves.(customizable)
*ROM expander
*Hex editor that natively supports SNES addresses.
*A patch management system, allowing for updating of inserted patches.
Level features
*This is an area where I want opinions the most, otherwise I will implement it very similarly to LM.
*Hotkeys for nearly everything for example: ctrl-shift-# = sprite, alt-shift-# = block(number decided on release of alt-shift). Feel free to suggest another system. I will also be implementing a hotkey editor.
*Move message box text to the level editor instead of the overworld editor. This seems to make more sense to me.
*Ability to add level specific ASM. ASM code written from the level editor will only effect the current level.
*Undo button.
*Possibly level specific physics. Would be interesting at least.
*Rotation of blocks by 90 degrees, not sure why this is not already in LM...
Overworld features
*I know very little on the overworld, this will be played by ear.
*Other than that I will keep it much like the LM OW editor.
Included hacks
NOTE: I will be requesting permission for each requested patch/hack that I have not written myself.
NOTE 2: Some patches will be inserted only after it is practical. Such as levelASM, it will not be inserted if there is no need by the hacker.
*generic patches and fixes(like fade fix)
*Ersanio's LevelASM
*Overworld ASM (Kil / Chdata)
*Custom Mario Palettes
*Green Berry Eaten
*Anything else that comes to mind this list will not be final. Alse, due to the way hacks are handled adding more is simple.
The compiler
*DATE command, this will be used for tracking the last update to the patch, MMDD = byte 1 YYYY = byte 2 format.
*RATS just simplified way to use RATS tags. It will judge length based on how long to the next ORG, or until the end of the file.
*Functions, this is a feature that I may or may not include. They would work like labels that can take up to 3 arguments, and preserve values as needed.
*Warning system, so that when patching to a segment with a RATS tag it will ask if an overwrite is OK.
*predefined labels and definitions, like !powerup or similar. The database would be a easy to edit XML file. If redefined in a patch it will generate an error.
There is a lot more I would like to plan that would make this into a full blown IDE for SMW, but this is more than an adequate start. This project will be vastly a community driven project, and will need teamwork on many levels. C++ programmers, will be the most helpful to this project, as will ASM programmers. If you use C#(yuck...) the news is semi good for you, C++ using Qt should not be to complicated to pick up, if you wanted to try .
I hope to have a limited edition done sometime this summer so that we can begin with the major section of work. The biggest part will be the compiler as it is the backend of this entire project. After that we can start slowly coding in editors.
To start helping now just post any and all snippets you would fine useful here. If it is a longer snippet post it to http://p4plus2-smw.pastebin.com/.
Please post all feedback you have!! I need opinions before I do too much, it would be bad to get an entire feature done to find out it need completely redone.
(Sorry if I made any typos/grammar errors I am typing this at 1AM haha. Also, I forgot about a lot of features I am sure I will add more tomorrow after school I need to go to bed now...)