summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvin <git@vineetk.net>2024-07-07 13:04:10 -0400
committervin <git@vineetk.net>2024-07-07 13:04:16 -0400
commitca5a09cd94a5fc92e727cd69fb89f58760f34176 (patch)
tree75d4c030de9f07115dfd1b3ddaf46f284a16d6f4
parent3e0563ce059172001d06688809096972696f83a4 (diff)
fix warnings and move cpu registers+flags to header
-rw-r--r--cpu.c25
-rw-r--r--cpu.h26
2 files changed, 28 insertions, 23 deletions
diff --git a/cpu.c b/cpu.c
index 1345d8b..4b55818 100644
--- a/cpu.c
+++ b/cpu.c
@@ -35,29 +35,7 @@
35#define PULL() \ 35#define PULL() \
36 (peek(0x0100 + ++regs.sp)) 36 (peek(0x0100 + ++regs.sp))
37 37
38struct cpu_flags {
39 uint8_t carry : 1;
40 uint8_t zero : 1;
41 uint8_t interrupt_disable : 1;
42 uint8_t decimal_mode : 1;
43 uint8_t brk : 1;
44 uint8_t unused : 1;
45 uint8_t overflow : 1;
46 uint8_t negative : 1;
47};
48
49struct registers {
50 uint8_t a, x, y, sp;
51 struct cpu_flags status;
52 uint16_t pc;
53};
54struct registers regs = {0};
55
56struct Rom rom = {0}; 38struct Rom rom = {0};
57
58/* 64K address space, 16bit words */
59uint8_t memory[0x16000];
60
61uint32_t cycles = 0; 39uint32_t cycles = 0;
62 40
63bool page_crossed = false; 41bool page_crossed = false;
@@ -72,6 +50,8 @@ peek(uint16_t addr)
72 return rom.prg_rom[(addr - 0x8000) % 0x4000]; 50 return rom.prg_rom[(addr - 0x8000) % 0x4000];
73 else if (rom.prg_rom_size == 0x8000) 51 else if (rom.prg_rom_size == 0x8000)
74 return rom.prg_rom[addr - 0x8000]; 52 return rom.prg_rom[addr - 0x8000];
53 else
54 fprintf(stderr, "PRG ROG size is not 0x4000 nor 0x8000\n"), exit(1);
75 } else { 55 } else {
76 return memory[addr]; 56 return memory[addr];
77 } 57 }
@@ -953,7 +933,6 @@ interpret(void)
953 page_crossed = false; 933 page_crossed = false;
954 } 934 }
955 } 935 }
956loop_exit:
957} 936}
958 937
959/* https://www.nesdev.org/wiki/CPU_power_up_state */ 938/* https://www.nesdev.org/wiki/CPU_power_up_state */
diff --git a/cpu.h b/cpu.h
index ed17432..05c30fa 100644
--- a/cpu.h
+++ b/cpu.h
@@ -1,5 +1,29 @@
1#ifndef CPU_H
2#define CPU_H
3
1#include <stdint.h> 4#include <stdint.h>
2 5
6struct cpu_flags {
7 uint8_t carry : 1;
8 uint8_t zero : 1;
9 uint8_t interrupt_disable : 1;
10 uint8_t decimal_mode : 1;
11 uint8_t brk : 1;
12 uint8_t unused : 1;
13 uint8_t overflow : 1;
14 uint8_t negative : 1;
15};
16
17struct registers {
18 uint8_t a, x, y, sp;
19 struct cpu_flags status;
20 uint16_t pc;
21};
22struct registers regs = {0};
23
24/* 64K address space, 16bit words */
25uint8_t memory[0x16000];
26
3/* OFFICIAL OPCODES */ 27/* OFFICIAL OPCODES */
4void ADC(uint16_t arg); 28void ADC(uint16_t arg);
5void AND(uint16_t arg); 29void AND(uint16_t arg);
@@ -87,3 +111,5 @@ void SYA(uint16_t arg);
87void TOP(uint16_t arg); 111void TOP(uint16_t arg);
88void XAA(uint16_t arg); 112void XAA(uint16_t arg);
89void XAS(uint16_t arg); 113void XAS(uint16_t arg);
114
115#endif /* CPU_H */