====== 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!