binjgb:用C语言实现的Gameboy模拟器

  • Y7_951421
    了解作者
  • 474.7KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-06-15 01:23
    上传日期
Binjgb 一个简单的GB / GBC模拟器。 产品特点 哈克但可通过的CGB支持! 周期准确,通过了许多计时测试(见下文) 支持MBC1,MBC1M,MMM01,MBC2,MBC3,MBC5和HuC1 保存/加载备用电池 将模拟器状态保存/加载到文件 快进,暂停和步进一帧 倒带并尝试特定的周期 禁用/启用每个音频通道 禁用/启用BG,窗口和精灵层 使用哈希验证的便捷Python测试工具 (WIP)调试器具有各种可视化效果(请参见下文) DMG屏幕截图 CGB屏幕截图 调试器屏幕截图 克隆 使用递归克隆以包含子模块: $ git clone --recursive https://
binjgb-master.zip
  • binjgb-master
  • .gitattributes
    60B
  • .gitmodules
    98B
  • src
  • common.c
    1.9KB
  • rewind.c
    17.3KB
  • emulator-debug.c
    32.6KB
  • binjgb.c
    14.4KB
  • rewind.h
    2.9KB
  • tester.c
    13.5KB
  • builtin-palettes.def
    13.4KB
  • joypad.c
    9.6KB
  • common.h
    4.1KB
  • emulator.h
    5.1KB
  • host-ui-simple.c
    4.7KB
  • host-gl.c
    2.5KB
  • host-ui.h
    984B
  • host-ui-imgui.cc
    14.2KB
  • emscripten
  • binjgb.js
    2.6KB
  • wrapper.c
    5.1KB
  • exported.json
    888B
  • emulator.c
    143.6KB
  • emulator-debug.h
    4.8KB
  • joypad.h
    1.7KB
  • options.h
    1.3KB
  • debugger
  • main.cc
    4.3KB
  • audio-window.cc
    1.4KB
  • emulator-window.cc
    2.3KB
  • io-window.cc
    6.7KB
  • memory-window.cc
    1.8KB
  • imgui-helpers.h
    1.1KB
  • debugger.cc
    15KB
  • debugger.h
    6.1KB
  • rewind-window.cc
    6KB
  • tiledata-window.cc
    4.1KB
  • map-window.cc
    5.1KB
  • rom-window.cc
    4.6KB
  • obj-window.cc
    3.4KB
  • disassembly-window.cc
    8.5KB
  • memory.h
    879B
  • memory.c
    849B
  • host-gl.h
    2.3KB
  • options.c
    4.1KB
  • host.c
    18.1KB
  • host.h
    5.7KB
  • images
  • trip.png
    1KB
  • debugger.png
    36.8KB
  • pz.png
    8.1KB
  • tiledata-window.png
    13KB
  • aevilia.png
    12.5KB
  • mole.png
    3.2KB
  • map-window.png
    23.2KB
  • sk.png
    6.7KB
  • picross.png
    1.8KB
  • mgs.png
    10.9KB
  • breakpoint.png
    3KB
  • pocket.png
    735B
  • wars.png
    1KB
  • dw.png
    24.3KB
  • dk.png
    2.5KB
  • kirby2.png
    2.2KB
  • ham.png
    10.6KB
  • obj-window.png
    12KB
  • wario.png
    2.3KB
  • toki.png
    38.3KB
  • wario3.png
    12.4KB
  • bionic.png
    2.5KB
  • scripts
  • disasm.py
    17.5KB
  • anim.py
    3.7KB
  • usage.py
    1.5KB
  • super_mario_land.input
    1.6KB
  • info.py
    3.4KB
  • verify.py
    2.3KB
  • test.json
    14.3KB
  • ips.py
    2.2KB
  • build_sdl2.py
    906B
  • build_tests.py
    2.4KB
  • common.py
    2.5KB
  • tester.py
    6.2KB
  • .clang-format
    21B
  • test_results.md
    5.3KB
  • demo
  • binjgb.js
    2.6KB
  • cpu_instrs.gb
    64KB
  • sha1.js
    4.3KB
  • binjgb.wasm
    96.1KB
  • simple.html
    382B
  • simple.js
    15.1KB
  • reset.css
    1.1KB
  • demo.js
    20.5KB
  • demo.html
    6.7KB
  • CMakeLists.txt
    4.8KB
  • .travis.yml
    2KB
  • LICENSE
    1023B
  • test
  • blargg
内容介绍
[![Travis](https://travis-ci.org/binji/binjgb.svg?branch=master)](https://travis-ci.org/binji/binjgb) [![AppVeyor](https://ci.appveyor.com/api/projects/status/github/binji/binjgb?branch=master&svg=true)](https://ci.appveyor.com/project/binji/binjgb/branch/master) # binjgb A simple GB/GBC emulator. ## Features * [Runs in the browser using WebAssembly](https://binji.github.io/binjgb) * Hacky-but-passable **CGB support**! * Cycle accurate, passes many timing tests (see below) * Supports MBC1, MBC1M, MMM01, MBC2, MBC3, MBC5 and HuC1 * Save/load battery backup * Save/load emulator state to file * **Fast-forward**, pause and step one frame * **Rewind** and seek to specific cycle * Disable/enable each audio channel * Disable/enable BG, Window and Sprite layers * Convenient Python test harness using hashes to validate * (WIP) **Debugger** with various visualizations (see below) ## DMG Screenshots ![Bionic Commando](/images/bionic.png) ![Donkey Kong](/images/dk.png) ![Kirby's Dreamland 2](/images/kirby2.png) ![Mole Mania](/images/mole.png) ![Mario's Picross](/images/picross.png) ![Trip World](/images/trip.png) ![Wario Land](/images/wario.png) ![Game Boy Wars](/images/wars.png) ![Is That a Demo in Your Pocket?](/images/pocket.png) ## CGB Screenshots ![Dragon Warrior](/images/dw.png) ![Hamtaro](/images/ham.png) ![Metal Gear Solid](/images/mgs.png) ![It Came From Planet Zilog](/images/pz.png) ![Survival Kids](/images/sk.png) ![Aevilia](/images/aevilia.png) ![Toki Tori](/images/toki.png) ![Wario 3](/images/wario3.png) ## Debugger Screenshots ![Debugger](/images/debugger.png) ![OBJ](/images/obj-window.png) ![Map](/images/map-window.png) ![Tile Data](/images/tiledata-window.png) ![Breakpoints](/images/breakpoint.png) ## Cloning Use a recursive clone, to include the submodules: ``` $ git clone --recursive https://github.com/binji/binjgb ``` If you've already cloned without initializing submodules, you can run this: ``` $ git submodule update --init ``` ## Building Requires [CMake](https://cmake.org) and [SDL2](http://libsdl.org/download-2.0.php). Debugger uses [dear imgui,](https://github.com/ocornut/imgui) (included as a git submodule). ### Building (Linux/Mac) If you run `make`, it will run CMake for you and put the output in the `bin/` directory. ``` $ make $ bin/binjgb foo.gb ``` You can also just use cmake directly: ``` $ mkdir build $ cd build $ cmake .. $ make ``` ### Building (Windows) When building on Windows, you'll probably have to set the SDL2 directory: ``` > mkdir build > cd build > cmake .. -G "Visual Studio 15 2017" -DSDL2_ROOT_DIR="C:\path\to\SDL\" ``` Then load this solution into Visual Studio and build it. Make sure to build the `INSTALL` target, so the exectuables are built to the `bin` directory. ### Building WebAssembly You can build binjgb as a WebAssembly module. You'll need an incoming build of emscripten. See https://github.com/kripken/emscripten/wiki/WebAssembly and http://kripken.github.io/emscripten-site/docs/building_from_source/index.html#installing-from-source. Put a symlink to Emscripten in the `emscripten` directory, then run make. ``` $ ln -s ${PATH_TO_EMSCRIPTEN} emscripten $ make wasm ``` ### Changing the Build Configuration If you change the build config (e.g. update the submodules), you may need to run CMake again. The simplest way to do this is to remove the `out/` directory. ``` $ rm -rf out/ $ make ``` ## Running ``` $ bin/binjgb <filename> $ bin/binjgb-debugger <filename> ``` Keys: | Action | Key | | --- | --- | | DPAD-UP | <kbd>↑</kbd> | | DPAD-DOWN | <kbd>↓</kbd> | | DPAD-LEFT | <kbd>←</kbd> | | DPAD-RIGHT | <kbd>→</kbd> | | B | <kbd>Z</kbd> | | A | <kbd>X</kbd> | | START | <kbd>Enter</kbd> | | SELECT | <kbd>Tab</kbd> | | Quit | <kbd>Esc</kbd> | | Save state | <kbd>F6</kbd> | | Load state | <kbd>F9</kbd> | | Toggle fullscreen | <kbd>F11</kbd> | | Disable audio channel 1-4 | <kbd>1</kbd>-<kbd>4</kbd> | | Disable BG layer | <kbd>B</kbd> | | Disable Window layer | <kbd>W</kbd> | | Disable OBJ (sprites) | <kbd>O</kbd> | | Fast-forward | <kbd>Lshift</kbd> | | Rewind | <kbd>Backspace</kbd> | | Pause | <kbd>Space</kbd> | | Step one frame | <kbd>N</kbd> | ## Running tests Run `scripts/build_tests.py` to download and build the necessary testsuites. This works on Linux and Mac, not sure about Windows. `scripts/tester.py` will only run the tests that match a filter passed on the command line. Some examples: ``` # Run all tests $ scripts/tester.py # Run all tests mooneye tests $ scripts/tester.py mooneye # Run all gpu tests $ scripts/tester.py gpu ``` ## Test status [See test results](test_results.md)
评论
    相关推荐
    • CasseBrique:https
      CasseBrique:https
    • plaintextoffenders:https
      纯文字罪犯 向报告的域的公开列表
    • 使用socket post 数据到httphttps
      使用socket post 数据到httphttps
    • nodejs http-server开启https的证书
      https证书文件,nodejs http-server开启https的证书,可以直接在本地启动https的协议,方便部署和使用。
    • http https 切换
      http https切换代码,能够实现网站在传输信息的过程中不易遭人盗取
    • Http2Https-crx插件
      将书签中的http转换为https 害怕用https书签替换旧的http书签? 随着许多网站迁移到https,旧的http书签使星标图像为空。 搜索并转换为https! ****************************************************** ***********...
    • LocomotiveCMS https to http-crx插件
      语言:English 将登录网址从https替换为http以进行开发 此扩展程序供使用机车cms开发应用程序时供个人使用。 为了易于在开发模式下使用,此扩展程序将https登录网址替换为http
    • http:https的镜像
      框架HTTP
    • CookieIsolator:分离 HTTPHTTPS cookie
      松散隔离:HTTP cookie 只能在 HTTP 通道中发送,而 HTTPS cookie 可以在 HTTP(不带安全标志)和 HTTPS 通道中发送。 严格隔离:HTTP cookie 和 HTTPS cookie 只能分别在 HTTPHTTPS 通道中发送。 Ext Secure...
    • https协议
      NULL 博文链接:https://willwen.iteye.com/blog/1988199