TiVi's Game Commander
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
docs
resources
src
.gitignore
LICENSE
README.md
output.json
pom.xml

README.md

TiVi's Game Commander

Проект App

Итак, что готово:

  1. вытаскиваются данные с моби
  2. худо-бедно сличаются с goodmerged

Что нужно сделать:

  • сличать с релизами - так попаданий будет больше (уже на той неделе, как доберусь до работы)
  • добавлять в базу недостающие (например FDS)

Но что ещё лучше - сперва прогнать базу FDS и добавить её в игры NES, но с пометкой (FDS)

Коллизия: как называть Mission Cobra и Sidewinder - моби и gamefaqs жалуют MK, так как он USA, хотя SW вышел раньше. Выбор моби верный - надо давать в качестве визитной игры именно известный вариант

Задача: добавить линки на моби.
Прогресс:

[-] построение БД - пока не закончено, наброски на работе.
[x] получение ссылок на моби - готово
[x] автоматическое сличение - готово
[ ] ручное досвязывание - сделать, пусть даже пока в командной строке
[ ] при ручном связывании позволять добавлять в базу
[ ] сохранять базу моби, чтобы была возможность составлять список синонимов.

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

Проект ConnectH2

План:

  • Научиться разбирать Cowering, No-Intro, TOSEC сборники.
  • Так же группировать по названию (для начала просто по названию)
  • Выяснить какая сборка круче
    [-] Поскольку обе команды выдают данные и в формате ClrMamePro (а No-Intro ещё и XMDB), то есть смысл сегодня научиться понимать оба этих формата.
    [x] ClrMamePro XML - новый, более прогрессивный формат [ ] ClrMamePro DAT - старый формат, но всё ещё иногда встречается [ ] XMDB - необходимо перегнать DTD во что-то более современное, или сразу в XML [ ] Есть ещё Romcenter, Offlinelist и другие, но их реализация пока не в приоритете.
  • Изучить (а может и перевести) соглашения об именованиях.

https://github.com/mnadareski/wizzardRedux/wiki/DAT-File-Formats
http://www.logiqx.com/DatFAQs/CMPro.php
http://forums.no-intro.org/viewtopic.php?f=2&t=669 http://romulus.net63.net/

Текущие сценарии обработки баз данных

Идея такая - по текущим DAT-файлам от разных релизеров, либо по коррекциям образов игр собирать работающие базы данных.

Так как источников много, надо сразу ограничить сферу деятельности:

  1. Игры, упакованные как GoodMerged, либо DAT-файлы, с заполненными parent
  2. Одна игра - один архив
  3. голые ROM'ы
  • Все эти варианты могут быть в Solid Archive

  • Все эти варианты дополнительно могут быть в специализированных каталогах

  • Другие варианты пока не рассматриваются

  • Data Source: Standard ClrMamePro DAT, Parent/Clone ClrMamePro DAT, GoodMerged ROM's, One game - One Archive, Unpacked ROM's

  • Naming Convention Standard: Cowering, No-Intro, TOSEC

  • Additional Feature: Packed in Solid Archive, Grouped By Directory, None

При чтении Media - Naming Convention Standard не важен.

TODO: возможно на перспективу работать и с другими DAT-файлами

Мысли, идеи

Задача на сегодня:

[x] Правильный алгоритм выявления тегов, чтобы корректно обрабатывать круглые скобки внутри квадратных. Надо разбивать хвост регуляркой "\) .*[\(|\[" - регулярку тестировать [x] Ещё одно поле, в котором хранить количество детей (для деревьев) [x] Умная обработка деревьев - если есть дети, то тупо не обрабатывать все автоматически сгенерированные колонки. Так же почистить код

  1. Продвинутая работа с атрибутами и флагами.
  • окно на основе TreeTableView. колонка с количеством детей, чтобы можно было сортировать по ней
  • в верху настройки - чекбоксы флаги/атрибуты, чекбоксы - обработанные, не обработанные
  • дети - названия, в которых встречаются теги
  • каждая запись атрибута: название, тип (string, regex), поля MixedMedia, на которые вляет, операция
  • у каждого парсера препроцессор и постпроцессор. первый занимается удалением ненужных атрибутов и заменами, потом отрабатывает основной цикл, потом постпроцесссор полученные значения приводит к каноническому виду и кладёт.

алгоритм работы парсера:

  1. препроцессор. отвечает за общую замену в названии, а так же за фильтрацию атрибутов/флагов то есть, он может вносить изменения в название релиза, а так же удаляет все атрибуты и флаги, которые следует удалить.
  2. процессор. обрабатывает сначала атрибуты, потом флаги. Берёт каждый атрибут, выполняет над ним операцию, затем скармливает значение нужному полю (или сеттеру).

Ух, нагромоздил :)

16.12.2016

У текущей реализации проекта выявилось несколько слабых мест, а так же несколько сложных узелков, требующих лишней логики.

Ниже будет описано решение создания проектов.

Утверждение. Проприетарный формат данных (JSON), являющийся аналогом ClrMamePro DAT-файлов - та единица, с которой будет вестись работа в проектах.

  1. Все операции по импорту-экспорту из внешних DAT файлов вносятся в отдельную группу операций. Сюда же выносятся функции генерации DAT-файла на основе коллекций игр (ROM'ов).
  2. ConnectH2 принимает только такие DAT-файлы. Никакого импорта из файлов.
  3. Один набор правил - один DAT-файл. В случае NES это: основной (GoodMerged) набор игр, а так же Public Domain, Multigames Collection, Wxn Collection - всего 4 набора правил.
  4. Возможность склеивать DAT-файлы (после должной обработки).
  5. Внедрить именование игра-релиз в Media; Унифицировать названия.
  6. У релизов release могут быть следующие дополнительные данные:
  • игра game (автоматически строятся на базе good-merged-коллекций или продвинутых DAT-файлов). Это готовая game для базы данных + название архива в случае GoodMerge сжатия. Допускается, что это название каталога.
  • группа group (группа в нашем случае это Public Domain), способ группировки некоторых файлов. В зависимости от интерпретации это название архива или каталога.
  • На данный момент при импорте коллекций спрашивать - группировка по игре или по чему-то ещё. Если по игре, то это game, в другом случае - group. В процессе обработки группа может влиять на тип программного обеспечения, жанр, и прочее-прочее. Это уже указывается в фильтрах
  • в далёкой перспективе возможны ещё какие-то дополнительные свойства.
  1. Пока группы хранить в MixedMedia, пока не известно, понадобятся ли они дальше или нет.

Логика работы такая:

  1. Создаются проприетарные DAT-файлы
  2. В новом проекте создаются наборы правил и к каждому подключается свой DAT-файл
  3. Происходит обработка данных в MixedMedia, работа с атрибутами
  4. Слияние наборов правил и фильтрация
  5. Передача данных в БД (game, release, media)
  6. Передача данных в Media и сохранение как проприетарного DAT-файла с целью последующей упаковки файлов или проверки целостности коллекции.

По скринам - есть идея делать их из видео в автоматическом режиме. как - пока не знаю.
Delphi такое может. Искать "delphi нажать в чужом окне"
Дальше надо как-то фильтровать картинки и вручную перебирать

Подумать над автоматическим созданием XMDB. Идея - сжимать файлы попарно и смотреть падение размера. У близких падение должно быть сильным.

Интересные ссылки

Про веб-клиентов - при сканировании периодически стоит менять.
https://techblog.willshouse.com/2012/01/03/most-common-user-agents/

Для тотального хранения данных и картинок есть смысл рассмотреть альтернативные архиваторы. NanoZip, FreeArc, PeaZip,
http://web.archive.org/web/20161006132549/http://nanozip.net/
http://www.squeezechart.com/
http://web.archive.org/web/20160329000208/http://compressionratings.com/app1.html

Для сжатия картинок копать:
https://ru.wikipedia.org/wiki/Pngcrush

Нечёткий поиск по тексту (fuzzy)

https://habrahabr.ru/post/114997/

Markdown. Онлайн редакторы очень даже ничего:

http://dillinger.io/ https://upmath.me/

Документацию пишу в них, они куда удобнее оффлайн редакторов, особенно первый.

http://www.emulab.it/rommanager/datfiles.php http://www.logiqx.com/ - утилиты, про форматы DAT-файлов https://www.waste.org/%7Ewinkles/ROMLister/ http://www.progettosnaps.net/dats/ - DATs http://www.mameguide.info/dfc.html http://cheat.retrogames.com/mame_downloads.htm

http://web.archive.org/web/19961219103533/http://www.xs4all.nl/~delite/ http://cd.textfiles.com/230/EMULATOR/MULTIEMU/MAME/MAME32/