Mercurial > repos > blastem
comparison segacd.c @ 2329:06d5e9b08bdb
Add NTSC composite shader by Sik
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Wed, 23 Aug 2023 21:38:39 -0700 |
parents | 0343f0d5add0 |
children | c05b7c5e6f11 |
comparison
equal
deleted
inserted
replaced
2328:7f8d0fdc5bca | 2329:06d5e9b08bdb |
---|---|
1470 } | 1470 } |
1471 } | 1471 } |
1472 return main_gate_write16(address, vcontext, value16); | 1472 return main_gate_write16(address, vcontext, value16); |
1473 } | 1473 } |
1474 | 1474 |
1475 uint8_t laseractive_regs[256]; | |
1476 | |
1477 static uint16_t laseractive_read16(uint32_t address, void *vcontext) | |
1478 { | |
1479 printf("LaserActive 16-bit register read %X\n", address); | |
1480 return 0xFFFF; | |
1481 } | |
1482 | |
1483 static uint8_t laseractive_read8(uint32_t address, void *vcontext) | |
1484 { | |
1485 printf("LaserActive 8-bit register read %X\n", address); | |
1486 if (address == 0xFDFE81) { | |
1487 return 0x80 | (laseractive_regs[0x41] & 1); | |
1488 } else if (address >= 0xFDFE41 && address < 0xFDFE80 && (address & 1)) { | |
1489 return laseractive_regs[address & 0xFF]; | |
1490 } | |
1491 return 0xFF; | |
1492 } | |
1493 | |
1494 static void *laseractive_write16(uint32_t address, void *vcontext, uint16_t value) | |
1495 { | |
1496 printf("LaserActive 16-bit register write %X: %X\n", address, value); | |
1497 return vcontext; | |
1498 } | |
1499 | |
1500 static void *laseractive_write8(uint32_t address, void *vcontext, uint8_t value) | |
1501 { | |
1502 printf("LaserActive 8-bit register write %X: %X\n", address, value); | |
1503 laseractive_regs[address & 0xFF] = value; | |
1504 return vcontext; | |
1505 } | |
1506 | |
1475 segacd_context *alloc_configure_segacd(system_media *media, uint32_t opts, uint8_t force_region, rom_info *info) | 1507 segacd_context *alloc_configure_segacd(system_media *media, uint32_t opts, uint8_t force_region, rom_info *info) |
1476 { | 1508 { |
1477 static memmap_chunk sub_cpu_map[] = { | 1509 static memmap_chunk sub_cpu_map[] = { |
1478 {0x000000, 0x01FF00, 0xFFFFFF, .flags=MMAP_READ | MMAP_CODE, .write_16 = prog_ram_wp_write16, .write_8 = prog_ram_wp_write8}, | 1510 {0x000000, 0x01FF00, 0xFFFFFF, .flags=MMAP_READ | MMAP_CODE, .write_16 = prog_ram_wp_write16, .write_8 = prog_ram_wp_write8}, |
1479 {0x01FF00, 0x080000, 0xFFFFFF, .flags=MMAP_READ | MMAP_WRITE | MMAP_CODE}, | 1511 {0x01FF00, 0x080000, 0xFFFFFF, .flags=MMAP_READ | MMAP_WRITE | MMAP_CODE}, |
1481 .read_16 = word_ram_2M_read16, .write_16 = word_ram_2M_write16, .read_8 = word_ram_2M_read8, .write_8 = word_ram_2M_write8}, | 1513 .read_16 = word_ram_2M_read16, .write_16 = word_ram_2M_write16, .read_8 = word_ram_2M_read8, .write_8 = word_ram_2M_write8}, |
1482 {0x0C0000, 0x0E0000, 0x01FFFF, .flags=MMAP_READ | MMAP_WRITE | MMAP_CODE | MMAP_PTR_IDX | MMAP_FUNC_NULL, .ptr_index = 1, | 1514 {0x0C0000, 0x0E0000, 0x01FFFF, .flags=MMAP_READ | MMAP_WRITE | MMAP_CODE | MMAP_PTR_IDX | MMAP_FUNC_NULL, .ptr_index = 1, |
1483 .read_16 = word_ram_1M_read16, .write_16 = word_ram_1M_write16, .read_8 = word_ram_1M_read8, .write_8 = word_ram_1M_write8, .shift = 1}, | 1515 .read_16 = word_ram_1M_read16, .write_16 = word_ram_1M_write16, .read_8 = word_ram_1M_read8, .write_8 = word_ram_1M_write8, .shift = 1}, |
1484 {0xFE0000, 0xFF0000, 0x003FFF, .flags=MMAP_READ | MMAP_WRITE | MMAP_ONLY_ODD}, | 1516 {0xFE0000, 0xFF0000, 0x003FFF, .flags=MMAP_READ | MMAP_WRITE | MMAP_ONLY_ODD}, |
1485 {0xFF0000, 0xFF8000, 0x003FFF, .read_16 = pcm_read16, .write_16 = pcm_write16, .read_8 = pcm_read8, .write_8 = pcm_write8}, | 1517 {0xFF0000, 0xFF8000, 0x003FFF, .read_16 = pcm_read16, .write_16 = pcm_write16, .read_8 = pcm_read8, .write_8 = pcm_write8}, |
1486 {0xFF8000, 0xFF8200, 0x0001FF, .read_16 = sub_gate_read16, .write_16 = sub_gate_write16, .read_8 = sub_gate_read8, .write_8 = sub_gate_write8} | 1518 {0xFF8000, 0xFF8200, 0x0001FF, .read_16 = sub_gate_read16, .write_16 = sub_gate_write16, .read_8 = sub_gate_read8, .write_8 = sub_gate_write8}, |
1519 {0xFD0000, 0xFE0000, 0xFFFFFF, .read_16 = laseractive_read16, .write_16 = laseractive_write16, .read_8 = laseractive_read8, .write_8 = laseractive_write8} | |
1487 }; | 1520 }; |
1488 | 1521 |
1489 segacd_context *cd = calloc(sizeof(segacd_context), 1); | 1522 segacd_context *cd = calloc(sizeof(segacd_context), 1); |
1490 uint32_t firmware_size; | 1523 uint32_t firmware_size; |
1491 uint8_t region = force_region; | 1524 uint8_t region = force_region; |