@modplayjs/fmt-sid 0.0.0-stage → 0.2.2

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.
Files changed (98) hide show
  1. package/README.md +111 -2
  2. package/dist/c64.d.ts +8 -0
  3. package/dist/c64.d.ts.map +1 -0
  4. package/dist/c64.js +325 -0
  5. package/dist/c64.js.map +1 -0
  6. package/dist/c64types.d.ts +209 -0
  7. package/dist/c64types.d.ts.map +1 -0
  8. package/dist/c64types.js +181 -0
  9. package/dist/c64types.js.map +1 -0
  10. package/dist/cia.d.ts +19 -0
  11. package/dist/cia.d.ts.map +1 -0
  12. package/dist/cia.js +160 -0
  13. package/dist/cia.js.map +1 -0
  14. package/dist/combiwaves.d.ts +9 -0
  15. package/dist/combiwaves.d.ts.map +1 -0
  16. package/dist/combiwaves.js +533 -0
  17. package/dist/combiwaves.js.map +1 -0
  18. package/dist/config.d.ts +15 -0
  19. package/dist/config.d.ts.map +1 -0
  20. package/dist/config.js +23 -0
  21. package/dist/config.js.map +1 -0
  22. package/dist/cpu.d.ts +12 -0
  23. package/dist/cpu.d.ts.map +1 -0
  24. package/dist/cpu.js +848 -0
  25. package/dist/cpu.js.map +1 -0
  26. package/dist/filtercurves.d.ts +13 -0
  27. package/dist/filtercurves.d.ts.map +1 -0
  28. package/dist/filtercurves.js +546 -0
  29. package/dist/filtercurves.js.map +1 -0
  30. package/dist/host.d.ts +4 -0
  31. package/dist/host.d.ts.map +1 -0
  32. package/dist/host.js +14 -0
  33. package/dist/host.js.map +1 -0
  34. package/dist/index.d.ts +7 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +36 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/instance.d.ts +119 -0
  39. package/dist/instance.d.ts.map +1 -0
  40. package/dist/instance.js +51 -0
  41. package/dist/instance.js.map +1 -0
  42. package/dist/loader.d.ts +26 -0
  43. package/dist/loader.d.ts.map +1 -0
  44. package/dist/loader.js +383 -0
  45. package/dist/loader.js.map +1 -0
  46. package/dist/mem.d.ts +30 -0
  47. package/dist/mem.d.ts.map +1 -0
  48. package/dist/mem.js +187 -0
  49. package/dist/mem.js.map +1 -0
  50. package/dist/psiddigi.d.ts +3 -0
  51. package/dist/psiddigi.d.ts.map +1 -0
  52. package/dist/psiddigi.js +73 -0
  53. package/dist/psiddigi.js.map +1 -0
  54. package/dist/settings.d.ts +41 -0
  55. package/dist/settings.d.ts.map +1 -0
  56. package/dist/settings.js +64 -0
  57. package/dist/settings.js.map +1 -0
  58. package/dist/sid.d.ts +21 -0
  59. package/dist/sid.d.ts.map +1 -0
  60. package/dist/sid.js +78 -0
  61. package/dist/sid.js.map +1 -0
  62. package/dist/sidadsr.d.ts +9 -0
  63. package/dist/sidadsr.d.ts.map +1 -0
  64. package/dist/sidadsr.js +105 -0
  65. package/dist/sidadsr.js.map +1 -0
  66. package/dist/sidoscwaves.d.ts +15 -0
  67. package/dist/sidoscwaves.d.ts.map +1 -0
  68. package/dist/sidoscwaves.js +475 -0
  69. package/dist/sidoscwaves.js.map +1 -0
  70. package/dist/sidoutputs.d.ts +17 -0
  71. package/dist/sidoutputs.d.ts.map +1 -0
  72. package/dist/sidoutputs.js +185 -0
  73. package/dist/sidoutputs.js.map +1 -0
  74. package/dist/sidplugin.d.ts +18 -0
  75. package/dist/sidplugin.d.ts.map +1 -0
  76. package/dist/sidplugin.js +174 -0
  77. package/dist/sidplugin.js.map +1 -0
  78. package/dist/sidrouting.d.ts +8 -0
  79. package/dist/sidrouting.d.ts.map +1 -0
  80. package/dist/sidrouting.js +560 -0
  81. package/dist/sidrouting.js.map +1 -0
  82. package/dist/sidseek.d.ts +8 -0
  83. package/dist/sidseek.d.ts.map +1 -0
  84. package/dist/sidseek.js +60 -0
  85. package/dist/sidseek.js.map +1 -0
  86. package/dist/sincwindow.d.ts +3 -0
  87. package/dist/sincwindow.d.ts.map +1 -0
  88. package/dist/sincwindow.js +78 -0
  89. package/dist/sincwindow.js.map +1 -0
  90. package/dist/songlengths.d.ts +20 -0
  91. package/dist/songlengths.d.ts.map +1 -0
  92. package/dist/songlengths.js +81 -0
  93. package/dist/songlengths.js.map +1 -0
  94. package/dist/vic.d.ts +14 -0
  95. package/dist/vic.d.ts.map +1 -0
  96. package/dist/vic.js +63 -0
  97. package/dist/vic.js.map +1 -0
  98. package/package.json +48 -4
@@ -0,0 +1,209 @@
1
+ export declare function CRSID_BYTE_LOG2(x: number): number;
2
+ export declare enum CRSpecC64 {
3
+ CRSID_PAL_CPUCLK = 985248,
4
+ CRSID_NTSC_CPUCLK = 1022727,
5
+ CRSID_DEFAULT_SAMPLERATE = 44100,
6
+ CRSID_CLOCK_FRACTIONAL_BITS = 4,
7
+ CRSID_RESAMPLER_FRACTIONAL_BITS = 12,
8
+ CRSID_OVERSAMPLING_CYCLES = 4,
9
+ CRSID_PAL_AUDIO_CLOCK = 246312,
10
+ CRSID_NTSC_AUDIO_CLOCK = 255681,
11
+ CRSID_SIDCOUNT_MAX = 4,
12
+ CRSID_CIACOUNT = 2
13
+ }
14
+ export declare enum CRChannel {
15
+ CRSID_CHANNEL_LEFT = 1,
16
+ CRSID_CHANNEL_RIGHT = 2,
17
+ CRSID_CHANNEL_BOTH = 3,
18
+ CRSID_CHANNELPANNING_DIVSHIFTS = 2
19
+ }
20
+ export declare enum CRAudioLevels {
21
+ /** attenuates wave-generator output not to overdrive resampler-input. */
22
+ CRSID_WAVGEN_PRESHIFT = 3,
23
+ /** shift-value can be 1..4 (1..16x division). */
24
+ CRSID_WAVGEN_PREDIV = 8,
25
+ /** increase cRSID.Attenuation by nom/denom ratio (adjusting of signal-strength
26
+ * before saturating sound to 16bit signed short to avoid strong
27
+ * multi-channel filter distortions). */
28
+ CRSID_PRESAT_ATT_NOM = 20,
29
+ CRSID_PRESAT_ATT_DENOM = 16
30
+ }
31
+ export declare enum CRMemAddresses {
32
+ CRSID_C64_MEMBANK_SIZE = 65536,
33
+ CRSID_MEMBANK_SAFETY_ZONE_SIZE = 256,
34
+ CRSID_SID_SAFETY_ZONE_SIZE = 256,
35
+ CRSID_MEMBANK_SIZE = 66048,
36
+ CRSID_SID_SAFE_ADDRESS = 65792
37
+ }
38
+ export interface CRCPUinstance {
39
+ PC: number;
40
+ /** short int in C (signed). */
41
+ A: number;
42
+ SP: number;
43
+ X: number;
44
+ Y: number;
45
+ /** STATUS-flags: N V - B D I Z C. */
46
+ ST: number;
47
+ Addr: number;
48
+ Cycles: number;
49
+ SamePage: number;
50
+ /** used for NMI leading edge detection. */
51
+ PrevNMI: number;
52
+ }
53
+ export declare function createCPUinstance(): CRCPUinstance;
54
+ export interface CRCIAinstance {
55
+ /** old or new CIA? (have 1 cycle difference in cases) */
56
+ ChipModel: number;
57
+ /** CIA-baseaddress location in C64-memory (IO). */
58
+ BaseAddress: number;
59
+ /** CIA-baseaddress location in host's memory for writing — in the TS port
60
+ * these become numeric offsets into the shared IO bank arrays. */
61
+ BasePtrWR: number;
62
+ BasePtrRD: number;
63
+ }
64
+ export declare function createCIAinstance(): CRCIAinstance;
65
+ export interface CRVICinstance {
66
+ /** (timing differences between models?) */
67
+ ChipModel: number;
68
+ /** VIC-baseaddress location in C64-memory (IO). */
69
+ BaseAddress: number;
70
+ BasePtrWR: number;
71
+ BasePtrRD: number;
72
+ RasterLines: number;
73
+ RasterRowCycles: number;
74
+ RowCycleCnt: number;
75
+ }
76
+ export declare function createVICinstance(): CRVICinstance;
77
+ export interface CRSIDinstance {
78
+ /** values: 8580 / 6581. */
79
+ ChipModel: number;
80
+ /** 1:left, 2:right, 3:both(middle). */
81
+ Channel: number;
82
+ /** SID-baseaddress location in C64-memory (IO). */
83
+ BaseAddress: number;
84
+ /** In the TS port the C BasePtr/BasePtrRD raw pointers become numeric
85
+ * offsets into cRSID_C64.IObankWR / IObankRD (they always alias those
86
+ * arrays in C too). */
87
+ BasePtr: number;
88
+ BasePtrRD: number;
89
+ ADSRstate: Uint8Array;
90
+ RateCounter: Uint16Array;
91
+ EnvelopeCounter: Uint8Array;
92
+ ExponentCounter: Uint8Array;
93
+ /** 28bit precision instead of 24bit. */
94
+ PhaseAccu: Int32Array;
95
+ /** (integerized ClockRatio fractionals, WebSID has similar solution) */
96
+ PrevPhaseAccu: Int32Array;
97
+ SyncSourceMSBrise: number;
98
+ RingSourceMSB: number;
99
+ NoiseLFSR: Uint32Array;
100
+ PrevSounDemonDigiWF: Int8Array;
101
+ PrevWavGenOut: Uint32Array;
102
+ PrevWavData: Uint8Array;
103
+ PrevLowPass: number;
104
+ PrevBandPass: number;
105
+ /** pre-calculated once, used by oversampled/HQ output-emulation many times. */
106
+ Volume: number;
107
+ /** pre-calculated once, used by oversampled/HQ output-emulation many times. */
108
+ Digi: number;
109
+ Resonance: number;
110
+ Cutoff: number;
111
+ HighPassBit: number;
112
+ BandPassBit: number;
113
+ LowPassBit: number;
114
+ NonFiltedSample: number;
115
+ FilterInputSample: number;
116
+ PrevNonFiltedSample: number;
117
+ PrevFilterInputSample: number;
118
+ /** lowpass-filtered version of Volume-band register (signed int in C). */
119
+ PrevVolume: number;
120
+ /** not attenuated (range:0..0xFFFFF depending on SID's main-volume). */
121
+ Output: number;
122
+ /** filtered version, good for VU-meter display. */
123
+ Level: number;
124
+ }
125
+ export declare function createSIDinstance(): CRSIDinstance;
126
+ export interface CRSIDwavOutput {
127
+ NonFilted: number;
128
+ FilterInput: number;
129
+ }
130
+ export interface CRC64instance {
131
+ SampleRate: number;
132
+ /** calculated (by audio-init) amount of bytes in the buffer. */
133
+ SampleBufferSize: number;
134
+ /** malloc-ed/freed by audio init/close routines (unused in the TS port —
135
+ * host audio is out of scope; kept for struct parity). */
136
+ SampleBuffer: Int8Array | null;
137
+ /** handle to the audio-device (unused in the TS port). */
138
+ SoundDevice: unknown;
139
+ SoundStarted: number;
140
+ /** audio-thread's read-only shadow/cache-register for cRSID.RealSIDmode. */
141
+ RealSIDmode: number;
142
+ /** shadow/cache-register for cRSID.Stereo (boolean to set 2SID/3SID/4SID
143
+ * tunes as stereo). */
144
+ Stereo: number;
145
+ /** shadow/cache-register for cRSID.HighQualitySID (cycle-based waveform
146
+ * emulation with oversampling, more CPU usage). */
147
+ HighQualitySID: number;
148
+ /** shadow/cache-register for cRSID.HighQualityResampler (Sinc-based FIR
149
+ * resampler instead of fast averaging resampler). */
150
+ HighQualityResampler: number;
151
+ /** not likely to change during playback, but just in case the audio-thread
152
+ * version is used. */
153
+ SIDchipCount: number;
154
+ /** audio-thread's read-only shadow/cache-register for SIDchipCount. */
155
+ AudioThread_SIDchipCount: number;
156
+ CPUfrequency: number;
157
+ /** ratio of CPU-clock and samplerate (for CPU/CIA/VIC/ADSR timing). */
158
+ SampleClockRatio: number;
159
+ /** ratio of oversampling SID-clock and samplerate (for SID-waveform
160
+ * resampling). */
161
+ OversampleClockRatio: number;
162
+ OversampleClockRatioReciproc: number;
163
+ Finished: number;
164
+ Returned: number;
165
+ /** collected IRQ line from devices. */
166
+ IRQ: number;
167
+ /** collected NMI line from devices. */
168
+ NMI: number;
169
+ ResampledOutput: CRSIDOutput;
170
+ FileNameOnly: string;
171
+ Attenuation: number;
172
+ /** this is a substitution in PSID-mode for CIA/VIC counters. */
173
+ FrameCycleCnt: number;
174
+ PrevRasterLine: number;
175
+ SampleCycleCnt: number;
176
+ OverSampleCycleCnt: number;
177
+ TenthSecondCnt: number;
178
+ SecondCnt: number;
179
+ callBack__autoAdvance: ((subtunestepping: number, data: unknown) => void) | null;
180
+ callBackData__autoAdvance: unknown;
181
+ FadeLevel: number;
182
+ CPU: CRCPUinstance;
183
+ SID: CRSIDinstance[];
184
+ CIA: CRCIAinstance[];
185
+ VIC: CRVICinstance;
186
+ /** fast lookup for memory-bank address-multiplexing done by the PLA.
187
+ * In C these are raw pointers into RAMbank/IObankRD/IObankWR/ROMbanks;
188
+ * the TS port stores a bank-selector code (0=RAM,1=IO_RD,2=ROM,3=IO_WR)
189
+ * plus a byte offset, resolved at access time. */
190
+ MemoryBankPointersRD: Int32Array;
191
+ MemoryBankPointersWR: Int32Array;
192
+ RAMbank: Uint8Array;
193
+ IObankWR: Uint8Array;
194
+ IObankRD: Uint8Array;
195
+ ROMbanks: Uint8Array;
196
+ }
197
+ /** cRSID_Output (libcRSID.h:128-131) — signed int L/R in C. */
198
+ export interface CRSIDOutput {
199
+ L: number;
200
+ R: number;
201
+ }
202
+ export declare function createC64instance(): CRC64instance;
203
+ export declare const BANK_RAM = 0;
204
+ export declare const BANK_IO_RD = 1;
205
+ export declare const BANK_ROM = 2;
206
+ export declare const BANK_IO_WR = 3;
207
+ /** Resolve a C memory-bank pointer to (bankCode). */
208
+ export declare function bankCode(entry: number): number;
209
+ //# sourceMappingURL=c64types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"c64types.d.ts","sourceRoot":"","sources":["../src/c64types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,181 @@
1
+ // SPDX-License-Identifier: BSD-3-Clause
2
+ // Copyright (c) 2026 Bitti09 — modplayjs contributors
3
+ // Ported from: cRSID 1.58 libcRSID/C64/C64.h (structs and constants)
4
+ // (c) Hermit (Mihaly Horvath), license: WTF ("do what the frick you want").
5
+ import { CRSID_OVERSAMPLING_RATIO, } from './config.js';
6
+ // ---------------------------------------------------------------------------
7
+ // cRSID_BYTE_LOG2 (C64.h:10) — C macro, used by the HQ-resampler parameter
8
+ // block. JS-only helper; same value table.
9
+ // ---------------------------------------------------------------------------
10
+ export function CRSID_BYTE_LOG2(x) {
11
+ return x < 2 ? 0 : x < 4 ? 1 : x < 8 ? 2 : x < 16 ? 3 : x < 32 ? 4 : x < 64 ? 5 : x < 128 ? 6 : x < 256 ? 7 : 8;
12
+ }
13
+ // ---------------------------------------------------------------------------
14
+ // cRSID_Specifications__C64 (C64.h:12-23)
15
+ // ---------------------------------------------------------------------------
16
+ export var CRSpecC64;
17
+ (function (CRSpecC64) {
18
+ CRSpecC64[CRSpecC64["CRSID_PAL_CPUCLK"] = 985248] = "CRSID_PAL_CPUCLK";
19
+ CRSpecC64[CRSpecC64["CRSID_NTSC_CPUCLK"] = 1022727] = "CRSID_NTSC_CPUCLK";
20
+ CRSpecC64[CRSpecC64["CRSID_DEFAULT_SAMPLERATE"] = 44100] = "CRSID_DEFAULT_SAMPLERATE";
21
+ CRSpecC64[CRSpecC64["CRSID_CLOCK_FRACTIONAL_BITS"] = 4] = "CRSID_CLOCK_FRACTIONAL_BITS";
22
+ CRSpecC64[CRSpecC64["CRSID_RESAMPLER_FRACTIONAL_BITS"] = 12] = "CRSID_RESAMPLER_FRACTIONAL_BITS";
23
+ // CRSID_OVERSAMPLING_RATIO comes from Config.h (runtime const import).
24
+ CRSpecC64[CRSpecC64["CRSID_OVERSAMPLING_CYCLES"] = 4] = "CRSID_OVERSAMPLING_CYCLES";
25
+ CRSpecC64[CRSpecC64["CRSID_PAL_AUDIO_CLOCK"] = 246312] = "CRSID_PAL_AUDIO_CLOCK";
26
+ CRSpecC64[CRSpecC64["CRSID_NTSC_AUDIO_CLOCK"] = 255681] = "CRSID_NTSC_AUDIO_CLOCK";
27
+ CRSpecC64[CRSpecC64["CRSID_SIDCOUNT_MAX"] = 4] = "CRSID_SIDCOUNT_MAX";
28
+ CRSpecC64[CRSpecC64["CRSID_CIACOUNT"] = 2] = "CRSID_CIACOUNT";
29
+ })(CRSpecC64 || (CRSpecC64 = {}));
30
+ // ---------------------------------------------------------------------------
31
+ // cRSID_Channels (C64.h:24)
32
+ // ---------------------------------------------------------------------------
33
+ export var CRChannel;
34
+ (function (CRChannel) {
35
+ CRChannel[CRChannel["CRSID_CHANNEL_LEFT"] = 1] = "CRSID_CHANNEL_LEFT";
36
+ CRChannel[CRChannel["CRSID_CHANNEL_RIGHT"] = 2] = "CRSID_CHANNEL_RIGHT";
37
+ CRChannel[CRChannel["CRSID_CHANNEL_BOTH"] = 3] = "CRSID_CHANNEL_BOTH";
38
+ CRChannel[CRChannel["CRSID_CHANNELPANNING_DIVSHIFTS"] = 2] = "CRSID_CHANNELPANNING_DIVSHIFTS";
39
+ })(CRChannel || (CRChannel = {}));
40
+ // ---------------------------------------------------------------------------
41
+ // cRSID_AudioLevels (C64.h:25-33)
42
+ // ---------------------------------------------------------------------------
43
+ export var CRAudioLevels;
44
+ (function (CRAudioLevels) {
45
+ /** attenuates wave-generator output not to overdrive resampler-input. */
46
+ CRAudioLevels[CRAudioLevels["CRSID_WAVGEN_PRESHIFT"] = 3] = "CRSID_WAVGEN_PRESHIFT";
47
+ /** shift-value can be 1..4 (1..16x division). */
48
+ CRAudioLevels[CRAudioLevels["CRSID_WAVGEN_PREDIV"] = 8] = "CRSID_WAVGEN_PREDIV";
49
+ /** increase cRSID.Attenuation by nom/denom ratio (adjusting of signal-strength
50
+ * before saturating sound to 16bit signed short to avoid strong
51
+ * multi-channel filter distortions). */
52
+ CRAudioLevels[CRAudioLevels["CRSID_PRESAT_ATT_NOM"] = 20] = "CRSID_PRESAT_ATT_NOM";
53
+ CRAudioLevels[CRAudioLevels["CRSID_PRESAT_ATT_DENOM"] = 16] = "CRSID_PRESAT_ATT_DENOM";
54
+ })(CRAudioLevels || (CRAudioLevels = {}));
55
+ // ---------------------------------------------------------------------------
56
+ // cRSID_MemAddresses (C64.h:34-40)
57
+ // ---------------------------------------------------------------------------
58
+ export var CRMemAddresses;
59
+ (function (CRMemAddresses) {
60
+ CRMemAddresses[CRMemAddresses["CRSID_C64_MEMBANK_SIZE"] = 65536] = "CRSID_C64_MEMBANK_SIZE";
61
+ CRMemAddresses[CRMemAddresses["CRSID_MEMBANK_SAFETY_ZONE_SIZE"] = 256] = "CRSID_MEMBANK_SAFETY_ZONE_SIZE";
62
+ CRMemAddresses[CRMemAddresses["CRSID_SID_SAFETY_ZONE_SIZE"] = 256] = "CRSID_SID_SAFETY_ZONE_SIZE";
63
+ CRMemAddresses[CRMemAddresses["CRSID_MEMBANK_SIZE"] = 66048] = "CRSID_MEMBANK_SIZE";
64
+ CRMemAddresses[CRMemAddresses["CRSID_SID_SAFE_ADDRESS"] = 65792] = "CRSID_SID_SAFE_ADDRESS";
65
+ })(CRMemAddresses || (CRMemAddresses = {}));
66
+ export function createCPUinstance() {
67
+ return { PC: 0, A: 0, SP: 0, X: 0, Y: 0, ST: 0, Addr: 0, Cycles: 0, SamePage: 0, PrevNMI: 0 };
68
+ }
69
+ export function createCIAinstance() {
70
+ return { ChipModel: 0, BaseAddress: 0, BasePtrWR: 0, BasePtrRD: 0 };
71
+ }
72
+ export function createVICinstance() {
73
+ return { ChipModel: 0, BaseAddress: 0, BasePtrWR: 0, BasePtrRD: 0, RasterLines: 0, RasterRowCycles: 0, RowCycleCnt: 0 };
74
+ }
75
+ export function createSIDinstance() {
76
+ return {
77
+ ChipModel: 0,
78
+ Channel: 0,
79
+ BaseAddress: 0,
80
+ BasePtr: 0,
81
+ BasePtrRD: 0,
82
+ ADSRstate: new Uint8Array(15),
83
+ RateCounter: new Uint16Array(15),
84
+ EnvelopeCounter: new Uint8Array(15),
85
+ ExponentCounter: new Uint8Array(15),
86
+ PhaseAccu: new Int32Array(15),
87
+ PrevPhaseAccu: new Int32Array(15),
88
+ SyncSourceMSBrise: 0,
89
+ RingSourceMSB: 0,
90
+ NoiseLFSR: new Uint32Array(15),
91
+ PrevSounDemonDigiWF: new Int8Array(15),
92
+ PrevWavGenOut: new Uint32Array(15),
93
+ PrevWavData: new Uint8Array(15),
94
+ PrevLowPass: 0,
95
+ PrevBandPass: 0,
96
+ Volume: 0,
97
+ Digi: 0,
98
+ Resonance: 0,
99
+ Cutoff: 0,
100
+ HighPassBit: 0,
101
+ BandPassBit: 0,
102
+ LowPassBit: 0,
103
+ NonFiltedSample: 0,
104
+ FilterInputSample: 0,
105
+ PrevNonFiltedSample: 0,
106
+ PrevFilterInputSample: 0,
107
+ PrevVolume: 0,
108
+ Output: 0,
109
+ Level: 0,
110
+ };
111
+ }
112
+ export function createC64instance() {
113
+ const SID = [];
114
+ for (let i = 0; i < CRSpecC64.CRSID_SIDCOUNT_MAX + 1; ++i)
115
+ SID.push(createSIDinstance());
116
+ const CIA = [];
117
+ for (let i = 0; i < CRSpecC64.CRSID_CIACOUNT + 1; ++i)
118
+ CIA.push(createCIAinstance());
119
+ return {
120
+ SampleRate: 0,
121
+ SampleBufferSize: 0,
122
+ SampleBuffer: null,
123
+ SoundDevice: null,
124
+ SoundStarted: 0,
125
+ RealSIDmode: 0,
126
+ Stereo: 0,
127
+ HighQualitySID: 0,
128
+ HighQualityResampler: 0,
129
+ SIDchipCount: 0,
130
+ AudioThread_SIDchipCount: 0,
131
+ CPUfrequency: 0,
132
+ SampleClockRatio: 0,
133
+ OversampleClockRatio: 0,
134
+ OversampleClockRatioReciproc: 0,
135
+ Finished: 0,
136
+ Returned: 0,
137
+ IRQ: 0,
138
+ NMI: 0,
139
+ ResampledOutput: { L: 0, R: 0 },
140
+ FileNameOnly: '',
141
+ Attenuation: 0,
142
+ FrameCycleCnt: 0,
143
+ PrevRasterLine: 0,
144
+ SampleCycleCnt: 0,
145
+ OverSampleCycleCnt: 0,
146
+ TenthSecondCnt: 0,
147
+ SecondCnt: 0,
148
+ callBack__autoAdvance: null,
149
+ callBackData__autoAdvance: null,
150
+ FadeLevel: 0,
151
+ CPU: createCPUinstance(),
152
+ SID,
153
+ CIA,
154
+ VIC: createVICinstance(),
155
+ MemoryBankPointersRD: new Int32Array(4 * 256),
156
+ MemoryBankPointersWR: new Int32Array(4 * 256),
157
+ RAMbank: new Uint8Array(CRMemAddresses.CRSID_MEMBANK_SIZE),
158
+ IObankWR: new Uint8Array(CRMemAddresses.CRSID_MEMBANK_SIZE),
159
+ IObankRD: new Uint8Array(CRMemAddresses.CRSID_MEMBANK_SIZE),
160
+ ROMbanks: new Uint8Array(CRMemAddresses.CRSID_MEMBANK_SIZE),
161
+ };
162
+ }
163
+ // ---------------------------------------------------------------------------
164
+ // Memory-bank pointer encoding (TS-port adaptation of the C pointer tables).
165
+ //
166
+ // C: `unsigned char* MemoryBankPointersRD[4][256]` holds one of four base
167
+ // pointers per (bank, page). The C code then compares the fetched pointer
168
+ // against the four bases (`BankPointer != cRSID_C64.IObankRD` etc.). We
169
+ // encode each entry as bankCode<<16 | 0 with bankCode:
170
+ // 0 = RAMbank, 1 = IObankRD, 2 = ROMbanks, 3 = IObankWR
171
+ // (IObankWR appears only in the WR table; the RD table never stores it.)
172
+ // ---------------------------------------------------------------------------
173
+ export const BANK_RAM = 0;
174
+ export const BANK_IO_RD = 1;
175
+ export const BANK_ROM = 2;
176
+ export const BANK_IO_WR = 3;
177
+ /** Resolve a C memory-bank pointer to (bankCode). */
178
+ export function bankCode(entry) {
179
+ return entry >>> 16;
180
+ }
181
+ //# sourceMappingURL=c64types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"c64types.js","sourceRoot":"","sources":["../src/c64types.ts"],"names":[],"mappings":"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"}
package/dist/cia.d.ts ADDED
@@ -0,0 +1,19 @@
1
+ import type { CRC64instance, CRCIAinstance } from './c64types.js';
2
+ import { createCIAinstance } from './c64types.js';
3
+ /** cRSID_createCIAchip (CIA.c:6-14). */
4
+ export declare function cRSID_createCIAchip(C64: CRC64instance, CIA: CRCIAinstance, baseaddress: number): void;
5
+ /** cRSID_initCIAchip (CIA.c:16-20). */
6
+ export declare function cRSID_initCIAchip(C64: CRC64instance, CIA: CRCIAinstance): void;
7
+ /** cRSID_emulateCIA (CIA.c:48-119) — returns INTERRUPT_HAPPENED (char in C). */
8
+ export declare function cRSID_emulateCIA(C64: CRC64instance, CIA: CRCIAinstance, cycles: number): number;
9
+ /** cRSID_writeCIAlatchAhi (CIA.c:121-127). */
10
+ export declare function cRSID_writeCIAlatchAhi(C64: CRC64instance, CIA: CRCIAinstance, value: number): void;
11
+ /** cRSID_writeCIAlatchBhi (CIA.c:129-135). */
12
+ export declare function cRSID_writeCIAlatchBhi(C64: CRC64instance, CIA: CRCIAinstance, value: number): void;
13
+ /** cRSID_writeCIAIRQmask (CIA.c:137-141). */
14
+ export declare function cRSID_writeCIAIRQmask(C64: CRC64instance, CIA: CRCIAinstance, value: number): void;
15
+ /** cRSID_acknowledgeCIAIRQ (CIA.c:143-147) — reading a CIA interrupt-register
16
+ * clears its read-part and IRQ-flag. */
17
+ export declare function cRSID_acknowledgeCIAIRQ(C64: CRC64instance, CIA: CRCIAinstance): void;
18
+ export { createCIAinstance };
19
+ //# sourceMappingURL=cia.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cia.d.ts","sourceRoot":"","sources":["../src/cia.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,wCAAwC;AACxC,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAMrG;AAED,uCAAuC;AACvC,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,aAAa,GAAG,IAAI,CAK9E;AAyBD,gFAAgF;AAChF,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CA0D/F;AAED,8CAA8C;AAC9C,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAUlG;AAED,8CAA8C;AAC9C,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAUlG;AAED,6CAA6C;AAC7C,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAIjG;AAED;yCACyC;AACzC,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,aAAa,GAAG,IAAI,CAEpF;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
package/dist/cia.js ADDED
@@ -0,0 +1,160 @@
1
+ // SPDX-License-Identifier: BSD-3-Clause
2
+ // Copyright (c) 2026 Bitti09 — modplayjs contributors
3
+ // Ported from: cRSID 1.58 libcRSID/C64/CIA.c — CIA emulation.
4
+ // (c) Hermit (Mihaly Horvath), license: WTF ("do what the frick you want").
5
+ //
6
+ // C accesses chip registers through CIA->BasePtrWR/BasePtrRD (raw pointers
7
+ // into IObankWR/IObankRD); the TS port keeps numeric offsets and indexes the
8
+ // C64 IO banks directly.
9
+ import { createCIAinstance } from './c64types.js';
10
+ /** cRSID_createCIAchip (CIA.c:6-14). */
11
+ export function cRSID_createCIAchip(C64, CIA, baseaddress) {
12
+ CIA.ChipModel = 0;
13
+ CIA.BaseAddress = baseaddress;
14
+ CIA.BasePtrWR = baseaddress;
15
+ CIA.BasePtrRD = baseaddress;
16
+ cRSID_initCIAchip(C64, CIA);
17
+ }
18
+ /** cRSID_initCIAchip (CIA.c:16-20). */
19
+ export function cRSID_initCIAchip(C64, CIA) {
20
+ for (let i = 0; i < 0x10; ++i) {
21
+ C64.IObankWR[CIA.BasePtrWR + i] = 0x00;
22
+ C64.IObankRD[CIA.BasePtrRD + i] = 0x00;
23
+ }
24
+ }
25
+ // enum CIAregisters (CIA.c:25-29)
26
+ const PORTA = 0, PORTB = 1, DDRA = 2, DDRB = 3;
27
+ const TIMERAL = 4, TIMERAH = 5, TIMERBL = 6, TIMERBH = 7; // Write:Set Timer-latch, Read: read Timer
28
+ const TOD_TENTHSECONDS = 8, TOD_SECONDS = 9, TOD_MINUTES = 0xa, TOD_HOURS = 0xb;
29
+ const SERIAL_DATA = 0xc, INTERRUPTS = 0xd, CONTROLA = 0xe, CONTROLB = 0xf;
30
+ void PORTA;
31
+ void PORTB;
32
+ void DDRA;
33
+ void DDRB;
34
+ void TOD_TENTHSECONDS;
35
+ void TOD_SECONDS;
36
+ void TOD_MINUTES;
37
+ void TOD_HOURS;
38
+ void SERIAL_DATA;
39
+ // enum InterruptBitVal (CIA.c:31-33)
40
+ const INTERRUPT_HAPPENED = 0x80, SET_OR_CLEAR_FLAGS = 0x80; // (Read or Write operation determines which one:)
41
+ const FLAGn = 0x10, SERIALPORT = 0x08, ALARM = 0x04, TIMERB = 0x02, TIMERA = 0x01; // flags/masks of interrupt-sources
42
+ void SET_OR_CLEAR_FLAGS;
43
+ void FLAGn;
44
+ void SERIALPORT;
45
+ void ALARM;
46
+ // enum ControlAbitVal (CIA.c:35-39)
47
+ const ENABLE_TIMERA = 0x01, PORTB6_TIMERA = 0x02, TOGGLED_PORTB6 = 0x04, ONESHOT_TIMERA = 0x08;
48
+ const FORCELOADA_STROBE = 0x10, TIMERA_FROM_CNT = 0x20, SERIALPORT_IS_OUTPUT = 0x40, TIMEOFDAY_50Hz = 0x80;
49
+ void PORTB6_TIMERA;
50
+ void TOGGLED_PORTB6;
51
+ void TIMERA_FROM_CNT;
52
+ void SERIALPORT_IS_OUTPUT;
53
+ void TIMEOFDAY_50Hz;
54
+ // enum ControlBbitVal (CIA.c:41-46)
55
+ const ENABLE_TIMERB = 0x01, PORTB7_TIMERB = 0x02, TOGGLED_PORTB7 = 0x04, ONESHOT_TIMERB = 0x08;
56
+ const FORCELOADB_STROBE = 0x10 /*, TIMERB_FROM_CPUCLK = 0x00*/, TIMERB_FROM_CNT = 0x20, TIMERB_FROM_TIMERA = 0x40;
57
+ const TIMERB_FROM_TIMERA_AND_CNT = 0x60, TIMEOFDAY_WRITE_SETS_ALARM = 0x80;
58
+ void PORTB7_TIMERB;
59
+ void TOGGLED_PORTB7;
60
+ void TIMERB_FROM_CNT;
61
+ void TIMERB_FROM_TIMERA_AND_CNT;
62
+ void TIMEOFDAY_WRITE_SETS_ALARM;
63
+ /** cRSID_emulateCIA (CIA.c:48-119) — returns INTERRUPT_HAPPENED (char in C). */
64
+ export function cRSID_emulateCIA(C64, CIA, cycles) {
65
+ const wr = CIA.BasePtrWR;
66
+ const rd = CIA.BasePtrRD;
67
+ const W = C64.IObankWR;
68
+ const R = C64.IObankRD;
69
+ let Tmp;
70
+ // TimerA
71
+ if (W[wr + CONTROLA] & FORCELOADA_STROBE) {
72
+ // force latch into counter (strobe-input)
73
+ R[rd + TIMERAH] = W[wr + TIMERAH];
74
+ R[rd + TIMERAL] = W[wr + TIMERAL];
75
+ }
76
+ else if ((W[wr + CONTROLA] & (ENABLE_TIMERA | TIMERA_FROM_CNT)) === ENABLE_TIMERA) {
77
+ // Enabled, counts Phi2
78
+ Tmp = ((R[rd + TIMERAH] << 8) + R[rd + TIMERAL]) - cycles; // count timer
79
+ if (Tmp < 0) {
80
+ // Timer counted down
81
+ Tmp += (W[wr + TIMERAH] << 8) + W[wr + TIMERAL] + 1; // reload timer (no '+1' causes 50Hz noise in Vortex.sid and similar)
82
+ if (W[wr + CONTROLA] & ONESHOT_TIMERA)
83
+ W[wr + CONTROLA] &= ~ENABLE_TIMERA; // disable if one-shot
84
+ R[rd + INTERRUPTS] |= TIMERA;
85
+ if (W[wr + INTERRUPTS] & TIMERA) {
86
+ // generate interrupt if mask allows
87
+ R[rd + INTERRUPTS] |= INTERRUPT_HAPPENED;
88
+ }
89
+ }
90
+ R[rd + TIMERAH] = Tmp >>> 8;
91
+ R[rd + TIMERAL] = Tmp & 0xff;
92
+ }
93
+ W[wr + CONTROLA] &= ~FORCELOADA_STROBE; // strobe is edge-sensitive
94
+ R[rd + CONTROLA] = W[wr + CONTROLA]; // control-registers are readable
95
+ // TimerB
96
+ if (W[wr + CONTROLB] & FORCELOADB_STROBE) {
97
+ // force latch into counter (strobe-input)
98
+ R[rd + TIMERBH] = W[wr + TIMERBH];
99
+ R[rd + TIMERBL] = W[wr + TIMERBL];
100
+ } // what about clocking TimerB by TimerA? (maybe not used in any music)
101
+ else if ((W[wr + CONTROLB] & (ENABLE_TIMERB | TIMERB_FROM_TIMERA)) === ENABLE_TIMERB) {
102
+ // Enabled, counts Phi2
103
+ Tmp = ((R[rd + TIMERBH] << 8) + R[rd + TIMERBL]) - cycles; // count timer
104
+ if (Tmp < 0) {
105
+ // Timer counted down
106
+ Tmp += (W[wr + TIMERBH] << 8) + W[wr + TIMERBL] + 1; // reload timer (no '+1' causes 50Hz noise in Vortex.sid and similar)
107
+ if (W[wr + CONTROLB] & ONESHOT_TIMERB)
108
+ W[wr + CONTROLB] &= ~ENABLE_TIMERB; // disable if one-shot
109
+ R[rd + INTERRUPTS] |= TIMERB;
110
+ if (W[wr + INTERRUPTS] & TIMERB) {
111
+ // generate interrupt if mask allows
112
+ R[rd + INTERRUPTS] |= INTERRUPT_HAPPENED;
113
+ }
114
+ }
115
+ R[rd + TIMERBH] = Tmp >>> 8;
116
+ R[rd + TIMERBL] = Tmp & 0xff;
117
+ }
118
+ W[wr + CONTROLB] &= ~FORCELOADB_STROBE; // strobe is edge-sensitive
119
+ R[rd + CONTROLB] = W[wr + CONTROLB]; // control-registers are readable
120
+ return R[rd + INTERRUPTS] & INTERRUPT_HAPPENED;
121
+ }
122
+ /** cRSID_writeCIAlatchAhi (CIA.c:121-127). */
123
+ export function cRSID_writeCIAlatchAhi(C64, CIA, value) {
124
+ void value;
125
+ const wr = CIA.BasePtrWR;
126
+ const rd = CIA.BasePtrRD;
127
+ const W = C64.IObankWR;
128
+ const R = C64.IObankRD;
129
+ if (!(W[wr + CONTROLA] & ENABLE_TIMERA)) {
130
+ R[rd + TIMERAH] = W[wr + TIMERAH];
131
+ R[rd + TIMERAL] = W[wr + TIMERAL];
132
+ }
133
+ }
134
+ /** cRSID_writeCIAlatchBhi (CIA.c:129-135). */
135
+ export function cRSID_writeCIAlatchBhi(C64, CIA, value) {
136
+ void value;
137
+ const wr = CIA.BasePtrWR;
138
+ const rd = CIA.BasePtrRD;
139
+ const W = C64.IObankWR;
140
+ const R = C64.IObankRD;
141
+ if (!(W[wr + CONTROLB] & ENABLE_TIMERB)) {
142
+ R[rd + TIMERBH] = W[wr + TIMERBH];
143
+ R[rd + TIMERBL] = W[wr + TIMERBL];
144
+ }
145
+ }
146
+ /** cRSID_writeCIAIRQmask (CIA.c:137-141). */
147
+ export function cRSID_writeCIAIRQmask(C64, CIA, value) {
148
+ const wr = CIA.BasePtrWR;
149
+ if (value & 0x80)
150
+ C64.IObankWR[wr + INTERRUPTS] |= value & 0x1f;
151
+ else
152
+ C64.IObankWR[wr + INTERRUPTS] &= ~(value & 0x1f);
153
+ }
154
+ /** cRSID_acknowledgeCIAIRQ (CIA.c:143-147) — reading a CIA interrupt-register
155
+ * clears its read-part and IRQ-flag. */
156
+ export function cRSID_acknowledgeCIAIRQ(C64, CIA) {
157
+ C64.IObankRD[CIA.BasePtrRD + INTERRUPTS] = 0x00;
158
+ }
159
+ export { createCIAinstance };
160
+ //# sourceMappingURL=cia.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cia.js","sourceRoot":"","sources":["../src/cia.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /** cRSID_SawTriangle (C: static const unsigned char, 4096 entries). */
2
+ export declare const CRSID_SawTriangle: Uint8Array<ArrayBuffer>;
3
+ /** cRSID_PulseTriangle (C: static const unsigned char, 4096 entries). */
4
+ export declare const CRSID_PulseTriangle: Uint8Array<ArrayBuffer>;
5
+ /** cRSID_PulseSawtooth (C: static const unsigned char, 4096 entries). */
6
+ export declare const CRSID_PulseSawtooth: Uint8Array<ArrayBuffer>;
7
+ /** cRSID_PulseSawTriangle (C: static const unsigned char, 4096 entries). */
8
+ export declare const CRSID_PulseSawTriangle: Uint8Array<ArrayBuffer>;
9
+ //# sourceMappingURL=combiwaves.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"combiwaves.d.ts","sourceRoot":"","sources":["../src/combiwaves.ts"],"names":[],"mappings":"AASA,uEAAuE;AACvE,eAAO,MAAM,iBAAiB,yBAiI5B,CAAC;AAEH,yEAAyE;AACzE,eAAO,MAAM,mBAAmB,yBAiI9B,CAAC;AAEH,yEAAyE;AACzE,eAAO,MAAM,mBAAmB,yBAiI9B,CAAC;AAEH,4EAA4E;AAC5E,eAAO,MAAM,sBAAsB,yBAiIjC,CAAC"}