You can implement dummy versions of the functions you in lua. They can either do nothing, or set and return plausible values.
There's a couple things that do need to be in C (bitwise ops for example) but almost everything you need for a useful simulator can be done in lua. With function environments, you can hide the test stuff from the script you are testing.
My emu script has some examples of this, although as I said before, it's a very preliminary work in progress and not really ready for use yet.