changing_the_order_of_items_in_menu_pages
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:
- 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 engineCS_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