So I gave a bit of a hint about this project the other night on #romhacking, but now that I'm a member of the forums, this shall be my place to call SNEER's home~Current download status: v0.15 Available (as a viewer only)Nyxo's TODO List
(in no particular order...)
- Entity Graphics
- Editing of tiles
- 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:
- Map layouts: Foreground layers, Background Layers, and Collision Layers
- 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?
- DRE (Dream) - There's actually 2 identical rooms arranged vertically, one with entities, one without.
- 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"
- SEL (Title Screen) - There's no map data, and no map-requested entities.
- TE1 (Test1) - It's a long straight hallway. Very long.
- TE2 (Test2) - See TE1
- TE3 (Test3) - See TE1
- TE4 (Test4) - See TE1
- TE5 (Test5) - See TE1
- WRP (Warp Rooms) - Yes, all 5 warp rooms are in their own zone
- RCAT (Reverse Catacombs) - See CAT
- RNO3 (Reverse Castle Entrance) - The outside forest is still there (this time above the entrance, obviously- but some of the tiles haven't been flipped upside down, so it looks a little weird)
- RWRP (Reverse Warp Rooms) - See WRP
Short vid of loading and viewing CHI: http://www.youtube.com/watch?v=Cgwo4XfrIOo
Screenshot of MAD:
Short vid of loading and viewing collision info in CAT: http://www.youtube.com/watch?v=PhIn2RQ3ei4