Messages - Nyxojaele

Unfortunately, the Saturn version of the game isn't on my roadmap of things to support.If the file formats happen to work the same as the PSX version, and we get it for free, then that's great, but if not, I don't suspect SNEER will ever support it, alas.

Alright, time for another release!This is probably going to be my last major release (barring maybe bug fixes etc) for a while-- the next big things on my to-do list involve adding the editing features in, which will take a considerable effort, and right now I'm neck deep in contract work that's keeping my free time to a minimum.

Good idea.I just edited my first post with some more information (and a download link!)I put a TODO list up there, but I really don't know how much help that would be for people who want to help me out with the project...

Ah yes, that would likely be a problem.Since SNEER is intended to be an editor in the future, we're going to require write access to the map files, so I consider it acceptable to force the user to have extracted the map files from the ISO, and not be trying to use them from inside a CD image.I should make note of that in the readme.

Thanks for posting back about what it was- that makes life easier for me^^

Oh, I guess I should specify which version of SotN I use, cause that -might- (likely not, but you never know...) matter.The current ISO that I use is (US) SLUS-00067. If you're using a different version, I make no guarantees about whether it will work. This may be addressed in a later release.

Also, I'm going to put more logging information in so it'll be easier for me to fix these problems.

Also, just to be clear, I'm only working on this project in a -very- part-time capacity right now, as my time is largely being tied up elsewhere.What that means to you is that it may take some time in between releases and bug fixes, but I assure you that I will be keeping track of them!

Currently this only exists as a viewer. The next release will see the viewer capabilities expanded upon.Readme:**************************************************

Symphony of the Night Editor and Entity Recompiler

SNEER

************************************************** By Nyxojaele

Installation Instructions:Just run Setup.exe, it should take care of all the prerequisites for you.If you have troubles with prerequisites, they are as follows: * Microsoft .NET Framework 4 Client Profile * Microsoft XNA Framework Redistributable 4.0Prerequisites for the installer are as follows: * Windows Installer 3.1

How to use: * The first thing you will need to do is select the locations of your DRA.BIN and F_GAME.BIN files. -DRA.BIN can be found in <ISO>/DRA.BIN -F_GAME.BIN can be found in <ISO>/BIN/F_GAME.BIN -If you can't find these files, it's okay, but you either won't be able to see load/save rooms, or they may look corrupted. The rest of the map will still display correctly. * Select File | Open and select either of the .BIN files found in the map directory (eg. CHI.BIN or F_CHI.BIN) - It doesn't matter which, SNEER is smart enough to figure it out. * The first thing you will see is the top left corner of the map, if it were a rectangle. -*****YOU MIGHT NOT SEE ANYTHING IMMEDIATELY IF THE MAP DOESN'T HAVE A ROOM IN THE TOP LEFT CORNER!***** * Using the mouse, right-click + Drag to pan the map around. * Use the mouse wheel to zoom in/out.

Known Issues: * Some rooms appear to be cut off [partially]. This can be seen at the top right corner of DAI, and near the left side of NZ1. The rooms are still there, but the neighboring rooms are drawing on top of them. * There are some graphical glitches on my development machine, causing bright green colors to appear where they shouldn't. I'm pretty sure this is my video card screwing up, as I've testing it on my other machine and it looks fine, but I thought I'd put it out there.

So it's been a very long time since I last posted about this project, and for that, I apologize.I've recently come back to this project in a part-time manner, and am trying to finish the conversion of the codebase that I was working on at the time that I got pulled away from this project.What I'm hoping to achieve, is to get this thing back into "viewer" status, probably with limited functionality even as a viewer, so I can make an initial release.I know that my free time is going to become very limited in the near future, so I'm hoping to get this done before that happens, so there's at least SOME sort of release.Following that, I'd like to get all the rest of the "viewer" functionality back into it for a second release, when I have time again.

That all said, I'm hoping for this first release in the next 1-3 weeks, as time permits- I've already got the majority of it back up and running again, and just have to iron out a few bugs before I'll feel comfortable making a release.

Honestly, I don't know- but I can guarantee it won't be anytime immediate, unfortunately;;

The current roadmap before initial release of SNEER, in a general sense, is as follows:

Finish restructuring/rewriting of SNEER

Connect entity graphics to placed entities

Provide means to edit tile placement

Provide means to edit entity placement and basic values

This is a basic list of what NEEDS to be done before a release is made. I'm still undecided about whether I want to have full editability (eg. replacing entity graphics with physically larger graphics, replacing rooms with larger ones) in the initial release since it will likely involve considerably more work on my part before I can properly do so.

The restructuring/rewriting of SNEER is going well, and I'm very happy with the results so far-- once this is all done, SNEER will be capable of things I could only have dreamed of with the old code, and I can't wait to start building on this new framework once I have it all in place!

So my free time in the last little while has been split between working on rewriting SNEER, and writing up some technical documentation on the SotN file formats.

I've just made my first release of the document now, available at http://www.romhacking.net/docs/528/It contains most of everything I know that has been implemented already into SNEER, and touches briefly on a couple other things that I haven't 100% figured out yet, and obivously are NOT implemnted into SNEER yet.

I hope this document can serve as a starting point for many other rom hackers out there to get their feet wet with this game, as I'd love to see more people out there poking around in it and finding more useful stuff! ^-^v

Alright, so I've managed to get myself mostly accustomed to my new job. I still say that a lot of my free time is still going to be dedicated towards learning everything for my new job, but now I can safely say that I have some free time to continue work on SNEER.

That in mind, I'm somewhat interested in coming into contact with other people who are capable/willing to help with hacking SotN and understanding more. As time allows, I'd like very much to be able to document everything I know about the file formats, so as to help anybody else interested in writing tools for this game, as well. Anybody who is honestly interested and capable of helping, please do contact me about it!

On the SNEER front tho, I'm sitting down in front of it again tonite and have decided that I need to rewrite portions of it to make it more manageable. So while I will be working on SNEER in immediate future, I don't suspect, to the majority of people, that it will appear that I am making much progress. I'm confident, tho, that the parts I'm rewriting will not only improve performance, but also increase the ability for SNEER to expand with more features.

Hey everybody, I just wanted to give a bit of an update on what's going on so you all know~I recently started a new job, this time in computer programming, and as such, for the time being, I likely will have little to no time to work on SNEER until I can get up to speed at my new job. Most of my free time is being spent trying to learn all the new technologies and frameworks in place at the new company, so I don't really have much time for hobbies until I'm done getting up to speed.

But fear not, as SNEER is still very much something I intend to continue to work on- it's just that I need to concentrate on my career first, and once I'm comfortable there, I can start to afford myself more time for my hobbies.

@BlackTelomeres:No, I don't have an IRC channel or anything dedicated to this project. I don't suspect that there really is enough interest to dedicate something like that to this project, so I think, at least for now, that this thread will suffice quite well for all discussion about SNEER, or even SotN level hacking in general, if anybody so pleases.

SNEER now fully supports collision info in the maps. I used existing tiles (from MAD) to create the collision graphics, and did my best to create new graphics that followed the same conventions used in MAD, where graphics didn't exist. (This applies mostly to sloped ceilings/floors, where they slope only 1/4 of a tile vertically)

I also rewrote the rendering engine's core components, and it now renders approx 50% faster than it used to. Not to mention, in the code itself, it's a lot nicer to look at and easier to maintain/modify in the future^^

Also some minor graphical changes- the ability to change the background color between "Editor" and "Game" colors, and I changed the generic graphic used to represent entity placement. Currently this applies to all entities, but once I have entity graphics in place, this will only apply to entities that don't have a graphic associated with them, such as triggers for scripts, etc...

Another update:I've found how the game determines room counts in the map files and now use that in SNEER. I've also found some new information about how the game parses indices for loading entities, allowing me to fix all entity-based crashes. EVERYTHING LOADS NOW!I've also discovered there's some hidden rooms on the "other side" of loading rooms that I had seen info about briefly, but promptly forgotten about-- well, now SNEER is showing them in all their (invisible) glory.I'm also having serious progress on how zones are stitched together, and with any luck, I can implement info on that into SNEER in the next day or 2.

I'll be updating the top post with the new information.

@Esco:That makes sense. I never really paid attention to if there was loading before bosses or not before ;pMAD has entities, that's for sure, I just haven't really looked into _WHAT_ yet. But no entity graphics get loaded into VRAM, so I don't think any "spawnable" entities exist in it. Not to mention that Gemini and I were screwing around last night and got ourselves into MAD in-game, and there was no discernable entity interaction in it at all.

Thnx for the info on NP3, makes sense, and now that you mention it, I remember that about the entities changing.

On ST0: I know, I'm -really- looking forward to screwing with entity scripts in that zone!

I'm aware of how the maps load in your Mappy plugin, but it cheats in more than a few places in regards to loading the info, and while that may work for all of the provided maps, I can't guarantee it'll work for any user-created maps in the future, so I'm programming SNEER to load things "properly" to avoid potential future issues.

I just discovered that most of the bosses in the game have their own zone maps, so I tested all of the available files and added the results to the top post. I also changed the description of the zones to accommodate. I can't be 100% sure until SNEER is capable of loading all the available files, but I suspect there are a couple bosses (Darkwing Bat for one?) that don't get their own zones to battle in.

I'm currently looking into 2 different things right now:1) Map loading code. If I can find this, I may be able to manipulate stuff so that new zones can be created and linked to from existing maps This will be invaluable in helping to stitch zones together.2) Entity graphics code/definitions. Since this is all handled via code, I feel it might be a while to get them in place, but at the same time, once it's in place, I think they may animated.

@Gideon Zhi:Thanks for the warm welcome!

@Gemini:Thanks for all you've done to help me understand the PSX architecture-- I'm sure you'll be invaluable in the future as well~Feel free to use my layout idea for your own editor- I feel this is likely the best way to build a map-- knowing everything that is around the room you are working on^^

@Everybody else:Esco is the guy you're talking about, and I've been in contact with him already. He's actually the guy who gave me the initial push to actually start working on this editor (I had only been toying with the idea before that...)His hack looks quite interesting based on what he's accomplished already and what he plans to do, but I'd like to point out the difference between his hack, and what this editor is going to be capable of: His hack relies quite heavily on having external scripts running via memory hacking software at the same time as the emulator you are running Symphony of the Night on. What SNEER is intended to do, is to save ALL changes directly into the map files, so there will be no need for any external files. Just load the game and play.

Support for different sizes of rooms (more specifically, allow each room to take a different amount of disk space)

Dialogue/Text Editor

Audio Editor

Script/Entity AI Editor

Basically what the intention of this project is, is to allow direct editing of the SotN map files from the CD.Each zone is composed of 2 map files, XXX.BIN and F_XXX.BIN. (There's other files too, but they're just audio stuff)F_XXX.BIN contains the graphic for the tileset, and XXX.BIN contains EVERYTHING ELSE. This includes, but is not limited to:

Entity spawning code: A function that runs once when you enter a room, and a function that runs once every frame

Compressed Entity Graphics

Entity AI code: This includes code to animate sprites, as well as movement/attacks/etc...

Scripted sequence code: This includes dialogues, switches, etc...

A lot of this code, it seems to me, could have been written external to the map files, not only reducing the map file sizes, but making things more standardized as well as reducing in multiple copies of the exact same code. ~sigh~

Currently SNEER is capable of loading/rendering an entire SotN zone's tiles, including background tiles, foreground tiles, and collision tiles, and additionally showing markers for where all the entities are positioned in the rooms. Note that there are some zone changes that most players will not be aware of, while playing the game. Most boss fights are in their own zone, not the actual "containing zone," the warp rooms are all in a zone together, but separate from everything else, and the dream sequence is it's own zone.

Something interesting to note is that when viewing the different layers, you can definitely see different "styles" of map making being used-- this is likely because more than one person was making the maps at Konami. There are some rooms with a background layer that scrolls at a slower speed than the foreground, and that is to apply an effect of depth to the room, so that makes sense. But some maps use this same background layer and [somehow] set the scrolling speed of it to the same as the speed of the foreground layer, making it all appear as one layer. Conversely, there are some maps that instead just put everything in the foreground layer, leaving the background layer empty. Regardless of how they decided to do it tho, the foreground layer will never -actually- be empty, because the collision data is stored in the foreground layer. In SNEER the collision data is displayed as a separate layer, but in reality, it is indeed, a part of the foreground layer. The background layer is capable of storing collision data, but afaict that collision data in the background layer is never accessed by the game.

Another note about the collision data, is that there are some "special tiles" also, that define some additional collision (and non-collision) data for the game. For example, grates that you must use mist form to get thru, spikes that hurt you, and walls/floors/ceilings that are breakable. Also stored in the collision layer are the tiles that contain water, including the entire waterfall.

At this time, SNEER cannot edit/save the files back-- this will be extremely difficult at best, until I can fully understand the map file format, as there are a LOT of pointers that rely in data being positioned exactly where it needs to be in the file, to function properly.

The graphics were made possible by emulating the PSX's Video RAM in software, and graphical hardware in a pixel shader. The entity graphics will be made possible via my WIP PSX CPU emulator. Unfortunately, all entity graphics, animation, etc.. are handled by each entity's AI, making it a royal pain to try and parse, which is why it requires a CPU Emulator.

After loading a map, the Virtual Video RAM can be viewed if you'd like, but note that it's more intended for my debugging purposes, and as such, it won't show very accurate information-- it only shows the VRAM state as it is after loading the last room of the zone (each room will potentially overwrite some entity graphics from a previous room, but the tile graphics will remain unchanged)

SNEER can now load all zones and all boss zones. Only interesting notes are marked here:Please also note that the 3d animated backgrounds seen on these maps do NOT load, nor do the entity graphics get assigned to the entities- only loaded into Video RAM

CAT (Catacombs) - The spiked area you need to use the bat sonar to get thru actually render with green outlines. I wonder if this is an indicator to the game that sonar should bounce off of it?

NO3 (Castle Entrance) - The forest Alucard runs thru at the beginning is below the castle entrance, about 1 screen's space below the useless hidden save point- it extends from about the castle door until approx the room where you first see Death

NP3 (Castle Entrance) - This is an exact duplicate of NO3, except that there are different entities, and there is no forest section outside the gate, or "below the entrance"