Table of Contents

Changing the order of items in menu pages in mbSID v2

Overview

Have you ever thought “having the Detune menu entry next to the Finetune entry would be cool”? Then this HowTo is for you. It's one of the simplest things to change. In this example will change just that - on the “Oscillator page” we'll move “Detune” next to “Finetune”.

Difficulty level:

Required actions:

Affected files [1]:



Step-by-Step description



1. Find the right menu page table




2. Edit the table

In this example we want to edit CS_MENU_TABLE_L_OSC whick looks like this:

; ==========================================================================
;  The oscillator menu
; ==========================================================================
CS_MENU_TABLE_L_OSC
	db	(CS_MENU_TABLE_L_OSC_End-CS_MENU_TABLE_L_OSC)/CS_MENU_ENTRY_LEN, 0x00

	;;              Register (00=dummy)         |<->|  max    print ix          exec ix          parameter transfer
	CS_MENU_ENTRY	CS_MENU_SELECTED_OSC_FLAGS, "OSC", 0x006, PRINT_VAR_123,    EXEC_SELPAR,     R2PP2R_VAR_OSC
	CS_MENU_ENTRY	SID_Ix_Vx_WAVEFORM,         "Wav", 0x008, PRINT_Vx_WAV,     EXEC_SELPAR,     R2PP2R_Vx_WAV
	CS_MENU_ENTRY	SID_Ix_Vx_WAVEFORM,         "S/R", 0x003, PRINT_Vx_S_R,     EXEC_TOGPAR,     R2PP2R_Vx_S_R
	CS_MENU_ENTRY	SID_Ix_Vx_DELAY,            "Del", 0x0ff, PRINT_Vx_DEC,     EXEC_SELPAR,     R2PP2R_Vx
	CS_MENU_ENTRY	SID_Ix_Vx_AD,               "Atk", 0x00f, PRINT_Vx_DEC4U,   EXEC_SELPAR,     R2PP2R_Vx_4U
	CS_MENU_ENTRY	SID_Ix_Vx_AD,               "Dec", 0x00f, PRINT_Vx_DEC4L,   EXEC_SELPAR,     R2PP2R_Vx_4L
	CS_MENU_ENTRY	SID_Ix_Vx_SR,               "Sus", 0x00f, PRINT_Vx_DEC4U,   EXEC_SELPAR,     R2PP2R_Vx_4U
	CS_MENU_ENTRY	SID_Ix_Vx_SR,               "Rel", 0x00f, PRINT_Vx_DEC4L,   EXEC_SELPAR,     R2PP2R_Vx_4L
	CS_MENU_ENTRY	SID_Ix_Vx_PITCHRANGE,       "PRn", 0x07f, PRINT_Vx_DEC,     EXEC_SELPAR,     R2PP2R_Vx
	CS_MENU_ENTRY	SID_Ix_Vx_TRANSPOSE,        "Trn", 0x07f, PRINT_Vx_PMDEC7,  EXEC_SELPAR,     R2PP2R_Vx
	CS_MENU_ENTRY	SID_Ix_Vx_FINETUNE,         "Fin", 0x0ff, PRINT_Vx_PMDEC8,  EXEC_SELPAR,     R2PP2R_Vx
	CS_MENU_ENTRY	SID_Ix_Vx_PORTAMENTO,       "Por", 0x0ff, PRINT_Vx_DEC,     EXEC_SELPAR,     R2PP2R_Vx
	CS_MENU_ENTRY	SID_Ix_L_OSC_PHASE,         "Phs", 0x0ff, PRINT_DEC8,       EXEC_SELPAR,     R2PP2R_PAR8
	CS_MENU_ENTRY	SID_Ix_Vx_PULSEWIDTH_L,     "PW ", 0xfff, PRINT_Vx_HEX12,   EXEC_SELPAR,     R2PP2R_Vx_12
	CS_MENU_ENTRY	SID_Ix_Vx_FLAGS1,	    "PMd", 0x002, PRINT_Vx_PMD,     EXEC_TOGPAR,     R2PP2R_Vx_PMD
	CS_MENU_ENTRY	SID_Ix_Vx_FLAGS1,	    "GSA", 0x001, PRINT_Vx_GSA,     EXEC_TOGPAR,     R2PP2R_Vx_GSA
	CS_MENU_ENTRY	SID_Ix_L_OSC_DETUNE,        "Det", 0x0ff, PRINT_DEC8,       EXEC_SELPAR,     R2PP2R_PAR8
#if ENABLE_SWINSID
	CS_MENU_ENTRY	SID_Ix_Vx_SWINSID_MODE,     "SwM", 0x0ff, PRINT_Vx_HEX8,    EXEC_SELPAR,     R2PP2R_Vx
	CS_MENU_ENTRY	SID_Ix_Vx_SWINSID_PHASE,    "SwP", 0x0ff, PRINT_Vx_HEX8,    EXEC_SELPAR,     R2PP2R_Vx
#endif
CS_MENU_TABLE_L_OSC_End



To change it all you need to do is cut the line you want to move and paste it somewhere else. For this example we will move the line

	CS_MENU_ENTRY	SID_Ix_L_OSC_DETUNE,        "Det", 0x0ff, PRINT_DEC8,       EXEC_SELPAR,     R2PP2R_PAR8


It's supposed to be after Finetune which is this line

	CS_MENU_ENTRY	SID_Ix_Vx_FINETUNE,         "Fin", 0x0ff, PRINT_Vx_PMDEC8,  EXEC_SELPAR,     R2PP2R_Vx


So after moving it up there, your table should look like this:

; ==========================================================================
;  The oscillator menu
; ==========================================================================
CS_MENU_TABLE_L_OSC
	db	(CS_MENU_TABLE_L_OSC_End-CS_MENU_TABLE_L_OSC)/CS_MENU_ENTRY_LEN, 0x00

	;;              Register (00=dummy)         |<->|  max    print ix          exec ix          parameter transfer
	CS_MENU_ENTRY	CS_MENU_SELECTED_OSC_FLAGS, "OSC", 0x006, PRINT_VAR_123,    EXEC_SELPAR,     R2PP2R_VAR_OSC
	CS_MENU_ENTRY	SID_Ix_Vx_WAVEFORM,         "Wav", 0x008, PRINT_Vx_WAV,     EXEC_SELPAR,     R2PP2R_Vx_WAV
	CS_MENU_ENTRY	SID_Ix_Vx_WAVEFORM,         "S/R", 0x003, PRINT_Vx_S_R,     EXEC_TOGPAR,     R2PP2R_Vx_S_R
	CS_MENU_ENTRY	SID_Ix_Vx_DELAY,            "Del", 0x0ff, PRINT_Vx_DEC,     EXEC_SELPAR,     R2PP2R_Vx
	CS_MENU_ENTRY	SID_Ix_Vx_AD,               "Atk", 0x00f, PRINT_Vx_DEC4U,   EXEC_SELPAR,     R2PP2R_Vx_4U
	CS_MENU_ENTRY	SID_Ix_Vx_AD,               "Dec", 0x00f, PRINT_Vx_DEC4L,   EXEC_SELPAR,     R2PP2R_Vx_4L
	CS_MENU_ENTRY	SID_Ix_Vx_SR,               "Sus", 0x00f, PRINT_Vx_DEC4U,   EXEC_SELPAR,     R2PP2R_Vx_4U
	CS_MENU_ENTRY	SID_Ix_Vx_SR,               "Rel", 0x00f, PRINT_Vx_DEC4L,   EXEC_SELPAR,     R2PP2R_Vx_4L
	CS_MENU_ENTRY	SID_Ix_Vx_PITCHRANGE,       "PRn", 0x07f, PRINT_Vx_DEC,     EXEC_SELPAR,     R2PP2R_Vx
	CS_MENU_ENTRY	SID_Ix_Vx_TRANSPOSE,        "Trn", 0x07f, PRINT_Vx_PMDEC7,  EXEC_SELPAR,     R2PP2R_Vx
	CS_MENU_ENTRY	SID_Ix_Vx_FINETUNE,         "Fin", 0x0ff, PRINT_Vx_PMDEC8,  EXEC_SELPAR,     R2PP2R_Vx
	CS_MENU_ENTRY	SID_Ix_L_OSC_DETUNE,        "Det", 0x0ff, PRINT_DEC8,       EXEC_SELPAR,     R2PP2R_PAR8
	CS_MENU_ENTRY	SID_Ix_Vx_PORTAMENTO,       "Por", 0x0ff, PRINT_Vx_DEC,     EXEC_SELPAR,     R2PP2R_Vx
	CS_MENU_ENTRY	SID_Ix_L_OSC_PHASE,         "Phs", 0x0ff, PRINT_DEC8,       EXEC_SELPAR,     R2PP2R_PAR8
	CS_MENU_ENTRY	SID_Ix_Vx_PULSEWIDTH_L,     "PW ", 0xfff, PRINT_Vx_HEX12,   EXEC_SELPAR,     R2PP2R_Vx_12
	CS_MENU_ENTRY	SID_Ix_Vx_FLAGS1,	    "PMd", 0x002, PRINT_Vx_PMD,     EXEC_TOGPAR,     R2PP2R_Vx_PMD
	CS_MENU_ENTRY	SID_Ix_Vx_FLAGS1,	    "GSA", 0x001, PRINT_Vx_GSA,     EXEC_TOGPAR,     R2PP2R_Vx_GSA
#if ENABLE_SWINSID
	CS_MENU_ENTRY	SID_Ix_Vx_SWINSID_MODE,     "SwM", 0x0ff, PRINT_Vx_HEX8,    EXEC_SELPAR,     R2PP2R_Vx
	CS_MENU_ENTRY	SID_Ix_Vx_SWINSID_PHASE,    "SwP", 0x0ff, PRINT_Vx_HEX8,    EXEC_SELPAR,     R2PP2R_Vx
#endif
CS_MENU_TABLE_L_OSC_End



3. Recompile

* Now recompile the setup_*.asm 
* Send it to your mbSID via MIOSStudio 
* You're all done!