V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Mohanson
V2EX  ›  程序员

Gameboy 模拟器 点火成功!

  •  6
     
  •   Mohanson · 2019-04-18 21:21:46 +08:00 · 10327 次点击
    这是一个创建于 2040 天前的主题,其中的信息可能已经有所发展或是发生改变。

    https://raw.githubusercontent.com/mohanson/gameboy/master/docs/sample.gif

    项目地址:

    https://github.com/mohanson/gameboy

    从去年有想法开始断断续续写到现在, 最近实在太忙所以偷懒基于 MIT 协议 Copy 了另一个开源项目 rboy 的图形显示(极小部分)和声音播放模块(全部)的代码. 就这样先开源了, 以后有时间再去补课.

    这是我写的第三个虚拟机项目啦! 上一个是 webassembly 吼吼吼. 累了累了.

    包含 CPU, GPU, APU, 主板, 卡带, 键盘, 定时器等核心模块, 每个模块均有详细注释(除声音播放模块外)... 硬件模拟器真的很难写啊, 杀时间的利器.

    59 条回复    2019-04-19 23:14:58 +08:00
    CallMeReznov
        1
    CallMeReznov  
       2019-04-18 21:41:00 +08:00
    大佬流弊!
    mq4079
        2
    mq4079  
       2019-04-18 21:49:24 +08:00
    🐂🍺,我也想写但一直没时间
    sunocean
        3
    sunocean  
       2019-04-18 21:53:43 +08:00
    默默的点了个 star 好奇 文本图纸是怎么画出来的, 手工嘛?
    Mohanson
        4
    Mohanson  
    OP
       2019-04-18 21:55:56 +08:00
    @sunocean ascii art 上找的, 写 README 全靠它了
    lneoi
        5
    lneoi  
       2019-04-18 22:20:36 +08:00
    大佬大佬
    vmebeh
        6
    vmebeh  
       2019-04-18 22:27:00 +08:00 via iPhone   ❤️ 1
    Liang
        7
    Liang  
       2019-04-18 22:27:15 +08:00
    膜拜一下
    AlisaDestiny
        8
    AlisaDestiny  
       2019-04-18 22:27:53 +08:00
    点进大佬的博客,发现早已 CTRL+D.
    Mohanson
        9
    Mohanson  
    OP
       2019-04-18 22:29:02 +08:00 via Android
    其实本来放了口袋妖怪的 rom,但是害怕任天堂的法务(害怕.gif
    designer
        10
    designer  
       2019-04-18 22:29:05 +08:00 via iPhone
    先点赞
    SimonOne
        11
    SimonOne  
       2019-04-18 23:29:33 +08:00
    编译不成功😭️brew install rust 现装的 rust
    misaka19000
        12
    misaka19000  
       2019-04-18 23:58:35 +08:00 via Android
    哎。。。一直想写个 fc 模拟器,奈何一直没这个耐心
    Mohanson
        13
    Mohanson  
    OP
       2019-04-19 00:01:19 +08:00 via Android
    @misaka19000 行动起来呀! 模拟器一套代码下来,从底层 cpu 寄存器到上层视频, 音频,都能吃透,收获很大的
    waruqi
        14
    waruqi  
       2019-04-19 00:01:23 +08:00 via Android
    我之前也写过几个玩玩 flash/avm, jvm, x86vm
    rizon
        15
    rizon  
       2019-04-19 00:09:01 +08:00
    @Mohanson #9 可以用另一个身份单独提供 rom 啊。常规操作~
    doraemon0711
        16
    doraemon0711  
       2019-04-19 01:09:19 +08:00 via iPhone
    厉害厉害,我是之前关注了 mvba 的项目想学习,但一直都没动力开始,话说写模拟器是不是汇编必须玩的 6
    cd2want
        17
    cd2want  
       2019-04-19 01:26:08 +08:00
    WTF!!!! 帅气!!!!!!
    sunocean
        18
    sunocean  
       2019-04-19 01:41:14 +08:00
    谢谢大佬们 长知识了
    @waruqi
    @vmebeh
    sunocean
        19
    sunocean  
       2019-04-19 01:42:37 +08:00
    @Mohanson 大佬写这个,先从哪个部分入手比较好?
    Mohanson
        20
    Mohanson  
    OP
       2019-04-19 06:52:30 +08:00 via Android
    cpu,然后以主板。其他硬件都是接入到主板上的并受 cpu 管理
    @sunocean
    sosilver
        21
    sosilver  
       2019-04-19 07:56:44 +08:00 via Android
    @sunocean 先试试 chip8 模拟器,应该是最简单的了
    boywhp
        22
    boywhp  
       2019-04-19 08:06:30 +08:00
    @Mohanson 这年头沉下心搞技术的不多阿,居然还是 RUST 写的?牛皮牛皮,交个朋友么
    Variazioni
        23
    Variazioni  
       2019-04-19 08:48:07 +08:00
    star 了。。。
    darknoll
        24
    darknoll  
       2019-04-19 09:04:30 +08:00
    厉害。。。
    20015jjw
        25
    20015jjw  
       2019-04-19 09:12:57 +08:00
    wow 厉害
    lrh3321
        26
    lrh3321  
       2019-04-19 09:15:39 +08:00 via Android
    厉害
    strpbrk
        27
    strpbrk  
       2019-04-19 09:16:44 +08:00
    居然是喵喵开发的
    urmyfaith
        28
    urmyfaith  
       2019-04-19 09:23:45 +08:00   ❤️ 1
    最近我也在看这个.
    Mohanson
        29
    Mohanson  
    OP
       2019-04-19 09:25:17 +08:00 via Android
    @urmyfaith 期待你也能成功点火
    but0n
        30
    but0n  
       2019-04-19 09:28:57 +08:00 via iPhone   ❤️ 1
    我最近也在写,webassembly 版的
    Mohanson
        31
    Mohanson  
    OP
       2019-04-19 09:33:13 +08:00 via Android
    @but0n 哇噢,一下子遇到好多感兴趣的人
    urmyfaith
        32
    urmyfaith  
       2019-04-19 10:06:10 +08:00
    @Mohanson 怕是还有很长一段路要走哦,只是在看别人的实现,js 写的.

    你这个 rust 写的,话说我一句 rust 都没写过,不过基本的逻辑也能看的懂.

    怎么没用 c? c++ ? 之类的写呢?
    Mohanson
        33
    Mohanson  
    OP
       2019-04-19 10:29:09 +08:00 via Android
    @urmyfaith 因为最近在学 rust, 拿不熟练的语言开发,干一件事能获得两份经验值
    urmyfaith
        34
    urmyfaith  
       2019-04-19 10:34:34 +08:00
    @Mohanson 好主意!

    go,dart , lua,c,c++,c#,js, 嗯,都可以来一遍. 哈哈.
    urmyfaith
        35
    urmyfaith  
       2019-04-19 10:40:50 +08:00
    运行起来是个推箱子的游戏
    Mohanson
        36
    Mohanson  
    OP
       2019-04-19 10:54:43 +08:00 via Android
    @urmyfaith 不敢放口袋妖怪,害怕任天堂律师函警告
    smeraldo
        37
    smeraldo  
       2019-04-19 11:12:25 +08:00
    厉害厉害😍
    话说从模拟游戏的角度看,是不是只要能够解析卡带的数据,剩下的怎么实现都可以呀?
    raysonx
        38
    raysonx  
       2019-04-19 11:29:18 +08:00
    厉害了,支持!有时间拿过来体验一下
    SuperMonster009
        39
    SuperMonster009  
       2019-04-19 11:36:14 +08:00 via Android
    太厉害了 必须 star 一个
    Chingim
        40
    Chingim  
       2019-04-19 11:38:28 +08:00
    这很硬核
    HorseMa
        41
    HorseMa  
       2019-04-19 11:54:54 +08:00
    大佬🐂🍺!(破音
    silvernoo
        42
    silvernoo  
       2019-04-19 12:06:42 +08:00
    看了眼代码,太巨了
    947211232
        43
    947211232  
       2019-04-19 12:13:27 +08:00
    很秀
    xfriday
        44
    xfriday  
       2019-04-19 12:16:54 +08:00
    居然是 rust 的项目,不容易,厉害🐂
    xdlucky
        45
    xdlucky  
       2019-04-19 12:24:32 +08:00
    我的天, 推箱子真好玩
    Mohanson
        46
    Mohanson  
    OP
       2019-04-19 12:27:39 +08:00 via Android
    @xdlucky 哈哈,我没事就在玩推箱子
    cxyfreedom
        47
    cxyfreedom  
       2019-04-19 12:29:13 +08:00 via iPhone
    大佬牛逼!
    fantastM
        48
    fantastM  
       2019-04-19 12:31:38 +08:00
    谁会不喜欢宝可梦呢
    sidegem
        49
    sidegem  
       2019-04-19 12:31:53 +08:00
    虽然不懂,但看着好厉害
    motecshine
        50
    motecshine  
       2019-04-19 12:57:58 +08:00
    我也想试着写一写 楼主 需要涉及到哪些常用的知识
    Mohanson
        51
    Mohanson  
    OP
       2019-04-19 13:00:01 +08:00 via Android   ❤️ 1
    @motecshine 先搞明白 cpu 的工作原理 然后试着自己写一个 cpu 模拟器。8080,8086,51 单片机 什么的都可以,差不多就入了硬件模拟器的门了
    jiqing
        52
    jiqing  
       2019-04-19 13:08:45 +08:00 via Android
    大佬牛逼,一直想写一个 fc 模拟器。一直拖延
    tutustream
        53
    tutustream  
       2019-04-19 15:14:51 +08:00
    大佬都开始写模拟器了
    GPLer
        54
    GPLer  
       2019-04-19 16:06:01 +08:00 via Android
    编译成功,运行窗口一直黑屏怎么破。
    cjh1095358798
        55
    cjh1095358798  
       2019-04-19 16:17:29 +08:00
    大佬牛逼啊
    Foreverdxa
        56
    Foreverdxa  
       2019-04-19 17:19:37 +08:00
    硬核大牛。
    winboy
        57
    winboy  
       2019-04-19 17:22:50 +08:00
    欢迎分享到掘金呦 https://juejin.im/pins/recommended
    ldm0
        58
    ldm0  
       2019-04-19 18:41:52 +08:00
    酷!唤醒了我两个月前要写模拟器的想法。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1253 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 17:44 · PVG 01:44 · LAX 09:44 · JFK 12:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.