OSCR
Open Source Cartridge Reader
Loading...
Searching...
No Matches
nes.h
1
2#pragma once
3#ifndef CRDB_NES_H_
4# define CRDB_NES_H_
5
6# include "common/CRDB.h"
7# include "cores/NES.h"
8
9namespace OSCR::Databases
10{
11 using OSCR::Cores::NES::crdbNESRecord;
12 using OSCR::Cores::NES::crdbNESMapperRecord;
13
15 : public OSCR::CRDB::GenericRecord<crdbNESMapperRecord>
16 {
17 void debug()
18 {
19# if defined(ENABLE_CRDB_DEBUG)
20 OSCR::Serial::printLine(F(" ===== ROM DEBUG INFO ===== "));
21
22 OSCR::Serial::print(FS(OSCR::Strings::Labels::MAPPER));
23 OSCR::Serial::printLine(_data.mapper);
24
25 OSCR::Serial::print(FS(OSCR::Strings::Labels::SUBMAPPER));
26 OSCR::Serial::printLine(_data.submapper);
27
28 OSCR::Serial::print(FS(OSCR::Strings::Common::Lower));
29 OSCR::Serial::print(FS(OSCR::Strings::Common::PRG));
30 OSCR::Serial::print(FS(OSCR::Strings::Symbol::LabelEnd));
31 OSCR::Serial::printLine(_data.prglo);
32
33 OSCR::Serial::print(FS(OSCR::Strings::Common::Upper));
34 OSCR::Serial::print(FS(OSCR::Strings::Common::PRG));
35 OSCR::Serial::print(FS(OSCR::Strings::Symbol::LabelEnd));
36 OSCR::Serial::printLine(_data.prghi);
37
38 OSCR::Serial::print(FS(OSCR::Strings::Common::Lower));
39 OSCR::Serial::print(FS(OSCR::Strings::Common::CHR));
40 OSCR::Serial::print(FS(OSCR::Strings::Symbol::LabelEnd));
41 OSCR::Serial::printLine(_data.chrlo);
42
43 OSCR::Serial::print(FS(OSCR::Strings::Common::Upper));
44 OSCR::Serial::print(FS(OSCR::Strings::Common::CHR));
45 OSCR::Serial::print(FS(OSCR::Strings::Symbol::LabelEnd));
46 OSCR::Serial::printLine(_data.chrhi);
47
48 OSCR::Serial::print(FS(OSCR::Strings::Common::Lower));
49 OSCR::Serial::print(FS(OSCR::Strings::Common::RAM));
50 OSCR::Serial::print(FS(OSCR::Strings::Symbol::LabelEnd));
51 OSCR::Serial::printLine(_data.ramlo);
52
53 OSCR::Serial::print(FS(OSCR::Strings::Common::Upper));
54 OSCR::Serial::print(FS(OSCR::Strings::Common::RAM));
55 OSCR::Serial::print(FS(OSCR::Strings::Symbol::LabelEnd));
56 OSCR::Serial::printLine(_data.ramhi);
57
58 OSCR::Serial::printLine(F(" ========================== "));
59# endif /* ENABLE_CRDB_DEBUG */
60 }
61 };
62
64 : public OSCR::CRDB::CRDB<NESMapperRecord, CRDB_RECORD_SIZE_NES_MAPPER, OSCR::CRDB::CRDBType::ByID>
65 {
66 using CRDB::CRDB;
67 public:
68 void nextRecord()
69 {
70 clearError();
71 readNum32(&currentRecord->data()->mapper);
72 readNum32(&currentRecord->data()->submapper);
73 readNum32(&currentRecord->data()->prglo);
74 readNum32(&currentRecord->data()->prghi);
75 readNum32(&currentRecord->data()->chrlo);
76 readNum32(&currentRecord->data()->chrhi);
77 readNum32(&currentRecord->data()->ramlo);
78 readNum32(&currentRecord->data()->ramhi);
79 }
80 };
81
83 : public OSCR::CRDB::GenericCartRecord<crdbNESRecord>
84 {
85 public:
86 void debug()
87 {
88# if defined(ENABLE_CRDB_DEBUG)
89 OSCR::Serial::printLine(F(" ===== ROM DEBUG INFO ===== "));
90
91 OSCR::Serial::print(FS(OSCR::Strings::Labels::NAME));
92 OSCR::Serial::printLine(_data.name);
93
94 OSCR::Serial::print(FS(OSCR::Strings::Labels::MAPPER));
95 OSCR::Serial::printLine(_data.mapper);
96
97 OSCR::Serial::print(FS(OSCR::Strings::Labels::SUBMAPPER));
98 OSCR::Serial::printLine(_data.submapper);
99
100 OSCR::Serial::print(FS(OSCR::Strings::Common::PRG));
101 OSCR::Serial::print(FS(OSCR::Strings::Labels::SIZE));
102 OSCR::Serial::printLine(_data.prgsize);
103
104 OSCR::Serial::print(FS(OSCR::Strings::Common::PRG));
105 OSCR::Serial::print(FS(OSCR::Strings::Symbol::LabelEnd));
106 OSCR::Serial::printLine(_data.prg);
107
108 OSCR::Serial::print(FS(OSCR::Strings::Common::CHR));
109 OSCR::Serial::print(FS(OSCR::Strings::Labels::SIZE));
110 OSCR::Serial::printLine(_data.chrsize);
111
112 OSCR::Serial::print(FS(OSCR::Strings::Common::CHR));
113 OSCR::Serial::print(FS(OSCR::Strings::Symbol::LabelEnd));
114 OSCR::Serial::printLine(_data.chr);
115
116 OSCR::Serial::print(FS(OSCR::Strings::Labels::RAM_SIZE));
117 OSCR::Serial::printLine(_data.ramsize);
118
119 OSCR::Serial::print(FS(OSCR::Strings::Labels::RAM));
120 OSCR::Serial::printLine(_data.ram);
121
122 OSCR::Serial::print(F("iNES: "));
123 char buffer[9];
124 snprintf_P(buffer, 9, PSTR("%02X%02X%02X%02X"), _data.iNES[0], _data.iNES[1], _data.iNES[2], _data.iNES[3]);
125 OSCR::Serial::printLine(buffer);
126
127 OSCR::Serial::printLine(F(" ========================== "));
128# endif /* ENABLE_CRDB_DEBUG */
129 }
130 };
131
132 class NES : public OSCR::CRDB::CRDB<NESRecord, CRDB_RECORD_SIZE_NES>
133 {
134 using CRDB::CRDB;
135 public:
136 void nextRecord()
137 {
138 clearError();
139 readNum32(currentRecord->data()->crc32);
140 readNum32(currentRecord->data()->id32a);
141 readNum32(currentRecord->data()->id32b);
142 readNum16(&currentRecord->data()->mapper);
143 readNum16(&currentRecord->data()->submapper);
144 readNum16(&currentRecord->data()->prgsize);
145 readNum16(&currentRecord->data()->chrsize);
146 readNum16(&currentRecord->data()->ramsize);
147 readBytes(&currentRecord->data()->iNES, 16);
148 readBytes(&currentRecord->data()->name, 100);
149 }
150 };
151}
152
153#endif /* CRDB_NES_H_ */
#define F(str)
Definition CRDB.h:313
Definition CRDB.h:63
Definition CRDB.h:81
Definition nes.h:133
Definition nes.h:65
Definition nes.h:84