What about local play? That is still good right?
Depend what you call "local play".
If you talk about playing with someone that also have the cart, it'll work fine. You can, for example, play Mario Golf (JP) with someone who have the european version. Same for "Smash Bros". I can locally play the japanese rom on my japanese 3DS with the real european cart on my european 3DS (and same if I use the european rom).
If you talk about "Download play" (play to a game with only one cart, like in Mario Kart or such), it won't work. "Download play" is region-locked and the gateway change anything to that. All 3DS that want to play with "Download play" have to use the same region, same for the game (for example, I have a japanese and a european 3DS and both can't use "Download play" between that. Even if I play an european game on my japanese 3DS with the gateway, the "download play" don't work with the european 3DS, "no game found" when I use download play on the european console").
About online, like it was said before, you can play whatever games region you want as long as the game don't have eshop updates. If the game have some, you need to use the same region as your 3DS to be able to download the updates. There are a few exceptions, though. Mario Golf, for example, have a in-game download updates function, so it don't need to use the eshop to update the game, which mean you can use a different region of the rom and still play online, but that's pretty rare.
just to clarify something. If I use the same header with 2 different games, my save wont work?
Let me explain:
I dumped my Madden football header
Use that header with scene dump of pokemon x and y both
but since I am using the same header, they will create same save file?
Or is it ok to use same header with different games?
The save is tied to the "online header", but still keep the original header (id of the original game) to store the save. So the savefile will still have the same name as if you don't use an "online header" and will work for anybody that use the same dump.
But if you add an "online header" to the rom, the save will be then tied to this modified version of the rom and only people who will have the same rom as you (so the one with your header) will be able to use the save. If they use this save with a rom with an "online header" different from yours or no "online header" at all, the save will be detected as corrupt.
And same for you. If you use roms with "online header" and lose them in a micro-sd crash, for example, you won't be able to reuse them, except if you still have the "online header" you used for those games (that's why using a header from a game you own is a good thing, as you can always redump it, not to mention you have less probabilities to be banned if they start to ban one day, because if they do, they would probably just ban/block people that use the same ID, as one card can't be played online by more than one people at the same time).
Personally, I use the header of my own "Metal Gear Solid 3D" (4 GB) as it don't have online functions so even if they ban the id online, won't be a big loss (except if they directly ban the system but I don't think so) and as I don't plan to sell any of my games so I'm sure I'll have it forever and that no one will use the same id online.
Is there any tool I can use on OSX to do all this? My windows partition died and there's no way to re-install windows on my laptop until I get a new one.
You can add them manually, but that's not the easiest way to do (I think I saw the manual explanation somewhere in this thread. Basically, you can open the rom with an hexadecimal editor (like Hex Workshop, for example), and also open the header you want to do add.
Then, in the rom, the header you search start at adress "00001200". Then, just copy paste the header values in it. You don't need to copy the whole header as most of the header is empty (FF). It seems only "00000000-00000050" in the header is used, so just copy-paste those lines at "00001200-00001250" in the rom.
Note that you'll have to change a value manually, the one that indicate the size of the rom (the patcher offer to auto-fix it when it detect a problem).
I'm actually searching for all the values (need to do some tests to find them) and will edit my message when it'll be okay.
Edit : Here's the values :
Rom size/hexadecimal value :
128 MB (1 Gbit) : 7F
256 MB (2 Gbit) : FF
512 MB (4 Gbit) : FE
1 GB (8 GBit) : FA
2 GB (16 Gbit) : F8
4 GB (32 Gbit) : F0
This value is located at 00001241 in the rom (or 00000041 in the header, if you want to modify it in the header, before the copy paste).
Edit 2 : Finally found when I had saw those values, here : http://gbatemp.net/threads/how-to-use-scene-dumps-with-gw-2-2-online.365829/page-60#post-5118599
It's also give the value you have to change if your game is a card2 one (pokemon x/y, for example).