src/osd/sdl/video.c
| r9395 | r9396 | |
| 82 | 82 | static sdl_monitor_info *primary_monitor; |
| 83 | 83 | static sdl_monitor_info *sdl_monitor_list; |
| 84 | 84 | |
| 85 | | static bitmap_t *effect_bitmap; |
| 86 | | |
| 87 | 85 | //============================================================ |
| 88 | 86 | // PROTOTYPES |
| 89 | 87 | //============================================================ |
| r9395 | r9396 | |
| 96 | 94 | |
| 97 | 95 | static void extract_video_config(running_machine *machine); |
| 98 | 96 | static void extract_window_config(running_machine *machine, int index, sdl_window_config *conf); |
| 99 | | static void load_effect_overlay(running_machine *machine, const char *filename); |
| 100 | 97 | static float get_aspect(const char *name, int report_error); |
| 101 | 98 | static void get_resolution(const char *name, sdl_window_config *config, int report_error); |
| 102 | 99 | |
| r9395 | r9396 | |
| 152 | 149 | |
| 153 | 150 | static void video_exit(running_machine &machine) |
| 154 | 151 | { |
| 155 | | // free the overlay effect |
| 156 | | global_free(effect_bitmap); |
| 157 | | effect_bitmap = NULL; |
| 158 | | |
| 159 | 152 | // free all of our monitor information |
| 160 | 153 | while (sdl_monitor_list != NULL) |
| 161 | 154 | { |
| r9395 | r9396 | |
| 646 | 639 | if (machine->debug_flags & DEBUG_FLAG_OSD_ENABLED) |
| 647 | 640 | video_config.windowed = TRUE; |
| 648 | 641 | |
| 649 | | stemp = options_get_string(machine->options(), SDLOPTION_EFFECT); |
| 650 | | if (stemp != NULL && strcmp(stemp, "none") != 0) |
| 651 | | load_effect_overlay(machine, stemp); |
| 652 | | |
| 653 | 642 | // default to working video please |
| 654 | 643 | video_config.novideo = 0; |
| 655 | 644 | |
| r9395 | r9396 | |
| 812 | 801 | |
| 813 | 802 | |
| 814 | 803 | //============================================================ |
| 815 | | // load_effect_overlay |
| 816 | | //============================================================ |
| 817 | | |
| 818 | | static void load_effect_overlay(running_machine *machine, const char *filename) |
| 819 | | { |
| 820 | | char *tempstr = global_alloc_array(char, strlen(filename) + 5); |
| 821 | | char *dest; |
| 822 | | |
| 823 | | // append a .PNG extension |
| 824 | | strcpy(tempstr, filename); |
| 825 | | dest = strrchr(tempstr, '.'); |
| 826 | | if (dest == NULL) |
| 827 | | dest = &tempstr[strlen(tempstr)]; |
| 828 | | strcpy(dest, ".png"); |
| 829 | | |
| 830 | | // load the file |
| 831 | | effect_bitmap = render_load_png(OPTION_ARTPATH, NULL, tempstr, NULL, NULL); |
| 832 | | if (effect_bitmap == NULL) |
| 833 | | { |
| 834 | | mame_printf_error("Unable to load PNG file '%s'\n", tempstr); |
| 835 | | global_free(tempstr); |
| 836 | | return; |
| 837 | | } |
| 838 | | |
| 839 | | // set the overlay on all screens |
| 840 | | for (screen_device *screen = screen_first(*machine); screen != NULL; screen = screen_next(screen)) |
| 841 | | screen->container().set_overlay(effect_bitmap); |
| 842 | | |
| 843 | | global_free(tempstr); |
| 844 | | } |
| 845 | | |
| 846 | | |
| 847 | | //============================================================ |
| 848 | 804 | // get_aspect |
| 849 | 805 | //============================================================ |
| 850 | 806 | |
src/osd/sdl/sdlmain.c
| r9395 | r9396 | |
| 94 | 94 | { SDLOPTION_MAXIMIZE ";max", "1", OPTION_BOOLEAN, "default to maximized windows; otherwise, windows will be minimized" }, |
| 95 | 95 | { SDLOPTION_KEEPASPECT ";ka", "1", OPTION_BOOLEAN, "constrain to the proper aspect ratio" }, |
| 96 | 96 | { SDLOPTION_UNEVENSTRETCH ";ues", "1", OPTION_BOOLEAN, "allow non-integer stretch factors" }, |
| 97 | | { SDLOPTION_EFFECT, SDLOPTVAL_NONE, 0, "name of a PNG file to use for visual effects, or 'none'" }, |
| 98 | 97 | { SDLOPTION_CENTERH, "1", OPTION_BOOLEAN, "center horizontally within the view area" }, |
| 99 | 98 | { SDLOPTION_CENTERV, "1", OPTION_BOOLEAN, "center vertically within the view area" }, |
| 100 | 99 | #if (SDL_VERSION_ATLEAST(1,2,10)) |
src/osd/windows/winmain.c
| r9395 | r9396 | |
| 316 | 316 | { "maximize;max", "1", OPTION_BOOLEAN, "default to maximized windows; otherwise, windows will be minimized" }, |
| 317 | 317 | { "keepaspect;ka", "1", OPTION_BOOLEAN, "constrain to the proper aspect ratio" }, |
| 318 | 318 | { "prescale", "1", 0, "scale screen rendering by this amount in software" }, |
| 319 | | { "effect", "none", 0, "name of a PNG file to use for visual effects, or 'none'" }, |
| 320 | 319 | { "waitvsync", "0", OPTION_BOOLEAN, "enable waiting for the start of VBLANK before flipping screens; reduces tearing effects" }, |
| 321 | 320 | { "syncrefresh", "0", OPTION_BOOLEAN, "enable using the start of VBLANK for throttling instead of the game time" }, |
| 322 | 321 | |
src/osd/windows/video.c
| r9395 | r9396 | |
| 88 | 88 | win_monitor_info *win_monitor_list; |
| 89 | 89 | static win_monitor_info *primary_monitor; |
| 90 | 90 | |
| 91 | | static bitmap_t *effect_bitmap; |
| 92 | 91 | |
| 93 | 92 | |
| 94 | | |
| 95 | 93 | //============================================================ |
| 96 | 94 | // PROTOTYPES |
| 97 | 95 | //============================================================ |
| r9395 | r9396 | |
| 104 | 102 | static void check_osd_inputs(running_machine *machine); |
| 105 | 103 | |
| 106 | 104 | static void extract_video_config(running_machine *machine); |
| 107 | | static void load_effect_overlay(running_machine *machine, const char *filename); |
| 108 | 105 | static float get_aspect(const char *name, int report_error); |
| 109 | 106 | static void get_resolution(const char *name, win_window_config *config, int report_error); |
| 110 | 107 | |
| r9395 | r9396 | |
| 148 | 145 | |
| 149 | 146 | static void winvideo_exit(running_machine &machine) |
| 150 | 147 | { |
| 151 | | // free the overlay effect |
| 152 | | global_free(effect_bitmap); |
| 153 | | effect_bitmap = NULL; |
| 154 | | |
| 155 | 148 | // free all of our monitor information |
| 156 | 149 | while (win_monitor_list != NULL) |
| 157 | 150 | { |
| r9395 | r9396 | |
| 407 | 400 | // if we are in debug mode, never go full screen |
| 408 | 401 | if (machine->debug_flags & DEBUG_FLAG_OSD_ENABLED) |
| 409 | 402 | video_config.windowed = TRUE; |
| 410 | | stemp = options_get_string(machine->options(), WINOPTION_EFFECT); |
| 411 | | if (strcmp(stemp, "none") != 0) |
| 412 | | load_effect_overlay(machine, stemp); |
| 413 | 403 | |
| 414 | 404 | // per-window options: extract the data |
| 415 | 405 | get_resolution(WINOPTION_RESOLUTION0, &video_config.window[0], TRUE); |
| r9395 | r9396 | |
| 464 | 454 | |
| 465 | 455 | |
| 466 | 456 | //============================================================ |
| 467 | | // load_effect_overlay |
| 468 | | //============================================================ |
| 469 | | |
| 470 | | static void load_effect_overlay(running_machine *machine, const char *filename) |
| 471 | | { |
| 472 | | char *tempstr = global_alloc_array(char, strlen(filename) + 5); |
| 473 | | char *dest; |
| 474 | | |
| 475 | | // append a .PNG extension |
| 476 | | strcpy(tempstr, filename); |
| 477 | | dest = strrchr(tempstr, '.'); |
| 478 | | if (dest == NULL) |
| 479 | | dest = &tempstr[strlen(tempstr)]; |
| 480 | | strcpy(dest, ".png"); |
| 481 | | |
| 482 | | // load the file |
| 483 | | effect_bitmap = render_load_png(OPTION_ARTPATH, NULL, tempstr, NULL, NULL); |
| 484 | | if (effect_bitmap == NULL) |
| 485 | | { |
| 486 | | mame_printf_error("Unable to load PNG file '%s'\n", tempstr); |
| 487 | | global_free(tempstr); |
| 488 | | return; |
| 489 | | } |
| 490 | | |
| 491 | | // set the overlay on all screens |
| 492 | | for (screen_device *screen = screen_first(*machine); screen != NULL; screen = screen_next(screen)) |
| 493 | | screen->container().set_overlay(effect_bitmap); |
| 494 | | |
| 495 | | global_free(tempstr); |
| 496 | | } |
| 497 | | |
| 498 | | |
| 499 | | |
| 500 | | //============================================================ |
| 501 | 457 | // get_aspect |
| 502 | 458 | //============================================================ |
| 503 | 459 | |
src/osd/winui/properties.c
| r9395 | r9396 | |
| 1676 | 1676 | } |
| 1677 | 1677 | hCtrl = GetDlgItem(hWnd, IDC_EFFECT); |
| 1678 | 1678 | if (hCtrl) { |
| 1679 | | const char* effect = options_get_string(o, WINOPTION_EFFECT); |
| 1679 | const char* effect = options_get_string(o, OPTION_EFFECT); |
| 1680 | 1680 | if (effect == NULL) { |
| 1681 | 1681 | effect = "none"; |
| 1682 | | options_set_string(o, WINOPTION_EFFECT, effect, OPTION_PRIORITY_CMDLINE); |
| 1682 | options_set_string(o, OPTION_EFFECT, effect, OPTION_PRIORITY_CMDLINE); |
| 1683 | 1683 | } |
| 1684 | 1684 | win_set_window_text_utf8(hCtrl, effect); |
| 1685 | 1685 | } |
| r9395 | r9396 | |
| 2422 | 2422 | datamap_add(properties_datamap, IDC_KEEPASPECT, DM_BOOL, WINOPTION_KEEPASPECT); |
| 2423 | 2423 | datamap_add(properties_datamap, IDC_PRESCALE, DM_INT, WINOPTION_PRESCALE); |
| 2424 | 2424 | datamap_add(properties_datamap, IDC_PRESCALEDISP, DM_INT, WINOPTION_PRESCALE); |
| 2425 | | // datamap_add(properties_datamap, IDC_EFFECT, DM_STRING, WINOPTION_EFFECT); |
| 2425 | // datamap_add(properties_datamap, IDC_EFFECT, DM_STRING, OPTION_EFFECT); |
| 2426 | 2426 | datamap_add(properties_datamap, IDC_WAITVSYNC, DM_BOOL, WINOPTION_WAITVSYNC); |
| 2427 | 2427 | datamap_add(properties_datamap, IDC_SYNCREFRESH, DM_BOOL, WINOPTION_SYNCREFRESH); |
| 2428 | 2428 | |
| r9395 | r9396 | |
| 2965 | 2965 | } |
| 2966 | 2966 | buff[l] = '\0'; |
| 2967 | 2967 | |
| 2968 | | if (strcmp(buff, options_get_string(pCurrentOpts, WINOPTION_EFFECT))) |
| 2968 | if (strcmp(buff, options_get_string(pCurrentOpts, OPTION_EFFECT))) |
| 2969 | 2969 | { |
| 2970 | 2970 | HWND control = GetDlgItem(hWnd, IDC_EFFECT); |
| 2971 | | options_set_string(pCurrentOpts, WINOPTION_EFFECT, buff, OPTION_PRIORITY_CMDLINE); |
| 2971 | options_set_string(pCurrentOpts, OPTION_EFFECT, buff, OPTION_PRIORITY_CMDLINE); |
| 2972 | 2972 | win_set_window_text_utf8(control, buff); |
| 2973 | 2973 | // datamap_populate_control(properties_datamap, hWnd, pCurrentOpts, IDC_EFFECT); |
| 2974 | 2974 | changed = TRUE; |
| r9395 | r9396 | |
| 2982 | 2982 | BOOL changed = FALSE; |
| 2983 | 2983 | const char *new_value = "none"; |
| 2984 | 2984 | |
| 2985 | | if (strcmp(new_value, options_get_string(pCurrentOpts, WINOPTION_EFFECT))) |
| 2985 | if (strcmp(new_value, options_get_string(pCurrentOpts, OPTION_EFFECT))) |
| 2986 | 2986 | { |
| 2987 | 2987 | HWND control = GetDlgItem(hWnd, IDC_EFFECT); |
| 2988 | | options_set_string(pCurrentOpts, WINOPTION_EFFECT, new_value, OPTION_PRIORITY_CMDLINE); |
| 2988 | options_set_string(pCurrentOpts, OPTION_EFFECT, new_value, OPTION_PRIORITY_CMDLINE); |
| 2989 | 2989 | win_set_window_text_utf8(control, new_value); |
| 2990 | 2990 | // datamap_populate_control(properties_datamap, hWnd, pCurrentOpts, IDC_EFFECT); |
| 2991 | 2991 | changed = TRUE; |
src/emu/emuopts.c
| r9395 | r9396 | |
| 106 | 106 | { "contrast(0.1-2.0)", "1.0", 0, "default game screen contrast correction" }, |
| 107 | 107 | { "gamma(0.1-3.0)", "1.0", 0, "default game screen gamma correction" }, |
| 108 | 108 | { "pause_brightness(0.0-1.0)", "0.65", 0, "amount to scale the screen brightness when paused" }, |
| 109 | { "effect", "none", 0, "name of a PNG file to use for visual effects, or 'none'" }, |
| 109 | 110 | |
| 110 | 111 | /* vector options */ |
| 111 | 112 | { NULL, NULL, OPTION_HEADER, "CORE VECTOR OPTIONS" }, |
src/emu/video.c
| r9395 | r9396 | |
| 1903 | 1903 | m_texture_format(0), |
| 1904 | 1904 | m_changed(true), |
| 1905 | 1905 | m_last_partial_scan(0), |
| 1906 | m_screen_overlay_bitmap(NULL), |
| 1906 | 1907 | m_frame_period(m_config.m_refresh), |
| 1907 | 1908 | m_scantime(1), |
| 1908 | 1909 | m_pixeltime(1), |
| r9395 | r9396 | |
| 1931 | 1932 | m_machine.render().texture_free(m_texture[1]); |
| 1932 | 1933 | if (m_burnin != NULL) |
| 1933 | 1934 | finalize_burnin(); |
| 1935 | global_free(m_screen_overlay_bitmap); |
| 1934 | 1936 | } |
| 1935 | 1937 | |
| 1936 | 1938 | |
| r9395 | r9396 | |
| 1986 | 1988 | bitmap_fill(m_burnin, NULL, 0); |
| 1987 | 1989 | } |
| 1988 | 1990 | |
| 1991 | // load the effect overlay |
| 1992 | const char *overname = options_get_string(machine->options(), OPTION_EFFECT); |
| 1993 | if (overname != NULL && strcmp(overname, "none") != 0) |
| 1994 | load_effect_overlay(overname); |
| 1995 | |
| 1989 | 1996 | state_save_register_device_item(this, 0, m_width); |
| 1990 | 1997 | state_save_register_device_item(this, 0, m_height); |
| 1991 | 1998 | state_save_register_device_item(this, 0, m_visarea.min_x); |
| r9395 | r9396 | |
| 2090 | 2097 | if (m_width > curwidth || m_height > curheight) |
| 2091 | 2098 | { |
| 2092 | 2099 | // free what we have currently |
| 2093 | | global_free(m_texture[0]); |
| 2094 | | global_free(m_texture[1]); |
| 2095 | | if (m_bitmap[0] != NULL) |
| 2096 | | auto_free(machine, m_bitmap[0]); |
| 2097 | | if (m_bitmap[1] != NULL) |
| 2098 | | auto_free(machine, m_bitmap[1]); |
| 2100 | m_machine.render().texture_free(m_texture[0]); |
| 2101 | m_machine.render().texture_free(m_texture[1]); |
| 2102 | auto_free(machine, m_bitmap[0]); |
| 2103 | auto_free(machine, m_bitmap[1]); |
| 2099 | 2104 | |
| 2100 | 2105 | // compute new width/height |
| 2101 | 2106 | curwidth = MAX(m_width, curwidth); |
| r9395 | r9396 | |
| 2552 | 2557 | |
| 2553 | 2558 | |
| 2554 | 2559 | //------------------------------------------------- |
| 2555 | | // video_finalize_burnin - finalize the burnin |
| 2556 | | // bitmap |
| 2560 | // finalize_burnin - finalize the burnin bitmap |
| 2557 | 2561 | //------------------------------------------------- |
| 2558 | 2562 | |
| 2559 | 2563 | void screen_device::finalize_burnin() |
| r9395 | r9396 | |
| 2637 | 2641 | } |
| 2638 | 2642 | |
| 2639 | 2643 | |
| 2644 | //------------------------------------------------- |
| 2645 | // finalize_burnin - finalize the burnin bitmap |
| 2646 | //------------------------------------------------- |
| 2640 | 2647 | |
| 2648 | void screen_device::load_effect_overlay(const char *filename) |
| 2649 | { |
| 2650 | // ensure that there is a .png extension |
| 2651 | astring fullname(filename); |
| 2652 | int extension = fullname.rchr(0, '.'); |
| 2653 | if (extension != -1) |
| 2654 | fullname.del(extension, -1); |
| 2655 | fullname.cat(".png"); |
| 2656 | |
| 2657 | // load the file |
| 2658 | m_screen_overlay_bitmap = render_load_png(OPTION_ARTPATH, NULL, fullname, NULL, NULL); |
| 2659 | if (m_screen_overlay_bitmap != NULL) |
| 2660 | m_container->set_overlay(m_screen_overlay_bitmap); |
| 2661 | else |
| 2662 | mame_printf_warning("Unable to load effect PNG file '%s'\n", fullname.cstr()); |
| 2663 | } |
| 2664 | |
| 2665 | |
| 2666 | |
| 2641 | 2667 | //************************************************************************** |
| 2642 | 2668 | // SOFTWARE RENDERING |
| 2643 | 2669 | //************************************************************************** |
src/emu/devintrf.h
| r9395 | r9396 | |
| 545 | 545 | { |
| 546 | 546 | public: |
| 547 | 547 | optional_device(device_t &base, const char *tag) : auto_finder_type<_DeviceClass *, false>(base, tag) { } |
| 548 | | virtual void findit(device_t &base) { this->set_target(downcast<_DeviceClass *>(find_device(base, this->m_tag))); } |
| 548 | virtual void findit(device_t &base) { this->set_target(downcast<_DeviceClass *>(this->find_device(base, this->m_tag))); } |
| 549 | 549 | }; |
| 550 | 550 | |
| 551 | 551 | // required devices are similar but throw an error if they are not found |
| r9395 | r9396 | |
| 554 | 554 | { |
| 555 | 555 | public: |
| 556 | 556 | required_device(device_t &base, const char *tag) : auto_finder_type<_DeviceClass *, true>(base, tag) { } |
| 557 | | virtual void findit(device_t &base) { this->set_target(downcast<_DeviceClass *>(find_device(base, this->m_tag))); } |
| 557 | virtual void findit(device_t &base) { this->set_target(downcast<_DeviceClass *>(this->find_device(base, this->m_tag))); } |
| 558 | 558 | }; |
| 559 | 559 | |
| 560 | 560 | // optional shared pointer finder |
| r9395 | r9396 | |
| 563 | 563 | { |
| 564 | 564 | public: |
| 565 | 565 | optional_shared_ptr(device_t &base, const char *tag) : auto_finder_type<_PointerType *, false>(base, tag) { } |
| 566 | | virtual void findit(device_t &base) { this->set_target(reinterpret_cast<_PointerType *>(find_shared_ptr(base, this->m_tag))); } |
| 566 | virtual void findit(device_t &base) { this->set_target(reinterpret_cast<_PointerType *>(this->find_shared_ptr(base, this->m_tag))); } |
| 567 | 567 | }; |
| 568 | 568 | |
| 569 | 569 | // required shared pointer finder |
| r9395 | r9396 | |
| 572 | 572 | { |
| 573 | 573 | public: |
| 574 | 574 | required_shared_ptr(device_t &base, const char *tag) : auto_finder_type<_PointerType *, true>(base, tag) { } |
| 575 | | virtual void findit(device_t &base) { this->set_target(reinterpret_cast<_PointerType *>(find_shared_ptr(base, this->m_tag))); } |
| 575 | virtual void findit(device_t &base) { this->set_target(reinterpret_cast<_PointerType *>(this->find_shared_ptr(base, this->m_tag))); } |
| 576 | 576 | }; |
| 577 | 577 | |
| 578 | 578 | // optional shared pointer size finder |
src/emu/render.h
| r9395 | r9396 | |
| 548 | 548 | void set_layer_config(int layerconfig); |
| 549 | 549 | void set_view(int viewindex); |
| 550 | 550 | void set_max_texture_size(int maxwidth, int maxheight); |
| 551 | | void set_backdrops_enabled(bool enable) { if (enable) m_layerconfig |= LAYER_CONFIG_ENABLE_BACKDROP; else m_layerconfig &= ~LAYER_CONFIG_ENABLE_BACKDROP; } |
| 552 | | void set_overlays_enabled(bool enable) { if (enable) m_layerconfig |= LAYER_CONFIG_ENABLE_OVERLAY; else m_layerconfig &= ~LAYER_CONFIG_ENABLE_OVERLAY; } |
| 553 | | void set_bezels_enabled(bool enable) { if (enable) m_layerconfig |= LAYER_CONFIG_ENABLE_BEZEL; else m_layerconfig &= ~LAYER_CONFIG_ENABLE_BEZEL; } |
| 554 | | void set_screen_overlay_enabled(bool enable) { if (enable) m_layerconfig |= LAYER_CONFIG_ENABLE_SCREEN_OVERLAY; else m_layerconfig &= ~LAYER_CONFIG_ENABLE_SCREEN_OVERLAY; } |
| 555 | | void set_zoom_to_screen(bool zoom) { if (zoom) m_layerconfig |= LAYER_CONFIG_ZOOM_TO_SCREEN; else m_layerconfig &= ~LAYER_CONFIG_ZOOM_TO_SCREEN; } |
| 551 | void set_backdrops_enabled(bool enable) { set_layer_config(enable ? (m_layerconfig | LAYER_CONFIG_ENABLE_BACKDROP) : (m_layerconfig & ~LAYER_CONFIG_ENABLE_BACKDROP)); } |
| 552 | void set_overlays_enabled(bool enable) { set_layer_config(enable ? (m_layerconfig | LAYER_CONFIG_ENABLE_OVERLAY) : (m_layerconfig & ~LAYER_CONFIG_ENABLE_OVERLAY)); } |
| 553 | void set_bezels_enabled(bool enable) { set_layer_config(enable ? (m_layerconfig | LAYER_CONFIG_ENABLE_BEZEL) : (m_layerconfig & ~LAYER_CONFIG_ENABLE_BEZEL)); } |
| 554 | void set_screen_overlay_enabled(bool enable) { set_layer_config(enable ? (m_layerconfig | LAYER_CONFIG_ENABLE_SCREEN_OVERLAY) : (m_layerconfig & ~LAYER_CONFIG_ENABLE_SCREEN_OVERLAY)); } |
| 555 | void set_zoom_to_screen(bool zoom) { set_layer_config(zoom ? (m_layerconfig | LAYER_CONFIG_ZOOM_TO_SCREEN) : (m_layerconfig & ~LAYER_CONFIG_ZOOM_TO_SCREEN)); } |
| 556 | 556 | |
| 557 | 557 | // view information |
| 558 | 558 | const char *view_name(int viewindex); |
src/emu/machine/intelfsh.c
| r9395 | r9396 | |
| 206 | 206 | if ((m_size & (1 << addrbits)) != 0) |
| 207 | 207 | break; |
| 208 | 208 | |
| 209 | | m_space_config = address_space_config("flash", ENDIANNESS_BIG, m_bits, addrbits - 1, (m_bits == 8) ? 0 : -1, map); |
| 209 | m_space_config = address_space_config("flash", ENDIANNESS_BIG, m_bits, addrbits, (m_bits == 8) ? 0 : -1, map); |
| 210 | 210 | } |
| 211 | 211 | |
| 212 | 212 | intelfsh8_device_config::intelfsh8_device_config(const machine_config &mconfig, device_type type, const char *name, const char *tag, const device_config *owner, UINT32 clock, UINT32 variant) |
src/emu/machine/microtch.c
| r9395 | r9396 | |
| 221 | 221 | { |
| 222 | 222 | microtouch.format_decimal = 1; |
| 223 | 223 | } |
| 224 | else if ( microtouch_check_command("OI", microtouch.rx_buffer_ptr, microtouch.rx_buffer ) ) |
| 225 | { |
| 226 | // output identity - SMT3, ver 01.00 |
| 227 | microtouch.tx_buffer[microtouch.tx_buffer_num++] = 0x01; |
| 228 | microtouch.tx_buffer[microtouch.tx_buffer_num++] = 'Q'; |
| 229 | microtouch.tx_buffer[microtouch.tx_buffer_num++] = '1'; |
| 230 | microtouch.tx_buffer[microtouch.tx_buffer_num++] = '0'; |
| 231 | microtouch.tx_buffer[microtouch.tx_buffer_num++] = '1'; |
| 232 | microtouch.tx_buffer[microtouch.tx_buffer_num++] = '0'; |
| 233 | microtouch.tx_buffer[microtouch.tx_buffer_num++] = '0'; |
| 234 | microtouch.tx_buffer[microtouch.tx_buffer_num++] = 0x0d; |
| 235 | microtouch.rx_buffer_ptr = 0; |
| 236 | return; |
| 237 | } |
| 224 | 238 | // send response |
| 225 | 239 | microtouch.tx_buffer[microtouch.tx_buffer_num++] = 0x01; |
| 226 | 240 | microtouch.tx_buffer[microtouch.tx_buffer_num++] = 0x30; |