I'm horribly looking forward to the S3K one, however I reckon a complete disassembly is going to be needed first. :P (Unless there is one. In which case I'm slooooow.)
SonLVL Level Editor for S1, SCD, S2NA, S2, S3K, SKC, SCDPC - 562 - 07/11/2015
#62
Posted 18 February 2011 - 04:27 AM
There is a Sonic and Knuckles disassembly , but I don't know of a complete one.
#63
Posted 19 February 2011 - 11:24 PM
Beta 4 is here:

INI files for the 2005 disassembly can be found with the download, SVN version, on the SVN in the Sonic 1 Split Disassembly folder. However, due to the large number of differences between the two disassemblies, I don't think I'll be able to continue supporting both disassemblies. It took about as long to make the 2005 INIs as the originals.
You'll also notice that in Sonic 1, rings only show up as one sprite, and give no information related to subtype. I have an idea to fix this and other objects that don't display properly, by having C# code files (.cs) for each object, but this would make the properties a bit more difficult to edit for people that don't know C# (which I'm assuming is most of you). And it would increase load time a bit, compiling all the files. But it's pretty much that, or live with the limits the system has now.
As for S3K, I have access to a private disassembly
- Added object definitions for Casino Night.
- Added support for CNZ's special bumpers.
- Added support for Sonic 1.

INI files for the 2005 disassembly can be found with the download, SVN version, on the SVN in the Sonic 1 Split Disassembly folder. However, due to the large number of differences between the two disassemblies, I don't think I'll be able to continue supporting both disassemblies. It took about as long to make the 2005 INIs as the originals.
You'll also notice that in Sonic 1, rings only show up as one sprite, and give no information related to subtype. I have an idea to fix this and other objects that don't display properly, by having C# code files (.cs) for each object, but this would make the properties a bit more difficult to edit for people that don't know C# (which I'm assuming is most of you). And it would increase load time a bit, compiling all the files. But it's pretty much that, or live with the limits the system has now.
As for S3K, I have access to a private disassembly
#65
Posted 23 February 2011 - 12:46 PM
Rewriting the object definitions so that they can control how they draw (to fix S1 rings, EHZ bridge, etc), I've also made it possible for objects to define custom properties:
#66
Posted 23 February 2011 - 01:17 PM
looks nice so far. Too bad I tried to open up the S1 level editor and it crashed
#67
Posted 23 February 2011 - 01:20 PM
Did it pop up a message box, or just crash? If it did, what did it say?
#70
Posted 23 February 2011 - 02:15 PM
ow no idea then...I just remember clicking on some chunk and then the message appeared. Ill try looking at it again soon
#71
Posted 24 February 2011 - 12:54 AM
Here is a very experimental Mac OS X port if anyone wants it. (Requires OS 10.6 or higher)

You can load data, but you can't save. (I've only re-written the decompression parts of the Windows COM DLL's into .NET, not the compression parts yet.) Fairly useless, but you can use it to export level maps at least. It's also very unstable.
This was mostly an experiment to see how quickly I could decompile someone else's code and get it to build again. (About 2 hours, minus the effort to rewrite the decompression routines from the DLL's) If there is any interest, I can continue working on this port until it's usable. Or I can at least provide native .NET (de)compression DLL's if MM wants them, so that it would be possible to make it work anywhere Mono can run.

You can load data, but you can't save. (I've only re-written the decompression parts of the Windows COM DLL's into .NET, not the compression parts yet.) Fairly useless, but you can use it to export level maps at least. It's also very unstable.
This was mostly an experiment to see how quickly I could decompile someone else's code and get it to build again. (About 2 hours, minus the effort to rewrite the decompression routines from the DLL's) If there is any interest, I can continue working on this port until it's usable. Or I can at least provide native .NET (de)compression DLL's if MM wants them, so that it would be possible to make it work anywhere Mono can run.
#72
Posted 24 February 2011 - 01:01 AM
Here is a very experimental Mac OS X port if anyone wants it. (Requires OS 10.6 or higher)

You can load data, but you can't save. (I've only re-written the decompression parts of the Windows COM DLL's into .NET, not the compression parts yet.) Fairly useless, but you can use it to export level maps at least. It's also very unstable.
This was mostly an experiment to see how quickly I could decompile someone else's code and get it to build again. (About 2 hours, minus the effort to rewrite the decompression routines from the DLL's) If there is any interest, I can continue working on this port until it's usable. Or I can at least provide native .NET (de)compression DLL's if MM wants them, so that it would be possible to make it work anywhere Mono can run.

You can load data, but you can't save. (I've only re-written the decompression parts of the Windows COM DLL's into .NET, not the compression parts yet.) Fairly useless, but you can use it to export level maps at least. It's also very unstable.
This was mostly an experiment to see how quickly I could decompile someone else's code and get it to build again. (About 2 hours, minus the effort to rewrite the decompression routines from the DLL's) If there is any interest, I can continue working on this port until it's usable. Or I can at least provide native .NET (de)compression DLL's if MM wants them, so that it would be possible to make it work anywhere Mono can run.
*flails arms*
Mac ports make me feel happy. I must try and report back. *teleports off with a copy of the programme*
INB4 .NET
This post has been edited by theocas: 13 April 2011 - 10:37 PM
#73
Posted 24 February 2011 - 09:21 AM
FraGag is working on porting Flamewing's C++ port of KENS to C# after I failed to do so (KENSSharp on the SVN). I've always intended to have it cross-platform.
#74
Posted 24 February 2011 - 02:15 PM
FraGag is working on porting Flamewing's C++ port of KENS to C# after I failed to do so (KENSSharp on the SVN). I've always intended to have it cross-platform.
FYI, I found a small bug in my Nemesis decompressor for the case of mode 1 decompression. I still haven't updated SVN with it, but the changes are as follows:
CODE
Index: src/lib/nemesis.cc
===================================================================
--- src/lib/nemesis.cc (revision 28)
+++ src/lib/nemesis.cc (working copy)
@@ -406,13 +406,11 @@
{
// For alternating decoding, we must now incrementally XOR and output
// the lines.
- dst.seekg(0, std::ios::end);
- std::streampos sz = dst.tellg();
dst.seekg(0);
dst.clear();
unsigned long in = LittleEndian::Read4(dst);
LittleEndian::Write4(Dst, in);
- while (dst.tellg() < sz)
+ while (dst.tellg() < rtiles << 5)
{
in ^= LittleEndian::Read4(dst);
LittleEndian::Write4(Dst, in);
===================================================================
--- src/lib/nemesis.cc (revision 28)
+++ src/lib/nemesis.cc (working copy)
@@ -406,13 +406,11 @@
{
// For alternating decoding, we must now incrementally XOR and output
// the lines.
- dst.seekg(0, std::ios::end);
- std::streampos sz = dst.tellg();
dst.seekg(0);
dst.clear();
unsigned long in = LittleEndian::Read4(dst);
LittleEndian::Write4(Dst, in);
- while (dst.tellg() < sz)
+ while (dst.tellg() < rtiles << 5)
{
in ^= LittleEndian::Read4(dst);
LittleEndian::Write4(Dst, in);
To avoid being completely off-topic, I have a suggestion for handling HTZ, WFZ and DEZ zone tiles (and maybe levels in other Sonic games that work similar to these). These levels work by patching the art of another level with zone-specific tiles. So what you need to do is support some form of art patching that works (schematically) like this (using HTZ as example):
CODE
VRAM tile: $0000 $01FC $037E $0393
v v v v
Buffer 1: <----------------------- EHZ tiles ----------------------->
Buffer 2: <--- passthrough ---><-- HTZ tiles --><--- passthrough --->
v v v v
Buffer 1: <----------------------- EHZ tiles ----------------------->
Buffer 2: <--- passthrough ---><-- HTZ tiles --><--- passthrough --->
Here, the passthrough regions simply forward the tile requested to the EHZ tile buffer, while the HTZ tiles are used instead of the EHZ ones in those regions. This allows editing of EHZ and HTZ tiles and allows them to be saved independently on changes to either, without the HTZ tiles gaining duplicate copies of all EHZ tiles and without the EHZ tiles being overwritten by HTZ tiles. (by the way, Rexon uses tiles starting from $037E, so you may want to keep this indirection further along).
#75
Posted 24 February 2011 - 02:25 PM
I have a setup for palette entries that allows any number of entries from any location in any number of files to be loaded, but the problem I have with this is that you can't add or delete palette entries, but you will be able to add and remove tiles.


00
