2 Skelton for retropc emulator
4 Author : K.Ohta <whatisthis.sowhat _at_ gmail.com>
22 #include "qt_gldraw.h"
26 OSD::OSD(std::shared_ptr<USING_FLAGS> p, std::shared_ptr<CSP_Logger> logger) : OSD_BASE(p, logger)
28 //p_config = using_flags->get_config_ptr();
38 void OSD::set_features_machine(void)
40 // GIJUTSU-HYORON-SHA Babbase-2nd
42 add_feature(_T("_BABBAGE2ND"), 1);
45 // HITACHI BASIC Master Jr
47 add_feature(_T("_BMJR"), 1);
50 // COLECO ColecoVision
52 add_feature(_T("_COLECOVISION"), 1);
57 add_feature(_T("_EX80"), 1);
60 // Nintendo Family BASIC
62 add_feature(_T("_FAMILYBASIC"), 1);
67 add_feature(_T("_FM8"), 1);
72 add_feature(_T("_FM7"), 1);
77 add_feature(_T("_FM7"), 1);
78 add_feature(_T("_FMNEW7"), 1);
81 // FUJITSU FM-77 SERIES
83 add_feature(_T("_FM77"), 1);
87 add_feature(_T("_FM77L2"), 1);
91 add_feature(_T("_FM77L4"), 1);
95 add_feature(_T("_FM77_VARIANTS"), 1);
98 // FUJITSU FM77AV SERIES
100 add_feature(_T("_FM77AV"), 1);
104 add_feature(_T("_FM77AV20"), 1);
108 add_feature(_T("_FM77AV20EX"), 1);
112 add_feature(_T("_FM77AV40"), 1);
116 add_feature(_T("_FM77AV40SX"), 1);
120 add_feature(_T("_FM77AV40EX"), 1);
123 #ifdef _FM77AV_VARIANTS
124 add_feature(_T("_FM77AV_VARIANTS"), 1);
129 add_feature(_T("_FM16PI"), 1);
135 add_feature(_T("_FMR30"), 1);
140 add_feature(_T("_FMR50"), 1);
145 add_feature(_T("_FMR60"), 1);
150 add_feature(_T("_FP200"), 1);
155 add_feature(_T("_FP1100"), 1);
160 add_feature(_T("_FSA1"), 1);
165 add_feature(_T("_GAMEGEAR"), 1);
170 add_feature(_T("_HC20"), 1);
175 add_feature(_T("_HC40"), 1);
180 add_feature(_T("_HC80"), 1);
183 // TOSHIBA HX-20 + FDD
185 add_feature(_T("_HX20"), 1);
190 add_feature(_T("_J3100GT"), 1);
195 add_feature(_T("_J3100SL"), 1);
200 add_feature(_T("_JR100"), 1);
205 add_feature(_T("_JR200"), 1);
210 add_feature(_T("_JR800"), 1);
213 // IBM Japan Ltd PC/JX
215 add_feature(_T("_JX"), 1);
220 add_feature(_T("_M5"), 1);
225 add_feature(_T("_MAP1010"), 1);
228 // SEGA MASTER SYSTEM
230 add_feature(_T("_MASTERSYSTEM"), 1);
236 add_feature(_T("_MSX1"), 1);
241 add_feature(_T("_MSX2"), 1);
246 add_feature(_T("_MSX2P"), 1);
249 #ifdef _MSX1_VARIANTS
250 add_feature(_T("_MSX1_VARIANTS"), 1);
252 #ifdef _MSX2_VARIANTS
253 add_feature(_T("_MSX2_VARIANTS"), 1);
255 #ifdef _MSX2P_VARIANTS
256 add_feature(_T("_MSX2P_VARIANTS"), 1);
259 // MITSUBISHI Elec. MULTI8
261 add_feature(_T("_MULTI8"), 1);
264 // Japan Electronics College MYCOMZ-80A
266 add_feature(_T("_MYCOMZ80A"), 1);
271 add_feature(_T("_MZ80A"), 1);
276 add_feature(_T("_MZ80B"), 1);
281 add_feature(_T("_MZ80K"), 1);
286 add_feature(_T("_MZ700"), 1);
291 add_feature(_T("_MZ800"), 1);
296 add_feature(_T("_MZ1200"), 1);
301 add_feature(_T("_MZ1500"), 1);
306 add_feature(_T("_MZ2000"), 1);
311 add_feature(_T("_MZ2200"), 1);
316 add_feature(_T("_MZ2500"), 1);
321 add_feature(_T("_MZ2800"), 1);
326 add_feature(_T("_MZ3500"), 1);
331 add_feature(_T("_MZ5500"), 1);
336 add_feature(_T("_MZ6500"), 1);
341 add_feature(_T("_MZ6550"), 1);
346 add_feature(_T("_N5200"), 1);
351 add_feature(_T("_PASOPIA"), 1);
356 add_feature(_T("_PASOPIA7"), 1);
361 add_feature(_T("_PC2001"), 1);
366 add_feature(_T("_PC6001"), 1);
371 add_feature(_T("_PC6001MK2"), 1);
376 add_feature(_T("_PC6001MK2SR"), 1);
381 add_feature(_T("_PC6601"), 1);
386 add_feature(_T("_PC6601SR"), 1);
391 add_feature(_T("_PC8001SR"), 1);
396 add_feature(_T("_PC8201"), 1);
401 add_feature(_T("_PC8201A"), 1);
406 add_feature(_T("_PC8801MA"), 1);
411 add_feature(_T("_PC9801"), 1);
416 add_feature(_T("_PC9801E"), 1);
421 add_feature(_T("_PC9801U"), 1);
426 add_feature(_T("_PC9801VF"), 1);
431 add_feature(_T("_PC9801VM"), 1);
436 add_feature(_T("_PC98DO"), 1);
441 add_feature(_T("_PC98HA"), 1);
446 add_feature(_T("_PC98LT"), 1);
451 add_feature(_T("_PC100"), 1);
456 add_feature(_T("_PCENGINE"), 1);
461 add_feature(_T("_PHC20"), 1);
466 add_feature(_T("_PHC25"), 1);
471 add_feature(_T("_PV1000"), 1);
476 add_feature(_T("_PV2000"), 1);
481 add_feature(_T("_PX7"), 1);
486 add_feature(_T("_PYUTA"), 1);
491 add_feature(_T("_QC10"), 1);
496 add_feature(_T("_RX78"), 1);
501 add_feature(_T("_SC3000"), 1);
504 // EPOCH Super Cassette Vision
506 add_feature(_T("_SCV"), 1);
511 add_feature(_T("_SMB80TE"), 1);
516 add_feature(_T("_SMC70"), 1);
521 add_feature(_T("_SMC777"), 1);
525 // NEC TK-80BS (COMPO BS/80)
527 add_feature(_T("_TK80BS"), 1);
532 add_feature(_T("_TK80"), 1);
537 add_feature(_T("_TK85"), 1);
542 add_feature(_T("_X07"), 1);
547 add_feature(_T("_X1"), 1);
552 add_feature(_T("_X1TWIN"), 1);
557 add_feature(_T("_X1TURBO"), 1);
562 add_feature(_T("_X1TURBOZ"), 1);
565 // Yuasa Kyouiku System YALKY
567 add_feature(_T("_YALKY"), 1);
572 add_feature(_T("_YIS"), 1);
575 // SHINKO SANGYO YS-6464A
577 add_feature(_T("_YS6464A"), 1);
580 // Homebrew Z80 TV GAME SYSTEM
582 add_feature(_T("_Z80TVGAME"), 1);
586 void OSD::set_features_cpu(void)
589 add_feature(_T("HAS_I86"), 1);
592 add_feature(_T("HAS_I88"), 1);
595 add_feature(_T("HAS_I186"), 1);
598 add_feature(_T("HAS_I286"), 1);
601 add_feature(_T("HAS_I386"), 1);
604 add_feature(_T("HAS_I386DX"), 1);
607 add_feature(_T("HAS_I386SX"), 1);
610 add_feature(_T("HAS_I486"), 1);
613 add_feature(_T("HAS_I486SX"), 1);
616 add_feature(_T("HAS_I486DX"), 1);
619 add_feature(_T("HAS_PENTIUM"), 1);
621 #ifdef HAS_PENTIUM_PRO
622 add_feature(_T("HAS_PENTIUM_PRO"), 1);
624 #ifdef HAS_PENTIUM_MMX
625 add_feature(_T("HAS_PENTIUM_MMX"), 1);
628 add_feature(_T("HAS_PENTIUM2"), 1);
631 add_feature(_T("HAS_PENTIUM3"), 1);
634 add_feature(_T("HAS_PENTIUM4"), 1);
638 add_feature(_T("HAS_V30"), 1);
641 add_feature(_T("HAS_I8085"), 1);
644 add_feature(_T("HAS_N2A03"), 1);
647 add_feature(_T("HAS_MC6800"), 1);
650 add_feature(_T("HAS_MC6801"), 1);
653 add_feature(_T("HAS_HD6301"), 1);
656 add_feature(_T("HAS_NSC800"), 1);
659 add_feature(_T("I80186"), 1);
662 add_feature(_T("I80286"), 1);
665 add_feature(_T("RS6000"), 1);
668 #ifdef I86_PSEUDO_BIOS
669 add_feature(_T("I86_PSEUDO_BIOS"), 1);
671 #ifdef I286_PSEUDO_BIOS
672 add_feature(_T("I286_PSEUDO_BIOS"), 1);
674 #ifdef I386_PSEUDO_BIOS
675 add_feature(_T("I386_PSEUDO_BIOS"), 1);
677 #ifdef Z80_PSEUDO_BIOS
678 add_feature(_T("Z80_PSEUDO_BIOS"), 1);
683 void OSD::set_features_vm(void)
687 add_feature(_T("MAX_CART"), (int)USE_CART);
688 add_feature(_T("USE_CART"), (int)USE_CART);
691 add_feature(_T("BASE_CART_NUM"), (int)BASE_CART_NUM);
694 #if defined(USE_FLOPPY_DISK)
695 add_feature(_T("MAX_FD"), (int)USE_FLOPPY_DISK);
696 add_feature(_T("USE_FLOPPY_DISK"), (int)USE_FLOPPY_DISK);
698 #ifdef BASE_FLOPPY_DISK_NUM
699 add_feature(_T("BASE_FLOPPY_DISK_NUM"), (int)BASE_FLOPPY_DISK_NUM);
702 #ifdef USE_QUICK_DISK
703 add_feature(_T("USE_QUICK_DISK"), (int)USE_QUICK_DISK);
704 add_feature(_T("MAX_QD"), (int)USE_QUICK_DISK);
706 #ifdef BASE_QUICK_DISK_NUM
707 add_feature(_T("BASE_QUICK_DISK_NUM"), (int)BASE_QUICK_DISK_NUM);
711 add_feature(_T("USE_HARD_DISK"), (int)USE_HARD_DISK);
712 add_feature(_T("MAX_HDD"), (int)USE_HARD_DISK);
714 #ifdef BASE_HARD_DISK_NUM
715 add_feature(_T("BASE_HARD_DISK_NUM"), (int)BASE_HARD_DISK_NUM);
718 #ifdef USE_COMPACT_DISC
719 add_feature(_T("USE_COMPACT_DISC"), (int)USE_COMPACT_DISC);
720 add_feature(_T("MAX_CD"), (int)USE_COMPACT_DISC);
722 #ifdef BASE_COMPACT_DISC_NUM
723 add_feature(_T("BASE_COMPACT_DISC_NUM"), (int)BASE_COMPACT_DISC_NUM);
726 #ifdef USE_LASER_DISC
727 add_feature(_T("USE_LASER_DISC"), (int)USE_LASER_DISC);
728 add_feature(_T("MAX_LD"), (int)USE_LASER_DISC);
730 #ifdef BASE_LASER_DISC_NUM
731 add_feature(_T("BASE_LASER_DISC_NUM"), (int)BASE_LASER_DISC_NUM);
735 add_feature(_T("USE_TAPE"), (int)USE_TAPE);
736 add_feature(_T("MAX_TAPE"), (int)USE_TAPE);
739 add_feature(_T("BASE_TAPE_NUM"), (int)BASE_TAPE_NUM);
742 #ifdef USE_BINARY_FILE
743 add_feature(_T("USE_BINARY_FILE"), (int)USE_BINARY_FILE);
744 add_feature(_T("MAX_BINARY"), (int)USE_BINARY_FILE);
746 #ifdef BASE_BINARY_FILE_NUM
747 add_feature(_T("BASE_BINARY_FILE_NUM"), (int)BASE_BINARY_FILE_NUM);
751 add_feature(_T("USE_BUBBLE"), (int)USE_BUBBLE);
752 add_feature(_T("MAX_BUBBLE"), (int)USE_BUBBLE);
754 #ifdef BASE_BUBBLE_NUM
755 add_feature(_T("BASE_BUBBLE_NUM"), (int)BASE_BUBBLE_NUM);
758 #ifdef KEY_KEEP_FRAMES
759 add_feature(_T("KEY_KEEP_FRAMES"), (int)KEY_KEEP_FRAMES);
764 add_feature(_T("CPU_CLOCKS"), (int64_t)CPU_CLOCKS);
767 add_feature(_T("APU_CLOCK"), (int64_t)APU_CLOCK);
772 add_feature(_T("MAX_DRIVE"), (int)MAX_DRIVE);
775 #ifdef HD46505_CHAR_CLOCK
776 add_feature(_T("HD46505_CHAR_CLOCK"), (float)HD46505_CHAR_CLOCK);
778 #ifdef HD46505_HORIZ_FREQ
779 add_feature(_T("HD46505_HORIZ_FREQ"), (float)HD46505_HORIZ_FREQ);
781 #ifdef _315_5124_LIMIT_SPRITES
782 add_feature(_T("_315_5124_LIMIT_SPRITES"), 1);
785 add_feature(_T("HAS_AY_3_8910"));
788 add_feature(_T("HAS_AY_3_8912"));
791 add_feature(_T("HAS_AY_3_8913"));
793 #ifdef SUPPORT_AY_3_891X_PORT
794 add_feature(_T("SUPPORT_AY_3_891X_PORT"), 1);
796 #ifdef AY_3_891X_PORT_MODE
797 add_feature(_T("AY_3_891X_PORT_MODE"), (uint32_t)AY_3_891X_PORT_MODE);
799 #ifdef SUPPORT_AY_3_891X_PORT_A
800 add_feature(_T("SUPPORT_AY_3_891X_PORT_A"), 1);
802 #ifdef SUPPORT_AY_3_891X_PORT_B
803 add_feature(_T("SUPPORT_AY_3_891X_PORT_B"), 1);
805 #ifdef DATAREC_FAST_FWD_SPEED
806 add_feature(_T("DATAREC_FAST_FWD_SPEED"), (double)DATAREC_FAST_FWD_SPEED);
808 #ifdef DATAREC_FAST_REW_SPEED
809 add_feature(_T("DATAREC_FAST_REW_SPEED"), (double)DATAREC_FAST_REW_SPEED);
811 #ifdef DATAREC_PCM_VOLUME
812 add_feature(_T("DATAREC_PCM_VOLUME"), (int)DATAREC_PCM_VOLUME);
816 add_feature(_T("HAS_I8254"), 1);
818 #ifdef I8255_AUTO_HAND_SHAKE
819 add_feature(_T("I8255_AUTO_HAND_SHAKE"), 1);
822 add_feature(_T("HAS_MB8866"), 1);
825 add_feature(_T("HAS_MB8876"), 1);
828 add_feature(_T("HAS_MB89311"), 1);
830 #ifdef MB8877_NO_BUSY_AFTER_SEEK
831 add_feature(_T("MB8877_NO_BUSY_AFTER_SEEK"), 1);
833 #ifdef MB8877_DELAY_AFTER_SEEK
834 add_feature(_T("MB8877_DELAY_AFTER_SEEK"), (int)MB8877_DELAY_AFTER_SEEK);
837 #ifdef I8259_MAX_CHIPS
838 add_feature(_T("I8259_MAX_CHIPS"), (uint32_t)I8259_MAX_CHIPS);
840 #ifdef I8259_PC98_HACK
841 add_feature(_T("I8259_PC98_HACK"), 1);
844 #ifdef I8080_MEMORY_WAIT
845 add_feature(_T("I8080_MEMORY_WAIT"), 1);
848 add_feature(_T("I8080_IO_WAIT"), 1);
851 #ifdef MC6847_VRAM_OFS
852 add_feature(_T("MC6847_VRAM_OFS"), (uint32_t)MC6847_VRAM_OFS);
854 #ifdef MC6847_VRAM_AS
855 add_feature(_T("MC6847_VRAM_AS"), (uint32_t)MC6847_VRAM_AS);
857 #ifdef MC6847_VRAM_CSS
858 add_feature(_T("MC6847_VRAM_CSS"), (uint32_t)MC6847_VRAM_CSS);
860 #ifdef MC6847_VRAM_INV
861 add_feature(_T("MC6847_VRAM_INV"), (uint32_t)MC6847_VRAM_INV);
863 #ifdef MC6847_VRAM_INTEXT
864 add_feature(_T("MC6847_VRAM_INTEXT"), (uint32_t)MC6847_VRAM_INTEXT);
867 #ifdef MC6847_ATTR_OFS
868 add_feature(_T("MC6847_ATTR_OFS"), (uint32_t)MC6847_ATTR_OFS);
870 #ifdef MC6847_ATTR_AS
871 add_feature(_T("MC6847_ATTR_AS"), (uint32_t)MC6847_ATTR_AS);
873 #ifdef MC6847_ATTR_CSS
874 add_feature(_T("MC6847_ATTR_CSS"), (uint32_t)MC6847_ATTR_CSS);
876 #ifdef MC6847_ATTR_INV
877 add_feature(_T("MC6847_ATTR_INV"), (uint32_t)MC6847_ATTR_INV);
879 #ifdef MC6847_ATTR_INTEXT
880 add_feature(_T("MC6847_ATTR_INTEXT"), (uint32_t)MC6847_ATTR_INTEXT);
883 #ifdef MSM58321_START_DAY
884 add_feature(_T("MSM58321_START_DAY"), (int)MSM58321_START_DAY);
886 #ifdef MSM58321_START_YEAR
887 add_feature(_T("MSM58321_START_YEAR"), (int)MSM58321_START_YEAR);
890 add_feature(_T("HAS_MSM5832"), 1);
892 #ifdef PRINTER_STROBE_RISING_EDGE
893 add_feature(_T("PRINTER_STROBE_RISING_EDGE"), 1);
895 #ifdef MZ1P17_SW1_4_ON
896 add_feature(_T("MZ1P17_SW1_4_ON"), 1);
899 add_feature(_T("DOT_PRINT"), 1);
902 #ifdef PC80S31K_NO_WAIT
903 add_feature(_T("PC80S31K_NO_WAIT"), 1);
907 add_feature(_T("HAS_RP5C15"), 1);
910 #ifdef SCSI_DEV_IMMEDIATE_SELECT
911 add_feature(_T("SCSI_DEV_IMMEDIATE_SELECT"), 1);
913 #ifdef SCSI_HOST_WIDE
914 add_feature(_T("SCSI_HOST_WIDE"), 1);
916 #ifdef SCSI_HOST_AUTO_ACK
917 add_feature(_T("SCSI_HOST_AUTO_ACK"), 1);
921 add_feature(_T("HAS_SN76489"), 1);
924 add_feature(_T("HAS_T3444M"), 1);
927 #ifdef TMS9918A_VRAM_SIZE
928 add_feature(_T("TMS9918A_VRAM_SIZE"), (uint32_t)TMS9918A_VRAM_SIZE);
930 #ifdef TMS9918A_SUPER_IMPOSE
931 add_feature(_T("TMS9918A_SUPER_IMPOSE"), 1);
933 #ifdef TMS9918A_LIMIT_SPRITES
934 add_feature(_T("TMS9918A_LIMIT_SPRITES"), 1);
938 add_feature(_T("TIMER_HACK"));
941 add_feature(_T("KEYBOARD_HACK"));
945 add_feature(_T("HAS_UPD7907"), 1);
948 add_feature(_T("HAS_UPD4990A"), 1);
950 #ifdef UPD7220_HORIZ_FREQ
951 add_feature(_T("UPD7220_HORIZ_FREQ"), (int)UPD7220_HORIZ_FREQ);
953 #ifdef UPD7220_UGLY_PC98_HACK
954 add_feature(_T("UPD7220_UGLY_PC98_HACK"), 1);
956 #ifdef UPD7220_FIXED_PITCH
957 add_feature(_T("UPD7220_FIXED_PITCH"), 1);
959 #ifdef UPD7220_MSB_FIRST
960 add_feature(_T("UPD7220_MSB_FIRST"), 1);
962 #ifdef UPD7220_A_VERSION
963 add_feature(_T("UPD7220_A_VERSION"), (int)UPD7220_A_VERSION);
965 #ifdef UPD765A_DMA_MODE
966 add_feature(_T("UPD765A_DMA_MODE"), 1);
968 #ifdef UPD765A_EXT_DRVSEL
969 add_feature(_T("UPD765A_EXT_DRVSEL"), 1);
971 #ifdef UPD765A_SENCE_INTSTAT_RESULT
972 add_feature(_T("UPD765A_SENCE_INTSTAT_RESULT"), 1);
974 #ifdef UPD765A_DONT_WAIT_SEEK
975 add_feature(_T("UPD765A_DONT_WAIT_SEEK"), 1);
977 #ifdef UPD765A_NO_ST0_AT_FOR_SEEK
978 add_feature(_T("UPD765A_NO_ST0_AT_FOR_SEEK"), 1);
980 #ifdef UPD765A_WAIT_RESULT7
981 add_feature(_T("UPD765A_WAIT_RESULT7"), 1);
983 #ifdef UPD765A_NO_ST1_EN_OR_FOR_RESULT7
984 add_feature(_T("UPD765A_NO_ST1_EN_OR_FOR_RESULT7"), 1);
987 #ifdef UPD7801_MEMORY_WAIT
988 add_feature(_T("UPD7801_MEMORY_WAIT") , 1);
991 add_feature(_T("HAS_UPD7810"), 1);
994 add_feature(_T("HAS_UPD7807"), 1);
997 add_feature(_T("HAS_UPD7801"), 1);
1000 add_feature(_T("HAS_UPD78C05"), 1);
1003 add_feature(_T("HAS_UPD78C06"), 1);
1006 add_feature(_T("HAS_UPD7907"), 1);
1010 add_feature(_T("HAS_YM2608"), 1);
1012 #ifdef HAS_YM_SERIES
1013 add_feature(_T("HAS_YM_SERIES"), 1);
1015 #ifdef SUPPORT_YM2203_PORT
1016 add_feature(_T("SUPPORT_YM2203_PORT"), 1);
1018 #ifdef SUPPORT_YM2203_PORT_A
1019 add_feature(_T("SUPPORT_YM2203_PORT_A"), 1);
1021 #ifdef SUPPORT_YM2203_PORT_B
1022 add_feature(_T("SUPPORT_YM2203_PORT_B"), 1);
1025 #ifdef Z80_MEMORY_WAIT
1026 add_feature(_T("Z80_MEMORY_WAIT"), 1);
1029 add_feature(_T("Z80_IO_WAIT"), 1);
1031 #ifdef HAS_LDAIR_QUIRK
1032 add_feature(_T("HAS_LDAIR_QUIRK"), 1);
1034 #ifdef Z80CTC_CLOCKS
1035 add_feature(_T("Z80CTC_CLOCKS"), (double)Z80CTC_CLOCKS);
1038 add_feature(_T("HAS_UPD7201"), 1);
1041 #ifdef _X1TURBO_FEATURE
1042 add_feature(_T("_X1TURBO_FEATURE"), 1);
1044 #ifdef MEMORY_DISABLE_DMA_MMIO
1045 add_feature(_T("MEMORY_DISABLE_DMA_MMIO"), 1);
1049 void OSD::set_features_debug(void)
1053 add_feature(_T("USE_DEBUGGER"), 1);
1056 add_feature(_T("_DEBUG_LOG"), 1);
1058 #ifdef _FDC_DEBUG_LOG
1059 add_feature(_T("_FDC_DEBUG_LOG"), 1);
1061 #ifdef _IO_DEBUG_LOG
1062 add_feature(_T("_IO_DEBUG_LOG"), 1);
1064 #ifdef DEBUG_MISSING_OPCODE
1065 add_feature(_T("DEBUG_MISSING_OPCODE"), 1);
1067 #ifdef _SCSI_DEBUG_LOG
1068 add_feature(_T("_SCSI_DEBUG_LOG"), 1);
1070 #ifdef _CDROM_DEBUG_LOG
1071 add_feature(_T("_CDROM_DEBUG_LOG"), 1);
1073 #ifdef _DEBUG_PC80S31K
1074 add_feature(_T("_DEBUG_PC80S31K"), 1);
1076 #ifdef DMA_DEBUG_LOG
1077 add_feature(_T("DMA_DEBUG_LOG"), 1);
1080 add_feature(_T("SIO_DEBUG"), 1);
1084 void OSD::set_features_misc(void)
1087 add_feature(_T("LSB_FIRST"), 1);
1089 #ifdef SINGLE_MODE_DMA
1090 add_feature(_T("SINGLE_MODE_DMA"), 1);
1092 #ifdef MEMORY_ADDR_MAX
1093 add_feature(_T("MEMORY_ADDR_MAX"), (uint64_t)MEMORY_ADDR_MAX);
1095 #ifdef MEMORY_BANK_SIZE
1096 add_feature(_T("MEMORY_BANK_SIZE"), (uint64_t)MEMORY_BANK_SIZE);
1098 #ifdef IOBUS_RETURN_ADDR
1099 add_feature(_T("IOBUS_RETURN_ADDR"), 1);
1102 add_feature(_T("IO_ADDR_MAX"), (uint32_t)IO_ADDR_MAX);
1104 #ifdef CPU_START_ADDR
1105 add_feature(_T("CPU_START_ADDR"), (uint32_t)CPU_START_ADDR);
1108 #ifdef LOW_PASS_FILTER
1109 add_feature(_T("LOW_PASS_FILTER"), 1);
1112 #ifdef SUPPORT_MAME_FM_DLL
1113 add_feature(_T("SUPPORT_MAME_FM_DLL"), 1);
1115 #ifdef SUPPORT_WIN32_DLL
1116 add_feature(_T("SUPPORT_WIN32_DLL"), 1);
1120 add_feature(_T("SCREEN_WIDTH"), (int)SCREEN_WIDTH);
1122 #ifdef SCREEN_HEIGHT
1123 add_feature(_T("SCREEN_HEIGHT"), (int)SCREEN_HEIGHT);
1125 #ifdef CHARS_PER_LINE
1126 add_feature(_T("CHARS_PER_LINE"), (int)CHARS_PER_LINE);
1128 #ifdef LINES_PER_FRAME
1129 add_feature(_T("LINES_PER_FRAME"), (int)LINES_PER_FRAME);
1131 #ifdef USE_ALPHA_BLENDING_TO_IMPOSE
1132 add_feature(_T("USE_ALPHA_BLENDING_TO_IMPOSE"), 1);
1134 #ifdef SUPPORT_MEDIA_TYPE_1DD
1135 add_feature(_T("SUPPORT_MEDIA_TYPE_1DD"), 1);
1137 #ifdef DATAREC_SOUND
1138 add_feature(_T("DATAREC_SOUND"), 1);
1140 #ifdef DATAREC_SOUND_LEFT
1141 add_feature(_T("DATAREC_SOUND_LEFT"), 1);
1143 #ifdef DATAREC_SOUND_RIGHT
1144 add_feature(_T("DATAREC_SOUND_RIGHT"), 1);
1146 #ifdef SUPPORT_QUERY_PHY_KEY_NAME
1147 add_feature(_T("SUPPORT_QUERY_PHY_KEY_NAME"), 1);
1151 void OSD::set_features(void)
1153 set_features_machine();
1156 set_features_misc();
1157 set_features_debug();
1159 __USE_AUTO_KEY = false;
1161 __USE_AUTO_KEY = true;
1165 extern std::string cpp_homedir;
1166 extern std::string my_procname;
1168 void OSD::initialize(int rate, int samples, int* presented_rate, int* presented_samples)
1172 tmp_path = QString::fromStdString(cpp_homedir);
1173 #if defined(Q_OS_WIN)
1174 const char *delim = "\\";
1176 const char *delim = "/";
1178 //tmp_path = tmp_path + QString::fromUtf8(delim);
1179 tmp_path = tmp_path + QString::fromUtf8("CommonSourceCodeProject");
1180 tmp_path = tmp_path + QString::fromUtf8(delim);
1181 tmp_path = tmp_path + QString::fromStdString(my_procname);
1182 tmp_path = tmp_path + QString::fromUtf8(delim);
1183 memset(app_path, 0x00, sizeof(app_path));
1184 strncpy(app_path, tmp_path.toUtf8().constData(), _MAX_PATH - 1);
1186 console_cmd_str.clear();
1190 initialize_console();
1192 initialize_printer();
1193 initialize_screen();
1196 initialize_sound(rate, samples, presented_rate, presented_samples);
1197 if(get_use_movie_player() || get_use_video_capture()) initialize_video();
1198 if(get_use_socket()) initialize_socket();
1210 if(get_use_movie_player() || get_use_video_capture()) release_video();
1211 if(get_use_socket()) release_socket();