36 for (
var8 i = 0; i < bcd.size(); i += 1) {
37 n += (bcd[bcd.size() - 1 - i] & 0x0F) * m;
38 n += ((bcd[bcd.size() - 1 - i] >> 4) & 0x0F) * m * 10;
47 QVector<var8> bcd = QVector<var8>(s);
49 while (number != 0 && s != 0) {
51 bcd[s] = (number % 10);
52 number = (number / 10) | 0;
53 bcd[s] += (number % 10) << 4;
54 number = (number / 10) | 0;
65 for(
var16 i = from; i < from + size; i++)
68 for(
var16 i = from + size - 1; i >= from; i--)
79 for (
var16 i = addr, j = 0;
80 j < newData.length() && i < (addr + size); i++, j++)
83 for (
var16 i = addr + size - 1, j = 0;
84 j < newData.length() && i >= addr; i--, j++)
90 QVector<var8> raw =
getRange(addr, size);
92 codes.reserve(raw.size());
93 for (
var8 b : raw) codes.append(
static_cast<int>(b));
101 bytes.reserve(strCode.size());
102 for (
int v : strCode) bytes.append(
static_cast<var8>(v));
108 QVector<var8> rawHex =
getRange(addr, size, reverse);
111 for (
var16 i = 0; i < rawHex.length(); i++)
112 hexStr += QString::number(rawHex[i], 16);
114 hexStr = hexStr.toUpper();
119 var8 endLen = size * 2;
120 if(hexStr.length() < endLen)
121 hexStr = hexStr.rightJustified(endLen,
'0');
129 var16 hexValue = hex.toInt(
nullptr, 16);
130 var16 hexValueOrig = hexValue;
131 QVector<var8> hexArr;
140 while (hexValue > 0) {
141 hexArr.append(hexValue & 0xFF);
147 if (hexValueOrig <= 0xFF && size == 2)
167 QVector<var8> value =
getRange(addr, size, reverse);
171 var32 res = value.at(0);
174 for (
var8 i = 1; i < size; i++) {
180 return (res & (1 << bit)) != 0;
186 QVector<var8> val =
getRange(addr, size, reverse);
190 var32 res = val.at(0);
193 for (
var8 i = 1; i < size; i++) {
205 QString hex = QString::number(res, 16);
206 setHex(addr, size, hex, reverse);
211 auto value =
getRange(addr, 2, reverse);
213 var16 res = value[0];
222 var8 byteL = val & 0x00FF;
223 var8 byteH = (val & 0xFF00) >> 8;
248 for(
var16 i = 0; i < size; i++) {
249 ret.append(
getBit(addr, 1, 0));
250 ret.append(
getBit(addr, 1, 1));
251 ret.append(
getBit(addr, 1, 2));
252 ret.append(
getBit(addr, 1, 3));
253 ret.append(
getBit(addr, 1, 4));
254 ret.append(
getBit(addr, 1, 5));
255 ret.append(
getBit(addr, 1, 6));
256 ret.append(
getBit(addr, 1, 7));
271 for(
var16 i = 0; i < size * 8 && i < src.size(); i +=8 ) {
272 if((i + 0) < src.size())
273 setBit(addr, 1, 0, src.at(i + 0));
274 if((i + 1) < src.size())
275 setBit(addr, 1, 1, src.at(i + 1));
276 if((i + 2) < src.size())
277 setBit(addr, 1, 2, src.at(i + 2));
278 if((i + 3) < src.size())
279 setBit(addr, 1, 3, src.at(i + 3));
280 if((i + 4) < src.size())
281 setBit(addr, 1, 4, src.at(i + 4));
282 if((i + 5) < src.size())
283 setBit(addr, 1, 5, src.at(i + 5));
284 if((i + 6) < src.size())
285 setBit(addr, 1, 6, src.at(i + 6));
286 if((i + 7) < src.size())
287 setBit(addr, 1, 7, src.at(i + 7));
296 auto toChecksum =
getRange(addr, size);
301 var8 checksum = 0xFF;
307 for (
var16 i = 0; i < toChecksum.length(); i++) {
308 checksum -= toChecksum.at(i);
318 QVector<var8> bank2IndvChecksums;
319 bank2IndvChecksums.append(
getChecksum(0x4000, 0x462));
320 bank2IndvChecksums.append(
getChecksum(0x4462, 0x462));
321 bank2IndvChecksums.append(
getChecksum(0x48C4, 0x462));
322 bank2IndvChecksums.append(
getChecksum(0x4D26, 0x462));
323 bank2IndvChecksums.append(
getChecksum(0x5188, 0x462));
324 bank2IndvChecksums.append(
getChecksum(0x55EA, 0x462));
327 copyRange(0x5A4D, 0x6, bank2IndvChecksums);
337 QVector<var8> bank3IndvChecksums;
338 bank2IndvChecksums.append(
getChecksum(0x6000, 0x462));
339 bank2IndvChecksums.append(
getChecksum(0x6462, 0x462));
340 bank2IndvChecksums.append(
getChecksum(0x68C4, 0x462));
341 bank2IndvChecksums.append(
getChecksum(0x6D26, 0x462));
342 bank2IndvChecksums.append(
getChecksum(0x7188, 0x462));
343 bank2IndvChecksums.append(
getChecksum(0x75EA, 0x462));
345 copyRange(0x7A4D, 0x6, bank3IndvChecksums);
static FontsDB * inst()
< Number of font glyphs.
const QVector< int > convertToCode(QString str, int maxLen=11, const bool autoEnd=true) const
String -> font codes (see note; expensive).
const QString convertFromCode(const QVector< int > codes, const int maxLen=11) const
Font codes -> string (fast).
One loaded save: the raw 32 KB bytes, their expanded object tree, and the tools that move between the...
var8e var8
Everyday 8-bit alias. Exact (not "fastest") to dodge the pointer-width bug noted above.
var16e var16
Everyday 16-bit alias. Exact width to avoid the "fastest" widening bug.
var32e var32
Everyday 32-bit alias. Exact width to avoid the "fastest" widening bug.