Previous 199869 Revisions Next

r34427 Saturday 17th January, 2015 at 05:41:52 UTC by Angelo Salese
Notes regarding mtetrisc protection
[src/mame/drivers]aleck64.c

trunk/src/mame/drivers/aleck64.c
r242938r242939
103103        JAPAN
104104
105105
106On bootup, they also mention 'T.L.S' (Temporary Landing System), which seems
107to be the hardware system, designed by Arika Co. Ltd.
108106
109107
110108PCB Layout
r242938r242939
185183   DECLARE_DRIVER_INIT(aleck64);
186184   DECLARE_WRITE32_MEMBER(aleck_dips_w);
187185   DECLARE_READ32_MEMBER(aleck_dips_r);
186   DECLARE_READ16_MEMBER(e90_prot_r);
187   DECLARE_WRITE16_MEMBER(e90_prot_w);
188188private:
189189   UINT32 m_dip_read_offset;
190190};
r242938r242939
311311   AM_RANGE(0x1fc00000, 0x1fc007bf) AM_ROM AM_REGION("user1", 0)   // PIF ROM
312312   AM_RANGE(0x1fc007c0, 0x1fc007ff) AM_DEVREADWRITE("rcp", n64_periphs, pif_ram_r, pif_ram_w)
313313
314   /*
315       Surely this should mirror main ram? srmvs crashes, and
316       vivdolls overwrites it's memory test code if it does mirror
317   */
318   AM_RANGE(0xc0000000, 0xc07fffff) AM_RAM
314   AM_RANGE(0xc0000000, 0xc07fffff) AM_RAM // SDRAM, Aleck 64 specific
319315
320316   AM_RANGE(0xc0800000, 0xc0800fff) AM_READWRITE(aleck_dips_r,aleck_dips_w)
321   AM_RANGE(0xd0000000, 0xd00fffff) AM_RAM // mtetrisc, write only, mirror?
317ADDRESS_MAP_END
322318
319/*
320 E90 protection handlers
321*/
322
323READ16_MEMBER(aleck64_state::e90_prot_r)
324{
325// offset 0 $800 = status ready, active high
326   return 0;
327}
328
329WRITE16_MEMBER(aleck64_state::e90_prot_w)
330{   
331   switch(offset*2)
332   {
333      case 0x16:
334         if(data != 6 && data != 7)
335            printf("! %04x %04x %08x\n",offset*2,data,mem_mask);
336
337         if(data & 1) // 0 -> 1 transition
338         {
339            for(int i=0;i<0x1000;i+=4)
340               space.write_dword(0x007502f4+i,space.read_dword(0xd0000000+i));
341         }
342         break;
343      //0x1e bit 0 probably enables the chip
344      default:
345         printf("%04x %04x %08x\n",offset*2,data,mem_mask);
346         break;
347   }
348}
349
350static ADDRESS_MAP_START( e90_map, AS_PROGRAM, 32, aleck64_state )
351   AM_IMPORT_FROM( n64_map )
352   AM_RANGE(0xd0000000, 0xd0000fff) AM_RAM
353   AM_RANGE(0xd0010000, 0xd0010fff) AM_RAM
354   AM_RANGE(0xd0030000, 0xd003001f) AM_READWRITE16(e90_prot_r, e90_prot_w,0xffffffff)
323355ADDRESS_MAP_END
324356
325357static ADDRESS_MAP_START( rsp_map, AS_PROGRAM, 32, aleck64_state )
r242938r242939
841873   MCFG_N64_PERIPHS_ADD("rcp");
842874MACHINE_CONFIG_END
843875
876static MACHINE_CONFIG_DERIVED( a64_e90, aleck64 )
877   MCFG_CPU_MODIFY("maincpu")
878   MCFG_CPU_PROGRAM_MAP(e90_map)
879MACHINE_CONFIG_END
880
844881DRIVER_INIT_MEMBER(aleck64_state,aleck64)
845882{
846883   UINT8 *rom = memregion("user2")->base();
r242938r242939
10751112
10761113// games
10771114GAME( 1998, 11beat,   aleck64,  aleck64, 11beat, aleck64_state,   aleck64, ROT0, "Hudson", "Eleven Beat", GAME_NOT_WORKING ) // crashes at kick off / during attract with DRC
1078GAME( 1998, mtetrisc, aleck64,  aleck64, mtetrisc, aleck64_state, aleck64, ROT0, "Capcom", "Magical Tetris Challenge (981009 Japan)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
1115GAME( 1998, mtetrisc, aleck64,  a64_e90, mtetrisc, aleck64_state, aleck64, ROT0, "Capcom", "Magical Tetris Challenge (981009 Japan)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
10791116GAME( 1998, starsldr, aleck64,  aleck64, starsldr, aleck64_state, aleck64, ROT0, "Hudson / Seta", "Star Soldier: Vanishing Earth", GAME_IMPERFECT_GRAPHICS )
10801117GAME( 1998, vivdolls, aleck64,  aleck64, aleck64, aleck64_state,  aleck64, ROT0, "Visco", "Vivid Dolls", GAME_IMPERFECT_GRAPHICS )
10811118GAME( 1999, srmvs,    aleck64,  aleck64, srmvs, aleck64_state,    aleck64, ROT0, "Seta", "Super Real Mahjong VS", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )


Previous 199869 Revisions Next


© 1997-2024 The MAME Team