11 March 2016 - Forum Rules
Started by theataraxian, June 22, 2013, 02:09:10 PM
Quote from: Drakon on June 22, 2013, 11:21:46 PMInstead of changing existing pallettes, why not redraw these sprites to use the according pallette values that the game already uses?
Quote from: theataraxian on June 22, 2013, 11:59:12 PMWell, I really wanted to skin Mega Man to look like my cousin, which required brown hair and skin tone on the arms. Had I stuck with Mega Man's palette, he'd have had blue hair and light blue arms. Plus he really needed blue eyes to complete the resemblance. As a result, I've inadvertently changed some of the colors of other sprites, and so I'm trying to remedy that as best I can.
Quote from: theataraxian on June 22, 2013, 11:15:08 PMIn the meantime: any thoughts on what to do about Wily??
Quote from: Zynk Oxhyde on June 23, 2013, 07:46:29 AMWily has 2 or 3 sprite banks in CHR. One is where Alien Wily is; the groveling Wily is with the Wily Machine. I don't know the offsets, you're on your own finding those that I mentioned.
Quote from: theataraxian on June 23, 2013, 12:52:03 PMCan you clarify what you mean by "sprite banks in CHR"? The Wily in my hack is blue in the animation where he is floating and changes into the alien, after beating the alien when he's standing behind the controls, and when he grovels.
Quote from: Zynk Oxhyde on June 23, 2013, 10:47:48 PMIYou can see those in YY-CHR utility. So ALL of Wily's palette were all affected with the face palette change...?If you don't want to giveup your cousin's blue eyes, then you'll have to stick with Krusty the Clown--I mean, Blue-haired Wily.
Quote from: Spikeman on June 24, 2013, 09:23:30 AMAs far as shared palettes go, you could fix that by adding a new palette in some free space of the ROM, and changing the pointer for either Megaman or Wily (whichever you want to have their own new palette) to point to the new palette.Depending on how the code for palettes work this could be really easy or fairly difficult. If you know where the palette of interest is in ROM, I'd suggest just setting a read breakpoint on that address in FCEUX's debugger. From there you can figure out how it is calculating the address it's using to load the value from. If you're lucky it will just be loading a pointer, and hopefully you can change just the pointer to Megaman or Wily without it affecting anything else.
Quote from: theataraxian on June 24, 2013, 09:39:41 AMSince Wily and Mega Man are sharing a palette, if I "set a read breakpoint" (which I assume is like some sort of running check for a desired value?) for the color palette, it will register with Mega Man long before I get to Wily.
QuoteWhat would be more desirable is if there were a way to check for Wily's TILE data and see if I could redirect the palette to which the tile points. Do you know how tile data is represented? I'd assume it's a hex value with an offset like everything else, but I'm not sure how to find out an exact tile location and then use it in a program like debugger.If you have any more information, please let me know. I worked on it some last night and was just about ready to tie up some loose ends and call it finished with the Wily bug, but you've just sparked a new interest in getting it remedied. So thanks!
Quote from: Spikeman on June 24, 2013, 10:37:34 PMThis isn't as big a problem as you might think. You can use conditional breakpoints in FCEUX to avoid breaking in certain locations. Or you can just replace the instruction that it's breaking at with a NOP (might mess up Mega Man, but will prevent breaking).I actually don't have much experience with the NES, so I can't give you specific information. However, you can easily find out how all that stuff works by reading technical documents. For example: http://wiki.nesdev.com/w/index.php/PPUFrom here: http://wiki.nesdev.com/w/index.php/PPU_palettes, it looks like there are 4 sprite palettes, stored from $3F11-$3F1F. It then says: "The choice of palette is in attribute 2 of each sprite (see PPU OAM)."On the PPU OAM page, it shows how the OAM memory works. The lower 2 bits of byte 2 control what palette the sprite is. I can't actually find anything that says where the OAM memory actually is (I think the PPU might have it's own memory on the NES, as opposed to other systems where it is just part of RAM), so you'll have figure out where the memory for Wily's sprite is, and set a breakpoint on the 2nd byte of it. Then you can look at the code to see how it is setting which palette number it is using and how to change that. I do believe FCEUX has a different setting for PPU breakpoints, so I'm pretty sure this is possible.Good luck!
Quote from: theataraxian on June 25, 2013, 10:04:18 AMWhat I still fail to understand, though, is how to find data within the ROM File that determines how a sprite or tile is assigned its palette. When I'm looking at the PPU Memory in hex editor, I can see the value that's already been loaded into PPU RAM, but I don't know why it's been loaded. I don't know what other information in the ROM decides that.
Page created in 0.088 seconds with 19 queries.