| مهندس عكسي: | |
|---|---|
| تم الانتهاء منه: | |
| استقلال الموقف: |
تحقق من الصفحة الرئيسية لمزيد من أرقام التقدم والتقدم التفصيلي حول التمويل الجماعي!
يهدف هذا المشروع إلى إعادة بناء الكود المصدري لألعاب مشروع Touhou الخمس الأولى من قبل Zun Soft (الآن فريق Shanghai Alice ) ، والتي تم إصدارها أصلاً حصريًا لنظام NEC PC-9801.
الألعاب الأصلية المعنية هي:
نظرًا لأن لدينا الثنائيات فقط ، فمن الواضح أننا لا نستطيع أن نعرف كيف أطلق Zun على اسم أي متغيرات ووظائف ، والتي تعلق الكود الأصلي الذي كان محاطًا به. وبالتالي ، يعني الكمال أن الثنائيات التي تم تجميعها من الكود في مستودع Rec98 لا يمكن تمييزها عن بنيات Zun الأصلية ، مما يجعل من المستحيل دحض أن الكود الأصلي لم يكن من الممكن أن يبدو هكذا. يتم الحفاظ على هذه الخاصية لكل ارتكاب GIT على طول الطريق.
بصرف النظر عن زاوية الحفظ والبصيرة العميقة في ميكانيكا الألعاب ، يمكن أن يكون الرمز بمثابة الأساس لأي نوع من أنواع التعديل ، أو أي منفذ إلى منصات غير PC-98 ، التي طورها المجتمع. هذا هو السبب أيضًا في أن قيم REC98 قابلة للقراءة ومفهومة على حل نقي.
هناك العديد من السبب في أن تحقيق قابلية التعديل من خلال إزالة الإلغاء الكامل يبدو أكثر أهمية بالنسبة لألعاب PC-98 ، على عكس إعادة تنفيذ صندوق الأسود على طراز Pytouhou:
منذ أن جلب التمويل الجماعي دفقًا مستمرًا من الدعم ، كان التقدم ثابتًا. تم إكمال Th01 بالكامل في أغسطس 2022 ، والألعاب المتبقية ليست سوى مسألة وقت.
على مر السنين ، أدى هذا المشروع إلى فهم عميق للمترجمين الأصليين وأجهزة PC-98 ، إلى الحد الذي أصبح فيه فك الإلغاء في حد ذاته ميكانيكيًا للغاية. لضمان أن هذا المشروع يظل جديراً بالاهتمام والمثير للاهتمام للعمل عليه ، فقد تحول تركيزه أكثر نحو الوثائق الدقيقة ومراجعة الكود الأصلي لـ Zun. تفاصيل مدونة المشروع جميع النتائج بطريقة قابلة للقراءة بشكل عام ، ويمكن القول أنها أصبحت عامل الجذب الرئيسي ، حيث تحولت إعادة بناء الكود المصدري نفسها تقريبًا إلى نتيجة ثانوية للبحث العميق الأساسي في هذه الألعاب.
بدأ المشروع قابلاً للتطبيق أيضًا. أثناء تطوير بقع اللغة الإنجليزية الثابتة لهذه الألعاب ، حددنا مكتبتين رئيسيتين تستخدم في جميع الألعاب الخمسة ، وحتى وجدنا رمز المصدر. هذه هي:
ZUNSP.COM (يمكن الوصول إليه عبر ZUN.COM -4 ) إصدارًا تم إعادة تسميته من Prodisence Soft's SPRITE16.COM ، وهو برنامج عرض EGC PC-98 ذو الألوان 16 ، الإصدار 0.04 ، والذي تم تجميعه مع Sample Game StormySpace . يشكل Master.lib و C/C ++ وقت التشغيل وحده مبلغًا كبيرًا من الرمز في جميع التنفيذيين. في Th05 ، على سبيل المثال ، فإنها تصل إلى 74 ٪ من جميع الكود في OP.EXE ، و 40 ٪ من جميع الكود في MAIN.EXE . هذا بالفعل الكثير من التعليمات البرمجية التي لا يتعين علينا التعامل معها. سيؤدي تحديد بقية الكود المشترك عبر الألعاب إلى تقليل عبء العمل إلى مبلغ أكثر قبولا.
مع Dosbox-X و Debug Edition من Neko Project II ، لدينا أيضًا محاكسين مفتوحان للمصادر PC-9821 قادرة على تشغيل الألعاب. وقد ساعدت هذه في الإجابة على معظم الأسئلة المتعلقة بالأجهزة ، إلى جانب الكتب القديمة حول تطوير PC-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 جزءًا من برنامج تشغيل Sound PMD بواسطة Kaja ، وبالتالي لا يحتاج إلى تفكيكه أيضًا ؛ نحتاج فقط إلى الحفاظ على الثنائي للسماح بإعادة بناء بتات من Zun.com.
لا يتضمن هذا المشروع أي بيانات أصول من إصدارات PC-98 الأصلية. سيظل تشغيل شركة Executables المترجمة يتطلب نسخة موجودة من الألعاب الأصلية.
▶ master : رمز Zun الأصلي ، بدون تعديل أو مجموعات Bughfixes (أنت هنا!)
debloated : إصدار Rearchitected من رمز Zun الذي يسهل قراءة وتعديل ، وبناء ثنائيات PC-98 أصغر وأسرع. يزيل فقط الانتفاخ والألغام الأرضية. يتم ترك جميع الأخطاء والمراوغات من رمز Zun الأصلي في مكانه. يجب أن تبدأ الموانئ من هذا الفرع ، كما أنها القاعدة الموصى بها للمعدات التي لا تهتم بالتشابه مع الثنائي الأصلي.
anniversary : يأخذ الحشرات debloated ويصلح بالإضافة إلى ذلك ، وتحقيق تجربة ألعاب أكثر سلاسة وخالية من وميض على منصة PC-98 بينما لا تزال تترك المراوغات في مكانها. قد يكون منفذ بدء أفضل للمعدلات والمنافذ.
BossRush
th03_no_gdc_frequency_check : يسمح بتشغيل Th03 مع تعيين ساعة GDC على 5 ميغاهيرتز. تقوم اللعبة الأصلية بفرض 2.5 ميغاهيرتز ، لكنها لا تتطلبها وظيفيًا ، حتى على الأجهزة الحقيقية.
xJeePx : تغييرات رمز لتصحيح الترجمة الإنجليزية لعام 2014 من XJeepx.
th01_critical_fixes : إصلاح اثنين من الأخطاء الحرجة في Th01:
th01_end_pic_optimize : يسرع في صراخ الصورة في قطع TH01 إلى 50 ٪ من وقت التشغيل الأصلي. يعمل بشكل أساسي كمثال على كيفية الاقتراب من رمز الصدمات المثلى الذي يعمل بنظام EGC من Turbo C ++ 4.0J دون كتابة تعليمات ASM واحدة ؛ EGC هي بالتأكيد ليست أفضل أداة لهذه الوظيفة.
th01_orb_debug : يعرض المعلومات التالية في وضع تصحيح Th01:
th01_sariel_fixes : إصلاح ثلاثة مواطن خلل في Th01 Sariel المعركة التي تنتج عن أخطاء منطقية واضحة في الكود الأصلي.
th03_real_hitbox : يقدم تصادم Th03 على كلا حقول اللعب. غير قابل للعب للغاية.
إصلاحات لحادث Th04 المرحلة 5 Yuuka No-EMS:
th04_noems_crash_fix : يزيد من حد الذاكرة المفروضة ذاتيا لـ Th04 MAIN.EXE من خلال المبلغ المناسب فقط لإصلاح هذا التصادم.mem_assign_all : يزيل حدود الذاكرة المفروضة ذاتيا في جميع المواد التنفيذية TH02-TH05 ، بالإضافة إلى إصلاح حوادث أخرى خارج الذاكرة التي قد تحدث أثناء التعديل.الحلول لـ Th04 Kurumi Divide Error Crash:
th04_0_ring_ignoreth04_0_ring_as_single_bulletth04_0_ring_as_cap_bulletsth04_0_ring_as_gameoverالحلول لـ Th04 Stage 4 Marisa Divide Error 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 (نتائج الاستطلاع) بورلاند توربو C ++ 4.0J
كان هذا هو المترجم Zun الذي يستخدم في الأصل ، لذلك هو الوحيد الذي يمكنه تجميع هذا الرمز بشكل حتمي إلى الموظفين التنفيذيين التي تتفاقم قليلاً إلى المصطلحات الأصلية لـ Zun. لم يصنع Borland مطلقًا DOS المتقاطع يستهدف DOS 16 بت يعمل على النوافذ 32 بت ، لذلك يجب تجميع أجزاء C ++ باستخدام برنامج DOS 16 بت.
يستخدم Rec98 أيضًا Turbo C ++ 4.0J لإنشاء الأدوات المخصصة في خط أنابيب البناء الخاص به ، مثل المحول للعفاريت المتشددين. يجب أن يتم تشغيل هذه فقط أصليًا كجزء من عملية الإنشاء ، لذلك قد يبدو أنه من الناحية المنتظمة لتجميعها إلى برامج DOS 16 بت التي تحتاج بعد ذلك إلى محاكاة على أنظمة تشغيل 64 بت. هذا لا يزال منطقيا لعدة أسباب ، على الرغم من:
لذلك ، ليس من المنطقي إضافة التبعية الثقيلة عادة على برنامج التحويل البرمجي C ++ الأصلي.
Borland Turbo Assembler (Tasm) ، الإصدار 5.0 أو الأحدث ، لنوافذ 32 بت ( TASM32.EXE )
لا يتطلب REC98 مجمعًا فقط لرمز اللعبة الذي لم يتم إلغاء تحديده بعد ، ولكن أيضًا بالنسبة لمكتبات Touhou من طرف Touhou ورمز التجميع المكتوب اليدوي الذي لا يدوم إلى Zun. لحسن الحظ ، يمكن استخدام مجمع 32 بت من Borland للرمز 16 بت ويعمل أصلاً على كل من النوافذ 64 بت و 32 بت ، يتفوق على أدوات TASM.EXE و TASMX.EXE 16 بت.
كفائدة جانبية ، يتيح استخدام أداة Windows الأصلية 32 بت أيضًا استخدام أجزاء ASM بحرية أسماء الملفات الطويلة التي لا تحتاج إلى الامتثال لاتفاقية DOS 8.3.
MS-DOS Player (مجمعة)
محاكي خفيف الوزن لتشغيل أدوات سطر الأوامر DOS على النظام الفرعي لـ Windows Console ، يستخدم تلقائيًا عند إنشاء قاعدة كود على أنظمة تشغيل 64 بت. على الرغم من طبيعتها التي تم تجريدها ، إلا أنها لا تزال أبطأ بشكل ملحوظ من Dosbox لأنها تستخدم تفسير Neko Project 21/W Core X86 بدلاً من إعادة التثبيت الديناميكي ، ولكن تكامل وحدة التحكم السلس أكثر من تعويض ذلك.
تم تحسين البنية المجمعة على وجه التحديد للبناء للبناء REC98 ، مما يدير جوهر X86 مخفضًا يحاكي فقط 386 مع عدم وجود FPU أو الترحيل أو العد الدورة. مقارنةً ببناء Takeda Toshiya في المنبع ، فإن هذا البناء يسرع عملية بناء REC98 بنسبة ≈60 ٪ لإعادة البناء الكاملة ، و -80 ٪ لتجميع وربط أكبر وحدة ترجمة وأكبر ثنائي ، و ≈70 ٪ للوحدة الترجمة المتوسطة الحجم والثنائية. كما أنه يحتوي على bugfix المطلوب لتشغيل Turbo C ++ 4.0J في سياق نظام الإنشاء الذي لم يكن متاحًا في عمليات بناء المنبع اعتبارًا من يونيو 2024.
انظر bin/README.md للحصول على ترخيص وبناء المعلومات.
Tup ، لنظام التشغيل Windows (مجمعة)
نظام بناء عاقل ، يستخدم لضمان الحد الأدنى من عمليات إعادة البناء. يوفر تتبعًا مثاليًا للتبعيات عبر حقن التعليمات البرمجية وتوضيح ملف برنامج التحويل البرمجي يفتح syscalls ، مما يسمح له بإضافة جميع ملفات #include D تلقائيًا إلى رسم بياني التبعية. هذا يجعل الأمر متفوقًا على معظم make ، التي تفتقر إلى هذه الميزة الحيوية ، وبالتالي فهي غير ملائمة بطبيعتها لأي لغة برمجة يمكن تخيلها. مع عدم وجود تجريدات لمجموعات محددة ، فإن TUP يتناسب تمامًا مع أدوات Borland القديمة المطلوبة لهذا المشروع.
يتضمن إنشاء Windows 64 بتات مجمعة مجموعة مهمة لتشغيل أدوات الإنشاء المستندة إلى DOS من خلال مشغل MS-DOS والتي لم يتم دمجها في مستودع المنبع اعتبارًا من يونيو 2024.
انظر bin/README.md للحصول على ترخيص وبناء المعلومات.
فقط تشغيل build.bat على أي من منصات البناء المدعومة ؛ إنه يفعل الشيء الصحيح بغض النظر عن نظام التشغيل الذي تقوم بتشغيله. سيتم إحباط العملية مع خطأ إذا كان لا يمكن العثور على أي من الأدوات اللازمة في PATH Windows.
سيتم وضع التنفيذيين النهائيين في binth0? ، باستخدام نفس الأسماء مثل النسخ الأصلية. يتطلب تشغيلها أصول كل لعبة أصلية في نفس الدليل.
في 64 بت x86 ، تستخدم عملية الإنشاء TUP لأقل عمليات إعادة البناء المتوازية ، ولكن يتم محاكاة جميع أدوات الإنشاء المستندة إلى DOS. في 32 بت x86 ، تراجعت عملية الإنشاء على ملف دفعي متسلسل يقوم دائمًا بإنشاء قاعدة الكود بأكملها ، ولكن يتم تشغيل جميع أدوات البناء في الأداء الأصلي.
المستوى 1 : تم اختباره بانتظام ، أفضل دعم مضمون.
المستوى 2 : من المفترض أن يعمل ، ممكنًا لدعمه ، ولكن لم يتم اختباره بانتظام. سيتم إصلاح الأخطاء الحرجة في عملية الإنشاء مجانًا.
المستوى 3 : من المفترض أن يعمل ، ولكن عبء على الحفاظ عليه. تتطلب إصلاحات الأخطاء المتعلقة بالبناء تمويلًا ، ولكن من المحتمل أن يتم قبول Bugfix PRS أيضًا.
المستوى 4 : غير مدعوم بشكل صريح وغير ممكن دون العبث الخطير. سوف تتطلب تمويلًا مخصصًا أو شوكًا ، من غير المرجح أن يتم قبول PRS.
فشل tlink مع Loader error (0000): Unrecognized Error على النوافذ 32 بت ≥vista
سببان معروفان:
حاول تكوين برنامج تشغيل NTVDM DPMI ليتم تحميله في الذاكرة التقليدية بدلاً من الذاكرة العلوية ، عن طريق تحرير %WINDIR%System32autoexec.nt :
REM Install DPMI support
- LH %SystemRoot%system32dosx
+ %SystemRoot%system32dosxيتطلب إعادة التشغيل بعد هذا التحرير ليصبح مفعولها.
(مصدر)
حاول البناء في قذيفة cmd.exe العادية بدلاً من PowerShell أو Bash.
انظر CONTRIBUTING.md .