Deja Vu #04
31 марта 1998

Капля припоя - Эмулятор ZX-SPECTRUM v0.20b by LION.

SoundTrack: "FuCK iSn'T A FacT Yet"(A.FER)
__________________________________________


ZX Emulator v0.20b by Lion 17
Rostov-Don, 5.10.97
──────────────────────────────────────────


                  * * *



          Вступительная речь :)


 В  этот версии я попытался сделать эмуля-
цию AY-8910(12), насколько это мне удалось
судить  вам.  При эмуляции AY используется
непосредственный  вывод данных на бластер,
из-за  чего музыка, а особенно шум, тормо-
зит  эмулятор. Как только научусь работать
с  DMA  переделаю  вывод звука. Это должно
ускорить  работу и довольно сильно поднять
качество   звука.  Пожалуйста,  музыканты,
сравните звук с оригинальным AY и напишите
мне ваше мнение и пожелания. Также, если у
кого-нибудь  есть пример работы с DMA заш-
лите  мне  его.  Да, забыл сказать, если у
вас нет звуковой карты, отключите звук AY,
иначе  все  будет  виснуть.  В этой версии
также  появилась возможность загрузки фай-
лов Z80 и SNA. Загрузку файлов формата SNA
48/128k  и  Z80 128k я проверял. Файлы Z80
48k  тоже  должны загружаться, но возможны
ошибки,  так  как у меня небыло таких фай-
лов.  Если  вы обнаружите ошибки, сообщите
мне и пришлите такой файл. Файлы Z80 и SNA
различаются по размеру (у SNA файлов  фик-
сированные  размеры).
 Все  ваши замечания, пожелания и информа-
цию об обнаруженных ошибках отправляйте по
адресу 2:5061/7.27.
 Я буду  рад любой информации. Так же буду
благодарен всем кто предоставит мне инфор-
мацию об устройстве AY-8912(10), ВГ93, Z80
и т.д.
 Немного  о  планах  на  будущее. Редактор
раскладки  клавиатуры,  поддержка  формата
FDI  и Z80, встроенный отладчик, поддержка
физических  дискет  TR-DOS, поддержка заг-
рузки/выгрузки  с  ленты,  порт  принтера,
возможность  переключения частотных харак-
теристик   экрана  под  форматы  различных
компьютеров   (Original,  Pentagon  128  и
т.д.),  графический  интерфейс настройки и
многое другое.

            Клавиши управления

 F1/F2  - Vertical Int Pos
 F3/F4  - Horisontal Int Pos
 F8     - Speed Switch
 F9     - NMI
 F10    - Reset128
 F11    - Reset48
 F12    - Reset TR-DOS/128
 Esc    - Exit to DOS
 LShift - Caps Shift
 RShift - Symbol Shift
 Arrows - Cursor Keys


 Kempston Joystick:
 Delete    - Left
 Page Down - Right
 Home      - Up
 End       - Down
 Ctrl      - Fire


 Kempston Mouse:
 Mouse


            Необходимые файлы


 ZX_Emul.Exe - Эмулятор, собственной
               персоной
 ZX_Emul.Ini - Конфигурационный файл
 Sos.Rom     - ROM ZX-Spectrum 48k
 Dos.Rom     - ROM TR-DOS
 128.Rom     - ROM ZX-Spectrum 128k
 Disk.Trd    - Образ дискеты спектрума

    Конфигурационный файл ZX_Emul.Ini


 При отсутствии конфигурационного файла он
создается  автоматически  с установками по
умолчанию.  В файле  допустимы комментарии
после символа ';' и до конца строки.

 ROM_PATH=""       ;Зарезервировано для
                    интерфейса
 ROM_SOS="Sos.Rom" ;ПЗУ для режима 48k
                    (максимум 63 символа)
 ROM_TRD="Dos.Rom" ;ПЗУ для TR-DOS (Max 63)
 ROM_128="128.Rom" ;ПЗУ  для  режима 128k
                   (Max 63)
 DISK_A="Disk.Trd" ;Образ диска для
                    дисковода A (Max 63)
 DISK_B="Disk.Trd" ;Образ диска для
                    дисковода B (Max 63)
 DISK_C="Disk.Trd" ;Образ диска для
                    дисковода C (Max 63)
 DISK_D="Disk.Trd" ;Образ диска для
                    дисковода D (Max 63)
 Z80_NAME=""       ;Имя снэпшот-файла Z80
                    для загрузки
 INT_LINE=0        ;Номер строки на кото-
                    рой происходит
                    прерывание (0-319)
 INT_POS=9         ;Смещение импульса
                    прерывания от начала
                    строки (0-223)
 AUTO_FIRE=OFF     ;Автофайр для Kempston
                    джойстика (ON/OFF)
 BEEPER=ON         ;Возможность вывода
                    звука через динамик
                    (ON/OFF)
 AY_MUSIC=ON       ;Эмуляция AY-8910(12)
                    (ON/OFF)
 SPEED=REAL        ;Выбор скорости работы
                    эмулятора (REAL/MAX)
 VIDEO_RATE=49HZ   ;Выбор частоты кадров
                    (49HZ/53HZ)
 SOUND_PORT=220    ;Выбор порта звуковой
                    карты
                    (220,240,260,280)
 SOUND_RATE=15Hz   ;Выбор частоты
                    дискретизация звука
                   ;(500HZ,1KHZ,2KHZ,4KHZ,
                    8KHZ,10KHZ,15KHZ,
                    20KHZ,30KHZ,50KHZ)

           Замечания о версиях


 [!] Важные изменения;
 [+] Новые возможности;
 [-] Исправленные ошибки;
 [*] Известные баги и недочеты.

v0.20b


 [-] Исправлена ошибка с адресацией портов
     AY.
 [+] Синхронизация видеоизображения  доде-
     лана окончательно.
 [+] Появилась кнопка NMI - F9.
 [+] Появился  режим  автоматичского  огня
     для Kempston джойстика.
 [+] Добавлены опции отключения звука спи-
     кера и эмуляции AY.
 [!] Эмулятор научился  понимать  снэпшот-
     файлы Z80 и SNA.
 [-] Найден баг со строчным  синхроимпуль-
     сом.
 [+] Добавлена опция выбора скорости рабо-
     ты эмулятора.
 [!] Появился видеорежим с частотой кадров
     53Hz для тех мониторов,которые не ра-
     ботают на 49Hz.
 [!] Появилась полная эмуляция AY-8910(12)
     на Sound Blaster'е.

v0.12b


 [-] Убран баг из-за которого эмулятор ве-
     шался в защищенном режиме.

v0.11b


 [+] Файлы с прошивками теперь имеют  рас-
     ширение ROM (по просьбам трудящихся).
 [-] Убран баг отвечающий за сброс CMOS'а.
 [-] Исправлен глюк из-за которого  на не-
     которых   видеокартах   отсутствовала
     синхронизация изображения,  а на дру-
     гих  не  отображалась  верхняя  часть
     бордюра.
 [-] Исправлена  ошибка связанная с перек-
     лючением цвета бордюра на краю  экра-
     на.
 [-] Исправлена ошибка с отсутствием звука
     при  одновременном   изменении  цвета
     бордюра.
 [!] Эмулятор перестал тормозить при рабо-
     те в TR-DOS.
 [-] Исправлена  ошибка  со  старшим битом
     регистра состояния, из-за которой не-
     которые программы работающие напрямую
     с контроллером дисковода зависали или
     выдавали ошибки.
 [-] Исправлена  ошибка  с командой чтения
     секторов  из-за которой INSULT  вешал
     компьютер.
 [+] Теперь эмулятор работает с 4 дисками.
 [+] Переписана процедура вывода на экран,
     теперь она работает быстрее.
 [!] Появился INI файл.
 [+] Клавиша F8 работает,как переключатель
     REAL/MAX SPEED.

v0.10b


 [!] Полностью  переделан  вывод на экран,
     теперь  работают  эффекты на бордюре,
     мультиколор и с переключением  видео-
     страниц.
 [*] Синхронизация  звука  спикера  просто
     ужасна.

v0.04b


 [!] Наконец-то сделан подсчет тактов  ко-
     манд  и  замедление  до уровня ориги-
     нального спектрума.
 [!] Добавлена эмуляция Kempston Mouse.
 [+] Опять немного оптимизирован код, уве-
     личена скорость.
 [-] Найден и исправлен баг с командой CPI
     который возник из-за совпадения  имен
     макросов.
 [!] Добавлены абсолютно  все  недостающие
     команды процессора Z80.
 [-] Слегка исправлена  эмуляция  Kempston
     Mouse.

v0.03b


 [-] Исправлена  частота строк и кадров на
     15.62KHz и 48.83Hz,так как предыдущие
     частоты были  неправильно  расчитаны.
     Теперь  экран  спектрума   составляет
     448x320 пикселов, что является полным
     частотным аналогом Pentagon'а 128.
 [-] Исправлено положение строчного сигна-
     ла гашения, вызывашего потемнение эк-
     рана на некоторых мониторах.
 [+] Добавлено несколько недокументирован-
     ных команд Z80.
 [!] Добавлена эмуляция Kemston Joystick'а
     на  клавишах  Home,End,Del,PgDn,Ctrl.
 [+] Опять немного оптимизирован код, уве-
     личена скорость.
 [+] Теперь во время работы запрещены пре-
     рывания  таймера, а  показания  часов
     после выхода восстанавливаются по ча-
     сам реального времени.

v0.02b


 [-] Исправлена команда Halt(не сбрасывал-
     ся Halt флаг при Reset'e).
 [-] Дешифрация адресов портов  FE и  7FFD
     стала более 'грубой': теперь  выборка
     порта FE  происходит  при  сброшенном
     бите 0, а порта 7FFD  при  сброшенных
     битах 15 и 1.
 [+] Добавлена  эмуляция  регистров  музы-
     кального сопроцессора.
 [+] Добавлено несколько недокументирован-
     ных команд Z80.
 [+] Значительно  оптимизирован  код,  что
     дало существенное увеличение скорости
     работы.
 [+] Из порта 1F (Kempston Joystick)считы-
     вается 0.

v0.01b


 [!] Первая  бета-версия  обладающая своим
     номером, умеет _только_ читать образы
     TR-DOS дисков (файл disk.trd),поддер-
     живает частоту кадров 50.6Hz и часто-
     ту строк 14.6KHz (что, как потом  вы-
     яснилось, было ошибкой см. v0.03b).
 [*] Мерцание  экрана,  предельные  чатоты
     работы монитора.

            Сведения об авторе


 Владимир Юдин aka Lion17,
 2:5061/7.27, г.Ростов-на-Дону.

              Благодарности


 Медноногову Славе (2:5030/362.4)
за информацию о Z80 и Kempston Mouse,
 Левандину Дмитрию (2:5061/2.71)
за бета-тестирование,
 Михайлову Андрею  (2:5050/16.16)
за информацию о тактах процессора,
 Пяткову Андрею    (2:5000/93.21)
за рекомендации и софт с Enlight'a 96,
 Петрову Роману    (2:5052/7.37)
за информацию о музыкальном процессоре,
 Фрунзе Владимиру  (2:469/32.7)
за предложения и информацию об AY-Mouse,
 Alex Rybinsky
за информацию об эмуляции AY.
 а  также  всем остальным любителям SPECCY
поддержавшим меня.

елый)          ? (SS+C)
/ (серый)          / (SS+V)
* (серый)          * (SS+B)
+ (серый)          + (SS+K)
Backspace          Delete (CS+0)
Page Up            True Video (CS+3)
Page Down          Inv Video (CS+4)
Серые стрелки      лево (CS+5),
                   право (CS+8),
                   вниз (CS+6) и
                   вверх (CS+7)
1-9 расшир.        Kempston джойстик
ESC                Выход
F1                 Помощь по клавиатуре
F2                 Reset 48k
F3                 Reset 128k
F4                 Reset TR-DOS
F5                 Выбор диска для TR-DOS
                   и установка/снятие 
                   защиты записи

                Джойстик.


    При  включении  соответствующих  опций
(панель  диалога  "Управление") аналоговый
джойстик может работать  в  программах ZX-
-Spectrum как Kempston (Kempston Interface
I и II) и (или) как Sinclair(Interface II,
клавиши "6"-"0") джойстики. Проверка нали-
чия и калибровка джойстика происходит  ав-
томатически при запуске эмулятора. В  этот
момент ручка джойстика должна находиться в
центральном положении.
    Эмулятор также имеет поддержку  Kemps-
ton джойстика на клавиатуре(клавиши"1"-"9"
расширенной клавиатуры).

                  Мышь.


    В  эмуляторе  поддерживается мышь. Ин-
терфейс  выбирается  в панели диалога "Уп-
равление" с помощью переключателя "Тип мы-
ши". Также существует возможность установ-
ки  скорости  перемещения  и смены левой и
правой кнопок мыши.

                Скорость.


    Программа  имеет  несколько  возможных
установок  скорости работы:
- Нормальная - скорость близкая к скорости
оригинального Spectrum'ма  (автоматическая
настройка на быстродействие компьютера);
- Максимальная  -  максимальная  скорость,
какая  только возможна на данном компьюте-
ре;
- Ускоренная  -  скорость  на 1/8  быстрее
нормальной;
- Замедленная - скорость на 1/8  медленнее
нормальной;
- Выборочная - скорость  с  использованием
значений параметров, установленных пользо-
вателем.
    В большинстве случаев можно устанавли-
вать  максимальную  скорость:  обычно, чем
быстрее работает программа, тем лучше. При
этом  программы, синхронизированные с кад-
ровыми прерываниями, будут работать как на
оригинальном ZX-Spectrum (если установлена
частота  кадровых прерываний как на ориги-
нале: 50 Hz). Но в некоторых случаях все--
таки  необходима установка скорости, как в
оригинале.
    При  выборе  нормальной  скорости пра-
вильная  установка  скоростных  параметров
будет  произведена не на всех компьютерах.
Если скорость отличается от оригинала нез-
начительно,  то  можно  выбрать ускоренную
или замедленную скорости. Если же скорость
отличается  значительно  или  нужна  более
точная установка, то лучше воспользоваться
выборочной  скоростью. При установке выбо-
рочной скорости Вам нужно ввести три пара-
метра,  от которых будет зависеть скорость
работы  - основной параметр скорости и два
параметра скорости видеопамяти.
    Для  установки  основного параметра на
образе  диска  "SPECTRUM.TRD" присутствует
программа  "SpdMain",  с  помощью  которой
можно  измерить  быстродействие. Результат
работы   этой  программы  на  оригинальном
Spectrum  равен: 410 при запуске из режима
128k и 592 при запуске из режима 48k (зна-
чения  могут меняться при включении разных
версий  ROM, данная проверка производилась
при  стандартных  ROM:  48k 1982 г. и 128k
1986 г.). Основной параметр скорости нужно
установить  так,  чтобы  результаты работы
программы  находились  как  можно  ближе к
этим  значениям. Если при нулевом значении
основного  параметра результаты этой прог-
раммы ниже, чем на оригинальном  ZX-Spect-
rum, то быстродействия  Вашего  компьютера
недостаточно для работы эмулятора в реаль-
ном времени.
    Для  установки параметров скорости ви-
деопамяти   можно  использовать  программу
"SpdScr" с этого же диска. На оригинальном
ZX-Spectrum результаты этой программы оди-
наковы:  44852. Устанавливать основной па-
раметр  скорости по результатам этой прог-
раммы  не рекомендуется, так как для изме-
рения  быстродействия она использует малый
набор команд, а время выполнения команд на
оригинальном  Spectrum  и  на эмуляторе не
всегда  пропорциональны,  поэтому установ-
ленная  скорость может отличаться от сред-
ней.  В  данном  случае параметры скорости
видеопамяти  нужно установить так, чтобы в
результате  программа  выдавала  как можно
более близкие результаты.
    Некоторые программы могут работать не-
корректно,  сбрасываться  или зависать при
большом  отличии  скорости  от   оригинала
(особенно,если эмулятор работает медленнее
оригинала).
    Как  правило,  независимо от установки
скорости  в  эмуляторе,  желательно, чтобы
скорость  работы в TR-DOS была максимальна
(даже  если для работы программы требуется
определенная  скорость,  во время работы с
диском требования к скорости отсутствуют).
Для  этого  включите  опцию  "Максимальная
скорость в TR-DOS".

      Открытая архитектура. Модули.


    Эмулятор имеет возможность подключения
дополнительных  модулей. Это файлы, содер-
жащие подпрограммы, которые будут работать
в  составе  эмулятора. Модули могут выпол-
нять разнообразные функции (например: под-
держка дополнительных устройств, поддержка
других форматов файлов, отладчики, измене-
ние работы процессора и устройств в эмуля-
торе, дополнительные возможности...).
    Для  их подключения используйте панель
диалога "Модули". После подключения модуля
Вы   можете  установить  его  конфигурацию
(Кнопка  "Конфигурация" или двойной щелчок
мыши).
    Все  необходимое  для создания модулей
находится  в  директории ADDITION. В стан-
дарной   поставке  эмулятора  присутствуют
пять дополнительных модулей:
TIMES  -  подсчет  тактов  процессора и по
достижении заданного числа тактов переклю-
чение  в  режим ожидания. Если установлена
опция "Пропуск прерываний", то отмена пре-
рывания, если не достигнуто заданное коли-
чество тактов.
LOG  -  логический протокол работы (расши-
ренный  аналог того, который был в версиях
1.XX данного эмулятора).
MEMPROFI  -  поддержка  расширенной памяти
Profi. 
MAGIC   -   поддержка  кнопки  Magic  (NMI
TR-DOS).
REFRESH  -  обновление экрана. В некоторых
мультизадачных системах на некоторых виде-
окартах происходит некорректное восстанов-
ление  нестандартного видеорежима эмулято-
ра. Данный модуль - поддержка горячей кла-
виши обновления экрана.

       Экран. Кадровые прерывания.


    Видеоадаптер  работает в нестандартном
режиме 256x192 с большим бордюром, который
по  пропорциям экрана близок к экрану ори-
гинального ZX-Spectrum.
    ZX-Spectrum  имеет прерывание, которое
синхронизировано  с кадрами (кадровое пре-
рывание).  В  эмуляторе  предусмотрено три
режима  "генерации"  кадрового  прерывания
(которые  можно  выбрать,  установив соот-
ветствующее  значение  параметра "Источник
прерываний"):
 -  Прерывания  генерируются  таймером.  В
этом режиме прерывания не синхронизированы
с кадрами. Изображения на бордюре выглядят
не так, как на оригинальном ZX-Spectrum, а
также  возможно моргание изображения и по-
теря плавности движения объектов на экране
(например:  спрайтов в играх, букв в бегу-
щей строке) в программах, синхронизирован-
ных с прерываниями. При выборе этого режи-
ма  Вы  можете установить частоту кадровых
прерываний  в Hz с помощью параметра "Час-
тота прерываний" (может принимать значения
от  20 Hz до 100 Hz, по умолчанию - 50 Hz,
как у реального ZX-Spectrum).
 - Прерывания генерируются кадровым преры-
ванием видеоадаптера. В этом режиме преры-
вания  синхронизированы с кадрами. Если Вы
установили этот режим, то Вам надо устано-
вить номер прерывания видеоадаптера (опция
"IRQ  VGA"). Частота прерываний зависит от
частоты кадров. Примечание: не все видеоа-
даптеры  поддерживают кадровое прерывание,
а также прерывание может быть заблокирова-
но в установках BIOS Вашего компьютера.
 - Прерывания  генерируются  при  обратном
ходе  луча по кадру. Этот режим отличается
от  предыдущего  тем, что в нем программно
отслеживается  обратный ход луча по кадру.
В этом режиме эмулятор работает медленнее,
чем в остальных (из-за отслеживания обрат-
ного  хода луча), а также неправильно про-
исходит  настройка на быстродействие. Этот
режим  введен  как альтернативный для тех,
чей  видеоадаптер не поддерживает кадровое
прерывание.  В нем возможен пропуск преры-
вания (во время обратного хода луча эмуля-
тор  может, например, обрабатывать какое--
либо    обращение    к   порту   программы
ZX-Spectrum,  тем  самым пропустить момент
генерации прерывания).

В  программе  предусмотрены  видеорежимы с
частотой  кадров  50, 55, 60 и 75 Hz.
 - 50 Hz. Этот видеорежим близок по часто-
те  к ZX-Spectrum. Данный видеорежим имеет
частоты,  которые  выходят за диапазон до-
пустимых  частот некоторых мониторов VGA и
SVGA.  Такие  мониторы  не будут "держать"
этот  видеорежим. Из-за низкой частоты ре-
жима  на высокочастотных мониторах изобра-
жение сильно "мерцает".
 - 55  Hz.  Промежуточный режим между 50 и
60  Hz.
 - 60 Hz. Видеорежим имеет стандартные для
IBM  частоты  (видеорежим по частотам раз-
верток  эквивалентен режиму 320x240). Дан-
ный видеорежим поддерживается на любом мо-
ниторе VGA.
 - 75 Hz. Видеорежим имеет повышенные час-
тоты.  Примечание.  От  установки  частоты
прерываний  может зависеть скорость выпол-
нения  программ, синхронизированных с пре-
рываниями:  скорость в целом, скорость ре-
акции  на  клавиши,  музыка на музыкальном
синтезаторе, таймер...

        Дополнительные  параметры.
           Особенности работы.

 - Параметр "Длительность прерывания"  оп-
ределяет  количество  команд процессора, в
течение которых активен импульс прерывания
(может  принимать значения от 1 до 100, по
умолчанию  - 1). Опция введена для совмес-
тимости  с оригиналом (некоторые программы
могут проверять значение этого параметра).
 - "Длина  данных  форматирования" - коли-
чество байт данных, которые принимает ВГ93
при команде "Запись дорожки" (может прини-
мать  значения от 1 до 16384, по умолчанию
-  1).  Опция  введена для совместимости с
оригиналом (некоторые программы могут про-
верять   значение  этого  параметра).  Чем
меньше значение этого параметра, тем быст-
рее  работает  форматирование диска в эму-
ляторе.
 - Переключатель  "Режим рестарта"  влияет
на режим, в котором окажется эмулятор пос-
ле запуска кнопкой "Старт" основного меню.
 - Если флажок "Постоянная готовность дис-
ка"  включен, то никакие задержки при эму-
ляции контроллера дисковода не осуществля-
ются.  При следующем обращении после пере-
дачи  вспомогательной команды контроллера,
эта  команда уже выполнена, а на следующее
обращение  после передачи любой другой ко-
манды,  контроллер  готов  к  передаче или
приему данных. Виртуальные дисководы всег-
да "вращаются". В этом режиме эмулятор ра-
ботает  быстрее, но совместимость с ориги-
налом ниже. Опция введена для совместимос-
ти с оригиналом (некоторые программы могут
проверять значение этого параметра).
 - Флажок  "Чтение номера дорожки"  влияет
на первый байт данных (номер дорожки), ко-
торый будет считан из ВГ при команде "Чте-
ние адреса". Если флажок не установлен, то
номер дорожки всегда 1. При таком значении
флажка  не  работают  некоторые программы.
Если  флажок  установлен,  то  при команде
"Чтение адреса" читается номер дорожки, на
которой позиционирована головка дисковода.
При  этом TR-DOS форматирует диски как од-
носторонние.
 - При  включении  опции   "Автосохранение
конфигурации"  эмулятор автоматически сох-
раняет текущую конфигурацию.
 - Некоторые  стандартно   форматированные
дискеты  не  поддаются копированию в файл.
Ошибка при этом возникает на первом секто-
ре  каждой дорожки и связана с недостаточ-
ным  для  IBM AT расстоянием от начала до-
рожки до начала первого сектора. Программа
нормально работает с дисками, отформатиро-
ванными  на IBM специальными форматировщи-
ками для TR-DOS (например, записанные этим
же  эмулятором), а также с дисками, отфор-
матированными  более  корректными формати-
ровщиками   на  Spectrum.  Проблему  можно
устранить и сменой на другую модель диско-
вода  с контроллером (в основном это отно-
сится  к контроллеру дисковода). Может по-
мочь  метод  частичной  заклейки отверстия
синхронизации на дискете: заклейте чем-ни-
будь  непрозрачным приблизительно половину
отверстия,   которое   находится  рядом  с
центральным  отверстием  на  дискете  так,
чтобы луч, который через него светит, пре-
рывался чуть раньше. Этого хватит для чте-
ния некоторых ранее нечитаемых дискет.

              Благодарности.


    Особая  благодарность: Алексею Емелья-
нову (AvE), Андрею Замесову, Сергею Юрину,
Александру Микляеву, а также всем, кто вы-
разил свои пожелания и замечания.




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Премьера рубрики - Speccy - быть или не быть?
Пpoлетаpии всеx стpан - pазъединяйтесь - Действительнo, пoчему мы неoбъединяемся?
Фэнтези - новелла по игре "SAMURAI WARRIORS".

В этот день...   17 августа