Previous 15994 Revisions Next

r8293 Saturday 19th June, 2010 at 08:40:27 UTC by Fabio Priuli
[NES] removing some fake boards which were needed for separate mirroring settings
(now these are properly handled at loading)
[src/mess/machine]nes.c nes_ines.c nes_mmc.h nes_pcb.c nes_unif.c

src/mess/machine/nes_pcb.c
r8292r8293
300300   /* Discrete board IC_74x161x161x32 */
301301   { "BANDAI-74*161/161/32", DIS_74X161X161X32 },
302302   { "TAITO-74*161/161/32", DIS_74X161X161X32 },
303   /* FIXME: Made up boards the different mirroring handling */
304   { "BANDAI-74*161/161/32-A", DIS_74X161X161X32_A },
305303   /* Discrete board IC_74x161x138 */
306304   { "BIT-CORP-74*161/138", DIS_74X161X138 },
307305//
r8292r8293
366364   { "NAMCOT-3453",      NAMCOT_3453 },
367365//
368366   { "SUNSOFT-1",        SUNSOFT_1 },
369   { "SUNSOFT-2",        SUNSOFT_2_B },
367   { "SUNSOFT-2",        SUNSOFT_2 },
370368   { "SUNSOFT-3",        SUNSOFT_3 },
371   /* FIXME: Made up boards the different mirroring handling */
372   { "SUNSOFT-2A",       SUNSOFT_2_A },
373   { "SUNSOFT-2B",       SUNSOFT_2_B },
374369   //
375370   { "TAITO-TC0190FMC",  TAITO_TC0190FMC },
376371   { "TAITO-TC0190FMC+PAL16R4", TAITO_TC0190FMCP },
r8292r8293
25302525 
25312526 *************************************************************/
25322527
2533static WRITE8_HANDLER( dis_74x161x161x32a_w )
2528static WRITE8_HANDLER( dis_74x161x161x32_w )
25342529{
2530   nes_state *state = (nes_state *)space->machine->driver_data;
25352531   LOG_MMC(("dis_74x161x161x32_w, offset: %04x, data: %02x\n", offset, data));
25362532   
2533   if (!state->hard_mirroring)   // there are two 'variants' depending on hardwired or mapper ctrl mirroring
2534      set_nt_mirroring(space->machine, BIT(data, 7) ? PPU_MIRROR_HIGH : PPU_MIRROR_LOW);
25372535   chr8(space->machine, data, CHRROM);
25382536   prg16_89ab(space->machine, data >> 4);
25392537}
25402538
2541static WRITE8_HANDLER( dis_74x161x161x32_w )
2542{
2543   LOG_MMC(("dis_74x161x161x32_w, offset: %04x, data: %02x\n", offset, data));
2544   
2545   set_nt_mirroring(space->machine, BIT(data, 7) ? PPU_MIRROR_HIGH : PPU_MIRROR_LOW);
2546   dis_74x161x161x32a_w(space, offset, data);
2547}
2548
25492539/*************************************************************
25502540 
25512541 Bandai LZ93D50 boards emulation
r8292r8293
27642754 
27652755 Irem G-101 board emulation
27662756 
2767 Major League uses hardwired mirroring, making necessary two
2768 distinct pcb_id
2757 Major League uses hardwired mirroring
27692758
27702759 iNES: mapper 32
27712760 
27722761 *************************************************************/
27732762
2774static WRITE8_HANDLER( g101a_w )
2763static WRITE8_HANDLER( g101_w )
27752764{
27762765   nes_state *state = (nes_state *)space->machine->driver_data;
27772766   LOG_MMC(("g101_w, offset: %04x, data: %02x\n", offset, data));
r8292r8293
27842773         break;
27852774      case 0x1000:
27862775         state->mmc_latch1 = BIT(data, 1);
2776         if (!state->hard_mirroring)   // there are two 'variants' depending on hardwired or mapper ctrl mirroring
2777            set_nt_mirroring(space->machine, BIT(data, 0) ? PPU_MIRROR_HORZ : PPU_MIRROR_VERT);
27872778         break;
27882779      case 0x2000:
27892780         prg8_ab(space->machine, data);
r8292r8293
27942785   }
27952786}
27962787
2797static WRITE8_HANDLER( g101_w )
2798{
2799   LOG_MMC(("g101_w, offset: %04x, data: %02x\n", offset, data));
2800
2801   if ((offset & 0x7000) == 0x1000)
2802      set_nt_mirroring(space->machine, BIT(data, 0) ? PPU_MIRROR_HORZ : PPU_MIRROR_VERT);
2803
2804   g101a_w(space, offset, data);
2805}
2806
2807
28082788/*************************************************************
28092789 
28102790 Irem H-3001 board emulation
r8292r8293
32143194      shift = BIT(shifted_offs, 8) * 4;
32153195      bank = ((shifted_offs & 0x7000) - 0x3000) / 0x0800 + BIT(shifted_offs, 9);
32163196      state->mmc_vrom_bank[bank] = (state->mmc_vrom_bank[bank] & (0xf0 >> shift))
3217      | ((data >> state->vrc_ls_chr) << shift);
3197                           | ((data >> state->vrc_ls_chr) << shift);
32183198      chr1_x(space->machine, bank, state->mmc_vrom_bank[bank], CHRROM);
32193199   }
32203200   else
r8292r8293
34203400            break;
34213401         case 0x3300:
34223402            switch (data & 0x0c)
3423         {
3403            {
34243404            case 0x00: set_nt_mirroring(space->machine, PPU_MIRROR_VERT); break;
34253405            case 0x04: set_nt_mirroring(space->machine, PPU_MIRROR_HORZ); break;
34263406            case 0x08: set_nt_mirroring(space->machine, PPU_MIRROR_LOW); break;
34273407            case 0x0c: set_nt_mirroring(space->machine, PPU_MIRROR_HIGH); break;
3428         }
3408            }
34293409            break;
34303410         case 0x5000:
34313411         case 0x5100:
r8292r8293
35163496         
35173497      case 0x6000:
35183498         switch (data & 0x03)
3519      {
3499         {
35203500         case 0x00: set_nt_mirroring(space->machine, PPU_MIRROR_VERT); break;
35213501         case 0x01: set_nt_mirroring(space->machine, PPU_MIRROR_HORZ); break;
35223502         case 0x02: set_nt_mirroring(space->machine, PPU_MIRROR_LOW); break;
35233503         case 0x03: set_nt_mirroring(space->machine, PPU_MIRROR_HIGH); break;
3524      }
3504         }
35253505         break;
35263506      case 0x6008: case 0x6010: case 0x6018:
35273507         state->IRQ_count_latch = data;
r8292r8293
36873667 
36883668 *************************************************************/
36893669
3690static WRITE8_HANDLER( sunsoft2a_w )
3670static WRITE8_HANDLER( sunsoft2_w )
36913671{
3672   nes_state *state = (nes_state *)space->machine->driver_data;
36923673   UINT8 sunsoft_helper = (data & 0x07) | ((data & 0x80) ? 0x08 : 0x00);
36933674   LOG_MMC(("mapper93_w, offset: %04x, data: %02x\n", offset, data));
3694   
3675
3676   if (!state->hard_mirroring)   // there are two 'variants' depending on hardwired or mapper ctrl mirroring
3677      set_nt_mirroring(space->machine, BIT(data, 3) ? PPU_MIRROR_HIGH : PPU_MIRROR_LOW);
36953678   prg16_89ab(space->machine, data >> 4);
36963679   chr8(space->machine, sunsoft_helper, CHRROM);
36973680}
36983681
3699static WRITE8_HANDLER( sunsoft2b_w )
3700{
3701   LOG_MMC(("mapper89_m_w, offset: %04x, data: %02x\n", offset, data));
3702
3703   set_nt_mirroring(space->machine, BIT(data, 3) ? PPU_MIRROR_HIGH : PPU_MIRROR_LOW);
3704   sunsoft2a_w(space, offset, data);
3705}
3706
37073682/*************************************************************
37083683 
37093684 Sunsoft-3 board emulation
r8292r8293
39823957/*************************************************************
39833958 
39843959 Taito X1-017 board emulation
3985 
3986 Actually, Fudou Myouou Den uses a variant of the board with
3987 CIRAM, making necessary two distinct mappers & pcb_id.
3988 
3989 Also, we miss to emulate the security check at 0x6000-0x73ff
3960 
3961 We miss to emulate the security check at 0x6000-0x73ff
39903962 and the ram!
39913963 
39923964 iNES: mapper 82
r8292r8293
1037110343   { DIS_74X139X74,        NES_NOACCESS, NES_WRITEONLY(dis_74x139x74_m_w), NES_NOACCESS,     NULL, NULL, NULL },
1037210344   { DIS_74X377,           NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(dis_74x377_w),          NULL, NULL, NULL },
1037310345   { DIS_74X161X161X32,    NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(dis_74x161x161x32_w),   NULL, NULL, NULL },
10374   { DIS_74X161X161X32_A,  NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(dis_74x161x161x32a_w),  NULL, NULL, NULL },
1037510346   { DIS_74X161X138,       NES_NOACCESS, NES_WRITEONLY(dis_74x161x138_m_w), NES_NOACCESS,    NULL, NULL, NULL },
1037610347   { BANDAI_LZ93,          NES_NOACCESS, NES_WRITEONLY(lz93d50_m_w), NES_WRITEONLY(lz93d50_w), NULL, NULL, bandai_lz_irq },
1037710348   { BANDAI_FCG,           NES_NOACCESS, NES_WRITEONLY(lz93d50_m_w), NES_WRITEONLY(lz93d50_w), NULL, NULL, bandai_lz_irq },
r8292r8293
1038010351   { BANDAI_KARAOKE,       NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(bandai_ks_w),           NULL, NULL, NULL },
1038110352   { BANDAI_OEKAKIDS,      NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(bandai_ok_w),            NULL, NULL, NULL },
1038210353   { IREM_G101,            NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(g101_w),                NULL, NULL, NULL },
10383   { IREM_G101_A,          NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(g101a_w),               NULL, NULL, NULL },
1038410354   { IREM_LROG017,         NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(lrog017_w),             NULL, NULL, NULL },
1038510355   { IREM_H3001,           NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(h3001_w),               NULL, NULL, h3001_irq },
1038610356   { IREM_TAM_S1,          NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(tam_s1_w),              NULL, NULL, NULL },
r8292r8293
1039910369   { KONAMI_VRC7,          NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(konami_vrc7_w),         NULL, NULL, konami_irq },
1040010370   { NAMCOT_163,           {namcot163_l_w, namcot163_l_r}, NES_NOACCESS, NES_WRITEONLY(namcot163_w), NULL, NULL, namcot163_irq },
1040110371   { SUNSOFT_1,            NES_NOACCESS, NES_WRITEONLY(sunsoft1_m_w), NES_NOACCESS,          NULL, NULL, NULL },
10402   { SUNSOFT_2_A,          NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(sunsoft2a_w),           NULL, NULL, NULL },
10403   { SUNSOFT_2_B,          NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(sunsoft2b_w),           NULL, NULL, NULL },
10372   { SUNSOFT_2,            NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(sunsoft2_w),            NULL, NULL, NULL },
1040410373   { SUNSOFT_3,            NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(sunsoft3_w),            NULL, NULL, sunsoft3_irq },
1040510374   { TAITO_TC0190FMC,      NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(tc0190fmc_w),           NULL, NULL, NULL },
1040610375   { TAITO_TC0190FMCP,     NES_NOACCESS, NES_NOACCESS, NES_WRITEONLY(tc0190fmc_p16_w),       NULL, NULL, mmc3_irq },
src/mess/machine/nes.c
r8292r8293
12321232      if (state->pcb_id == STD_SXROM && !strcmp(image_get_feature(image, "mmc1_type"), "MMC1A"))
12331233         state->pcb_id = STD_SXROM_A;   // in MMC1-A PRG RAM is always enabled
12341234     
1235      if (state->pcb_id == IREM_G101 && !strcmp(image_get_feature(image, "mirroring"), "high"))
1236         state->pcb_id = IREM_G101_A;
1237     
12381235      if (state->pcb_id == STD_NXROM || state->pcb_id == SUNSOFT_DCS)
12391236      {
12401237         if (image_get_software_region(image, "minicart") != NULL)   // check for dual minicart
src/mess/machine/nes_unif.c
r8292r8293
362362      case DIS_74X161X138:   // mapper 38
363363         prg32(machine, 0);
364364         break;
365      case DIS_74X161X161X32:   // mapper 152
365      case DIS_74X161X161X32:   // mapper 152 & 70
366366         prg16_89ab(machine, 0);
367367         prg16_cdef(machine, state->prg_chunks - 1);
368         chr8(machine, 0, CHRROM);
368         if (state->chr_chunks)
369            chr8(machine, 0, CHRROM);
369370         break;
370      case DIS_74X161X161X32_A:   // mapper 70
371         prg16_89ab(machine, state->prg_chunks - 2);
372         prg16_cdef(machine, state->prg_chunks - 1);
373         break;
374371      case BANDAI_LZ93:   // mapper 16, 157
375372      case BANDAI_DATACH:
376373         state->mmc_latch1 = 0;
r8292r8293
416413         prg16_89ab(machine, state->prg_chunks - 1);
417414         prg16_cdef(machine, 0);
418415         break;
419      case IREM_G101_A:   // mapper 32
420         set_nt_mirroring(machine, PPU_MIRROR_HIGH);  // needed by Major League
421416      case IREM_G101:
422417         state->mmc_latch1 = 0;
423418         prg16_89ab(machine, 0);
r8292r8293
467462      case SUNSOFT_1:   // mapper 184
468463         prg32(machine, 0);
469464         break;
470      case SUNSOFT_2_A:   // mapper 93
465      case SUNSOFT_2:   // mapper 89 & 93
471466         prg16_89ab(machine, 0);
472467         prg16_cdef(machine, state->prg_chunks - 1);
468         if (!state->hard_mirroring)
469            set_nt_mirroring(machine, PPU_MIRROR_LOW);
473470         break;
474      case SUNSOFT_2_B:   // mapper 89
475         prg16_89ab(machine, 0);
476         prg16_cdef(machine, state->prg_chunks - 1);
477         set_nt_mirroring(machine, PPU_MIRROR_LOW);
478         break;
479471      case SUNSOFT_3:   // mapper 67
480472         prg16_89ab(machine, 0);
481473         prg16_cdef(machine, state->prg_chunks - 1);
src/mess/machine/nes_mmc.h
r8292r8293
1212   STD_TQROM, STD_TVROM, STD_UN1ROM, STD_UXROM,
1313   HVC_FAMBASIC, NES_QJ, PAL_ZZ, UXROM_CC,
1414   STD_DRROM, STD_SXROM_A, STD_SOROM, STD_SOROM_A,
15   /* Discrete components boards (by various manufacturer */
16   DIS_74X161X138, DIS_74X139X74, DIS_74X377,
17   DIS_74X161X161X32, DIS_74X161X161X32_A,
15   /* Discrete components boards (by various manufacturer) */
16   DIS_74X161X138, DIS_74X139X74,
17   DIS_74X377, DIS_74X161X161X32,
1818   /* Active Enterprises */
1919   ACTENT_ACT52,
2020   /* AGCI */
r8292r8293
3333   /* Dreamtech */
3434   DREAMTECH_BOARD,
3535   /* Irem */
36   IREM_G101, IREM_G101_A, IREM_HOLYDIV,
37   IREM_H3001, IREM_LROG017, IREM_TAM_S1,
36   IREM_G101, IREM_H3001, IREM_LROG017,
37   IREM_TAM_S1, IREM_HOLYDIV,
3838   /* Jaleco */
3939   JALECO_SS88006, JALECO_JF11, JALECO_JF13,
4040   JALECO_JF16, JALECO_JF17, JALECO_JF19,
r8292r8293
5555   SACHEN_TCU01, SACHEN_TCU02,
5656   SACHEN_74LS374, SACHEN_74LS374_A,
5757   /* Sunsoft */
58   SUNSOFT_1, SUNSOFT_2_A, SUNSOFT_2_B, SUNSOFT_3,
59   SUNSOFT_4, SUNSOFT_DCS, SUNSOFT_5B, SUNSOFT_FME7,
58   SUNSOFT_1, SUNSOFT_2, SUNSOFT_3, SUNSOFT_4,
59   SUNSOFT_DCS, SUNSOFT_5B, SUNSOFT_FME7,
6060   /* Taito */
6161   TAITO_TC0190FMC, TAITO_TC0190FMCP,
6262   TAITO_X1_005, TAITO_X1_005_A, TAITO_X1_017,
src/mess/machine/nes_ines.c
r8292r8293
53065306    Games: Shanghai, Fantasy Zone
53075307
53085308    Very similar to mapper 89, but no NT mirroring for data&8
5309    and only CHRRAM present
5310
5309 
53115310    In MESS: Supported.
53125311
53135312*************************************************************/

Previous 15994 Revisions Next


© 1998-2018 The MESS Team