Автор Тема: Taito маперы 33 и 48  (Прочитано 5001 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн dssoft

  • Пользователь
  • Сообщений: 1165
    • Просмотр профиля
Taito маперы 33 и 48
« Ответ #30 : 05 Февраль 2020, 09:59:59 »
Человек тестировал на реальном железе, а какие основания для сомнений есть у тебя? 8)
Да все оттуда же: https://forums.nesdev.com/viewtopic.php?p=231581#p231581
Цитата
I had forgotten all about that one time I spent hours on that Flintstones game. FYI, the game also requires that writing to $C000 acknowledges the IRQ, otherwise one specific portion of a later stage in the game is bugged (the Wiki does not mention this, unsure if other emulators implement this or if it is correct, but it's the solution I found for a user-reported emulation bug at the time)

Я сейчас раздумываю как лучше, лепить новый отдельный механизм или добавить правильную задержку после прерывания MMC3, оно в любом случае хлопнет перед этим.

Оффлайн supremacy

  • Пользователь
  • Сообщений: 2257
  • Пол: Мужской
    • Просмотр профиля
Taito маперы 33 и 48
« Ответ #31 : 05 Февраль 2020, 11:02:15 »
Да все оттуда же: https://forums.nesdev.com/viewtopic.php?p=231581#p231581
Я не понял как эти два утверждения связаны между собой.
Первое говорит, что даже при записи в $C003 флаг взведённого прерывания не сбросится.
Второе говорит, что при записи в $C000 новое значение сразу применяется к счётчику.

Оффлайн dssoft

  • Пользователь
  • Сообщений: 1165
    • Просмотр профиля
Taito маперы 33 и 48
« Ответ #32 : 05 Февраль 2020, 11:36:08 »
Я не понял как эти два утверждения связаны между собой.
Первое говорит, что даже при записи в $C003 флаг взведённого прерывания не сбросится.
Второе говорит, что при записи в $C000 новое значение сразу применяется к счётчику.
Речь про то что флаг сбрасывается не только записью в C001 но и C000.
Разрешение прерывания отдельный вопрос, то ли это И с флагом, то ли разрешение для триггера. Скорее второе.

Тут проще погонять, посмотреть на глюки.

Оффлайн supremacy

  • Пользователь
  • Сообщений: 2257
  • Пол: Мужской
    • Просмотр профиля
Taito маперы 33 и 48
« Ответ #33 : 05 Февраль 2020, 12:25:29 »
Речь про то что флаг сбрасывается не только записью в C001 но и C000.
мне кажется, здесь идёт речь не про флаг а про счётчик. У mmc3 запись в C000 не запускает счётчик заново, если не вызвать сразу C001, а у 48-го маппера значение счётчика сразу обновляется и в этом и есть отличие.

Оффлайн dssoft

  • Пользователь
  • Сообщений: 1165
    • Просмотр профиля
Taito маперы 33 и 48
« Ответ #34 : 05 Февраль 2020, 12:40:36 »
мне кажется, здесь идёт речь не про флаг а про счётчик. У mmc3 запись в C000 не запускает счётчик заново, если не вызвать сразу C001, а у 48-го маппера значение счётчика сразу обновляется и в этом и есть отличие.
Да вроде как ясно написано что речь именно про IRQ acknowledge, то бишь флаг, а не релоад счетчика. А релоад просто еще одно отличие от MMC3.

Оффлайн supremacy

  • Пользователь
  • Сообщений: 2257
  • Пол: Мужской
    • Просмотр профиля
Taito маперы 33 и 48
« Ответ #35 : 05 Февраль 2020, 13:03:06 »
Да вроде как ясно написано что речь именно про IRQ acknowledge
Чтобы точно понять что он имел в виду надо его код смотреть, может он решил конкретную проблему этим способом, а причина была в другом.

https://github.com/SourMesen/Mesen/blob/master/Core/TaitoTc0690.h
тут я вижу что значение счётчика не меняется при записи в с000, меняется только reloadvalue, и флаг сбрасывается
но и на запись в с003 сбрасывается. И кроме этого какие-то костыли с задержкой в зависимости от игры 8)

« Последнее редактирование: 05 Февраль 2020, 13:21:02 от supremacy »

Оффлайн dssoft

  • Пользователь
  • Сообщений: 1165
    • Просмотр профиля
Taito маперы 33 и 48
« Ответ #36 : 05 Февраль 2020, 13:09:37 »
Чтобы точно понять что он имел в виду надо его код смотреть, может он решил конкретную проблему этим способом, а причина была в другом.
Сколько я смотрел эмуляторов и прочего верилога, везде прерывания у этого маппера кривые.

Оффлайн MetalliC

  • Технический консультант
  • Сообщений: 9372
  • Пол: Мужской
  • Demul team / MAME developer
    • Просмотр профиля
Taito маперы 33 и 48
« Ответ #37 : 07 Февраль 2020, 17:42:13 »
Сколько я смотрел эмуляторов
на эмуляторы в таких вещах смотреть не стоит, зачастую они не точно эмулируют тайминги (или конвейер и всякие FIFO или еще что подобное) оригинального железа, потому не редко код сделан так чтоб игры нормально работали, а не так как на самом деле пашет маппер или еще что.

ну а доверять стоит лишь фоткам/картинкам с анализаторов логики, типа как есть по ссылке на прошлой странице.

Оффлайн dssoft

  • Пользователь
  • Сообщений: 1165
    • Просмотр профиля
Taito маперы 33 и 48
« Ответ #38 : 08 Февраль 2020, 14:37:45 »
на эмуляторы в таких вещах смотреть не стоит, зачастую они не точно эмулируют тайминги (или конвейер и всякие FIFO или еще что подобное) оригинального железа, потому не редко код сделан так чтоб игры нормально работали, а не так как на самом деле пашет маппер или еще что.

ну а доверять стоит лишь фоткам/картинкам с анализаторов логики, типа как есть по ссылке на прошлой странице.
Проблема в том что в данном случае анализатором снята искусственно созданная ситуация, а не реальная работа. В результате вышло немного не так как на самом деле: сохранять состояние A12 надо не по любому спаду ppu_rd, а только если А13 = 0, иначе начинается интерференция с чтением nametables.
Наверно, человек в теме понял бы это сразу, но мне это стоило нескольких часов отладки.

Ну и поскольку прерывания этого маппера используют 3.5 игры то овчинка просто не стоит выделки, разве что из любви к искусству.

Оффлайн dssoft

  • Пользователь
  • Сообщений: 1165
    • Просмотр профиля
Taito маперы 33 и 48
« Ответ #39 : 11 Февраль 2020, 13:43:37 »
Еще из серии "юмор нашего городка". Когда я отлаживал прерывания VRC4 то проверял их на играх (Crisis Force портит стартовый ролик при малейших проблемах), но потом случайно нашел специально написанный для этого тестовый ром: http://forums.nesdev.com/viewtopic.php?f=3&t=16009
Прошил его и расстроился: судя по тесту оба вида прерываний "запаздывают".
Ну что поделать, посидел, нашел причину, решил что исправлять нет смысла. И только потом решил дочитать тему до конца  :lol:
Krikzz попробовал этот тест на реальном железе VRC4 и получил то же самое "запаздывание" что и у меня.

Вывод: не все то тест что тестирует. А причина, если кому интересно, в том что тест полагает что счетчики тикают по положительному фронту М2, а в реальности это происходит по отрицательному (и прерывание приходит на одну команду позже).

Оффлайн onimush

  • Пользователь
  • Сообщений: 467
    • Просмотр профиля
Taito маперы 33 и 48
« Ответ #40 : 02 Апрель 2020, 22:52:04 »
Слушайте, а мапперы 33 и 80 же вроде совсем разные?

Одна и та же игра на TAITO-TC0190FMC и TAITO-X1-005 , crc ромов совпадает.

http://bootgod.dyndns.org:7777/profile.php?id=1764
http://bootgod.dyndns.org:7777/profile.php?id=1554

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5002
    • Просмотр профиля
Taito маперы 33 и 48
« Ответ #41 : 03 Апрель 2020, 00:16:42 »
Одна и та же игра на TAITO-TC0190FMC и TAITO-X1-005 , crc ромов совпадает.
https://tcrf.net/Bakushou!!_Jinsei_Gekijou_2
Цитата
This game uses another mapper chip "TC0190FMC" (mapper 33) from the same Taito, but all mapper operations are duplicated. Any mapper operation will write to the mapper 33 registers and mapper 80 registers as well. So the game is virtually able to run on any of these MMC chips.