-
Notifications
You must be signed in to change notification settings - Fork 100
Expand file tree
/
Copy pathmain.c
More file actions
49 lines (42 loc) · 1.35 KB
/
main.c
File metadata and controls
49 lines (42 loc) · 1.35 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
#include "sfc_famicom.h"
#include "sfc_cpu.h"
#include <stdio.h>
/// <summary>
/// 应用程序入口
/// </summary>
/// <returns></returns>
int main() {
sfc_famicom_t famicom;
sfc_famicom_init(&famicom, NULL, NULL);
printf(
"ROM: PRG-ROM: %d x 16kb CHR-ROM %d x 8kb Mapper: %03d\n",
(int)famicom.rom_info.count_prgrom16kb,
(int)famicom.rom_info.count_chrrom_8kb,
(int)famicom.rom_info.mapper_number
);
// V0 - NMI
uint16_t v0 = sfc_read_cpu_address(SFC_VERCTOR_NMI + 0, &famicom);
v0 |= sfc_read_cpu_address(SFC_VERCTOR_NMI + 1, &famicom) << 8;
// V1 - RESET
uint16_t v1 = sfc_read_cpu_address(SFC_VERCTOR_RESET + 0, &famicom);
v1 |= sfc_read_cpu_address(SFC_VERCTOR_RESET + 1, &famicom) << 8;
// V2 - IRQ/BRK
uint16_t v2 = sfc_read_cpu_address(SFC_VERCTOR_IRQBRK + 0, &famicom);
v2 |= sfc_read_cpu_address(SFC_VERCTOR_IRQBRK + 1, &famicom) << 8;
char b0[SFC_DISASSEMBLY_BUF_LEN2];
char b1[SFC_DISASSEMBLY_BUF_LEN2];
char b2[SFC_DISASSEMBLY_BUF_LEN2];
// 反汇编
sfc_fc_disassembly(v0, &famicom, b0);
sfc_fc_disassembly(v1, &famicom, b1);
sfc_fc_disassembly(v2, &famicom, b2);
printf(
"NMI: %s\n"
"RESET: %s\n"
"IRQ/BRK: %s\n",
b0, b1, b2
);
getchar();
sfc_famicom_uninit(&famicom);
return 0;
}