User Tools

Site Tools


changing_the_order_of_items_in_menu_pages

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:

  • easy 0-1-2-3-4-5-6-7-8-9 hard

Required actions:

  • Search/copy&paste
  • Compile

Affected files [1]:

  • src/cs_menu_tables.inc



Step-by-Step description



1. Find the right menu page table

  • Open src/cs_menu_tables.inc.
  • Find the table you want to change. Some of the available pages are:


  • CS_MENU_TABLE_L_OSC: Oscillator menu page for the lead engine (notice the _L_ in the name)
  • CS_MENU_TABLE_B_OSC: Oscillator menu page for the bassline engine (notice the _B_ in the name)
  • CS_MENU_TABLE_L_FIL: The Filter menu page for the lead engine
  • CS_MENU_TABLE_L_LFO: The LFO menu page for the lead engine
  • and many more. The naming conventions make it pretty easy to find the right table. If you're not sure which one it is, you can always just read the labels (3rd column, “LFO”, “Wav”, “Dep” and the likes) and cross-check them with your SID.



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!
changing_the_order_of_items_in_menu_pages.txt · Last modified: 2009/02/28 22:02 by admin