Бұл жазба автоматты түрде аударылған. Бастапқы тіл: Қазақ
Жақында мен досымнан Қазына таптым - Game Boy Advance. Бірақ содан кейін мен оның Pokemon ойындарын компьютерімде көрдім, өйткені оның картридждері жоқ. Осы сәттен бастап мен эмуляторды жасау қаншалықты қиын деп ойладым.
CHIP-8-бағдарламалау тілі және ода тек 35 Нұсқаулық бар, оларды операциялық кодтар деп те атайды. Берілген тілге еліктеу үшін біз барлық 35 нұсқаулықты орындай алатын CHIP-8 аудармашысын жасауымыз керек. Мүмкіндіктер тізімін веб-сайттан көре аласыз https://johnearnest.github.io/Octo/docs/chip8ref.pdf
CHIP-8 жүйесінде әрқайсысы 8 бит (1 байт) алатын 16 регистр бар. Бағдарлама есептегіші, 16 биттік индекс регистрі, жұмыс кодын толтырғыш және стек көрсеткіші, әрқайсысының өлшемі 16 бит. Жад бұл 4 Килобайт мұнда алғашқы 512 байтты аудармашы алады, ал CHIP-8 - де жазылған барлық бағдарламалар 512 орыннан басталады. Бағдарлама есептегіш регистрінен қайтару орындарын сақтау үшін пайдаланылатын кем дегенде 16 деңгейлі стек көрсеткіші қажет.
CHIP-8 - де екі таймер бар олар 60-тан 0-ге дейін есептеледі. Кешіктіру таймері бағдарламадағы оқиғалар үшін пайдаланылады және оның мәнін көрсетуге және оқуға болады. Дыбыс таймері нөлге жеткенде дыбыс шығарады. Әр операциядан кейін екі таймер де 1-ге азаяды.
CHIP-8-де 16 батырма бар (0x0-0xF) олар әдетте пернетақтаға осылай аударылады:
1 2 3 C 1 2 3 4
4 5 6 D --\ Q W E R
7 8 9 E --/ A S D F
A 0 B F Z X C VӘдетте, бағыттар үшін 2, 4, 6 және 8 түймелері қолданылады.
Сіз менің толық емес имплементациямды Python тілінде GitHub сілтемесінен ROM файлдарымен бірге таба аласыз. Мен жылдамырақ бағдарламалау тілдерін Rust немесе C/C++ ретінде пайдалануды ұсынамын, себебі құрастырылған бинарлық файлдар жоғары оңтайландырылған, нәтижесінде өнімділік жақсарады, бұл нақты уақыттағы эмуляция үшін өте маңызды.
Жақында мен досымнан Қазына таптым - Game Boy Advance. Бірақ содан кейін мен оның Pokemon ойындарын компьютерімде көрдім, өйткені оның картридждері жоқ. Осы сәттен бастап мен эмуляторды жасау қаншалықты қиын деп ойладым.
CHIP-8-бағдарламалау тілі және ода тек 35 Нұсқаулық бар, оларды операциялық кодтар деп те атайды. Берілген тілге еліктеу үшін біз барлық 35 нұсқаулықты орындай алатын CHIP-8 аудармашысын жасауымыз керек. Мүмкіндіктер тізімін веб-сайттан көре аласыз https://johnearnest.github.io/Octo/docs/chip8ref.pdf
CHIP-8 жүйесінде әрқайсысы 8 бит (1 байт) алатын 16 регистр бар. Бағдарлама есептегіші, 16 биттік индекс регистрі, жұмыс кодын толтырғыш және стек көрсеткіші, әрқайсысының өлшемі 16 бит. Жад бұл 4 Килобайт мұнда алғашқы 512 байтты аудармашы алады, ал CHIP-8 - де жазылған барлық бағдарламалар 512 орыннан басталады. Бағдарлама есептегіш регистрінен қайтару орындарын сақтау үшін пайдаланылатын кем дегенде 16 деңгейлі стек көрсеткіші қажет.
CHIP-8 - де екі таймер бар олар 60-тан 0-ге дейін есептеледі. Кешіктіру таймері бағдарламадағы оқиғалар үшін пайдаланылады және оның мәнін көрсетуге және оқуға болады. Дыбыс таймері нөлге жеткенде дыбыс шығарады. Әр операциядан кейін екі таймер де 1-ге азаяды.
CHIP-8-де 16 батырма бар (0x0-0xF) олар әдетте пернетақтаға осылай аударылады:
1 2 3 C 1 2 3 4
4 5 6 D --\ Q W E R
7 8 9 E --/ A S D F
A 0 B F Z X C VӘдетте, бағыттар үшін 2, 4, 6 және 8 түймелері қолданылады.
Сіз менің толық емес имплементациямды Python тілінде GitHub сілтемесінен ROM файлдарымен бірге таба аласыз. Мен жылдамырақ бағдарламалау тілдерін Rust немесе C/C++ ретінде пайдалануды ұсынамын, себебі құрастырылған бинарлық файлдар жоғары оңтайландырылған, нәтижесінде өнімділік жақсарады, бұл нақты уақыттағы эмуляция үшін өте маңызды.