The error "Save data corrupted" (or "The save file will be loaded. The file can be erased.") in VBA / mGBA / real hardware is common. Here's the diagnosis hierarchy:
GBA carts use different save hardware: EEPROM (512B/8KB), SRAM (32KB), FLASH (64KB/128KB). VBA often guesses wrong.
.sav file → Restart game → Save in-game → "Save data corrupted" gone.sav (size not 32KB/64KB/128KB).sav. Start new game. Use Save States (F1-F10) only as backup, not primary save. In-game save (Start → Save) writes full valid structure.sav / .sgm. mGBA uses .sav. Ensure emulator reads the same file the game writes.sav in same folder.sav. Start cleanmgba core — same accuracy, unified UITL;DR: Set Save Type = Flash 128K in emulator. Delete old .sav. Use mGBA. Save in-game (not just save states).