diff options
-rw-r--r-- | emulator.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/emulator.cpp b/emulator.cpp index 4c498cc..92a615c 100644 --- a/emulator.cpp +++ b/emulator.cpp @@ -57,7 +57,15 @@ emulator::get_value(register_address addr) unsigned int index = addr.to_int(); switch(addr.m_type) { - case REGISTER_TYPE_TEMP: return m_temp_regs[index]->clone(); + case REGISTER_TYPE_TEMP: + if (index < m_temp_regs.size() && m_temp_regs[index]) { + return m_temp_regs[index]->clone(); + } else { + /* The Temp register has never been written, which + * means it is actually an input register */ + return m_input_regs[index]->clone(); + } + break; case REGISTER_TYPE_CONST: { float_value * val = m_const_regs[index]; |