Author
Topic: Mega Man X6 Tweaks (v15) (Read 69550 times)

Haha, the background color is a good catch as far as I'm concerned, just for interest's sake. Sprites Inc rips display the same inconsistency, with 4 different background colors total. I'd say it's due to the way Capcom indexed the images for use in-game. The gigantic palettes that no human would ever choose all but confirms that it was all done by machine with maybe some very light touch ups afterwards, if any, leading to very minor background color discrepancies.

I seen a post on their forums from you while I was looking something up, about re-ripping a bunch of old stuff, but I didn't know if what you did was ever uploaded to the site. But what's your point? I didn't mean those rips are wrong, exactly the opposite. If the backgrounds are that way on Sprites Inc as well, then it's surely correct, especially considering the full color indexes are included. Only X6 rip I've ever questioned are the parts/weapons icons and stuff that are stretched to 23x14 iirc, but after thinking about it, I'm sure that's exactly what Capcom did to make them... "work" for the downsampled menus.

There's still a lot of missing or old rips (screen-shot rips) that need replaced on INC. I got burned out doing it (mostly) by myself and have been focusing more on ROM hacking lately.

Ohh lol I thought maybe I came off as insinuating those were wrong, my bad. "Got burned out" No wonder, I got "burned out" the moment I seen the hundreds of unorganized (immediately so, at least) files extracted from X6.dat. Thought I'd try extracting the menu stuff when I was doing the mockups, for more technical insight on it. Anyway, nice work

Alright. So it won't be too much trouble then for you to cut them back up and reinsert the tiles for the animations then, right (as in, too time consuming)? I'll get on it then.

Don't worry about that. I need to reassemble them into the tile order they have in-game either way (the ones I sent you were re-assembled into how they should look, not how the tiles are actually arranged in the game files). But it's not as bad as it sound.For color changes on existing mugshots, I'm generating new palette files from scratch. That means I no longer need to change specific colors manually, I just create a color table on Photoshop based on the PNGs you send me, and convert them to a 15bpp palette (the format PS1 games read) using a tool I found on this site. So feel free to edit as much as you want.

I still have plenty of work to do before release, and inserting these edits of existing mugshots will be the last thing I do, so take your time. I'll let you know when I'm ready (and feel free to show your progress here until then).

There's only one restriction that comes to mind: keep the pink Hunter and Dr.Light animated tile in the same position. Doesn't matter where, just make it the same on both mugshots. They share sprite assembly and animation data at this point, giving each their own would involve a lot of extra coding.... I think they already match on the last version you posted, but I just wanted to let you know in case you decide to work on them again. Changed my mind.

Don't worry about that. I need to reassemble them into the tile order they have in-game either way (the ones I sent you were re-assembled into how they should look, not how the tiles are actually arranged in the game files). But it's not as bad as it sound.For color changes on existing mugshots, I'm generating new palette files from scratch. That means I no longer need to change specific colors manually, I just create a color table on Photoshop based on the PNGs you send me, and convert them to a 15bpp palette (the format PS1 games read) using a tool I found on this site. So feel free to edit as much as you want.

I still have plenty of work to do before release, and inserting these edits of existing mugshots will be the last thing I do, so take your time. I'll let you know when I'm ready (and feel free to show your progress here until then).

There's only one restriction that comes to mind: keep the pink Hunter and Dr.Light animated tile in the same position. Doesn't matter where, just make it the same on both mugshots. They share sprite assembly and animation data at this point, giving each their own would involve a lot of extra coding.... I think they already match on the last version you posted, but I just wanted to let you know in case you decide to work on them again.

Well I they don't, from a quick test I did on paint.net. Light's mouth and eyes are on the magenta Hunter's helmet, and the mouths are close but not close enough. Maybe you could save up on space by using the same animation data from a similar character like X. Although, then again, only his left eye has a blinking animation (hence why they didn't give him a right eye), so that might be an issue. Maybe you could use assembly to then add an imaginary eye of sorts and use up less code, leaving space for a unique mugshot for either that's left?

Hell, maybe use the green Hunter, whose wears a visor and thus doesn't need a blinking animation, leaving more space for Dr. Light.

So, do you mean the animated tiles have to all have the same position relative to each portrait (just the eyes and mouths the same position relative to each other, but can be placed in different locations on the mugshots), or that they also both have to be in the exact same position in the mugshots themselves?

If the latter, that may be an issue because then either Light's portrait will have to be too low, making it framed awkwardly, or the hunter will have to be really high up, meaning I have to draw in a significant portion of his body, and the framing will be weird.

I'll do what needs to be done to get it all working, but I'm just asking for clarification. Sorry if I"m being a bit dense here.

For color changes on existing mugshots, I'm generating new palette files from scratch. That means I no longer need to change specific colors manually, I just create a color table on Photoshop based on the PNGs you send me, and convert them to a 15bpp palette (the format PS1 games read) using a tool I found on this site. So feel free to edit as much as you want.

Well awesome, then I don't have to worry about the palette changes I made to the menus either, if/when that can happen later on. Gives me some motivation to work on that stuff again once I get some time.

I have a few questions:1. Does Nightmare Zero have unique dialogue when you fight him as Zero or is it still the same as High Max's dialogue?2. Were the few voice clips that were cut from the English version of the game have already been re-implemented?

After a lot of work and very little sleep, the insertion of the new mugshots is 100% complete.

I managed to set both mugshots' animation and tile assembly data independently, so forget my last post: there's no restriction on how they're assembled. They're both working together exactly as they are.

Here's some general takeaways:

Identifiers:- There's 4 "half byte" IDs recognized by the game: 0 = Player, 1 = Alia, 2 = Enemy, 3 = Unused. Other values (4/5/6/7, 8/9/A/B, C/D/E/F) cycle back to 0/1/2/3 and can't be used as unique IDs.- These IDs are linked to a byte in dialogues. This tells the game both which character is talking (which animation data to load) and the color used in the name of the person talking in the text box (Blue/Red/Yellow/Green).- Interestingly, the 3/Unused value matches the text byte used for both the Hunter and Dr. Light (green names). This probably means they were meant to be implemented in a similar way I did, or maybe it's just a coincidence. Either way, this made my work a lot easier.- IDs are used as RAM offsets to locate the right tileset/animation data in an index of more addresses. In the case of 0/Player and 2/Enemy, they're adjusted through a separate subroutine depending on character/armor in use and stage selected (and in the case of hidden stages, which enemy you're suposed to face). As for the 3/Unused, although they have unique slots assigned in this data address list, these addresses link to other mugshot's data (Commander Yammark's).

File loading:- Alia's mugshot and palette are loaded straight from the stage data and stay in VRAM and RAM (respectively) throughout gameplay- Player's mugshot is likewise always loaded in VRAM and RAM respectively, but are loaded from their own files instead of stage data.- Bosses mugshots and palettes are both loaded to RAM (during "Loading" screen), graphics are loaded from RAM to VRAM on the fly when needed.- As there isn't enough room in VRAM to have an additional mugshot loaded all the time, I had to figure out how to use the same mechanism the Bosses mugshots have (have my new files always available on RAM, and loaded to VRAM only when needed). This means I can't have Dr. Light facing a Boss (as they'll use the same VRAM slot). Thankfully this never happens so I didn't worry about it.

Animation/Tile assembly data:- Tile assembly data (a single file for all mugshots) is located in all the stage's files, right next to Alia's mugshot and palette. Thanks to notes by DarkSamus933, I already had a pretty good grasp on how the games assembles tiles. I already used this information to edit the title screen's "PRESS START" text and reassembling the pause menus' text using the new font.- Animation data (a single table for all mugshots) is located in the main executable file. This was the first time I worked on animation data, but fortunately it was fairly easy to figure out.- Although easy to assemble, storing all this took an extra 2 KB that had to be inserted somewhere, and made accessible.

Loading new files in the disc (and have them be accessible):- Five new files needed to be added: two tilesets, two palettes, and one big fat assembly/animation data file containing data for both mugshots.- Putting new files in the disc is easy, you just have to append them to the DAT file and list them in its header in the same way the others files are. The problem is accessing them ingame.- The game generates a list of disc files' offsets/sizes on the fly during startup based on the header of the DAT file. However, the number of files it writes an entry for is hardcoded to the original number of files. It can be expanded, but then you'd have to deal with a lot of important data being shifted around.- Instead of doing that, I generate offsets/sizes data for my new files whenever I update my .DAT (I wrote a script for that) and store them somewhere else in the game's data. This way, instead of having to deal with all the important stuff being done on initial startup, I simply made a modification to the subroutine reading files: "if trying to access a file with an index number bigger than the original number of files, look for them in my new table instead of the original one."- These files are then loaded to RAM at the "Loading" screen at start of a stage (with a few checks and jumps to load either the Hunter or Dr. Light depending on the stage). The next problem was to find the right place in RAM to put them in. There's plenty of empty space in RAM at all times, but not always in the same place. Some of these places would get rewritten by other data in some stages, but not others. Figuring out a (big enough) place that's always available took some serious trial and error. At the end, the answer was pretty obvious: right after where the game loads the Boss mugshots. This is one place the game already know it has to keep safe and, fortunately, it leaves plenty of "safe" room after this one file. (There's a chance I'll run into some stage/situation where this address isn't usable and I'll need to think of a solution, but so far so good.)

Loading the new data in-game:- This is where I finally saw the light at the end of the tunnel; still lots of work to do, but within a relatively known territory: hijacking the mugshot loading code in various places to replace the addresses the game natively assigns to the 3/Unused ID.- I made my own table of indexes at the start of my tileset/animation file, and made sure to have it work as similarly as possible to the native ones (which in turn, meant changing as little code as possible).

After all was done and working, you can bet there was lots of bugs to fix, stuff that broke for no apparent reason (until the reason became apparent). I wish it was as linear as I describe it. There was lots of back and forth.

Anyway, thanks everyone for your interest and following along the process, and specially thanks to DarkSamus93 for guiding me whenever I'm stuck, and Metalwario for providing art that's so good it made this work a top priority (this was very low on my wishlist of stuff before you showed up).

Although I'm proud, I'm so so glad it's over and I'm finally free to work on other stuff (man, has it been what, three weeks now?)Here's my current v16 to-do list:- Completing/polishing stuff I've already talked about (including inserting other mugshot's improvements).- Inserting stage text (I've had the custom tools I need ready for some time, and most of the text set up for the process... I just got distracted doing more and more stuff.)- Putting everything in the (new) Patcher tool.

That's it. Everything else I set out to do for this next release has been done. I don't think I'll work or even think of any other new idea until I'm done with this release.

Well awesome, then I don't have to worry about the palette changes I made to the menus either, if/when that can happen later on. Gives me some motivation to work on that stuff again once I get some time.

While the conversion tool I'm using is not exactly 1:1 (colors tend to lose a bit of saturation), it's a good starting point. Easier to modify the few colors you're not happy with on top of it than having to change all colors manually.

I'm still pretty new to editing graphics for hacks and I still haven't figured out a straight-forward and reliable workflow to edit palettes manually... So until I get more experience, I'll settle with what I get with this conversion. Being able to convert "graphic.bmp + palette.act" directly into something the game can read is a huge timesaver.

I have a few questions:1. Does Nightmare Zero have unique dialogue when you fight him as Zero or is it still the same as High Max's dialogue?2. Were the few voice clips that were cut from the English version of the game have already been re-implemented?

Honestly, just fixing that stupidly pointless jump between High Max and Gate fixed the need for a save point between the two stages. There's essentially no reason to play X6 now without at least some of these tweaks, because the playability skyrocketed as a result. And the newest tweaks just add more polish where it was lacking previously, and as an excellent community effort too.

I just wonder if there's anyone knowledgeable enough to tweak other parts of the game's level design to be more.. fun instead of brickwalls of damage and those damnable donuts, and not just the more damage tweaks that make them less insufferable.

There's essentially no reason to play X6 now without at least some of these tweaks, because the playability skyrocketed as a result. And the newest tweaks just add more polish where it was lacking previously, and as an excellent community effort too.

I just wonder if there's anyone knowledgeable enough to tweak other parts of the game's level design to be more.. fun instead of brickwalls of damage and those damnable donuts, and not just the more damage tweaks that make them less insufferable.

Absolutely, as far as I'm concerned, X6 Tweaks, X5 Improvement, X4 Undub, and X3 Zero Project are the definitive versions of these games. (Ehhhhh, well, I'm iffy about X4 Undub, only because I have nostalgia for the terrible dub so it's kinda "so bad it's good" for me hehe but definitely for newer/most players.)

Been a while since I checked in so forgive me if it's been addressed, but the ceiling in Metal Shark Player's level is a huge pain in the ass when going through the level several times to get all the loot, any way to make it stop after he's been beaten?

These aren't elegant fixes, maybe not even optimal and might break something else, I might test a bit, but:Stop compressor from moving in first half of level: 300C478C 0021 (Or 0001 if you want it to constantly lower and raise)Stop auto scroller/compressor in second half of the level: 300C46AC 0000

Did test these a bit in other stages and all that. Seem ok, but of course, toggling them for just Metal Shark Player's stage would be best.

I have Dynamo done, but I'll post it in a little while since I still need to separate it into a sheet.

Right now I have been working on completely redoing X's portrait even further than just cleaning it up. The style of X faces (both unarmored and armored) just doesn't quite line up with Haruki Suetsugu's style, (they were probably done by a lesser artist, or he severely rushed them). I'm attempting to correct them to his style, since X is the main character and his portraits should look the best they can.

Here's what I've got so far:

(original for comparison):

I also added the ambient highlights his artwork had, and the palette is based on the X5 cutscene artwork, since it's close to the actual colors of the official art, and Zero's mugshot already seems to follow those rules with his pinker skin tone (plus, his portrait is a slightly modified version of a Suetsugu piece of art for the game, with the shoulder and hair redrawn and a new mouth, which I'll be adjusting soon too if that's okay with acediez).

The biggest fix was reducing the size of his nose, mouth and jaw which made him look suitably his age (in the X6 mugshots he always looked a bit older to me), plus now when I look at the original, I kind of see this:

That looks a lot better. Definitely looks younger, but I'm OK with that.Now you're gonna have to match all of X's mugshots to this new face

Yep, I've been doing that as well. Though, in general it's a bit tricky making sure the art style is a good match for X6, because if I shrink his eye just a bit more it looks a lot like the X4 artwork, and the eyes in general seem a bit more dynamic in X6 than in X5, so it's all a bit of a fine line.

I used a scaled down piece of X6 art as a reference for it by the way:

Here's Dynamo's sheet:

I moved his talking mouth frames up one pixel, since they were too low in the original, so I hope that doesn't move them outside of the tile's frame.

Also, what I did was restart from the X5 mugshot, and then cleaned that up a bit further and gave it the grey background (and the right shade) with proper anti aliasing. I also redrew the blinking frames a bit, and the mouths were pretty heavily reworked. I think the result is a noticeable improvement.