From 26f6f22ef553183ea4d6aa50a095aabeb1ce53a2 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 27 Aug 2023 20:05:08 -0500 Subject: [PATCH] C219: more updates to-do: - VGM export - presets - noise/invert toggles --- src/engine/platform/c140.cpp | 12 ++++++++---- src/engine/platform/c140.h | 1 + src/engine/sysDef.cpp | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/engine/platform/c140.cpp b/src/engine/platform/c140.cpp index 05aa963c..34457eee 100644 --- a/src/engine/platform/c140.cpp +++ b/src/engine/platform/c140.cpp @@ -193,10 +193,9 @@ void DivPlatformC140::tick(bool sysTick) { unsigned int end=0; if (chan[i].sample>=0 && chan[i].samplesong.sampleLen) { if (is219) { - bank=(sampleOff[chan[i].sample]>>16)&0xff; + bank=(sampleOff[chan[i].sample]>>16)&3; start=sampleOff[chan[i].sample]&0xffff; end=MIN(start+(s->length8>>1)-1,65535); - logV("sampleOff[%d]=%d",chan[i].sample,sampleOff[chan[i].sample]); } else { bank=(sampleOff[chan[i].sample]>>16)&0xff; start=sampleOff[chan[i].sample]&0xffff; @@ -217,8 +216,10 @@ void DivPlatformC140::tick(bool sysTick) { } rWrite(0x05+(i<<4),0); // force keyoff first if (is219) { - // TODO; group banking - + if (groupBank[i>>2]!=bank) { + groupBank[i>>2]=bank; + } + rWrite(0x1f1+(((3+(i>>2))&3)<<1),groupBank[i>>2]); } else { rWrite(0x04+(i<<4),bank); } @@ -427,6 +428,9 @@ void DivPlatformC140::reset() { chan[i].std.setEngine(parent); rWrite(0x05+(i<<4),0); } + for (int i=0; i<4; i++) { + groupBank[i]=0; + } } int DivPlatformC140::getOutputCount() { diff --git a/src/engine/platform/c140.h b/src/engine/platform/c140.h index 3fcb881f..d5c29fea 100644 --- a/src/engine/platform/c140.h +++ b/src/engine/platform/c140.h @@ -55,6 +55,7 @@ class DivPlatformC140: public DivDispatch { bool sampleLoaded[256]; bool is219; int totalChans; + unsigned char groupBank[4]; unsigned char* sampleMem; size_t sampleMemLen; diff --git a/src/engine/sysDef.cpp b/src/engine/sysDef.cpp index f4273195..e0631177 100644 --- a/src/engine/sysDef.cpp +++ b/src/engine/sysDef.cpp @@ -1891,7 +1891,7 @@ void DivEngine::registerSystems() { "Namco C219", NULL, 0xcf, 0, 16, false, true, 0x161, false, (1U<