Looks good! It was very entertaining already, and I think there's still quite a lot of untapped potential, such as moving around close to bullets a la Gradius.
I played around with this game too some time ago, and the way I solved the flickering sprites issue was to make a lua script draw a box around all enemies and bullets. If you use the gui.register feature you won't have the 1 frame behind issue either, so this solution worked fairly well.
Here's the script if you're interested (it's a bit messy and not very optimized, but it should give you the idea):
local function box(xcenter,ycenter,width,height,xoffset,yoffset,color)
left = xcenter-width/2+xoffset
down = ycenter+height/2-yoffset
right = xcenter+width/2+xoffset
up = ycenter-height/2-yoffset
if (left > 0 and left < 255 and right> 0 and right < 255 and down > 0 and down < 224 and up > 0 and up < 224) then
gui.drawbox(left,down,right,up,color);
end;
end;
while true do
local function displayer()
bulletx = {[0] = 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
bullety = {[0] = 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
for k=0,12,1 do
if memory.readbyte(0x42C-k)<255 and memory.readbyte(0x3CC-k)==0 then box(memory.readbyte(0x3EC-k), memory.readbyte(0x42C-k), 8, 8, 0, 0, "red") else gui.text(10,10,"") end
end
for k=0,30,1 do
if (memory.readbyte(0x4F0-k)>0 and memory.readbyte(0x5F0-k)==1) then box(memory.readbyte(0x4F0-k), memory.readbyte(0x570-k), 8, 8, 0, 0, "green") else gui.text(10,10,"") end
end
end
gui.register(displayer)
FCEU.frameadvance()
end
Perhaps there is a more elegant way to solve the flickering sprite issue.
Oh, and the boss' HP is stored in RAM address 05D1.