It's also clear from this that some remapped bad blocks shouldn't be erased..
Might be worth having an extra switch for 'noremaperase' to cater for this.
Not sure why. If you're referring to the blocks 0x150, 0x16A and 0x16B and whether they are zero'd out or not, then it would not make any difference, because...
If those blocks are truly bad on the nand, then they can't be written or read. i.e. they are bad so look elsewhere in the nand for those blocks.
Only if we were assuming those blocks were bad and they weren't bad, then they would need to be zero'd so as to indicate to the flash controller to look elsewhere.
Also, when you say 'erased' then we should be careful of that term because erased in the nandpro sense i.e. nandpro usb: -e X Y means to make the block "EMPTY", which is not "BAD".
Erased = all pages in the block filled with 0xFF (still a good block)
Bad = all pages in the block filled with 0x00, or at least the bad block flag in each page set to anything other than 0xFF I believe.