Custom sprites shouldn't be too hard, in theory, as long as the person making them knew which sprites they want to replace. :p
Since every game is different, the original sprite data sitting on the ROM isn't always going to be in the same place, so DMA transfers to OAM won't be the same either. Because of this, injection into the ROM itself would be a hassle, and would be per-game most likely. Generating a hash of the sprite pixel data when it reaches OAM and then changing that pixel data if the hash matches the sprite we want to replace would be fine. But instead of doing any injection, you're quite right, it would be easier to just "paste" the new sprite on top of things. If the hashes matched, we could just not draw that sprite, but load up the custom sprite at the X, Y coordinates. Custom sprites would definitely be down the road, but a cool feature nonetheless
Right now, my emulated LCD needs a bit of TLC and clean-up. I've been breaking and bashing together parts on a local branch I set up. Ultimately I need to revamp a lot of the code to be more readable and reusable, especially if I want to get scanline rendering working properly. As I said above, I implemented per-scanline rendering for the background, but the Window and sprites are done per-frame atm (which is not how a real GB does rendering btw, which is why some graphics aren't 100% correct yet). I'm getting there though.
Since every game is different, the original sprite data sitting on the ROM isn't always going to be in the same place, so DMA transfers to OAM won't be the same either. Because of this, injection into the ROM itself would be a hassle, and would be per-game most likely. Generating a hash of the sprite pixel data when it reaches OAM and then changing that pixel data if the hash matches the sprite we want to replace would be fine. But instead of doing any injection, you're quite right, it would be easier to just "paste" the new sprite on top of things. If the hashes matched, we could just not draw that sprite, but load up the custom sprite at the X, Y coordinates. Custom sprites would definitely be down the road, but a cool feature nonetheless

Right now, my emulated LCD needs a bit of TLC and clean-up. I've been breaking and bashing together parts on a local branch I set up. Ultimately I need to revamp a lot of the code to be more readable and reusable, especially if I want to get scanline rendering working properly. As I said above, I implemented per-scanline rendering for the background, but the Window and sprites are done per-frame atm (which is not how a real GB does rendering btw, which is why some graphics aren't 100% correct yet). I'm getting there though.
