More specifically, could you get low level code from a rom, and piece it together and translate it to a higher level language?
The source code is discarded completely by the compiler/assembler and is not present anywhere in the rom (except by accident).
However, you can convert the low-level machine code to a high level language. This process is called decompilation, and while it can be tedious and difficult, it is possible to come up with high-level code which has the same functionality as the binary code. Note that this won’t get you source code, merely equivalent code. For example, information like function or variable names is not necessary for the CPU so is discarded completely unless you elect to produce debug information, which rarely happens in released games.
On difficulties of machine code decompilation, see Why are machine code decompilers less capable than for example those for the CLR and JVM?