trunk/src/mame/drivers/r9751.cpp
| r253158 | r253159 | |
| 67 | 67 | |
| 68 | 68 | DECLARE_READ32_MEMBER(r9751_mmio_5ff_r); |
| 69 | 69 | DECLARE_WRITE32_MEMBER(r9751_mmio_5ff_w); |
| 70 | DECLARE_READ32_MEMBER(r9751_mmio_ff01_r); |
| 71 | DECLARE_WRITE32_MEMBER(r9751_mmio_ff01_w); |
| 70 | 72 | DECLARE_READ32_MEMBER(r9751_mmio_ff05_r); |
| 71 | 73 | DECLARE_WRITE32_MEMBER(r9751_mmio_ff05_w); |
| 72 | 74 | DECLARE_READ32_MEMBER(r9751_mmio_fff8_r); |
| r253158 | r253159 | |
| 90 | 92 | UINT32 fdd_dest_address; // 5FF080B0 |
| 91 | 93 | UINT32 fdd_cmd_complete; |
| 92 | 94 | UINT32 smioc_out_addr; |
| 95 | UINT32 smioc_dma_bank; |
| 96 | UINT32 fdd_dma_bank; |
| 93 | 97 | attotime timer_32khz_last; |
| 94 | 98 | // End registers |
| 95 | 99 | |
| r253158 | r253159 | |
| 110 | 114 | |
| 111 | 115 | READ8_MEMBER(r9751_state::pdc_dma_r) |
| 112 | 116 | { |
| 113 | | return m_maincpu->space(AS_PROGRAM).read_byte(offset); |
| 117 | /* This callback function takes the value written to 0xFF01000C as the bank offset */ |
| 118 | UINT32 address = (fdd_dma_bank & 0x7FFFF800) + (offset&0xFFFF); |
| 119 | return m_maincpu->space(AS_PROGRAM).read_byte(address); |
| 114 | 120 | } |
| 115 | 121 | |
| 116 | 122 | WRITE8_MEMBER(r9751_state::pdc_dma_w) |
| 117 | 123 | { |
| 118 | | m_maincpu->space(AS_PROGRAM).write_byte(m_pdc->fdd_68k_dma_address,data); |
| 124 | /* This callback function takes the value written to 0xFF01000C as the bank offset */ |
| 125 | UINT32 address = (fdd_dma_bank & 0x7FFFF800) + (data&0xFFFF); |
| 126 | m_maincpu->space(AS_PROGRAM).write_byte(m_pdc->fdd_68k_dma_address,address); |
| 119 | 127 | } |
| 120 | 128 | |
| 121 | 129 | DRIVER_INIT_MEMBER(r9751_state,r9751) |
| r253158 | r253159 | |
| 123 | 131 | reg_ff050004 = 0; |
| 124 | 132 | reg_fff80040 = 0; |
| 125 | 133 | fdd_dest_address = 0; |
| 126 | | // fdd_scsi_command = 0; |
| 127 | 134 | fdd_cmd_complete = 0; |
| 135 | fdd_dma_bank = 0; |
| 128 | 136 | smioc_out_addr = 0; |
| 137 | smioc_dma_bank = 0; |
| 129 | 138 | m_mem = &m_maincpu->space(AS_PROGRAM); |
| 130 | 139 | |
| 131 | 140 | } |
| r253158 | r253159 | |
| 147 | 156 | READ32_MEMBER( r9751_state::r9751_mmio_5ff_r ) |
| 148 | 157 | { |
| 149 | 158 | UINT32 data; |
| 150 | | UINT32 address = offset * 4 + 0x5FF00000; |
| 151 | 159 | |
| 152 | | switch(address) |
| 160 | switch(offset << 2) |
| 153 | 161 | { |
| 154 | 162 | /* PDC HDD region (0x24, device 9) */ |
| 155 | | case 0x5FF00824: /* HDD Command result code */ |
| 163 | case 0x0824: /* HDD Command result code */ |
| 156 | 164 | return 0x10; |
| 157 | | case 0x5FF03024: /* HDD SCSI command completed successfully */ |
| 165 | case 0x3024: /* HDD SCSI command completed successfully */ |
| 158 | 166 | data = 0x1; |
| 159 | | if(TRACE_HDC) logerror("SCSI HDD command completion status - Read: %08X, From: %08X, Register: %08X\n", data, space.machine().firstcpu->pc(), address); |
| 167 | if(TRACE_HDC) logerror("SCSI HDD command completion status - Read: %08X, From: %08X, Register: %08X\n", data, space.machine().firstcpu->pc(), offset << 2 | 0x5FF00000); |
| 160 | 168 | return data; |
| 161 | 169 | /* SMIOC region (0x98, device 26) */ |
| 162 | | case 0x5FF00898: /* Serial status or DMA status */ |
| 170 | case 0x0898: /* Serial status or DMA status */ |
| 163 | 171 | return 0x40; |
| 164 | 172 | /* PDC FDD region (0xB0, device 44 */ |
| 165 | | case 0x5FF008B0: /* FDD Command result code */ |
| 173 | case 0x08B0: /* FDD Command result code */ |
| 166 | 174 | return 0x10; |
| 167 | | case 0x5FF010B0: /* Clear 5FF030B0 ?? */ |
| 175 | case 0x10B0: /* Clear 5FF030B0 ?? */ |
| 168 | 176 | if(TRACE_FDC) logerror("--- FDD 0x5FF010B0 READ (0)\n"); |
| 169 | 177 | return 0; |
| 170 | | case 0x5FF030B0: /* FDD command completion status */ |
| 178 | case 0x30B0: /* FDD command completion status */ |
| 171 | 179 | data = (m_pdc->reg_p5 << 8) + m_pdc->reg_p4; |
| 172 | | if(TRACE_FDC) logerror("--- SCSI FDD command completion status - Read: %08X, From: %08X, Register: %08X\n", data, space.machine().firstcpu->pc(), address); |
| 180 | if(TRACE_FDC) logerror("--- SCSI FDD command completion status - Read: %08X, From: %08X, Register: %08X\n", data, space.machine().firstcpu->pc(), offset << 2 | 0x5FF00000); |
| 173 | 181 | return data; |
| 174 | 182 | default: |
| 175 | | if(TRACE_FDC || TRACE_HDC || TRACE_SMIOC) logerror("Instruction: %08x READ MMIO(%08x): %08x & %08x\n", space.machine().firstcpu->pc(), address, 0, mem_mask); |
| 183 | if(TRACE_FDC || TRACE_HDC || TRACE_SMIOC) logerror("Instruction: %08x READ MMIO(%08x): %08x & %08x\n", space.machine().firstcpu->pc(), offset << 2 | 0x5FF00000, 0, mem_mask); |
| 176 | 184 | return 0; |
| 177 | 185 | } |
| 178 | 186 | } |
| r253158 | r253159 | |
| 180 | 188 | WRITE32_MEMBER( r9751_state::r9751_mmio_5ff_w ) |
| 181 | 189 | { |
| 182 | 190 | UINT8 data_b0, data_b1; |
| 183 | | UINT32 address = offset * 4 + 0x5FF00000; |
| 191 | /* Unknown mask */ |
| 192 | if (mem_mask != 0xFFFFFFFF) |
| 193 | logerror("Mask found: %08X Register: %08X PC: %08X\n", mem_mask, offset << 2 | 0x5FF00000, space.machine().firstcpu->pc()); |
| 184 | 194 | |
| 185 | | switch(address) |
| 195 | switch(offset << 2) |
| 186 | 196 | { |
| 187 | 197 | /* PDC HDD region (0x24, device 9 */ |
| 188 | | case 0x5FF00224: /* HDD SCSI read command */ |
| 189 | | if(TRACE_HDC) logerror("@@@ HDD Command: %08X, From: %08X, Register: %08X\n", data, space.machine().firstcpu->pc(), address); |
| 198 | case 0x0224: /* HDD SCSI read command */ |
| 199 | if(TRACE_HDC) logerror("@@@ HDD Command: %08X, From: %08X, Register: %08X\n", data, space.machine().firstcpu->pc(), offset << 2 | 0x5FF00000); |
| 190 | 200 | break; |
| 191 | | case 0x5FF08024: /* HDD SCSI read command */ |
| 192 | | if(TRACE_HDC) logerror("@@@ HDD Command: %08X, From: %08X, Register: %08X\n", data, space.machine().firstcpu->pc(), address); |
| 201 | case 0x8024: /* HDD SCSI read command */ |
| 202 | if(TRACE_HDC) logerror("@@@ HDD Command: %08X, From: %08X, Register: %08X\n", data, space.machine().firstcpu->pc(), offset << 2 | 0x5FF00000); |
| 193 | 203 | break; |
| 194 | | case 0x5FF0C024: /* HDD SCSI read command */ |
| 195 | | if(TRACE_HDC) logerror("@@@ HDD Command: %08X, From: %08X, Register: %08X\n", data, space.machine().firstcpu->pc(), address); |
| 204 | case 0xC024: /* HDD SCSI read command */ |
| 205 | if(TRACE_HDC) logerror("@@@ HDD Command: %08X, From: %08X, Register: %08X\n", data, space.machine().firstcpu->pc(), offset << 2 | 0x5FF00000); |
| 196 | 206 | break; |
| 197 | 207 | /* SMIOC region (0x98, device 26) */ |
| 198 | | case 0x5FF04098: /* Serial DMA Command */ |
| 208 | case 0x4098: /* Serial DMA Command */ |
| 199 | 209 | switch(data) |
| 200 | 210 | { |
| 201 | 211 | case 0x4100: /* Send byte to serial */ |
| 202 | | if(TRACE_SMIOC) logerror("Serial byte: %02X\n", m_mem->read_dword(smioc_out_addr)); |
| 212 | if(TRACE_SMIOC) logerror("Serial byte: %02X PC: %08X\n", m_mem->read_dword(smioc_out_addr), space.machine().firstcpu->pc()); |
| 203 | 213 | m_terminal->write(space,0,m_mem->read_dword(smioc_out_addr)); |
| 204 | 214 | break; |
| 205 | 215 | default: |
| 206 | 216 | if(TRACE_SMIOC) logerror("Uknown serial DMA command: %X\n", data); |
| 207 | 217 | } |
| 208 | 218 | break; |
| 209 | | case 0x5FF0C098: /* Serial DMA output address */ |
| 210 | | smioc_out_addr = data * 2; |
| 219 | case 0xC098: /* Serial DMA output address */ |
| 220 | //smioc_out_addr = data * 2; |
| 221 | smioc_out_addr = (smioc_dma_bank & 0x7FFFF800) | ((data&0x3FF)<<1); |
| 222 | if(TRACE_SMIOC) logerror("Serial output address: %08X PC: %08X\n", smioc_out_addr, space.machine().firstcpu->pc()); |
| 211 | 223 | break; |
| 212 | 224 | /* PDC FDD region (0xB0, device 44 */ |
| 213 | | case 0x5FF001B0: /* FDD SCSI read command */ |
| 214 | | if(TRACE_FDC) logerror("--- FDD Command: %08X, From: %08X, Register: %08X\n", data, space.machine().firstcpu->pc(), address); |
| 225 | case 0x01B0: /* FDD SCSI read command */ |
| 226 | if(TRACE_FDC) logerror("--- FDD Command: %08X, From: %08X, Register: %08X\n", data, space.machine().firstcpu->pc(), offset << 2 | 0x5FF00000); |
| 215 | 227 | break; |
| 216 | | case 0x5FF002B0: /* FDD SCSI read command */ |
| 217 | | if(TRACE_FDC) logerror("--- FDD Command: %08X, From: %08X, Register: %08X\n", data, space.machine().firstcpu->pc(), address); |
| 228 | case 0x02B0: /* FDD SCSI read command */ |
| 229 | if(TRACE_FDC) logerror("--- FDD Command: %08X, From: %08X, Register: %08X\n", data, space.machine().firstcpu->pc(), offset << 2 | 0x5FF00000); |
| 218 | 230 | break; |
| 219 | | case 0x5FF008B0: /* FDD SCSI read command */ |
| 220 | | if(TRACE_FDC) logerror("--- FDD Command: %08X, From: %08X, Register: %08X\n", data, space.machine().firstcpu->pc(), address); |
| 231 | case 0x04B0: /* FDD RESET PDC */ |
| 232 | if(TRACE_FDC) logerror("PDC RESET, PC: %08X\n", space.machine().firstcpu->pc()); |
| 233 | m_pdc->reset(); |
| 221 | 234 | break; |
| 222 | | case 0x5FF041B0: /* Unknown - Probably old style commands */ |
| 223 | | if(TRACE_FDC) logerror("--- FDD Command: %08X, From: %08X, Register: %08X\n", data, space.machine().firstcpu->pc(), address); |
| 235 | case 0x08B0: /* FDD SCSI read command */ |
| 236 | if(TRACE_FDC) logerror("--- FDD Command: %08X, From: %08X, Register: %08X\n", data, space.machine().firstcpu->pc(), offset << 2 | 0x5FF00000); |
| 237 | break; |
| 238 | case 0x41B0: /* Unknown - Probably old style commands */ |
| 239 | if(TRACE_FDC) logerror("--- FDD Command: %08X, From: %08X, Register: %08X\n", data, space.machine().firstcpu->pc(), offset << 2 | 0x5FF00000); |
| 224 | 240 | |
| 225 | | /* Clear FDD Command completion status 0x5FF030B0 (PDC 0x4, 0x5)*/ |
| 241 | /* Clear FDD Command completion status 0x5FF030B0 (PDC 0x4, 0x5) */ |
| 226 | 242 | m_pdc->reg_p4 = 0; |
| 227 | 243 | m_pdc->reg_p5 = 0; |
| 228 | 244 | |
| r253158 | r253159 | |
| 233 | 249 | m_pdc->reg_p38 |= 0x2; /* Set bit 1 on port 38 register, PDC polls this port looking for a command */ |
| 234 | 250 | if(TRACE_FDC) logerror("--- FDD Old Command: %02X and %02X\n", data_b0, data_b1); |
| 235 | 251 | break; |
| 236 | | case 0x5FF080B0: /* fdd_dest_address register */ |
| 252 | case 0x80B0: /* fdd_dest_address register */ |
| 237 | 253 | fdd_dest_address = data << 1; |
| 238 | 254 | if(TRACE_FDC) logerror("--- FDD destination address: %08X\n", fdd_dest_address); |
| 239 | 255 | data_b0 = data & 0xFF; |
| r253158 | r253159 | |
| 241 | 257 | m_pdc->reg_p6 = data_b0; |
| 242 | 258 | m_pdc->reg_p7 = data_b1; |
| 243 | 259 | break; |
| 244 | | case 0x5FF0C0B0: |
| 245 | | case 0x5FF0C1B0: /* FDD command address register */ |
| 260 | case 0xC0B0: |
| 261 | case 0xC1B0: /* FDD command address register */ |
| 246 | 262 | UINT32 fdd_scsi_command; |
| 247 | 263 | UINT32 fdd_scsi_command2; |
| 248 | 264 | unsigned char c_fdd_scsi_command[8]; // Array for SCSI command |
| 249 | 265 | int scsi_lba; // FDD LBA location here, extracted from command |
| 250 | 266 | |
| 251 | | /* Clear FDD Command completion status 0x5FF030B0 (PDC 0x4, 0x5)*/ |
| 267 | /* Clear FDD Command completion status 0x5FF030B0 (PDC 0x4, 0x5) */ |
| 252 | 268 | m_pdc->reg_p4 = 0; |
| 253 | 269 | m_pdc->reg_p5 = 0; |
| 254 | 270 | |
| r253158 | r253159 | |
| 281 | 297 | break; |
| 282 | 298 | |
| 283 | 299 | default: |
| 284 | | if(TRACE_FDC || TRACE_HDC || TRACE_SMIOC) logerror("Instruction: %08x WRITE MMIO(%08x): %08x & %08x\n", space.machine().firstcpu->pc(), address, data, mem_mask); |
| 300 | if(TRACE_FDC || TRACE_HDC || TRACE_SMIOC) logerror("Instruction: %08x WRITE MMIO(%08x): %08x & %08x\n", space.machine().firstcpu->pc(), offset << 2 | 0x5FF00000, data, mem_mask); |
| 285 | 301 | } |
| 286 | 302 | } |
| 287 | 303 | |
| 288 | 304 | /****************************************************************************** |
| 289 | | CPU board registers [0xFF050000 - 0xFF06FFFF] |
| 305 | CPU board registers [0xFF010000 - 0xFF06FFFF] |
| 290 | 306 | ******************************************************************************/ |
| 307 | READ32_MEMBER( r9751_state::r9751_mmio_ff01_r ) |
| 308 | { |
| 309 | //UINT32 data; |
| 310 | |
| 311 | switch(offset << 2) |
| 312 | { |
| 313 | default: |
| 314 | //return data; |
| 315 | return 0; |
| 316 | } |
| 317 | } |
| 318 | |
| 319 | WRITE32_MEMBER( r9751_state::r9751_mmio_ff01_w ) |
| 320 | { |
| 321 | /* Unknown mask */ |
| 322 | if (mem_mask != 0xFFFFFFFF) |
| 323 | logerror("Mask found: %08X Register: %08X PC: %08X\n", mem_mask, offset << 2 | 0xFF010000, space.machine().firstcpu->pc()); |
| 324 | |
| 325 | switch(offset << 2) |
| 326 | { |
| 327 | case 0x000C: /* FDD DMA Offset */ |
| 328 | fdd_dma_bank = data; |
| 329 | return; |
| 330 | case 0x0010: /* SMIOC DMA Offset */ |
| 331 | smioc_dma_bank = data; |
| 332 | return; |
| 333 | default: |
| 334 | return; |
| 335 | } |
| 336 | } |
| 337 | |
| 291 | 338 | READ32_MEMBER( r9751_state::r9751_mmio_ff05_r ) |
| 292 | 339 | { |
| 293 | 340 | UINT32 data; |
| 294 | | UINT32 address = offset * 4 + 0xFF050000; |
| 295 | 341 | |
| 296 | | switch(address) |
| 342 | switch(offset << 2) |
| 297 | 343 | { |
| 298 | | case 0xFF050004: |
| 344 | case 0x0004: |
| 299 | 345 | return reg_ff050004; |
| 300 | | case 0xFF050300: |
| 346 | case 0x0300: |
| 301 | 347 | return 0x1B | (1<<0x14); |
| 302 | | case 0xFF050320: /* Some type of counter */ |
| 348 | case 0x0320: /* Some type of counter */ |
| 303 | 349 | return (machine().time() - timer_32khz_last).as_ticks(32768) & 0xFFFF; |
| 304 | | case 0xFF050584: |
| 350 | case 0x0584: |
| 305 | 351 | return 0; |
| 306 | | case 0xFF050610: |
| 352 | case 0x0610: |
| 307 | 353 | return 0xabacabac; |
| 308 | | case 0xFF060014: |
| 354 | case 0x0014: |
| 309 | 355 | return 0x80; |
| 310 | 356 | default: |
| 311 | 357 | data = 0; |
| 312 | | if(TRACE_CPU_REG) logerror("Instruction: %08x READ MMIO(%08x): %08x & %08x\n", space.machine().firstcpu->pc(), address, data, mem_mask); |
| 358 | if(TRACE_CPU_REG) logerror("Instruction: %08x READ MMIO(%08x): %08x & %08x\n", space.machine().firstcpu->pc(), offset << 2 | 0xFF050000, data, mem_mask); |
| 313 | 359 | return data; |
| 314 | 360 | } |
| 315 | 361 | } |
| 316 | 362 | |
| 317 | 363 | WRITE32_MEMBER( r9751_state::r9751_mmio_ff05_w ) |
| 318 | 364 | { |
| 319 | | UINT32 address = offset * 4 + 0xFF050000; |
| 365 | /* Unknown mask */ |
| 366 | if (mem_mask != 0xFFFFFFFF) |
| 367 | logerror("Mask found: %08X Register: %08X PC: %08X\n", mem_mask, offset << 2 | 0xFF050000, space.machine().firstcpu->pc()); |
| 320 | 368 | |
| 321 | | switch(address) |
| 369 | switch(offset << 2) |
| 322 | 370 | { |
| 323 | | case 0xFF050004: |
| 371 | case 0x0004: |
| 324 | 372 | reg_ff050004 = data; |
| 325 | 373 | return; |
| 326 | | case 0xFF05000C: /* CPU LED hex display indicator */ |
| 374 | case 0x000C: /* CPU LED hex display indicator */ |
| 327 | 375 | if(TRACE_LED) logerror("\n*** LED: %02x, Instruction: %08x ***\n\n", data, space.machine().firstcpu->pc()); |
| 328 | 376 | return; |
| 329 | | case 0xFF050320: |
| 377 | case 0x0320: |
| 330 | 378 | timer_32khz_last = machine().time(); |
| 331 | 379 | default: |
| 332 | | if(TRACE_CPU_REG) logerror("Instruction: %08x WRITE MMIO(%08x): %08x & %08x\n", space.machine().firstcpu->pc(), address, data, mem_mask); |
| 380 | if(TRACE_CPU_REG) logerror("Instruction: %08x WRITE MMIO(%08x): %08x & %08x\n", space.machine().firstcpu->pc(), offset << 2 | 0xFF050000, data, mem_mask); |
| 333 | 381 | return; |
| 334 | 382 | } |
| 335 | 383 | } |
| 336 | 384 | |
| 337 | 385 | READ32_MEMBER( r9751_state::r9751_mmio_fff8_r ) |
| 338 | 386 | { |
| 339 | | UINT32 data; |
| 340 | | UINT32 address = offset * 4 + 0xFFF80000; |
| 387 | UINT32 data; |
| 341 | 388 | |
| 342 | | switch(address) |
| 389 | switch(offset << 2) |
| 343 | 390 | { |
| 344 | | case 0xFFF80040: |
| 391 | case 0x0040: |
| 345 | 392 | return reg_fff80040; |
| 346 | 393 | default: |
| 347 | 394 | data = 0; |
| 348 | | if(TRACE_CPU_REG) logerror("Instruction: %08x READ MMIO(%08x): %08x & %08x\n", space.machine().firstcpu->pc(), address, data, mem_mask); |
| 395 | if(TRACE_CPU_REG) logerror("Instruction: %08x READ MMIO(%08x): %08x & %08x\n", space.machine().firstcpu->pc(), offset << 2 | 0xFFF80000, data, mem_mask); |
| 349 | 396 | return data; |
| 350 | 397 | } |
| 351 | 398 | } |
| 352 | 399 | |
| 353 | 400 | WRITE32_MEMBER( r9751_state::r9751_mmio_fff8_w ) |
| 354 | 401 | { |
| 355 | | UINT32 address = offset * 4 + 0xFFF80000; |
| 402 | /* Unknown mask */ |
| 403 | if (mem_mask != 0xFFFFFFFF) |
| 404 | logerror("Mask found: %08X Register: %08X PC: %08X\n", mem_mask, offset << 2 | 0xFFF80000, space.machine().firstcpu->pc()); |
| 356 | 405 | |
| 357 | | switch(address) |
| 406 | switch(offset << 2) |
| 358 | 407 | { |
| 359 | | case 0xFFF80040: |
| 408 | case 0x0040: |
| 360 | 409 | reg_fff80040 = data; |
| 361 | 410 | return; |
| 362 | 411 | default: |
| 363 | | if(TRACE_CPU_REG) logerror("Instruction: %08x WRITE MMIO(%08x): %08x & %08x\n", space.machine().firstcpu->pc(), address, data, mem_mask); |
| 412 | if(TRACE_CPU_REG) logerror("Instruction: %08x WRITE MMIO(%08x): %08x & %08x\n", space.machine().firstcpu->pc(), offset << 2 | 0xFFF80000, data, mem_mask); |
| 364 | 413 | } |
| 365 | 414 | } |
| 366 | 415 | |
| r253158 | r253159 | |
| 373 | 422 | AM_RANGE(0x00000000,0x00ffffff) AM_RAM AM_SHARE("main_ram") // 16MB |
| 374 | 423 | AM_RANGE(0x08000000,0x0800ffff) AM_ROM AM_REGION("prom", 0) |
| 375 | 424 | AM_RANGE(0x5FF00000,0x5FFFFFFF) AM_READWRITE(r9751_mmio_5ff_r, r9751_mmio_5ff_w) |
| 425 | AM_RANGE(0xFF010000,0xFF01FFFF) AM_READWRITE(r9751_mmio_ff01_r, r9751_mmio_ff01_w) |
| 376 | 426 | AM_RANGE(0xFF050000,0xFF06FFFF) AM_READWRITE(r9751_mmio_ff05_r, r9751_mmio_ff05_w) |
| 377 | 427 | AM_RANGE(0xFFF80000,0xFFF8FFFF) AM_READWRITE(r9751_mmio_fff8_r, r9751_mmio_fff8_w) |
| 378 | 428 | //AM_RANGE(0xffffff00,0xffffffff) AM_RAM // Unknown area |
trunk/src/mame/drivers/stv.cpp
| r253158 | r253159 | |
| 2955 | 2955 | ROM_LOAD( "pclub298.nv", 0x0000, 0x0080, CRC(a23dd0f2) SHA1(457282b5d40a17477b95330bba91e05c603f951e) ) |
| 2956 | 2956 | ROM_END |
| 2957 | 2957 | |
| 2958 | |
| 2959 | ROM_START( pclub26w ) // set to 1p |
| 2960 | STV_BIOS |
| 2961 | |
| 2962 | ROM_REGION32_BE( 0x3000000, "cart", ROMREGION_ERASE00 ) /* SH2 code */ |
| 2963 | |
| 2964 | ROM_LOAD16_WORD_SWAP( "pclbvol6w_IC22", 0x0200000, 0x0200000, CRC(72aa320c) SHA1(09bc30e8cb00a5a4014c44e468cc64f6c3425d92) ) |
| 2965 | ROM_LOAD16_WORD_SWAP( "pclbvol6w_IC24", 0x0400000, 0x0200000, CRC(d98371e2) SHA1(813ac5f3c5b57d07cc319c73560bc0719ddcfe6b) ) |
| 2966 | ROM_LOAD16_WORD_SWAP( "pclbvol6w_IC26", 0x0600000, 0x0200000, CRC(e6bbe3a5) SHA1(b2f642b8ca0779ad66cfbbadece40f4e3dc41fd1) ) |
| 2967 | ROM_LOAD16_WORD_SWAP( "pclbvol6w_IC28", 0x0800000, 0x0200000, CRC(3c330c9b) SHA1(92f8e8d4f43db7c4ce431d17501492a7f8d8a867) ) |
| 2968 | ROM_LOAD16_WORD_SWAP( "pclbvol6w_IC30", 0x0a00000, 0x0200000, CRC(67646090) SHA1(ed6402a22acafa0203c587b871edc547f0ec5277) ) |
| 2969 | |
| 2970 | ROM_REGION16_BE( 0x80, "eeprom", 0 ) // preconfigured to 1 player |
| 2971 | ROM_LOAD( "pclub26w.nv", 0x0000, 0x0080, CRC(448f770d) SHA1(5f966c511c4c8e9d5b2d257c41c2c88a453b4944) ) |
| 2972 | ROM_END |
| 2973 | |
| 2958 | 2974 | ROM_START( pclub27s ) // set to 1p |
| 2959 | 2975 | STV_BIOS |
| 2960 | 2976 | |
| r253158 | r253159 | |
| 2970 | 2986 | ROM_LOAD( "pclub27s.nv", 0x0000, 0x0080, CRC(e58c7167) SHA1(d88b1648c5d86a90615a8c6a1bf87bc9e75dc320) ) |
| 2971 | 2987 | ROM_END |
| 2972 | 2988 | |
| 2989 | ROM_START( pclub2pe ) // set to 1p |
| 2990 | STV_BIOS |
| 2991 | |
| 2992 | ROM_REGION32_BE( 0x3000000, "cart", ROMREGION_ERASE00 ) /* SH2 code */ |
| 2993 | |
| 2994 | ROM_LOAD16_WORD_SWAP( "pclb2psi_IC22", 0x0200000, 0x0200000, CRC(caadc660) SHA1(f2e84bee96266bb03d8f9009249c17c27935f82e) ) |
| 2995 | ROM_LOAD16_WORD_SWAP( "pclb2psi_IC24", 0x0400000, 0x0200000, CRC(ece82698) SHA1(b17b1ea8adc13c3722067c9854d1b7fdf3917090) ) |
| 2996 | ROM_LOAD16_WORD_SWAP( "pclb2psi_IC26", 0x0600000, 0x0200000, CRC(c8a1e335) SHA1(a95ddfc41fdd9f720c11208f45ef5db4bee6cb97) ) |
| 2997 | ROM_LOAD16_WORD_SWAP( "pclb2psi_IC28", 0x0800000, 0x0200000, CRC(52f09627) SHA1(e2ffc321bb0f2a650d0c0b39c3ec68226e1ca7f4) ) |
| 2998 | ROM_LOAD16_WORD_SWAP( "pclb2psi_IC30", 0x0a00000, 0x0200000, CRC(03b9eacf) SHA1(d69c10f7613d9f52042dd6cce64e74e2b1ecc2d8) ) |
| 2999 | |
| 3000 | ROM_REGION16_BE( 0x80, "eeprom", 0 ) // preconfigured to 1 player |
| 3001 | ROM_LOAD( "pclub2pe.nv", 0x0000, 0x0080, CRC(447bb3bd) SHA1(9fefec09849bfa0c14b49e73ff13e2a538dff511)) |
| 3002 | ROM_END |
| 3003 | |
| 3004 | |
| 2973 | 3005 | ROM_START( pclubyo2 ) // set to 1p |
| 2974 | 3006 | STV_BIOS |
| 2975 | 3007 | |
| r253158 | r253159 | |
| 3123 | 3155 | ROM_LOAD( "pclove.nv", 0x0000, 0x0080, CRC(3c78e3bd) SHA1(6d5fe8545f434b4cc1e8229549adb0a49ac45bd1) ) |
| 3124 | 3156 | ROM_END |
| 3125 | 3157 | |
| 3158 | // Name Club / Name Club vol.2 |
| 3159 | // have an unusual rom mapping compared to other games, the cartridge is a little different too, with a large PALCE16V8H-10 marked 315-6026 |
| 3160 | // For Name Club vol. 2, the protection device (317-0229 on both) is checked in the 'each game test' menu as 'RCDD2' |
| 3161 | // For the service mode test the game just passes a large block of compressed data and checksums the result, it doesn't even look like it's |
| 3162 | // passing 100% valid data, just an entire section of ROM, checking the result against a pre-calculated checksum. |
| 3163 | |
| 3164 | // The device is accessed by the game when you choose to print, it looks like it's decompressing the full-size graphics for the printer rather |
| 3165 | // than anything you see onscreen. It makes quite extensive use of the device, with lots of different dictionaries, unlike Decathlete where |
| 3166 | // there are only 2 that cover all the data. |
| 3167 | |
| 3168 | ROM_START( nameclub ) |
| 3169 | STV_BIOS |
| 3170 | |
| 3171 | ROM_REGION32_BE( 0x3000000, "cart", ROMREGION_ERASEFF ) /* SH2 code */ |
| 3172 | ROM_LOAD16_WORD_SWAP( "ic22", 0x0200000, 0x0200000, CRC(ac23c648) SHA1(4dd099a92ff162082eb24a61a277ca907b3f9892) ) // OK |
| 3173 | ROM_LOAD16_WORD_SWAP( "ic24", 0x0600000, 0x0200000, CRC(a16902e3) SHA1(85c582cb0d02ef028a8ae32688c20a5b5aeeaae8) ) // OK |
| 3174 | ROM_LOAD16_WORD_SWAP( "ic26", 0x0a00000, 0x0200000, CRC(a5eab3f3) SHA1(1b7263639bb8f4aa644cc46133988ef4d2b6c9de) ) // OK |
| 3175 | ROM_LOAD16_WORD_SWAP( "ic28", 0x0e00000, 0x0200000, CRC(34ed677a) SHA1(ff2c4dd8fae33ac618f6e3e28ba71c4ecb4ca88f) ) // OK |
| 3176 | |
| 3177 | ROM_REGION16_BE( 0x80, "eeprom", 0 ) // preconfigured to 1 player |
| 3178 | ROM_LOAD( "nameclub.nv", 0x0000, 0x0080, CRC(680a64bc) SHA1(45194bbe4a7e67f0e44f858589881967884f63a6) ) |
| 3179 | ROM_END |
| 3180 | |
| 3126 | 3181 | ROM_START( nclubv2 ) |
| 3127 | 3182 | STV_BIOS |
| 3128 | 3183 | |
| 3129 | 3184 | ROM_REGION32_BE( 0x3000000, "cart", ROMREGION_ERASEFF ) /* SH2 code */ |
| 3130 | | // unusual rom mapping compared to other games, the cartridge is a little different too, with a large PALCE16V8H-10 marked 315-6026 |
| 3131 | 3185 | ROM_LOAD16_WORD_SWAP( "nclubv2.ic22", 0x0200000, 0x0200000, CRC(7e81676d) SHA1(fc0f0dcdb4aaf71218d7c1dd0e4ddc5381e8b13b) ) // OK |
| 3132 | 3186 | ROM_LOAD16_WORD_SWAP( "nclubv2.ic24", 0x0600000, 0x0200000, CRC(1b7637de) SHA1(43c3094f60a6582298a45bad923fef57e98c5b2b) ) // OK |
| 3133 | 3187 | ROM_LOAD16_WORD_SWAP( "nclubv2.ic26", 0x0a00000, 0x0200000, CRC(630be99d) SHA1(ac7fbaae98b126fad5228b0ebffa91a0f0a94516) ) // OK |
| 3134 | 3188 | ROM_LOAD16_WORD_SWAP( "nclubv2.ic28", 0x0e00000, 0x0200000, CRC(1a3ca5e2) SHA1(4d3aed51d29c54e71175d828f648c9feb813ac04) ) // OK |
| 3135 | 3189 | |
| 3136 | | |
| 3137 | | // the protection device is checked in the 'each game test' menu as 'RCDD2' might be worth investigating what the game passes to the device for it. |
| 3138 | | // I think the device is used to decompress the full size image data for the printer. |
| 3139 | | |
| 3140 | 3190 | ROM_REGION16_BE( 0x80, "eeprom", 0 ) // preconfigured to 1 player |
| 3141 | 3191 | ROM_LOAD( "nclubv2.nv", 0x0000, 0x0080, CRC(96d55fa9) SHA1(b3c821d6cd4ed52d0e20565e12a06d8f81a08dbc) ) |
| 3142 | 3192 | ROM_END |
| r253158 | r253159 | |
| 3200 | 3250 | /* Unemulated printer / camera devices */ |
| 3201 | 3251 | // USA sets |
| 3202 | 3252 | GAME( 1997, pclub2, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 (U 970921 V1.000)", MACHINE_NOT_WORKING ) |
| 3203 | | GAME( 1999, pclub2v3, pclub2, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Vol. 3 (U 990310 V1.000)", MACHINE_NOT_WORKING ) |
| 3253 | GAME( 1999, pclub2v3, pclub2, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Vol. 3 (U 990310 V1.000)", MACHINE_NOT_WORKING ) // Hello Kitty themed |
| 3204 | 3254 | GAME( 1999, pclubpok, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club Pokemon B (U 991126 V1.000)", MACHINE_NOT_WORKING ) |
| 3205 | 3255 | // Japan sets |
| 3206 | 3256 | GAME( 1999, pclub2fc, pclub2, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Felix The Cat (Rev. A) (J 970415 V1.100)", MACHINE_NOT_WORKING ) |
| 3207 | 3257 | GAME( 1998, pclub2pf, pclub2, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Puffy (Japan)", MACHINE_NOT_WORKING ) // version info is blank |
| 3208 | | GAME( 1997, pclb297w, pclub2, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 '97 Winter Ver (J 971017 V1.100)", MACHINE_NOT_WORKING ) |
| 3209 | | GAME( 1997, pclub298, pclub2, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 '98 Spring Ver (J 971017 V1.100)", MACHINE_NOT_WORKING ) |
| 3210 | | GAME( 1998, pclb298a, pclub2, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 '98 Autumn Ver (J 980827 V1.000)", MACHINE_NOT_WORKING ) |
| 3211 | 3258 | GAME( 1997, pclb2elk, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Earth Limited Kobe (Print Club Custom) (J 970808 V1.000)", MACHINE_NOT_WORKING ) |
| 3212 | | GAME( 1997, pclub27s, pclub2, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Vol. 7 Spring (J 970313 V1.100)", MACHINE_NOT_WORKING ) // aka Print Club 2 '97 Spring Ver ? |
| 3259 | GAME( 1997, pclub2pe, pclub2, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Pepsiman (J 970618 V1.100)", MACHINE_NOT_WORKING ) |
| 3213 | 3260 | |
| 3261 | GAME( 1997, pclub26w, pclub2, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Vol. 6 Winter (J 961210 V1.000)", MACHINE_NOT_WORKING ) // internal string is 'PURIKURA2 97FUYU' (but in reality it seems to be an end of 96 Winter version) |
| 3262 | GAME( 1997, pclub27s, pclub2, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Vol. 7 Spring (J 970313 V1.100)", MACHINE_NOT_WORKING ) |
| 3263 | // Summer 97? |
| 3264 | // Autumn 97? |
| 3265 | GAME( 1997, pclb297w, pclub2, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 '97 Winter Ver (J 971017 V1.100)", MACHINE_NOT_WORKING ) // internal string is '97WINTER' (3 roms bad / missing tho, need new dump) |
| 3266 | GAME( 1997, pclub298, pclub2, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 '98 Spring Ver (J 971017 V1.100)", MACHINE_NOT_WORKING ) // date is the same as previous version, surely incorrect / not updated when the game was |
| 3267 | // Summer 98? |
| 3268 | GAME( 1998, pclb298a, pclub2, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 '98 Autumn Ver (J 980827 V1.000)", MACHINE_NOT_WORKING ) |
| 3269 | |
| 3270 | |
| 3214 | 3271 | GAME( 1999, pclubor, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club Goukakenran (J 991104 V1.000)", MACHINE_NOT_WORKING ) |
| 3215 | 3272 | GAME( 1999, pclubol, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club Olive (J 980717 V1.000)", MACHINE_NOT_WORKING ) |
| 3216 | 3273 | GAME( 1997, pclub2kc, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club Kome Kome Club (J 970203 V1.000)", MACHINE_NOT_WORKING ) |
| r253158 | r253159 | |
| 3218 | 3275 | GAME( 1997, pclubyo2, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club Yoshimoto V2 (J 970422 V1.100)", MACHINE_NOT_WORKING ) |
| 3219 | 3276 | |
| 3220 | 3277 | GAME( 1998, stress, stvbios, stv, stv, stv_state, stv, ROT0, "Sega", "Stress Busters (J 981020 V1.000)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) |
| 3221 | | GAME( 1996, nclubv2, stvbios, stv_5838, stv, stv_state, decathlt, ROT0, "Sega", "Name Club Ver.2 (J 960315 V1.000)", MACHINE_NOT_WORKING ) // uses the same type of protection as decathlete!! |
| 3222 | | GAME( 1997, nclubv3, stvbios, stv, stv, stv_state, nameclv3, ROT0, "Sega", "Name Club Ver.3 (J 970723 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) |
| 3223 | 3278 | |
| 3279 | GAME( 1996, nameclub, stvbios, stv_5838, stv, stv_state, decathlt, ROT0, "Sega", "Name Club (J 960315 V1.000)", MACHINE_NOT_WORKING ) // uses the same type of protection as decathlete!! |
| 3280 | GAME( 1996, nclubv2, stvbios, stv_5838, stv, stv_state, decathlt, ROT0, "Sega", "Name Club Ver.2 (J 960315 V1.000)", MACHINE_NOT_WORKING ) // ^ (has the same datecode as nameclub, probably incorrect unless both were released today) |
| 3281 | GAME( 1997, nclubv3, stvbios, stv, stv, stv_state, nameclv3, ROT0, "Sega", "Name Club Ver.3 (J 970723 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) // no protection |
| 3224 | 3282 | |
| 3225 | 3283 | |
| 3284 | |
| 3226 | 3285 | /* Doing something.. but not enough yet */ |
| 3227 | 3286 | GAME( 1995, vfremix, stvbios, stv, stv, stv_state, vfremix, ROT0, "Sega", "Virtua Fighter Remix (JUETBKAL 950428 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) |
| 3228 | 3287 | GAME( 1996, decathlt, stvbios, stv_5838, stv, stv_state, decathlt, ROT0, "Sega", "Decathlete (JUET 960709 V1.001)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION ) |
trunk/src/mame/drivers/tispeak.cpp
| r253158 | r253159 | |
| 80 | 80 | - notes: this one has a dedicated voice actor |
| 81 | 81 | |
| 82 | 82 | Speak & Spell (France) "La Dictee Magique", 1980 |
| 83 | | - MCU: CD2702* |
| 83 | - MCU: CD2702, labeled CD2702AN2L (die labeled TMC0270F 2702A) |
| 84 | 84 | - TMS51xx: CD2801 |
| 85 | 85 | - VSM: 16KB CD2352 |
| 86 | 86 | |
| r253158 | r253159 | |
| 143 | 143 | Speak & Math: |
| 144 | 144 | |
| 145 | 145 | Speak & Math (US), 1980 (renamed to "Speak & Maths" in UK, but is the same product) |
| 146 | | - MCU: CD2704* |
| 146 | - MCU: CD2704, labeled CD2704B-N2L (die labeled TMC0270F 2704B) - 2nd revision?(mid-1982) |
| 147 | 147 | - TMS51xx: CD2801 |
| 148 | 148 | - VSM(1/2): 16KB CD2392 |
| 149 | 149 | - VSM(2/2): 16KB CD2393 |
| r253158 | r253159 | |
| 170 | 170 | Speak & Read: |
| 171 | 171 | |
| 172 | 172 | Speak & Read (US), 1980 |
| 173 | | - MCU: CD2705, labeled CD2705B-N2L (die labeled TMC0270E 2705B) - 2nd revision? |
| 173 | - MCU: CD2705, labeled CD2705B-N2L (die labeled TMC0270E 2705B) - 2nd revision?(late-1981) |
| 174 | 174 | - TMS51xx: CD2801 |
| 175 | 175 | - VSM(1/2): 16KB CD2394(rev.A) |
| 176 | 176 | - VSM(2/2): 16KB CD2395(rev.A) |
| r253158 | r253159 | |
| 1242 | 1242 | ROM_REGION( 2127, "maincpu:mpla", 0 ) |
| 1243 | 1243 | ROM_LOAD( "tms0270_common2_micro.pla", 0, 2127, CRC(86737ac1) SHA1(4aa0444f3ddf88738ea74aec404c684bf54eddba) ) |
| 1244 | 1244 | ROM_REGION( 1246, "maincpu:opla", 0 ) |
| 1245 | | ROM_LOAD( "tms0270_tmc0271_output.pla", 0, 1246, CRC(9ebe12ab) SHA1(acb4e07ba26f2daca5f1c234885ac0371c7ce87f) ) // using the one from 1978 version |
| 1245 | ROM_LOAD( "tms0270_tmc0271_output.pla", 0, 1246, CRC(9ebe12ab) SHA1(acb4e07ba26f2daca5f1c234885ac0371c7ce87f) ) // using the one from 1st version |
| 1246 | 1246 | |
| 1247 | 1247 | ROM_REGION( 0x10000, "tms6100", ROMREGION_ERASEFF ) // 8000-bfff = space reserved for cartridge |
| 1248 | | ROM_LOAD( "tmc0351nl.vsm", 0x0000, 0x4000, CRC(beea3373) SHA1(8b0f7586d2f12c3d4a885fdb528cf23feffa1a3b) ) // using the one from 1978 version |
| 1248 | ROM_LOAD( "tmc0351nl.vsm", 0x0000, 0x4000, CRC(beea3373) SHA1(8b0f7586d2f12c3d4a885fdb528cf23feffa1a3b) ) // using the one from 1st version |
| 1249 | 1249 | ROM_LOAD( "tmc0352nl.vsm", 0x4000, 0x4000, CRC(d51f0587) SHA1(ddaa484be1bba5fef46b481cafae517e4acaa8ed) ) // " |
| 1250 | 1250 | ROM_END |
| 1251 | 1251 | |
| r253158 | r253159 | |
| 1256 | 1256 | ROM_REGION( 1246, "maincpu:ipla", 0 ) |
| 1257 | 1257 | ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) ) |
| 1258 | 1258 | ROM_REGION( 2127, "maincpu:mpla", 0 ) |
| 1259 | | ROM_LOAD( "tms0270_common2_micro.pla", 0, 2127, BAD_DUMP CRC(86737ac1) SHA1(4aa0444f3ddf88738ea74aec404c684bf54eddba) ) // not verified |
| 1259 | ROM_LOAD( "tms0270_common2_micro.pla", 0, 2127, CRC(86737ac1) SHA1(4aa0444f3ddf88738ea74aec404c684bf54eddba) ) |
| 1260 | 1260 | ROM_REGION( 1246, "maincpu:opla", 0 ) |
| 1261 | 1261 | ROM_LOAD( "tms0270_tmc0271_output.pla", 0, 1246, CRC(9ebe12ab) SHA1(acb4e07ba26f2daca5f1c234885ac0371c7ce87f) ) |
| 1262 | 1262 | |
| r253158 | r253159 | |
| 1287 | 1287 | ROM_REGION( 1246, "maincpu:ipla", 0 ) |
| 1288 | 1288 | ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) ) |
| 1289 | 1289 | ROM_REGION( 2127, "maincpu:mpla", 0 ) |
| 1290 | | ROM_LOAD( "tms0270_common2_micro.pla", 0, 2127, BAD_DUMP CRC(86737ac1) SHA1(4aa0444f3ddf88738ea74aec404c684bf54eddba) ) // not verified |
| 1290 | ROM_LOAD( "tms0270_common2_micro.pla", 0, 2127, CRC(86737ac1) SHA1(4aa0444f3ddf88738ea74aec404c684bf54eddba) ) |
| 1291 | 1291 | ROM_REGION( 1246, "maincpu:opla", 0 ) |
| 1292 | 1292 | ROM_LOAD( "tms0270_tmc0271_output.pla", 0, 1246, CRC(9ebe12ab) SHA1(acb4e07ba26f2daca5f1c234885ac0371c7ce87f) ) |
| 1293 | 1293 | |
| r253158 | r253159 | |
| 1329 | 1329 | |
| 1330 | 1330 | ROM_START( snspellfr ) |
| 1331 | 1331 | ROM_REGION( 0x1000, "maincpu", 0 ) |
| 1332 | | ROM_LOAD( "tmc0271h-n2l", 0x0000, 0x1000, BAD_DUMP CRC(f83b5d2d) SHA1(10155b0b7f7f1583c7def8a693553cd35944ea6f) ) // placeholder, use the one we have |
| 1332 | ROM_LOAD( "cd2702an2l", 0x0000, 0x1000, CRC(895d6a4e) SHA1(a8bc118c83a84260033734191dcaa71a93dfa52b) ) |
| 1333 | 1333 | |
| 1334 | 1334 | ROM_REGION( 1246, "maincpu:ipla", 0 ) |
| 1335 | 1335 | ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) ) |
| 1336 | 1336 | ROM_REGION( 2127, "maincpu:mpla", 0 ) |
| 1337 | | ROM_LOAD( "tms0270_common2_micro.pla", 0, 2127, BAD_DUMP CRC(86737ac1) SHA1(4aa0444f3ddf88738ea74aec404c684bf54eddba) ) // not verified |
| 1337 | ROM_LOAD( "tms0270_common1_micro.pla", 0, 2127, CRC(504b96bb) SHA1(67b691e7c0b97239410587e50e5182bf46475b43) ) |
| 1338 | 1338 | ROM_REGION( 1246, "maincpu:opla", 0 ) |
| 1339 | | ROM_LOAD( "tms0270_tmc0271h_output.pla", 0, 1246, BAD_DUMP CRC(2478c595) SHA1(9a8ac690902731e1e01533279a1c9223011e1537) ) // placeholder, use the one we have |
| 1339 | ROM_LOAD( "tms0270_cd2702_output.pla", 0, 1246, CRC(2478c595) SHA1(9a8ac690902731e1e01533279a1c9223011e1537) ) |
| 1340 | 1340 | |
| 1341 | 1341 | ROM_REGION( 0x10000, "tms6100", ROMREGION_ERASEFF ) // uses only 1 rom, 8000-bfff = space reserved for cartridge |
| 1342 | 1342 | ROM_LOAD( "cd2352.vsm", 0x0000, 0x4000, CRC(181a239e) SHA1(e16043766c385e152b7005c1c010be4c5fccdd9b) ) |
| r253158 | r253159 | |
| 1344 | 1344 | |
| 1345 | 1345 | ROM_START( snspellit ) |
| 1346 | 1346 | ROM_REGION( 0x1000, "maincpu", 0 ) |
| 1347 | | ROM_LOAD( "tmc0271h-n2l", 0x0000, 0x1000, BAD_DUMP CRC(f83b5d2d) SHA1(10155b0b7f7f1583c7def8a693553cd35944ea6f) ) // placeholder, use the one we have |
| 1347 | ROM_LOAD( "cd2702an2l", 0x0000, 0x1000, CRC(895d6a4e) SHA1(a8bc118c83a84260033734191dcaa71a93dfa52b) ) |
| 1348 | 1348 | |
| 1349 | 1349 | ROM_REGION( 1246, "maincpu:ipla", 0 ) |
| 1350 | 1350 | ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) ) |
| 1351 | 1351 | ROM_REGION( 2127, "maincpu:mpla", 0 ) |
| 1352 | | ROM_LOAD( "tms0270_common2_micro.pla", 0, 2127, BAD_DUMP CRC(86737ac1) SHA1(4aa0444f3ddf88738ea74aec404c684bf54eddba) ) // not verified |
| 1352 | ROM_LOAD( "tms0270_common1_micro.pla", 0, 2127, CRC(504b96bb) SHA1(67b691e7c0b97239410587e50e5182bf46475b43) ) |
| 1353 | 1353 | ROM_REGION( 1246, "maincpu:opla", 0 ) |
| 1354 | | ROM_LOAD( "tms0270_tmc0271h_output.pla", 0, 1246, BAD_DUMP CRC(2478c595) SHA1(9a8ac690902731e1e01533279a1c9223011e1537) ) // placeholder, use the one we have |
| 1354 | ROM_LOAD( "tms0270_cd2702_output.pla", 0, 1246, CRC(2478c595) SHA1(9a8ac690902731e1e01533279a1c9223011e1537) ) |
| 1355 | 1355 | |
| 1356 | 1356 | ROM_REGION( 0x10000, "tms6100", ROMREGION_ERASEFF ) // uses only 1 rom, 8000-bfff = space reserved for cartridge |
| 1357 | 1357 | ROM_LOAD( "cd62190.vsm", 0x0000, 0x4000, CRC(63832002) SHA1(ea8124b2bf0f5908c5f1a56d60063f2468a10143) ) |
| r253158 | r253159 | |
| 1400 | 1400 | |
| 1401 | 1401 | ROM_START( snmath ) |
| 1402 | 1402 | ROM_REGION( 0x1000, "maincpu", 0 ) |
| 1403 | | ROM_LOAD( "cd2708n2l", 0x0000, 0x1000, CRC(35937360) SHA1(69c362c75bb459056c09c7fab37c91040485474b) ) |
| 1403 | ROM_LOAD( "cd2704b-n2l", 0x0000, 0x1000, CRC(7e06c7c5) SHA1(d60a35a8163ab593c31afc840a0d8a9b3a762f29) ) |
| 1404 | 1404 | |
| 1405 | 1405 | ROM_REGION( 1246, "maincpu:ipla", 0 ) |
| 1406 | 1406 | ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) ) |
| 1407 | 1407 | ROM_REGION( 2127, "maincpu:mpla", 0 ) |
| 1408 | 1408 | ROM_LOAD( "tms0270_common1_micro.pla", 0, 2127, CRC(504b96bb) SHA1(67b691e7c0b97239410587e50e5182bf46475b43) ) |
| 1409 | 1409 | ROM_REGION( 1246, "maincpu:opla", 0 ) |
| 1410 | ROM_LOAD( "tms0270_cd2704_output.pla", 0, 1246, CRC(5a2eb949) SHA1(8bb161d4884f229af65f8d155e59b9d8966fe3d1) ) |
| 1411 | |
| 1412 | ROM_REGION( 0x8000, "tms6100", ROMREGION_ERASEFF ) |
| 1413 | ROM_LOAD( "cd2392.vsm", 0x0000, 0x4000, CRC(4ed2e920) SHA1(8896f29e25126c1e4d9a47c9a325b35dddecc61f) ) |
| 1414 | ROM_LOAD( "cd2393.vsm", 0x4000, 0x4000, CRC(571d5b5a) SHA1(83284755d9b77267d320b5b87fdc39f352433715) ) |
| 1415 | ROM_END |
| 1416 | |
| 1417 | ROM_START( snmatha ) |
| 1418 | ROM_REGION( 0x1000, "maincpu", 0 ) |
| 1419 | ROM_LOAD( "cd2708-n2l", 0x0000, 0x1000, CRC(35937360) SHA1(69c362c75bb459056c09c7fab37c91040485474b) ) |
| 1420 | |
| 1421 | ROM_REGION( 1246, "maincpu:ipla", 0 ) |
| 1422 | ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) ) |
| 1423 | ROM_REGION( 2127, "maincpu:mpla", 0 ) |
| 1424 | ROM_LOAD( "tms0270_common1_micro.pla", 0, 2127, CRC(504b96bb) SHA1(67b691e7c0b97239410587e50e5182bf46475b43) ) |
| 1425 | ROM_REGION( 1246, "maincpu:opla", 0 ) |
| 1410 | 1426 | ROM_LOAD( "tms0270_cd2708_output.pla", 0, 1246, CRC(1abad753) SHA1(53d20b519ed73ce248368047a056836afbe3cd46) ) |
| 1411 | 1427 | |
| 1412 | 1428 | ROM_REGION( 0x8000, "tms6100", ROMREGION_ERASEFF ) |
| r253158 | r253159 | |
| 1426 | 1442 | ROM_REGION( 1246, "maincpu:ipla", 0 ) |
| 1427 | 1443 | ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) ) |
| 1428 | 1444 | ROM_REGION( 2127, "maincpu:mpla", 0 ) |
| 1429 | | ROM_LOAD( "tms0270_common1_micro.pla", 0, 2127, BAD_DUMP CRC(504b96bb) SHA1(67b691e7c0b97239410587e50e5182bf46475b43) ) // not verified |
| 1445 | ROM_LOAD( "tms0270_common1_micro.pla", 0, 2127, CRC(504b96bb) SHA1(67b691e7c0b97239410587e50e5182bf46475b43) ) |
| 1430 | 1446 | ROM_REGION( 1246, "maincpu:opla", 0 ) |
| 1431 | | ROM_LOAD( "tms0270_cd2708_output.pla", 0, 1246, BAD_DUMP CRC(1abad753) SHA1(53d20b519ed73ce248368047a056836afbe3cd46) ) // taken from cd2708, need to verify if it's same as cd2704 |
| 1447 | ROM_LOAD( "tms0270_cd2704_output.pla", 0, 1246, CRC(5a2eb949) SHA1(8bb161d4884f229af65f8d155e59b9d8966fe3d1) ) // using the one from 1st version |
| 1432 | 1448 | |
| 1433 | 1449 | ROM_REGION( 0x8000, "tms6100", ROMREGION_ERASEFF ) |
| 1434 | | ROM_LOAD( "cd2392.vsm", 0x0000, 0x4000, CRC(4ed2e920) SHA1(8896f29e25126c1e4d9a47c9a325b35dddecc61f) ) |
| 1435 | | ROM_LOAD( "cd2393.vsm", 0x4000, 0x4000, CRC(571d5b5a) SHA1(83284755d9b77267d320b5b87fdc39f352433715) ) |
| 1450 | ROM_LOAD( "cd2392.vsm", 0x0000, 0x4000, CRC(4ed2e920) SHA1(8896f29e25126c1e4d9a47c9a325b35dddecc61f) ) // using the one from 1st version |
| 1451 | ROM_LOAD( "cd2393.vsm", 0x4000, 0x4000, CRC(571d5b5a) SHA1(83284755d9b77267d320b5b87fdc39f352433715) ) // " |
| 1436 | 1452 | ROM_END |
| 1437 | 1453 | |
| 1438 | 1454 | |
| r253158 | r253159 | |
| 1537 | 1553 | |
| 1538 | 1554 | |
| 1539 | 1555 | /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */ |
| 1540 | | COMP( 1978, snspell, 0, 0, sns_tmc0281, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (US, 1979 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) |
| 1556 | COMP( 1979, snspell, 0, 0, sns_tmc0281, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (US, 1979 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) |
| 1541 | 1557 | COMP( 1978, snspellp, snspell, 0, sns_tmc0281, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (US, patent)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) |
| 1542 | 1558 | COMP( 1980, snspellub, snspell, 0, sns_tmc0281d, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (US, 1980 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) |
| 1543 | | COMP( 1979, snspellua, snspell, 0, sns_tmc0281, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (US, 1978 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // incomplete dump, using 1979 MCU ROM instead |
| 1544 | | COMP( 1978, snspelluk, snspell, 0, sns_tmc0281, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (UK, 1978 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // " |
| 1559 | COMP( 1978, snspellua, snspell, 0, sns_tmc0281, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (US, 1978 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) // incomplete dump, using 1979 MCU ROM instead |
| 1560 | COMP( 1978, snspelluk, snspell, 0, sns_tmc0281, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (UK, 1978 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) // " |
| 1545 | 1561 | COMP( 1981, snspelluka, snspell, 0, sns_cd2801, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (UK, 1981 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) |
| 1546 | 1562 | COMP( 1979, snspelljp, snspell, 0, sns_tmc0281, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) |
| 1547 | | COMP( 1980, snspellfr, snspell, 0, sns_cd2801, snspellfr, tispeak_state, snspell, "Texas Instruments", "La Dictee Magique (France)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // doesn't work due to missing CD2702 MCU dump, German/Italian version has CD2702 too |
| 1548 | | COMP( 1982, snspellit, snspell, 0, sns_cd2801_m, snspellit, tispeak_state, snspell, "Texas Instruments", "Grillo Parlante (Italy)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // " |
| 1563 | COMP( 1980, snspellfr, snspell, 0, sns_cd2801, snspellfr, tispeak_state, snspell, "Texas Instruments", "La Dictee Magique (France)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) |
| 1564 | COMP( 1982, snspellit, snspell, 0, sns_cd2801_m, snspellit, tispeak_state, snspell, "Texas Instruments", "Grillo Parlante (Italy)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) |
| 1549 | 1565 | |
| 1550 | 1566 | COMP( 1981, snspellc, 0, 0, snspellc, snspellc, tispeak_state, snspell, "Texas Instruments", "Speak & Spell Compact (US, 1981 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) |
| 1551 | 1567 | COMP( 1982, snspellca, snspellc, 0, snspellc, snspellc, tispeak_state, snspell, "Texas Instruments", "Speak & Spell Compact (US, 1982 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) |
| 1552 | 1568 | COMP( 1982, snspellcuk, snspellc, 0, snspellcuk, snspellcuk, tispeak_state, snspell, "Texas Instruments", "Speak & Write (UK)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) |
| 1553 | 1569 | |
| 1554 | | COMP( 1986, snmath, 0, 0, snmath, snmath, driver_device, 0, "Texas Instruments", "Speak & Math (US, 1986 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) |
| 1555 | | COMP( 1980, snmathp, snmath, 0, snmath, snmath, driver_device, 0, "Texas Instruments", "Speak & Math (US, 1980 version/patent)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) |
| 1570 | COMP( 1980, snmath, 0, 0, snmath, snmath, driver_device, 0, "Texas Instruments", "Speak & Math (US, 1980 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) |
| 1571 | COMP( 1986, snmatha, snmath, 0, snmath, snmath, driver_device, 0, "Texas Instruments", "Speak & Math (US, 1986 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) |
| 1572 | COMP( 1980, snmathp, snmath, 0, snmath, snmath, driver_device, 0, "Texas Instruments", "Speak & Math (US, patent)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_IS_INCOMPLETE ) |
| 1556 | 1573 | |
| 1557 | 1574 | COMP( 1980, snread, 0, 0, snread, snread, tispeak_state, snspell, "Texas Instruments", "Speak & Read (US)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) |
| 1558 | 1575 | |
| 1559 | 1576 | COMP( 1979, lantutor, 0, 0, lantutor, lantutor, tispeak_state, lantutor, "Texas Instruments", "Language Tutor (patent)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) |
| 1560 | 1577 | |
| 1561 | | COMP( 1981, tntell, 0, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Touch & Tell (US, 1981 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_CLICKABLE_ARTWORK | MACHINE_REQUIRES_ARTWORK ) // assume there is an older version too, with CD8010 MCU |
| 1562 | | COMP( 1980, tntellp, tntell, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Touch & Tell (patent)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_CLICKABLE_ARTWORK | MACHINE_REQUIRES_ARTWORK | MACHINE_NOT_WORKING ) |
| 1578 | COMP( 1981, tntell, 0, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Touch & Tell (US)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_CLICKABLE_ARTWORK | MACHINE_REQUIRES_ARTWORK ) |
| 1579 | COMP( 1980, tntellp, tntell, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Touch & Tell (US, patent)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_CLICKABLE_ARTWORK | MACHINE_REQUIRES_ARTWORK | MACHINE_NOT_WORKING ) |
| 1563 | 1580 | COMP( 1981, tntelluk, tntell, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Touch & Tell (UK)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_CLICKABLE_ARTWORK | MACHINE_REQUIRES_ARTWORK ) |
| 1564 | 1581 | COMP( 1981, tntellfr, tntell, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Le Livre Magique (France)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_CLICKABLE_ARTWORK | MACHINE_REQUIRES_ARTWORK ) |
| 1565 | 1582 | |