trunk/src/mess/drivers/socrates.c
| r19301 | r19302 | |
| 953 | 953 | MCFG_SOFTWARE_LIST_ADD("cart_list", "socrates") |
| 954 | 954 | MACHINE_CONFIG_END |
| 955 | 955 | |
| 956 | static MACHINE_CONFIG_START( socrates_pal, socrates_state ) |
| 957 | /* basic machine hardware */ |
| 958 | MCFG_CPU_ADD("maincpu", Z80, XTAL_26_601712MHz/6) /* Toshiba TMPZ84C00AP @ 4.433 MHz? /6 or 7 or 8? TODO: verify divider!*/ |
| 959 | MCFG_CPU_PROGRAM_MAP(z80_mem) |
| 960 | MCFG_CPU_IO_MAP(z80_io) |
| 961 | MCFG_QUANTUM_TIME(attotime::from_hz(50)) |
| 962 | MCFG_CPU_VBLANK_INT_DRIVER("screen", socrates_state, assert_irq) |
| 963 | //MCFG_MACHINE_START_OVERRIDE(socrates_state,socrates) |
| 956 | 964 | |
| 965 | /* video hardware */ |
| 966 | MCFG_SCREEN_ADD("screen", RASTER) |
| 967 | MCFG_SCREEN_REFRESH_RATE(50) |
| 968 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */ |
| 969 | MCFG_SCREEN_SIZE(264, 238) // technically the screen size is 256x228 but super painter abuses what I suspect is a hardware bug to display repeated pixels of the very last pixel beyond this horizontal space, well into hblank |
| 970 | MCFG_SCREEN_VISIBLE_AREA(0, 263, 0, 229) // the last few rows are usually cut off by the screen bottom but are indeed displayed if you mess with v-hold |
| 971 | MCFG_SCREEN_UPDATE_DRIVER(socrates_state, screen_update_socrates) |
| 957 | 972 | |
| 973 | MCFG_PALETTE_LENGTH(256) |
| 974 | |
| 975 | |
| 976 | /* sound hardware */ |
| 977 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 978 | MCFG_SOUND_ADD("soc_snd", SOCRATES, XTAL_26_601712MHz/(512+256)) // TODO: verify divider for pal mode |
| 979 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 980 | |
| 981 | MCFG_CARTSLOT_ADD("cart") |
| 982 | MCFG_CARTSLOT_EXTENSION_LIST("bin") |
| 983 | MCFG_CARTSLOT_NOT_MANDATORY |
| 984 | MCFG_CARTSLOT_INTERFACE("socrates_cart") |
| 985 | |
| 986 | /* Software lists */ |
| 987 | MCFG_SOFTWARE_LIST_ADD("cart_list", "socrates") |
| 988 | MACHINE_CONFIG_END |
| 989 | |
| 990 | /* This doesn't work for some reason. |
| 991 | static MACHINE_CONFIG_DERIVED( socrates_pal, socrates ) |
| 992 | MCFG_CPU_REPLACE("maincpu", Z80, XTAL_26_601712MHz/8) |
| 993 | MCFG_SCREEN_REPLACE("screen", RASTER) |
| 994 | MCFG_SCREEN_REFRESH_RATE(50) |
| 995 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) |
| 996 | MCFG_SCREEN_SIZE(264, 256) // technically the screen size is 256x228 but super painter abuses what I suspect is a hardware bug to display repeated pixels of the very last pixel beyond this horizontal space, well into hblank |
| 997 | MCFG_SCREEN_VISIBLE_AREA(0, 263, 0, 256) // the last few rows are usually cut off by the screen bottom but are indeed displayed if you mess with v-hold |
| 998 | MCFG_SCREEN_UPDATE_DRIVER(socrates_state, screen_update_socrates) |
| 999 | MCFG_SOUND_REPLACE("soc_snd", SOCRATES, XTAL_26_601712MHz/(512+256)) // this is correct, as strange as it sounds. |
| 1000 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 1001 | MACHINE_CONFIG_END |
| 1002 | */ |
| 958 | 1003 | /****************************************************************************** |
| 959 | 1004 | ROM Definitions |
| 960 | 1005 | ******************************************************************************/ |
| r19301 | r19302 | |
| 1000 | 1045 | ROM_REGION(0x10000, "vram", ROMREGION_ERASEFF) /* fill with ff, driver_init changes this to the 'correct' startup pattern */ |
| 1001 | 1046 | |
| 1002 | 1047 | ROM_REGION(0x800, "kbmcu", ROMREGION_ERASEFF) |
| 1003 | | ROM_LOAD("tmp42c40p1844.bin", 0x000, 0x200, NO_DUMP) /* keyboard IR decoder MCU */ |
| 1048 | ROM_LOAD("tmp42c40p1844.u2", 0x000, 0x200, NO_DUMP) /* keyboard IR decoder MCU */ |
| 1004 | 1049 | |
| 1005 | 1050 | /* english speech cart has a green QC sticker */ |
| 1006 | 1051 | ROM_REGION(0x2000, "speechint", ROMREGION_ERASE00) // speech data inside of the speech chip; fill with 00, if no speech cart is present socrates will see this |
| r19301 | r19302 | |
| 1022 | 1067 | ROM_REGION(0x10000, "vram", ROMREGION_ERASEFF) /* fill with ff, driver_init changes this to the 'correct' startup pattern */ |
| 1023 | 1068 | |
| 1024 | 1069 | ROM_REGION(0x800, "kbmcu", ROMREGION_ERASEFF) |
| 1025 | | ROM_LOAD("tmp42c40p1844.bin", 0x000, 0x200, NO_DUMP) /* keyboard IR decoder MCU */ |
| 1070 | ROM_LOAD("tmp42c40p1844.u2", 0x000, 0x200, NO_DUMP) /* keyboard IR decoder MCU */ |
| 1026 | 1071 | |
| 1027 | 1072 | ROM_REGION(0x2000, "speechint", ROMREGION_ERASE00) // speech data inside of the speech chip; fill with 00, if no speech cart is present socrates will see this |
| 1028 | 1073 | ROM_LOAD_OPTIONAL("speech_fra_internal.bin", 0x0000, 0x2000, BAD_DUMP CRC(edc1fb3f) SHA1(78b4631fc3b1c038e14911047f9edd6c4e8bae58)) // probably same on french and english speech carts |
| r19301 | r19302 | |
| 1034 | 1079 | ROM_FILL(0xC000, 0x4000, 0xff) // last vsm isn't present, FF fill |
| 1035 | 1080 | ROM_END |
| 1036 | 1081 | |
| 1082 | ROM_START(profweis) |
| 1083 | ROM_REGION(0x80000, "maincpu", ROMREGION_ERASEVAL(0xF3)) |
| 1084 | /* Yeno Professor Weiss-Alles (German PAL) */ |
| 1085 | ROM_LOAD("27-00885-001-000.u1", 0x00000, 0x40000, CRC(fcaf8850) SHA1(a99011ee6a1ef63461c00d062278951252f117db)) // Label: "(Vtech) 27-00884-001-000 // (C)1988 VIDEO TECHNOLOGY // 8911 D" |
| 1086 | ROM_CART_LOAD( "cart", 0x40000, 0x20000, 0 ) |
| 1037 | 1087 | |
| 1088 | ROM_REGION(0x10000, "vram", ROMREGION_ERASEFF) /* fill with ff, driver_init changes this to the 'correct' startup pattern */ |
| 1038 | 1089 | |
| 1090 | ROM_REGION(0x800, "kbmcu", ROMREGION_ERASEFF) |
| 1091 | ROM_LOAD("tmp42c40p1844.u2", 0x000, 0x200, NO_DUMP) /* keyboard IR decoder MCU */ |
| 1092 | |
| 1093 | ROM_REGION(0x2000, "speechint", ROMREGION_ERASE00) // speech data inside of the speech chip; fill with 00, if no speech cart is present socrates will see this |
| 1094 | ROM_LOAD_OPTIONAL("speech_ger_internal.bin", 0x0000, 0x2000, BAD_DUMP CRC(edc1fb3f) SHA1(78b4631fc3b1c038e14911047f9edd6c4e8bae58)) // probably same on french and english speech carts |
| 1095 | |
| 1096 | ROM_REGION(0x10000, "speechext", ROMREGION_ERASE00) // speech serial modules outside of the speech chip but still on speech cart |
| 1097 | ROM_LOAD_OPTIONAL("speech_ger_vsm1.bin", 0x0000, 0x4000, NO_DUMP) // 16k in serial rom |
| 1098 | ROM_LOAD_OPTIONAL("speech_ger_vsm2.bin", 0x4000, 0x4000, NO_DUMP) // 16k in serial rom |
| 1099 | ROM_LOAD_OPTIONAL("speech_ger_vsm3.bin", 0x8000, 0x4000, NO_DUMP) // 16k in serial rom |
| 1100 | ROM_FILL(0xC000, 0x4000, 0xff) // last vsm isn't present, FF fill |
| 1101 | ROM_END |
| 1102 | |
| 1103 | |
| 1104 | |
| 1039 | 1105 | /****************************************************************************** |
| 1040 | 1106 | Drivers |
| 1041 | 1107 | ******************************************************************************/ |
| r19301 | r19302 | |
| 1043 | 1109 | /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ |
| 1044 | 1110 | COMP( 1988, socrates, 0, 0, socrates, socrates, socrates_state, socrates, "Video Technology", "Socrates Educational Video System", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND ) // English NTSC |
| 1045 | 1111 | COMP( 1988, socratfc, socrates, 0, socrates, socrates, socrates_state, socrates, "Video Technology", "Socrates SAITOUT", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND ) // French Canandian NTSC |
| 1046 | | // Yeno Professor Weiss-Alles goes here (german PAL) |
| 1112 | COMP( 1988, profweis, socrates, 0, socrates_pal, socrates, socrates_state, socrates, "Video Technology/Yeno", "Professor Weiss-Alles", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND ) // German PAL |
| 1047 | 1113 | // Yeno Professeur Saitout goes here (french SECAM) |
| 1048 | 1114 | // ? goes here (spanish PAL) |