Skip to content

Commit

Permalink
Update GEMINIFM.SRC
Browse files Browse the repository at this point in the history
OPM_SET_VOLUME subroutine now works properly with alternate OPM voices. A handful of bug fixes
  • Loading branch information
TheNetNomad committed Jan 16, 2022
1 parent 454e8b8 commit a7aacbe
Showing 1 changed file with 52 additions and 44 deletions.
96 changes: 52 additions & 44 deletions GEMINIFM.SRC
Original file line number Diff line number Diff line change
Expand Up @@ -768,31 +768,31 @@ BEGIN
BYTE OPM_A3_F0 VALUE ^h86;
BYTE OPM_A3_F8 VALUE ^h0A;

BYTE OPM_A4_20 VALUE ^hFE;
BYTE OPM_A4_40 VALUE ^h03;
BYTE OPM_A4_80 VALUE ^h1F;
BYTE OPM_A4_A0 VALUE ^h1F;
BYTE OPM_A4_C0 VALUE ^h00;
BYTE OPM_A4_E0 VALUE ^h06;
BYTE OPM_A4_50 VALUE ^h38;
BYTE OPM_A4_90 VALUE ^h0D;
BYTE OPM_A4_B0 VALUE ^h1F;
BYTE OPM_A4_D0 VALUE ^h00;
BYTE OPM_A4_F0 VALUE ^h0A;
BYTE OPM_A4_48 VALUE ^h03;
BYTE OPM_A4_88 VALUE ^h0D;
BYTE OPM_A4_A8 VALUE ^h1F;
BYTE OPM_A4_C8 VALUE ^h00;
BYTE OPM_A4_E8 VALUE ^h0A;
BYTE OPM_A4_50 VALUE ^h38;
BYTE OPM_A4_58 VALUE ^h71;
BYTE OPM_A4_60 VALUE ^h18;
BYTE OPM_A4_68 VALUE ^h16;
BYTE OPM_A4_70 VALUE ^h16;
BYTE OPM_A4_78 VALUE ^h16;
BYTE OPM_A4_80 VALUE ^h1F;
BYTE OPM_A4_88 VALUE ^h0D;
BYTE OPM_A4_90 VALUE ^h0D;
BYTE OPM_A4_98 VALUE ^h0D;
BYTE OPM_A4_A0 VALUE ^h1F;
BYTE OPM_A4_A8 VALUE ^h1F;
BYTE OPM_A4_B0 VALUE ^h1F;
BYTE OPM_A4_B8 VALUE ^h1F;
BYTE OPM_A4_C0 VALUE ^h00;
BYTE OPM_A4_C8 VALUE ^h00;
BYTE OPM_A4_D0 VALUE ^h00;
BYTE OPM_A4_D8 VALUE ^h00;
BYTE OPM_A4_E0 VALUE ^h06;
BYTE OPM_A4_E8 VALUE ^h0A;
BYTE OPM_A4_F0 VALUE ^h0A;
BYTE OPM_A4_F8 VALUE ^h0A;
BYTE OPM_A4_20 VALUE ^hFE;
BYTE OPM_A4_60 VALUE ^h18;
BYTE OPM_A4_70 VALUE ^h16;
BYTE OPM_A4_68 VALUE ^h16;
BYTE OPM_A4_78 VALUE ^h16;

BYTE OPM_A5_20 VALUE ^hE4;
BYTE OPM_A5_40 VALUE ^h01;
Expand Down Expand Up @@ -1093,7 +1093,7 @@ BEGIN
BYTE OPM4_INST;
BYTE OPM5_INST;

DISPLAY "GEMINI FM VERSION 0.5.2 BETA";
DISPLAY "GEMINI FM VERSION 0.5.3 BETA";
DISPLAY "CREATED BY _NETNOMAD";
DISPLAY "";

Expand Down Expand Up @@ -1932,7 +1932,7 @@ BEGIN
^h0D: MOVE #OPM_IC_20 TO OPM_INST_POINTER;
^h0E: MOVE #OPM_ID_20 TO OPM_INST_POINTER;
^h0F: MOVE #OPM_IE_20 TO OPM_INST_POINTER;
^h10: MOVE #OPM_IF_20 TO OPM_INST_POINTER;
^h10: MOVE #OPM_AF_20 TO OPM_INST_POINTER;
^h11: MOVE #OPM_A0_20 TO OPM_INST_POINTER;
^h12: MOVE #OPM_A1_20 TO OPM_INST_POINTER;
^h13: MOVE #OPM_A2_20 TO OPM_INST_POINTER;
Expand All @@ -1948,7 +1948,6 @@ BEGIN
^h1D: MOVE #OPM_AC_20 TO OPM_INST_POINTER;
^h1E: MOVE #OPM_AD_20 TO OPM_INST_POINTER;
^h1F: MOVE #OPM_AE_20 TO OPM_INST_POINTER;
^h20: MOVE #OPM_AF_20 TO OPM_INST_POINTER;
ENDSWITCH;


Expand Down Expand Up @@ -1979,7 +1978,7 @@ BEGIN

ADD ^h10 TO GEMINI_COMMAND_BYTECODE;
MOVE @OPM_INST_POINTER TO GEMINI_COMMAND_DATA;
CALL SUB_OPM_SET_VOLUME;
CALL SUB_OPM_SET_VOLUME;

EXIT;

Expand Down Expand Up @@ -2263,24 +2262,24 @@ BEGIN
ADD #OPM0_INST TO OPM_INST_POINTER;

SWITCH ON GEMINI_COMMAND_DATA:
^hF: MOVE 20 TO OPM_DATA_OUT;
^hE: MOVE 27 TO OPM_DATA_OUT;
^hD: MOVE 34 TO OPM_DATA_OUT;
^hC: MOVE 41 TO OPM_DATA_OUT;
^hB: MOVE 48 TO OPM_DATA_OUT;
^hA: MOVE 55 TO OPM_DATA_OUT;
^h9: MOVE 62 TO OPM_DATA_OUT;
^h8: MOVE 69 TO OPM_DATA_OUT;
^h7: MOVE 76 TO OPM_DATA_OUT;
^h6: MOVE 83 TO OPM_DATA_OUT;
^h5: MOVE 90 TO OPM_DATA_OUT;
^h4: MOVE 97 TO OPM_DATA_OUT;
^h3: MOVE 104 TO OPM_DATA_OUT;
^h2: MOVE 111 TO OPM_DATA_OUT;
^h1: MOVE 118 TO OPM_DATA_OUT;
^h0: MOVE 127 TO OPM_DATA_OUT;
^hF: MOVE 10 TO OPM_DATA_OUT;
^hE: MOVE 17 TO OPM_DATA_OUT;
^hD: MOVE 24 TO OPM_DATA_OUT;
^hC: MOVE 31 TO OPM_DATA_OUT;
^hB: MOVE 38 TO OPM_DATA_OUT;
^hA: MOVE 45 TO OPM_DATA_OUT;
^h9: MOVE 52 TO OPM_DATA_OUT;
^h8: MOVE 59 TO OPM_DATA_OUT;
^h7: MOVE 66 TO OPM_DATA_OUT;
^h6: MOVE 73 TO OPM_DATA_OUT;
^h5: MOVE 80 TO OPM_DATA_OUT;
^h4: MOVE 87 TO OPM_DATA_OUT;
^h3: MOVE 94 TO OPM_DATA_OUT;
^h2: MOVE 101 TO OPM_DATA_OUT;
^h1: MOVE 108 TO OPM_DATA_OUT;
^h0: MOVE 117 TO OPM_DATA_OUT;
ENDSWITCH;
SUBTRACT 10 FROM OPM_DATA_OUT; {--debug
{--SUBTRACT 10 FROM OPM_DATA_OUT; {--debug

{-- TODO RETURN TO THIS ONCE ALTERNATE VOICES ARE IMPLEMENTED
{-- ALSO PER-INSTRUMENT OFFSETS
Expand All @@ -2295,12 +2294,21 @@ BEGIN
ADD OPM_OP4VOL_BASE TO OPM_REG_OUT;
CALL SUB_OPM_WRITE;

IF @OPM_INST_POINTER <> 10 THEN
MOVE GEMINI_COMMAND_BYTECODE TO OPM_REG_OUT;
ADD OPM_OP3VOL_BASE TO OPM_REG_OUT;
CALL SUB_OPM_WRITE;
FI;
SWITCH ON @OPM_INST_POINTER:
^h00 - ^h09, ^h0B - ^h10, ^h13, ^h15, ^h16, ^h18, ^h19, ^h1A, ^h1C, ^h1F: BEGIN
MOVE GEMINI_COMMAND_BYTECODE TO OPM_REG_OUT;
ADD OPM_OP3VOL_BASE TO OPM_REG_OUT;
CALL SUB_OPM_WRITE;
END;
ENDSWITCH;

SWITCH ON @OPM_INST_POINTER:
^h04, ^h15, ^h19, ^h1A, ^h1F: BEGIN
MOVE GEMINI_COMMAND_BYTECODE TO OPM_REG_OUT;
ADD OPM_OP2VOL_BASE TO OPM_REG_OUT;
CALL SUB_OPM_WRITE;
END;
ENDSWITCH;

EXIT;

Expand Down

0 comments on commit a7aacbe

Please sign in to comment.