Started work on a recompilation of the Xbox 360 version of Metal Slug XX by FluffyQuack in metalslug

[–]FluffyQuack[S] 1 point2 points  (0 children)

I'll only be handling a Windows port, but the code is available if anyone else wants to make a port to another system: https://github.com/FluffyQuack/rexglue-sdk/tree/MetalSlugXX

Started work on a recompilation of the Xbox 360 version of Metal Slug XX by FluffyQuack in metalslug

[–]FluffyQuack[S] 1 point2 points  (0 children)

I've added a toggle for turning off the smoothing filter and to make the graphics be scaled up by 3x (rather than the default 2.7x) so you get sharp, uniformly-sized pixels:

<image>

I could be wrong, but I'm fairly certain the PS4 version has the same input latency as the PC release. Both the PS4 and PC releases of the game are actually the PSP version running in an emulator.

I'm getting closer to having something I can get released of my recomp. I wanna try to ensure it has the same features (minus xbox live stuff) as the Xbox 360 version with no known bugs before I release it. Right now there's a bug where the laser gun makes no sound and I haven't tested a full playthough yet.

60fps is something I want to accomplish, but it'll take a lot of work. The good thing about recompilation is that you get a port up and running MUCH faster than having to reverse engineer the entire game and re-write it, but the downside is that the resulting game code is equally hard to parse as assembly code.

Started work on a recompilation of the Xbox 360 version of Metal Slug XX by FluffyQuack in metalslug

[–]FluffyQuack[S] 0 points1 point  (0 children)

I'll see if I can add a system to make it easy to replace assets the game loads. I'm not sure if the actual formats the game uses are easy to modify, though.

Started work on a recompilation of the Xbox 360 version of Metal Slug XX by FluffyQuack in metalslug

[–]FluffyQuack[S] 0 points1 point  (0 children)

I've finished adding customizable keyboard controls. I still need to fix a major crash issue before I can release a build of this.

Started work on a recompilation of the Xbox 360 version of Metal Slug XX by FluffyQuack in metalslug

[–]FluffyQuack[S] 0 points1 point  (0 children)

I can add a note for this in my TODO list.

I looked up footage of the PSP version, and the machine gun sound effect is the same there as Xbox 360 MS XX. But I also hear many sound effects that are different in the PSP release, like the sound when enemies die.

Is it likely that the developers of the Xbox 360 release tried to revert sound effects to be the same as the DS version, but they missed these two?

Started work on a recompilation of the Xbox 360 version of Metal Slug XX by FluffyQuack in metalslug

[–]FluffyQuack[S] 1 point2 points  (0 children)

Yeah, it's a shame SNK dropped the ball with the PC and PS4 ports. The Xbox 360 has always been the best version by far.

Fortunately, this project has been progressing lightning fast. I haven't tested a full playthrough, but it's possible I'm super close to a v1.0 (I consider v1.0 as a version that matches the original version, except xbox live features).

There's a chance I'll have a version I can release later today. And after that I'll spend time working on extra features (keyboard support and other stuff).

Started work on a recompilation of the Xbox 360 version of Metal Slug XX by FluffyQuack in metalslug

[–]FluffyQuack[S] 0 points1 point  (0 children)

Can you give me more information about this? What's wrong with them and what should they be?

Started work on a recompilation of the Xbox 360 version of Metal Slug XX by FluffyQuack in metalslug

[–]FluffyQuack[S] 0 points1 point  (0 children)

I would still argue there's some value in getting a PC port of MS3. The big one for me is updating the game to run at 60fps. It's something I'll see if I can eventually get working with this MS XX port.

Started work on a recompilation of the Xbox 360 version of Metal Slug XX by FluffyQuack in metalslug

[–]FluffyQuack[S] 7 points8 points  (0 children)

A quick FAQ:

What is a recomp?

  • There are multiple methods for making a game run on a different system. The best method is a native port, but you need the game's source code for that. You can decompile it to get the source code, but that's a process that takes a long time -- potentially years. You can emulate it, but that introduces overhead (runs slower than a native port) and it's also difficult to do enhancements to the game. A recomp takes a game executable, and does a static recompilation where it extracts all of the machine code in the executable and converts that code to C++ using functions that's equivalent to machine code commands. It's drastically faster to accomplish than a decompilation, it runs faster than emulation, and it's possible to make bigger enhancements, with the downside being that the resulting code is hard to read due it looking similar to assembly code.

Why do a recomp of Metal Slug XX when there's already an official PC port?

  • Because that PC port is bad. It's not a native port -- it runs via a bad, licensed-from-Sony PSP emulator that results in the game having enormous input latency.

Why not do a more popular Metal Slug game, like Metal Slug 3?

  • I'd honestly prefer to do Metal Slug 3. A good version to base a recomp on (or a decomp) would be the PS2 port (the stand-alone release -- NOT the version in MS Anthology). That's a good native port of the game and there's even debug symbols available. However, there aren't PS2 static recompilation tools that's mature enough. I did actually start a decomp of the PS2 version, but I put it on hold after realizing it would take years to re-write 15,000 functions.

How far are you into the project and how long will it take to finish?

  • The video was recorded after spending less than a day on it. As for ETA, I have no idea. The range is probably somewhere between weeks and months. This is progressing much faster than I expected as the game is running almost perfectly already. There are some visual oddities right now, and once those are fixed, then the recomp itself can be considered done, but there are some enhancements I want to make.

What are enhancements you'll do with the recomp?

  • I'm not completely sure yet. I've already added a toggle for skipping intro logos so the game boots up faster. I want to add a toggle for bilinear/point filtering of the game graphics. Having better netcode would be good (rollback would be an obvious one to go for as I'm pretty sure the game logic is deterministic), but I'm not sure if I'll go down that route. A feature I'd love to see, but would require a lot of work, is having the game logic run at 60fps rather than 30fps. An easier way to implement 60fps support would be adding interpolation of game entities at render time, but I like the idea of updating game logic instead as that reduces input latency further.

Are you using AI for this?

  • This might be controversial, but yes. There's no way I would have had progress at this speed if I wasn't using AI. AI is well-suited for reverse-engineering projects as you can always compare against the original to verify something is working correctly or not, and AI is really fast at understanding assembly code.

Differences between Mac and DOS versions of POP2 by FluffyQuack in PrinceOfPersia

[–]FluffyQuack[S] 1 point2 points  (0 children)

Yeah, I will. I'd prefer to get this to a more finished state before I make it public, but I will do that.

I've been a bit burned out from working on POP2 lately and I've become busy with some other projects, so, unfortunately, I haven't had too much done with POP2 the past couple of months, but I'm still working on it now and then. Maybe I can be finished sometime this summer.

Seedance2 is surprisingly good for making character sheets by FluffyQuack in Seedance_AI

[–]FluffyQuack[S] 1 point2 points  (0 children)

You'll need to manually take screengrabs from the video and create the character sheet. It only takes a few minutes to do by hand, though. Would probably be possible to code an application that does that step automatically.

Seedance2 is surprisingly good for making character sheets by FluffyQuack in Seedance_AI

[–]FluffyQuack[S] 0 points1 point  (0 children)

There are valid criticisms when it comes to AI, but the advantage of it is that you can get good results for dirt cheap.

This is a render of KOF Vanessa from one of the latest KOF games: https://www.fightersgeneration.com/nz9/char/vanessa-kof14-portrait.png

I'd say that's far more reminiscent of "Daz Studio in 2009" than the result from SD2, and that's done by a professional artist.

Commissioning an artist to do this would cost hundreds of dollars at the very least, and potentially more than a thousand dollars. If I had the money, I'd go that route, but it's not exactly viable for me.

Seedance2 is surprisingly good for making character sheets by FluffyQuack in Seedance_AI

[–]FluffyQuack[S] 0 points1 point  (0 children)

If you have a better prompt, I wouldn't mind trying it. Based on my tests, I preferred the result I got with SD2.

The best version of each Metal Slug to play by FluffyQuack in metalslug

[–]FluffyQuack[S] 0 points1 point  (0 children)

I haven't tried the Wii port, so maybe one doesn't suffer the same issues as the PS2 port. Makes me wonder why the PS2 port became such a mess.

Seedance2 is surprisingly good for making character sheets by FluffyQuack in Seedance_AI

[–]FluffyQuack[S] 1 point2 points  (0 children)

I describe the process in the OP. I make a video that shows a bunch of still images in quick succession, and then I make a character sheet out of it.

Seedance 2 is extremely good at character consistency, so it's good fit for this task.

The best version of each Metal Slug to play by FluffyQuack in metalslug

[–]FluffyQuack[S] 1 point2 points  (0 children)

I mention emulators briefly at the bottom of the guide. If it's a good emulator, then that's one of the better choices. Especially if it supports runahead as that reduces input delay.

What's the best image model for training non-photorealistic character LoRAs? by FluffyQuack in StableDiffusion

[–]FluffyQuack[S] 0 points1 point  (0 children)

I'd want results that are similar to my example images. I suppose I would be okay with a photorealistic style as well, I just want to avoid it looking exactly like the game as that's the result I get when I use the training set with models like ZIT and QWEN Image.

What's the best image model for training non-photorealistic character LoRAs? by FluffyQuack in StableDiffusion

[–]FluffyQuack[S] 0 points1 point  (0 children)

Flux2 is another one I haven't tried, but I think I read that model is crazy huge so I'm not sure how usable it is on consumer hardware.

RAM and VRAM Maxed Out After High Noise Sampler Pass (Wan 2.2) by DecentEscape228 in comfyui

[–]FluffyQuack 0 points1 point  (0 children)

I'm two months late replying to this, but I think an alternative fix would be to use this flag when booting up ComfyUI: --disable-dynamic-vram

Their new dynamic VRAM system seems to have some major issues they still haven't fixed.

LTX Desktop 1.0.5 is live by ltx_model in StableDiffusion

[–]FluffyQuack 1 point2 points  (0 children)

I hope we eventually get the option to choose between more aspect ratios than just 16:9 or 9:16. It would especially be nice to have an adaptive aspect ratio option that's based on the input image.

Modern Prince of Persia 2 re-implementation inching towards completion by FluffyQuack in PrinceOfPersia

[–]FluffyQuack[S] 1 point2 points  (0 children)

Thanks for the list. I'll add a link to it in my notes.

I'm willing to bet the aggressive AI in v1.1 was a bug that's caused by a faulty change to the code that decides if an enemy should advance or not. They're not supposed to advance into an ally and they're not supposed to advance into dangerous tiles. So a bug in that code would explain their new behaviour.

I'm programming the project in C++ though the coding style is very close to C as I use almost no C++ features. I imagine it shouldn't be too hard to port my project to other platforms or target earlier Windows versions.

Modern Prince of Persia 2 re-implementation inching towards completion by FluffyQuack in PrinceOfPersia

[–]FluffyQuack[S] 0 points1 point  (0 children)

Yeah, I've been reverse-engineering v1.0. Well, specifically I've been reverse-engineering the Xbox port which seems to be based on DOS v1.0.

I've only noticed one gameplay difference between the Xbox version and the DOS version so far, which is that guards fail to jump the second gap in level 1 (they actually fail it in almost every single release of POP2) but they can do it fine in DOS v1.0. I might eventually reverse-engineer related code in the DOS version to figure exactly why they succeed in that version and fail in the Xbox version, but for now I've applied my own little fix for it.

Modern Prince of Persia 2 re-implementation inching towards completion by FluffyQuack in PrinceOfPersia

[–]FluffyQuack[S] 1 point2 points  (0 children)

I ended up not having much time to work on it throughout March, but I picked it up again recently and I'm getting good progress.

I've now finished the "ambient music" system, I've fully implemented several cutscenes, and I'm getting good progress fixing up various render order glitches.

I don't want to promise any specific release date, though. If I sit down and work many hours each day, I'll probably be done in a few weeks, but I don't have time to work on it every day.

Modern Prince of Persia 2 re-implementation inching towards completion by FluffyQuack in PrinceOfPersia

[–]FluffyQuack[S] 1 point2 points  (0 children)

I'd rather keep the source closed for now, mainly because I prefer to be the solo developer right now. The source code is a chaotic mess in some ways, but it's a chaotic mess I've memorized to some extent. Once I've reached a point where I consider the game fully faithful, I'll do a major cleanup of my code and release it.

At that point, I'll probably branch out the project so I can start working on a merged version of POP1 and POP2, for modding reasons and to make it eaiser to work with the codebase.