One glaring issue I see is the game engine itself. When a game is written in C code, that code is compiled to talk to the Operating System it is running on (Windows, Linux, MAC, etc), then the OS talks to the hardware (Graphics cards, CPU, RAM, etc). When ASM code is assembled, it is made to talk directly to the hardware (PPU, CPU, RAM, etc). I would image this would be impossible to translate, because you must code ASM in a way that follows the NES architecture. Another problem would be controller input. There is a defined process on how the controller interacts with the CPU. Again, however a game is written for C code to handle input (joystick or keyboard) could not be translated to ASM.
Then there are sprite and background tiles. One thing you must remember about NES 6502 ASM language is that it doesn't know what a letter or a number is, only a graphic tile (which is really a collection of 1s and 0s arranged in a way that the PPU interprets it to an image). So, in C code, if you want "Hello" to be write to the screen, the word "Hello" is written in the code. In NES ASM, you must hand draw each letter and number into a graphic tile that is 8x8 pixels and then call that graphic tile to the screen in the code using the graphic tile's Hex value. So, in my game and the way I have my tiles arranged (depends game to game), "Hello" would look like this, "$11, $0E, $15, $15, $18".
I have never used C libraries (heck, I haven't looked at C++ code for 11 years), but from what I understand, C libraries for the NES are built with the understanding of NES hardware and you must code in a way that can be translated to ASM.
I guess the short of what I am trying to explain is, the game would have to be built entirely from scratch and build in the limitations as you go. I would venture to guess that it would be next to impossible (or so labor intensive that it may as well be impossible) to take a game that is solely written on general purpose programming language for another another system and translate it to NES Assembly.
EDIT: HAHA...I called it Linus. Fixed it to say Linux.
Edited: 07/24/2014
at 03:16 PM
by Mega Mario Man