| Обратно инженер: | |
|---|---|
| Завершен: | |
| Независимость позиции: |
Проверьте домашнюю страницу для получения более подробных номеров прогресса и информации о краудфандинге!
Этот проект направлен на то, чтобы идеально реконструировать исходный код первых пяти игр проекта Touhou от Zun Soft (теперь команда Шанхай Алиса ), которые первоначально были выпущены исключительно для системы NEC PC-9801.
Оригинальные игры, о которых идет речь:
Поскольку у нас есть только двоичные файлы, мы, очевидно, не можем знать, как Зун назвал любые переменные и функции, и какие комментарии были окружены исходный код. Поэтому идеально означает, что двоичные файлы, составленные из кода в репозитории Rec98, неразличимы от исходных сборков Zun, что делает невозможным опровергнуть , что оригинальный код не мог выглядеть так. Это свойство поддерживается для каждого совершения GIT на этом пути.
Помимо угла сохранения и полученного глубокого понимания механики игр, код может затем служить основой для любого типа MOD или любого порта на платформах, не являющихся PC-98, разработанным сообществом. Именно поэтому REC98 значений читаемого и понятного кода над чистым декомпиляцией.
Есть несколько, почему достижение модных модных средств посредством полного декомпиляции, кажется, более ценным для игр PC-98, в отличие от перегруппирования черной коробки в стиле Pytouhou:
С тех пор, как краудфандинг принес непрерывный поток поддержки, прогресс был устойчивым. Декомпиляция Th01 полностью завершена в августе 2022 года, а остальные игры - лишь вопрос времени.
За прошедшие годы этот проект привел к глубокому пониманию оригинальных компиляторов и оборудования для ПК-98 до такой степени, что сама декомпиляция стала довольно механической. Чтобы гарантировать, что этот проект остается заслуживающим внимания для поддержки, так и интересным для работы, его фокус больше сместился в отношении дотошной документации и обзора оригинального кода Zun. В блоге проекта подробно рассказывается о всех выводах более общечитываемым образом и, возможно, стал главной достопримечательностью, причем сама реконструкция исходного кода практически превратилась в побочный продукт основного глубокого исследования этих игр.
Проект начался довольно жизнеспособным. Во время разработки статических английских патчей для этих игр мы определили две основные библиотеки, используемые во всех 5 играх, и даже нашли их исходный код. Это:
ZUNSP.COM TH03 (доступный через ZUN.COM -4 )-это переименная версия Sprite16.com's SPRITE16.COM от Sprite16.com, 16-цветного PC-98, версия 0.04, которая была связана с образцом Game StormySpace . Master.Lib и только время выполнения C/C ++ составляют значительную сумму кода во всех исполняемых файлах. Например, в TH05 они составляют 74% от всего кода в OP.EXE и 40% всего кода в MAIN.EXE . Это уже довольно много кода, с которым нам не нужно иметь дело. Определение остальной части кода, общего в играх, еще больше уменьшит рабочую нагрузку до более приемлемой суммы.
С Dosbox-X и отладчиком Neko Project II, у нас также есть два эмулятора с открытым исходным кодом PC-9821, способных запустить игры. Они помогли ответить на большинство вопросов, связанных с оборудованием, вместе со старыми книгами о разработке ПК-98 и случайных тестах на реальное оборудование.
zunsoft.com , op.exe , reiiden.exe , fuuin.exeongchk.comzuninit.com , zun_res.com , zunsoft.comop.exe , main.exe , maine.exeongchk.comzuninit.comzunsoft.comzunsp.com [-4], res_yume.com [-5]), op.exe , main.exe , mainl.exeongchk.comzuninit.com [-i], res_huma.com [-s], memchk.com [-m]), op.exe , main.exe , maine.exeongchk.comzuninit.com [-i], res_kso.com [-s], gjinit.com [-g], memchk.com [-m]), op.exe , main.exe , maine.exeСкрещиваемые файлы идентичны их версии в предыдущей игре. Ongchk.com является частью звукового драйвера PMD от Kaja, и поэтому не нужно разобрать; Нам нужно только сохранить бинарное изготовление, чтобы позволить битопробранные восстановления Zun.com.
Этот проект не включает никаких данных активов из оригинальных выпусков PC-98. Запуск скомпилированных исполняемых файлов по -прежнему потребует существующей копии оригинальных игр.
▶ master : оригинальный код Zun, без модов или ошибок (вы здесь!)
debloated : Rearchited версия кода Zun, которую легче читать и изменить, и создает меньшие и более быстрые двоичные файлы PC-98. Только удаляет вздутие и мины; Все ошибки и причуды из исходного кода Zun остались на месте. Порты должны начинаться с этой ветви , и это также рекомендуемая база для модов, которые не заботятся о сходстве с исходным бинарным.
anniversary : принимает debloated и дополнительно исправляет ошибки, достигая более плавного и без мерцающего игрового процесса на платформе PC-98, оставляя причудливые причуды. Может быть еще лучшим начальным портом для модов и портов.
BossRush
th03_no_gdc_frequency_check : позволяет запускать TH03 с установленными часами GDC до 5 МГц. Оригинальная игра обеспечивает соблюдение 2,5 МГц, но не требует ее, даже на реальном оборудовании.
xJeePx : изменения кода для патча XJEEPX в 2014 году.
th01_critical_fixes : исправляет две критические ошибки в TH01:
th01_end_pic_optimize : Ускорение изображения Blitting в Cotscenes TH01 до 50% исходного времени выполнения. В основном служит примером того, как приблизиться к оптимальному блейтскому коду с EGC из Turbo C ++ 4.0j без написания единой инструкции ASM; EGC определенно не лучший инструмент для этой работы.
th01_orb_debug : показывает следующую информацию в режиме отладки TH01:
th01_sariel_fixes : Исправляет три глюка Sprite в борьбе TH01 SARIEL, которые возникают в результате четких логических ошибок в исходном коде.
th03_real_hitbox : рендерирует растровое изображение TH03 на обоих PlayFields. Высоко недоступно.
Исправление для TH04 Stage 5-й аварии Yuuka No-EMS:
th04_noems_crash_fix : Увеличивает самообеспеченный предел памяти MAIN.EXE только на правильную сумму, чтобы исправить этот сбой.mem_assign_all : Удаляет лимиты с воображаемыми памятью во всех исполняемых файлах TH02-TH05, дополнительно исправляя другие потенциальные сбои вне мемемьей, которые могут возникнуть во время моддинга.Обходные пути для сбоя ошибки Curumi Divide Curumi:
th04_0_ring_ignoreth04_0_ring_as_single_bulletth04_0_ring_as_cap_bulletsth04_0_ring_as_gameoverОбходные пути для TH04 Stage 4 Marisa Divide Crash:
th04_marisa4_crash_stillth04_marisa4_crash_moveth04_marisa4_crash_warp community_choice_fixes : комбинированная ветвь всех «очевидных» ошибок, которые не влияют на игровой процесс или визуальные эффекты:
th01_critical_fixesth03_no_gdc_frequency_checkth04_noems_crash_fix Кроме того, следующие обходные пути для ошибок Divide Error TH04, выбранные голосованием сообщества:
th04_0_ring_as_single_bullet (результаты опроса)th04_marisa4_crash_still (результаты опроса) Borland Turbo C ++ 4.0J
Это был первоначально использованный компилятор Zun, поэтому он единственный, который может детерминированно собирать этот код с исполняемыми файлами, которые идеально подходят для оригинальных. Борланд никогда не делал кросс-компилятора, нацеленного на 16-битный DOS, который работает на 32-разрядных окнах, поэтому детали C ++ должны быть скомпилированы с использованием 16-битной программы DOS.
REC98 также использует Turbo C ++ 4.0J для создания пользовательских инструментов в своем конвейере сборки, таких как преобразователь для жестких спрайтов. Они должны работать только в рамках процесса сборки, поэтому может показаться контрпродуктивным компилировать их в 16-битные программы DOS, которые затем необходимо эмулировать в 64-битных операционных системах. Это все еще имеет смысл по нескольким причинам, хотя:
Следовательно, не имеет смысла добавлять обычно довольно тяжелую зависимость от нативного компилятора C ++.
Borland Turbo Assembler (TASM), версия 5.0 или позже, для 32-битных Windows ( TASM32.EXE )
Rec98 требует не только ассемблер для кода игры, который еще не был декомпилирован, но и для сторонних библиотек Touhou и собственного рукописного и некомпимозного кода сборки Зуна. К счастью, 32-битный ассемблер Борланда может использоваться для 16-битного кода и накапливается как на 64-битных, так и 32-битных Windows, опередив 16-битные инструменты TASM.EXE и TASMX.EXE .
В качестве побочного преимущества, использование нативного 32-разрядного инструмента Windows также позволяет деталям ASM свободно использовать длинные имена файлов, которые не должны соответствовать соглашению DOS 8.3.
MS-DOS Player (Bundled)
Легкий эмулятор для запуска инструментов командной строки DOS в подсистеме консоли Windows, автоматически используемый при создании кодовой базы в 64-битных операционных системах. Несмотря на урезанный характер, он по-прежнему работает заметно медленнее, чем Dosbox, поскольку он использует интерпретацию Neko Project 21/W Core x86, а не динамический перекомпилятор, но бесшовная консольная интеграция больше, чем компенсирует это.
Сборка в комплекте специально оптимизирована для профиля для строительства REC98, используя уменьшенное ядро x86, которое эмулирует только 386 без FPU, подсчета пейджинга или цикла. По сравнению с настройками Toshiya Toshiya, эта сборка ускоряет процесс сборки REC98 на ≈60% для полной перестройки, ≈80% для составления и связывания крупнейшего перевода и самого большого бинара и ≈70% для блок перевода среднего размера и бинарию. Он также содержит ошибку, необходимый для запуска Turbo C ++ 4.0J в контексте системы сборки, которая не была доступна в начальных сборках по состоянию на июнь 2024 года.
См. bin/README.md для получения лицензии и информации.
Tup , для Windows (в комплекте)
Разменяемая параллельная система сборки, используемая для обеспечения минимальных восстановлений. Обеспечивает идеальное отслеживание зависимостей с помощью инъекции кода и подключить файл компилятора, открывая Syscalls, позволяя ему автоматически добавлять все файлы #include D к графику зависимости от сборки. Это делает его намного превосходящим для большинства make , в которой не хватает этой жизненно важной особенности, и поэтому по своей сути не подходит практически для любого языка программирования. Без абстракций для конкретных компиляторов Tup также идеально подходит для древних инструментов Борланда, необходимых для этого проекта.
64-битная сборка Windows в комплекте включает в себя важную ошибку для работы инструментов сборки на основе DOS через игрока MS-DOS, который не был объединен в репозиторий вверх по течению по состоянию на июнь 2024 года.
См. bin/README.md для получения лицензии и информации.
Просто запустите build.bat на любой из поддерживаемых платформ сборки; Это делает правильную вещь независимо от того, какую операционную систему вы запускаете. Процесс будет прервать ошибку, если какой -либо из необходимых инструментов не может быть найден в PATH Windows.
Окончательные исполняемые файлы будут помещены в binth0? , используя те же имена, что и оригиналы. Запуск их требует оригинальных активов каждой игры в одном и том же каталоге.
На 64-битном x86 процесс сборки использует TUP для минимальных параллельных восстановлений, но все инструменты сборки на основе DOS получают эмулируют. На 32-битном x86 процесс сборки возвращается на последовательный пакетный файл, который всегда строит всю кодовую базу, но все инструменты сборки получают работу на собственной производительности.
Уровень 1 : регулярно протестированные, лучшая поддержка гарантированно.
Уровень 2 : предполагается работать, выполнимо для поддержки, но не регулярно протестировано. Критические ошибки в процессе сборки будут исправлены бесплатно.
Уровень 3 : Предполагается работать, но бремя для поддержания. Исправления для ошибок, связанных с сборкой, потребуют финансирования, но PRS PRS, вероятно, также будет принят.
Уровень 4 : Явно не поддержан и невозможным без серьезного возиться. Потребует выделенного финансирования или вилок, PRS вряд ли будет принята.
TLINK сбой с Loader error (0000): Unrecognized Error на 32-битных Windows ≥vista
Две известные причины:
Попробуйте настроить драйвер NTVDM DPMI, который будет загружен в обычную память, а не в верхнюю память, редактируя %WINDIR%System32autoexec.nt :
REM Install DPMI support
- LH %SystemRoot%system32dosx
+ %SystemRoot%system32dosxТребует перезагрузки после того, как это редактирование вступит в силу.
(Источник)
Попробуйте строить в обычной оболочке cmd.exe вместо PowerShell или Bash.
См. CONTRIBUTING.md .