Кстати, в UKNCBTL до сих пор с ошибкой работают команды ASH и ASHC. У меня версия от 28-08-2010.
Вид для печати
Кстати, в UKNCBTL до сих пор с ошибкой работают команды ASH и ASHC. У меня версия от 28-08-2010.
http://code.google.com/p/ukncbtl/dow...+DownloadCount - там сборки с бета 9 по бета 20. Соответственно бета-15 с уже фиксенным EIS, далее там ничего не изменялось. Гарантированно правильно работает только под Win32, а как в x64, Mac OS и Linux - не знаю, там уже QtUkncBtl.
Alex_K, спасибо! У меня катастрофически не получалось увидеть такой полный список( ) Штука в том (могу баг-репорт в лс написать), что есть один плавающий ошибк, который отсутствует в сборке за ноябрь 2009 (где ещё нет харда), но появляется в более поздних. Я конечно только про игры говорю сейчас (специфика).
Нет, исходники нельзя) Это набросок. Да и не поможет вам исходник, т.к. там просто идет перебор всех комбинаций сдвига, и в какой из них ошибка - выявить невозможно, т.к. финальное число - это сумма всех предыдущих.
На реальном работает.
Да я вам и так скажу, почему ошибка.
Счетчик сдвига - это 6-битное число со знаком -32..31.
Тогда как в эмуляторе делается следующее:
src |= (src & 040)?0177700:0;
Как мы видим, если знак отрицательный, то он расширяется в старшие биты. Тогда как если знак положительный, то ничего не расширяется, а остается, как есть. Т.е. все биты 6..15 будут такие, как в операнде источнике.
Попробуйте поставить перед этой строкой такую, может заработает:
src = src & 0x3F;
Пожалста)
Кстати, процессор написан достаточно точно в смысле совместимости по командам. Сами писали, или уже взяли готовые наработки?
Тогда как растактовка никуда не годится. Я бы сказал даже, что если захотите написать эмулятор с точными тактами, весь придется переделывать.