Важная информация

User Tag List

Показано с 1 по 5 из 5

Тема: CHIP8 Emulator

  1. #1
    Guru Аватар для NEO SPECTRUMAN
    Регистрация
    22.05.2011
    Адрес
    Дзержинск
    Сообщений
    3,020
    Спасибо Благодарностей отдано 
    11
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    12 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию CHIP8 Emulator

    NSChip - Chip8 эмулятор для ZX Spectrum 48

    скачать бесплатно без СМС на максимальной скорости
    https://yadi.sk/d/VtE2BZri3FizPg -

    архив включает
    NSChip - эмулятор для спека
    FastChip - более быстрый эмулятор для спека но с меньшими возможностями
    SJChipASM - набор макросов для sjasmplus для компиляции chip8 кода
    Azunyan8_v3 - эмулятор для ПЦ с отладчиком
    Fish 'N' Chips - еще один эмулятор для ПЦ

    examples - набор софта для chip8 и готовые sna для запуска
    OTLA - программа для ускоренной загрузки sna на реальном железе

    Monobeep - простой биперный движок для chip8 + сорец
    beep - примеры его звучания

    chipenstein_den00bed_mod - немного допиленный движок вульфа + сорец
    trip8_den00bed - демкААА поправленная для нормальной работы + сорец


    NSChip

    На данный момент поддерживается


    -chip 8 + режимы совместимости с разными трактованиями его команд (включая идиотизм octo)
    из поддержки super chip только RPL флаги и дополнительный набор крупных шрифтов

    так же
    -2 режима масштабирования 1х, 2х
    -чересстрочник для повышения скорости и снижения мерцания
    -frame skip
    -ограничение на число команд за фрейм
    -смена частоты таймеров (правда, при частоте дескретизации в 50Гц)
    -смена шрифтов (на них тоже нет стандарта)
    -примитивное биперное жужжание (но есть возможность написания своих биперных движков (в отличие от PC) так как спецификация этого не отрицает)
    -несколько speedhack-ов которые не дают практически никакого прироста скорости

    видео память и стек лежат за пределами адресуемой памяти
    но запись в них возможна так же как и убийство эмулятора...
    [свернуть]

    Чего нет


    нормального sprite wrap-а

    стек на данный момент не эмулируется
    в место него используется стек z80
    так что можно убить эмулятор даже стеком
    [свернуть]

    Чаво скорей всего никогда не будет


    динамической рекомпиляции (тк и так достаточно быстро)
    [свернуть]

    Что планируется в следующих версиях, которые выйдут очень не скоро


    -поддержка super chip (с его 128х64)
    -поддержка xo chip (с его 4 цвета на точку и звуком!!!!
    (но будет ли поддержана его адресация всех 64К неизвестно))
    -поддержка chip 8 hires 64х64 итд (если найду эмулятор который его поддерживает, или нормальное описание (предложение а давайте проверять а не лежит ли в памяти игра использующая hires и включать его если лежит... вызывает у меня...))
    -возможно частичная поддержка mega chip
    основная проблема отсутствие, какого либо эмулятора
    жирный и цветной экран
    и возможность адресовать 256T/70050Е памяти
    любые другие расширения
    [свернуть]

    Управление


    клавиши мапятся на
    Код:
    [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]
    [свернуть]

    Как запускать свои программы


    для Windows XP
    1. положить ch8\c8 файлы в папку nschip\fastchip
    2. drag&drop-нуть их на chip2sna.bat (при большом количество кинутых файлов выдаст ошибку!!!!)
    3 .....
    4 .....
    5 PROFIT!!!



    если это не работает
    находим в самом конце nschip.asm/fastchip.asm
    строки
    Код:
    	org $8200
    	incbin chiptemp.bin
    и подменяем chiptemp.bin на свой ****.ch8

    или переименовываем свой ****.ch8 в chiptemp.bin и ложим его в nschip_src/fastship_src

    после чего сами компилируем nschip.asm/fastchip.asm
    [свернуть]

    Настройка эмулятора


    тк какого либо интерфейса у эмуля нету
    все изменение настроек осуществляются при помощи правки интуитивно понятного исходника nschip.asm\fastchip.asm ручками
    все что можно настроить вынесено в самое их начало
    и имеет коментарии
    так же рядом указано значение по умолчанию

    для настройки не требуется особых познаний в программировании
    те кто настраивал dosbox без проблем разберутся и тут
    [свернуть]


    SJChipASM

    Зачем он вообще нужен


    для того чтобы получить все плюшки sjasm-а
    такие как lua
    и не нужно вылавливать новых глюков очередного левого компилятора
    большая часть команд асм-а должна работать
    [свернуть]

    Компилирует следующие команды


    Код:
    	8080 like	z80 like
    0***	sys ***
    00C*	scdown *	scd *
    00E0	cls
    00EE	rts		ret		rst тк при попытке напечатать rts часто получается именно так
    00FB	scright		scr
    00FC	scleft		scl
    00FD	exit
    00FE	low
    00FF	high
    1***	jmp ***		jp ***
    2***	jsr ***		call ***
    3x**	skeq vx,**	se vx,**
    4x**	skne vx,**	sne vx,**
    5xy0	skeq vx,vy	se vx,vy
    6x**	mov vx,**	ld vx,**
    7x**	add vx,**
    8xy0	mov vx,vy	ld vx,vy
    8xy1	or vx,vy
    8xy2	and vx,vy
    8xy3	xor vx,vy
    8xy4	add vx,vy
    8xy5	sub vx,vy
    8x06	shr vx				+ 8xx6 mode
    8xy7	rsb vx,vy	subn vx,vy
    8x0E	shl vx				+ 8xxE mode
    9xy0	skne vx,vy	sne vx.vy
    A***	mvi ***
    B***	jmi ***
    Cx**	rand vx,**	rnd vx,**
    Dxy*	sprite vx,vy,*	drw vx,vy,*
    Dxy0	xsprite vx,vy
    Ex9E	skpr vx		skp vx
    ExA1	skup vx		skpn vx
    Fx07	gdelay vx
    Fx0A	key vx
    Fx15	sdelay vx
    Fx18	ssound vx
    Fx1E	adi vx
    Fx29	font vx
    Fx30	xfont vx
    Fx33	bcd vx
    Fx55	str v0-vx
    Fx65	ldr v0-vx
    [свернуть]

    Примечания


    sjasm будет усердно ругаться на первых 2-х проходах
    "error: [IF] Forward reference"
    просто игнорим

    возможны проблемы со всякими include и макросами!!!

    ахтунх!!!
    sjasm чувствителен к регистру
    по этому никаких
    заборчиков
    команды cLs, ClS, Cls не будут скомпилированы!!!
    только cls, CLS

    желательно писать команды только мелким шрифтом!

    не желательно использовать название меток содержащие ch8_

    регистры именуются
    v0-vF именование регистров не чувствительно к регистру! (можно и vf,vF,VF,Vf)
    v0-v15

    местами могут прокатить
    $0-$F
    0-F

    но лучше использовать v0-vF

    так же впилена проверка на простейшие ошибки\очепятки
    правда толку от них не много

    mov v0,453
    выдаст "error mov xx > FF"
    и скомпилируется как 60С5

    skeq v0,-3
    будет писать "- or error skeq xx > FF"
    но компилить правильно 30FD

    если размер кода превысит $E00
    вылезет "error out of memory"

    ">$FFF !!!!!!"
    будет когда полученный код уже физически нельзя запустить на chip 8

    конструкции, в которых не указаны прямые значения
    mov v0,$ + cntraddr + 54 + 3 / 4
    jmp $ + 32

    надежней записывать в таком виде
    mov v0,($ + cntraddr + 54 + 3 / 4)
    jmp ($ + 32)

    тк я мог не все пофиксить
    а sjasm трактует такое по багофичному

    есть 2 варианта компиляции команд shr\shl

    ch8_op8x06mode = 0 shr vx скомпилируется как 8x06
    ch8_op8x06mode = 1 shr vx скомпилируется как 8xx6 (shr vx,vx)

    ch8_op8x0Emode = 0 shl vx скомпилируется как 8x0E
    ch8_op8x0Emode = 1 shl vx скомпилируется как 8xxE (shl vx,vx)

    ни один из них не гарантирует правильную работу на всем
    в первом случае команда может трактоваться как sh* vx,v0 и результат окажется не в том регистре
    во втором случае команда вообще может не распознаться (будет ли она просто пропущена или повесит эмуль не известно)

    при необходимости скомпилировать команды shr vx,vy shl vx,vy
    используем
    defb $8x ,$y6 ;shr vx,vy
    defb $8x ,$yE ;shl vx,vy

    привет криворуким писателям мануалов
    и писателям sjasm-а с его фиксированным количеством параметров для макросов

    поддержаны только 8080 подобные мнемоники
    впилить большую часть z80 подобных мнемоник невозможно без допиливания sjasm-а
    все что можно было впилены

    8080 подобные мнемоники для команд Fx75 Fx85 неизвестны
    нужно использовать
    defb $Fx, $75
    defb $Fx, $85

    [свернуть]


    тк изначально планировалась поддержка только super chip
    а свободное место начало подходить к концу
    (основная задача вместить максимум в 48к с минимальным использованием команд z80 тк не только для спектрума)
    местами пришлось наговнокодить
    и скорость работы некоторых команд теперь просела в разы
    но в принципе мощности все еще достаточно для нормальной работы 99,9% имеющегося(уменя) софта

    самая тормознутая отрисовка спрайтов
    она продумана не очень хорошо
    и сделана по принципу лишь бы работало
    позже я ее заменю

    Работа с vf нормально не задокументирована.
    Так что возможны всякие грабли со всякими add vf,vf.
    Режимов совместимости как в Octo для vf пока нет.

    после вынужденного замедление декодера команд
    я решил делать 2 версии эмулятора
    -одна с максимальной совместимостью с разными версиями (chip8\super chip\xo chip\mega chip)
    и для максимального количества платформ с i8080
    -другая с максимальной скоростью работы для запуска всяких вульфов
    но с поддержкой только chip 8 (64x32) и только для ZX Spectrum 48k


    если есть идеи по оптимизации, ускорению отдельных команд, информация о других расширениях\командах
    кидаем, я их добавлю (по возможности)

    пока у меня есть документация
    только на chip 8, super chip, xo chip

    не много по mega chip-у
    некоторые команды mega chip-a я тоже позже впилю (те что получится реализовать)
    так же есть непонимание работы его некоторых команд
    без эмулятора туговато...
    еще не нашел эмулятора поддерживающего 64х64 hires

    Эмулятор написан с расчетом на портирование на другие платформы с i8080
    для портирования на платформе должно быть свободно хотя бы порядка 32К рамы


    Позже добавлю замечания как не нужно кодить на chip8
    и какие у него есть грабли и не совместимости
    Последний раз редактировалось NEO SPECTRUMAN; 14.03.2017 в 15:34.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    3,627
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ы

    что это и как управляется?
    С уважением,
    Jerri / Red Triangle.
    [02.05.2014] не забудь этот день. Чубайс должен умереть. Dixi.
    [l'Abbey des morts TSEvo EV...5%] kiwi кошелек +79178162712

  4. #3
    Guru
    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,444
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я делал в своё время версию для Микро-80 (но немного попроще): http://zx-pk.ru/threads/25685-yut-88...l=1#post833552

  5. #4
    Guru Аватар для NEO SPECTRUMAN
    Регистрация
    22.05.2011
    Адрес
    Дзержинск
    Сообщений
    3,020
    Спасибо Благодарностей отдано 
    11
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    12 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    что это и как управляется?
    https://en.wikipedia.org/wiki/CHIP-8

    это такая виртуальная платформа конца 70-х годов для всяких игр

    славиться своей крайне низкой производительностью
    ужасной работой с графикой
    и ужасной документацией из за чего софт который должен работать везде
    работает только на части интерпретаторов
    и еще тем что эмуляторы этой платформы пишет каждый второй школьник
    не забывая называть его одним и тем же именем chip8 emulator
    и качества такого что совместимость все ниже и ниже


    Управление
    стандартные для ПЦ клавиши

    1234
    qwer
    asdf
    zxcv
    как именно на них располагать управление программистам никто не говорил
    по этому практически везде нужно использовать метод научного тыка и нащупывать где же и что
    доставляют игры в которых gameover наступает через пол секунды после старта
    и пока найдешь чем же рулить...


    Цитата Сообщение от b2m Посмотреть сообщение
    Я делал в своё время версию для Микро-80 (но немного попроще)
    это вроде у меня не много по проще
    у меня еще нет super chip-а
    и будет он не скоро

    ...разве что я прилагаю недокомпилятор в комплекте (со своими задачами он справляется на ура)...
    Последний раз редактировалось NEO SPECTRUMAN; 14.03.2017 в 15:46.

  6. #5
    Guru Аватар для NEO SPECTRUMAN
    Регистрация
    22.05.2011
    Адрес
    Дзержинск
    Сообщений
    3,020
    Спасибо Благодарностей отдано 
    11
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    12 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    перепилил под быстрые таблицы переходов
    Вложения Вложения
    • Тип файла: zip chip8.zip (22.9 Кб, Просмотров: 10)

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Speccy emulator
    от Rindex в разделе Эмуляторы
    Ответов: 49
    Последнее: 09.01.2018, 13:57
  2. GameBase Kawaks emulator
    от Rindex в разделе Зарубежные компьютеры
    Ответов: 0
    Последнее: 14.05.2014, 17:40
  3. Agat Emulator v1.26.1
    от Rindex в разделе Apple
    Ответов: 0
    Последнее: 15.02.2014, 22:02
  4. SpecEmu v2.8 emulator released
    от Woodster в разделе RST#38
    Ответов: 7
    Последнее: 16.11.2008, 22:03

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •