src/mess/tapectrl.c
| r8123 | r8124 | |
| 22 | 22 | #define TAPECMD_PLAY ((void *) 0x0002) |
| 23 | 23 | #define TAPECMD_RECORD ((void *) 0x0003) |
| 24 | 24 | #define TAPECMD_REWIND ((void *) 0x0004) |
| 25 | | #define TAPECMD_FAST_FORWARD ((void *) 0x0005) |
| 25 | #define TAPECMD_FAST_FORWARD ((void *) 0x0005) |
| 26 | #define TAPECMD_SLIDER ((void *) 0x0006) |
| 27 | #define TAPECMD_SELECT ((void *) 0x0007) |
| 26 | 28 | |
| 27 | 29 | |
| 28 | 30 | |
| r8123 | r8124 | |
| 106 | 108 | |
| 107 | 109 | if (image_exists(menustate->device)) |
| 108 | 110 | { |
| 111 | double t0, t1; |
| 112 | UINT32 tapeflags = 0; |
| 113 | |
| 114 | t0 = cassette_get_position(menustate->device); |
| 115 | t1 = cassette_get_length(menustate->device); |
| 116 | |
| 117 | if (t1 > 0) |
| 118 | { |
| 119 | if (t0 > 0) |
| 120 | tapeflags |= MENU_FLAG_LEFT_ARROW; |
| 121 | if (t0 < t1) |
| 122 | tapeflags |= MENU_FLAG_RIGHT_ARROW; |
| 123 | } |
| 124 | |
| 109 | 125 | /* name of tape */ |
| 110 | | ui_menu_item_append(menu, image_typename_id(menustate->device), image_filename(menustate->device), flags, NULL); |
| 126 | ui_menu_item_append(menu, image_typename_id(menustate->device), image_filename(menustate->device), flags, TAPECMD_SELECT); |
| 111 | 127 | |
| 112 | 128 | /* state */ |
| 113 | 129 | tapecontrol_gettime(&timepos, menustate->device, NULL, NULL); |
| r8123 | r8124 | |
| 121 | 137 | : ((state & CASSETTE_MASK_MOTOR) == CASSETTE_MOTOR_ENABLED ? "recording" : "(recording)") |
| 122 | 138 | ), |
| 123 | 139 | astring_c(&timepos), |
| 124 | | 0, |
| 125 | | NULL); |
| 140 | tapeflags, |
| 141 | TAPECMD_SLIDER); |
| 126 | 142 | |
| 127 | 143 | /* pause or stop */ |
| 128 | 144 | ui_menu_item_append(menu, "Pause/Stop", NULL, 0, TAPECMD_STOP); |
| r8123 | r8124 | |
| 181 | 197 | menu_tape_control_populate(machine, menu, (tape_control_menu_state*)state); |
| 182 | 198 | |
| 183 | 199 | /* process the menu */ |
| 184 | | event = ui_menu_process(machine, menu, 0); |
| 200 | event = ui_menu_process(machine, menu, UI_MENU_PROCESS_LR_REPEAT); |
| 185 | 201 | if (event != NULL) |
| 186 | 202 | { |
| 187 | 203 | switch(event->iptkey) |
| 188 | 204 | { |
| 189 | 205 | case IPT_UI_LEFT: |
| 190 | | /* left arrow - rotate left through cassette devices */ |
| 191 | | if (menustate->index > 0) |
| 192 | | menustate->index--; |
| 206 | if (event->itemref==TAPECMD_SLIDER) |
| 207 | cassette_seek(menustate->device, -1, SEEK_CUR); |
| 193 | 208 | else |
| 194 | | menustate->index = cassette_count(machine) - 1; |
| 195 | | menustate->device = NULL; |
| 209 | if (event->itemref==TAPECMD_SELECT) |
| 210 | { |
| 211 | /* left arrow - rotate left through cassette devices */ |
| 212 | if (menustate->index > 0) |
| 213 | menustate->index--; |
| 214 | else |
| 215 | menustate->index = cassette_count(machine) - 1; |
| 216 | menustate->device = NULL; |
| 217 | } |
| 196 | 218 | break; |
| 197 | 219 | |
| 198 | 220 | case IPT_UI_RIGHT: |
| 199 | | /* right arrow - rotate right through cassette devices */ |
| 200 | | if (menustate->index < cassette_count(machine) - 1) |
| 201 | | menustate->index++; |
| 221 | if (event->itemref==TAPECMD_SLIDER) |
| 222 | cassette_seek(menustate->device, +1, SEEK_CUR); |
| 202 | 223 | else |
| 203 | | menustate->index = 0; |
| 204 | | menustate->device = NULL; |
| 224 | if (event->itemref==TAPECMD_SELECT) |
| 225 | { |
| 226 | /* right arrow - rotate right through cassette devices */ |
| 227 | if (menustate->index < cassette_count(machine) - 1) |
| 228 | menustate->index++; |
| 229 | else |
| 230 | menustate->index = 0; |
| 231 | menustate->device = NULL; |
| 232 | } |
| 205 | 233 | break; |
| 206 | 234 | |
| 207 | 235 | case IPT_UI_SELECT: |
| 208 | 236 | { |
| 209 | | if (event->itemref==TAPECMD_NULL) { |
| 210 | | } |
| 211 | | else if (event->itemref==TAPECMD_STOP) { |
| 237 | if (event->itemref==TAPECMD_STOP) |
| 212 | 238 | cassette_change_state(menustate->device, CASSETTE_STOPPED, CASSETTE_MASK_UISTATE); |
| 213 | | } |
| 214 | | else if (event->itemref==TAPECMD_PLAY) { |
| 239 | else |
| 240 | if (event->itemref==TAPECMD_PLAY) |
| 215 | 241 | cassette_change_state(menustate->device, CASSETTE_PLAY, CASSETTE_MASK_UISTATE); |
| 216 | | } |
| 217 | | else if (event->itemref==TAPECMD_RECORD) { |
| 242 | else |
| 243 | if (event->itemref==TAPECMD_RECORD) |
| 218 | 244 | cassette_change_state(menustate->device, CASSETTE_RECORD, CASSETTE_MASK_UISTATE); |
| 219 | | } |
| 220 | | else if (event->itemref==TAPECMD_REWIND) { |
| 221 | | cassette_seek(menustate->device, -60, SEEK_CUR); |
| 222 | | } |
| 223 | | else if (event->itemref==TAPECMD_FAST_FORWARD) { |
| 224 | | cassette_seek(menustate->device, +60, SEEK_CUR); |
| 225 | | } |
| 245 | else |
| 246 | if (event->itemref==TAPECMD_REWIND) |
| 247 | cassette_seek(menustate->device, -30, SEEK_CUR); |
| 248 | else |
| 249 | if (event->itemref==TAPECMD_FAST_FORWARD) |
| 250 | cassette_seek(menustate->device, 30, SEEK_CUR); |
| 251 | else |
| 252 | if (event->itemref==TAPECMD_SLIDER) |
| 253 | cassette_seek(menustate->device, 0, SEEK_SET); |
| 226 | 254 | } |
| 227 | 255 | break; |
| 228 | 256 | } |