Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - smalcom

Страницы: [1]
1
долго вожусь с Firedemo - просто в стенку уперся и все. Происходит установка видеорежима, потом оно входит в какойто цикл и все - на экране пусто. Смотрел как TrueReality ее играет - после установки видеорежима чтото происходит, а потом когда отрисовывается все то еще и начало фреймбуфера меняется, те все работает.

может там секрет какой есть известный(я уже трассы выполнения просматриваю - с ума сойти можно) или исходники Firedemo?
PS. думаю еще одну демку поковырять, которая с исходниками, но это наверно не совсем верный выход

2
до такого уровня реализации еще не дошел. покачто память, основной проц и минимальный набор всяких спецрегистров(в основном это хаки(пока что)). реализую по принципу выскочило исключение на доступ к несуществующей памяти/периферии/etc - делаем.

3
ага, буду держать на примете. в настоящий момент пробую запустить (по совету sergi) Metal_Gear_MSX_(U).zip

4
выполнил код стартового загрузчика нинтендо - действительно инитит железо(то, которое есть)) ) и копирует загрузочный код картриджа в DMEM и потом оттуда выполняет. отлично, идем дальше.

5
ОФФ:
я сейчас немного на работе, а вечером все обсуждение изолью в код

6
Цитата
Хочется разобраться, почему большинство эмуляторов используют HLE?
не, это я понимаю. параллельно с реализацией HLE хочется разобраться как на самом деле работает консоль.

Цитата
Почему тогда 0 на старте?
очевидно, что я ошибся.

7
Цитата
А первоначальный DMA transfer и передачу управления на код не pifrom осуществляет
честно, по этой части не глянул. просто просмотрел не инициализирует ли он TLB. Сегодня разберу его подробней.

Цитата
When ERL = 1 in the Status register
хм. у меня со старта Kernel mode с чистыми ERL и BEV, и получается, что первые 2Гб мапятся через TLB.

Цитата
Однако ж, HLE один сплошной хак, по-моему.
согласен, но всеже интересно почему так, а не по другому, разобраться хочется.

Добавлено позже:
Цитата
N64 Programming manual
опаньки, а как это я мимо него пролетел - листаю

8
Цитата
Во-вторых, в r4300 32 элемента, а не 48
ага, 48 в R3000, а нековский 4300i который в нинтендо порезан.
Цитата
Разве это не (мелкий) хак в MAME?
Во-первых, не нашёл нигде сведений про preset tlb entries.
вот-вот. и я смотрю исходники эмулей и наблюдаю что для запуска всех ромов используются мелкие и нет хаки. вот собственно у меня и встала с этим проблема - хотелось все сделать без хаков.

Цитата
В-третьих,
да-да, часть режимами проца я реализовал и адреса конвертяца верно. сам TLB я упростил - без even,odd(в том же mupen можно наблюдать старый код с правильной работой железа TLB и более поздний оптимизированый алгоритм в котором выборка из TLB происходит следующим образом pfn = tlb[VPN], если pfn != 0, то страница верная)

Цитата
С каким виртуальным адресом у тебя происходит tlb refill исключение?
обычно когда в 0 обращается - RDRAM. я вот подумываю, а не добавить ли еще одну страницу в TLB... но это теоретически не верно. Раз оно лезет к 0 значит там чтото должно быть.

Возможно я просто неверно точку входа выбираю, тк один из ромов обратился 0xA46... : видимо пошел запрос к ДМА на копировани части картриджа в RDRAM. Хочу еще mupen пересобрать в VS6(потому что в студии хотябы дебагер нормальный есть)

9
/* load the fixed TLB range */
vtlb_load(mips->vtlb, 2 * MIPS3_TLB_ENTRIES + 0, (0xa0000000 - 0x80000000) >> MIPS3_MIN_PAGE_SHIFT, 0x80000000, 0x00000000 | VTLB_READ_ALLOWED | VTLB_WRITE_ALLOWED | VTLB_FETCH_ALLOWED | VTLB_FLAG_VALID);
vtlb_load(mips->vtlb, 2 * MIPS3_TLB_ENTRIES + 1, (0xc0000000 - 0xa0000000) >> MIPS3_MIN_PAGE_SHIFT, 0xa0000000, 0x00000000 | VTLB_READ_ALLOWED | VTLB_WRITE_ALLOWED | VTLB_FETCH_ALLOWED | VTLB_FLAG_VALID);

вотб mips3com.c:160.


10
смотрел исходники MAME... создается по умолчанию два элемента в TLB. пробую копировать 1-й мегабайт
картриджа(0x001000 - 0x101000) в RDRAM начиная с адреса 0x200000, потом прыгаю туда. и все равно находятся интересные такие адреса которые дают TLB refill исключение.

11
Цитата
А у тебя будет HLE или LLE?
RDP будет HLE... RSP наверное будет дитем компромиссов. В любом случае буду стараться все возможные вычисления отдать OpenGL.

Спасибки.

Добавлено позже:
посмотрел pifrom - команд TLBx не обнаружил. получается если я получил исключение то иду по адресу 0x800... или 0xbfc0..., но что там за код находится, если кроме бута картриджа ничего еще не отображено в память... чтото я упустил

12
планирую делать без видео плагинов тк ориентируюсь только на OpenGL, но это не окончательный вердикт - время покажет. А вот звук и ввод скорей всего надо делать с плагинами. Но первую реализацию RSP, RDP все равно буду сам писать.

ЗЫ. сейчас еще поищу, что из себя представляет эта система плагинов.
ЗЗЫ. пишу на D - помимо эмуляции еще и новый язык приходится изучать.

13
спасибо, пробую.

Цитата
R4400
да, это одна из двух книг, которыми пользуюсь.

14
Пытаюсь эмулировать N64. Застрял на одном месте - инициализация. Как делаю: бут-код картриджа(4032байта) копирую в SP_DMEM и начинаю оттуда выполнять, через несколько успешных команд появляется LW, результатом которой становится TLB refill exception тк процессор только запущен и TLB пустые. Копал mupen64, смотрю в доке по r4300 и r4000... непонятно. Подскажите как верно запускать код на N64 тс от включения питания - стартовый PC, значения регистров, есть ли нет стартовый загрузчик на самой приставке и тп

Страницы: [1]