From cb587a3f172889d026ed87cf5498df7b3cde7921 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 21 Apr 2024 02:53:58 -0500 Subject: [PATCH] move old chip flag conversion info to oldflags.md --- papers/format.md | 389 +-------------------------------------------- papers/oldflags.md | 386 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 387 insertions(+), 388 deletions(-) create mode 100644 papers/oldflags.md diff --git a/papers/format.md b/papers/format.md index 09ea9f74b..58e30b441 100644 --- a/papers/format.md +++ b/papers/format.md @@ -262,7 +262,7 @@ size | description | - as of version 135 these fields only exist for compatibility reasons. 128 | sound chip flag pointers (>=119) or sound chip flags | - before 118, these were 32-bit flags. - | - for conversion details, see the "converting from old flags" section. + | - for conversion details, see oldflags.md. STR | song name STR | song author 4f | A-4 tuning @@ -739,390 +739,3 @@ size | description ``` wavetable data follows. - -# converting from old flags - -prior to format version 119, chip flags were stored as a 32-bit integer. -this section will help you understand the old flag format. - -chips which aren't on this list don't have any flags. - -## 0x02: Genesis (COMPOUND) and 0x42: Genesis extended (COMPOUND) - -- bit 31: ladderEffect (bool) -- bit 0-30: clockSel (int) - - 0: NTSC - - 1: PAL - - 2: 8MHz - - 3: Firecore (`COLOR_NTSC*12/7`) - - 4: System 32 (`COLOR_NTSC*9/4`) - - only 0 and 1 apply to the SN part as well. - -## 0x03: SMS (SN76489) - -- flags AND 0xff03: clockSel (int) - - 0x0000: NTSC (becomes 0) - - 0x0001: PAL (becomes 1) - - 0x0002: 4MHz (becomes 2) - - 0x0003: half NTSC (becomes 3) - - 0x0100: 3MHz (becomes 4) - - 0x0101: 2MHz (becomes 5) - - 0x0102: eighth NTSC (becomes 6) -- flags AND 0xcc: chipType (int) - - 0x00: Sega PSG (becomes 0) - - 0x04: TI SN76489 (becomes 1) - - 0x08: SN with Atari-like short noise (becomes 2) - - 0x0c: Game Gear (becomes 3) - - 0x40: TI SN76489A (becomes 4) - - 0x44: TI SN76496 (becomes 5) - - 0x48: NCR 8496 (becomes 6) - - 0x4c: Tandy PSSJ 3-voice sound (becomes 7) - - 0x80: TI SN94624 (becomes 8) - - 0x84: TI SN76494 (becomes 9) -- bit 4: noPhaseReset (bool) - -## 0x04: Game Boy - -- bits 0-1: chipType (int) - - 0: DMG (rev B) - - 1: CGB (rev C) - - 2: CGB (rev E) - - 3: AGB -- bit 3: noAntiClick (bool) - -## 0x05: PC Engine - -- bit 0: clockSel (int) - - 0: NTSC - - 1: pseudo-PAL -- bit 2: chipType (int) - - 0: HuC6280 - - 1: HuC6280A -- bit 3: noAntiClick (bool) - -## 0x06: NES, 0x88: VRC6, 0x8a: FDS and 0x8b: MMC5 - -- flags: clockSel (int) - - 0: NTSC (2A03) - - 1: PAL (2A07) - - 2: Dendy - -## 0x07: C64 (8580) and 0x47: C64 (6581) - -- bit 0-3: clockSel (int) - - 0: NTSC - - 1: PAL - - 2: SSI 2001 - -## 0x08: Arcade (YM2151+SegaPCM; COMPOUND) - -- bit 0-7: clockSel (int) - - 0: NTSC - - 1: PAL - - 2: 4MHz - - this clock only applies to the YM2151. - -## 0x09: Neo Geo CD (YM2610), 0xa5: Neo Geo (YM2610), 0xa6: Neo Geo extended (YM2610), 0x49: Neo Geo CD extended, 0x9e: YM2610B and 0xde: YM2610B extended - -- bit 0-7: clockSel (int) - - 0: 8MHz - - 1: 8.06MHz (Neo Geo AES) - -## 0x80: AY-3-8910 - -- bit 0-3: clockSel (int) - - 0: NTSC - - 1: PAL - - 2: ZX Spectrum 48K (1.75MHz) - - 3: 2MHz - - 4: 1.5MHz - - 5: 1MHz - - 6: Sunsoft 5B - - 7: PAL NES - - 8: Sunsoft 5B on PAL NES - - 9: 1.10MHz - - 10: 2^21MHz - - 11: double NTSC - - 12: 3.6MHz - - 13: 1.25MHz - - 14: 1.536MHz -- bit 4-5: chipType (int) - - 0: AY-3-8910 - - 1: YM2149(F) - - 2: Sunsoft 5B - - 3: AY-3-8914 -- bit 6: stereo (bool) -- bit 7: halfClock (bool) -- bit 8-15: stereoSep (int) - -## 0x81: Amiga - -- bit 0: clockSel (int) - - 0: NTSC - - 1: PAL -- bit 1: chipType (int) - - 0: Amiga 500 - - 1: Amiga 1200 -- bit 2: bypassLimits (bool) -- bit 8-14: stereoSep (int) - -## 0x82: YM2151 alone - -- bit 0-7: clockSel (int) - - 0: NTSC - - 1: PAL - - 2: 4MHz - -## 0x83: YM2612 alone, 0xa0: YM2612 extended, 0xbd: YM2612 extra features extended and 0xbe: YM2612 extra features - -- bit 31: ladderEffect (bool) -- bit 0-30: clockSel (int) - - 0: NTSC - - 1: PAL - - 2: 8MHz - - 3: Firecore (`COLOR_NTSC*12/7`) - - 4: System 32 (`COLOR_NTSC*9/4`) - -## 0x84: TIA - -- bit 0: clockSel (int) - - 0: NTSC - - 1: PAL -- bit 1-2: mixingType (int) - - 0: mono - - 1: mono (no distortion) - - 2: stereo - -## 0x85: VIC-20 - -- bit 0: clockSel (int) - - 0: NTSC - - 1: PAL - -## 0x87: SNES - -- bit 0-6: volScaleL (int) -- bit 8-14: volScaleR (int) - -## 0x89: OPLL (YM2413) and 0xa7: OPLL drums (YM2413) - -- bit 0-3: clockSel (int) - - 0: NTSC - - 1: PAL - - 2: 4MHz - - 3: half NTSC -- bit 4-31: patchSet (int) - - 0: YM2413 - - 1: YMF281 - - 2: YM2423 - - 3: VRC7 - -## 0x8c: Namco 163 - -- bit 0-3: clockSel (int) - - 0: NTSC (2A03) - - 1: PAL (2A07) - - 2: Dendy -- bit 4-6: channels (int) -- bit 7: multiplex (bool) - -## 0x8d: YM2203 and 0xb6: YM2203 extended - -- bit 0-4: clockSel (int) - - 0: NTSC - - 1: PAL - - 2: 4MHz - - 3: 3MHz - - 4: 3.99MHz - - 5: 1.5MHz -- bit 5-6: prescale (int) - - 0: /6 - - 1: /3 - - 2: /2 - -## 0x8e: YM2608 and 0xb7: YM2608 extended - -- bit 0-4: clockSel (int) - - 0: 8MHz - - 1: 7.98MHz -- bit 5-6: prescale (int) - - 0: /6 - - 1: /3 - - 2: /2 - -## 0x8f: OPL (YM3526), 0xa2: OPL drums (YM3526), 0x90: OPL2 (YM3812), 0xa3: OPL2 drums (YM3812), 0xb2: Yamaha Y8950 and 0xb3: Yamaha Y8950 drums - -- bit 0-7: clockSel (int) - - 0: NTSC - - 1: PAL - - 2: 4MHz - - 3: 3MHz - - 4: 3.99MHz - - 5: 3.5MHz - -## 0x91: OPL3 (YMF262) and 0xa4: OPL3 drums (YMF262) - -- bit 0-7: clockSel (int) - - 0: NTSC - - 1: PAL - - 2: 14MHz - - 3: 16MHz - - 4: 15MHz - -## 0x93: Intel 8253 (beeper) - -- bit 0-1: speakerType (int) - - 0: unfiltered - - 1: cone - - 2: piezo - - 3: system - -## 0x95: RF5C68 - -- bit 0-3: clockSel (int) - - 0: 8MHz - - 1: 10MHz - - 2: 12.5MHz -- bit 4-31: chipType (int) - - 0: RF5C68 - - 1: RF5C164 - -## 0x97: Philips SAA1099 - -- flags: clockSel (int) - - 0: 8MHz - - 1: NTSC - - 2: PAL - -## 0x98: OPZ (YM2414) - -- flags: clockSel (int) - - 0: NTSC - - 1: pseudo-PAL - - 2: 4MHz - -## 0x9a: AY8930 - -- bit 0-3: clockSel (int) - - 0: NTSC - - 1: PAL - - 2: ZX Spectrum 48K (1.75MHz) - - 3: 2MHz - - 4: 1.5MHz - - 5: 1MHz - - 6: Sunsoft 5B - - 7: PAL NES - - 8: Sunsoft 5B on PAL NES - - 9: 1.10MHz - - 10: 2^21MHz - - 11: double NTSC - - 12: 3.6MHz -- bit 6: stereo (bool) -- bit 7: halfClock (bool) -- bit 8-15: stereoSep (int) - -## 0x9d: VRC7 - -- bit 0-3: clockSel (int) - - 0: NTSC - - 1: PAL - - 2: 4MHz - - 3: half NTSC - -## 0x9f: ZX Spectrum (beeper) - -- bit 0-1: clockSel (int) - - 0: NTSC - - 1: PAL - -## 0xa1: Konami SCC and 0xb4: Konami SCC+ - -- bit 0-6: clockSel (int) - - 0: NTSC - - 1: PAL - - 2: 1.5MHz - - 3: 2MHz - -## 0xaa: MSM6295 - -- bit 0-6: clockSel (int) - - 0: 1MHz - - 1: 1.056MHz - - 2: 4MHz - - 3: 4.224MHz - - 4: NTSC - - 5: half NTSC - - 6: 2/7 NTSC - - 7: quarter NTSC - - 8: 2MHz - - 9: 2.112MHz - - 10: 875KHz - - 11: 937.5KHz - - 12: 1.5MHz - - 13: 3MHz - - 14: 1/3 NTSC -- bit 7: rateSel (bool) - -## 0xab: MSM6258 - -- flags: clockSel (int) - - 0: 4MHz - - 1: 4.096MHz - - 2: 8MHz - - 3: 8.192MHz - -## 0xae: OPL4 (YMF278B) and 0xaf: OPL4 drums (YMF278B) - -- bit 0-7: clockSel (int) - - 0: NTSC - - 1: PAL - - 2: 33.8688MHz - -## 0xb0: Seta/Allumer X1-010 - -- bit 0-3: clockSel (int) - - 0: 16MHz - - 1: 16.67MHz -- bit 4: stereo (bool) - -## 0xb1: Ensoniq ES5506 - -- bit 0-4: channels (int) - -## 0xb5: tildearrow Sound Unit - -- bit 0: clockSel (int) - - 0: NTSC - - 1: PAL -- bit 2: echo (bool) -- bit 3: swapEcho (bool) -- bit 4: sampleMemSize (int) - - 0: 8K - - 1: 64K -- bit 5: pdm (bool) -- bit 8-13: echoDelay (int) -- bit 16-19: echoFeedback (int) -- bit 20-23: echoResolution (int) -- bit 24-31: echoVol (int) - -## 0xb8: YMZ280B - -- bit 0-7: clockSel (int) - - 0: 16.9344MHz - - 1: NTSC - - 2: PAL - - 3: 16MHz - - 4: 16.67MHz - - 5: 14MHz - -## 0xc0: PCM DAC - -- bit 0-15: rate (int) - - add +1 to this value -- bit 16-19: outDepth (int) -- bit 20: stereo (bool) - -## 0xe0: QSound - -- bit 0-11: echoDelay (int) -- bit 12-19: echoFeedback (int) diff --git a/papers/oldflags.md b/papers/oldflags.md new file mode 100644 index 000000000..08f6a1c4a --- /dev/null +++ b/papers/oldflags.md @@ -0,0 +1,386 @@ +# converting from old flags + +prior to format version 119, chip flags were stored as a 32-bit integer. +this section will help you understand the old flag format. + +chips which aren't on this list don't have any flags or have been added after version 119. + +## 0x02: Genesis (COMPOUND) and 0x42: Genesis extended (COMPOUND) + +- bit 31: ladderEffect (bool) +- bit 0-30: clockSel (int) + - 0: NTSC + - 1: PAL + - 2: 8MHz + - 3: Firecore (`COLOR_NTSC*12/7`) + - 4: System 32 (`COLOR_NTSC*9/4`) + - only 0 and 1 apply to the SN part as well. + +## 0x03: SMS (SN76489) + +- flags AND 0xff03: clockSel (int) + - 0x0000: NTSC (becomes 0) + - 0x0001: PAL (becomes 1) + - 0x0002: 4MHz (becomes 2) + - 0x0003: half NTSC (becomes 3) + - 0x0100: 3MHz (becomes 4) + - 0x0101: 2MHz (becomes 5) + - 0x0102: eighth NTSC (becomes 6) +- flags AND 0xcc: chipType (int) + - 0x00: Sega PSG (becomes 0) + - 0x04: TI SN76489 (becomes 1) + - 0x08: SN with Atari-like short noise (becomes 2) + - 0x0c: Game Gear (becomes 3) + - 0x40: TI SN76489A (becomes 4) + - 0x44: TI SN76496 (becomes 5) + - 0x48: NCR 8496 (becomes 6) + - 0x4c: Tandy PSSJ 3-voice sound (becomes 7) + - 0x80: TI SN94624 (becomes 8) + - 0x84: TI SN76494 (becomes 9) +- bit 4: noPhaseReset (bool) + +## 0x04: Game Boy + +- bits 0-1: chipType (int) + - 0: DMG (rev B) + - 1: CGB (rev C) + - 2: CGB (rev E) + - 3: AGB +- bit 3: noAntiClick (bool) + +## 0x05: PC Engine + +- bit 0: clockSel (int) + - 0: NTSC + - 1: pseudo-PAL +- bit 2: chipType (int) + - 0: HuC6280 + - 1: HuC6280A +- bit 3: noAntiClick (bool) + +## 0x06: NES, 0x88: VRC6, 0x8a: FDS and 0x8b: MMC5 + +- flags: clockSel (int) + - 0: NTSC (2A03) + - 1: PAL (2A07) + - 2: Dendy + +## 0x07: C64 (8580) and 0x47: C64 (6581) + +- bit 0-3: clockSel (int) + - 0: NTSC + - 1: PAL + - 2: SSI 2001 + +## 0x08: Arcade (YM2151+SegaPCM; COMPOUND) + +- bit 0-7: clockSel (int) + - 0: NTSC + - 1: PAL + - 2: 4MHz + - this clock only applies to the YM2151. + +## 0x09: Neo Geo CD (YM2610), 0xa5: Neo Geo (YM2610), 0xa6: Neo Geo extended (YM2610), 0x49: Neo Geo CD extended, 0x9e: YM2610B and 0xde: YM2610B extended + +- bit 0-7: clockSel (int) + - 0: 8MHz + - 1: 8.06MHz (Neo Geo AES) + +## 0x80: AY-3-8910 + +- bit 0-3: clockSel (int) + - 0: NTSC + - 1: PAL + - 2: ZX Spectrum 48K (1.75MHz) + - 3: 2MHz + - 4: 1.5MHz + - 5: 1MHz + - 6: Sunsoft 5B + - 7: PAL NES + - 8: Sunsoft 5B on PAL NES + - 9: 1.10MHz + - 10: 2^21MHz + - 11: double NTSC + - 12: 3.6MHz + - 13: 1.25MHz + - 14: 1.536MHz +- bit 4-5: chipType (int) + - 0: AY-3-8910 + - 1: YM2149(F) + - 2: Sunsoft 5B + - 3: AY-3-8914 +- bit 6: stereo (bool) +- bit 7: halfClock (bool) +- bit 8-15: stereoSep (int) + +## 0x81: Amiga + +- bit 0: clockSel (int) + - 0: NTSC + - 1: PAL +- bit 1: chipType (int) + - 0: Amiga 500 + - 1: Amiga 1200 +- bit 2: bypassLimits (bool) +- bit 8-14: stereoSep (int) + +## 0x82: YM2151 alone + +- bit 0-7: clockSel (int) + - 0: NTSC + - 1: PAL + - 2: 4MHz + +## 0x83: YM2612 alone, 0xa0: YM2612 extended, 0xbd: YM2612 extra features extended and 0xbe: YM2612 extra features + +- bit 31: ladderEffect (bool) +- bit 0-30: clockSel (int) + - 0: NTSC + - 1: PAL + - 2: 8MHz + - 3: Firecore (`COLOR_NTSC*12/7`) + - 4: System 32 (`COLOR_NTSC*9/4`) + +## 0x84: TIA + +- bit 0: clockSel (int) + - 0: NTSC + - 1: PAL +- bit 1-2: mixingType (int) + - 0: mono + - 1: mono (no distortion) + - 2: stereo + +## 0x85: VIC-20 + +- bit 0: clockSel (int) + - 0: NTSC + - 1: PAL + +## 0x87: SNES + +- bit 0-6: volScaleL (int) +- bit 8-14: volScaleR (int) + +## 0x89: OPLL (YM2413) and 0xa7: OPLL drums (YM2413) + +- bit 0-3: clockSel (int) + - 0: NTSC + - 1: PAL + - 2: 4MHz + - 3: half NTSC +- bit 4-31: patchSet (int) + - 0: YM2413 + - 1: YMF281 + - 2: YM2423 + - 3: VRC7 + +## 0x8c: Namco 163 + +- bit 0-3: clockSel (int) + - 0: NTSC (2A03) + - 1: PAL (2A07) + - 2: Dendy +- bit 4-6: channels (int) +- bit 7: multiplex (bool) + +## 0x8d: YM2203 and 0xb6: YM2203 extended + +- bit 0-4: clockSel (int) + - 0: NTSC + - 1: PAL + - 2: 4MHz + - 3: 3MHz + - 4: 3.99MHz + - 5: 1.5MHz +- bit 5-6: prescale (int) + - 0: /6 + - 1: /3 + - 2: /2 + +## 0x8e: YM2608 and 0xb7: YM2608 extended + +- bit 0-4: clockSel (int) + - 0: 8MHz + - 1: 7.98MHz +- bit 5-6: prescale (int) + - 0: /6 + - 1: /3 + - 2: /2 + +## 0x8f: OPL (YM3526), 0xa2: OPL drums (YM3526), 0x90: OPL2 (YM3812), 0xa3: OPL2 drums (YM3812), 0xb2: Yamaha Y8950 and 0xb3: Yamaha Y8950 drums + +- bit 0-7: clockSel (int) + - 0: NTSC + - 1: PAL + - 2: 4MHz + - 3: 3MHz + - 4: 3.99MHz + - 5: 3.5MHz + +## 0x91: OPL3 (YMF262) and 0xa4: OPL3 drums (YMF262) + +- bit 0-7: clockSel (int) + - 0: NTSC + - 1: PAL + - 2: 14MHz + - 3: 16MHz + - 4: 15MHz + +## 0x93: Intel 8253 (beeper) + +- bit 0-1: speakerType (int) + - 0: unfiltered + - 1: cone + - 2: piezo + - 3: system + +## 0x95: RF5C68 + +- bit 0-3: clockSel (int) + - 0: 8MHz + - 1: 10MHz + - 2: 12.5MHz +- bit 4-31: chipType (int) + - 0: RF5C68 + - 1: RF5C164 + +## 0x97: Philips SAA1099 + +- flags: clockSel (int) + - 0: 8MHz + - 1: NTSC + - 2: PAL + +## 0x98: OPZ (YM2414) + +- flags: clockSel (int) + - 0: NTSC + - 1: pseudo-PAL + - 2: 4MHz + +## 0x9a: AY8930 + +- bit 0-3: clockSel (int) + - 0: NTSC + - 1: PAL + - 2: ZX Spectrum 48K (1.75MHz) + - 3: 2MHz + - 4: 1.5MHz + - 5: 1MHz + - 6: Sunsoft 5B + - 7: PAL NES + - 8: Sunsoft 5B on PAL NES + - 9: 1.10MHz + - 10: 2^21MHz + - 11: double NTSC + - 12: 3.6MHz +- bit 6: stereo (bool) +- bit 7: halfClock (bool) +- bit 8-15: stereoSep (int) + +## 0x9d: VRC7 + +- bit 0-3: clockSel (int) + - 0: NTSC + - 1: PAL + - 2: 4MHz + - 3: half NTSC + +## 0x9f: ZX Spectrum (beeper) + +- bit 0-1: clockSel (int) + - 0: NTSC + - 1: PAL + +## 0xa1: Konami SCC and 0xb4: Konami SCC+ + +- bit 0-6: clockSel (int) + - 0: NTSC + - 1: PAL + - 2: 1.5MHz + - 3: 2MHz + +## 0xaa: MSM6295 + +- bit 0-6: clockSel (int) + - 0: 1MHz + - 1: 1.056MHz + - 2: 4MHz + - 3: 4.224MHz + - 4: NTSC + - 5: half NTSC + - 6: 2/7 NTSC + - 7: quarter NTSC + - 8: 2MHz + - 9: 2.112MHz + - 10: 875KHz + - 11: 937.5KHz + - 12: 1.5MHz + - 13: 3MHz + - 14: 1/3 NTSC +- bit 7: rateSel (bool) + +## 0xab: MSM6258 + +- flags: clockSel (int) + - 0: 4MHz + - 1: 4.096MHz + - 2: 8MHz + - 3: 8.192MHz + +## 0xae: OPL4 (YMF278B) and 0xaf: OPL4 drums (YMF278B) + +- bit 0-7: clockSel (int) + - 0: NTSC + - 1: PAL + - 2: 33.8688MHz + +## 0xb0: Seta/Allumer X1-010 + +- bit 0-3: clockSel (int) + - 0: 16MHz + - 1: 16.67MHz +- bit 4: stereo (bool) + +## 0xb1: Ensoniq ES5506 + +- bit 0-4: channels (int) + +## 0xb5: tildearrow Sound Unit + +- bit 0: clockSel (int) + - 0: NTSC + - 1: PAL +- bit 2: echo (bool) +- bit 3: swapEcho (bool) +- bit 4: sampleMemSize (int) + - 0: 8K + - 1: 64K +- bit 5: pdm (bool) +- bit 8-13: echoDelay (int) +- bit 16-19: echoFeedback (int) +- bit 20-23: echoResolution (int) +- bit 24-31: echoVol (int) + +## 0xb8: YMZ280B + +- bit 0-7: clockSel (int) + - 0: 16.9344MHz + - 1: NTSC + - 2: PAL + - 3: 16MHz + - 4: 16.67MHz + - 5: 14MHz + +## 0xc0: PCM DAC + +- bit 0-15: rate (int) + - add +1 to this value +- bit 16-19: outDepth (int) +- bit 20: stereo (bool) + +## 0xe0: QSound + +- bit 0-11: echoDelay (int) +- bit 12-19: echoFeedback (int)