@gaialabs/core 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +6598 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +2452 -0
- package/dist/index.d.mts +1590 -1508
- package/dist/index.mjs +5880 -6649
- package/dist/index.mjs.map +1 -1
- package/package.json +11 -11
- package/dist/index.d.ts +0 -2370
- package/dist/index.js +0 -7368
- package/dist/index.js.map +0 -1
package/dist/index.d.ts
DELETED
|
@@ -1,2370 +0,0 @@
|
|
|
1
|
-
import { SupabaseClient } from '@supabase/supabase-js';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Lightweight ROM state placeholder used during early development.
|
|
5
|
-
* This stub will be expanded as the ROM extraction pipeline matures.
|
|
6
|
-
*/
|
|
7
|
-
declare class RomState {
|
|
8
|
-
readonly cgram: Uint8Array<ArrayBuffer>;
|
|
9
|
-
readonly vram: Uint8Array<ArrayBuffer>;
|
|
10
|
-
/**
|
|
11
|
-
* Create ROM state from scene metadata.
|
|
12
|
-
* Parameters are currently unused but kept for future implementation.
|
|
13
|
-
*/
|
|
14
|
-
static fromScene(_baseDir: string, _root: unknown, _metaFile: string, _id: number): Promise<RomState>;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Utility helpers for working with RomState.
|
|
18
|
-
*/
|
|
19
|
-
declare class RomStateUtils {
|
|
20
|
-
/** Create an empty ROM state */
|
|
21
|
-
static createEmpty(): RomState;
|
|
22
|
-
/** Clear all data in the given ROM state */
|
|
23
|
-
static clear(state: RomState): void;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Represents the stack for the 65816 processor
|
|
28
|
-
*/
|
|
29
|
-
declare class Stack {
|
|
30
|
-
bytes: Uint8Array;
|
|
31
|
-
location: number;
|
|
32
|
-
constructor();
|
|
33
|
-
/**
|
|
34
|
-
* Push a byte onto the stack
|
|
35
|
-
*/
|
|
36
|
-
push(value: number): void;
|
|
37
|
-
/**
|
|
38
|
-
* Push a 16-bit value onto the stack (little-endian)
|
|
39
|
-
*/
|
|
40
|
-
pushUInt16(value: number): void;
|
|
41
|
-
/**
|
|
42
|
-
* Pop a byte from the stack
|
|
43
|
-
*/
|
|
44
|
-
popByte(): number;
|
|
45
|
-
/**
|
|
46
|
-
* Pop a 16-bit value from the stack (little-endian)
|
|
47
|
-
*/
|
|
48
|
-
popUInt16(): number;
|
|
49
|
-
/**
|
|
50
|
-
* Reset the stack to initial state
|
|
51
|
-
*/
|
|
52
|
-
reset(): void;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Manages the 65816 processor registers and status flags
|
|
57
|
-
*/
|
|
58
|
-
declare class Registers {
|
|
59
|
-
value: Record<string, number>;
|
|
60
|
-
stack: Stack;
|
|
61
|
-
constructor();
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
declare class MapExt<K, V> extends Map<K, V> {
|
|
65
|
-
constructor();
|
|
66
|
-
tryAdd(key: K, value: V): boolean;
|
|
67
|
-
setFlag(key: K, flag: number, value?: boolean): void;
|
|
68
|
-
clearFlag(key: K, flag: number): void;
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Manages CPU processor state during ROM analysis
|
|
72
|
-
* Converted from GaiaLib/Rom/Extraction/ProcessorStateManager.cs
|
|
73
|
-
*/
|
|
74
|
-
declare class ProcessorStateManager {
|
|
75
|
-
readonly stackPositions: MapExt<number, number>;
|
|
76
|
-
private readonly _buckets;
|
|
77
|
-
get(key: string): MapExt<number, number>;
|
|
78
|
-
/**
|
|
79
|
-
* Hydrate processor registers with stored state
|
|
80
|
-
* Uses Registers from gaia-core/assembly for processor state management
|
|
81
|
-
*/
|
|
82
|
-
hydrateRegisters(position: number, reg: Registers): void;
|
|
83
|
-
getStackPosition(location: number): number | undefined;
|
|
84
|
-
setStackPosition(location: number, value: number): void;
|
|
85
|
-
tryAddStackPosition(location: number, value: number): boolean;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* Provides low-level ROM data reading functionality
|
|
90
|
-
* Converted from GaiaLib/Rom/Extraction/RomDataReader.cs
|
|
91
|
-
*/
|
|
92
|
-
declare class RomDataReader {
|
|
93
|
-
readonly romData: Uint8Array;
|
|
94
|
-
position: number;
|
|
95
|
-
constructor(romData: Uint8Array);
|
|
96
|
-
readByte(): number;
|
|
97
|
-
readSByte(): number;
|
|
98
|
-
readUShort(): number;
|
|
99
|
-
readShort(): number;
|
|
100
|
-
readAddress(): number;
|
|
101
|
-
readInt(): number;
|
|
102
|
-
peekByte(): number;
|
|
103
|
-
peekShort(): number;
|
|
104
|
-
peekAddress(): number;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
/**
|
|
108
|
-
* Address type classifications
|
|
109
|
-
* Converted from GaiaLib/Enum/AddressType.cs
|
|
110
|
-
*/
|
|
111
|
-
declare enum AddressType {
|
|
112
|
-
Unknown = "Unknown",
|
|
113
|
-
Bank = "Bank",
|
|
114
|
-
Offset = "Offset",
|
|
115
|
-
Address = "Address",
|
|
116
|
-
WBank = "WBank",
|
|
117
|
-
Relative = "Relative"
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Address space types
|
|
121
|
-
* Converted from GaiaLib/Types/Address.cs
|
|
122
|
-
*/
|
|
123
|
-
declare enum AddressSpace {
|
|
124
|
-
None = "None",
|
|
125
|
-
ROM = "ROM",
|
|
126
|
-
WRAM = "WRAM",
|
|
127
|
-
SRAM = "SRAM",
|
|
128
|
-
System = "System"
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* SNES address structure
|
|
132
|
-
* Converted from GaiaLib/Types/Address.cs
|
|
133
|
-
*/
|
|
134
|
-
declare class Address {
|
|
135
|
-
offset: number;
|
|
136
|
-
bank: number;
|
|
137
|
-
static readonly UPPER_BANK = 32768;
|
|
138
|
-
static readonly DATA_BANK_FLAG = 64;
|
|
139
|
-
static readonly FAST_BANK_FLAG = 128;
|
|
140
|
-
constructor(bank: number, offset: number);
|
|
141
|
-
get isROM(): boolean;
|
|
142
|
-
get isCodeBank(): boolean;
|
|
143
|
-
get space(): AddressSpace;
|
|
144
|
-
toInt(): number;
|
|
145
|
-
toString(): string;
|
|
146
|
-
static fromInt(addr: number): Address;
|
|
147
|
-
static typeFromCode(code: string): AddressType;
|
|
148
|
-
static codeFromType(type: AddressType): string | null;
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
/**
|
|
152
|
-
* Member type definitions for data structures
|
|
153
|
-
* Converted from GaiaLib/Enum/MemberType.cs
|
|
154
|
-
*/
|
|
155
|
-
declare enum MemberType {
|
|
156
|
-
Byte = "Byte",
|
|
157
|
-
Word = "Word",
|
|
158
|
-
Offset = "Offset",
|
|
159
|
-
Address = "Address",
|
|
160
|
-
Binary = "Binary",
|
|
161
|
-
Code = "Code"
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
/**
|
|
165
|
-
* Processor register type definitions
|
|
166
|
-
* Converted from GaiaLib/Enum/RegisterType.cs
|
|
167
|
-
*/
|
|
168
|
-
declare enum RegisterType {
|
|
169
|
-
M = "M",
|
|
170
|
-
X = "X",
|
|
171
|
-
B = "B"
|
|
172
|
-
}
|
|
173
|
-
/**
|
|
174
|
-
* Status flags for 65816 processor
|
|
175
|
-
* Converted from GaiaLib/Enum/StatusFlags.cs
|
|
176
|
-
*
|
|
177
|
-
* Bit pattern: [ n v m x d i z c ]
|
|
178
|
-
* n = Negative
|
|
179
|
-
* v = Overflow
|
|
180
|
-
* m = Accumulator Mode
|
|
181
|
-
* x = Index Mode
|
|
182
|
-
* d = Decimal Mode
|
|
183
|
-
* i = IRQ Disable
|
|
184
|
-
* z = Zero
|
|
185
|
-
* c = Carry
|
|
186
|
-
*/
|
|
187
|
-
declare enum StatusFlags {
|
|
188
|
-
/**
|
|
189
|
-
* Clear before starting addition or subtraction.
|
|
190
|
-
* Arithmetic overflow:
|
|
191
|
-
* [addition - carry out of high bit:]
|
|
192
|
-
* 0 = no carry
|
|
193
|
-
* 1 = carry
|
|
194
|
-
* [subtraction - borrow required to subtract:]
|
|
195
|
-
* 0 = borrow required
|
|
196
|
-
* 1 = no borrow required
|
|
197
|
-
* [Logic:]
|
|
198
|
-
* receives bit shifted or rotated out;
|
|
199
|
-
* source of bit rotated in
|
|
200
|
-
*/
|
|
201
|
-
Carry = 1,
|
|
202
|
-
/**
|
|
203
|
-
* Indicates zero or non-zero result:
|
|
204
|
-
* 0 = non-zero result
|
|
205
|
-
* 1 = zero result
|
|
206
|
-
*/
|
|
207
|
-
Zero = 2,
|
|
208
|
-
/**
|
|
209
|
-
* Enables or disables processor's IRQ interrupt line:
|
|
210
|
-
* Set to disable interrupts by masking the IRQ line
|
|
211
|
-
* Clear to enable IRQ interrupts
|
|
212
|
-
*/
|
|
213
|
-
IrqDisable = 4,
|
|
214
|
-
/**
|
|
215
|
-
* Determines mode for add/subtract (not increment/decrement, though):
|
|
216
|
-
* Set to force decimal operation (BCD)
|
|
217
|
-
* Clear to return to binary operation
|
|
218
|
-
*/
|
|
219
|
-
DecimalMode = 8,
|
|
220
|
-
IndexMode = 16,
|
|
221
|
-
AccumulatorMode = 32,
|
|
222
|
-
/**
|
|
223
|
-
* Clear to reverse "set-overflow" hardware input.
|
|
224
|
-
* Indicates invalid carry into high bit of arithmetic
|
|
225
|
-
* result (two's-complement overflow):
|
|
226
|
-
* 0 = two's-complement result ok
|
|
227
|
-
* 1 = error if two's-complement arithmetic
|
|
228
|
-
*/
|
|
229
|
-
Overflow = 64,
|
|
230
|
-
/**
|
|
231
|
-
* Reflects most significant bit of result
|
|
232
|
-
* (the sign of a two's-complement binary number):
|
|
233
|
-
* 0 = high bit clear (positive result)
|
|
234
|
-
* 1 = high bit set (negative result)
|
|
235
|
-
*/
|
|
236
|
-
Negative = 128
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
/**
|
|
240
|
-
* Binary resource type definitions
|
|
241
|
-
* Converted from GaiaLib/Enum/BinType.cs
|
|
242
|
-
*/
|
|
243
|
-
declare enum BinType {
|
|
244
|
-
Bitmap = "Bitmap",
|
|
245
|
-
Tilemap = "Tilemap",
|
|
246
|
-
Tileset = "Tileset",
|
|
247
|
-
Palette = "Palette",
|
|
248
|
-
Sound = "Sound",
|
|
249
|
-
Music = "Music",
|
|
250
|
-
Unknown = "Unknown",
|
|
251
|
-
Meta17 = "Meta17",
|
|
252
|
-
Spritemap = "Spritemap",
|
|
253
|
-
Assembly = "Assembly",
|
|
254
|
-
Patch = "Patch",
|
|
255
|
-
Transform = "Transform"
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
/**
|
|
259
|
-
* Transform type definitions
|
|
260
|
-
* Converted from GaiaLib/Enum/XformType.cs
|
|
261
|
-
*/
|
|
262
|
-
declare enum XformType {
|
|
263
|
-
Lookup = "Lookup",
|
|
264
|
-
Replace = "Replace"
|
|
265
|
-
}
|
|
266
|
-
/**
|
|
267
|
-
* Transform definition
|
|
268
|
-
* Converted from GaiaLib/Types/XformDef.cs
|
|
269
|
-
*/
|
|
270
|
-
interface XformDef {
|
|
271
|
-
type: XformType;
|
|
272
|
-
key?: string;
|
|
273
|
-
value?: string;
|
|
274
|
-
keyIx?: number;
|
|
275
|
-
valueIx?: number;
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
declare class DbFile {
|
|
279
|
-
name: string;
|
|
280
|
-
type: string;
|
|
281
|
-
start: number;
|
|
282
|
-
end: number;
|
|
283
|
-
compressed?: boolean;
|
|
284
|
-
upper?: boolean;
|
|
285
|
-
group?: string;
|
|
286
|
-
scene?: string;
|
|
287
|
-
constructor(data: Partial<DbFile>);
|
|
288
|
-
}
|
|
289
|
-
declare class DbFileType {
|
|
290
|
-
name: string;
|
|
291
|
-
extension: string;
|
|
292
|
-
type: string;
|
|
293
|
-
isPatch: boolean;
|
|
294
|
-
isBlock: boolean;
|
|
295
|
-
header: number;
|
|
296
|
-
constructor(data: Partial<DbFileType>);
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
/**
|
|
300
|
-
* Database part definition
|
|
301
|
-
* Converted from GaiaLib/Database/DbPart.cs
|
|
302
|
-
*/
|
|
303
|
-
declare class DbPart {
|
|
304
|
-
name: string;
|
|
305
|
-
start: number;
|
|
306
|
-
end: number;
|
|
307
|
-
type: string;
|
|
308
|
-
bank?: number;
|
|
309
|
-
order?: number;
|
|
310
|
-
constructor(data: Partial<DbPart>);
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
declare class DbTransform {
|
|
314
|
-
key: string;
|
|
315
|
-
value: string;
|
|
316
|
-
constructor(data: Partial<DbTransform>);
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
/**
|
|
320
|
-
* Database block definition
|
|
321
|
-
* Converted from GaiaLib/Database/DbBlock.cs
|
|
322
|
-
*/
|
|
323
|
-
declare class DbBlock {
|
|
324
|
-
name: string;
|
|
325
|
-
movable: boolean;
|
|
326
|
-
group?: string;
|
|
327
|
-
scene?: string;
|
|
328
|
-
parts: DbPart[];
|
|
329
|
-
transforms?: DbTransform[];
|
|
330
|
-
postProcess?: string;
|
|
331
|
-
constructor(data: Partial<DbBlock>);
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
/**
|
|
335
|
-
* Interface for compression providers
|
|
336
|
-
*/
|
|
337
|
-
interface ICompressionProvider {
|
|
338
|
-
/**
|
|
339
|
-
* Expand (decompress) data
|
|
340
|
-
* @param srcData Source data buffer
|
|
341
|
-
* @param srcPosition Starting position in source data
|
|
342
|
-
* @param srcLen Length of source data to process
|
|
343
|
-
* @returns Expanded data
|
|
344
|
-
*/
|
|
345
|
-
expand(srcData: Uint8Array, srcPosition?: number, srcLen?: number): Uint8Array;
|
|
346
|
-
/**
|
|
347
|
-
* Compact (compress) data
|
|
348
|
-
* @param srcData Source data to compress
|
|
349
|
-
* @returns Compressed data
|
|
350
|
-
*/
|
|
351
|
-
compact(srcData: Uint8Array): Uint8Array;
|
|
352
|
-
}
|
|
353
|
-
|
|
354
|
-
/**
|
|
355
|
-
* Chunk file for ROM processing
|
|
356
|
-
* Converted from GaiaLib/Types/ChunkFile.cs
|
|
357
|
-
*/
|
|
358
|
-
declare class ChunkFile {
|
|
359
|
-
name: string;
|
|
360
|
-
size: number;
|
|
361
|
-
location: number;
|
|
362
|
-
type: DbFileType;
|
|
363
|
-
parts?: AsmBlock[];
|
|
364
|
-
includes?: Set<string>;
|
|
365
|
-
includeLookup?: Map<string, AsmBlock>;
|
|
366
|
-
bank?: number;
|
|
367
|
-
compressed?: boolean;
|
|
368
|
-
upper?: boolean;
|
|
369
|
-
rawData?: Uint8Array | null;
|
|
370
|
-
textData?: string;
|
|
371
|
-
transforms?: {
|
|
372
|
-
key: string;
|
|
373
|
-
value: string;
|
|
374
|
-
}[];
|
|
375
|
-
postProcess?: string;
|
|
376
|
-
mnemonics: Record<number, string>;
|
|
377
|
-
group?: string;
|
|
378
|
-
scene?: string;
|
|
379
|
-
constructor(name: string, size: number, location: number, type: DbFileType);
|
|
380
|
-
}
|
|
381
|
-
declare function createChunkFileFromDbFile(rom: Uint8Array, compression: ICompressionProvider, dbFile: DbFile, fileType: DbFileType): ChunkFile;
|
|
382
|
-
declare function createChunkFileFromDbBlock(block: DbBlock, fileType: DbFileType): ChunkFile;
|
|
383
|
-
/**
|
|
384
|
-
* Chunk file utilities
|
|
385
|
-
*/
|
|
386
|
-
declare class ChunkFileUtils {
|
|
387
|
-
/**
|
|
388
|
-
* Rebase blocks to a new location
|
|
389
|
-
*/
|
|
390
|
-
static rebase(chunkFile: ChunkFile, newLocation?: number): void;
|
|
391
|
-
/**
|
|
392
|
-
* Calculate the total size of all blocks
|
|
393
|
-
*/
|
|
394
|
-
static calculateSize(chunkFile: ChunkFile): number;
|
|
395
|
-
/**
|
|
396
|
-
* Check if a location is outside this block and return the part (matches C# IsOutside)
|
|
397
|
-
* Returns [isOutside, part] where part is the part containing the location
|
|
398
|
-
*/
|
|
399
|
-
static isOutsideWithPart(root: ChunkFile[], block: ChunkFile, location: number): [boolean, ChunkFile | null, AsmBlock | null];
|
|
400
|
-
/**
|
|
401
|
-
* Check if a location is inside this block and return the part (matches C# IsInside)
|
|
402
|
-
* Returns [isInside, part] where part is the part containing the location
|
|
403
|
-
*/
|
|
404
|
-
static isInsideWithPart(block: ChunkFile, location: number): [boolean, AsmBlock | null];
|
|
405
|
-
/**
|
|
406
|
-
* Check if a location is outside this block (shorthand version)
|
|
407
|
-
*/
|
|
408
|
-
static isOutside(block: ChunkFile, location: number): boolean;
|
|
409
|
-
/**
|
|
410
|
-
* Check if a location is inside this block (shorthand version)
|
|
411
|
-
*/
|
|
412
|
-
static isInside(block: ChunkFile, location: number): boolean;
|
|
413
|
-
/**
|
|
414
|
-
* Get all included blocks
|
|
415
|
-
*/
|
|
416
|
-
static getIncludes(chunkFile: ChunkFile): ChunkFile[];
|
|
417
|
-
}
|
|
418
|
-
|
|
419
|
-
/**
|
|
420
|
-
* COP instruction definition
|
|
421
|
-
* Converted from GaiaLib/Database/CopDef.cs
|
|
422
|
-
*/
|
|
423
|
-
declare class CopDef {
|
|
424
|
-
id: number;
|
|
425
|
-
name: string;
|
|
426
|
-
size: number;
|
|
427
|
-
parts: string[];
|
|
428
|
-
halt: boolean;
|
|
429
|
-
constructor(data: Partial<CopDef>);
|
|
430
|
-
}
|
|
431
|
-
|
|
432
|
-
declare class OpCode {
|
|
433
|
-
code: number;
|
|
434
|
-
mnem: string;
|
|
435
|
-
mode: string;
|
|
436
|
-
constructor(code: number, mnem: string, mode: string);
|
|
437
|
-
}
|
|
438
|
-
|
|
439
|
-
/**
|
|
440
|
-
* Represents a single assembly operation/instruction
|
|
441
|
-
*/
|
|
442
|
-
declare class Op extends OpCode {
|
|
443
|
-
location: number;
|
|
444
|
-
operands: unknown[];
|
|
445
|
-
size: number;
|
|
446
|
-
copDef?: CopDef;
|
|
447
|
-
constructor(code: OpCode, location?: number, operands?: unknown[], size?: number);
|
|
448
|
-
}
|
|
449
|
-
/**
|
|
450
|
-
* Represents a block of assembly code or data
|
|
451
|
-
*/
|
|
452
|
-
declare class AsmBlock {
|
|
453
|
-
label?: string;
|
|
454
|
-
location: number;
|
|
455
|
-
size: number;
|
|
456
|
-
isString: boolean;
|
|
457
|
-
objList: any[];
|
|
458
|
-
structName?: string;
|
|
459
|
-
bank?: number;
|
|
460
|
-
includes?: Set<{
|
|
461
|
-
block: ChunkFile;
|
|
462
|
-
part: AsmBlock;
|
|
463
|
-
}>;
|
|
464
|
-
constructor(location?: number, size?: number, isString?: boolean, label?: string, structName?: string, bank?: number);
|
|
465
|
-
}
|
|
466
|
-
/**
|
|
467
|
-
* Database part utilities
|
|
468
|
-
*/
|
|
469
|
-
declare class AsmBlockUtils {
|
|
470
|
-
/**
|
|
471
|
-
* Check if a location is inside this part
|
|
472
|
-
*/
|
|
473
|
-
static isInside(part: AsmBlock, location: number): boolean;
|
|
474
|
-
/**
|
|
475
|
-
* Check if a location is outside this part
|
|
476
|
-
*/
|
|
477
|
-
static isOutside(part: AsmBlock, location: number): boolean;
|
|
478
|
-
}
|
|
479
|
-
|
|
480
|
-
/**
|
|
481
|
-
* Bit stream for reading/writing binary data at bit level
|
|
482
|
-
* Converted from GaiaLib/Types/BitStream.cs
|
|
483
|
-
*/
|
|
484
|
-
declare class BitStream {
|
|
485
|
-
private static readonly NIBBLE_MASK;
|
|
486
|
-
private static readonly NIBBLE_PERFECT_POSITION;
|
|
487
|
-
private data;
|
|
488
|
-
private position;
|
|
489
|
-
private bitFlag;
|
|
490
|
-
private writeSample;
|
|
491
|
-
constructor(data: Uint8Array, position?: number);
|
|
492
|
-
get dataArray(): Uint8Array;
|
|
493
|
-
get currentPosition(): number;
|
|
494
|
-
set currentPosition(value: number);
|
|
495
|
-
/**
|
|
496
|
-
* Read a byte from the stream
|
|
497
|
-
* @returns The byte read, or -1 if the end of the data has been reached
|
|
498
|
-
*/
|
|
499
|
-
readByte(): number;
|
|
500
|
-
/**
|
|
501
|
-
* Read a ushort from the stream (ignores the current bit flag)
|
|
502
|
-
* @returns The short read, or -1 if the end of the data has been reached
|
|
503
|
-
*/
|
|
504
|
-
readShort(): number;
|
|
505
|
-
/**
|
|
506
|
-
* Read a bit from the stream
|
|
507
|
-
* @returns True if the current bit at bitFlag is set, false otherwise
|
|
508
|
-
*/
|
|
509
|
-
readBit(): boolean;
|
|
510
|
-
/**
|
|
511
|
-
* Read a nibble from the stream
|
|
512
|
-
* @returns The nibble read, or -1 if the end of the data has been reached
|
|
513
|
-
*/
|
|
514
|
-
readNibble(): number;
|
|
515
|
-
/**
|
|
516
|
-
* Write a bit to the stream
|
|
517
|
-
* @param set True if the current bit should be set, false otherwise
|
|
518
|
-
*/
|
|
519
|
-
writeBit(set: boolean): void;
|
|
520
|
-
/**
|
|
521
|
-
* Write a byte to the stream
|
|
522
|
-
* @param value The byte to write
|
|
523
|
-
*/
|
|
524
|
-
writeByte(value: number): void;
|
|
525
|
-
/**
|
|
526
|
-
* Write a nibble to the stream
|
|
527
|
-
* @param value The nibble to write
|
|
528
|
-
*/
|
|
529
|
-
writeNibble(value: number): void;
|
|
530
|
-
flush(): void;
|
|
531
|
-
}
|
|
532
|
-
|
|
533
|
-
/**
|
|
534
|
-
* Registry for compression providers
|
|
535
|
-
* Allows registration of compression implementations by string ID
|
|
536
|
-
*/
|
|
537
|
-
declare class CompressionRegistry {
|
|
538
|
-
private static providers;
|
|
539
|
-
/**
|
|
540
|
-
* Register a compression provider
|
|
541
|
-
* @param id String identifier for the compression type
|
|
542
|
-
* @param factory Factory function that creates the compression provider
|
|
543
|
-
*/
|
|
544
|
-
static register(id: string, factory: () => ICompressionProvider): void;
|
|
545
|
-
/**
|
|
546
|
-
* Get a compression provider by ID
|
|
547
|
-
* @param id String identifier for the compression type
|
|
548
|
-
* @returns Compression provider instance
|
|
549
|
-
*/
|
|
550
|
-
static get(id: string): ICompressionProvider;
|
|
551
|
-
/**
|
|
552
|
-
* Check if a compression provider is registered
|
|
553
|
-
* @param id String identifier for the compression type
|
|
554
|
-
* @returns True if provider is registered
|
|
555
|
-
*/
|
|
556
|
-
static has(id: string): boolean;
|
|
557
|
-
/**
|
|
558
|
-
* Get list of registered provider IDs
|
|
559
|
-
* @returns Array of registered provider IDs
|
|
560
|
-
*/
|
|
561
|
-
static getRegisteredIds(): string[];
|
|
562
|
-
/**
|
|
563
|
-
* Clear all registered providers (mainly for testing)
|
|
564
|
-
*/
|
|
565
|
-
static clear(): void;
|
|
566
|
-
}
|
|
567
|
-
|
|
568
|
-
/**
|
|
569
|
-
* ROM processing constants
|
|
570
|
-
* Converted from GaiaLib/Types/RomProcessingConstants.cs
|
|
571
|
-
*/
|
|
572
|
-
declare class RomProcessingConstants {
|
|
573
|
-
static readonly PAGE_SIZE = 32768;
|
|
574
|
-
static readonly SNES_HEADER_SIZE = 80;
|
|
575
|
-
static readonly DICTIONARIES: string[];
|
|
576
|
-
static readonly DICT_COMMANDS: number[];
|
|
577
|
-
static readonly END_CHARS: number[];
|
|
578
|
-
static readonly WHITESPACE: string[];
|
|
579
|
-
static readonly OPERATORS: string[];
|
|
580
|
-
static readonly COMMA_SPACE: string[];
|
|
581
|
-
static readonly ADDRESS_SPACE: string[];
|
|
582
|
-
static readonly SYMBOL_SPACE: string[];
|
|
583
|
-
static readonly LABEL_SPACE: string[];
|
|
584
|
-
static readonly OBJECT_SPACE: string[];
|
|
585
|
-
static readonly COP_SPLIT_CHARS: string[];
|
|
586
|
-
static readonly WHITESPACE_REGEX: RegExp;
|
|
587
|
-
static readonly COMMA_SPACE_REGEX: RegExp;
|
|
588
|
-
static readonly SYMBOL_SPACE_REGEX: RegExp;
|
|
589
|
-
static readonly LABEL_SPACE_REGEX: RegExp;
|
|
590
|
-
static readonly OBJECT_SPACE_REGEX: RegExp;
|
|
591
|
-
static readonly ADDRESS_SPACE_REGEX: RegExp;
|
|
592
|
-
static readonly COP_SPLIT_REGEX: RegExp;
|
|
593
|
-
static readonly COMMA_SPACE_TRIM_REGEX: RegExp;
|
|
594
|
-
/**
|
|
595
|
-
* Gets the size of an object for processing purposes
|
|
596
|
-
* @param obj The object to get the size for
|
|
597
|
-
* @returns Size in bytes
|
|
598
|
-
* @throws Error when unable to determine size
|
|
599
|
-
*/
|
|
600
|
-
static getSize(obj: unknown): number;
|
|
601
|
-
}
|
|
602
|
-
/**
|
|
603
|
-
* BlockReader specific constants
|
|
604
|
-
*/
|
|
605
|
-
declare class BlockReaderConstants {
|
|
606
|
-
static readonly REF_SEARCH_MAX_RANGE = 416;
|
|
607
|
-
static readonly BANK_MASK_CHECK = 64;
|
|
608
|
-
static readonly BYTE_DELIMITER_THRESHOLD = 256;
|
|
609
|
-
static readonly BANK_HIGH_MEMORY_1 = 126;
|
|
610
|
-
static readonly BANK_HIGH_MEMORY_2 = 127;
|
|
611
|
-
static readonly POINTER_CHARACTERS: string[];
|
|
612
|
-
static readonly WIDE_STRING_TYPE = "WideString";
|
|
613
|
-
static readonly BINARY_TYPE = "Binary";
|
|
614
|
-
static readonly CODE_TYPE = "Code";
|
|
615
|
-
static readonly LOCATION_FORMAT = "loc_{0:X6}";
|
|
616
|
-
static readonly TYPE_NAME_FORMAT = "{0}_{1:X6}";
|
|
617
|
-
static readonly OFFSET_FORMAT = "+{0:X}";
|
|
618
|
-
static readonly MARKER_FORMAT = "+M";
|
|
619
|
-
static readonly NEGATIVE_OFFSET_FORMAT = "-{0:X}";
|
|
620
|
-
static readonly NEGATIVE_MARKER_FORMAT = "-M";
|
|
621
|
-
}
|
|
622
|
-
|
|
623
|
-
/**
|
|
624
|
-
* Location wrapper for additional metadata
|
|
625
|
-
* Converted from GaiaLib/Types/LocationWrapper.cs
|
|
626
|
-
*/
|
|
627
|
-
declare class LocationWrapper {
|
|
628
|
-
location: number;
|
|
629
|
-
type: AddressType;
|
|
630
|
-
constructor(location: number, type: AddressType);
|
|
631
|
-
}
|
|
632
|
-
|
|
633
|
-
/**
|
|
634
|
-
* Database string command definition
|
|
635
|
-
* Converted from GaiaLib/Database/DbStringCommand.cs
|
|
636
|
-
*/
|
|
637
|
-
declare class DbStringCommand {
|
|
638
|
-
id: number;
|
|
639
|
-
name: string;
|
|
640
|
-
types: MemberType[];
|
|
641
|
-
delimiter?: number;
|
|
642
|
-
halt: boolean;
|
|
643
|
-
constructor(data: Partial<DbStringCommand>);
|
|
644
|
-
}
|
|
645
|
-
/**
|
|
646
|
-
* Database string layer definition
|
|
647
|
-
* Converted from GaiaLib/Database/DbStringLayer.cs
|
|
648
|
-
*/
|
|
649
|
-
interface DbStringLayer {
|
|
650
|
-
base: number;
|
|
651
|
-
map: string[];
|
|
652
|
-
}
|
|
653
|
-
/**
|
|
654
|
-
* Database string type definition
|
|
655
|
-
* Converted from GaiaLib/Database/DbStringType.cs
|
|
656
|
-
*/
|
|
657
|
-
declare class DbStringType {
|
|
658
|
-
name: string;
|
|
659
|
-
delimiter: string;
|
|
660
|
-
terminator: number;
|
|
661
|
-
shiftType?: string;
|
|
662
|
-
characterMap: string[];
|
|
663
|
-
commands: Record<string, DbStringCommand>;
|
|
664
|
-
commandLookup: Record<number, DbStringCommand>;
|
|
665
|
-
layers: DbStringLayer[];
|
|
666
|
-
greedyTerminator: boolean;
|
|
667
|
-
constructor(data: Partial<DbStringType>);
|
|
668
|
-
}
|
|
669
|
-
/**
|
|
670
|
-
* String type utilities
|
|
671
|
-
*/
|
|
672
|
-
declare class DbStringTypeUtils {
|
|
673
|
-
private static readonly shiftDownFunctions;
|
|
674
|
-
private static readonly shiftUpFunctions;
|
|
675
|
-
static getShiftDown(shiftType?: string): (x: number) => number;
|
|
676
|
-
static getShiftUp(shiftType?: string): (x: number) => number;
|
|
677
|
-
}
|
|
678
|
-
|
|
679
|
-
/**
|
|
680
|
-
* String marker for positioning
|
|
681
|
-
* Converted from GaiaLib/Types/StringMarker.cs
|
|
682
|
-
*/
|
|
683
|
-
interface StringMarker {
|
|
684
|
-
offset: number;
|
|
685
|
-
}
|
|
686
|
-
/**
|
|
687
|
-
* String wrapper with type and location information
|
|
688
|
-
* Converted from GaiaLib/Types/StringWrapper.cs
|
|
689
|
-
*/
|
|
690
|
-
interface StringWrapper {
|
|
691
|
-
string: string;
|
|
692
|
-
type: DbStringType;
|
|
693
|
-
marker: number;
|
|
694
|
-
location: number;
|
|
695
|
-
}
|
|
696
|
-
/**
|
|
697
|
-
* String entry (commented out in original C# code)
|
|
698
|
-
* Converted from GaiaLib/Types/StringEntry.cs
|
|
699
|
-
*/
|
|
700
|
-
interface StringEntry {
|
|
701
|
-
block: AsmBlock;
|
|
702
|
-
index: number;
|
|
703
|
-
size: number;
|
|
704
|
-
data: Uint8Array;
|
|
705
|
-
}
|
|
706
|
-
/**
|
|
707
|
-
* String size comparer utility
|
|
708
|
-
* Converted from GaiaLib/Types/StringSizeComparer.cs
|
|
709
|
-
*/
|
|
710
|
-
declare class StringSizeComparer {
|
|
711
|
-
/**
|
|
712
|
-
* Compare two strings by length
|
|
713
|
-
*/
|
|
714
|
-
static compare(a: string, b: string): number;
|
|
715
|
-
/**
|
|
716
|
-
* Compare two StringWrapper objects by string length
|
|
717
|
-
*/
|
|
718
|
-
static compareWrappers(a: StringWrapper, b: StringWrapper): number;
|
|
719
|
-
}
|
|
720
|
-
|
|
721
|
-
/**
|
|
722
|
-
* Structure definition
|
|
723
|
-
* Converted from GaiaLib/Types/StructDef.cs
|
|
724
|
-
*/
|
|
725
|
-
interface StructDef {
|
|
726
|
-
name: string;
|
|
727
|
-
parts: unknown[];
|
|
728
|
-
}
|
|
729
|
-
|
|
730
|
-
/**
|
|
731
|
-
* Table entry definition
|
|
732
|
-
* Converted from GaiaLib/Types/TableEntry.cs
|
|
733
|
-
*/
|
|
734
|
-
interface TableEntry {
|
|
735
|
-
location: number;
|
|
736
|
-
object: unknown;
|
|
737
|
-
}
|
|
738
|
-
/**
|
|
739
|
-
* Creates a new TableEntry
|
|
740
|
-
*/
|
|
741
|
-
declare function createTableEntry(location: number, object?: unknown): TableEntry;
|
|
742
|
-
|
|
743
|
-
declare class TypedNumber {
|
|
744
|
-
value: number;
|
|
745
|
-
size: number;
|
|
746
|
-
constructor(value: number, size: number);
|
|
747
|
-
}
|
|
748
|
-
declare class Byte extends TypedNumber {
|
|
749
|
-
constructor(value: number);
|
|
750
|
-
}
|
|
751
|
-
declare class Word extends TypedNumber {
|
|
752
|
-
constructor(value: number);
|
|
753
|
-
}
|
|
754
|
-
declare class Long extends TypedNumber {
|
|
755
|
-
constructor(value: number);
|
|
756
|
-
}
|
|
757
|
-
|
|
758
|
-
/**
|
|
759
|
-
* Database entry point definition
|
|
760
|
-
* Converted from GaiaLib/Database/DbEntryPoint.cs
|
|
761
|
-
*/
|
|
762
|
-
interface DbEntryPoint {
|
|
763
|
-
location: number;
|
|
764
|
-
name: string;
|
|
765
|
-
}
|
|
766
|
-
|
|
767
|
-
/**
|
|
768
|
-
* Database path configuration
|
|
769
|
-
* Converted from GaiaLib/Database/DbPath.cs
|
|
770
|
-
*/
|
|
771
|
-
interface DbPath {
|
|
772
|
-
folder: string;
|
|
773
|
-
extension: string;
|
|
774
|
-
}
|
|
775
|
-
/**
|
|
776
|
-
* Creates a default DbPath
|
|
777
|
-
*/
|
|
778
|
-
declare function createDbPath(folder?: string, extension?: string): DbPath;
|
|
779
|
-
|
|
780
|
-
/**
|
|
781
|
-
* Database configuration
|
|
782
|
-
* Converted from GaiaLib/Database/DbConfig.cs
|
|
783
|
-
*/
|
|
784
|
-
interface DbConfig {
|
|
785
|
-
sfxLocation: number;
|
|
786
|
-
sfxCount: number;
|
|
787
|
-
compression: string;
|
|
788
|
-
entryPoints: DbEntryPoint[];
|
|
789
|
-
paths: Record<BinType, DbPath>;
|
|
790
|
-
}
|
|
791
|
-
|
|
792
|
-
/**
|
|
793
|
-
* Database structure definition
|
|
794
|
-
* Converted from GaiaLib/Database/DbStruct.cs
|
|
795
|
-
*/
|
|
796
|
-
declare class DbStruct {
|
|
797
|
-
name: string;
|
|
798
|
-
types?: string[];
|
|
799
|
-
parent?: string;
|
|
800
|
-
delimiter?: number;
|
|
801
|
-
discriminator?: number;
|
|
802
|
-
constructor(data: Partial<DbStruct>);
|
|
803
|
-
}
|
|
804
|
-
|
|
805
|
-
declare class DbAddressingMode {
|
|
806
|
-
name: string;
|
|
807
|
-
shorthand: string;
|
|
808
|
-
operands: string[];
|
|
809
|
-
size: number;
|
|
810
|
-
formatString?: string;
|
|
811
|
-
parseRegex?: string;
|
|
812
|
-
instructions: Record<string, number>;
|
|
813
|
-
constructor(data: Partial<DbAddressingMode>);
|
|
814
|
-
}
|
|
815
|
-
|
|
816
|
-
interface DbAsset {
|
|
817
|
-
index: number;
|
|
818
|
-
type: string;
|
|
819
|
-
file: string;
|
|
820
|
-
scene: string;
|
|
821
|
-
meta: any;
|
|
822
|
-
}
|
|
823
|
-
|
|
824
|
-
declare class DbScene {
|
|
825
|
-
name: string;
|
|
826
|
-
id: number;
|
|
827
|
-
description?: string;
|
|
828
|
-
assets: DbAsset[];
|
|
829
|
-
constructor(data: Partial<DbScene>);
|
|
830
|
-
}
|
|
831
|
-
|
|
832
|
-
declare class DbGroup {
|
|
833
|
-
name: string;
|
|
834
|
-
prefix: string;
|
|
835
|
-
description?: string;
|
|
836
|
-
scenes: Record<string, DbScene>;
|
|
837
|
-
constructor(data: Partial<DbGroup>);
|
|
838
|
-
}
|
|
839
|
-
|
|
840
|
-
interface DbGameRomModule {
|
|
841
|
-
mnemonics: Record<number, string>;
|
|
842
|
-
overrides: Record<number, Record<string, number>>;
|
|
843
|
-
rewrites: Record<string, number>;
|
|
844
|
-
blocks: Record<string, Record<string, Partial<DbBlock>>>;
|
|
845
|
-
files: Record<string, Record<string, Record<string, Partial<DbFile>>>>;
|
|
846
|
-
config: DbConfig;
|
|
847
|
-
labels: DbLabel[];
|
|
848
|
-
structs: Record<string, DbStruct>;
|
|
849
|
-
copdef: Record<string, Partial<CopDef>>;
|
|
850
|
-
strings: Record<string, Partial<DbStringType>>;
|
|
851
|
-
transforms: Record<string, Partial<DbTransform>[]>;
|
|
852
|
-
addrModes: Record<string, Partial<DbAddressingMode>>;
|
|
853
|
-
groups: Record<string, Partial<DbGroup>>;
|
|
854
|
-
fileTypes: Record<string, Partial<DbFileType>>;
|
|
855
|
-
}
|
|
856
|
-
interface DbBaseRomModule extends DbGameRomModule {
|
|
857
|
-
baseRomFiles: ChunkFile[];
|
|
858
|
-
}
|
|
859
|
-
|
|
860
|
-
/**
|
|
861
|
-
* Main database root class
|
|
862
|
-
* Converted from GaiaLib/Database/DbRoot.cs
|
|
863
|
-
*/
|
|
864
|
-
interface DbRoot {
|
|
865
|
-
copDef: Record<number, CopDef>;
|
|
866
|
-
copLookup: Record<string, CopDef>;
|
|
867
|
-
mnemonics: Record<number, string>;
|
|
868
|
-
structs: Record<string, DbStruct>;
|
|
869
|
-
stringTypes: Record<string, DbStringType>;
|
|
870
|
-
stringDelimiters: string[];
|
|
871
|
-
files: DbFile[];
|
|
872
|
-
config: DbConfig;
|
|
873
|
-
blocks: DbBlock[];
|
|
874
|
-
overrides: Record<number, Record<string, number>>;
|
|
875
|
-
labels: Record<number, string>;
|
|
876
|
-
rewrites: Record<number, number>;
|
|
877
|
-
entryPoints: DbEntryPoint[];
|
|
878
|
-
opCodes: Record<number, OpCode>;
|
|
879
|
-
opLookup: Record<string, OpCode[]>;
|
|
880
|
-
addrLookup: Record<string, DbAddressingMode>;
|
|
881
|
-
compression: ICompressionProvider;
|
|
882
|
-
baseRomFiles?: ChunkFile[];
|
|
883
|
-
projectFiles?: ChunkFile[];
|
|
884
|
-
groups: Record<string, DbGroup>;
|
|
885
|
-
scenes: Record<number, DbScene>;
|
|
886
|
-
fileTypes: Record<string, DbFileType>;
|
|
887
|
-
fileExtLookup: Record<string, DbFileType>;
|
|
888
|
-
}
|
|
889
|
-
/**
|
|
890
|
-
* Database root utilities
|
|
891
|
-
*/
|
|
892
|
-
declare class DbRootUtils {
|
|
893
|
-
/**
|
|
894
|
-
* JSON serialization options
|
|
895
|
-
*/
|
|
896
|
-
/**
|
|
897
|
-
* Load database from a single file
|
|
898
|
-
*/
|
|
899
|
-
static fromFolder(folderPath: string, systemPath: string): Promise<DbRoot>;
|
|
900
|
-
/**
|
|
901
|
-
* Load database from folder structure
|
|
902
|
-
*/
|
|
903
|
-
static gameModuleFromFolder(folderPath: string, systemPath: string): Promise<DbGameRomModule>;
|
|
904
|
-
static fromGameModule(module: DbGameRomModule): DbRoot;
|
|
905
|
-
static applyFolder(root: DbRoot, folderPath: string, sourceFiles?: ChunkFile[]): Promise<ChunkFile[]>;
|
|
906
|
-
static extractAllContent(root: DbRoot, romPath: string, outPath: string): Promise<void>;
|
|
907
|
-
static rebuildAllContent(root: DbRoot, inPath: string[], outPath: string): Promise<void>;
|
|
908
|
-
}
|
|
909
|
-
|
|
910
|
-
/**
|
|
911
|
-
* Database label definition
|
|
912
|
-
* Converted from GaiaLib/Database/DbLabel.cs
|
|
913
|
-
*/
|
|
914
|
-
interface DbLabel {
|
|
915
|
-
location: number;
|
|
916
|
-
label: string;
|
|
917
|
-
}
|
|
918
|
-
|
|
919
|
-
/**
|
|
920
|
-
* Database mnemonic definition
|
|
921
|
-
* Converted from GaiaLib/Database/DbMnemonic.cs
|
|
922
|
-
*/
|
|
923
|
-
interface DbMnemonic {
|
|
924
|
-
key: number;
|
|
925
|
-
value: string;
|
|
926
|
-
metadata?: string;
|
|
927
|
-
}
|
|
928
|
-
|
|
929
|
-
declare class DbOverride {
|
|
930
|
-
location: number;
|
|
931
|
-
register: string;
|
|
932
|
-
value: number;
|
|
933
|
-
constructor(values: Partial<DbOverride>);
|
|
934
|
-
}
|
|
935
|
-
|
|
936
|
-
/**
|
|
937
|
-
* Database rewrite rule definition
|
|
938
|
-
* Converted from GaiaLib/Database/DbRewrite.cs
|
|
939
|
-
*/
|
|
940
|
-
interface DbRewrite {
|
|
941
|
-
location: number;
|
|
942
|
-
value: number;
|
|
943
|
-
}
|
|
944
|
-
|
|
945
|
-
/**
|
|
946
|
-
* Database sound effect definition
|
|
947
|
-
* Converted from GaiaLib/Database/DbSfx.cs
|
|
948
|
-
*/
|
|
949
|
-
interface DbSfx {
|
|
950
|
-
location: number;
|
|
951
|
-
size: number;
|
|
952
|
-
names: string[];
|
|
953
|
-
}
|
|
954
|
-
|
|
955
|
-
/**
|
|
956
|
-
* Manages references, chunks, and markers during ROM analysis
|
|
957
|
-
* Converted from GaiaLib/Rom/Extraction/ReferenceManager.cs
|
|
958
|
-
*/
|
|
959
|
-
declare class ReferenceManager {
|
|
960
|
-
readonly structTable: Map<number, string>;
|
|
961
|
-
readonly markerTable: Map<number, number>;
|
|
962
|
-
readonly nameTable: Map<number, string>;
|
|
963
|
-
private readonly root;
|
|
964
|
-
constructor(root: DbRoot);
|
|
965
|
-
tryGetStruct(location: number): {
|
|
966
|
-
found: boolean;
|
|
967
|
-
chunkType?: string;
|
|
968
|
-
};
|
|
969
|
-
tryAddStruct(location: number, chunkType: string): boolean;
|
|
970
|
-
containsStruct(location: number): boolean;
|
|
971
|
-
tryGetName(location: number): {
|
|
972
|
-
found: boolean;
|
|
973
|
-
referenceName?: string;
|
|
974
|
-
};
|
|
975
|
-
tryAddName(location: number, referenceName: string): boolean;
|
|
976
|
-
tryGetMarker(location: number): {
|
|
977
|
-
found: boolean;
|
|
978
|
-
offset?: number;
|
|
979
|
-
};
|
|
980
|
-
setMarker(location: number, offset: number): void;
|
|
981
|
-
createBranchLabel(location: number): string;
|
|
982
|
-
createTypeName(type: string, location: number): string;
|
|
983
|
-
createFallbackName(location: number): string;
|
|
984
|
-
/**
|
|
985
|
-
* Finds a reference location by its assigned name.
|
|
986
|
-
*/
|
|
987
|
-
findLocationByName(name: string): number | undefined;
|
|
988
|
-
resolveName(location: number, type: AddressType, isBranch: boolean): string;
|
|
989
|
-
findClosestReference(location: number): string | null;
|
|
990
|
-
private processRewrite;
|
|
991
|
-
private processClosestMatch;
|
|
992
|
-
}
|
|
993
|
-
|
|
994
|
-
/**
|
|
995
|
-
* Reads and processes strings from ROM data
|
|
996
|
-
* Converted from GaiaLib/Rom/Extraction/StringReader.cs
|
|
997
|
-
*/
|
|
998
|
-
declare class StringReader {
|
|
999
|
-
static readonly STRING_REFERENCE_CHARACTERS: string[];
|
|
1000
|
-
private readonly _blockReader;
|
|
1001
|
-
private readonly _romDataReader;
|
|
1002
|
-
constructor(blockReader: BlockReader);
|
|
1003
|
-
private resolveCommand;
|
|
1004
|
-
parseString(stringType: DbStringType): StringWrapper;
|
|
1005
|
-
/**
|
|
1006
|
-
* Handles character shifting based on string type
|
|
1007
|
-
* This is a simplified implementation of the shift logic
|
|
1008
|
-
*/
|
|
1009
|
-
private shiftDown;
|
|
1010
|
-
resolveString(sw: StringWrapper, isBranch: boolean): void;
|
|
1011
|
-
}
|
|
1012
|
-
|
|
1013
|
-
/**
|
|
1014
|
-
* Parses assembly instructions from ROM data, handling different addressing modes
|
|
1015
|
-
* and maintaining CPU register state during analysis.
|
|
1016
|
-
* Converted from GaiaLib/Rom/Extraction/AsmReader.cs
|
|
1017
|
-
*/
|
|
1018
|
-
declare class AsmReader {
|
|
1019
|
-
private static readonly STATUS_OP_MASK;
|
|
1020
|
-
private static readonly STATUS_OP_VALUE;
|
|
1021
|
-
private static readonly ACCUMULATOR_OP_MASK;
|
|
1022
|
-
private static readonly ACCUMULATOR_OP_VALUE;
|
|
1023
|
-
static readonly VARIABLE_SIZE_INDICATOR = -2;
|
|
1024
|
-
private readonly _blockReader;
|
|
1025
|
-
private readonly _transformProcessor;
|
|
1026
|
-
private readonly _addressingModeHandler;
|
|
1027
|
-
private readonly _romDataReader;
|
|
1028
|
-
constructor(blockReader: BlockReader);
|
|
1029
|
-
parseAsm(reg: Registers): Op;
|
|
1030
|
-
clearDestinationRegister(code: OpCode, reg: Registers): void;
|
|
1031
|
-
private initializeOperation;
|
|
1032
|
-
private calculateInstructionSize;
|
|
1033
|
-
}
|
|
1034
|
-
|
|
1035
|
-
/**
|
|
1036
|
-
* Handles parsing of different data types from ROM
|
|
1037
|
-
* Converted from GaiaLib/Rom/Extraction/TypeParser.cs
|
|
1038
|
-
*/
|
|
1039
|
-
declare class TypeParser {
|
|
1040
|
-
private readonly _blockReader;
|
|
1041
|
-
private readonly _romDataReader;
|
|
1042
|
-
private readonly _stringReader;
|
|
1043
|
-
private readonly _stringTypes;
|
|
1044
|
-
private readonly _referenceManager;
|
|
1045
|
-
constructor(blockReader: BlockReader);
|
|
1046
|
-
parseType(typeName: string, reg: Registers | null, depth: number, bank?: number): unknown;
|
|
1047
|
-
private tryParseMemberType;
|
|
1048
|
-
private parseWordSafe;
|
|
1049
|
-
private parseBinary;
|
|
1050
|
-
private parseLocation;
|
|
1051
|
-
private parseCode;
|
|
1052
|
-
}
|
|
1053
|
-
|
|
1054
|
-
/**
|
|
1055
|
-
* Central class for reading and analyzing ROM blocks
|
|
1056
|
-
* Converted from GaiaLib/Rom/Extraction/BlockReader.cs
|
|
1057
|
-
*/
|
|
1058
|
-
declare class BlockReader {
|
|
1059
|
-
private static readonly REF_SEARCH_MAX_RANGE;
|
|
1060
|
-
private static readonly BANK_MASK_CHECK;
|
|
1061
|
-
private static readonly BYTE_DELIMITER_THRESHOLD;
|
|
1062
|
-
private static readonly BANK_HIGH_MEMORY_1;
|
|
1063
|
-
private static readonly BANK_HIGH_MEMORY_2;
|
|
1064
|
-
private static readonly POINTER_CHARACTERS;
|
|
1065
|
-
private static readonly LOCATION_REGEX;
|
|
1066
|
-
readonly _root: DbRoot;
|
|
1067
|
-
readonly _stringReader: StringReader;
|
|
1068
|
-
readonly _asmReader: AsmReader;
|
|
1069
|
-
readonly _typeParser: TypeParser;
|
|
1070
|
-
readonly _romDataReader: RomDataReader;
|
|
1071
|
-
readonly _stateManager: ProcessorStateManager;
|
|
1072
|
-
readonly _referenceManager: ReferenceManager;
|
|
1073
|
-
_partEnd: number;
|
|
1074
|
-
_currentChunk: ChunkFile | null;
|
|
1075
|
-
_currentAsmBlock: AsmBlock | null;
|
|
1076
|
-
_enrichedChunks: ChunkFile[];
|
|
1077
|
-
constructor(romData: Uint8Array, root: DbRoot);
|
|
1078
|
-
/**
|
|
1079
|
-
* Processes predefined overrides for registers and bank notes
|
|
1080
|
-
*/
|
|
1081
|
-
private initializeOverrides;
|
|
1082
|
-
/**
|
|
1083
|
-
* Processes predefined file references
|
|
1084
|
-
*/
|
|
1085
|
-
private initializeFileReferences;
|
|
1086
|
-
/**
|
|
1087
|
-
* Resolves mnemonic for a given address
|
|
1088
|
-
*/
|
|
1089
|
-
resolveMnemonic(addr: Address): void;
|
|
1090
|
-
/**
|
|
1091
|
-
* Resolves name for a location (delegated to ReferenceManager)
|
|
1092
|
-
*/
|
|
1093
|
-
resolveName(location: number, type: AddressType, isBranch: boolean): string;
|
|
1094
|
-
/**
|
|
1095
|
-
* Resolves include for a location
|
|
1096
|
-
*/
|
|
1097
|
-
resolveInclude(loc: number, isBranch: boolean): void;
|
|
1098
|
-
/**
|
|
1099
|
-
* Notes a type at a location and manages chunk references
|
|
1100
|
-
*/
|
|
1101
|
-
noteType(loc: number, type: string, silent?: boolean, reg?: Registers): string;
|
|
1102
|
-
updateRegisterState(loc: number, reg: Registers): void;
|
|
1103
|
-
/**
|
|
1104
|
-
* Checks if a delimiter has been reached
|
|
1105
|
-
*/
|
|
1106
|
-
delimiterReached(delimiter?: number): boolean;
|
|
1107
|
-
/**
|
|
1108
|
-
* Checks if processing of the current part can continue
|
|
1109
|
-
*/
|
|
1110
|
-
partCanContinue(): boolean;
|
|
1111
|
-
analyzeAndResolve(): ChunkFile[];
|
|
1112
|
-
/**
|
|
1113
|
-
* Analyzes all blocks in the ROM
|
|
1114
|
-
*/
|
|
1115
|
-
/**
|
|
1116
|
-
* Initializes blocks and parts with base references
|
|
1117
|
-
*/
|
|
1118
|
-
private initializeBlocksAndParts;
|
|
1119
|
-
/**
|
|
1120
|
-
* Processes a single part
|
|
1121
|
-
*/
|
|
1122
|
-
private processPart;
|
|
1123
|
-
/**
|
|
1124
|
-
* Processes a continuous entry (same type as previous)
|
|
1125
|
-
*/
|
|
1126
|
-
private processContinuousEntry;
|
|
1127
|
-
/**
|
|
1128
|
-
* Processes a new entry
|
|
1129
|
-
*/
|
|
1130
|
-
private processNewEntry;
|
|
1131
|
-
/**
|
|
1132
|
-
* Creates ChunkFile objects from database structure
|
|
1133
|
-
*/
|
|
1134
|
-
private createChunkFilesFromDatabase;
|
|
1135
|
-
/**
|
|
1136
|
-
* Creates binary ChunkFiles from DbFiles (enriched with rawData)
|
|
1137
|
-
*/
|
|
1138
|
-
private createChunkFilesFromSfx;
|
|
1139
|
-
/**
|
|
1140
|
-
* Creates binary ChunkFiles from DbFiles (enriched with rawData)
|
|
1141
|
-
*/
|
|
1142
|
-
private createChunkFilesFromDbFiles;
|
|
1143
|
-
/**
|
|
1144
|
-
* Creates assembly ChunkFiles from DbBlocks (enriched with parts)
|
|
1145
|
-
*/
|
|
1146
|
-
private createChunkFilesFromDbBlocks;
|
|
1147
|
-
/**
|
|
1148
|
-
* Analyzes only assembly ChunkFiles (those with parts from DbBlocks)
|
|
1149
|
-
*/
|
|
1150
|
-
private analyzeChunkFiles;
|
|
1151
|
-
/**
|
|
1152
|
-
* Resolves references in assembly ChunkFiles only
|
|
1153
|
-
*/
|
|
1154
|
-
private resolveReferences;
|
|
1155
|
-
/**
|
|
1156
|
-
* Resolves a single object and its references
|
|
1157
|
-
*/
|
|
1158
|
-
private resolveObject;
|
|
1159
|
-
/**
|
|
1160
|
-
* Resolves references in an operation object
|
|
1161
|
-
*/
|
|
1162
|
-
private resolveOperationObject;
|
|
1163
|
-
/**
|
|
1164
|
-
* Checks if an operation is a branch operation
|
|
1165
|
-
*/
|
|
1166
|
-
private isBranchOperation;
|
|
1167
|
-
/**
|
|
1168
|
-
* Hydrates registers with stored state
|
|
1169
|
-
*/
|
|
1170
|
-
hydrateRegisters(reg: Registers): void;
|
|
1171
|
-
}
|
|
1172
|
-
|
|
1173
|
-
/**
|
|
1174
|
-
* Handles transform processing for assembly instructions
|
|
1175
|
-
* Converted from GaiaLib/Rom/Extraction/TransformProcessor.cs
|
|
1176
|
-
*/
|
|
1177
|
-
declare class TransformProcessor {
|
|
1178
|
-
private readonly _blockReader;
|
|
1179
|
-
private readonly _romDataReader;
|
|
1180
|
-
private readonly _referenceManager;
|
|
1181
|
-
private readonly _labelLookup;
|
|
1182
|
-
private static readonly LOCATION_REGEX;
|
|
1183
|
-
constructor(romReader: BlockReader);
|
|
1184
|
-
/**
|
|
1185
|
-
* Retrieves transform information for the current ROM position
|
|
1186
|
-
*/
|
|
1187
|
-
getTransform(): string | null;
|
|
1188
|
-
/**
|
|
1189
|
-
* Applies transforms to operands
|
|
1190
|
-
*/
|
|
1191
|
-
applyTransforms(op1Label: string | null, op2Label: string | null, operands: unknown[]): void;
|
|
1192
|
-
private applyTransform;
|
|
1193
|
-
private applyDefaultTransform;
|
|
1194
|
-
private cleanTransformName;
|
|
1195
|
-
private resolveTransformReference;
|
|
1196
|
-
}
|
|
1197
|
-
|
|
1198
|
-
/**
|
|
1199
|
-
* Context information for an operation being processed
|
|
1200
|
-
* Converted from GaiaLib/Rom/Extraction/AsmReader.cs OperationContext
|
|
1201
|
-
*/
|
|
1202
|
-
declare class OperationContext {
|
|
1203
|
-
size: number;
|
|
1204
|
-
nextAddress: number;
|
|
1205
|
-
xForm1: string | null;
|
|
1206
|
-
xForm2: string | null;
|
|
1207
|
-
copDef: CopDef | null;
|
|
1208
|
-
}
|
|
1209
|
-
/**
|
|
1210
|
-
* Handles different addressing modes for assembly instructions
|
|
1211
|
-
* Converted from GaiaLib/Rom/Extraction/AddressingModeHandler.cs
|
|
1212
|
-
*/
|
|
1213
|
-
declare class AddressingModeHandler {
|
|
1214
|
-
private readonly _blockReader;
|
|
1215
|
-
private readonly _transformProcessor;
|
|
1216
|
-
private readonly _copProcessor;
|
|
1217
|
-
private readonly _dataReader;
|
|
1218
|
-
constructor(blockReader: BlockReader, transformProcessor: TransformProcessor);
|
|
1219
|
-
processAddressingMode(code: OpCode, context: OperationContext, reg: Registers): unknown[];
|
|
1220
|
-
private handleImmediateMode;
|
|
1221
|
-
private readImmediateOperand;
|
|
1222
|
-
private updateRegisterForImmediateInstruction;
|
|
1223
|
-
private calculateRegisterValue;
|
|
1224
|
-
private handleAbsoluteLongMode;
|
|
1225
|
-
private handleBlockMoveMode;
|
|
1226
|
-
private handleDirectPageMode;
|
|
1227
|
-
private handlePCRelativeMode;
|
|
1228
|
-
private handleStackRelativeMode;
|
|
1229
|
-
private handleStackInterruptMode;
|
|
1230
|
-
private handleStackOrImpliedMode;
|
|
1231
|
-
private handleAbsoluteMode;
|
|
1232
|
-
private isJumpInstruction;
|
|
1233
|
-
private isPushInstruction;
|
|
1234
|
-
}
|
|
1235
|
-
|
|
1236
|
-
/**
|
|
1237
|
-
* Handles stack operations for various stack-related instructions
|
|
1238
|
-
* Converted from GaiaLib/Rom/Extraction/StackOperations.cs
|
|
1239
|
-
*/
|
|
1240
|
-
declare class StackOperations {
|
|
1241
|
-
private readonly _registers;
|
|
1242
|
-
private readonly _blockReader;
|
|
1243
|
-
constructor(registers: Registers, blockReader: BlockReader);
|
|
1244
|
-
handleStackOperation(mnemonic: string): void;
|
|
1245
|
-
private handleAccumulatorPush;
|
|
1246
|
-
private handleAccumulatorPull;
|
|
1247
|
-
private handleXIndexPush;
|
|
1248
|
-
private handleXIndexPull;
|
|
1249
|
-
private handleYIndexPush;
|
|
1250
|
-
private handleYIndexPull;
|
|
1251
|
-
private handleExchangeBytes;
|
|
1252
|
-
}
|
|
1253
|
-
|
|
1254
|
-
/**
|
|
1255
|
-
* Handles COP (Coprocessor) command processing
|
|
1256
|
-
* Converted from GaiaLib/Rom/Extraction/CopCommandProcessor.cs
|
|
1257
|
-
*/
|
|
1258
|
-
declare class CopCommandProcessor {
|
|
1259
|
-
private readonly _blockReader;
|
|
1260
|
-
private readonly _romDataReader;
|
|
1261
|
-
constructor(blockReader: BlockReader);
|
|
1262
|
-
/**
|
|
1263
|
-
* Parses a COP command based on its definition
|
|
1264
|
-
*/
|
|
1265
|
-
parseCopCommand(copDef: CopDef, operands: unknown[]): void;
|
|
1266
|
-
private tryParseMemberType;
|
|
1267
|
-
private getMemberTypeSize;
|
|
1268
|
-
private readMemberTypeValue;
|
|
1269
|
-
private createCopLocation;
|
|
1270
|
-
private tryParseAddressType;
|
|
1271
|
-
}
|
|
1272
|
-
|
|
1273
|
-
declare enum ObjectType {
|
|
1274
|
-
TableEntryArray = "TableEntryArray",
|
|
1275
|
-
StructDef = "StructDef",
|
|
1276
|
-
OpArray = "OpArray",
|
|
1277
|
-
LocationWrapper = "LocationWrapper",
|
|
1278
|
-
Address = "Address",
|
|
1279
|
-
StringWrapper = "StringWrapper",
|
|
1280
|
-
ByteArray = "ByteArray",
|
|
1281
|
-
Array = "Array",
|
|
1282
|
-
String = "String",
|
|
1283
|
-
Number = "Number",
|
|
1284
|
-
TypedNumber = "TypedNumber"
|
|
1285
|
-
}
|
|
1286
|
-
declare class BlockWriter {
|
|
1287
|
-
private _root;
|
|
1288
|
-
private _blockReader;
|
|
1289
|
-
private _referenceManager;
|
|
1290
|
-
private _postProcessor;
|
|
1291
|
-
private _isInline;
|
|
1292
|
-
private _currentPart;
|
|
1293
|
-
constructor(reader: BlockReader);
|
|
1294
|
-
generateAllAsm(chunkFiles: ChunkFile[]): any[];
|
|
1295
|
-
generateAsm(block: ChunkFile): string;
|
|
1296
|
-
private getMnemonicsForBlock;
|
|
1297
|
-
private resolveOperand;
|
|
1298
|
-
private getObjectType;
|
|
1299
|
-
private writeObject;
|
|
1300
|
-
private writeTableEntryArray;
|
|
1301
|
-
private writeStructDef;
|
|
1302
|
-
private writeOpArray;
|
|
1303
|
-
private formatDefaultOperand;
|
|
1304
|
-
private writeStringWrapper;
|
|
1305
|
-
private writeArray;
|
|
1306
|
-
private writeNumber;
|
|
1307
|
-
private formatTypedNumber;
|
|
1308
|
-
private writeTypedNumber;
|
|
1309
|
-
private formatOperand;
|
|
1310
|
-
}
|
|
1311
|
-
|
|
1312
|
-
/**
|
|
1313
|
-
* Handles post processing of extracted blocks.
|
|
1314
|
-
* Mirrors functionality of GaiaLib.Rom.Extraction.PostProcessor.
|
|
1315
|
-
*/
|
|
1316
|
-
declare class PostProcessor {
|
|
1317
|
-
private readonly _referenceManager;
|
|
1318
|
-
constructor(reader: BlockReader);
|
|
1319
|
-
/**
|
|
1320
|
-
* Execute post process directive on a block if present.
|
|
1321
|
-
*/
|
|
1322
|
-
process(block: ChunkFile): void;
|
|
1323
|
-
/**
|
|
1324
|
-
* Builds a lookup table from struct entries.
|
|
1325
|
-
* Equivalent to PostProcessor.Lookup in C# implementation.
|
|
1326
|
-
*/
|
|
1327
|
-
Lookup(block: ChunkFile, keyIx: string, valueIx: string): void;
|
|
1328
|
-
}
|
|
1329
|
-
|
|
1330
|
-
/**
|
|
1331
|
-
* ROM layout planner
|
|
1332
|
-
* Converted from ext/GaiaLib/Rom/Rebuild/RomLayout.cs
|
|
1333
|
-
*/
|
|
1334
|
-
declare class RomLayout {
|
|
1335
|
-
private static readonly MIN_ACCEPTED_REMAINING;
|
|
1336
|
-
readonly unmatchedFiles: ChunkFile[];
|
|
1337
|
-
private readonly bestResult;
|
|
1338
|
-
private readonly bestSample;
|
|
1339
|
-
private currentBank;
|
|
1340
|
-
private currentUpper;
|
|
1341
|
-
private bestDepth;
|
|
1342
|
-
private bestOffset;
|
|
1343
|
-
private bestRemain;
|
|
1344
|
-
constructor(files: Iterable<ChunkFile>);
|
|
1345
|
-
organize(): void;
|
|
1346
|
-
private testDepth;
|
|
1347
|
-
private commitPage;
|
|
1348
|
-
}
|
|
1349
|
-
|
|
1350
|
-
/**
|
|
1351
|
-
* ROM writer (binary)
|
|
1352
|
-
* Converted from ext/GaiaLib/Rom/Rebuild/RomWriter.cs (subset: binary write only)
|
|
1353
|
-
*/
|
|
1354
|
-
declare class RomWriter {
|
|
1355
|
-
bpsPath?: string;
|
|
1356
|
-
readonly outBuffer: Uint8Array;
|
|
1357
|
-
readonly cartName: string;
|
|
1358
|
-
readonly makerCode: string;
|
|
1359
|
-
readonly root: DbRoot;
|
|
1360
|
-
constructor(root: DbRoot, cartName: string, makerCode: string);
|
|
1361
|
-
repack(files: ChunkFile[]): Promise<Uint8Array>;
|
|
1362
|
-
writeHeader(): void;
|
|
1363
|
-
writeChecksum(): void;
|
|
1364
|
-
writeEntryPoints(asmFiles: ChunkFile[]): void;
|
|
1365
|
-
writeFile(file: ChunkFile, _chunkLookup: Map<string, number>): Promise<number>;
|
|
1366
|
-
private writeAscii;
|
|
1367
|
-
/**
|
|
1368
|
-
* Parse assembly blocks and write binary data to output buffer
|
|
1369
|
-
* Converted from ext/GaiaLib/Rom/Rebuild/RomWriter.cs ParseAssembly method
|
|
1370
|
-
*/
|
|
1371
|
-
private parseAssembly;
|
|
1372
|
-
/**
|
|
1373
|
-
* Helper method to find index of any character from an array in a string
|
|
1374
|
-
*/
|
|
1375
|
-
private indexOfAny;
|
|
1376
|
-
/**
|
|
1377
|
-
* Helper method to check if an object is a StringMarker
|
|
1378
|
-
*/
|
|
1379
|
-
private isStringMarker;
|
|
1380
|
-
private isTableEntry;
|
|
1381
|
-
}
|
|
1382
|
-
|
|
1383
|
-
/**
|
|
1384
|
-
* ROM rebuild processor
|
|
1385
|
-
* Converted from ext/GaiaLib/Rom/Rebuild/RomProcessor.cs
|
|
1386
|
-
*/
|
|
1387
|
-
declare class RomProcessor {
|
|
1388
|
-
private readonly writer;
|
|
1389
|
-
constructor(writer: RomWriter);
|
|
1390
|
-
repack(allFiles: ChunkFile[]): Promise<void>;
|
|
1391
|
-
static applyPatches(asmFiles: ChunkFile[], patches: ChunkFile[]): void;
|
|
1392
|
-
}
|
|
1393
|
-
|
|
1394
|
-
/**
|
|
1395
|
-
* Shared context interface for assembler components
|
|
1396
|
-
* This eliminates circular dependencies between Assembler, AssemblerState, and StringProcessor
|
|
1397
|
-
*/
|
|
1398
|
-
interface AssemblerContext {
|
|
1399
|
-
readonly root: DbRoot;
|
|
1400
|
-
readonly stringProcessor: StringProcessor;
|
|
1401
|
-
currentBlock: AsmBlock | null;
|
|
1402
|
-
lineBuffer: string;
|
|
1403
|
-
blockIndex: number;
|
|
1404
|
-
lastDelimiter: number | null;
|
|
1405
|
-
blocks: AsmBlock[];
|
|
1406
|
-
eof: boolean;
|
|
1407
|
-
lineCount: number;
|
|
1408
|
-
getLine(): boolean;
|
|
1409
|
-
processRawData(): void;
|
|
1410
|
-
parseOperand(operand: string): unknown;
|
|
1411
|
-
}
|
|
1412
|
-
|
|
1413
|
-
/**
|
|
1414
|
-
* String processor for assembly parsing
|
|
1415
|
-
* Converted from GaiaLib/Rom/Rebuild/StringProcessor.cs
|
|
1416
|
-
*/
|
|
1417
|
-
declare class StringProcessor {
|
|
1418
|
-
private readonly memBuffer;
|
|
1419
|
-
private readonly context;
|
|
1420
|
-
private readonly root;
|
|
1421
|
-
private readonly stringCharLookup;
|
|
1422
|
-
constructor(context: AssemblerContext);
|
|
1423
|
-
consumeString(typeChar: string): void;
|
|
1424
|
-
private flushBuffer;
|
|
1425
|
-
private processString;
|
|
1426
|
-
private applyLayers;
|
|
1427
|
-
private applyMap;
|
|
1428
|
-
private processStringCommand;
|
|
1429
|
-
private getShiftUp;
|
|
1430
|
-
}
|
|
1431
|
-
|
|
1432
|
-
/**
|
|
1433
|
-
* A map that sorts keys by length in descending order, then alphabetically
|
|
1434
|
-
* This is used for tag replacement where longer tags should be replaced first
|
|
1435
|
-
* to avoid conflicts (e.g., "ABCD" should be replaced before "ABC")
|
|
1436
|
-
*/
|
|
1437
|
-
declare class SortedMap<V> {
|
|
1438
|
-
private map;
|
|
1439
|
-
private _keys;
|
|
1440
|
-
get size(): number;
|
|
1441
|
-
set(key: string, value: V): this;
|
|
1442
|
-
get(key: string): V | undefined;
|
|
1443
|
-
has(key: string): boolean;
|
|
1444
|
-
delete(key: string): boolean;
|
|
1445
|
-
clear(): void;
|
|
1446
|
-
keys(): string[];
|
|
1447
|
-
values(): V[];
|
|
1448
|
-
entries(): [string, V][];
|
|
1449
|
-
[Symbol.iterator](): Generator<[string, V], void, unknown>;
|
|
1450
|
-
private sortKeys;
|
|
1451
|
-
}
|
|
1452
|
-
|
|
1453
|
-
/**
|
|
1454
|
-
* Main assembler class for parsing assembly files
|
|
1455
|
-
* Converted from GaiaLib/Rom/Rebuild/Assembler.cs
|
|
1456
|
-
*/
|
|
1457
|
-
declare class Assembler implements AssemblerContext {
|
|
1458
|
-
readonly root: DbRoot;
|
|
1459
|
-
private readonly lines;
|
|
1460
|
-
private currentLineIndex;
|
|
1461
|
-
readonly stringProcessor: StringProcessor;
|
|
1462
|
-
lineBuffer: string;
|
|
1463
|
-
includes: Set<string>;
|
|
1464
|
-
blocks: AsmBlock[];
|
|
1465
|
-
tags: SortedMap<string>;
|
|
1466
|
-
currentBlock: AsmBlock | null;
|
|
1467
|
-
lineCount: number;
|
|
1468
|
-
blockIndex: number;
|
|
1469
|
-
lastDelimiter: number | null;
|
|
1470
|
-
reqBank: number | null;
|
|
1471
|
-
eof: boolean;
|
|
1472
|
-
strDelimRegex: RegExp;
|
|
1473
|
-
constructor(dbRoot: DbRoot, textData: string);
|
|
1474
|
-
parseAssembly(): {
|
|
1475
|
-
blocks: AsmBlock[];
|
|
1476
|
-
includes: Set<string>;
|
|
1477
|
-
reqBank: number | null;
|
|
1478
|
-
};
|
|
1479
|
-
getLine(): boolean;
|
|
1480
|
-
private trimComments;
|
|
1481
|
-
private processDirectives;
|
|
1482
|
-
private processTags;
|
|
1483
|
-
private resolveTags;
|
|
1484
|
-
parseOperand(opnd: string): unknown;
|
|
1485
|
-
processRawData(): void;
|
|
1486
|
-
private hexStringToBytes;
|
|
1487
|
-
}
|
|
1488
|
-
|
|
1489
|
-
/**
|
|
1490
|
-
* Assembler state machine for processing assembly text
|
|
1491
|
-
* Converted from GaiaLib/Rom/Rebuild/AssemblerState.cs
|
|
1492
|
-
*/
|
|
1493
|
-
declare class AssemblerState {
|
|
1494
|
-
private readonly dbStruct;
|
|
1495
|
-
private readonly parentStruct;
|
|
1496
|
-
private readonly root;
|
|
1497
|
-
private readonly discriminator;
|
|
1498
|
-
private delimiter;
|
|
1499
|
-
private memberOffset;
|
|
1500
|
-
private dataOffset;
|
|
1501
|
-
private readonly memberTypes;
|
|
1502
|
-
private currentType;
|
|
1503
|
-
private readonly context;
|
|
1504
|
-
constructor(context: AssemblerContext, structType?: string | null, saveDelimiter?: boolean);
|
|
1505
|
-
private checkDisc;
|
|
1506
|
-
private advancePart;
|
|
1507
|
-
private processOrigin;
|
|
1508
|
-
private static doMath;
|
|
1509
|
-
private tryCreateLabel;
|
|
1510
|
-
processText(openTag?: string): void;
|
|
1511
|
-
private hexStringToBytes;
|
|
1512
|
-
}
|
|
1513
|
-
|
|
1514
|
-
declare class RomGenerator {
|
|
1515
|
-
readonly projectName?: string;
|
|
1516
|
-
crc: number;
|
|
1517
|
-
branchId: string;
|
|
1518
|
-
dbRoot: DbRoot;
|
|
1519
|
-
private sourceData;
|
|
1520
|
-
constructor(projectName?: string);
|
|
1521
|
-
initialize(): Promise<void>;
|
|
1522
|
-
generateProject(modules: string[], manualFiles?: ChunkFile[], unshiftManualFiles?: boolean): Promise<Uint8Array>;
|
|
1523
|
-
private applyProjectInit;
|
|
1524
|
-
private assembleCodeFromText;
|
|
1525
|
-
private generateAsmIncludeLookups;
|
|
1526
|
-
applyPatchFile(chunkFile: ChunkFile, chunkFiles: ChunkFile[], asmFiles: ChunkFile[], patchFiles: ChunkFile[]): void;
|
|
1527
|
-
private writeRom;
|
|
1528
|
-
}
|
|
1529
|
-
|
|
1530
|
-
/**
|
|
1531
|
-
* QuintetLZ compression algorithm implementation
|
|
1532
|
-
* Dictionary-based compression used in Quintet games
|
|
1533
|
-
*/
|
|
1534
|
-
declare class QuintetLZ implements ICompressionProvider {
|
|
1535
|
-
static readonly DICTIONARY_SIZE = 256;
|
|
1536
|
-
static readonly DICTIONARY_INIT = 32;
|
|
1537
|
-
static readonly DICTIONARY_OFFSET = 239;
|
|
1538
|
-
private static readonly DEFAULT_PAGE_SIZE;
|
|
1539
|
-
/**
|
|
1540
|
-
* Expand (decompress) data using QuintetLZ algorithm
|
|
1541
|
-
* @param srcData Source data buffer
|
|
1542
|
-
* @param srcPosition Starting position in source data
|
|
1543
|
-
* @param srcLen Length of source data to process
|
|
1544
|
-
* @returns Expanded data
|
|
1545
|
-
*/
|
|
1546
|
-
expand(srcData: Uint8Array, srcPosition?: number, srcLen?: number): Uint8Array;
|
|
1547
|
-
/**
|
|
1548
|
-
* Compact (compress) data using QuintetLZ algorithm
|
|
1549
|
-
* @param srcData Source data to compress
|
|
1550
|
-
* @returns Compressed data
|
|
1551
|
-
*/
|
|
1552
|
-
compact(srcData: Uint8Array): Uint8Array;
|
|
1553
|
-
}
|
|
1554
|
-
|
|
1555
|
-
declare const CompressionAlgorithms: Record<string, () => ICompressionProvider>;
|
|
1556
|
-
|
|
1557
|
-
/**
|
|
1558
|
-
* Represents a single frame in a sprite animation sequence
|
|
1559
|
-
*/
|
|
1560
|
-
declare class SpriteFrame {
|
|
1561
|
-
duration: number;
|
|
1562
|
-
groupIndex: number;
|
|
1563
|
-
/**
|
|
1564
|
-
* Internal offset to the group data (not serialized)
|
|
1565
|
-
*/
|
|
1566
|
-
groupOffset: number;
|
|
1567
|
-
constructor(duration?: number, groupIndex?: number, groupOffset?: number);
|
|
1568
|
-
}
|
|
1569
|
-
|
|
1570
|
-
/**
|
|
1571
|
-
* Represents a single part/piece of a sprite
|
|
1572
|
-
*/
|
|
1573
|
-
declare class SpritePart {
|
|
1574
|
-
isLarge: boolean;
|
|
1575
|
-
xOffset: number;
|
|
1576
|
-
xOffsetMirror: number;
|
|
1577
|
-
yOffset: number;
|
|
1578
|
-
yOffsetMirror: number;
|
|
1579
|
-
vMirror: boolean;
|
|
1580
|
-
hMirror: boolean;
|
|
1581
|
-
someOffset: number;
|
|
1582
|
-
paletteIndex: number;
|
|
1583
|
-
tileIndex: number;
|
|
1584
|
-
constructor();
|
|
1585
|
-
}
|
|
1586
|
-
|
|
1587
|
-
/**
|
|
1588
|
-
* Represents a group of sprite parts that form a complete sprite frame
|
|
1589
|
-
*/
|
|
1590
|
-
declare class SpriteGroup {
|
|
1591
|
-
xOffset: number;
|
|
1592
|
-
xOffsetMirror: number;
|
|
1593
|
-
yOffset: number;
|
|
1594
|
-
yOffsetMirror: number;
|
|
1595
|
-
xRecoilHitboxOffset: number;
|
|
1596
|
-
yRecoilHitboxOffset: number;
|
|
1597
|
-
xRecoilHitboxTilesize: number;
|
|
1598
|
-
yRecoilHitboxTilesize: number;
|
|
1599
|
-
xHostileHitboxOffset: number;
|
|
1600
|
-
xHostileHitboxSize: number;
|
|
1601
|
-
yHostileHitboxOffset: number;
|
|
1602
|
-
yHostileHitboxSize: number;
|
|
1603
|
-
parts: SpritePart[];
|
|
1604
|
-
constructor();
|
|
1605
|
-
}
|
|
1606
|
-
|
|
1607
|
-
/**
|
|
1608
|
-
* Represents a complete sprite map with frame sets and groups
|
|
1609
|
-
*/
|
|
1610
|
-
declare class SpriteMap {
|
|
1611
|
-
frameSets: SpriteFrame[][];
|
|
1612
|
-
groups: SpriteGroup[];
|
|
1613
|
-
constructor();
|
|
1614
|
-
/**
|
|
1615
|
-
* Create a SpriteMap from binary data
|
|
1616
|
-
* @param data Binary data buffer
|
|
1617
|
-
* @returns SpriteMap instance
|
|
1618
|
-
*/
|
|
1619
|
-
static fromBytes(data: Uint8Array): SpriteMap;
|
|
1620
|
-
/**
|
|
1621
|
-
* Convert this SpriteMap to binary data
|
|
1622
|
-
* @returns Binary data buffer
|
|
1623
|
-
*/
|
|
1624
|
-
toBytes(): Uint8Array;
|
|
1625
|
-
}
|
|
1626
|
-
|
|
1627
|
-
/**
|
|
1628
|
-
* Project configuration types
|
|
1629
|
-
* TODO: Implement comprehensive project configuration
|
|
1630
|
-
*/
|
|
1631
|
-
interface ProjectConfig {
|
|
1632
|
-
name: string;
|
|
1633
|
-
version: string;
|
|
1634
|
-
description?: string;
|
|
1635
|
-
}
|
|
1636
|
-
|
|
1637
|
-
/**
|
|
1638
|
-
* Collaboration types and utilities
|
|
1639
|
-
* TODO: Implement collaboration functionality
|
|
1640
|
-
*/
|
|
1641
|
-
interface CollaborationConfig {
|
|
1642
|
-
enabled: boolean;
|
|
1643
|
-
}
|
|
1644
|
-
|
|
1645
|
-
/**
|
|
1646
|
-
* TypeScript interfaces for Supabase API responses
|
|
1647
|
-
* These types represent the structured data returned from ROM database queries
|
|
1648
|
-
*/
|
|
1649
|
-
interface PlatformData {
|
|
1650
|
-
id: string;
|
|
1651
|
-
name: string;
|
|
1652
|
-
meta: any | null;
|
|
1653
|
-
createdAt: string;
|
|
1654
|
-
updatedAt: string;
|
|
1655
|
-
}
|
|
1656
|
-
interface BranchBaseData {
|
|
1657
|
-
id: string;
|
|
1658
|
-
name: string | null;
|
|
1659
|
-
version: number | null;
|
|
1660
|
-
isActive?: boolean | null;
|
|
1661
|
-
notes?: string[] | null;
|
|
1662
|
-
createdAt: string;
|
|
1663
|
-
updatedAt: string;
|
|
1664
|
-
}
|
|
1665
|
-
interface FileBaseData {
|
|
1666
|
-
id: string;
|
|
1667
|
-
name: string;
|
|
1668
|
-
type: string;
|
|
1669
|
-
version: number | null;
|
|
1670
|
-
crc: number | null;
|
|
1671
|
-
meta: any | null;
|
|
1672
|
-
isText: boolean;
|
|
1673
|
-
text: string | null;
|
|
1674
|
-
data: Uint8Array | null;
|
|
1675
|
-
createdAt: string;
|
|
1676
|
-
updatedAt: string;
|
|
1677
|
-
}
|
|
1678
|
-
interface FileBaseRaw extends Omit<FileBaseData, 'data'> {
|
|
1679
|
-
data: string | null;
|
|
1680
|
-
}
|
|
1681
|
-
/**
|
|
1682
|
-
* Platform branch information containing instruction set and addressing modes
|
|
1683
|
-
*/
|
|
1684
|
-
interface PlatformBranchData extends BranchBaseData {
|
|
1685
|
-
platformId: string;
|
|
1686
|
-
addressingModes: any | null;
|
|
1687
|
-
instructionSet: any | null;
|
|
1688
|
-
vectors: any | null;
|
|
1689
|
-
types: any | null;
|
|
1690
|
-
platform: PlatformData;
|
|
1691
|
-
}
|
|
1692
|
-
/**
|
|
1693
|
-
* Game ROM branch information with platform reference
|
|
1694
|
-
*/
|
|
1695
|
-
interface GameRomBranchData extends BranchBaseData {
|
|
1696
|
-
gameRomId: string;
|
|
1697
|
-
platformBranchId: string;
|
|
1698
|
-
coplib: any | null;
|
|
1699
|
-
config: any | null;
|
|
1700
|
-
files: any | null;
|
|
1701
|
-
blocks: any | null;
|
|
1702
|
-
fixups: any | null;
|
|
1703
|
-
strings: any | null;
|
|
1704
|
-
structs: any | null;
|
|
1705
|
-
scenes: any | null;
|
|
1706
|
-
gameRom: GameRomData;
|
|
1707
|
-
platformBranch: PlatformBranchData;
|
|
1708
|
-
}
|
|
1709
|
-
interface GameRomArtifactData extends FileBaseData {
|
|
1710
|
-
gameRomId: string;
|
|
1711
|
-
}
|
|
1712
|
-
interface GameRomArtifactRaw extends FileBaseRaw {
|
|
1713
|
-
gameRomId: string;
|
|
1714
|
-
}
|
|
1715
|
-
interface GameRomBranchArtifactRaw {
|
|
1716
|
-
id: string;
|
|
1717
|
-
branchId: string;
|
|
1718
|
-
artifactId: string;
|
|
1719
|
-
artifact: GameRomArtifactRaw;
|
|
1720
|
-
}
|
|
1721
|
-
/**
|
|
1722
|
-
* Base ROM information
|
|
1723
|
-
*/
|
|
1724
|
-
interface BaseRomData {
|
|
1725
|
-
id: string;
|
|
1726
|
-
name: string;
|
|
1727
|
-
gameId: string;
|
|
1728
|
-
gameRomId: string;
|
|
1729
|
-
createdAt: string;
|
|
1730
|
-
updatedAt: string;
|
|
1731
|
-
}
|
|
1732
|
-
interface GameData {
|
|
1733
|
-
id: string;
|
|
1734
|
-
name: string;
|
|
1735
|
-
createdAt: string;
|
|
1736
|
-
updatedAt: string;
|
|
1737
|
-
}
|
|
1738
|
-
interface RegionData {
|
|
1739
|
-
id: string;
|
|
1740
|
-
name: string;
|
|
1741
|
-
meta: any | null;
|
|
1742
|
-
platformId: string;
|
|
1743
|
-
createdAt: string;
|
|
1744
|
-
updatedAt: string;
|
|
1745
|
-
}
|
|
1746
|
-
interface GameRomData {
|
|
1747
|
-
id: string;
|
|
1748
|
-
crc: number;
|
|
1749
|
-
meta: any | null;
|
|
1750
|
-
gameId: string;
|
|
1751
|
-
regionId: string;
|
|
1752
|
-
createdAt: string;
|
|
1753
|
-
updatedAt: string;
|
|
1754
|
-
game: GameData;
|
|
1755
|
-
region: RegionData;
|
|
1756
|
-
}
|
|
1757
|
-
/**
|
|
1758
|
-
* Base ROM branch with complete relationship chain
|
|
1759
|
-
*/
|
|
1760
|
-
interface BaseRomBranchData extends BranchBaseData {
|
|
1761
|
-
baseRomId: string;
|
|
1762
|
-
gameRomBranchId: string;
|
|
1763
|
-
gameRomBranch: GameRomBranchData;
|
|
1764
|
-
baseRom: BaseRomData;
|
|
1765
|
-
}
|
|
1766
|
-
/**
|
|
1767
|
-
* Base ROM file containing binary data
|
|
1768
|
-
*/
|
|
1769
|
-
interface BaseRomFileData extends FileBaseData {
|
|
1770
|
-
baseRomId: string;
|
|
1771
|
-
}
|
|
1772
|
-
interface BaseRomBranchFileRaw {
|
|
1773
|
-
id: string;
|
|
1774
|
-
branchId: string;
|
|
1775
|
-
fileId: string;
|
|
1776
|
-
file: BaseRomFileRaw;
|
|
1777
|
-
}
|
|
1778
|
-
/**
|
|
1779
|
-
* Raw BaseRomFile data as returned from Supabase (before conversion)
|
|
1780
|
-
*/
|
|
1781
|
-
interface BaseRomFileRaw extends FileBaseRaw {
|
|
1782
|
-
baseRomId: string;
|
|
1783
|
-
}
|
|
1784
|
-
/**
|
|
1785
|
-
* Complete ROM payload containing branch data and files
|
|
1786
|
-
*/
|
|
1787
|
-
interface BaseRomPayload {
|
|
1788
|
-
baseRomBranch: BaseRomBranchData;
|
|
1789
|
-
files: BaseRomFileData[];
|
|
1790
|
-
}
|
|
1791
|
-
/**
|
|
1792
|
-
* Options for loading ROM data by name
|
|
1793
|
-
*/
|
|
1794
|
-
interface FromSupabaseByNameOptions {
|
|
1795
|
-
/**
|
|
1796
|
-
* Name of the game to load
|
|
1797
|
-
* @default 'Illusion of Gaia'
|
|
1798
|
-
*/
|
|
1799
|
-
gameName: string;
|
|
1800
|
-
/**
|
|
1801
|
-
* Name of the base ROM to load
|
|
1802
|
-
* @default 'GaiaLabs BaseROM'
|
|
1803
|
-
*/
|
|
1804
|
-
baseRomName: string;
|
|
1805
|
-
/**
|
|
1806
|
-
* Name of the branch to load
|
|
1807
|
-
* Set to null to load the main/develop branch
|
|
1808
|
-
* Set to undefined to not filter by branch name
|
|
1809
|
-
*/
|
|
1810
|
-
branchName?: string | null;
|
|
1811
|
-
/**
|
|
1812
|
-
* Version of the branch to load
|
|
1813
|
-
* Set to null to load the latest/main version
|
|
1814
|
-
* Set to undefined to not filter by version
|
|
1815
|
-
*/
|
|
1816
|
-
branchVersion?: number | null;
|
|
1817
|
-
}
|
|
1818
|
-
/**
|
|
1819
|
-
* Error codes for Supabase operations
|
|
1820
|
-
*/
|
|
1821
|
-
declare enum SupabaseErrorCode {
|
|
1822
|
-
BRANCH_NOT_FOUND = "BRANCH_NOT_FOUND",
|
|
1823
|
-
ROM_NOT_FOUND = "ROM_NOT_FOUND",
|
|
1824
|
-
FILES_NOT_FOUND = "FILES_NOT_FOUND",
|
|
1825
|
-
NETWORK_ERROR = "NETWORK_ERROR",
|
|
1826
|
-
INVALID_DATA = "INVALID_DATA",
|
|
1827
|
-
ENVIRONMENT_ERROR = "ENVIRONMENT_ERROR",
|
|
1828
|
-
PERMISSION_ERROR = "PERMISSION_ERROR"
|
|
1829
|
-
}
|
|
1830
|
-
/**
|
|
1831
|
-
* Custom error class for Supabase operations
|
|
1832
|
-
*/
|
|
1833
|
-
declare class SupabaseFromError extends Error {
|
|
1834
|
-
readonly code: SupabaseErrorCode;
|
|
1835
|
-
readonly details?: any;
|
|
1836
|
-
constructor(message: string, code: SupabaseErrorCode, details?: any);
|
|
1837
|
-
}
|
|
1838
|
-
/**
|
|
1839
|
-
* Result type for async operations that may fail
|
|
1840
|
-
*/
|
|
1841
|
-
type SupabaseResult<T> = {
|
|
1842
|
-
data: T;
|
|
1843
|
-
error: null;
|
|
1844
|
-
} | {
|
|
1845
|
-
data: null;
|
|
1846
|
-
error: SupabaseFromError;
|
|
1847
|
-
};
|
|
1848
|
-
/**
|
|
1849
|
-
* Project information
|
|
1850
|
-
*/
|
|
1851
|
-
interface ProjectData {
|
|
1852
|
-
id: string;
|
|
1853
|
-
name: string;
|
|
1854
|
-
meta: any | null;
|
|
1855
|
-
gameId: string;
|
|
1856
|
-
baseRomId: string;
|
|
1857
|
-
createdAt: string;
|
|
1858
|
-
updatedAt: string;
|
|
1859
|
-
}
|
|
1860
|
-
/**
|
|
1861
|
-
* Project branch with complete relationship chain
|
|
1862
|
-
*/
|
|
1863
|
-
interface ProjectBranchData extends BranchBaseData {
|
|
1864
|
-
projectId: string;
|
|
1865
|
-
baseRomBranchId: string;
|
|
1866
|
-
modules: any[];
|
|
1867
|
-
project: ProjectData;
|
|
1868
|
-
baseRomBranch: BaseRomBranchData;
|
|
1869
|
-
}
|
|
1870
|
-
/**
|
|
1871
|
-
* Project file containing binary data
|
|
1872
|
-
*/
|
|
1873
|
-
interface ProjectFileData extends FileBaseData {
|
|
1874
|
-
module: string | null;
|
|
1875
|
-
projectId: string;
|
|
1876
|
-
}
|
|
1877
|
-
interface ProjectBranchFileRaw {
|
|
1878
|
-
id: string;
|
|
1879
|
-
branchId: string;
|
|
1880
|
-
fileId: string;
|
|
1881
|
-
file: ProjectFileRaw;
|
|
1882
|
-
}
|
|
1883
|
-
/**
|
|
1884
|
-
* Raw ProjectFile data as returned from Supabase (before conversion)
|
|
1885
|
-
*/
|
|
1886
|
-
interface ProjectFileRaw extends FileBaseRaw {
|
|
1887
|
-
module: string | null;
|
|
1888
|
-
projectId: string;
|
|
1889
|
-
}
|
|
1890
|
-
/**
|
|
1891
|
-
* Complete Project payload containing branch data and files
|
|
1892
|
-
*/
|
|
1893
|
-
interface ProjectPayload {
|
|
1894
|
-
projectBranch: ProjectBranchData;
|
|
1895
|
-
projectFiles: ProjectFileData[];
|
|
1896
|
-
baseRomBranch: BaseRomBranchData;
|
|
1897
|
-
baseRomFiles: BaseRomFileData[];
|
|
1898
|
-
}
|
|
1899
|
-
/**
|
|
1900
|
-
* Options for loading Project data by name
|
|
1901
|
-
*/
|
|
1902
|
-
interface FromSupabaseByProjectOptions {
|
|
1903
|
-
projectName: string;
|
|
1904
|
-
/**
|
|
1905
|
-
* Name of the branch to load
|
|
1906
|
-
* Set to null to load the main/develop branch
|
|
1907
|
-
* Set to undefined to not filter by branch name
|
|
1908
|
-
*/
|
|
1909
|
-
branchName?: string | null;
|
|
1910
|
-
/**
|
|
1911
|
-
* Version of the branch to load
|
|
1912
|
-
* Set to null to load the latest/main version
|
|
1913
|
-
* Set to undefined to not filter by version
|
|
1914
|
-
*/
|
|
1915
|
-
branchVersion?: number | null;
|
|
1916
|
-
}
|
|
1917
|
-
/**
|
|
1918
|
-
* Query statistics for performance monitoring
|
|
1919
|
-
*/
|
|
1920
|
-
interface QueryStats {
|
|
1921
|
-
branchQueryTime: number;
|
|
1922
|
-
fileQueryTime: number;
|
|
1923
|
-
totalTime: number;
|
|
1924
|
-
fileCount: number;
|
|
1925
|
-
}
|
|
1926
|
-
|
|
1927
|
-
/**
|
|
1928
|
-
* Supabase client configuration and initialization
|
|
1929
|
-
*/
|
|
1930
|
-
|
|
1931
|
-
/**
|
|
1932
|
-
* Database interface definitions based on Prisma schema
|
|
1933
|
-
* These types represent the structure of data returned from Supabase queries
|
|
1934
|
-
*/
|
|
1935
|
-
interface Database {
|
|
1936
|
-
public: {
|
|
1937
|
-
Tables: {
|
|
1938
|
-
BaseRom: {
|
|
1939
|
-
Row: {
|
|
1940
|
-
id: string;
|
|
1941
|
-
name: string;
|
|
1942
|
-
gameId: string;
|
|
1943
|
-
gameRomId: string;
|
|
1944
|
-
createdAt: string;
|
|
1945
|
-
updatedAt: string;
|
|
1946
|
-
};
|
|
1947
|
-
};
|
|
1948
|
-
BaseRomBranch: {
|
|
1949
|
-
Row: {
|
|
1950
|
-
id: string;
|
|
1951
|
-
name: string | null;
|
|
1952
|
-
version: number | null;
|
|
1953
|
-
isPublic: boolean;
|
|
1954
|
-
baseRomId: string;
|
|
1955
|
-
gameRomBranchId: string;
|
|
1956
|
-
fileCrcs: number[];
|
|
1957
|
-
createdAt: string;
|
|
1958
|
-
updatedAt: string;
|
|
1959
|
-
};
|
|
1960
|
-
};
|
|
1961
|
-
GameRomBranch: {
|
|
1962
|
-
Row: {
|
|
1963
|
-
id: string;
|
|
1964
|
-
name: string | null;
|
|
1965
|
-
version: number | null;
|
|
1966
|
-
isPublic: boolean;
|
|
1967
|
-
gameRomId: string;
|
|
1968
|
-
platformBranchId: string;
|
|
1969
|
-
coplib: any | null;
|
|
1970
|
-
config: any | null;
|
|
1971
|
-
files: any | null;
|
|
1972
|
-
blocks: any | null;
|
|
1973
|
-
fixups: any | null;
|
|
1974
|
-
strings: any | null;
|
|
1975
|
-
structs: any | null;
|
|
1976
|
-
scenes: any | null;
|
|
1977
|
-
createdAt: string;
|
|
1978
|
-
updatedAt: string;
|
|
1979
|
-
};
|
|
1980
|
-
};
|
|
1981
|
-
GameRomBranchAsset: {
|
|
1982
|
-
Row: {
|
|
1983
|
-
id: string;
|
|
1984
|
-
name: string;
|
|
1985
|
-
type: string;
|
|
1986
|
-
gameRomBranchId: string;
|
|
1987
|
-
text: string | null;
|
|
1988
|
-
data: string | null;
|
|
1989
|
-
createdAt: string;
|
|
1990
|
-
updatedAt: string;
|
|
1991
|
-
};
|
|
1992
|
-
};
|
|
1993
|
-
PlatformBranch: {
|
|
1994
|
-
Row: {
|
|
1995
|
-
id: string;
|
|
1996
|
-
name: string | null;
|
|
1997
|
-
version: number | null;
|
|
1998
|
-
isPublic: boolean;
|
|
1999
|
-
platformId: string;
|
|
2000
|
-
addressingModes: any | null;
|
|
2001
|
-
instructionSet: any | null;
|
|
2002
|
-
vectors: any | null;
|
|
2003
|
-
createdAt: string;
|
|
2004
|
-
updatedAt: string;
|
|
2005
|
-
};
|
|
2006
|
-
};
|
|
2007
|
-
BaseRomFile: {
|
|
2008
|
-
Row: {
|
|
2009
|
-
id: string;
|
|
2010
|
-
name: string;
|
|
2011
|
-
type: string;
|
|
2012
|
-
version: number | null;
|
|
2013
|
-
crc: number | null;
|
|
2014
|
-
meta: any | null;
|
|
2015
|
-
baseRomId: string;
|
|
2016
|
-
data: string;
|
|
2017
|
-
createdAt: string;
|
|
2018
|
-
updatedAt: string;
|
|
2019
|
-
};
|
|
2020
|
-
};
|
|
2021
|
-
};
|
|
2022
|
-
};
|
|
2023
|
-
}
|
|
2024
|
-
/**
|
|
2025
|
-
* Create and configure a Supabase client instance
|
|
2026
|
-
* @returns Configured Supabase client
|
|
2027
|
-
*/
|
|
2028
|
-
declare function createSupabaseClient(): SupabaseClient<Database>;
|
|
2029
|
-
/**
|
|
2030
|
-
* Get the singleton Supabase client instance
|
|
2031
|
-
* Creates the instance if it doesn't exist
|
|
2032
|
-
* @returns Supabase client instance
|
|
2033
|
-
*/
|
|
2034
|
-
declare function getSupabaseClient(): SupabaseClient<Database>;
|
|
2035
|
-
/**
|
|
2036
|
-
* Reset the singleton client instance (useful for testing)
|
|
2037
|
-
*/
|
|
2038
|
-
declare function resetSupabaseClient(): void;
|
|
2039
|
-
|
|
2040
|
-
/**
|
|
2041
|
-
* ROM data loading functions for Supabase integration
|
|
2042
|
-
*
|
|
2043
|
-
* This module provides functions to load ROM branch data and files from Supabase,
|
|
2044
|
-
* enabling cloud-based ROM database functionality for the GaiaLabs platform.
|
|
2045
|
-
*/
|
|
2046
|
-
|
|
2047
|
-
/**
|
|
2048
|
-
* Load ROM data from Supabase using a BaseRomBranch ID
|
|
2049
|
-
*
|
|
2050
|
-
* @param baseRomBranchId - The ID of the BaseRomBranch to load
|
|
2051
|
-
* @returns Promise<BaseRomPayload> containing the branch data and files
|
|
2052
|
-
* @throws {SupabaseFromError} If the branch is not found or other errors occur
|
|
2053
|
-
*
|
|
2054
|
-
* @example
|
|
2055
|
-
* ```typescript
|
|
2056
|
-
* const payload = await fromSupabaseById('clm1234567890');
|
|
2057
|
-
* console.log(payload.baseRomBranch.name);
|
|
2058
|
-
* console.log(`Loaded ${payload.files.length} files`);
|
|
2059
|
-
* ```
|
|
2060
|
-
*/
|
|
2061
|
-
declare function fromSupabaseById(baseRomBranchId: string): Promise<BaseRomPayload>;
|
|
2062
|
-
/**
|
|
2063
|
-
* Load ROM data from Supabase using name-based lookup
|
|
2064
|
-
*
|
|
2065
|
-
* @param options - Options for name-based lookup
|
|
2066
|
-
* @returns Promise<BaseRomPayload> containing the branch data and files
|
|
2067
|
-
* @throws {SupabaseFromError} If the branch is not found or other errors occur
|
|
2068
|
-
*
|
|
2069
|
-
* @example
|
|
2070
|
-
* ```typescript
|
|
2071
|
-
* // Load default ROM (GaiaLabs BaseROM, main branch)
|
|
2072
|
-
* const payload1 = await fromSupabaseByName({});
|
|
2073
|
-
*
|
|
2074
|
-
* // Load specific ROM and branch
|
|
2075
|
-
* const payload2 = await fromSupabaseByName({
|
|
2076
|
-
* baseRomName: 'My Custom ROM',
|
|
2077
|
-
* branchName: 'development',
|
|
2078
|
-
* branchVersion: null // latest version
|
|
2079
|
-
* });
|
|
2080
|
-
*
|
|
2081
|
-
* // Load main branch explicitly
|
|
2082
|
-
* const payload3 = await fromSupabaseByName({
|
|
2083
|
-
* baseRomName: 'GaiaLabs BaseROM',
|
|
2084
|
-
* branchName: null, // main branch
|
|
2085
|
-
* branchVersion: null // latest version
|
|
2086
|
-
* });
|
|
2087
|
-
* ```
|
|
2088
|
-
*/
|
|
2089
|
-
declare function fromSupabaseByName(options: FromSupabaseByNameOptions): Promise<BaseRomPayload>;
|
|
2090
|
-
/**
|
|
2091
|
-
* Load Project data from Supabase using project name-based lookup
|
|
2092
|
-
*
|
|
2093
|
-
* @param projectName - The name of the project to load
|
|
2094
|
-
* @param options - Options for branch filtering
|
|
2095
|
-
* @returns Promise<ProjectPayload> containing the project branch data and files
|
|
2096
|
-
* @throws {SupabaseFromError} If the project branch is not found or other errors occur
|
|
2097
|
-
*
|
|
2098
|
-
* @example
|
|
2099
|
-
* ```typescript
|
|
2100
|
-
* // Load default project branch (main/latest)
|
|
2101
|
-
* const payload1 = await fromSupabaseByProject('My Game Project');
|
|
2102
|
-
*
|
|
2103
|
-
* // Load specific branch
|
|
2104
|
-
* const payload2 = await fromSupabaseByProject('My Game Project', {
|
|
2105
|
-
* branchName: 'development',
|
|
2106
|
-
* branchVersion: null // latest version
|
|
2107
|
-
* });
|
|
2108
|
-
*
|
|
2109
|
-
* // Load main branch explicitly
|
|
2110
|
-
* const payload3 = await fromSupabaseByProject('My Game Project', {
|
|
2111
|
-
* branchName: null, // main branch
|
|
2112
|
-
* branchVersion: null // latest version
|
|
2113
|
-
* });
|
|
2114
|
-
* ```
|
|
2115
|
-
*/
|
|
2116
|
-
declare function fromSupabaseByProject(projectName?: string, branchId?: string): Promise<ProjectPayload>;
|
|
2117
|
-
declare function fromSupabaseByGameRom(gameName?: string, regionName?: string, platformName?: string, branchId?: string): Promise<ProjectPayload>;
|
|
2118
|
-
declare function summaryFromSupabaseByProject(projectName?: string): Promise<ProjectBranchData>;
|
|
2119
|
-
|
|
2120
|
-
/**
|
|
2121
|
-
* Utility functions for Supabase integration
|
|
2122
|
-
*/
|
|
2123
|
-
/**
|
|
2124
|
-
* Get environment variable value that works in both browser and Node.js contexts
|
|
2125
|
-
* @param key - The environment variable key to retrieve
|
|
2126
|
-
* @throws {Error} If the environment variable is not set
|
|
2127
|
-
* @returns The environment variable value
|
|
2128
|
-
*/
|
|
2129
|
-
declare function getEnvVar(key: string): string;
|
|
2130
|
-
/**
|
|
2131
|
-
* Convert base64 string to Uint8Array for binary data processing
|
|
2132
|
-
* @param base64 - Base64 encoded string
|
|
2133
|
-
* @returns Uint8Array containing the binary data
|
|
2134
|
-
*/
|
|
2135
|
-
declare function base64ToUint8Array(base64: string): Uint8Array;
|
|
2136
|
-
/**
|
|
2137
|
-
* Convert hex-encoded string to Uint8Array
|
|
2138
|
-
* @param hexString - Hex encoded string (with or without \x prefix)
|
|
2139
|
-
* @returns Uint8Array containing the binary data
|
|
2140
|
-
*/
|
|
2141
|
-
declare function hexToUint8Array(hexString: string): Uint8Array;
|
|
2142
|
-
/**
|
|
2143
|
-
* Convert binary data to appropriate format based on the input string
|
|
2144
|
-
* Automatically detects if the input is hex-encoded or base64
|
|
2145
|
-
* @param dataString - Either hex-encoded string (starting with \x) or base64 string
|
|
2146
|
-
* @returns Uint8Array containing the binary data
|
|
2147
|
-
*/
|
|
2148
|
-
declare function decodeDataString(dataString: string): Uint8Array;
|
|
2149
|
-
/**
|
|
2150
|
-
* Convert Uint8Array to base64 string
|
|
2151
|
-
* @param uint8Array - Binary data as Uint8Array
|
|
2152
|
-
* @returns Base64 encoded string
|
|
2153
|
-
*/
|
|
2154
|
-
declare function uint8ArrayToBase64(uint8Array: Uint8Array): string;
|
|
2155
|
-
/**
|
|
2156
|
-
* Validate that required environment variables are set
|
|
2157
|
-
* @param requiredVars - Array of environment variable names that must be set
|
|
2158
|
-
* @throws {Error} If any required environment variable is missing
|
|
2159
|
-
*/
|
|
2160
|
-
declare function validateEnvironmentVariables(requiredVars: string[]): void;
|
|
2161
|
-
|
|
2162
|
-
/**
|
|
2163
|
-
* Universal file reading utilities
|
|
2164
|
-
* Works in both Node.js and browser environments
|
|
2165
|
-
*/
|
|
2166
|
-
interface FileReadOptions {
|
|
2167
|
-
encoding?: 'utf8' | 'binary';
|
|
2168
|
-
}
|
|
2169
|
-
/**
|
|
2170
|
-
* Read a file as text
|
|
2171
|
-
* @param path File path or URL
|
|
2172
|
-
* @param options Read options
|
|
2173
|
-
* @returns Promise<string>
|
|
2174
|
-
*/
|
|
2175
|
-
declare function readFileAsText(path: string, options?: FileReadOptions): Promise<string>;
|
|
2176
|
-
/**
|
|
2177
|
-
* Read a file as binary data (Uint8Array)
|
|
2178
|
-
* @param path File path or URL
|
|
2179
|
-
* @returns Promise<Uint8Array>
|
|
2180
|
-
*/
|
|
2181
|
-
declare function readFileAsBinary(path: string): Promise<Uint8Array>;
|
|
2182
|
-
/**
|
|
2183
|
-
* Read a JSON file and parse it
|
|
2184
|
-
* @param path File path or URL
|
|
2185
|
-
* @returns Promise<any>
|
|
2186
|
-
*/
|
|
2187
|
-
declare function readJsonFile<T = any>(path: string): Promise<T>;
|
|
2188
|
-
/**
|
|
2189
|
-
* Check if a file exists
|
|
2190
|
-
* @param path File path
|
|
2191
|
-
* @returns Promise<boolean>
|
|
2192
|
-
*/
|
|
2193
|
-
declare function fileExists(path: string): Promise<boolean>;
|
|
2194
|
-
/**
|
|
2195
|
-
* Get the directory path containing a file
|
|
2196
|
-
* @param filePath File path
|
|
2197
|
-
* @returns string
|
|
2198
|
-
*/
|
|
2199
|
-
declare function getDirectory(filePath: string): Promise<string>;
|
|
2200
|
-
/**
|
|
2201
|
-
* Create a temporary directory.
|
|
2202
|
-
* This is a Node.js-specific operation.
|
|
2203
|
-
* @param prefix Prefix for the temporary directory name.
|
|
2204
|
-
* @returns Promise<string> Path to the created temporary directory.
|
|
2205
|
-
*/
|
|
2206
|
-
declare function createTempDirectory(prefix: string): Promise<string>;
|
|
2207
|
-
/**
|
|
2208
|
-
* Remove a directory recursively.
|
|
2209
|
-
* This is a Node.js-specific operation.
|
|
2210
|
-
* @param dirPath Path to the directory to remove.
|
|
2211
|
-
* @returns Promise<void>
|
|
2212
|
-
*/
|
|
2213
|
-
declare function removeDirectory(dirPath: string): Promise<void>;
|
|
2214
|
-
interface DirectoryEntry {
|
|
2215
|
-
name: string;
|
|
2216
|
-
path: string;
|
|
2217
|
-
isDirectory: boolean;
|
|
2218
|
-
isFile: boolean;
|
|
2219
|
-
}
|
|
2220
|
-
/**
|
|
2221
|
-
* List directory contents
|
|
2222
|
-
* This is a Node.js-specific operation.
|
|
2223
|
-
* @param dirPath Path to the directory to list
|
|
2224
|
-
* @param options Options for filtering and recursion
|
|
2225
|
-
* @returns Promise<DirectoryEntry[]>
|
|
2226
|
-
*/
|
|
2227
|
-
declare function listDirectory(dirPath: string, options?: {
|
|
2228
|
-
recursive?: boolean;
|
|
2229
|
-
filter?: (entry: DirectoryEntry) => boolean;
|
|
2230
|
-
extension?: string;
|
|
2231
|
-
}): Promise<DirectoryEntry[]>;
|
|
2232
|
-
/**
|
|
2233
|
-
* Save text content to a file
|
|
2234
|
-
* This is a Node.js-specific operation.
|
|
2235
|
-
* @param path File path where to save the content
|
|
2236
|
-
* @param text Text content to save
|
|
2237
|
-
* @returns Promise<void>
|
|
2238
|
-
*/
|
|
2239
|
-
declare function saveFileAsText(path: string, text: string): Promise<void>;
|
|
2240
|
-
/**
|
|
2241
|
-
* Save binary data to a file
|
|
2242
|
-
* This is a Node.js-specific operation.
|
|
2243
|
-
* @param path File path where to save the data
|
|
2244
|
-
* @param data Binary data as Uint8Array to save
|
|
2245
|
-
* @returns Promise<void>
|
|
2246
|
-
*/
|
|
2247
|
-
declare function saveFileAsBinary(path: string, data: Uint8Array): Promise<void>;
|
|
2248
|
-
|
|
2249
|
-
declare function crc32_buffer(data: Uint8Array): number;
|
|
2250
|
-
declare function crc32_text_utf8(text: string): number;
|
|
2251
|
-
declare function crc32_text_utf16(text: string): number;
|
|
2252
|
-
|
|
2253
|
-
/**
|
|
2254
|
-
* Base64 encoding and decoding utilities for Uint8Arrays
|
|
2255
|
-
* Works in both Node.js and browser environments
|
|
2256
|
-
*/
|
|
2257
|
-
/**
|
|
2258
|
-
* Encode a Uint8Array to a base64 string
|
|
2259
|
-
* @param data The binary data to encode
|
|
2260
|
-
* @returns Base64 encoded string
|
|
2261
|
-
*/
|
|
2262
|
-
declare function encodeBase64(data: Uint8Array): string;
|
|
2263
|
-
/**
|
|
2264
|
-
* Decode a base64 string to a Uint8Array
|
|
2265
|
-
* @param base64String The base64 string to decode
|
|
2266
|
-
* @returns Decoded binary data as Uint8Array
|
|
2267
|
-
* @throws {Error} If the input is not a valid base64 string
|
|
2268
|
-
*/
|
|
2269
|
-
declare function decodeBase64(base64String: string): Uint8Array;
|
|
2270
|
-
/**
|
|
2271
|
-
* Check if a string is valid base64
|
|
2272
|
-
* @param str The string to validate
|
|
2273
|
-
* @returns True if the string is valid base64, false otherwise
|
|
2274
|
-
*/
|
|
2275
|
-
declare function isValidBase64(str: string): boolean;
|
|
2276
|
-
/**
|
|
2277
|
-
* Encode a string to base64 (convenience function)
|
|
2278
|
-
* @param text The text string to encode
|
|
2279
|
-
* @returns Base64 encoded string
|
|
2280
|
-
*/
|
|
2281
|
-
declare function encodeBase64String(text: string): string;
|
|
2282
|
-
/**
|
|
2283
|
-
* Decode a base64 string to text (convenience function)
|
|
2284
|
-
* @param base64String The base64 string to decode
|
|
2285
|
-
* @returns Decoded text string
|
|
2286
|
-
* @throws {Error} If the input is not a valid base64 string or doesn't contain valid UTF-8
|
|
2287
|
-
*/
|
|
2288
|
-
declare function decodeBase64String(base64String: string): string;
|
|
2289
|
-
|
|
2290
|
-
/**
|
|
2291
|
-
* Debug utility to export processing results as JSON for comparison
|
|
2292
|
-
*/
|
|
2293
|
-
declare class DebugExporter {
|
|
2294
|
-
/**
|
|
2295
|
-
* Export chunk files to JSON for comparison with C# output
|
|
2296
|
-
*/
|
|
2297
|
-
static exportChunkFiles(files: ChunkFile[], filename: string): void;
|
|
2298
|
-
/**
|
|
2299
|
-
* Export patch application summary
|
|
2300
|
-
*/
|
|
2301
|
-
static exportPatchSummary(originalFiles: ChunkFile[], patchedFiles: ChunkFile[], patches: ChunkFile[], filename: string): void;
|
|
2302
|
-
/**
|
|
2303
|
-
* Export layout debugging information
|
|
2304
|
-
*/
|
|
2305
|
-
static exportLayoutDebug(files: ChunkFile[], filename: string): void;
|
|
2306
|
-
}
|
|
2307
|
-
|
|
2308
|
-
/**
|
|
2309
|
-
* Convert bytes to hex string
|
|
2310
|
-
*/
|
|
2311
|
-
declare function bytesToHex(bytes: Uint8Array): string;
|
|
2312
|
-
/**
|
|
2313
|
-
* Convert hex string to bytes
|
|
2314
|
-
*/
|
|
2315
|
-
declare function hexToBytes(hex: string): Uint8Array;
|
|
2316
|
-
/**
|
|
2317
|
-
* Clamp a value between min and max
|
|
2318
|
-
*/
|
|
2319
|
-
declare function clamp(value: number, min: number, max: number): number;
|
|
2320
|
-
/**
|
|
2321
|
-
* Convert binary data (Uint8Array) to UTF-8 string representation
|
|
2322
|
-
*
|
|
2323
|
-
* This function properly decodes UTF-8 encoded binary data to avoid corruption
|
|
2324
|
-
* of special characters and multi-byte sequences.
|
|
2325
|
-
*
|
|
2326
|
-
* @param binaryData - The binary data as Uint8Array containing UTF-8 encoded text
|
|
2327
|
-
* @returns The decoded UTF-8 string
|
|
2328
|
-
* @throws {Error} If the binary data contains invalid UTF-8 sequences
|
|
2329
|
-
*
|
|
2330
|
-
* @example
|
|
2331
|
-
* ```typescript
|
|
2332
|
-
* const binaryData = new Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]);
|
|
2333
|
-
* const text = binaryToUtf8String(binaryData);
|
|
2334
|
-
* console.log(text); // "Hello World"
|
|
2335
|
-
*
|
|
2336
|
-
* // Handle UTF-8 multi-byte characters
|
|
2337
|
-
* const utf8Data = new Uint8Array([240, 159, 152, 128]); // 😀 emoji
|
|
2338
|
-
* const emoji = binaryToUtf8String(utf8Data);
|
|
2339
|
-
* console.log(emoji); // "😀"
|
|
2340
|
-
* ```
|
|
2341
|
-
*/
|
|
2342
|
-
declare function binaryToUtf8String(binaryData: Uint8Array): string;
|
|
2343
|
-
/**
|
|
2344
|
-
* Safely get nested object property
|
|
2345
|
-
*/
|
|
2346
|
-
declare function getNestedProperty(obj: any, path: string): any;
|
|
2347
|
-
declare function indexOfAny(str: string, chars: string[], startIndex?: number): number;
|
|
2348
|
-
|
|
2349
|
-
/**
|
|
2350
|
-
* GaiaCore - Universal ROM processing engine
|
|
2351
|
-
*
|
|
2352
|
-
* This package provides the core functionality for ROM processing
|
|
2353
|
-
* that can run in both browser (Web Worker) and Node.js environments.
|
|
2354
|
-
*
|
|
2355
|
-
* High-level APIs:
|
|
2356
|
-
* - RomProcessor: Unified ROM processing workflows
|
|
2357
|
-
* - ProjectManager: Complete project lifecycle management
|
|
2358
|
-
*
|
|
2359
|
-
* Low-level modules:
|
|
2360
|
-
* - ROM: ROM state management, project configuration
|
|
2361
|
-
* - Assembly: 65816 instruction set, stack operations
|
|
2362
|
-
* - Compression: QuintetLZ compression algorithm
|
|
2363
|
-
* - Sprites: Sprite animation system
|
|
2364
|
-
*/
|
|
2365
|
-
declare const GAIA_CORE_VERSION = "0.1.6";
|
|
2366
|
-
declare const isPlatformBrowser: boolean;
|
|
2367
|
-
declare const isPlatformNode: string;
|
|
2368
|
-
declare const isPlatformWebWorker: boolean;
|
|
2369
|
-
|
|
2370
|
-
export { Address, AddressSpace, AddressType, AddressingModeHandler, AsmBlock, AsmBlockUtils, AsmReader, Assembler, type AssemblerContext, AssemblerState, type BaseRomBranchData, type BaseRomBranchFileRaw, type BaseRomData, type BaseRomFileData, type BaseRomFileRaw, type BaseRomPayload, BinType, BitStream, BlockReader, BlockReaderConstants, BlockWriter, type BranchBaseData, Byte, ChunkFile, ChunkFileUtils, type CollaborationConfig, CompressionAlgorithms, CompressionRegistry, CopCommandProcessor, CopDef, type Database, DbAddressingMode, type DbAsset, type DbBaseRomModule, DbBlock, type DbConfig, type DbEntryPoint, DbFile, DbFileType, type DbGameRomModule, DbGroup, type DbLabel, type DbMnemonic, DbOverride, DbPart, type DbPath, type DbRewrite, type DbRoot, DbRootUtils, DbScene, type DbSfx, DbStringCommand, type DbStringLayer, DbStringType, DbStringTypeUtils, DbStruct, DbTransform, DebugExporter, type DirectoryEntry, type FileBaseData, type FileBaseRaw, type FileReadOptions, type FromSupabaseByNameOptions, type FromSupabaseByProjectOptions, GAIA_CORE_VERSION, type GameData, type GameRomArtifactData, type GameRomArtifactRaw, type GameRomBranchArtifactRaw, type GameRomBranchData, type GameRomData, type ICompressionProvider, LocationWrapper, Long, MapExt, MemberType, ObjectType, Op, OpCode, OperationContext, type PlatformBranchData, type PlatformData, PostProcessor, ProcessorStateManager, type ProjectBranchData, type ProjectBranchFileRaw, type ProjectConfig, type ProjectData, type ProjectFileData, type ProjectFileRaw, type ProjectPayload, type QueryStats, QuintetLZ, ReferenceManager, type RegionData, RegisterType, Registers, RomDataReader, RomGenerator, RomLayout, RomProcessingConstants, RomProcessor, RomState, RomStateUtils, RomWriter, SortedMap, SpriteFrame, SpriteGroup, SpriteMap, SpritePart, Stack, StackOperations, StatusFlags, type StringEntry, type StringMarker, StringProcessor, StringReader, StringSizeComparer, type StringWrapper, type StructDef, SupabaseErrorCode, SupabaseFromError, type SupabaseResult, type TableEntry, TransformProcessor, TypeParser, TypedNumber, Word, type XformDef, XformType, base64ToUint8Array, binaryToUtf8String, bytesToHex, clamp, crc32_buffer, crc32_text_utf16, crc32_text_utf8, createChunkFileFromDbBlock, createChunkFileFromDbFile, createDbPath, createSupabaseClient, createTableEntry, createTempDirectory, decodeBase64, decodeBase64String, decodeDataString, encodeBase64, encodeBase64String, fileExists, fromSupabaseByGameRom, fromSupabaseById, fromSupabaseByName, fromSupabaseByProject, getDirectory, getEnvVar, getNestedProperty, getSupabaseClient, hexToBytes, hexToUint8Array, indexOfAny, isPlatformBrowser, isPlatformNode, isPlatformWebWorker, isValidBase64, listDirectory, readFileAsBinary, readFileAsText, readJsonFile, removeDirectory, resetSupabaseClient, saveFileAsBinary, saveFileAsText, summaryFromSupabaseByProject, uint8ArrayToBase64, validateEnvironmentVariables };
|