- If you perform Pomeg Glitch with 2 Pokemon, you won't be able to trigger the pointer Corruption.
Because when you make the last fight, the game thinks you have 1 Pokemon in your party, and he sends out the "Pokemon" in party place 2 to battle, who is Decamark since there's no Pokemon in this place (thus, no data other than zeroes).
Then, if you look at the Party, the selection pointer will let you go over "number of Pokemon in party" Pokemon (so 1), and the Cancel button.
But the pointer starts over the Pokemon that's in battle, who happens to be Decamark (and the game crashes if you view its summary), meaning that you can't move the pointer on your KO Pokemon, that appears in second, because the pointer is only allowed to go over the 1st Pokemon, and the Cancel button.
With 2-5 KO Pokemon remaining in your team, you'll at least be able to move the pointer on one of your KO Pokemon to view its summary and glitch the pointer out.
- For the explanation about why the game sends out the "Pokemon" located in the "last Pokemon seen alive" Party Slot if all the team happens to be KO (he really seems to do it), I just gave the one that sounded the most understandable, as I don't know the whole mechanic behind this, and as I only needed to explain this specific case.
- Your third point is covered by the second : The Pokemon that's sent out is the Pokemon on the "last Pokemon seen alive" party slot.
But yeah, some of my explanations can be not that understandable (I'm French so I may have used inexistant words or grammatically incorrect sentences), don't worry. If you have other questions about them or other things, feel free to ask (even if for more deeper explanations that could serve ACE, I wouldn't be that useful, but for Pokemon Corruption or routing a 4 star run, I can).
- What I wanted to say by "concrete" Pokemon would be correctly translated by "existing" Pokemon.
My explanation was a bit wrong, and thanks to your post, I have a better understanding of how things happen. I'll try explaining that in another way.
On certain times, the game checks the position of the first party slot filled with data different from 0000, and this value becomes the "number of Party Pokemon".
This is used to determine how many positions the pointer can take. (ex : Smeargle - Blank - Smeargle team is seen as a single Poke team by the game, as you normally can't do this).
However, if the game determines this "number of party Pokemon" when your first party slot is empty, the value becomes zero, and the pointer is allowed to select Pokemon "everywhere". Going down is well coded, as once you hit the 7th Pokemon, you go onto the Cancel button, and go back to 1st Pokemon, but this isn't the case if you go Up from the "7th" slot, who sends the pointer into an adress far away (in PC Pokemon) instead on the 6th Party Pokemon adress.
This is obviously what we want to have in order to make the pointer read a ton of data, and corrupt it along.
This determination isn't done when you start a battle or open the Pokemon party during the fight, but it is done if you open the Pokemon party outside of a fight or close a Pokemon's summary. This is why we need to open and close a Pokemon's summary to glitch the pointer out, as Decamark (only 0000) has been put into first place at the start of the fight, since he was sent to fight.
Why is the data corrupted ? Because when the Pokemon selection Pointer goes to a new adress, the Anti-Cheat Detection script is used on the data that would theorically be the data of a Party Pokemon (but here, it isn't, since the Pointer went to glitched adresses). Since the data doesn't correspond to a valid Pokemon's data (the checksum test fails), the script modifies the 2 of the "Pokemon" values, so that the game will recognize it as a Bad Egg later on.
One of these values is on a fixed position on a Pokemon's data (a block of 80 bytes), whereas the other has 4 possible positions, depending on the congruence of the Pokemon's PID modulo 24 (a part of a Pokemon's data are separated into 4 substructures that are disposed in na order depending on PID modulo 24).
The first affected byte gets its bits 0 and 3 set to 1 (not toggled) (basically, 0x05), and the second affected byte (the one that has 4 possible location) has its bit 6 set to 1 or 0, depending on the value of the bit 6 of the leftmost byte of the Pokemon's PID and TID (the bit is set to 1 if the 2 other mentioned bits are both to at 0 or 1, and set to 0 else)(basically 0x40).
Thus, you know what RAM adresses will be corrupted by the Anti-Cheat Detection script, and you can influence the 0x40 corruption to have a more convenient location or bit set (it is used on the run to corrupt Ever Grande Fly Location, and to Castform data on the same fight as the Ever Grande Fly Location Corruption).
(without the 0x40 corruption manipulation, which is done by fighting Route 104 or Route 103 twins, the EGFL couldn't have been corrupted. This thing prevented Werster to get that corruption when he first tried to test his route).
So yeah, the Corruption is only possible thanks to the anti-cheat scripts. Another anti-cheat scripts also moves some parts of RAM data, allowing us to corrupt every leftmost byte of the double words in these parts with both corruptions, as they have 32 possible locations and a Pokemon's data only takes 20 double-words (so each corruption occurs every 20 double-words).
- And for the last part, yeah, leaving the pointer on a glitched position (or maybe just closing the summary to have the ability to move the pointer everywhere) makes the game unable to heal your party Pokemon after the black out.
This is linked to the / a heal command that's used when you black out, but I don't know more about this.
In FrLg, your team is healed at Pokemon Center after the black out (it maybe is healed during the black out too), and this always works, unfortunately (as keeping the team KO allows for consecutive Pomeg Glitch Corruptions).