src/mess/machine/nes_pcb.c
| r8311 | r8312 | |
| 3300 | 3300 | |
| 3301 | 3301 | *************************************************************/ |
| 3302 | 3302 | |
| 3303 | | #if 0 |
| 3304 | 3303 | static void vrc4_set_prg( running_machine *machine ) |
| 3305 | 3304 | { |
| 3306 | 3305 | nes_state *state = (nes_state *)machine->driver_data; |
| r8311 | r8312 | |
| 3327 | 3326 | cpu_set_input_line(state->maincpu, M6502_IRQ_LINE, HOLD_LINE); |
| 3328 | 3327 | } |
| 3329 | 3328 | } |
| 3330 | | #endif |
| 3331 | 3329 | |
| 3332 | 3330 | static WRITE8_HANDLER( konami_vrc4_w ) |
| 3333 | 3331 | { |
| r8311 | r8312 | |
| 3498 | 3496 | |
| 3499 | 3497 | *************************************************************/ |
| 3500 | 3498 | |
| 3501 | | #if 0 |
| 3502 | 3499 | static WRITE8_HANDLER( konami_vrc7_w ) |
| 3503 | 3500 | { |
| 3504 | 3501 | nes_state *state = (nes_state *)space->machine->driver_data; |
| r8311 | r8312 | |
| 3571 | 3568 | } |
| 3572 | 3569 | } |
| 3573 | 3570 | |
| 3574 | | #endif |
| 3575 | | |
| 3576 | 3571 | /************************************************************* |
| 3577 | 3572 | |
| 3578 | 3573 | Namcot-163 board emulation |
| r8311 | r8312 | |
| 5766 | 5761 | |
| 5767 | 5762 | *************************************************************/ |
| 5768 | 5763 | |
| 5769 | | #if 0 |
| 5770 | 5764 | static void sachen_set_mirror( running_machine *machine, UINT8 nt ) // used by mappers 137, 138, 139, 141 |
| 5771 | 5765 | { |
| 5772 | 5766 | switch (nt) |
| r8311 | r8312 | |
| 5789 | 5783 | break; |
| 5790 | 5784 | } |
| 5791 | 5785 | } |
| 5792 | | #endif |
| 5793 | 5786 | |
| 5794 | 5787 | static WRITE8_HANDLER( sachen_74x374_l_w ) |
| 5795 | 5788 | { |
| r8311 | r8312 | |
| 6970 | 6963 | |
| 6971 | 6964 | *************************************************************/ |
| 6972 | 6965 | |
| 6973 | | #if 0 |
| 6974 | 6966 | /* MIRROR_LOW and MIRROR_HIGH are swapped! */ |
| 6975 | 6967 | static void waixing_set_mirror( running_machine *machine, UINT8 nt ) |
| 6976 | 6968 | { |
| r8311 | r8312 | |
| 6991 | 6983 | break; |
| 6992 | 6984 | } |
| 6993 | 6985 | } |
| 6994 | | #endif |
| 6995 | 6986 | |
| 6996 | 6987 | static void waixing_a_set_chr( running_machine *machine, int chr_base, int chr_mask ) |
| 6997 | 6988 | { |
| r8311 | r8312 | |
| 8254 | 8245 | |
| 8255 | 8246 | static WRITE8_HANDLER( unl_t230_w ) |
| 8256 | 8247 | { |
| 8248 | nes_state *state = (nes_state *)space->machine->driver_data; |
| 8249 | UINT8 bank; |
| 8257 | 8250 | LOG_MMC(("unl_t230_w offset: %04x, data: %02x\n", offset, data)); |
| 8258 | 8251 | |
| 8259 | | switch (offset & 0x7007) |
| 8252 | switch (offset & 0x700c) |
| 8260 | 8253 | { |
| 8261 | 8254 | case 0x0000: |
| 8262 | 8255 | break; |
| 8263 | 8256 | case 0x2000: |
| 8264 | | data = (data << 1) & 0x1f; |
| 8265 | | prg8_89(space->machine, data); |
| 8266 | | prg8_ab(space->machine, data | 0x01); |
| 8257 | prg16_89ab(space->machine, data); |
| 8267 | 8258 | break; |
| 8259 | |
| 8260 | // the part below works like VRC-2. how was the original board wired up? |
| 8261 | // was there a VRC2? if so, we can use VRC-2 and add proper pin settings to xml! |
| 8262 | case 0x1000: |
| 8263 | case 0x1004: |
| 8264 | case 0x1008: |
| 8265 | case 0x100c: |
| 8266 | switch (data & 0x03) |
| 8267 | { |
| 8268 | case 0x00: set_nt_mirroring(space->machine, PPU_MIRROR_VERT); break; |
| 8269 | case 0x01: set_nt_mirroring(space->machine, PPU_MIRROR_HORZ); break; |
| 8270 | case 0x02: set_nt_mirroring(space->machine, PPU_MIRROR_LOW); break; |
| 8271 | case 0x03: set_nt_mirroring(space->machine, PPU_MIRROR_HIGH); break; |
| 8272 | } |
| 8273 | break; |
| 8274 | |
| 8275 | case 0x3000: |
| 8276 | case 0x3004: |
| 8277 | case 0x3008: |
| 8278 | case 0x300c: |
| 8279 | case 0x4000: |
| 8280 | case 0x4004: |
| 8281 | case 0x4008: |
| 8282 | case 0x400c: |
| 8283 | case 0x5000: |
| 8284 | case 0x5004: |
| 8285 | case 0x5008: |
| 8286 | case 0x500c: |
| 8287 | case 0x6000: |
| 8288 | case 0x6004: |
| 8289 | case 0x6008: |
| 8290 | case 0x600c: |
| 8291 | bank = ((offset & 0x7000) - 0x3000) / 0x0800 + ((offset & 0x0008) >> 2); |
| 8292 | if (offset & 0x0004) |
| 8293 | state->mmc_vrom_bank[bank] = (state->mmc_vrom_bank[bank] & 0x0f) | (data << 4); |
| 8294 | else |
| 8295 | state->mmc_vrom_bank[bank] = (state->mmc_vrom_bank[bank] & 0xf0) | (data & 0x0f); |
| 8268 | 8296 | |
| 8297 | chr1_x(space->machine, bank, state->mmc_vrom_bank[bank], state->mmc_chr_source); |
| 8298 | break; |
| 8299 | case 0x7000: |
| 8300 | state->IRQ_count_latch &= ~0x0f; |
| 8301 | state->IRQ_count_latch |= data & 0x0f; |
| 8302 | break; |
| 8303 | case 0x7004: |
| 8304 | state->IRQ_count_latch &= ~0xf0; |
| 8305 | state->IRQ_count_latch |= (data << 4) & 0xf0; |
| 8306 | break; |
| 8307 | case 0x7008: |
| 8308 | state->IRQ_mode = data & 0x04; // currently not implemented: 0 = prescaler mode / 1 = CPU mode |
| 8309 | state->IRQ_enable = data & 0x02; |
| 8310 | state->IRQ_enable_latch = data & 0x01; |
| 8311 | if (data & 0x02) |
| 8312 | state->IRQ_count = state->IRQ_count_latch; |
| 8313 | break; |
| 8314 | |
| 8269 | 8315 | default: |
| 8270 | | konami_vrc2b_w(space, offset, data); |
| 8316 | logerror("unl_t230_w uncaught offset: %04x value: %02x\n", offset, data); |
| 8271 | 8317 | break; |
| 8272 | 8318 | } |
| 8273 | 8319 | } |
src/mess/machine/nes_ines.c
| r8311 | r8312 | |
| 2036 | 2036 | |
| 2037 | 2037 | *************************************************************/ |
| 2038 | 2038 | |
| 2039 | | static void vrc4_set_prg( running_machine *machine ) |
| 2039 | static void vrc4a_set_prg( running_machine *machine ) |
| 2040 | 2040 | { |
| 2041 | 2041 | nes_state *state = (nes_state *)machine->driver_data; |
| 2042 | 2042 | if (state->mmc_cmd1 & 0x02) |
| r8311 | r8312 | |
| 2051 | 2051 | } |
| 2052 | 2052 | } |
| 2053 | 2053 | |
| 2054 | | static void konami_irq( running_device *device, int scanline, int vblank, int blanked ) |
| 2055 | | { |
| 2056 | | nes_state *state = (nes_state *)device->machine->driver_data; |
| 2057 | | /* Increment & check the IRQ scanline counter */ |
| 2058 | | if (state->IRQ_enable && (++state->IRQ_count == 0x100)) |
| 2059 | | { |
| 2060 | | state->IRQ_count = state->IRQ_count_latch; |
| 2061 | | state->IRQ_enable = state->IRQ_enable_latch; |
| 2062 | | cpu_set_input_line(state->maincpu, M6502_IRQ_LINE, HOLD_LINE); |
| 2063 | | } |
| 2064 | | } |
| 2065 | | |
| 2066 | 2054 | static WRITE8_HANDLER( konami_vrc4a_w ) |
| 2067 | 2055 | { |
| 2068 | 2056 | nes_state *state = (nes_state *)space->machine->driver_data; |
| r8311 | r8312 | |
| 2078 | 2066 | case 0x0080: |
| 2079 | 2067 | case 0x00c0: |
| 2080 | 2068 | state->mmc_prg_bank[0] = data; |
| 2081 | | vrc4_set_prg(space->machine); |
| 2069 | vrc4a_set_prg(space->machine); |
| 2082 | 2070 | break; |
| 2083 | 2071 | |
| 2084 | 2072 | case 0x1000: |
| r8311 | r8312 | |
| 2098 | 2086 | case 0x1080: |
| 2099 | 2087 | case 0x10c0: |
| 2100 | 2088 | state->mmc_cmd1 = data & 0x02; |
| 2101 | | vrc4_set_prg(space->machine); |
| 2089 | vrc4a_set_prg(space->machine); |
| 2102 | 2090 | break; |
| 2103 | 2091 | |
| 2104 | 2092 | case 0x2000: |
| r8311 | r8312 | |
| 2228 | 2216 | case 0x0008: |
| 2229 | 2217 | case 0x000c: |
| 2230 | 2218 | state->mmc_prg_bank[0] = data; |
| 2231 | | vrc4_set_prg(space->machine); |
| 2219 | vrc4a_set_prg(space->machine); |
| 2232 | 2220 | break; |
| 2233 | 2221 | |
| 2234 | 2222 | case 0x1000: |
| r8311 | r8312 | |
| 2248 | 2236 | case 0x1004: |
| 2249 | 2237 | case 0x100c: |
| 2250 | 2238 | state->mmc_cmd1 = data & 0x02; |
| 2251 | | vrc4_set_prg(space->machine); |
| 2239 | vrc4a_set_prg(space->machine); |
| 2252 | 2240 | break; |
| 2253 | 2241 | |
| 2254 | 2242 | case 0x2000: |
| r8311 | r8312 | |
| 4526 | 4514 | |
| 4527 | 4515 | *************************************************************/ |
| 4528 | 4516 | |
| 4529 | | /* MIRROR_LOW and MIRROR_HIGH are swapped! */ |
| 4530 | | static void waixing_set_mirror( running_machine *machine, UINT8 nt ) |
| 4531 | | { |
| 4532 | | switch (nt) |
| 4533 | | { |
| 4534 | | case 0: |
| 4535 | | case 1: |
| 4536 | | set_nt_mirroring(machine, nt ? PPU_MIRROR_HORZ : PPU_MIRROR_VERT); |
| 4537 | | break; |
| 4538 | | case 2: |
| 4539 | | set_nt_mirroring(machine, PPU_MIRROR_LOW); |
| 4540 | | break; |
| 4541 | | case 3: |
| 4542 | | set_nt_mirroring(machine, PPU_MIRROR_HIGH); |
| 4543 | | break; |
| 4544 | | default: |
| 4545 | | LOG_MMC(("Mapper set NT to invalid value %02x", nt)); |
| 4546 | | break; |
| 4547 | | } |
| 4548 | | } |
| 4549 | | |
| 4550 | 4517 | static void mapper74_set_chr( running_machine *machine, int chr_base, int chr_mask ) |
| 4551 | 4518 | { |
| 4552 | 4519 | nes_state *state = (nes_state *)machine->driver_data; |
| r8311 | r8312 | |
| 5046 | 5013 | |
| 5047 | 5014 | *************************************************************/ |
| 5048 | 5015 | |
| 5049 | | static WRITE8_HANDLER( konami_vrc7_w ) |
| 5016 | static WRITE8_HANDLER( mapper85_w ) |
| 5050 | 5017 | { |
| 5051 | 5018 | nes_state *state = (nes_state *)space->machine->driver_data; |
| 5052 | 5019 | UINT8 bank; |
| r8311 | r8312 | |
| 6620 | 6587 | |
| 6621 | 6588 | *************************************************************/ |
| 6622 | 6589 | |
| 6623 | | static void sachen_set_mirror( running_machine *machine, UINT8 nt ) // used by mappers 137, 138, 139, 141 |
| 6624 | | { |
| 6625 | | switch (nt) |
| 6626 | | { |
| 6627 | | case 0: |
| 6628 | | case 1: |
| 6629 | | set_nt_mirroring(machine, nt ? PPU_MIRROR_HORZ : PPU_MIRROR_VERT); |
| 6630 | | break; |
| 6631 | | case 2: |
| 6632 | | set_nt_page(machine, 0, CIRAM, 0, 1); |
| 6633 | | set_nt_page(machine, 1, CIRAM, 1, 1); |
| 6634 | | set_nt_page(machine, 2, CIRAM, 1, 1); |
| 6635 | | set_nt_page(machine, 3, CIRAM, 1, 1); |
| 6636 | | break; |
| 6637 | | case 3: |
| 6638 | | set_nt_mirroring(machine, PPU_MIRROR_LOW); |
| 6639 | | break; |
| 6640 | | default: |
| 6641 | | LOG_MMC(("Mapper set NT to invalid value %02x", nt)); |
| 6642 | | break; |
| 6643 | | } |
| 6644 | | } |
| 6645 | | |
| 6646 | 6590 | static WRITE8_HANDLER( mapper137_l_w ) |
| 6647 | 6591 | { |
| 6648 | 6592 | nes_state *state = (nes_state *)space->machine->driver_data; |
| r8311 | r8312 | |
| 10915 | 10859 | { 82, "Taito X1-017", NULL, NULL, mapper82_m_w, NULL, NULL, NULL, NULL }, |
| 10916 | 10860 | { 83, "Cony", mapper83_l_w, mapper83_l_r, NULL, mapper83_w, NULL, NULL, NULL }, |
| 10917 | 10861 | { 84, "Pasofami hacked images?", NULL, NULL, NULL, NULL, NULL, NULL, NULL }, |
| 10918 | | { 85, "Konami VRC 7", NULL, NULL, NULL, konami_vrc7_w, NULL, NULL, konami_irq }, |
| 10862 | { 85, "Konami VRC 7", NULL, NULL, NULL, mapper85_w, NULL, NULL, konami_irq }, |
| 10919 | 10863 | { 86, "Jaleco JF13", NULL, NULL, mapper86_m_w, NULL, NULL, NULL, NULL }, |
| 10920 | 10864 | { 87, "74139/74", NULL, NULL, mapper87_m_w, NULL, NULL, NULL, NULL }, |
| 10921 | 10865 | { 88, "Namcot 34x3", NULL, NULL, NULL, mapper88_w, NULL, NULL, NULL }, |