I have downloaded the source and browsed it.
In the VGA functions, you repeatedly use complex expressions.
Are they fast enough?
PIC32 has hardware multiplier, however since there is so much RAM,
you can get faster code by calculating the expressions just once, then store in RAM.
Vframe[(x / 16) + (y + sprite_row_count)]
For instance this is repeatedly calculated inside the loop.
but only sprite_row_count will change.
So, vframebase=((x/16)+y)*27)
in the loop: Vframe[(vframebase+sprite_row_count)*27)]
Or maybe it is not require to make this code faster