Part 1: Fix the save problem
The first save problem is you can’t save on a Pokémon game in CIA.
To resolve it, we need to hex edit the .gba rom.
Open the desired .gba in a hex editor (HxD is highly recommended) and find the following string:
D0 88 8D 83 42
Edit stricly what is between:
D0 88 8D 83 42 [AND] 24 10 49 10 68
Replace the XX by 00.
Note: You may find this value twice, so be sure to also do it twice in this case.
Part 2: Remove the save data corrupt message
(This is only valid for Pokémon Ruby, Sapphire and Emerald, and only for english / french languages)
Open the desired .gba in a hex editor (HxD is highly recommended), use Ctrl+G(go to offset), then edit the value, by the other value here:
-> Ruby and Sapphire [US] Offset 0098F6: Replace 2B by 3D Offset 0099A4: Replace 1D by 65 -> Ruby and Sapphire [FR] Offset 009AC2: Replace 2B by 3D Offset 009B70: Replace E99B by 319C -> Emerald [FR/US] Offset 02F9CC: Replace 5D by B1 Offset 02F9A4: Replace 084802F037FA by 000000000000.
Save the .gba, turn it in .cia, install it, and enjoy.