Why can't the VBA-M core play Gameboy/Gameboy Color games?

Basically the title. Why can’t the VBA-M core play Gameboy/Gameboy Color games? Even though VBA-M outside of RetroArch can. (Second time using RetroArch ever.)

Also, is there any way to make RetroArch automatically display a different shader when playing a Gameboy game or GB Color game, instead of having one default per core?

Because it’s not hooked up, and it’s not very good at that, anyway. The Gameboy cores we have are better.

No, not without using an external launcher like Hyperspin. RetroArch itself doesn’t have any sort of concept for “systems” only cores. I did compile some Windows cores that can be used separately (e.g., Gambatte-gbc) in this thread: http://libretro.com/forums/showthread.php?t=5391 Those cores are exactly like the regular ones except that they have different internal naming, so RetroArch sees them as a different core entirely. This means you can assign a core-specific override (or per-core config) that loads a different shader for it.