Boshqalar

Xoʻsh, Brick Game oʻyinlarida qanday protsessordan foydalanilgan?

Bu kichik tadqiqotga meni yaqinda Xabrda nashr etilgan va muallif 90-yillardagi mashhur Tetrislarda 4 bitli Holtek HT1130 mikrokontrolleridan foydalanilgan boʻlishi mumkinligini taxmin qilgan maqola undadi. Aftidan, ROM (doimiy xotira) obrazi hanuz olinmagan, shunga mos ravishda bu oʻyinlar qatori uchun emulyator yozilmagan va bu meni juda hayron qoldirdi.

Brick Game Holtek HT1130 asosida qurilgan degan farazning bitta zaif tomoni bor — HT1130ʼning displey drayveri faqat 128 ta segmentni boshqara oladi, odatdagi Brick Gameʼda esa faqat oʻyin maydonining oʻzi 200 (10x20) segmentdan iborat edi. Umuman, Holtek HT1130 haqidagi maʼlumot qayerdan paydo boʻldi? Googleʼda biroz qidirib, asosiy manbani topdim va bu 2015-yildagi maqola boʻlib, unda muallif Brick Gameʼning HT113LAʼda ishlaydigan va klassiklaridan kichikroq oʻyin maydoni bilan farq qiladigan variantlardan biri — Super Brickcal 9 in 1’ga datashit topganini hikoya qilgan. Uning taʼkidlashicha, Holtek HT113LA Holtek HT1130ʼning xususiy variant boʻlib, uning asosida Super Brickcalʼdan tashqari suyuq kristalli displeyga (LCD) ega koʻplab oddiy portativ oʻyinlar ham qurilgan.

Ammo meni Brick Gameʼning hammaga tanish oʻrtasi egri korpusdagi, odatda E harfi va bir nechta raqamlar bilan belgilanadigan, keng tarqalgan versiyalari qiziqtiradi. Masalan, quyidagi fotosuratdagi ES-118 va E-88 kabi:

Tadqiqot obyektlari


Bu almisoqdan qolgan namunalarni qismlarga ajratish uchun maxsus sotib oldim. Sotuvchi tomonidan E-88ʼning nosozligi aytilgan edi, bundan tashqari u Brick Game muxlislarining tor doiralarida eng klassik versiyalardan biri hisoblangani uchun hikoyamni undan boshlayman.

Uning hayoti yengil kechmagan


Soatiga 5 rubl. Bu hazil yoki biron kishi Tetrisni soatbay oʻynash uchun pul toʻlashga rozimi?!

Welcome to Americana


Oʻxoʻ... Kutilmaganda ichkarida oldingi egasining boy ichki dunyosi manzarasi ochiladi. Punk not dead!

Mana, tekstolit ostida meni qiziqtirgan kristall ham koʻrinib turibdi:

Asosiy plata E-88 


Asosiy plata E-88 


Qora rangdagi kompaund tomchisi mikrokontroller kristallini atrof-muhitdan ishonchli himoya qiladi va uni boʻshatish unchalik oson ish emas. Uni azot kislotasida eritish ishonchliroq boʻlar edi, ammo uy sharoitida bunday usullardan foydalanish meni unchalik ruhlantirmaydi. Shuning uchun oddiyroq, ammo kamroq ishonchli boʻlgan termik usul — dekapsulyatsiyani tanladim.

Dekapsulyatsiya

Bu usulning mohiyati quyidagicha —butun tomchini kristall bilan birga tekstolitdan ajratib olamiz, soʻngra uni ochiq olovda qizdiramiz, natijada kompaund moʻrt holatga keladi va uning asosiy qismidan mexanik tarzda xalos boʻlish mumkin. Kristall yuzasidagi kompaund qoldiqlari dixloretan (odatda plastik uchun yelim sifatida sotiladi) bilan olib tashlanadi.

Kompaund bilan qoplangan kremniy kristallining pastki qismi 


Yuqorida aytib oʻtganimdek, bu usul unchalik ham ishonchli emas (bu borada tajribam yoʻq). Afsuski, kompaundni ajratib olish jarayonida kristall yorilib, ikki qismga boʻlinib ketdi. Bundan tashqari, asosiy zarar “muvaffaqiyatli” tarzda ROM (doimiy xotira) sohasiga toʻgʻri keldi, shu sababli bu safar uni oʻqiy olmadim. Xoʻsh, Brick Game E-88ʼning miyasi mana shu (toʻliq aniqlikda):

Brick Game 8 in 1ʼdagi E-88 mikrokontrollerining die-fotosurati


Maskasi 1994-yilda ishlab chiqarilgan kristallning markirovkasi HT-943E5 ekani va Holtek logotipi koʻrinishidagi kichik chip-art darhol koʻzga tashlanadi.

Markirovka va sana


Markirovka va Holtek logotipi


Demak, 90-yillar oʻrtalaridagi klassik Brick Game Holtek mikrokontrollerida ishlashini tasdiqlashimiz mumkin. Faqat aynan qaysi birida ekanini aniqlashimiz kerak.

Tabiiyki, darhol HT-943 haqida Googleʼda maʼlumot qidirdim. Topilgan birinchi narsa 8 bitli HT-948 edi, lekin bu die-fotosuratda koʻrgan narsamizga umuman oʻxshamaydi — 16 kb RMO 4 ga qarshi, 3328 bit RAM (operativ xotira) 640 oʻrniga, LCDʼning boshqariladigan segmentlari soni yana mos kelmaydi. Shuningdek, Super Brickcalʼning 4 bitli ekani ham 4 bitli protsessor bilan ish koʻryapmiz degan fikr uygʻotadi. Umuman olganda, balki tajribaliroq kishi fotosurat orqali AMQning (arifmetik-mantiq qurilmasi) razryadini qiyinchiliksiz aniqlay olar, ammo mening mikroelektronikadan umuman xabarim yoʻq.

Oxir-oqibat, tavakkal qilib 4 bitli Holtek mikrokontrollerlarining topilgan barcha datashitlarini yuklab oldim (yaxshiyamki, ochiq resurslarda ular soni atigi bir necha oʻnlab ekan) va mukammal variant — HT443A0ʼni topdim.

Oʻzingiz oʻylab koʻring: LCD segmentlari (40) va drayverining umumiy chiqishlari (8) soni kristall fotosuratida koʻrish mumkin boʻlganlarga RAMʼdagi 160 nibbl va 80 RAM ham mos keladi. Eng muhimi esa hujjatlarda kristalldagi chiqishlarning pozitsiyalari hamda uning oʻlchami tasvirlangan va bu bizdagi namunaga toʻliq toʻgʻri keladi.

Endi sodda Ken Shirrif sifatida kristallda topgan narsalarimni tavsiflab berishga urinib koʻraman. Yana bir bor eslatib oʻtamanki, men mikroelektronika borasidagi bilimlarim yuzaki va oʻz taxminlarimda xatolarga yoʻl qoʻygan boʻlishim mumkin (mavzuni yaxshi biladigan odamlar sharhlarda xatolarimni koʻrsatsa yaxshi boʻlardi).


ROMʼni batafsil koʻrib chiqamiz:

ROMʼning 1/16 qismi


Tranzistorlar panjarasida ROMʼning alohida bitlarini kodlaydigan bir jinsli boʻlmagan narsalar aniq ajralib turibdi. Oddiy soʻzlar bilan aytganda, gorizontal chiziqni (legirlangan qatlam) vertikal chiziqning pushti qismi kesib oʻtgan joyda (polikremniy qatlami) — 1, yashil qismi kesib oʻtgan joyda esa — 0. Chap tomonda adresning 6 ta katta bit deshifratori koʻrinib turibdi (6 ta kichik bit dekoderi ROMʼning yuqori va pastki qismlari oʻrtasidagi shikastlangan joyda joylashgan hamda fotosuratda koʻrinmaydi). Diqqat bilan qarasangiz, barcha gorizontal chiziqlar yuqori chap burchakda birlashgan — bu yerdan maʼlumotlar shinasiga maʼlum bir adresda joylashgan baytning bir biti oʻtadi. ROMʼning har bir sohasi yuqorida kesilgan (jami 8 ta) va uning oʻng tomondagi aksi kabi ROMʼning barcha 4096 baytidagi har bir n-bitni oʻz ichiga oladi. Aslida bu yomon, chunki ROMʼning oʻrtasidagi har bir baytning biti parchalangan. Bu kristalldagi dasturiy proshivkaning hatto bir qismini ham oʻqib boʻlmaydi.

Dekapsulyatsiya uchun menga yangi donorlar yetib kulguniga qadar, qoʻlimizda mutlaqo butun kuylar ROMʼi bor va hech boʻlmaganda uni ochishga harakat qilib koʻramiz.

Kuylar ROMʼi

Hujjatlarda HT443A0 har biri ohang, shovqin yoki zarbalar toʻplamidan iborat boʻlgan 16 ta alohida kuyni qoʻllab-quvvatlashini bilib olish mumkin. 1—12 kuylar 32 tagacha, 13—16 kuylar esa 64 tagacha notadan iborat boʻlishi mumkin. Afsuski, notalarning razryadi haqida aytilmagan, ammo biz uni osongina hisoblashimiz mumkin: kuylar ROMʼida vizual ravishda 4480 ta bitni sanash mumkin, hujjatlar boʻyicha saqlanadigan notalar soni 640 ta, demak, har bir notaga 4480 / 640 = 7 ta bit tegishli.

ROMʼni oʻqish uchun bitlarning maʼlum notalar bilan, notalarning esa kuylar bilan qanday bogʻliqligini aniqlashimiz kerak. Buning uchun tanlab olingan nota va kuylarni boshqaradigan deshifratorlarni tahlil qilishga harakat qilib koʻrishimiz mumkin.

Nota va kuylar uchun belgilangan deshifratorli kuylar ROMʼi


Qizil rang bilan 32 juft vertikal chiziqlardan birini tanlab oladigan 5 razryadli deshifrator belgilangan. Mantiqan 32 ta notaning har biri bir juft vertikal chiziqda saqlanadi deb taxmin qilish toʻgʻri. Koʻk rang bilan har biri 7 tadan (notadagi bitlar soni) gorizontal chiziqdan iborat 16 ta toʻplamdan birini tanlaydigan 4 razryadli deshifrator belgilangan. Yashil rang bilan belgilangan yana bir 1 razryadli deshifrator esa ikki oʻlchamli kuylarning qoʻshimcha 32 ta notasini yoʻnaltirish imkonini beradi.

Birinchi kuyning birinchi notasini oʻqib koʻrib, bu chalkash tushuntirishga oydinlik kiritishga harakat qilib koʻraman. Dastlab metall qatlamni ishlov berib, olib tashlash kerak. Chunki u ROMʼning bir qismini bizdan yashirib turibdi. Buning uchun alyuminiyni past haroratda payvandlash uchun ishlatiladigan qandaydir flyusdan (tarkibi nomaʼlum) foydalandim. Afsuski, ishlov berish integral mikrosxemaning boshqa qatlamlariga ham taʼsir qilib, ranglarning bir xil boʻlmagan tarzda (bu qatlam qalinligiga bogʻliq) oʻzgarishiga olib keladi va ROMʼni oʻqish juda qiyinlashadi. Jarayonda hech qanday avtomatlashtirish yoʻq, har bir 4480 bitni qoʻlda belgilash kerak.

Metall qatlamsiz ROM


Fotosuratda birinchi kuyning birinchi notasi bit qiymati belgilangan, strelkalar bilan esa kattadan kichikkacha oʻqish tartibi koʻrsatilgan.

Toʻliq holatdagi birinchi kuy:

1010110
1101011
110101
1011010
1101101
1110110
1111011
111101
1011110
1101111
110111
11011
1101
1000110
1100011
110001
1011000
101100
10110
1001011
100101
1010101
1101001
1110100
111010
1011010
1101110
1110111
111011
11101
1001110
1100111


Eʼtiborga loyiq ketma-ketlik, bu yerda faqat chastota ajratuvchisi uchun sonlarni koʻrishni kutgandim, ammo bu chiziqli teskari aloqaga ega siljish registrining chiqishiga oʻxshaydi. Elas-elas yuqorida nomi keltirilgan Ken Shirrifning musiqali tabriknomasi mikrosxemasining reversi borligini esladim, tekshirib koʻrdim — haqiqatan ham notalarning oʻxshashligi toʻliq. Shunday ekan, bu haqda batafsil havola orqali oʻtib oʻqish mumkin. Qisqa qilib aytadigan boʻlsak, ajratuvchi chastota 1000000 qiymat hosil boʻlgunga qadar LFSR bajargan ish bosqichlari soni bilan belgilanadi.

Masalan, 1111111 notasi 8 bosqichda siljiydi:

1111111
0111111
0011111
0001111
0000111
0000011
0000001
1000000

Ovozning bazaviy chastotasini zavodda oʻrnatilgan maska tomonidan beriladigan takt chastotasi ajratuvchisi belgilaydi va uning aniq qiymati menga nomaʼlum. Ammo men bu notaning tovush chastotasini ishlaydigan namunada oʻlchab koʻrdim va u ~4200 gers boʻlib chiqdi. Shuning uchun bazaviy chastota 32768 gers bizga mos keladi — ushbu qiymat bilan 1111111 notasi 4096 gersga toʻgʻri keladi (ayrim tafovutlar takt chastotasini belgilaydigan HT443A0 rezistorining noaniqligi bilan izohlanadi).

Endi birinchi kuyda qaysi tovush joy olganini tushunish mumkin — mazkur Tetrisdagi shakl gorizontal tarzda harakatlanayotganda chiqadigan tovush.

"Korobeyniklar-chi? U bir vaqtning oʻzida 13- va 14-chi 64 ta notali ikkita kuyni egallaydi. Quyida mashhur kuyning boshlanishidagi belgilangan chastotalar:
"

0111010 - 1092 Gs
0111010 - 1092 Gs
0111010 - 1092 Gs
0111010 - 1092 Gs
1100011 - 819 Gs
1100011 - 819 Gs
0101100 - 886 Gs
0101100 - 886 Gs
1010010 - 993 Gs
1010010 - 993 Gs
1010010 - 993 Gs
1010010 - 993 Gs
0101100 - 886 Gs
0101100 - 886 Gs
1100011 - 819 Gs
1100011 - 819 Gs
1101111 - 728 Gs
1101111 - 728 Gs
1101111 - 728 Gs
0
1101111 - 728 Gs
1101111 - 728 Gs
0101100 - 886 Gs
0101100 - 886 Gs
0111010 - 1092 Gs
0111010 - 1092 Gs
0111010 - 1092 Gs
0111010 - 1092 Gs
1010010 - 993 Gs
1010010 - 993 Gs
0101100 - 886 Gs
0101100 - 886 Gs


Koʻrinib turibdiki, notaning davomiyligi shunchaki takrorlash, tovushning yoʻqligi esa nol bilan belgilanadi.

ROMʼdagilardan tashqari musiqiy sxema bilan bogʻliq yana bir kichikroq kuy bor:


Hali u bilan shugʻullanmadim, lekin unda har bir kuy uchun temp, “cholgʻu asbobi” turini belgilaydigan ajratuvchi va yana biror nimalar borga oʻxshaydi.

Yaqin kelajakda kompaund ostidan butun kristallni chiqarib, proshivka namunasini olishga harakat qilaman. Shundan soʻng emulyator ham salkam qoʻlimizda boʻladi.

Davomi : Xoʻsh, Brick Game oʻyinlarida qanday protsessordan foydalanilgan? 2-qism

 

Manba: Так какой же процессор использовался в играх Brick Game?

#Brick Game
#Mikroelektronika
Mohirdev Telegram

Telegram kanalimizga obuna bo’lishni unutmang

Obuna bo'lish
habr.com

habr.com

habr.com

O'xshash maqolalar

Yangi oʻrganuvchilar uchun Jenkins: u oʻzi nima, bizga nima uchun kerak va uni qanday oʻrnatish mumkin?
guide
Jenkins

18-aprel, 2024

Yangi oʻrganuvchilar uchun Jenkins: u oʻzi nima, bizga nima uchun kerak va uni qanday oʻrnatish mumkin?

Ilovalar yigʻish boʻyicha oʻz konveyerimizni ishga tushiramiz.

Maqolani o'qish
Xoʻsh, Brick Game oʻyinlarida qanday protsessordan foydalanilgan? 2-qism
Brick Game
Tetris
Mikroelektronika

17-aprel, 2024

Xoʻsh, Brick Game oʻyinlarida qanday protsessordan foydalanilgan? 2-qism

Oldingi maqolani yozayotganimda menga tajriba uchun tetrislarning navbatdagi namunalari kelayotgan edi va birinchi boʻlib mana shuni oldim:

Maqolani o'qish
Bosim ostida testdan oʻtkazish (testing): biz avtonom sinov tizimini qanday yaratdik?
testing
machine learning

9-aprel, 2024

Bosim ostida testdan oʻtkazish (testing): biz avtonom sinov tizimini qanday yaratdik?

Birmuncha vaqt avval dasturni ishchi nusxa (production instance)ga yuklashdan soʻng avtomatik  testdan oʻtkazish (testing) kerak boʻladigan loyihada ishlagandim. Avtomatlashtirilgan testdan oʻtkazish (testing) bu – toʻliq sinovdan oʻtkazilmasdan oldin dasturiy taʼminotga yaqinda qoʻshilgan yoki oʻzgartirilgan funksiyalar oʻz oʻrnida ishlayotganini tezkor tekshirish usuli. Bu usul batafsil testdan oʻtkazishdan avval asosiy funksiyalar ishlayotganiga amin boʻlishga yordam beradi va oʻz-oʻzidan sifatni taʼminlashdagi tezkor bosqich sanaladi. Testdan oʻtkazish sozlamalari reliz turiga qarab dinamik ravishda oʻzgarib turishi kerak, chunki frontend va bekend relizlar turli vaqtlarda chiqarilgan hamda turlicha testdan oʻtkazish sozlamalarini talab etgan boʻladi.

Maqolani o'qish
Telegram’dagi akkauntlarni o‘g‘irlashning yangi sxemasi

24-aprel, 2024

Telegram’dagi akkauntlarni o‘g‘irlashning yangi sxemasi

Kiberjinoyatlarga qarshi kurashish texnologiyalarini ishlab chiqaruvchi F.A.C.C.T. kompaniyasi firibgarlar Telegramʼda akkauntlarni oʻgʻirlash uchun yangi sxemadan foydalanishni boshlagani haqida xabar qildi.

Maqolani o'qish
OpenSource qanday yaratiladi? Shaxsiy tajriba
opensource
shaxsiy tajriba

16-aprel, 2024

OpenSource qanday yaratiladi? Shaxsiy tajriba

Men Linuxʼning barcha distributivlariga ozmi-koʻpmi kiritilgan ikkita paket — sane-airscan va ipp-usbʼning muallifiman.

Maqolani o'qish