Skip to content

625673575/Chip8Emu

Repository files navigation

chip8

介绍

很多人有想过开发一个游戏模拟器,也曾尝试编译过一些开源项目,却被庞大的知识体系给吓到而退缩,定的目标过高,便极易半途而废,CHIP8就是这样一个最简单的模拟器,上世纪70年代开发的一种CPU模拟,核心功能性的指令仅有二十几个却能模拟CPU的运行,如果你是个想要开发模拟器的小白,那么这将是最快让你了解其中原理的项目 这是一个更侧重学习的项目,通过本项目可以学习CPU模拟,汇编,debugger,编译原理等方面的知识 基于最新C++20特性开发的CHIP8模拟器,反汇编工具,调试工具,和汇编编译器

软件架构

模块:

  1. common是通用的一些函数
  2. framework主要用于呈现,渲染库用到了IMGUI和SDL2
  3. cpu,input,display,memory负责chip8的模拟运行
  4. assembler负责对汇编程序进行编译输出ROM
  5. disassemble对ROM进行反汇编
  6. debugger实现了调试器部分,依赖disassemble

安装教程

安装Visual Studio 2017或者以上版本,已添加对生成事件的处理,会自动配置好依赖,打开即可运行 后面会考虑CMake编译系统的加入,欢迎其他开发者添加跨平台支持

使用说明

  1. 无参数直接运行调试程序
  2. 带一个参数的则直接运行ch8 ROM
  3. disasm bin.ch8 则对bin.ch8执行反汇编
  4. asm ball.c8 bin.ch8 则对ball.c8进行编译生成ROM文件bin.ch8

未来计划

  1. 添加C风格的程序语言支持,生成汇编代码
  2. 基于llvm开发前后端代码生成
  3. 扩展字节码功能,实现一个更复杂的游戏机模拟器,并为其配备一整套底层开发工具链

示例汇编程序

绘画0-9的数字显示在屏幕上不断刷新

LD V0,#0
LD V1,#0
LD V2,#5
LD V5,#60
LD I,#000
:draw
DRW V0,V1,#5
LD DT,V5
ADD I,V2
ADD V0,#5
SE V0,#32
JP :draw
LD V1,#0
LD V0,#0
LD I,#000
CLS
JP :draw

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages