-
Notifications
You must be signed in to change notification settings - Fork 100
Expand file tree
/
Copy pathsfc_famicom.h
More file actions
77 lines (61 loc) · 1.57 KB
/
sfc_famicom.h
File metadata and controls
77 lines (61 loc) · 1.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#pragma once
// License: MIT http://opensource.org/licenses/MIT
// Author: dustpg mailto:dustpg@gmail.com
#include "sfc_rom.h"
#include "sfc_code.h"
// typedef
struct sfc_famicom;
typedef struct sfc_famicom sfc_famicom_t;
/// <summary>
/// The SFC disassembly buf length
/// </summary>
enum { SFC_DISASSEMBLY_BUF_LEN2 = 48 };
// 指定地方反汇编
void sfc_fc_disassembly(
uint16_t address,
const sfc_famicom_t* famicom,
char buf[SFC_DISASSEMBLY_BUF_LEN2]
);
/// <summary>
/// StepFC: 扩展接口
/// </summary>
typedef struct {
// ROM 加载器读取信息
sfc_ecode(*load_rom)(void*, sfc_rom_info_t*);
// ROM 加载器卸载
sfc_ecode(*free_rom)(void*, sfc_rom_info_t*);
} sfc_interface_t;
/// <summary>
/// StepFC: Mapper接口
/// </summary>
typedef struct {
// Mapper 重置
sfc_ecode(*reset)(sfc_famicom_t*);
} sfc_mapper_t;
/// <summary>
/// FC 模拟器主体
/// </summary>
struct sfc_famicom {
// 参数
void* argument;
// 扩展接口
sfc_interface_t interfaces;
// Mapper接口
sfc_mapper_t mapper;
// ROM 信息
sfc_rom_info_t rom_info;
// 程序内存仓库(Bank)/窗口(Window)
uint8_t* prg_banks[0x10000 >> 13];
// 工作(work)/保存(save)内存
uint8_t save_memory[8 * 1024];
// 主内存
uint8_t main_memory[2 * 1024];
};
// 初始化
sfc_ecode sfc_famicom_init(
sfc_famicom_t* famicom,
void* argument,
const sfc_interface_t* interfaces
);
// 反初始化
void sfc_famicom_uninit(sfc_famicom_t*);