BBK Emulator

让步步高电子词典游戏重获新生

用 Rust 编写的 BBK A 系列电子词典游戏模拟器,完整支持 152 款经典游戏

Release License Downloads Quality Gate
向下滚动探索

什么是步步高电子词典?

BBK(步步高)A 系列电子词典是 2000 年代风靡中国校园的掌上设备。除了词典功能,它还内置了 6502 CPU,运行着大量由爱好者编写的游戏——从 RPG、策略到动作冒险,种类丰富。

这些游戏以 .gam 格式分发,运行在 159×96 像素的单色 LCD 屏幕上。如今通过 BBKEmu,你可以在现代设备上重温这些经典。

📟
BBK 词典 6502 CPU
🎮
.gam 152 款游戏
🦀
BBKEmu Rust 模拟器
0
支持游戏
98% 通过测试
0
LCD 分辨率
单色液晶屏
0
目标平台
Windows / macOS / Linux / Android
0
Rust 代码行数
零 C 依赖

核心特性

从 6502 CPU 到 LCD 显示,全栈 Rust 实现

6502 CPU 模拟

基于 mos6502 crate 的精确 6502 指令集模拟,完整支持 Bank-switched 内存映射,忠实还原步步高词典硬件。

LCD 显示模拟

159×96 像素单色 LCD 帧缓冲区,支持 LCD 残影效果和横竖屏切换,还原经典绿色液晶屏视觉体验。

键盘输入映射

完整的 BBK 按键矩阵模拟,支持方向键、确认键、取消键等全部按键,带可配置的按键重复间隔。

音频系统

可配置频率和时长的音频合成系统,还原步步高词典的蜂鸣器音效,支持游戏中的声音反馈。

作弊码 & 存档

支持 GameShark 格式作弊码、Save/Load State 存档功能,以及 SRAM 闪存模拟,让游戏体验更加灵活。

RetroArch 核心

完整的 libretro 核心,支持 RetroPad 映射、核心选项(CPU/Timer 速率、LCD 方向)、Save State 等 RetroArch 生态功能。

技术架构

清晰的三层架构,平台无关的核心引擎

前端
bbkemu Standalone 可执行文件
minifb 窗口
bbkemu-libretro libretro cdylib
RetroArch 核心
核心引擎
bbkemu-core 平台无关的库
6502 CPU Memory Bus LCD Framebuffer Keyboard Input Audio Font Renderer GAM Loader Save State
目标平台
Windows
macOS
Linux
Android

纯 Rust,零妥协

从 6502 CPU 到 LCD 帧缓冲区,全部用 Rust 从零实现

memory.rs
// Bank-switched memory bus
// BBK uses flash banking for ROM

pub struct MemoryBus {
    flash: Vec<u8>,       // 2 MiB flash
    ram: [u8; 0x10000],    // 64 KiB RAM
    bank_regs: [u8; 8],    // bank registers
}

impl MemoryBus {
    pub fn read(&self, addr: u16) -> u8 {
        match addr {
            0x0000..=0x3FFF => {
                // Banked ROM region
                let bank = self.bank_regs[...];
                self.flash[bank_offset + addr]
            }
            0x4000..=0x7FFF => self.ram[addr],
            // ... hardware registers
        }
    }
}
lcd.rs
// 159×96 monochrome LCD framebuffer
// with ghosting effect simulation

pub struct Lcd {
    buffer: [bool; 159 * 96],
    prev_buffer: [bool; 159 * 96],
    contrast: u8,
}

impl Lcd {
    pub fn set_pixel(&mut self,
        x: usize, y: usize, on: bool
    ) {
        if x < 159 && y < 96 {
            self.buffer[y * 159 + x] = on;
        }
    }

    pub fn render_rgb565(&self,
        out: &mut [u8],
    ) {
        // Green-tinted monochrome
        // LCD ghosting via prev_buffer
    }
}

快速开始

几行命令,即刻体验

🖥️

Standalone

1

下载最新版本

从 Releases 页面下载对应平台的二进制文件
2

准备 ROM 文件

bbkemu game.gam -8 8.BIN -e E.BIN
3

或自动搜索 ROM

bbkemu game.gam
🎮

RetroArch

1

下载 libretro 核心

从 Releases 页面下载对应平台的核心文件
2

放置 ROM 文件

复制到 system/BBKEmu/A4980/ 目录
3

加载核心并启动

Load Core → BBKEmu → Load Content
🔨

从源码编译

1

克隆仓库

git clone https://github.com/jiangxincode/BBKEmu.git
2

编译 Standalone

cargo build -p bbkemu --release
3

或编译 RetroArch 核心

cargo build -p bbkemu-libretro --release