В течение многих лет я поддерживал аппликатор эмулятора Tandy Color Computer Emulator на своей домашней странице. С покупкой Incredible я решил сделать порт. Как это происходит в Android, это не займет много времени, но я действительно удивлен, как медленно он работает. Вы можете буквально видеть окраску пикселей. Я знаю, что есть другие успешные эмуляторы Android, поэтому я должен делать что-то неправильно.SurfaceView достаточно быстро для эмуляции?
Мой подход заключался в использовании SurfaceView для рендеринга. Есть отдельный поток, который запускает виртуальный процессор 6809. Всякий раз, когда этот поток обновляет эмулированную видеопамяти, он вызывает SurfaceHolder.lockCanvas() с помощью Rect, описывающего часть экрана, требующую перерисовки. Затем он вызывает gfx-процедуры с полученным Canvas ... вот где я сделал repaint() в AWT/Swing. Процедуры gfx достаточно умны, чтобы просто отображать то, что находится в clipRect. Возможно, я все еще застрял в AWT, но я не могу придумать, как это сделать на приемлемой скорости. Я пытался объединить вызовы gfx, но это тоже не сработало. Есть предположения?
Thanks Romain. SurfaceView достаточно быстр. Теперь я вызываю подпрограммы рисования с соответствующим кликом каждые x число циклов процессора (вместо вызова подпрограмм каждый раз, когда эмулятор записывает в «видеопамять»). Намного быстрее. –