From ef91611ca9f13a112b66b55ed81d70490801b58f Mon Sep 17 00:00:00 2001 From: Tom Stellard Date: Tue, 28 Dec 2010 18:08:19 -0800 Subject: emulator: Treat uninitialised temp regs as input regs --- emulator.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) 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]; -- cgit v1.2.3