Alright it's the weekend here in Sydney, so I have time to work on the game! I will do a live-update debugging for anyone who is interested. I find this method of debugging is the best for me because I can track EXACTLY what I did after every compile.
I have fixed the colouring problem of the enemy characters by manually copying over the graphics pointers from EnvGfxPtr and EnvClrPtr:
lda EnvGfxPtr
sta EnvGfxPtr+2
sta EnvGfxPtr+4
sta EnvGfxPtr+6
sta EnvGfxPtr+8
lda EnvGfxPtr+1
sta EnvGfxPtr+3
sta EnvGfxPtr+5
sta EnvGfxPtr+7
sta EnvGfxPtr+9
lda EnvClrPtr
sta EnvClrPtr+2
sta EnvClrPtr+4
sta EnvClrPtr+6
sta EnvClrPtr+8
lda EnvClrPtr+1
sta EnvClrPtr+3
sta EnvClrPtr+5
sta EnvClrPtr+7
sta EnvClrPtr+9
I can identify two problems:
Number One
The colour of Che seems to shear on the right side of the screen. The graphics shape of GRP0 is correct, but the graphics seem to be applied one line BEFORE they're supposed to on the right side of the screen. I will use the Stella Debugger to have a look at this.
Number Two
This is very confusing. The last line of the GRP1 graphics loads properly, but seems to have the colour $00 applied to it, instead of $FE, like it is supposed to. I checked the Stella debugger, and the colour that is being loaded is definitely $FE, which is bright yellow, but it seems to show up as black. This is very confusing.
My best guess for why this is happening is that I am setting COLUP1 earlier on in the kernel before i WSYNC lower down in the kernel, and then I am drawing GRP1 right after the WSYNC at the top of the kernel. I thought these two TIA register writes were in sync, but maybe the colour for GRP1 is being written again after I have drawn it. As always, if there are any people reading this before I update again, feel free to jump in and give your opinions.
coloured_guerrilla027.asm
guerilla27 bin.zip