remove loop command from command stream

it is unused
This commit is contained in:
tildearrow 2025-04-17 19:13:39 -05:00
parent 334d4bab67
commit 134954412d
5 changed files with 20 additions and 24 deletions

View file

@ -99,7 +99,7 @@ hex | description
d0 | UNUSED - placeholder used during optimization passes (3-byte nonce follows)
d1 | no operation
d2 | UNUSED
d3 | loop (negative offset and count follow... both are 8-bit)
d3 | UNUSED
d4 | UNUSED - call symbol (32-bit index follows; only used internally)
d5 | call sub-block (32-bit address follows)
d6 | note off + wait one tick

View file

@ -176,6 +176,23 @@ fcsNoOpOneByte:
jsr fcsReadNext
rts
fcsPan:
jsr fcsReadNext
sta chanPan,x
sta fcsArg0
jsr fcsReadNext
sta chanPan+1,x
sta fcsArg1
ldy #10
jsr fcsDispatchCmd
rts
fcsOptPlaceholder:
jsr fcsReadNext
jsr fcsReadNext
jsr fcsReadNext
rts
fcsNoOp:
rts
@ -211,7 +228,7 @@ fcsNoOp:
; $d0 fcsOptPlaceholder,
; $d1 fcsNoOp,
; $d2 fcsNoOp,
; $d3 fcsLoop,
; $d3 fcsNoOp,
; $d4 fcsNoOp,
; $d5 fcsCallI,
; $d6 fcsOffWait,

View file

@ -220,23 +220,6 @@ bool DivCSPlayer::tick() {
break;
case 0xd1: // nop
break;
case 0xd3: { // loop
unsigned char loopOff=stream.readC();
if (chan[i].loopCount>0) {
stream.readC();
if (--chan[i].loopCount) {
// jump
chan[i].readPos-=loopOff;
mustTell=false;
}
} else {
chan[i].loopCount=stream.readC();
// jump
chan[i].readPos-=loopOff;
mustTell=false;
}
break;
}
case 0xd6: // note off + wait 1
e->dispatchCmd(DivCommand(DIV_CMD_NOTE_OFF,i));
chan[i].waitTicks=1;

View file

@ -38,7 +38,7 @@ struct DivCSChannelState {
int volume, volMax, volSpeed, volSpeedTarget;
int vibratoDepth, vibratoRate, vibratoPos, vibratoRange, vibratoShape;
int portaTarget, portaSpeed;
unsigned char arp, arpStage, arpTicks, loopCount;
unsigned char arp, arpStage, arpTicks;
unsigned int callStack[DIV_MAX_CSSTACK];
unsigned char callStackPos;
@ -66,7 +66,6 @@ struct DivCSChannelState {
arp(0),
arpStage(0),
arpTicks(0),
loopCount(0),
callStackPos(0),
tracePos(0) {
for (int i=0; i<DIV_MAX_CSTRACE; i++) {

View file

@ -131,9 +131,6 @@ String disasmCmd(unsigned char* buf, size_t bufLen, unsigned int addr, unsigned
case 0xd1:
return "nop";
break;
case 0xd3:
return fmt::sprintf("loop (-%d), %d",(int)buf[addr+1],(int)buf[addr+2]);
break;
case 0xd4:
if (addr+2>=bufLen) return "???";
return fmt::sprintf("callsym $%.4x",(int)(buf[addr+1]|(buf[addr+2]<<8)));