kion
Arukoitan
@kion_dgl
Posts: 193
|
Post by kion on Oct 18, 2018 9:10:14 GMT -5
Wow, thanks for the quick reply. Glad to hear that it's down to something pretty simple. I'll be looking forward to seeing this in fully working order. I've been wanting to find a way to grab stuff from MML for ages now, it's been one of my all time favorite games and I've always really wanted to mess around with remaking a lot of the assets from scratch with higher fidelity, but always wanted to get the original models out for reference. It turned out that drawRect was a problem from my Megaman PBD file viewer and not this application. Though side note to xinus22, I updated that page, so maybe it works now? As for the Megaman Legends 1 page, I'll have to go with the "it's working on my end excuse": So there are a few things that could be causing a problem. 1. Are you selecting all of the .BIN files from the game? 2. Can you pull up the console screen (F12) and see if there are any errors? 3. Which version of the game files are you using? Also side note, xinus22 has exported a lot of the models, and they are available on the Pirate Arcade: arcade.legends-station.com/?sp=resourcemodelsI don't know if you are still planning to work on this further, but a .bvh exporter would probably be a good way to go with getting animations out into a useful format for import into stuff like Blender and the like. If you aren't familiar, .bvh is a very simple hierarchy based format where you create a reference with children bones nested within parent bones to define the armature structure followed by a section where you dump the ordered animation data. Here's a link that gives a decent overview of the basics: www.mindfiresolutions.com/BVH-biovision-hierarchy.htmI'll look into it. The Khronos Group has been driving me insane with .dae and .gltf and the over-complicated lack of support for it. So if there's someway to only support .dae as far as mesh and bones and then dump the animations into another format, that might save me slight amounts of remaining sanity. One thing I was wondering about - is there any plans to eventually have a way to view and export the assembled stages? I've been able to kinda get them from the Megaman64 version of the game using an emu with a vrml dumper, but that uses smaller/inferior versions of the maps due to the restrictions on the cartridges. Plus I hate the control scheme used by that, especially when trying to map it to a non N64 controller, which always leads to me giving up on trying to dump everything pretty early through a run. I was debating on looking into stages, or looking in MML2, I ended up looking into MML2, and I've been going down the side path of trying to get models into a format that can be imported into editors.
|
|
|
Post by uradamus on Oct 18, 2018 23:00:25 GMT -5
Sorry it took so long to reply, still not used to this site and didn't notice that a 3rd page was created for the thread till just now. Each time I was reloading the page to check for new posts, I just kept seeing my post being the last one on the page. >.< So there are a few things that could be causing a problem. 1. Are you selecting all of the .BIN files from the game? 2. Can you pull up the console screen (F12) and see if there are any errors? 3. Which version of the game files are you using? 1. Yes. I mounted the game's image, then navigated to the ./cddata/dat dir within it and selected all from the importer. 2. I see the following: 3. Looks to be the North America versions, based on running file on the exe.
$ file rock_neo.exe rock_neo.exe: Sony Playstation executable PC=0x80068000, .text=[0x80010000,0xc9000], Stack=0x801ffff0, (North America area)
Ya, came across that already. Grabbed them, but I noticed there are a lot of missing stuff in there, but it does still save a fair bit of time and effort.
Hopefully it will work out well. It's a really easy format to figure out and it's more than enough for the simple animations this game has. I'm torn on this one. MML2 is definitely a fun game and I'll be interested in looking at the assets for that as well down the line, but it never really had the same spark as the first game for me. Maybe I'm still just too bitter about that cliffhanger ending that will likely stay unresolved forever, but for whatever reason I've only ever played through the second game a handful of times over the years since release, but I keep coming back to the original at least once a year, heh.
Though as I've said in my last post, if a stage viewer isn't to be, I can get around it for the most part with minimal issue by reproducing the stages by hand in Blender, as long as I can get a proper consistent tile size to work with, things will go pretty quick with Sprytile after I get the necessary bits for a given stage into a custom texture atlas. I've been using your texture viewer to grab the textures separately. It's neat to see that they decided to fake depth fading using palette swapping. I'd be tempted to try reproducing that in something like Godot, but it would make far more sense to just make use of lights and distance fog settings to get similar, if not a fair bit better, results with less work.
One thing I'd like to do eventually is recreate the environment textures by 3D modeling them to use for baking out normal and height maps and then hand painting the various other maps needed for PBR materials. I'd really love to see some of the classic maps with updated graphics while still staying true to the spirit of the original textures that I've always really enjoyed despite how small and limited they had to be for that old tech.
|
|
kion
Arukoitan
@kion_dgl
Posts: 193
|
Post by kion on Oct 18, 2018 23:32:54 GMT -5
Whaaaaaaaaa? I'm legitimately confused by this. The code that's throwing an error is: db.files.where( "name" ).equals( img.image_file ).or("name").equals( img.pallet_file ).toArray().then(function (file) { if (!file.length) { throw new Error(img); // here }
So IndexDB will try and find the files for the image and the pallet (often the same file), which is in this case DEMO.BIN, which definitely exists, because it's the same file that the Servbot is in. It's times like this that I wish there was something stupid that I did that I can fix. Does the same problem occur in Chromium? I've had my share of issues with Firefox not doing a great job supporting IndexedDB. I'm torn on this one. MML2 is definitely a fun game and I'll be interested in looking at the assets for that as well down the line, but it never really had the same spark as the first game for me. Maybe I'm still just too bitter about that cliffhanger ending that will likely stay unresolved forever, but for whatever reason I've only ever played through the second game a handful of times over the years since release, but I keep coming back to the original at least once a year, heh. I think in general MML1 is a lot better fleshed out. MML2 doesn't have you revisiting areas, it's mostly a linear progression from one dungeon to the next. And along with that, all of the characters are touch-and-go and you never really create an emotional connection. With MML1, there were a lot of great quests that meshed with the story and world of the game. Turn on the TV to see a bank robbery and head into town to see Servbots getting chased by the police.
|
|
|
Post by uradamus on Oct 19, 2018 0:53:17 GMT -5
I'm on Solus, which doesn't have a Chromium build for whatever reason. But it does have Vivaldi, which is a fork of Chromium if I recall. With that I get the following:
Looks like they've got Chrome in their 3rd party section, so I decided to install that as well just to give this a test. That has the exact same console output as what you see with Vivaldi above.
So for ref, I've now tested with: Firefox 62.0.3 Vivaldi 2.0.1309.37 (JavaScript: V8 6.9.427.23) Chrome 70.0.3538.67
All 3 are 64 bit, Vivaldi was the only one that listed the Javascript version on its about page, not sure what the other two are using. I'd imagine Chrome is using the same, since the console output was exactly the same as Vivaldi. Firefox is heavily modded with a ton of addons, but the other two are pretty much stock vanilla installs.
|
|
kion
Arukoitan
@kion_dgl
Posts: 193
|
Post by kion on Oct 19, 2018 9:59:50 GMT -5
I'm on Solus, which doesn't have a Chromium build for whatever reason. But it does have Vivaldi, which is a fork of Chromium if I recall. With that I get the following: Solus might be too off the beaten path to get proper browser support? Though I'm tempted tempted to ask, seems like Manjaro, Arch, or even Gentoo might be fair game. Any specific reason for Solus? I tried making a different page with better logging: mml.dashgl.com/tools/mml1_psx_anim_fork/. So if you can try than and either give me a pastebin or screenshot, it might help me get a better idea of what's going on. if (!file.length) {
console.log("---------- Start of Error -------"); console.log(file); console.log(img); console.log(list); console.log("---------- End of Error -------"); let c = canvas.getContext("2d"); c.fillStyle = '#00F'; c.fillRect(0, 0, canvas.width, canvas.height); c.fillStyle = '#FFF'; c.fillRect(10, 10, canvas.width - 20, canvas.height - 20); texture.needsUpdate = true; return nextImg();
throw new Error(img); }
To be honest I'm still tripping balls at how IndexedDB can return nothing for DEMO_DAT.BIN after already loading DEMO_DAT.BIN to render the geometry. A side note for images, is you can view them on their own in: mml.dashgl.com/tools/mml1_psx_tex/, though it's not going to have some of the pallet / texture pairs needed for the models. And I think I got really lazy with my anim page, and render all of the textures onto a single canvas, since I couldn't figure out how to export multiple textures to .dae.
|
|
|
Post by uradamus on Oct 19, 2018 13:15:15 GMT -5
Something you did since last night has made it so I'm now seeing meshes for everything, but still no textures. I've checked quite a few models, they all seem to have that same white and blue default texture. The debug isn't likely to be of a lot of use. I'm seeing it create an empty array, then a dictionary-like object with 4 entries basically listing the bin and path where the texture and palette can each be found and then putting that object into the array. I'll include screenshots for both Firefox and Chrome.
---
The rest of this is just my take on the mentioned distros, feel free to skip if that doesn't interest you, heh.
Solus is actually pretty nice, it's a stable rolling release distro that does all their own packaging and testing. Because they are a fairly small team when compared to some of the big distros, they've decided to only package the best fit versions of a given software application. In this case it seems Chromium has been getting almost no attention from Google for quite a while now, and it has a bunch of issues, including some security ones, that have been around for a long time. So some devs took it upon themselves to fork Chromium into Vivaldi, within which they then proceeded to fix the various issues Google was ignoring and started to make it highly customizable, but still compatibly with Chrome extensions to leverage that huge resource. So the Solus devs decided that Vivaldi was the best of the open-source Chrome based browsers and only packaged that. They do however install Firefox by default and make the 3rd-party Chrome installer available from within their package manager, so there is really no serious shortages or gaps in the availability of worthwhile browsers. Manjaro doesn't usually do any of their own packaging, and in reality very little testing in most cases, they just take Arch packages, sit on them for a few weeks to see if anyone using the testing version of their repos complains about anything, then tosses them out into the wild for everyone else, possibly with some mild configurations added in that Arch tend to leave to end users to figure out for themselves. I was using Manjaro for the past ~3 years or so I think. I like it well enough, but it updates too frequently, and often would mess up my desktop settings a few times a year with poorly thought out updates that slipped through the cracks. They loved pushing out kernel updates every few days which always meant I had to reboot a lot more than I'd like to keep things from breaking. Some times they would also forget to push out keyring updates, so every now and then I'd realize a few weeks went by without any updates and I'd have to open a terminal and manually install the keyring updates so the package manager could get back to work. Arch loved to break things, and the last time I tried it was when I was last using an AMD graphics card, and along the way they decided to drop support for the official binary drivers. So I'd run into this issue pretty often, where I'd have to stop updating my system for a few weeks, while waiting for AMD to release a new driver that was compatible with the latest kernel and x11 versions that Arch was pushing out. A few months of that was enough to drive me away for good after several years of going back and forth between Arch and Debian based distros (mostly Mint, some Ubuntu flavors, etc). I've tried Gentoo many years ago when I wanted to get to know Linux a bit better, but I can't say it makes the slightest bit of sense to me to use it for serious work unless you were managing dozens, or even hundreds, of machines that you can roll your builds out to. I can't really understand why anyone would want to waste so much time and system resources building everything from scratch all the time for just one single machine. Just to be able to tweak the flags and get fairly insignificant performance gains that are always negatively offset by the sheer amount of time you had to waste building them if they are only for your own personal use. There are times when I am stuck building things myself or using external packages provided by software devs for some of the more niche/obscure things I use, but for the most part I've been really happy with Solus so far. It gets fairly regular updates, but not at the rate at which Arch/Manjaro get them, and they break them up into 3 categories (required, security fixes, other) and let you pick and choose which updates you want to install at the moment, either selecting an entire group or just particular entries from within each. It gives you a lot more flexibility in deciding when and how to update your system. I also really like that they focus on stable updates and making sure to test things before pushing them out. It means a lot more stable and reliable system that isn't as prone to negative changes when you do update everything. It has some shortcomings, but they're always working on improvements. I think this will be my distro of choice for the foreseeable future.
|
|
kion
Arukoitan
@kion_dgl
Posts: 193
|
Post by kion on Oct 19, 2018 16:45:10 GMT -5
Something you did since last night has made it so I'm now seeing meshes for everything, but still no textures. I've checked quite a few models, they all seem to have that same white and blue default texture. The debug isn't likely to be of a lot of use. I'm seeing it create an empty array, then a dictionary-like object with 4 entries basically listing the bin and path where the texture and palette can each be found and then putting that object into the array. I'll include screenshots for both Firefox and Chrome. I threw in a debug blue and white texture just to make sure there wasn't a problem with rendering the images to the canvas. Right now the best guess that I have is something isn't going with the "where", "or" query I used if it's returning an empty array. I tried switching the syntax over to something more simple that just executes two simple get calls for the pallet and image file respectively. async function draw_texture(canvas, texture, list) {
for(let z = 0; z < list.length; z++) {
let img = list[z]; var tmp = document.createElement("canvas"); var ctx = tmp.getContext("2d");
var pallet_file = await db.files.get({name:img.pallet_file}); var image_file = await db.files.get({name:img.image_file});
So give mml.dashgl.com/tools/mml1_psx_anim_fork/ one more try. And if there are any issues, send me a screenshot, and then I'd be interested to see what's going on in the Storage -> Indexed DB -> mml_files -> files collection, to see if there's any clues in there. I'm seeing it create an empty array, then a dictionary-like object Python developer confirmed. The rest of this is just my take on the mentioned distros, feel free to skip if that doesn't interest you, heh. Right now I'm using a Coreboot-flashed Chromebook as my main driver. So I'm pretty much stuck with Gallium OS(noobuntu + xfce). Though otherwise I don't distro-hop as much as desktop-hop, as I generally stick with Debian, but then rotate between Gnome3, Xfce, and i3 every couple of weeks. Since most grey-beards either use Gentoo or Arch (and never shutup about it), I was curious to get your opinion. Good read btw.
|
|
|
Post by uradamus on Oct 19, 2018 17:42:35 GMT -5
Firefox is back to not showing the mesh again. I'm now getting the following error: TypeError: pallet_file is undefined[Learn More] layout.js:3873:8 On Chrome, also no mesh diplayed again, the error now is: Uncaught (in promise) TypeError: Cannot read property 'data' of undefined at draw_texture (layout.js:3873) When I go into the Indexed DB on both browsers I see pretty much the same thing as I see in your screenshot, same data values and all, under mml_files (default). Not sure if this is relevant or not, but in Firefox if I go into the next entry down, mml_psx_bin (default), all the entries in the file section look like this, with the empty data: arm00l.bin | {"name":"arm00l.bin","data":{}} In the images section it just says: "No data present for selected host" Python developer confirmed. Lol, yup, pretty much whenever Bash would be too much of a hassle for a task, Python ends up being my go to for scripting needs. I can muddle my way through at least a dozen or so different programming languages, but I always come back to Bash and Python for most things. That might also be why I got drawn in to the Godot engine, since their GDScript language is heavily inspired by Python, so it was dead simple to pick up the basics in a few hours. Right now I'm using a Coreboot-flashed Chromebook as my main driver. So I'm pretty much stuck with Gallium OS(noobuntu + xfce). Though otherwise I don't distro-hop as much as desktop-hop, as I generally stick with Debian, but then rotate between Gnome3, Xfce, and i3 every couple of weeks. Since most grey-beards either use Gentoo or Arch (and never shutup about it), I was curious to get your opinion. Good read btw. I used to use Gnome pretty much all the time back in the days of Gnome2, but once that mess Gnome3 came out, I jumped boat to KDE. KDE was my favorite for a long time, but it always annoyed the hell out of me that they insisted on linking every damn thing against one another making it a pain in the butt if you didn't want all the wasteful fluff crap they kept tacking on to the base desktop install. So then I started to go back and forth between Cinnamon and XFCE for a while. Cinnamon is nice in short bursts, but it's frail nature always starts to show through before long, with all too frequent desktop crashes and other annoyances that always ultimately drive me away. XFCE is alright, I like the lightweight nature of it, and I always loved Thunar (especially that great built-in bulk renamer it has on offer). But there were always little things that got to me with that desktop; the weird default behaviors with focus as one example. I also always hated how much of a pain it was to customize the look and feel of everything if you didn't particularly like any of the available themes. In the end I ended up finding myself embracing Mate, which I've been using as my primary desktop for the past few years. With a good single panel theme and consolidated menu (like Brisk Menu Launcher), it just feels right. Everything just tends to work the way I'd expect for a traditional desktop experience. It's still not the most robust on the customization side of things, but enough to get me by with only minimal messing around in the dconf editor.
|
|
kion
Arukoitan
@kion_dgl
Posts: 193
|
Post by kion on Oct 20, 2018 0:41:57 GMT -5
TypeError: pallet_file is undefined[Learn More] layout.js:3873:8 I was thinking this is bad browser support, now I'm wondering if Firefox is shooting up on heroine when you're not looking. I'm still confused on how it can load the file for reading geometry, and then not be able to read the same file again for rendering the texture. When I get home tonight I'll clean out all of the random console.log messages I have in the file, and put in new debug messages, so I can figure out what's going on. After I've done so, I'll edit this post, or send you a PM to let you know when the page has been updated. For now, all I can recommend trying is going to the Storage Tab, then the Indexed DB section in the console. Delete any "mml" databases with files, then reloading the BIN files and see if that helps at all.
|
|
|
Post by uradamus on Oct 20, 2018 12:41:32 GMT -5
In case anyone else was following along and curious how this got resolved. Kion and I figured out in our PMs that it came down to a case sensitivity problem. My disc image for the game had all the .bin file names in all lowercase letters, but kion's files were all in uppercase, so everything got coded to look for all uppercase names. This wouldn't matter for most users on Windows, since that uses case insensitive file systems, but it would likely be an issue for anyone on Mac or Linux, like myself, who didn't luck out with having their file names in all uppercase letters already.
|
|
|
Post by ShadyRounds on Oct 25, 2018 1:43:58 GMT -5
Makes sense, and very good bugchecking!
|
|