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

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


Сообщения - stargazer

Страницы: [1] 2 3 4 Далее
1
Только неясно назначение регистра 0xA14404. Возможно, в режиме встроенных игр (/CART = 1) нужно использовать именно его для задания старших адресов :neznayu:

2
Последняя схема правильная :)
Путаница возникла из-за того, что  коде эмулятора размер банка указан как 64кБ. Но по факту младшего бита переменной address (VA0) на слоте нет, так что фактический размер банка 2 раза больше - 128кБ
static void mapper_64k_multi_w(uint32 address)
{
  int i;

  /* 64 x 64k banks */
  for (i = 0; i < 64; i++)
  {
    m68k.memory_map[i].base = &cart.rom[((address + i) & 0x3f) << 16];
  }
}

3
Чтобы не создавать новую тему, спрошу здесь.
Есть плата от Денди классик на процессоре UM6561F-2. 240p test suit выдает вот такую картинку, отсутствуют темно-зеленый и темно-серый цвета :(
Если поиграться номиналами делителя перед THS7314 можно вернуть темно-серый, правда, он будет не совсем серый, а с каким-то фиолетовым оттенком.
Эта какая-то особенность данных чипов или дефект конкретного экземпляра?
307928-0307930-1307932-2

UPD: Вопрос снят, дело было в настройке яркости ТВ на минимуме :facepalm:

4
  Нет,не отключается.
:thumbup: Значит отключается только выход на моторчик, логика не отключается.
иногда, при включении консоли,вибропак тестовой программой не определяется....но работает .
Обидно, что-то я делаю не так :( Работать он и будет, это просто попытка его обнаружить, она ни на что не влияет.
Нет,не отключается.
Что-то у меня закончились идеи :wacko: не может же это быть просто дублированием

5
Керамика - самый худший тип конденсаторов для использования в качестве разделительных и вообще для аудио. Ни в какой более-менее серьезной аудио аппаратуре они не применяются из-за свойств диэлектрика: сильной зависимости емкости от приложенного напряжения (а значит нелинейных искажений) и от наличия микрофонного эффекта. И чем меньше размер конденсатора и больше его емкость тем ситуация хуже.
Все это в гораздо меньшей степени относится к керамическим конденсаторами на основе диэлектрика C0G/NP0 но таких не существует с емкостью в микрофарады.

6
Все-таки в аудио модах mono-выход должен присутствовать. Иначе получается, что происходит урезание изначального функционала. ИМХО, конечно. :neznayu:

7
Фамиклон, Тут явно какая-то ошибка на входе PSG :-\

8
Цитата
А так - скорость нарастания сигнала.
Слишком большая? Т.е. нужно специально брать ОУ похуже, чтобы полоса пропускания была уже  o_0
Цитата
Без активной фильтрации пролезает
Так активные фильтры и строятся на ОУ :neznayu:
Цитата
Из двухканальных (как требуется в схеме выше) доступных недорогих - ne5532, tl072
как сказал binturong_reiko, они все, включая 4558 требуют от -4..+4 = 0..8 вольт питания  :cry:

Но это все теория, а на практике, когда я поставил MegaAmp на свою VA1.8 вместо штатного 3403, я понял, что до этого был звук как из унитаза :D

9
OPA1678 был бы очень неплох на мой взгляд.
Интересно...не знал, что существуют Rail-to-Rail аудио ОУ o_0 Обычно такие позиционируются как инструментальные, для каких-то измерений.

10
Кстати, вот смотрю я на все эти ccamы и megaampы и удивляюсь выбору операционника..  Очень плохой выбор, если честно.
А чем 4558 плох? И какой было бы лучше?

11
Есть несколько заводских плат для MegaAmp, могу поделиться :)

12
Тогда в геистре 0xA14404 задействованы 4 младших бита, а к какие им соответствуют выводы данных не знаю, может D9, D10 :neznayu: Это надо в теме про многоигровки смотреть

13
не совсем понял. 64 кБ у радики. реализован именно этот маппер в таком же виде?
Да. :) Только это его часть, схема, как на картинке может адресовать максимум 16МБ. А тут 64МБ (а возможно, можно и больше флешку поставить)
307560-0

14
а каким либо образом можно понять из полного дампа, как собрана та часть маппера для управления по А130? какой там размер блока выходит?
хотя, в дампе игр меньше 512кБ нет, так что наверное ответ очевиден
Это следует не из дампа, а из схемы маппера - 64кБ. В этом дампе нет игр меньше 512кБ.
именно этот дамп?
Да :)

15
а в коде меню нет обращений по 0xA130xx или и они присутствуют?
Есть. Я их поначалу проглядел :)
Кстати, в ядре GenesisGX есть частичная поддержка таких многоигровок, запускаются игры в пределах первых 4МБ. Это Alien3,After Burner II,Rainbow Islands,Aladdin

16
Скорее всего старая схема:
Да, это оно :)
Похоже, меню универсальное: и для картриджа и для встроенной памяти. Старшие адреса подключены A24 к D7,  A25 к D8, а также за них отвечает регистр по адресу 0xA14404.
Таким образом, адресами A16-A23 можно управлять записью значения 0 по адресам 0xA130xx (/TIME), а адресами A24, A25 записью значений 0000 000x x000 0000 по этим же адресам либо записью значений 0000 0000 0000 00xx в регистр 0xA14404.

17
stargazer, вот, посмотри, это не оно?
Оно  :) Только значения другие.
В той теме много интересной информации есть:
итого, единственный оставшийся вариант который может рулить режимом джойстиков это bit7 регистра 0xA16106
Здесь обращение к этому регистру отсутствует, что логично т.к. это не портативка со специфическим подключением джойстика :)
TCT-6801 и TCT-6803 (остальные надо проверять), консоль не запустила встроенные игры без инициализации регистра 0xA1630C, при активном /CART инициализация не обязательна

Тоже похоже на правду :)
Остальные регистры управляют настройками дисплея (опять же, актуально только для портативок) но, возможно, просто не стали заморачиваться с выпиливанием этого функционала из прошивки, т.к. он ни на что не влияет.

Так что, на все эти регистры можно не обращать внимания, и изучить только те, что управляют старшими адресами (0хA14406,0хA14404).
Полный дамп бы пригодился для этого :)

18
Загрузил в дизассемблер (IDA) и посмотрел. Потом добавил пару строчек для логирования обращений по данным адресам в мою сборку эмулятора GenesisGX и запустил этот ром  :neznayu:
Используются следующие адреса:

При запуске:
0000 => A14406
0000 => A14404
4750 => A14408
0000 => A14404

5000 => A16302
1CF1 => A16304
0112 => A16306

0516 => A16310
0417 => A16312
08C0 => A16314
0547 => A16316
0546 => A16318

90C3 => A16300
9BC3 => A16300

После заставки (splash screen):
чтение (word) <= A14444
0068 => A1630C

При запуске выбранной игры:
0007 => A14406
000x => A14404 (0,3,2,...зависит от выбранной игры)
Последние 2 записи происходят из RAM.

Что находится по адресам A163xx неизвестно, но в коде эмулятора есть диапазон A144хх, и хотя специальной обработки нет, в комментариях написано, что это "Radica".
Возможно стоит поискать техническую информацию об этой штуке: https://segaretro.org/Arcade_Legends_Sega_Mega_Drive

P.S. Ко мне можно на ты :)

19
В TCT-6801 какой-то встроенный маппер  :-\  Меню много пишет по "нестандартным" адресам 0xA14ххх и 0xA16xxx

20
Как то так
:thumbup:
Получается так:
Уровень вибрации
0. 0 (отключено)
1. f=5.5Hz D=27%
2. f=10.8Hz D=52%
3. 1 (постоянное напряжение)
Других вариантов в логах анализатора нет. Значит первый параметр - это длительность. Попробуй такой тест: режим Counted, задать параметр, например 11 и нажать и отпустить кнопку A. Отключится ли вибрация через некоторое время?
Если выключить вибрацию тумблером на джойстике при выключенной консоли и затем включить консоль, функция вибрации будет обнаружена?

21
Вот здесь можно почитать про протокол 6-кнпочного джойстика и сигналы джойстика и исследование сигналов с помощью анализатора https://www.raspberryfield.life/2019/03/25/sega-mega-drive-genesis-6-button-xyz-controller/

Младший байт Id bits считается по методу из SGDK:
SELECT(TH)=1: считываем значение 'a', SELECT(TH)=0 считываем значение 'b', далее по формуле
id = ((a & 8) | (a & 4) ? 8 : 0) |
     ((a & 2) | (a & 1) ? 4 : 0) |
     ((b & 8) | (b & 4) ? 2 : 0) |
     ((b & 2) | (b & 1) ? 1 : 0)

Возможные значения id:
0x00 (0000) - световой пистолет (Menacer)
0x01 (0001) - световой пистолет (Justifier)
0x03 (0011) - мышка
0x07 (0111) - мультитап (Team Player)
0x0D (1101) - джойстик (3-х или 6-и кнопочный)
0x0F (1111) - не подключено

Старший байт Id bits, это 4 младших бита при на 3-ей и 4-ей фазе опроса джойстика (при SELECT(TH)=0)
Из исходников SGDK:
v1 = TH_CONTROL_PHASE(pb);                    /* - 0 s a 0 0 d u - 1 c b r l d u */
val = TH_CONTROL_PHASE(pb);                   /* - 0 s a 0 0 d u - 1 c b r l d u */
v2 = TH_CONTROL_PHASE(pb);                    /* - 0 s a [0 0 0 0] - 1 c b m x y z */
val = TH_CONTROL_PHASE(pb);                   /* - 0 s a [1 1 x x] - 1 c b r l d u */
                                                  /* x should be read as 1 on a 6 button controller but in some case we read 0 so take care of that */
Результаты могут быть нестабильными, но 0F - это обычное значение для 6-и кнопочного джойстика.

bgr, ну так выложил бы все, что у тебя есть, это помогло бы в написании софта для обнаружения вибро ;)

да пофиг мне на вибрацию
Это оффтоп :furious: Создай свою тему про ZT и обсуждай эти вопросы там

22
Да, логический анализатор тоже пойдет, только подключать его к разъему джойстика не имеет смысла, протокол уже известен :)
Интересно посмотреть, что на базе транзистора, какая частота и скважность при разных параметрах вибрации (подключать нужно перед резистором 1к который идет на базу)

23
zykoveddy, Valet2, а можете фото правой части платы прислать? :)

24
Значит что-то не то с настройками программатора. Читаем даташит: ни защищенная OTP область, ни пароль никак не могут предотвратить чтение основного массива данных. Пароль используется только для разблокировки записи.

И да, чудес не бывает, OTP на то и ОТР, что его нельзя стереть :)

25
stargazer, а ты софт не можешь написать, чтобы ромсет прочекать на вибрацию?
Ну, допустим. И кто будет этими проверками заниматься? :-\

26
На флешке не может быть никакой защиты, ты просто плохо ее вставил в панельку :) Кстати, жалко, что не удалось снять дамп, возможно, мапперы можно переключать при старте программно.

27
Цитата
При старте этого теста джой секунды полторы вибрирует.
Вот это непонятно... А потом сам отключается, даже если ничего не нажимать?
Цитата
Идентификатор  вибро джойстика-030D, обычный джой-0F0D,без джойстика-FF0F.
Может наоборот? На экране 0F0D  :wacko:
Цитата
   Parameter, в твоей программе это по сути скорость вибрации, здесь три скорости и ещë "нулевая". То есть параметр 00;10;20 и 30 это "нулевая скорость"-вибрации нет.
01;11;21 и 31  первая скорость
02;12;22 и 32  вторая скорость
03;13;23 и 33 третья скорость
Т.е. младшая цифра - это интенсивность вибрации (0 - нет вибрации). Осталось выяснить, что означает старшая :) Вариантов не много: это может быть либо продолжительность вибрации, либо частота PWM
Цитата
В непрерывном режиме стрелками джоя перебираем параметры и джой соответственно вибрирует. Кнопки A, B, C в этом режиме никак не влияют(может и не должны).
Не должны :)
Цитата
В  счëтном режиме  включение и отключение вибрации происходит по нажатию кнопок      A ,B  и вибрация будет соответствовать цифрам в параметрах.
Цитата
  С кнопкой C почемуто всë сложнее, я успел запутаться :wacko:
В этом режиме, кнопки A,B,C при нажатии записывают значение параметра некоторое время: A - однократно. B - в течение 30 кадров(0.5\0.6 сек), С - в течение 255 кадров (4.25\5.1 сек). Нужно нажать и подождать, отключится ли сама вибрация через некоторое время (если старшее число - это время вибрации)

А осциллографа в хозяйстве нет? Тут подошел бы любой, даже совсем простой, типа DSO :)

28
Цитата
Прошу обратить внимание плата имеет  отличия в разводке с той платой фото которой Valet2 публиковал.
Видимо, было 2 ревизии плат с выводным ТО-92 и smd транзистором

murgatroid_79, Я так понимаю, что флеш картридж имеется :) Сможешь протестировать с помощью моего тестового РОМа?
https://www.emu-land.net/forum/index.php/topic,89513.msg1602886.html#msg1602886

29
Цитата
+5VCC следующий контакт после земли.
Совершенно необязательно. Ориентироваться на цвет проводов, распиновку оригинальных джойстиков нельзя!

Итак, как определить распиновку капли джойстика Sega Mega Drive, "сложный" путь :)

1. Сначала надо определить найти питание "+" и Gnd(общий). Все кнопки замыкаются на общий, так что с землей проблем нет, это полигон на плате :) С плюсом чуть сложнее.
  • Для джойстика с вибрацией "+" подходит к одному из выводов мотора, строго к тому, к которому подключен катод защитного диода. Катод на таких стеклянных корпусах помечается черной полоской. Остается только выяснить с каким проводом он соединен. :)
  • Для обычного джойстика можно сделать так: выставить мультиметр в режим прозвонки диодов, положительный щуп поставить на любую кнопку, а отрицательным пройтись по выходным контактам. Там где будет наименьшее падение напряжения (0.7-0.8Вольт) и есть "+".

2. Понадобятся 7 штук выводных резисторов номиналом несколько килоОм (не обязательно одинаковые). Их нужно нужно припаять одним выводом к "+" а другим к каждому из оставшихся неопознанным выводов. Подаем к найденным в п.1 вводам стабилизированное питание 5В от любого подходящего источника: лабораторника, зарядки USB, ... На всех выводах появится логическая единица (около 5Вольт). По очереди замыкая кнопки крестовины,B,C находим на каком выводе напряжение падает почти до 0.
Оставшийся вывод будет сигнал Select. Далее по картинке можно полностью восстановить распиновку :)

306790-0
1. Up
2. Down
3. Left/GND
4. Right/GND
5. +5V
6. B/A
7. Select
8. GND
9. C/Start

30
Главное правильно определить "+" и землю, мне кажется, это можно сделать по разводке. Остальные контакты можно определить методом научного тыка :)
bgr, чего раскомандовался? :lol:

UPD: Предположительно так (но нужно обязательно проверить мультиметром, есть ли контакт между этими точками)
306558-0

Страницы: [1] 2 3 4 Далее