#olympia #derive #macro-derive #instructions #emulation #cycle #accurate

olympia_derive

Olympia是一个Gameboy模拟器和工具包,旨在作为一个本地或WebAssembly应用程序运行,目标是提供周期计数精确的模拟。olympia_derive提供了一些用于olympia实现的proc宏。

1个不稳定版本

0.3.0 2020年5月10日

#27#accurate


3 个crate中使用 (通过 olympia_engine)

GPL-3.0-or-later

86KB
2K SLoC

olympia_derive

olympia_derive目前提供了一个derive宏,OlympiaInstruction。

以下是使用两个参数指令的示例

#[derive(OlympiaInstruction)]
#[olympia(
    opcode=0x00AA_A111,
    label="LD", 
    excluded(0b1010_1100)
)]
struct LoadRegisterConstant8 {
    #[olympia(dest, mask=0xA)]
    dest: ByteRegisterLookup,
    #[olympia(src)]
    src: u8,
}

以下是使用一个参数指令的示例

#[derive(OlympiaInstruction)]
#[olympia(
    opcode=0x110A_A000, 
    label="RET", 
)]
struct ReturnIf {
    #[olympia(single, mask=0xA)]
    dest: ByteRegisterLookup,
}

以下是使用无参数指令的示例

#[derive(OlympiaInstruction)]
#[olympia(
    opcode=0x1100_1001, 
    label="RET", 
)]
struct ReturnIf;

依赖

~335–790KB
~18K SLoC