Важная информация

User Tag List

Страница 2 из 11 ПерваяПервая 123456 ... ПоследняяПоследняя
Показано с 11 по 20 из 106

Тема: Глюки в эмуляторах УКНЦ

  1. #11
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,560
    Спасибо Благодарностей отдано 
    1,223
    Спасибо Благодарностей получено 
    1,754
    Поблагодарили
    683 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Обновил первый пост.

  2. #12
    Guru
    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,208
    Спасибо Благодарностей отдано 
    346
    Спасибо Благодарностей получено 
    607
    Поблагодарили
    399 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    EmuStudio 0.09c:
    BOLDER.SAV - игра 'Bolder Dashing' 04-89 от А. Сафронова, г. Кострома.
    Иногда зависает клавиатура при вводе ранга игры (1-5). Причина: неизвестна.
    Причина скорее где-то в неправильной реализации канала 0, т.к. в этой игре при вводе ранга игры опрашивается только регистр 177562 на заданное значение, без опроса регистра 177560. Наверное надо копать в этом направлении, ну и помнить, что идет завязка и на регистры со стороны ПП.

  3. #13
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,560
    Спасибо Благодарностей отдано 
    1,223
    Спасибо Благодарностей получено 
    1,754
    Поблагодарили
    683 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Причина скорее где-то в неправильной реализации канала 0, т.к. в этой игре при вводе ранга игры опрашивается только регистр 177562 на заданное значение, без опроса регистра 177560. Наверное надо копать в этом направлении, ну и помнить, что идет завязка и на регистры со стороны ПП.
    Возможно, что-то с каналами еще не дописано, т.к. тест, который я делал для полного тестирования каналов, был написан только на 2/3, и, возможно, это как раз в него не вошло.

  4. #14
    Guru
    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,208
    Спасибо Благодарностей отдано 
    346
    Спасибо Благодарностей получено 
    607
    Поблагодарили
    399 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Возможно, что-то с каналами еще не дописано, т.к. тест, который я делал для полного тестирования каналов, был написан только на 2/3, и, возможно, это как раз в него не вошло.
    Скорее всего чего-то происходит при чтении регистра 177562, в то время когда в регистре 177560 не установлен бит готовности.

  5. #15
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,560
    Спасибо Благодарностей отдано 
    1,223
    Спасибо Благодарностей получено 
    1,754
    Поблагодарили
    683 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Скорее всего чего-то происходит при чтении регистра 177562, в то время когда в регистре 177560 не установлен бит готовности.
    Код:
    UINT16 FASTC	CPU_RdW_DST0_DATA(void) {	// Регистр данных приемника канала 0
    
    	CPU_DST0_STATE &= 0x7F;		// Сбросить бит готовности регистра состояния приемника 0 CPU
    	PPU_SRC_STATE |= 0x08;		// Установить бит готовности источника 0 регистра состояния источников PPU
    	GPU_SRC2_STATE |= 0x80;		// Установить бит готовности источника-2 GPU (для КЦГД ДВК)
    
    	if (PPU_SRC_STATE & 0x1)		// Если прерывание PPU по чтению данных каналом 0 разрешено	
    		PPU_IRQ_MASK |= PPU_IRQM_TRN0; // Установить запрос прерывания PPU источником 0
    
    	if (KCGD_On)							// Разрешен только при активном КЦГД
    	{
    		if (GPU_SRC2_STATE & 0x40)			// Если разрешены прерывания источником-2 GPU,
    			GPU_IRQ_MASK |= GPU_IRQM_TRN2;	// то установить запрос на прерывание
    	}
    
    	return(PPU_SRC0_DATA);
    
    }

  6. #16
    Guru
    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,208
    Спасибо Благодарностей отдано 
    346
    Спасибо Благодарностей получено 
    607
    Поблагодарили
    399 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Код:
    UINT16 FASTC	CPU_RdW_DST0_DATA(void) {	// Регистр данных приемника канала 0
    
    	CPU_DST0_STATE &= 0x7F;		// Сбросить бит готовности регистра состояния приемника 0 CPU
    	PPU_SRC_STATE |= 0x08;		// Установить бит готовности источника 0 регистра состояния источников PPU
    ...............................................
    	if (PPU_SRC_STATE & 0x1)		// Если прерывание PPU по чтению данных каналом 0 разрешено	
    		PPU_IRQ_MASK |= PPU_IRQM_TRN0; // Установить запрос прерывания PPU источником 0
    ...................................................................
    
    	return(PPU_SRC0_DATA);
    
    }
    Вот она ошибка. Я уже вроде писал неоднократно, что запрос на прерывание возникает только тогда, когда предыдущее состояние бита готовности и бита разрешения прерывания, сложенное по ЛОГИЧЕСКОМУ И, равно нулю(ЛОЖЬ), а новое равно единице(ИСТИНА). В данном же варианте предыдущее состояние со стороны ПП уже было равно ИСТИНЕ, а тут еще дают запрос на прерывание. Собственно программа обработки прерываний со стороны ПП небось в ступор и входит.
    Правда есть еще особенности работы каналов со стороны ПП, а также каналов 1 и 2 со стороны ЦП, когда запрос на прерывание дается, а при удовлетворении запроса п/п обработки прерываний не читает/записывает регистр данных, но это уже обсуждалось.

  7. #16
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #17
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,560
    Спасибо Благодарностей отдано 
    1,223
    Спасибо Благодарностей получено 
    1,754
    Поблагодарили
    683 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Вот она ошибка. Я уже вроде писал неоднократно, что запрос на прерывание возникает только тогда, когда предыдущее состояние бита готовности и бита разрешения прерывания, сложенное по ЛОГИЧЕСКОМУ И, равно нулю(ЛОЖЬ), а новое равно единице(ИСТИНА).
    Сейчас, к сожалению, не помню, переделывал я это в соответствии с тестом, или тест до этого не был дописан. Надо проверять.

  9. #18
    Guru
    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,208
    Спасибо Благодарностей отдано 
    346
    Спасибо Благодарностей получено 
    607
    Поблагодарили
    399 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вот как сделано в UKNCBTL:
    Код:
    BYTE CMotherboard::ChanReadByCPU(BYTE chan)
    {
        BYTE res,oldp_ready = m_chanpputx[chan].ready; // Получить пред.состояние бита готовности канала в ПП
    
        chan &= 3;
        ASSERT(chan<2); 
    
    
        res = m_chancpurx[chan].data;// Получить данные канала ЦП
        m_chancpurx[chan].ready = 0; // Сбросить бит готовности канала ЦП
        m_chancpurx[chan].rdwr = 1; // Установить признак чтения регистра данных канала ЦП
        m_chanpputx[chan].ready = 1; // Установить бит готовности канала ПП
        m_pCPU->InterruptVIRQ(chan*2+1,0); // Сбросить запрос на прерывание со стороны ЦП
        if((m_chanpputx[chan].irq) && (oldp_ready==0)) // Если со стороны канала ПП установлено разрешение на прерывание и пред.состояние бита готовности было равно нулю
        {
            m_chanpputx[chan].rdwr = 0; // Сбросить признак записи регистра данных каналам ПП
            m_pPPU->InterruptVIRQ(chan?8:6, chan?0334:0324); // Установить запрос на прерывание со стороны ЦП
        }
        return res;
    }

  10. #19
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,560
    Спасибо Благодарностей отдано 
    1,223
    Спасибо Благодарностей получено 
    1,754
    Поблагодарили
    683 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Да, посмотрел - тест у меня тестирует пока что только приемники ЦП, приемники и источники ПП. А источники ЦП не тестирует. Впрочем, и в этих трех тестах нашел давно уже ошибки, но не исправлял, т.к. хотел все скопом, когда полная информация по тестам будет. Вот и остались пока что эти ошибки.

  11. #20
    R.I.P. Аватар для hobot
    Регистрация
    30.08.2011
    Адрес
    Зеленоград
    Сообщений
    7,161
    Спасибо Благодарностей отдано 
    2,979
    Спасибо Благодарностей получено 
    370
    Поблагодарили
    309 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Обновил первый пост.


    С этой игрой странные вещи творятся, во первых где-то в дебрях "хламника" есть вообще не рабочая версия (к сожалению просто для примера не могу её откопать)
    - на живой машинке не проверенная. Возможно битая.

    Уползание рамки стартового меню ЕМНИП было и на живой машинке, это можно потом проверить. Штука такая, при запуске с дискеты и в EmuStudio и в UKNCBTL нормально работает )
    А вот если этот же самый файл запустить с ЖД в UKNCBTL после выхода из игры он
    "убивает" сессию, эмулятор впадает в "бешенство", курсор мигает очень очень быстро и начинают залипать все все клавиши. Как-то так.
    Вложения Вложения
    Архив программ для УК-НЦ, ДВК и БК.

    Ищу игру "СТРАНА МОНСТРОВ" [monstr.sav] для ДВК.

Страница 2 из 11 ПерваяПервая 123456 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Глюки в УКНЦ играх
    от Titus в разделе ДВК, УКНЦ
    Ответов: 106
    Последнее: 08.04.2015, 16:53
  2. Запись TZX/TAP в эмуляторах
    от SoftLight в разделе Эмуляторы
    Ответов: 2
    Последнее: 08.10.2010, 12:01
  3. +3 на эмуляторах
    от phant0m в разделе Эмуляторы
    Ответов: 16
    Последнее: 04.01.2009, 23:40
  4. Bubble Booble на эмуляторах
    от Higgins в разделе Эмуляторы
    Ответов: 20
    Последнее: 05.05.2008, 01:29

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •