As for now I think the best way to go is really LOVE…
I would approach it differently… Map the API calls you use in corona (display.newImage, display.newGroup, native.*, etc)
Implement the corona objects and function you used for example:
display = {} display.newImage = function( ... ) --implementation for newImage in LOVE --in the returning object you'll need to implement the ImageObject functions --like :removeSelf, :translate and properties like .x, .y end display.newGroup = function() --implementation for newGroup in LOVE end . . .
Once you have the ‘Corona’ main objects like ‘display’, ‘native’, ‘system’, ‘graphics’, ‘audio’, ‘Runtime’ and any other object you use you will not only port your game with less bugs (because it’s much easier to test that each of these functions works correctly) but you will also have in hand a generic wrapper that will allow you to automagically port ANY future Corona game you develop to windows.
We have done the same thing with MOAI when we thought to replace Corona and didn’t want to port the games we have one by one but eventually abandoned the project because we decided to stick with Corona SDK (and we havn’t looked back since!)
The tricky part is to implement all the Corona object methods like :removeSelf, but even trickier is the part of writing the properties like .x, .y, we had to convert setting .x, .y to function calls in MOAI and it required using a metatable with a __newIndex and __index functons…
It’s quite magical to write such a bridge and then run your application in a different SDK with no code changes and see it runs 