Skip to content

Commit

Permalink
Update GEMINIFM.SRC
Browse files Browse the repository at this point in the history
OPM volume and detune implemented
  • Loading branch information
TheNetNomad committed Nov 29, 2021
1 parent 030d1aa commit 2f0166c
Showing 1 changed file with 79 additions and 5 deletions.
84 changes: 79 additions & 5 deletions GEMINIFM.SRC
Original file line number Diff line number Diff line change
Expand Up @@ -642,6 +642,12 @@ BEGIN
BYTE OPM_NOTE;
BYTE OPM_OCTAVE;

BYTE OPM0_INST;
BYTE OPM1_INST;
BYTE OPM2_INST;
BYTE OPM3_INST;
BYTE OPM4_INST;
BYTE OPM5_INST;

{----------------------------------------------------------}
{-- FIRST WE SEARCH FOR A YAMAHA SFG DEVICE IN ALL SLOTS --}
Expand Down Expand Up @@ -847,10 +853,10 @@ BEGIN
OD;
CLOSE INFILE;

DISPLAY "SONG DATA START ADDRESS:";
DISPLAY "DATA START ADDRESS:";
CONVERT GEMINI_COMMAND_POINTER TO HEX STR_OUT;
DISPLAY STR_OUT;
DISPLAY "SONG DATA END ADDRESS:"
DISPLAY "DATA END ADDRESS:";
CONVERT SONG_LOAD_POINTER TO HEX STR_OUT;
DISPLAY STR_OUT;
MOVE 1 TO GEMINI_NOT_PAUSED;
Expand Down Expand Up @@ -912,12 +918,13 @@ BEGIN
^h04: CALL SUB_SET_LOOP;
^h0F: BEGIN
MOVE 0 TO GEMINI_NOT_PAUSED;
MCALL BIOS_ENASLT USING ,,^b0100000000000000,3;
EXIT;
END;
^h10 - ^h16: CALL SUB_OPM_NOTE_ON;
^h20 - ^h25: CALL SUB_OPM_SET_INSTRUMENT;
{--^h30 - ^h3A: CALL SUB_OPM_SET_VOLUME;
{--^h40 - ^h46: CALL SUB_OPM_SET_DETUNE;
^h30 - ^h3A: CALL SUB_OPM_SET_VOLUME;
^h40 - ^h46: CALL SUB_OPM_SET_DETUNE;
ENDSWITCH;


Expand Down Expand Up @@ -1097,7 +1104,8 @@ BEGIN
11: MOVE OPLL_FNUM_B TO @OPLL_FNUM;
ENDSWITCH;
MOVE @OPLL_FNUM TO OPLL_DATA_OUT;
SUBTRACT @OPLL_DETUNE FROM OPLL_DATA_OUT;
{--SUBTRACT @OPLL_DETUNE FROM OPLL_DATA_OUT;
ADD @OPLL_DETUNE TO OPLL_DATA_OUT;
MOVE OPLL_FNUM_BASE TO OPLL_REG_OUT;
ADD GEMINI_COMMAND_BYTECODE TO OPLL_REG_OUT;
CALL SUB_OPLL_WRITE;
Expand Down Expand Up @@ -1198,6 +1206,12 @@ BEGIN
EXIT;

SUB_OPM_SET_INSTRUMENT:
MOVE GEMINI_COMMAND_BYTECODE TO OPM_INST_POINTER;
SUBTRACT ^h20 FROM OPM_INST_POINTER;
ADD #OPM0_INST TO OPM_INST_POINTER;
MOVE GEMINI_COMMAND_DATA TO @OPM_INST_POINTER;


SWITCH ON GEMINI_COMMAND_DATA:
^h00: MOVE #OPM_IF_20 TO OPM_INST_POINTER;
^h01: MOVE #OPM_I0_20 TO OPM_INST_POINTER;
Expand Down Expand Up @@ -1303,6 +1317,66 @@ BEGIN
CALL SUB_OPM_WRITE;
EXIT;

SUB_OPM_SET_DETUNE:
MOVE GEMINI_COMMAND_BYTECODE TO OPM_REG_OUT;
SUBTRACT ^h10 FROM OPM_REG_OUT;

MOVE GEMINI_COMMAND_DATA TO OPM_DATA_OUT;

{--TODO THIS IS A DUMB HACK
MULTIPLY OPM_DATA_OUT BY ^h10;

CALL SUB_OPM_WRITE;


EXIT;

SUB_OPM_SET_VOLUME:
{-- TODO OPM DRUMS
IF GEMINI_COMMAND_BYTECODE > ^h35 THEN
CALL SUB_OPLL_SET_VOLUME;
EXIT;
FI;

SUBTRACT ^h30 FROM GEMINI_COMMAND_BYTECODE;
MOVE GEMINI_COMMAND_BYTECODE TO OPM_INST_POINTER;
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;

ENDSWITCH;

{-- TODO RETURN TO THIS ONCE ALTERNATE VOICES ARE IMPLEMENTED

MOVE GEMINI_COMMAND_BYTECODE TO OPM_REG_OUT;
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;


EXIT;

SUB_OPM_WRITE:
{--CONVERT OPM_REG_OUT TO HEX STR_OUT;
{--DISPLAY "WRITING ", STR_OUT, " TO 7FF0";
Expand Down

0 comments on commit 2f0166c

Please sign in to comment.