Reviving this topic because it's the first result on google, and the answer to this question is simply nowhere to be found on the internet.
There are a lot of dead ends talking about PokePatch dating 7 years ago, but as of writing that tool seems to be out of commission.
I managed to do it without said patch.
Using R4 with "Wood R4 V1.62", and using EZFlash 3-in-1 with GBA_ExpLoader.
http://www.r4wood.com/pages/wood-r4-kernel.html
http://gamebrew.org/wiki/GBA_exploader
It's possible to skip ExpLoader and select your .gba file from the main Wood R4 menu, click Y, and flash to NOR; BUT you won't be able to use an existing save file. (or can you? untested)
If you already have an existing save, place your Gen 4 .nds and Gen 3 .gba file on your R4 cart, place the gba_exploader.nds on your R4 cart, and the Gen 3 .sav file in the folder as specified on the ExpLoader site.
Open ExpLoader, flash your Gen 3 pokemon to NOR, and select the .sav file to write it to SRAM.
(To test if it works, remove your R4 cart and restart your DS. The gba game should still be written to memory and you can play it from the DS main menu.
Regardless, after the Gen 3 game has been written to NOR, open your R4 again, select your Gen 4 pokemon game, and click Y. Then click Y again, and then turn on the 'Link with GBA' function.
And open your game!
Tested with HeartGold and Platinum, both were able to PalPark an Emerald game without issues and at full speed.