I think you need a separate item for each variant of the card. Anything that is different between variants needs a separate path so they don't interfere with each other (like how you made a separate objects folder for gs and vga .o files which are built from common/shared .c and .S files).
I don't see a link between FULLROM and the vga or gs .o files.
I'm not sure how FULLROM is built. It's VGAHALFROM except the second 32K is replaced with the first 32K of GSHALFROM when CARDTYPE is "GS" or the first 32K of VGAHALFROM when CARDTYPE is anything else?
There's a makefile tutorial at:
Makefile Tutorial by Example
makefiletutorial.com