Post by kion on Jun 6, 2019 21:43:05 GMT -5
So at this point I have too many tools scattered everywhere. I figured it would be a good idea to catalog all of the tools available for Megaman Legends 1, where they are and how to use them. This list will go from oldest to newest, and hopefully organizing this will help me figure out how to organize tools better. In general I've been using mml.dashgl.com as a location for hosting all of them, and while I've pre-bought a few years of hosting I think that migrating these tools to Gitlab should help with things like link-rot and long-term availability. That being said, let's start the list.
Wiki
Wiki for different file types and other information for different file types for MML 1:
This is the original tool that helped me get into reverse engineering Megaman Legends. DashViewer is a Windows application in C# that displays character models, fonts, TIM files and stage layouts.
Youtube: www.youtube.com/watch?v=lLWrJrQsu3s
Source Code: www.dropbox.com/s/9j0b6aduj4f1dic/MMLPSX.rar?dl=0
Author: xdaniel
Gltf Exporter
Using xDaniel's code as a base, I started working on porting the functionality to Nodejs to try and read the models and export them as static Gltf models. This tool was short lived, but the source code is still available.
Thread: mmls.proboards.com/thread/6171/static-gltf-model-exports
Source Code: github.com/kion-dgl/Dash-Model-Viewer
TIM Viewer
Getting tired of working with the command line, I wanted to switch to tools where I could get instant feedback on whether my interpretation of the image was correct or not. The next step was a very simple TIM viewer, that will load a single TIM image and allow the user to change palettes.
Live Version: mml.dashgl.com/tools/mml1_psx_tex/
Source Code: gitlab.com/megamanlegends/JS_MML1_PSX_TEXTURES
Notes: should probably move hosting to Gitlab
Author: Kion
Mesh Debugger
After being able to display TIM textures, the next step was to start porting models to a live preview. Since I was using Nodejs (Javascript) in the console, and then previewing the models with Threejs in testing, I wanted to see if I could parse the models directly with Threejs. I also added the ability to mix and match TIM images and palettes to try and get a better idea of how the game matched meshes with their required textures. This is a tool written for the purposes of debugging, so polish is lacking.
Youtube: www.youtube.com/watch?v=p0pJ5Ga7Ays
Live Version: mml.dashgl.com/tools/mml1_psx_mesh/
Source Code: gitlab.com/megamanlegends/JS_MML1_PSX_MESH
Notes: should probably move hosting to Gitlab
Author: Kion
Animation Debugger
After being able to display meshes, matching textures (manually) and rigging models, the next step was to start looking into animations. The process involved tracking down where the game stores pose data for each frame of an animation, and then testing and making notes about how the key frames were encoded. While still not polished I was able to make a tool that was able to view animations, and after some difficulty was able to add .dae support for exporting rigged models (with no animation).
Youtube: www.youtube.com/watch?v=2B9fd92o_24
Live Version: mml.dashgl.com/tools/mml1_psx_anim/
Source Code: gitlab.com/megamanlegends/JS_MML1_PSX_ANIMS
Notes: should probably move hosting to Gitlab
Author: Kion
Ebd Viewer
After taking sometime to work with Megaman Legends 2 assets, I decided to comeback and revisit what I had worked on for Megaman Legends 1 and start adding some polish. I re-made the animation debugger with a cleaner user interface and add the option to pause, play, stop and change the speed of animations. I added a palette editor to allow the color of the model previews to change (and be added to game). And luckily, the Gltf exporter was finally updated in Threejs to support models with multiple materials and animations. I also implemented my own 3d file format to add support for models that way.
Youtube: www.youtube.com/watch?v=CDfk1s1GYbY
Live Version: megamanlegends.gitlab.io/mml1-psx/ebd/
Source Code: gitlab.com/megamanlegends/mml1-psx
Author: Kion
Stg Viewer
After getting the entities with bones and animations, the next target was to start working on stage geometry. After a long process of reverse engineering which helped me gain a better understanding of how the game manages its memory, I was finally able to start viewing stage layouts and stage tile geometry. While being able to being able to put together a complete stage was the goal, I wanted to get this tool out and available for people to play with. So I published it after being able to view tiles. One thing I never figured out was which archives the game loads at any given time, to the textures need to be paired manually.
Youtube: www.youtube.com/watch?v=mjXRwuANb-U
Live Version: megamanlegends.gitlab.io/mml1-psx/mdt/
Source Code: gitlab.com/megamanlegends/mml1-psx
Author: Kion
Texture Editor
In order to help gain attention for Megaman Legends I went ahead and implemented a texture editor to see what kind of creative options would be available to fans being able edit and change textures in the game. Modding tools are a time consuming task, so I cut a lot of corners to be able to create a proof of concept in a reasonable amount of time. The user interface is centered around being able to replace textures and produce a patch file than can be run to replace specific textures in the game's read only memory.
Youtube: www.youtube.com/watch?v=ASNtUPb33iA
Live Version: megamanlegends.gitlab.io/dash-tex/
Source Code: gitlab.com/megamanlegends/dash-tex
Author: Kion
Font Encoder
Megaman Legends 1 has two font files, font.bin and kaifont.bin that are fonts for Japanese and English respectively. Once these two files have been exported, there isn't much need for a general purpose tool to export these two images. So the tool is for encoding font bitmaps, and to create a patch into the game so that you can change or alter the available characters in game. The instructions are pretty simple, use the original fonts as a base, edit them with black and white to produce the text you want and then select and download the patch file.
Live Version: megamanlegends.gitlab.io/mml1-psx/font/
Source Code: gitlab.com/megamanlegends/mml1-psx
Author: Kion
Msg Editor
This tool was created to allow for people to edit the game's dialog to be able to translate the game, though it also allows for the game's dialog so other uses available if you're into that kind of thing. A lot of corners were cut to make this tool, so it's recommended to watch the video for how to use it.
Youtube: www.youtube.com/watch?v=HIsGBn4nTho
Live Version: megamanlegends.gitlab.io/mml1-psx/msg/03/
Source Code: gitlab.com/megamanlegends/mml1-psx
Author: Kion
Save State Viewer
A lot of my troubles with managing assets for this game have come from matching meshes with their textures. The game doesn't use id's or texture names, but rather framebuffer coordinates, which matches a palette an image and draws the texture at run time. The approach I've been using up to this point is to try and emulate the framebuffer by trying to match textures with the right mesh by trying to match the coordinates directly, but this approach has the shortcoming of not knowing which archives are loaded into the game for a specific scene. So I came up with the approach to use save states which will have the correct textures already loaded in.
Youtube: Pending
Live Version: megamanlegends.gitlab.io/mml1-psx/saves/
Source Code: gitlab.com/megamanlegends/mml1-psx
Author: Kion
DashEditor
Youtube: Pending
Source Code: github.com/OmbraRD/DashEditor
Author: OmbraRD (website)