مرحبًا بكم ،
هذه هي أداة CAD الخاصة بي لالتقاط صور لفوتات القناع واستخراج البتات ، بحيث يمكن استرداد محتويات ROM.
اختصارات لوحة المفاتيح في هذه الأداة ليست اختيارية. يرجى قراءة وثائق واجهة المستخدم الرسومية أدناه قبل البدء في الاستكشاف.
إذا وجدت هذه الأداة مفيدة ، فيرجى شراء نسخة من كتابي على مآثر متحكم لنفسك أو طالب ذكي.
-travis Goodspeed

يعلمك GBROM-TUTORIOR كيفية البدء بصور لقناع GameBoy's Mask وتعمل في طريقك إلى صورة دقيقة من ROM.
يحمل MYK82 ROM مكتملة من ROM من رقاقة MYK82 في بطاقة Fortezza. هذا هو خليفة رقاقة Clipper ، والمستودع لا يتضمن فقط جميع أجزاء ROM ولكن أيضًا يعيد إعادة تصحيح الخطأ.
Wersi-SLM2-51173 هو Zilog Z8 ROM من وحدة تصنيع الموسيقى.
master - تحسينات الأداء من خلال تجنب نسخ عميقة في القوائم. يستخدم عدد البتات المناسبة في شريط الحالة وشريط الحالة الآن خط عرض ثابت.
2024-08-18-يستخدم خيار Solver-Set Gatorom الآن أسماء الوصفية الوصفية. يمكن لـ GUI الآن تصدير مجموعة من النتائج التي تم حلها مع الملف/التصدير/solversetbytes. مستطيل اختيار أوضح. ستقوم R و C الآن برسم نوع السطر الصحيح عندما يربكها المستخدم. ^H الآن يضع الوضع المنزلي. تعمل مفاتيح التكبير والحركة الآن في العرض الثاني. يتم الآن إعدام الخطوط المكررة تمامًا أثناء DRC بواسطة مفتاح V يتم الآن تخزين الصفوف والأعمدة كقوائم مصنفة بدلاً من مجموعات. الصفوف والأعمدة هي الآن بترتيب ثابت في تصدير الملف. يعزز الأداء في وضع العلامات بت ، وعلامة بت الخلفية والمحاذاة. عالمي ثنائي لماكوس. يعمل RomalignerTilting بشكل أفضل للتصميمات مع وجود فجوة بين البنوك. لم تعد البتات خارج الرؤية مرسومة أثناء السحب ، مما يؤدي إلى ضبط مجموعات من الخطوط الطويلة.
2024-07-14-يحدد التعطل عند حذف عنصر تم اختياره مزدوجًا. حذف وحذف المسافة الخلفية الآن حذف كائنات مثل D . تفكك متعددة. يتم الآن تحديث التشفير مع تغيير عتبات فك التشفير.
2024-06-23-حل القاعدة يارا. تحسينات الاستقرار. تحديث Crosshairs إلى زوايا الخطوط المحددة. يكرر المساحة الآن السطر الأخير ، سواء كان صفًا أو عمودًا. يمكن تحديد عناصر متعددة ، وتكرار+D تكرارها. حدد مع التحول لإضافة المزيد من الخطوط أو CTRL (CMD على MACOS) لإزالة الخطوط. يؤدي السحب الصحيح إلى تحريك خطوط متعددة ، ومعاينة البتات ذات الصلة فقط. يمكن اختيار ألوان التقاطع والاختيار الآن. الخلفية لم تعد مبلطة عند التكبير.
2024-05-19-يتم الآن تطهير انتهاكات جمهورية الكونغو الديمقراطية عندما يتم فرض البتات. تصدير الرسم البياني للتخطيط لتوزيعات الألوان في gnuplot. دعم وايلاند. كلمات صريحة الدعم في CLI و GUI و Solver و Decoders الأساسية. مجموعات Solver ، تصدير جميع الحلول المحتملة كملفات ثنائية. تم إهمال المحاذاة غير الموثوقة. SOLVER واجهة المستخدم الرسومية. Disassembler يدعو إلى Unidasm Mame.
2024-01-28-التراجع وإعادة. حوار سلاسل. مفتاح backslash لرؤية الطبقة. خوارزمية محاذاة موثوقة. إغلاق النافذة الرئيسية يغلق التطبيق.
2024-01-01-إصلاح خطأ الحافلة في وحدة فك ترميز Z8 عند حل الأحجام الفردية. وضع المطول في Gatorom CLI. MODE squeeze-lr الآن في وحدة فك ترميز واجهة المستخدم الرسومية. تحرير عنصر القائمة لمسح جميع إصلاحات بت. سوف تختار E انتهاك جمهورية الكونغو الديمقراطية التالية. الصور الرأسية تماما لم تعد كسر خوارزمية المحاذاة.
2023-12-07-تسليط الضوء على الاختيار. تعداد الصف/العمود في شريط الحالة. ASCII SOLVER. يعمل على إصلاح حوادث متعددة في Solver من أحجام ROM محرجة. فك تشفير Gatorom في واجهة المستخدم الرسومية. إزالة وحدة فك التشفير الزائدة. عارض السداسي وتسليط الضوء على البايتات المختارة. أصبح Gatorom CLI الآن صارمًا جدًا حول الخروج من الوصول غير القانوني. Zilog Z8 ROM دعم.
2023-09-13-خيار CLI لتعطيل OpenGL. دعم الطباعة. يعمل Windows Build.
2023-08-06-OpenGL هو الآن وظيفي وافتراضي. شملت gatorom لفك تشفير بت.
2023-07-20-دعم العرض الثانوي. أخذ عينات طويلة. إصلاحات تعطل عند ضرب V بعد حذف خط.
2023-06-17-تمت إضافة MacOS على X86_64 و ARM64.
2023-05-30-إصدار Windows الأول.
تعمل هذه الأداة في Windows و Linux و FreeBSD و MacOS ، باستخدام QT6 مع امتداد QTCharts.
بناء الأداة أسهل من CLI. في ديبيان بولسي (11.x) ،
% sudo apt install make gcc g++ cmake git qt6-base-dev libqt6charts6-dev
qt6-translations-l10n linguist-qt6 qt6-l10n-tools qt6-tools-* qt6-image-formats-plugins
% git clone https://github.com/travisgoodspeed/maskromtool/
...
% cd maskromtool
% mkdir build; cd build
% cmake ..
% make -j 8 && sudo make install
في Windows و MacOS ، استخدم QT لمثبت المصدر المفتوح ، مع التأكد من تضمين المخططات وتنسيقات الصور. ثم افتح CMakeLists.txt كمشروع. سوف Ctrl+B بعد ذلك تجميع maskromtool . إذا كانت لديك مشكلة في الاستيراد ، مثل اختيار تثبيت QT الخاطئ ، حذف CMakeLists.txt.user وأعد فتح المشروع للمحاولة مرة أخرى.
من أجل راحة مستخدمي Windows و MacOS ، قدمنا أيضًا بعض الإصدارات المسبقة.
استخدم أولاً الملف/فتح ROM لفتح صورة ROM كصورة. حاول استخدام تنسيقات غير مضغوطة ، ولكن احذر من أن MacOS لا تحب ملفات TIFF.
عقد مفتاح التحكم (أمر على MacOS) أثناء تدحرج عجلة الماوس سيقوم بالتكبير والخروج. يمكنك أيضًا قرصة Zoom على وسادة المسار. سوف يتم سحب الزر الأوسط ، أو التمرير بأصابع اثنين كما يحب نظام التشغيل الخاص بك.
من خلال الاتفاقية التعسفية ، يجب أن تكون البتات في أعمدة طويلة ذات صفوف أقصر. إذا كانت خطوط فك التشفير مرئية ، فيجب أن تكون في الجزء العلوي من الصورة. لا تتردد في تصويرها في اتجاه واحد ، ثم تدويرها للتمييز.
عند حفظ مشروعك ، سيتم تمديد اسم ملف الصورة مع .json . يجب أن يكون ملف JSON المفرز والمسنوق مناسبًا للاستخدام في التحكم في الإصدار ، مثل مستودعات GIT.
ثم توفر أزرار لوحة المفاتيح معظم مدخلاتك. بالنسبة لخطوط الرسم ، انقر أولاً إلى الاختيار كموضع بدء ، ثم اضغط على المفتاح عندما يكون الماوس فوق الموضع النهائي. سيتم تطبيق حذف عنصر أو تعيين موضعه على الخط الذي تم وضعه مؤخرًا ، ما لم تسحب مربعًا لتحديد سطر.
حدد عنصرًا عن طريق السحب فوقه بنقرة الماوس اليسرى ومشاهدته لتحويل اللون الأخضر. يتم تحديد العنصر الذي تم وضعه مؤخرًا تلقائيًا. تعمل بعض الأوامر على عناصر متعددة محددة ؛ البعض الآخر واحد فقط.
يمكنك حذف خطأ مع D أو ضبط موقعه قليلاً باستخدام S السهم ، أو السحب النقر بزر الماوس الأيمن. أثناء الحركة ، قد تكون أجزاء من الخطوط غير ذات صلة مخفية للأداء ، وسيقوم مفتاح M أو بإصدار زر الماوس الأيمن.
على MacOS ، ^ يعني الأمر بدلاً من Ctrl.
Tab -- Show/Hide bits.
-- Show/Hide rows and columns.
^ -- Show/Hide background.
ALT -- Show/Hide crosshair.
R -- Draw a row from the last left-click position.
SHIFT R -- Repeat the last row.
C -- Draw a column from the last left-click position.
SHIFT C -- Repeat the last column.
SPACE -- Repeat the last row or column.
D -- Delete the selected objects.
SHIFT D -- Duplicate the selected lines.
S -- Set the selected object to the mouse position.
F -- Jump to the selected item.
ARROWS -- Move the selected items.
right-drag -- Move the selected items. (SHIFT or ^)
middle-drag -- Pan the view.
^ wheel -- Zoom.
Q -- Zoom to zero.
A -- Zoom in.
Z -- Zoom out.
H -- Jump to home position.
^H -- Set the home position.
SHIFT F -- Force a bit's value. (Again to flip.)
SHIFT A -- Force a bit's ambiguity. (Again to flip.)
M -- Remark all of the bits.
SHIFT M -- Update hex decoding and disassembly.
V -- Run the Design Rule Checks.
SHIFT V -- Clear the DRC violations.
E -- Jump to next violation.
^Z -- Undo
SHIFT ^Z -- Redo
^S -- Save changes.
عندما تبدأ لأول مرة في وضع علامة على البتات ، لن يعرف البرنامج بعد العتبة بين أحدهم وصفر. يمكنك تكوين هذا باستخدام عتبة View / Choose Bit Threshold .
حتى أفضل البتات لن يتم تمييزها تمامًا ، لذا استخدم SHIFT+F لإجبار قيم البت حيث ترى أن البرنامج خاطئ. SHIFT+A متشابه ، ويمتد إلى حد ما على أنه غامض أو تالف. تحتوي قائمة DRC على فحص قاعدة التصميم التي ستبرز المشكلات في مشروعك ، مثل البتات الضعيفة أو المحاذاة المكسورة.
إذا أصبح وضع العديد من الخطوط مملة ، فحدد مجموعة مع زر الماوس الأيسر وقم بتكرار المجموعة بأكملها باستخدام SHIFT+D . يمكنك بعد ذلك سحبه باستخدام زر الماوس الأيمن إلى الموضع الجديد ، وترك نسخة أخرى في الموضع الأصلي. إذا انخفض الإطار لهذا ، فاستخدم مفتاح TAB لإخفاء جميع البتات مؤقتًا ، مما يسرع إلى حد كبير من نقل العديد من الخطوط في المناطق الكثيفة.
سوف يعدل Crosshairs أنفسهم مع الصف والعمود الذي تم وضعه مؤخرًا. هذا يجب أن يسمح لهم بالإمالة قليلاً لمطابقة واقع صورك.
بعد أن قمت بتمييز البتات وفحص البقعة بأنها دقيقة مع DRC ، قم بتشغيل ملف/تصدير لتفريغها في ASCII لتحليلها مع أدوات أخرى ، مثل Gatorom أو Bitviewer أو Zorrom.
بالإضافة إلى واجهة المستخدم الرسومية ، تحتوي هذه الأداة على واجهة سطر الأوامر التي يمكن أن تكون مفيدة في البرمجة النصية. استخدم مفتاح --help للاطلاع على أحدث المعلمات ، ومفتاح --exit إذا كنت تفضل أن تبقى واجهة المستخدم الرسومية مفتوحة للاستخدام التفاعلي.
forum% maskromtool --help
Usage: maskromtool [options] image json
Mask ROM Tool
Options:
-h, --help Displays help on commandline options.
--help-all Displays help, including generic Qt options.
-v, --version Displays version information.
-V, --verbose Print verbose debugging messages.
--stress Stress test bit marking.
-e, --exit Exit after processing arguments.
--disable-opengl Disable OpenGL.
--enable-opengl Enable OpenGL.
-d, --drc Run default Design Rule Checks.
-D, --DRC Run all Design Rule Checks.
--sampler <Default> Bit Sampling Algorithm.
--diff-ascii <file> Compares against ASCII art, for finding errors.
-a, --export-ascii <file> Export ASCII bits.
-o, --export <file> Export ROM bytes.
--export-histogram <file> Export histogram.
--export-csv <file> Export CSV bits for use in Matlab or Excel.
--export-json <file> Export JSON bit positions.
--export-python <file> Export Python arrays.
--export-photo <file> Export a photograph.
Arguments:
image ROM photograph to open.
json JSON lines to open.
للركض بدون واجهة المستخدم الرسومية ، تمرير -platform offscreen . إذا تعطل البرنامج في وايلاند ، فاجأمل استخدام Xorg عن طريق تمرير -platform xcb .
على Windows ، من المحرج أن يكون لدى تنفيذ واجهة المستخدم الرسومية مع الاحتفاظ بسجل على CLI. نقوم بحل هذا عن طريق إنتاج اثنين من الموظفين التنفيذيين ؛ يرجى استخدام maskromtool.exe لـ GUI و maskromtoolcli.exe لـ CLI.
يلفت وحدة فك تشفير Bit منفصلة gatorom للتنفيذ قابلة للتنفيذ بدون الرسومات. انظر Gatorom للحصول على التفاصيل.
forum% gatorom
Usage: gatorom [options] bitstream
Gato ROM: A Decoder for Mask ROM Bits
Options:
-h, --help Displays help on commandline options.
--help-all Displays help, including generic Qt
options.
-v, --version Displays version information.
-V, --verbose Talk too much.
-w, --wordsize <8> Word size.bits
-r, --rotate <degrees> Rotates the image in multiples of 90
degrees.
--flipx Flips the bits along the X axis.
--flipy Flips the bits along the Y axis.
-i, --invert Inverts the bits.
-o, --output <out.bin> Output file.
--random Randomize a ROM for testing.
--Random Randomize a crazy ROM.
--rawwidth, --seanriddle <width> Width of a raw binary input, in Sean
Riddle's style.
-I, --info Info about input.
-d, --dis <arch> Disassemble.
--print Print with a GUI dialog.
--printpdf <file.pdf> Print to a PDF file.
--decode-tlcs47font Decodes as a TMP47C434N Font.
--decode-z86x1 Decodes as a Zilog Z86x1.
--decode-cols-downl-swap Decodes as a uCOM4 ROM.
--decode-cols-downr Decodes first down then right like a
Gameboy.
--decode-cols-downl Decodes first down then left.
--decode-cols-left Decodes left-to-right.
--decode-cols-right Decodes right-to-left.
--decode-squeeze-lr Decodes even bits from the left, odd bits
from right like in the TMS32C15.
-z, --zorrom Zorrom compatibility mode, with flipx
before rotation.
--leftbank Only the left half of the bits.
--rightbank Only the right half of the bits.
-a, --print-bits Prints ASCII art of the transformed bits.
-A, --print-pretty-bits Prints ASCII art with spaces.
--solve Solves for an unknown format.
--solve-bytes <bytes> Bytes as a hint to the solver.
0:31,1:fe,2:ff
--solve-ascii Look for ASCII strings.
--solve-string <bytes> Byte string as a hint to the solver.
31,fe,ff
--solve-yara <rule> Yara rule file.
--solve-set <prefix> Exports all potential solutions.
Arguments:
bitstream ASCII art of ROM to decode.
لقد صممت واجهة المستخدم الرسومية حول QGraphicsScene . تستخدم كائنات البيانات الأساسية نظام إحداثيات QT ، مع عوامات لدقة أفضل من بكسل.
بعد تحميل صورة ROM ، يضع المستخدم الأعمدة والصفوف على الصورة. يعتبر كل تقاطع العمود والصف قليلاً ، ويحدد عتبة اللون القابلة للتكوين قيمة هذا البت. عندما تكون الصورة خاطئة ، يمكنك أيضًا فرض قيمة معروفة.
بمجرد أن يتم تمييز جميع البتات واختيار العتبة ، سيحدد البرنامج كل ضوئي اللون الأزرق (0) وكل جزء غامق مثل اللون الأحمر (1). ثم يتم محاذاة هذه البتات مع قوائم مرتبطة من الصفوف للتصدير كـ ASCII ، لاستخدامها في أدوات أخرى.
لتحديد الأخطاء ، ستنتقد مجموعة من عمليات فحص قاعدة التصميم (DRC) المشروع المفتوح. في حين أن الواجهة الأساسية هي واجهة المستخدم الرسومية ، فإن CLI متاح أيضًا للبرمجة النصية والاختبار.
في حين قد يتم تمييز بضعة آلاف بت دون خطأ ، فإن المشاريع الكبيرة ستحتاج حتماً إلى إدارة أخطائها.
بداية جيدة تتمثل في استخدام اختبارات جمهورية الكونغو الديمقراطية والتكوين الدقيق لعتبات البتات حتى لا تبقى أي أخطاء واضحة. ثم انتقل إلى المشروع واضغط على مفتاح tab لإظهار وإخفاء التعليقات التوضيحية ، مع التأكد من التعرف على كل بت بشكل صحيح.
عندما لا يكون ذلك كافيًا ، مثل ROMs التي هي عشرات أو مئات الكيلوغرامات ، فإنه يساعد على التعليق على نفس ROM عدة مرات ، ويفضل أن يكون ذلك من صور مختلفة. ستحدث أخطاء بت في التعليق على كل صورة ، بالطبع ، لكنها ستحدث في أماكن مختلفة. يمكنك بعد ذلك استخدام ميزة-- --diff-ascii مقابل إخراج --export-ascii لمقارنة الصور ، والتوفيق بين اختلافاتها حتى توافق جميع ملفات المشروع.
يمكن قراءة معظم ROM ببساطة عن طريق قراءة لون بكسل واحد في مركز بت. بالنسبة لهؤلاء ، ستعمل خوارزمية أخذ العينات Default على ما يرام.

بالنسبة إلى ROMs الانتشار التي تم تأخيرها قليلاً ، فإن مركز البت ليس له لون فريد من نوعه ، ولكنه محاط بخطوط أغمق قليلاً. ستأخذ الخوارزمية Wide أحلك اللون في كل قناة بعد أخذ عينات من حجمها في العرض ، ويقوم Tall بنفس الشيء ولكن عموديًا.

إن التصحيحات والتحسينات في Mask ROM Tool هي موضع ترحيب كبير ، ولكن يرجى عدم عدم إرسال بريد إلكتروني إلى تعقب المشكلات مع طلبات الميزات. يجب تقديم طلبات السحب من خلال صفحة GitHub ، ويجب ألا تتخذ المشروع مع تبعيات على مكتبات الطرف الثالث.
يتم كتابة الرمز بلهجة متحفظة لـ C ++ ، مع الحد الأدنى من الاستخدام للميزات المتقدمة. لقد حاولت التعليق على الرمز وتعريفات الفئة بدقة.
يتم تضمين Gatorom كنظام فك تشفير سطر الأوامر الذي يحل ترتيبات البت. يرجى الاطلاع على ملف readMe الخاص به لوثائق CLI ، خاصة بالنسبة لأساليب المحاليل التي لم يتم دعمها بعد في واجهة المستخدم الرسومية.
بشكل منفصل ، يتم استخدام Gatorom كمكتبة لفك التشفير داخل واجهة المستخدم الرسومية Maskromtool. استخدم تحرير/فك التشفير لتحديد نمط فك التشفير وعرض/hexpreview لمشاهدة فك تشفير البتات المباشرة إلى سداسي عشري.

من وحدة فك الترميز ، يمكنك تسليط الضوء على بايت Hex واستخدام اختيار Hex View/Awayers لتصور البايتات المحددة. هنا نرى الكلمات الثلاث الأولى من MyK82 ROM ، التي تحزم 32 بت في كل موقف. يتوفر التفكيك أيضًا عندما يكون unidasm من Mame في المسار.

يتم دعم محلل النصوص أيضًا ، حيث تصف أقنعة بسيطة أو قواعد YARA البرامج الثابتة المتوقعة. يتم تعداد جميع المباريات ، ومن خلال القفز بينهما ، يمكنك فك الصور التي لا تستخدم سريعًا أو عكس الصف أو المضاعفات الأخرى.

John McMaster's Zorrom هو فك تشفير ممتاز ومصدر إلهام لمكتبة فك التشفير في هذه الأداة.
قد يكون Rompar من آدم لوري أول أداة وضع علامات بتكون مفتوحة من مصادر.
يعد BitRact الخاص بـ Chris Gerlinsky أداة أخرى مفتوحة المصدر لتمييز البتات ، و Bitviewer هي أداة مطابقة له لفك تشفير البتات.
يعد Decode Peter Bosch's PLA أداة وضع علامات قليلاً تستخدم لاستخراج رمز Intel Microcode القديم. شاهد حديثه Hardwear.io من عام 2020 لمزيد من التفاصيل.