Locating color changes using Stella:
Load the game ROM. You may choose to play through it a bit so that Stella has a more-detailed disassembly built in its memory - program code and data tables are labelled as the emulator initially encounters them.
Open the debugger window by hitting the tilde key (~). First you must figure out what screen elements are used to create the image you want to recolor. Stella has a "fixed color mode" so that each is shown with a specific color (HMOVE lines are white, background is light grey, playfield pixels are dark purple, etc). Right-click the screen image and choose "Toggle fixed debug colors" (picture 1).
Use the "Frame +1" button on the right border for the change to appear (picture 2). You can see that nearly all of the "sky" area uses the background register (COLUBK), while the ship and sails are using the playfield register (COLUPF). Toggle the fixed colors off and advance another frame to restore the original colors.
Move the pointer to the spot where you want to replace the color...right-click and choose "Fill to scanline" (picture 3). The program code window will show you the kernel instructions that are being executed currently at that point of the image...anything below this point will be shown in monochrome color. You can use the "step" button to zero in on the exact scanline that the color change is desired (picture 4). NOTE: the little white dot in the image represents the current location of the electron gun that would be building the image on a television screen. Notice that COLUBK is getting its value from label LFF80. The ",X" indicates that the X register is being used as an index (CPU registers are displayed in the top center of the debugger). X currently holds the value of $15...so the background color for this specific scanline is coming from address $FF95 ($FF80 + $15).
Use the sidebar in the program code window to scroll to the address (picture 5). Double-click the values to change them one-by-one (picture 6). You must use the primary enter key on your keyboard for the value change to be accepted, the keypad enter key does not. In this example, $FFA0 is the start of a new label, so I did not change those values.
Hit the "Frame +1" button to advance the program to begin using the new values you entered (picture 7).
Next, do the same procedure with the ship. It's solely made up of playfield pixels, so you will be looking for COLUPF changes. Right-click the image at the start of the ship area and fill to scanline (picture .
This one is a bit tricky...it's showing you the color store in the program window, but not where that value was coming from. So use Frame +1 to advance a screen and try again (this time slightly higher of where the color change is due). Use the Step button to slowly follow the program flow to where LF76B was branched to. In this case, it was a loop...the color value is coming from address LFC2E + the X index of $05, or $FC33 (picture 9).
As before, scroll using the sidebar to the color values to change them (pictures 10 & 11). Use the Frame +1 button to examine your edits (picture 12).
The game ROM can then be saved by right-clicking the program area window and choosing "Save ROM" (picture 13). This creates a new file...the original will not be altered.