مرحبًا هذه وحدة تحكم ألعاب قديمة تعتمد على Raspberry Pi. في خرطوشة من وحدة تحكم لعبة NES. يمكن استخدام شاشة متكاملة للعبة. عند إخراج الفيديو عبر HDMI ، فإنه يعرض صورة غلاف اللعبة ، بالإضافة إلى درجة الحرارة الأساسية ، انظر الصورة. أقترح القليل من nastalgit وقرأت عن تجميع وتكوين مثل هذا الجهاز. الحذر ، ثم الكثير من حركة المرور والصور.
الحنين
في مرحلة الطفولة ، نحن ، الذين تزيد أعمارهم عن 25-35 ، أحببنا لعب أجهزة التحكم. ثم لم تكن هناك كلمة جديدة لوحدة التحكم ، لذلك سأطلق عليها ذلك. بدأ معرفتي بوحدات التحكم مع Dandy (NES clone). إن Super Mario Bros و Contra و Ducktales و Battletoads ليست سوى
بعض النجاحات
في ذلك الوقت. ثم كانت الساحة بأكملها ستلعب مع صديقي Sega (Sega Mega Drive) ، في ضربات مثل Sonic و Ultimate Mortal Combat 3 و Contra Hard Corps
والمزيد . وعندما خرجت Play Station ، يجب أن أقول ، إنها لم تصل إلينا على الفور ، تسببت سلسلة Resident Evil في بعض البهجة المخيفة حقًا.
ساعدتني هذه الصورة في التخلص من دموع الحنين. يجب أن أقول ، أنا لست أول من توصل إلى Raspberry Pi في خرطوشة NES. نعم ، هذا ليس جهازي. وهذه الخرطوشة مثالية تقريبًا لهذه الأغراض ، فهي صغيرة وجميلة. وفي الداخل هناك مساحة كبيرة. احكم بنفسك.
داخل Raspberry Pi Zero ، ومحور USB ، وزوج من أسلاك التمديد. يتم وضع جميع العصي على الغراء تذوب الساخنة.
التجمع
كنت أرغب في جمع شيء ما أو ما شابه. تم اختيار نفس الخرطوشة من NES. الخيارات الأخرى إما صغيرة جدًا أو لا تبدو جيدة جدًا. كان Raspberry Pi 3B القلب الناري للسيارة الرجعية. تم أيضًا شراء موصلات USB مع دبابيس لحام ملائمة على Ali. هذا كل شيء.
أوه نعم ، سوف تكرر هذا المشروع ، لا تأخذ خراطيش ضرب. هناك القليل منهم. خذ شيئًا أكثر شيوعًا أو أقل شهرة. هناك أيضًا خيار لأخذ خرطوشة مع علي ، لكن الأصلي ، يسخن الروح. إصداري 1986.
ستحتاج أيضًا إلى مفك براغي خاص إذا كانت الخرطوشة
مثبتة بثلاثة مسامير. هناك أيضًا خيارات خرطوشة مبكرة مع خمسة براغي ؛ وهي غير مفككة بمفك مسطح عادي. لدي واحد فقط.
يتم قطع جميع الأجزاء المتداخلة ونشرها من الخرطوشة بسكين مكتب وشفرة منشار المنشار.
تم لحام الموصلات البارزة في Raspberry Pi. يقول الخبراء أنه يمكنك الاستغناء عن محطة لحام ، إذا قمت أولاً بتفكيك الموصلات بعناية بقطع الأسلاك ، ثم لحام ساق واحدة في كل مرة. جميع لصقها على تذوب الساخنة. بين موصلات USB وتوت العليق وضعت عازل مصنوع من البلاستيك غير المستهلكة. لا تنس توصيل GND Raspberry Pi وجسم موصل USB (غير موضح في الصورة أعلاه). خلاف ذلك ، لن تعمل بعض عصا التحكم.
تم تثبيت
Retropie الأخير على
التوت . في البداية كان هناك
Recalbox ، لكنني رفضته ، لأنه لا يدعم اهتزاز عصا التحكم على Playstation 1. ولكن يجب أن أقول ، Recalbox أكثر ملاءمة من حيث ما يعمل خارج الصندوق ولا تحتاج إلى تكوين أي شيء. في Retropie مجموعة من الإعدادات ، يمكنك تخصيص ما لا نهاية. هذا ما أعجبني.
إليك ما حدث. ترتبط أي أعواد تحكم مع xinput.
الشاشة
الشهية تأتي مع الأكل. ماذا عن تضمين الشاشة في الخرطوشة؟ لتشغيل أو عرض صورة غلاف اللعبة.
أمر مثل هذه الشاشة . هذه شاشة 800 * 480 3.5 بوصة متوازية DPI تستخدم تقريبا كل GPIO Raspberry Pi. يعمل لي في وضع 120 هرتز (ولكن العرض لا يزال عند 60 هرتز) ، والاستجابة فورية. السلبية الوحيدة هي مصفوفة 6 بت. فقط 262،144 لونًا. على الرغم من ذلك ، بشكل عام ، هذا ليس ملحوظًا بشكل خاص ، احكم بنفسك.
لقطة شاشة من لعبة Comix Zone (قابلة للنقر)
تم لحام جميع الأرجل من الشاشة و Raspberry Pi. تم لحام الشاشة بواسطة كبلين من كابل IDE قديم ممزق. يتم تثبيت الرهون العقارية 5 مم تحت الشاشة ، ولا تلمس الجدار السفلي للخرطوشة. يتم لصق شريط عازل حول محيط الشاشة بحيث لا توجد ومضات جانبية. يتم لصق كل شيء على الغراء الساخن. على الغطاء العلوي ، قمت بقص نافذة ولصق زجاج بسماكة 2 مم.
لبدء عرض الصور على هذه الشاشة ، تحتاج إلى إصلاح التكوين
/boot/config.txt . أوصي بـ
WinSCP لمالكي Windows ، الذين ، عند الاتصال بـ Raspberry Pi عبر SSH ، يقدمون عرض الملفات كما هو الحال في Total Commander. مريح للغاية. خاصة إذا قمت بتشغيله في وضع
shell sudo su - ، والذي يتيح الوصول إلى جميع الملفات.
لسوء الحظ ، عند تشغيل شاشة DPI ، لا يعمل إخراج فيديو HDMI. لذلك ، قمت بإنشاء ملفين
التكوين في المجلد
/ boot / config_hdmi.txt والثاني
config_dpi.txt . ضبط ملف config_hdmi.txt الدقة على 1080p60Hz وأزال المسح الزائد. يحتوي
config_dpi.txt على إعدادات DPI للشاشة.
config_dpi.txt# uncomment if you get no picture on HDMI for a default "safe" mode #hdmi_safe=1 disable_overscan=1 # uncomment to force a specific HDMI mode (this will force VGA) #hdmi_group=1 #hdmi_mode=1 # Sound output. Set to 0 or comment for autodetect, 1 for DVI, 2 to force HDMI. #hdmi_drive=2 # Using /etc/modules is deprecated and no longer supported on 4.4 kernel # So manually enable audio dtparam=audio=on config_hdmi_boost=0 # force hdmi while the tv can take time before sending the signal on the hdmi output hdmi_force_hotplug=1 # uncomment for composite PAL #sdtv_mode=2 # uncomment for lirc-rpi #dtoverlay=lirc-rpi #3.5 HD tft screen 800x480 dtoverlay=dpi24 overscan_left=0 overscan_right=0 overscan_top=0 overscan_bottom=0 #Banggood framebuffer_width=800 framebuffer_height=480 dtparam=spi=off dtparam=i2c_arm=off enable_dpi_lcd=1 display_default_lcd=1 dpi_output_format=0x6f015 dpi_group=2 dpi_mode=87 hdmi_timings=480 0 16 16 24 800 0 4 2 2 0 0 0 120 0 46080000 6 display_rotate=3 # if you plug your tv at the same time as your rpi and that the rpi switches from the hdmi or give a low resolution because tv had no enough time to initialize it boot_delay=3 # uncomment if you don't want the rainbow at startup #disable_splash=1 # default CEC name #cec_osd_name=recalbox dtparam=spi=off # Overclock gpu_mem_256=128 gpu_mem_512=256 gpu_mem_1024=256 overscan_scale=1 gpu_mem=256 start_x=0 enable_uart=0 avoid_safe_mode=1 kernel=zImage
config_hdmi.txt # For more options and information see # http://rpf.io/configtxt # Some settings may impact device functionality. See link above for details # uncomment if you get no picture on HDMI for a default "safe" mode #hdmi_safe=1 # uncomment this if your display has a black border of unused pixels visible # and your display can output without overscan disable_overscan=1 # uncomment the following to adjust overscan. Use positive numbers if console # goes off screen, and negative if there is too much border #overscan_left=16 #overscan_right=16 #overscan_top=16 #overscan_bottom=16 # uncomment to force a console size. By default it will be display's size minus # overscan. #framebuffer_width=1280 #framebuffer_height=720 # uncomment if hdmi display is not detected and composite is being output hdmi_force_hotplug=1 # uncomment to force a specific HDMI mode (this will force VGA) hdmi_group=1 #1080p60fps hdmi_mode=16 # uncomment to force a HDMI mode rather than DVI. This can make audio work in # DMT (computer monitor) modes #hdmi_drive=2 # uncomment to increase signal to HDMI, if you have interference, blanking, or # no display #config_hdmi_boost=4 # uncomment for composite PAL #sdtv_mode=2 #uncomment to overclock the arm. 700 MHz is the default. #arm_freq=800 # Uncomment some or all of these to enable the optional hardware interfaces #dtparam=i2c_arm=on #dtparam=i2s=on dtparam=spi=off # Uncomment this to enable the lirc-rpi module #dtoverlay=lirc-rpi # Additional overlays and parameters are documented /boot/overlays/README # Enable audio (loads snd_bcm2835) dtparam=audio=on gpu_mem_256=128 gpu_mem_512=256 gpu_mem_1024=256 overscan_scale=1 gpu_mem=256 start_x=0 enable_uart=0
تبديل التكوينات سيكون لدينا نص تلقائي متاح على الشبكة
\\ 192.168.x.xxx \ configs \ all \ autostart.sh أو في المجلد الموجود على الجهاز /opt/retropie/configs/all/autostart.sh
تمت
كتابة البرنامج النصي
switchscreen.sh أيضًا ، والذي يجب وضعه في
/ home / pi / RetroPie / retropiemenu / . يقوم هذا البرنامج النصي بتبديل التكوينات يدويًا ويمكن الوصول إليه من قائمة إعدادات Retropie الرئيسية. بعد بدء تشغيله ، تحتاج إلى سحب كابل HDMI ، وإلا فسيتم إعادة تشغيل كل شيء تلقائيًا مرة أخرى. لا تنس تسجيل البرنامج النصي
chmod +x /home/pi/RetroPie/retropiemenu/switchscreen.sh
يعرض
Autostart.sh آثار التعليمات البرمجية التي تعطل DPI للشاشة عند تشغيل HDMI. لقد نسخت هذا النص البرمجي على الإنترنت ، لذا فهو لا يعمل على شاشتنا. يمكن الخلط بيننا وبين الترانزستورات لإيقاف قوة الشاشة ، ولكن لماذا ، إذا كنا بحاجة إلى عرض صورة الغلاف للعبة قيد التشغيل حاليًا. تحتاج فقط لمعرفة ما هو DPI.
واجهة العرض الموازية (DPI)
DPI ، كما قيل ، هو واجهة متوازية للشاشات. معلومات عن هذه الواجهة
مرة ومرتين وأخطأت في الحساب . حسنًا ، الآن سيكون هنا باللغة الروسية.
فشلت جميع محاولات تمكين DPI مع أوامر وحدة التحكم أثناء تشغيل HDMI. ربما كان يفعل شيئا خاطئا. تم اعتماد الخطة ب للتنفيذ: عرض الصورة على شاشة صغيرة ، وسحب أرجل GPIO برمجيًا.
يتميز DPI بحقيقة أنه يتم إرسال بكسل واحد إلى الشاشة لكل دورة ساعة لإشارة الساعة. نظرًا لأن لدينا مصفوفة من 6 بت ، فهذه 18 دبابيس لثلاثة ألوان ، وهناك أيضًا تمكين للعرض (يشير إلى تاريخ صالح) ، h_sync (يعين عنوان الخط الأفقي على صفر في وحدة تحكم العرض) ، v_sync (يضبط عنوان الخط الرأسي على صفر في وحدة تحكم العرض ) يحدث التقاط البيانات عند الحافة المتساقطة لإشارة الساعة. هذا معروف إذا قمنا بفك تشفير السطر "dpi_output_format = 0x6f015" من
ملف config_dpi.txt وفقًا لهذه المصطلحات.
dpi_output_format output_format = (dpi_output_format >> 0) & 0xf; rgb_order = (dpi_output_format >> 4) & 0xf; output_enable_mode = (dpi_output_format >> 8) & 0x1; invert_pixel_clock = (dpi_output_format >> 9) & 0x1; hsync_disable = (dpi_output_format >> 12) & 0x1; vsync_disable = (dpi_output_format >> 13) & 0x1; output_enable_disable = (dpi_output_format >> 14) & 0x1; hsync_polarity = (dpi_output_format >> 16) & 0x1; vsync_polarity = (dpi_output_format >> 17) & 0x1; output_enable_polarity = (dpi_output_format >> 18) & 0x1; hsync_phase = (dpi_output_format >> 20) & 0x1; vsync_phase = (dpi_output_format >> 21) & 0x1; output_enable_phase = (dpi_output_format >> 22) & 0x1; output_format: 1: DPI_OUTPUT_FORMAT_9BIT_666 2: DPI_OUTPUT_FORMAT_16BIT_565_CFG1 3: DPI_OUTPUT_FORMAT_16BIT_565_CFG2 4: DPI_OUTPUT_FORMAT_16BIT_565_CFG3 5: DPI_OUTPUT_FORMAT_18BIT_666_CFG1 6: DPI_OUTPUT_FORMAT_18BIT_666_CFG2 7: DPI_OUTPUT_FORMAT_24BIT_888 rgb_order: 1: DPI_RGB_ORDER_RGB 2: DPI_RGB_ORDER_BGR 3: DPI_RGB_ORDER_GRB 4: DPI_RGB_ORDER_BRG output_enable_mode: 0: DPI_OUTPUT_ENABLE_MODE_DATA_VALID 1: DPI_OUTPUT_ENABLE_MODE_COMBINED_SYNCS invert_pixel_clock: 0: RGB Data changes on rising edge and is stable at falling edge 1: RGB Data changes on falling edge and is stable at rising edge. hsync/vsync/output_enable_polarity: 0: default for HDMI mode 1: inverted hsync/vsync/oe phases: 0: DPI_PHASE_POSEDGE 1: DPI_PHASE_NEGEDGE

يظهر تسلسل البتات في الشكل أعلاه. لكل خط يبدأ بـ VSYNC ، هناك دورة كاملة من قياسات خط HSYNC. هذا إطار واحد. الشرفة الخلفية والأمامية هي ما يسمى بادئة الشاشة ، الموجودة في ذاكرة وحدة التحكم ، ولكنها ليست على الشاشة.
الآن فك شفرة السطر "hdmi_timings = 480 0 16 16 24800 0 4 2 2 0 0 0 120 0 46080000 6" من ملف config_dpi.txt الخاص بنا. لا يوجد شيء معقد هنا ، فقط اكتب المعلمات بالترتيب.
تظهر أرجل GPIO المستخدمة في عرض الألوان في هذه الصورة. لدينا الوضع 5. انتبه ، هذه ليست أرجل مرتبة ، وهي تدوين GPIO! ساعة إشارات أخرى - GPIO 0 ، DE - GPIO 1 ، VSYNC - GPIO 2 ، HSYNC - GPIO 3.
تم تثبيت الثعبان بسرعة ، ومكتبة GPIO اللازمة ، وكتابة نص مرحب به ، على الأقل تلوين الشاشة باللون الأزرق. وكان لدي أيضًا تنافر إدراكي عندما لم يظهر Notepad ++ على Windows المسافة البادئة حيث كانوا في نانو ، أثناء القيام بلف علامة التبويب ، بدلاً من المسافات ، عند التفاف الخطوط. بالمناسبة ، الخطيئة VSCode بنفس الطريقة ، كيفية إصلاحها ، لم أجدها.
نص بايثون from gpiozero import LED from time import sleep sleep_time = 0.0 clock = LED(0) de = LED(1) vsync = LED(2) hsync = LED(3) red2 = LED(16) red3 = LED(17) red4 = LED(18) red5 = LED(19) red6 = LED(20) red7 = LED(21) green2 = LED(10) green3 = LED(11) green4 = LED(12) green5 = LED(13) green6 = LED(14) green7 = LED(15) blue2 = LED(4) blue3 = LED(5) blue4 = LED(6) blue5 = LED(7) blue6 = LED(8) blue7 = LED(9) def v_sync(frame): vsync.on() for n in range(frame): clock.on()
بطيء جدا ، بايثون. كانت مفاجأة لي أن تختفي البيكسلات المقدمة بالفعل. على الرغم من أن ما كنت أتوقعه واضح.
تقرر إعادة كتابة كل شيء في C. يعمل بشكل أسرع ، حوالي بضعة إطارات في الثانية. تموجات الشاشة كما هو الحال في شاشات CRT القديمة أو الرادارات. ما تحتاجه. رجعي! تم نشر الرمز على
GitHub .
يتم الوصول إلى GPIO مباشرةً من خلال سجلات BCM2837 SoC. أخذت أمثلة كود
هنا .
بدأ كل شيء ببرنامج صغير للغاية ، ولكن الآن يتم عرض المعالج وتحميل الذاكرة على شكل أشرطة تمرير صغيرة. يتم رسم درجة حرارة المعالج بهذا الخط.
لتشغيل التعليمات البرمجية ، تحتاج إلى نسخ محتويات المستودع إلى المجلد / home / pi / lcd_screen / (من يعرف كيف يكتب المسار المتعلق بالصيغة الثنائية وليس إلى مجلد العمل في C تحت nix؟ لذلك ، حتى الآن فقط إلى هذا المجلد) وتنفيذ الأوامر التالية.
gcc ./lcd_screen/lcd.c -o ./lcd_screen/lcd chmod +x ./lcd_screen/lcd
أو قم بتنزيل الملف الثنائي من الإصدارات على الفور. للبدء ، تحتاج إلى كتابة ما يلي. مطلوب SUDO للوصول إلى GPIO.
sudo ./lcd_screen/lcd path/file.bmp usec_per_frame
عندما يكون "path / file.bmp" هو المسار إلى ملف الصورة ، فإنه يعمل فقط بتنسيق BMP ، "usec_per_frame" هو التأخير بين الإطارات بالميكروثانية ، حتى لا يتم تحميل المعالج عبثا.
نقوم تلقائيًا بإطلاق برنامج LCD الخاص بنا بحيث يعرض الغطاء المطلوب عند تشغيل اللعبة. بالطبع ، تستخدم Retropie مكشطة مدمجة لتحميل الأغطية.
قم بتثبيت محول الصورة. سيتم تحويل جميع التنسيقات إلى bmp التي يدعمها البرنامج. في نفس الوقت ، وتغيير حجمها ، بحيث تكون الصور في وضع ملء الشاشة.
sudo apt-get install imagemagick
في
/ opt / retropie / configs / all / directory ، أنشئ ملفين:
runcommand-onstart.sh و
runcommand-onend.sh . تقوم Retropie تلقائيًا بتنفيذ هذه البرامج النصية عند تحميل / إنهاء أي لعبة. تذكر تعيين chmod + x لكل ملف.
في البرنامج النصي للبدء ، يتم التحقق أولاً من وجود اتصال DPI ، ثم يتم البحث عن صورة ذات تنسيقات jpeg أو png ، ويتم تدويرها إلى الزاوية المطلوبة ، ويتم تغيير حجمها وتحويلها إلى تنسيق bmp ، ثم يبدأ برنامجي بالمعلمات الضرورية.
تبريد
يعتبر Raspberry Pi 3B أقوى من الصفر ، ويحتاج إلى تبريد جيد. خاصة في مثل هذه الحالة المغلقة. مع وجود خافض حرارة صغير مرئي في الصورة ، بعد نصف ساعة من اللعب على أي محاكي ، وصلت درجة الحرارة الأساسية إلى 80 درجة وبدأ الهرولة.
تم طلب مروحة طرد مركزي 40 * 30 * 10 مم ، ولكن حتى وصلت ، حاولت فقط قطع لوحة صغيرة بحجم 80 * 30 مم من الألومنيوم 3 مم. وبحلول ذلك الوقت ، كنت قد قمت بإزالة جميع دبابيس GPIO ، بحيث لم تعد تتداخل مع تركيب اللوحة. بالإضافة إلى ذلك ، قمت أيضًا بقطع قطعة 20 * 10 مم للاتصال بالرقاقة وصنع شطيرة من الأطباق. تجاوز هذا جميع توقعاتي ، بحد أقصى 65 درجة على القلب.
لذلك يبدو في الداخل.
في النهاية ماذا
كيف يتم لعب هذا؟ عظيم! مع صرخات ، ضربات gamepad ، عتاب متبادل. مثل مرة واحدة.
لم يلاحظ أي تأخير أو تأخر.
الشاشة ، بالطبع ، صغيرة ، فقط ثلاث بوصات ونصف. لقد أفسدتنا الهواتف الذكية ذات الخمس بوصات ، ولكن يمكنك اللعب. النص مقروء ، حتى صغير. أفضل HDMI.
يمكنك القدوم إلى صديق ، واللعب ، يسمح الحمل. الملحقات ذات الصلة: الكابلات ، والكابلات ، وعصا التحكم والشحن تشغل مساحة أكبر من وحدة التحكم نفسها.
الصوت
لسوء الحظ ، فإن الصوت القياسي لـ Raspberry Pi يترك الكثير مما هو مرغوب فيه. يستخدم تعديل PWM مع الترشيح السلبي كنظام صوتي. لذلك ، تم شراء USB DAC على PCM2704. أساسا بسبب حجمه.
في الواقع ، لا يوجد ما يكفي من إخراج الصوت عند اللعب على شاشة LCD صغيرة ، لذلك اشتريت أيضًا مكبر للصوت الصغير 3 وات على NS8002 والتقطت مكبر صوت من جهاز لوحي 8 أوم.
كل هذا يناسب شاشة LCD. سيأتي ، سأضع.
ملف Retropie
اكتمل التجميع. فيما يلي بعض إعدادات Retropie الأقل إثارة للاهتمام لقراءة التسلية.
تظليلمعظم وحدات التحكم التي يمكنها محاكاة Raspberry Pi ، تعطي دقة 320 × 240 بكسل. بمعايير اليوم ، هذا صغير جدًا. تحصل جميع الألعاب على وحدات بكسل واضحة على الشاشات الحديثة.
اهتم مبدعو Retroarch ، وهو جزء من Retropie ، بهذه المشكلة وأضافوا الدعم للتظليل. على سبيل المثال ، أنا حقًا أحب
xbr-lv1-noblend.glslp المثبت مسبقًا . يسحب التفاصيل حرفيا من الصورة. انظر أدناه.
لقطة شاشة من لعبة Castlevania: Symphony of the Night ، أنصحك بلعبهالتثبيت تظليل ، انتقل إلى القائمة Retropie ->
محرر التكوين . حدد
تكوين خيارات محاكي libretro الأساسية ، ثم حدد
تكوين الخيارات الافتراضية لجميع محاكيات libretro . ثم قم بتعيين
Video Shader Enable على "true" و
File Shader File على Shader المطلوب. اضبط
Smoth Video على "false" أيضًا ، لأنه
يشوه الصورة فقط. يمكنك حتى اختيار شيء ما مثل تظليل المسح الضوئي الذي ينبعث من عمل تلفزيونات CRT. لكن هذا ليس للجميع.
تقديم تظليل عملية مكلفة إلى حد ما. مع دقة تساوي وأعلى من 720p ، تظهر انحشار ملحوظ جدًا على RPi 3B. لذلك ، في نفس القائمة ، حدد
دقة العرض "800x600". لا تقلق ، إذا قمت بإجراء تغييرات على ملف
/boot/config.txt من قبل ، حيث في هذه المقالة أعلى قليلاً ، فإن دقة الشاشة على كابل HDMI ستكون 1080 بكسل ، لكن المحاكي سيعرض الصورة على 800x600 ويمدها إلى ملء الشاشة. وهو لا يفعل ذلك بشكل سيئ. على الأقل مع جهاز تظليل ، يكون أفضل من بدونه ، والعرض بجودة 1080p غير مفيد ، لأن بيانات الفيديو للعبة لا تزال مرسومة بدقة 320 × 240.
إعدادات جويستيكإذا كان لديك أي لوحة ألعاب xinput (Micro $ oft standard) ، فستفعل ذلك. تم تكوينه في البداية الأولى من Retropie ، أو من خلال زر البدء - تكوين الإدخال. ولكن هناك صداع. بدّل الرجال الأجانب الماكرون ، من أجل عدم الوقوع في دعاوى براءات الاختراع ، الأزرار بـ A و B و X و Y.
إذا كان لديك لوحة ألعاب من xbox أو ما شابه ، فأنت بحاجة إلى تكوينها باستخدام الأزرار المقلوبة ، مثل NES. ثم انتقل إلى Retropie ->
إعداد Retropie ، حدد
التكوين / الأدوات ، ثم
محطة المضاهاة ، وضع "
مبادلة " في
أزرار تبديل A / B في ES . ثم أعد تكوين عصا التحكم.
أيضًا ، لا أحب كيف أدار مطورو Retropie صندوق الأزرار. أين مجموعة الأزرار لالتقاط لقطة شاشة؟ لماذا أحتاج إلى زر إعادة تعيين إذا قمت بالضغط عليه في كل مرة؟ أين أزرار الترجيع وتسريع الوقت؟
لإصلاح ذلك ، تحتاج إلى تعديل الملف باسم عصا التحكم الخاصة بك في
/ opt / retropie / configs / all / retroarch-joypads / . وهو متوفر أيضًا على
\\ 192.168.x.xxx \ configs \ all \ retroarch-joypads \ network. بعد كل تحديث لـ Retropie من خلال أداة التحديث ، يطير ترقيم الارتباط ، لذا لن أقوم بتحميل التكوين بالكامل. سأكتب أنني غيرت هذه الأزرار فقط. يتم تنفيذها عند الضغط عليها في وقت واحد مع مفتاح التشغيل السريع ، وعادة ما يكون هناك زر يحمل شعارًا في منتصف عصا التحكم.
تكوين الزر input_screenshot_btn = "0" input_rewind_btn = "h0left" input_hold_fast_forward_btn = "h0right" input_state_slot_increase_btn = "h0up" input_state_slot_decrease_btn = "h0down"
هنا يتم تعيين زر لقطة الشاشة بدلاً من إعادة التعيين. يتم تكوين التقديم السريع والترجيع (الترجيع) على الأزرار المتقاطعة: للأمام وللخلف. تغير الأزرار المتقاطعة لأعلى ولأسفل فتحة الحفظ.
يجب تمكين الترجيع في التكوين
/opt/retropie/configs/all/retroarch.cfg . فقط لا تقم بتمكين Rewind على محاكي psx ، كل شيء يبدأ في التباطؤ بشكل كبير. يتم تعطيل الترجيع افتراضيًا في تكوين psx.
أريد أيضًا أن أضيف حول Bluetooth. أنا شخصياً لا أحب عصي التحكم اللاسلكية وألعب دائماً بالكابل. المدرسة القديمة حتى الان. لعشاق عصا التحكم اللاسلكية ، تحتاج إلى شراء دونجل Bluetooth وإدخاله في منفذ USB. سيكون أفضل ولن تكون هناك مشاكل. أنا نفسي لم أتحقق ، لكن الناس المطلعين يكتبون.
Xboxdrv
لكن هذا ليس كل شيء في
إعداد Retropie في مدير الحزم ، يمكنك وضع منافذ مختلفة ، على سبيل المثال ، Openttd أو Doom أو حتى محاكي DOS Dosbox. لكنك لن تكون قادرًا على التحكم في عصا التحكم فيها. فقط لوحة مفاتيح وماوس. لإصلاح ذلك ، تحتاج إلى تثبيت برنامج تشغيل xboxdrv في مدير الحزم ، والذي يمكنه محاكاة ضغطات المفاتيح. فقط ضعه من المصدر ، ليست هناك حاجة للقيام بالتشغيل التلقائي ، لا يناسب جميع عصا التحكم.
سنكتب نص التشغيل الخاص بلوحة الألعاب. أضف الأسطر التالية إلى نهاية الملف في
/opt/retropie/configs/all/runcommand-onstart.sh .
هنا $ 1 هو نظامنا المستهدف الذي يبدأ xboxdrv عليه. يمكنك الإضافة عن طريق القياس. خطوط --evdev-absmap --evdev-keymap مسؤولة عن المحاور والأزرار الملزمة لعصا التحكم. البرنامج النصي أعلاه
موفر لوحدة تحكم Xbox One S. لمعرفة أي محور وزر يتوافق مع رقم أو اسم عصا التحكم لديك ، تحتاج إلى كتابة الأمر
evtest في وحدة التحكم. في نفس الوقت ، يمكنك أن ترى أي حدث يتوافق مع عصا التحكم لدينا. لدي هذا / dev / input / event0 الموجود في المعلمة --evdev.
تحاكي خيارات --ui-axismap محور الماوس ، وأزرار لوحة المفاتيح --ui-buttonmap. في هذا المثال ، يكون الزناد هو زر الماوس ، والعصا اليسرى هي الماوس ، والعصا اليمنى هي مفاتيح المؤشر. ابدأ ، حدد - أدخل و esc ، على التوالي. يتم إرفاق أرقام لوحة المفاتيح بالأزرار المتبقية. لسوء الحظ ، لم يكن من الممكن استخدام الصليب تحت أزرار لوحة المفاتيح. لسبب ما ، يرفض عصا التحكم Xbox One S العمل.
يتم لعب إستراتيجيات مثل Theme Hospital و OpenTTD وما إلى ذلك باستخدام هذا التكوين. يتم تشغيل الأسوأ قليلاً في الرماة ، ولكن يمكنك إنشاء نصوص إطلاق مشابهة للرماة في نفس الملف عن طريق تغيير معلمة $ 1 هناك.
لضمان التشغيل العادي لعصا التحكم في مضاهاة ، تحتاج إلى إكمال xboxdrv بعد الخروج من اللعبة. للقيام بذلك ، أضف ما يلي إلى نهاية الملف
/opt/retropie/configs/all/runcommand-onend.sh .
runcommand-onend.sh sudo killall > /dev/null 2>&1 xboxdrv
إذا حدث خطأ أثناء تحديث Retropieذات مرة ، أطلقت تحديث Retropie ، وعند تفريغ النواة ، انقطعت شبكة Wi-Fi المدمجة. تم تمهيد الجهاز ، ولكنه لم يستجب لأية أزرار ، بما في ذلك لوحة المفاتيح المتصلة. لا يوجد SSH ، نظرًا لعدم وجود شبكة Wi-Fi ، فهي لا تستجيب للوحة المفاتيح ، ولا يمكنك الحصول على بطاقة SD ...
لقد لاحظت أن لوحة المفاتيح تعمل في وقت التمهيد. لقد ضغطت على ctrl + c عدة مرات ، ويا وحدة التحكم! ولكن كيف يمكن استعادة Wi-Fi الآن؟ كانت واجهة wlan0 مفقودة من الكلمة على الإطلاق. لم يساعد تشغيل التحديث ، لأنه يسحب الملفات من الإنترنت.
أول شيء في /opt/retropie/configs/all/autostart.sh علق على تشغيل محطة المضاهاة وتم إعادة تشغيله.
بعد إعادة التشغيل ، يتم تحميل وحدة التحكم ، وتعمل لوحة المفاتيح. مزيد من جوجل كيفية إرجاع الشبكة المحلية أعطى هذا. يعيد الأمر تكوين كافة الحزم المثبتة. ساعد. sudo dpkg --configure -a
لجعل Retropie لا تبدو كمحطة Linuxعند تحميل وحدة التحكم ، لا أريد إلقاء نظرة على سجل تمهيد Linux. إنه يفسد الروح الكاملة للبادئات في التسعينات.لإزالة سجل التمهيد لينكسLinux,
/boot/cmdline.txt . .
cmdline.txt dwc_otg.lpm_enable=0 console=tty3 root=PARTUUID=f2d3cb4f-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait loglevel=3 consoleblank=0 plymouth.enable=0 quiet vt.global_cursor_default=0 plymouth.enable=0 plymouth.ignore-serial-consoles splash
, , , .
motd.
nano /etc/motd
.
sudo nano /etc/systemd/system/autologin@.service
ExecStart=-/sbin/agetty --autologin pi --noclear %I $TERM
ExecStart=-/sbin/agetty --skip-login --noclear --noissue --login-options "-f pi" %I $TERM
.
, — splashscreen. , . \\192.168.x.xxx\splashscreens, Retropie ->
SPLASH SCREEN ->
Append Splashscreen to list .
, , .
Retropie runcommand, . .
, ,
.
ما الذي يمكن فعله
يمكنك تحسين ما لا نهاية. دعني أقدم لك بعض الروابط التي يمكن القيام بها. اكتب أشياء أكثر إثارة للاهتمام يمكنك إضافتها. شكرا لكم على اهتمامكم.
إنه يستحق ذلك.