Previous 199869 Revisions Next

r26057 Friday 8th November, 2013 at 15:45:33 UTC by David Haywood
pgm cleanups part 1 (nw)
[src/mame/drivers]pgm.c
[src/mame/includes]pgm.h
[src/mame/machine]igs025.c pgmprot_igs025_igs012.c pgmprot_igs025_igs022.c pgmprot_igs025_igs028.c

trunk/src/mame/machine/pgmprot_igs025_igs028.c
r26056r26057
151151
152152MACHINE_RESET_MEMBER(pgm_028_025_state,olds)
153153{
154   MACHINE_RESET_CALL_MEMBER(pgm);
154   int region = (ioport(":Region")->read()) & 0xff;
155155
156   m_igs025->m_drgw2_protection_region = region;
157   m_igs025->m_kb_game_id = 0x00900000 | region;
156158
159   MACHINE_RESET_CALL_MEMBER(pgm);
157160}
158161
159162DRIVER_INIT_MEMBER(pgm_028_025_state,olds)
trunk/src/mame/machine/pgmprot_igs025_igs012.c
r26056r26057
149149
150150   drgw2_common_init();
151151
152   m_igs025->m_drgw2_protection_region = 0x00000006;
152   int region = 0x06;
153   m_igs025->m_drgw2_protection_region = region;
154   m_igs025->m_kb_game_id = region | (region << 8) | (region << 16) | (region << 24);
153155
154156   mem16[0x131098 / 2] = 0x4e93;
155157   mem16[0x13113e / 2] = 0x4e93;
r26056r26057
162164
163165   drgw2_common_init();
164166
165   m_igs025->m_drgw2_protection_region = 0x00000006;
167   int region = 0x06;
168   m_igs025->m_drgw2_protection_region = region;
169   m_igs025->m_kb_game_id = region | (region << 8) | (region << 16) | (region << 24);
166170
167171   mem16[0x131084 / 2] = 0x4e93;
168172   mem16[0x13112a / 2] = 0x4e93;
r26056r26057
175179
176180   drgw2_common_init();
177181
178   m_igs025->m_drgw2_protection_region = 0x00000005;
182   int region = 0x05;
183   m_igs025->m_drgw2_protection_region = region;
184   m_igs025->m_kb_game_id = region | (region << 8) | (region << 16) | (region << 24);
179185
180186   mem16[0x1303bc / 2] = 0x4e93;
181187   mem16[0x130462 / 2] = 0x4e93;
r26056r26057
188194
189195   drgw2_common_init();
190196
191   m_igs025->m_drgw2_protection_region = 0x00000001;
197   int region = 0x01;
198   m_igs025->m_drgw2_protection_region = region;
199   m_igs025->m_kb_game_id = region | (region << 8) | (region << 16) | (region << 24);
192200
193201   mem16[0x1302c0 / 2] = 0x4e93;
194202   mem16[0x130366 / 2] = 0x4e93;
trunk/src/mame/machine/pgmprot_igs025_igs022.c
r26056r26057
312312
313313MACHINE_RESET_MEMBER(pgm_022_025_state,killbld)
314314{
315   int region = (ioport(":Region")->read()) & 0xff;
316
317   m_igs025->m_drgw2_protection_region = region - 0x16;
318   m_igs025->m_kb_game_id = 0x89911400 | region;
319
315320   MACHINE_RESET_CALL_MEMBER(pgm);
316321}
317322
323MACHINE_RESET_MEMBER(pgm_022_025_state, dw3)
324{
325   int region = (ioport(":Region")->read()) & 0xff;
326
327   m_igs025->m_drgw2_protection_region = region;
328   m_igs025->m_kb_game_id = 0x00060000 | region;
329
330   MACHINE_RESET_CALL_MEMBER(pgm);
331}
332
333
334
335
318336void pgm_022_025_state::igs025_to_igs022_callback( void )
319337{
320338//  printf("igs025_to_igs022_callback\n");
r26056r26057
333351   m_igs022->m_sharedprotram = m_sharedprotram;
334352   m_igs025->m_kb_source_data = killbld_source_data;
335353   m_igs025->m_kb_source_data_offset = 0x16;
336   m_igs025->m_kb_game_id = 0x89911400;
337354}
338355
339356DRIVER_INIT_MEMBER(pgm_022_025_state,drgw3)
r26056r26057
346363   m_igs022->m_sharedprotram = m_sharedprotram;
347364   m_igs025->m_kb_source_data = dw3_source_data;
348365   m_igs025->m_kb_source_data_offset = 0;
349   m_igs025->m_kb_game_id = 0x00060000;
350366}
351367
352368
r26056r26057
368384
369385   MCFG_DEVICE_ADD("igs022", IGS022, 0)
370386
371   MCFG_MACHINE_RESET_OVERRIDE(pgm_022_025_state,killbld)
372387MACHINE_CONFIG_END
373388
389MACHINE_CONFIG_DERIVED(pgm_022_025_dw3, pgm_022_025)
390   MCFG_MACHINE_RESET_OVERRIDE(pgm_022_025_state, dw3)
391MACHINE_CONFIG_END
374392
393MACHINE_CONFIG_DERIVED(pgm_022_025_killbld, pgm_022_025)
394   MCFG_MACHINE_RESET_OVERRIDE(pgm_022_025_state, killbld)
395MACHINE_CONFIG_END
396
397
375398INPUT_PORTS_START( killbld )
376399   PORT_INCLUDE ( pgm )
377400
trunk/src/mame/machine/igs025.c
r26056r26057
148148      m_kb_prot_hilo_select = 0;
149149   }
150150
151   source = m_kb_source_data[(ioport(":Region")->read() - m_kb_source_data_offset)][m_kb_prot_hilo_select];
151   source = m_kb_source_data[m_drgw2_protection_region][m_kb_prot_hilo_select];
152152
153153   if (m_kb_prot_hilo_select & 1)
154154   {
r26056r26057
236236            switch (m_kb_ptr)
237237            {
238238               case 1:
239                  return 0x3f00 | ioport(":Region")->read();
239                  return 0x3f00 | ((m_kb_game_id >> 0) & 0xff);
240240
241241               case 2:
242242                  return 0x3f00 | ((m_kb_game_id >> 8) & 0xff);
r26056r26057
293293      m_olds_prot_hilo_select = 0;
294294   }
295295
296   source = olds_source_data[(ioport(":Region")->read())][m_olds_prot_hilo_select];
296   source = olds_source_data[m_drgw2_protection_region][m_olds_prot_hilo_select];
297297
298298   if (m_olds_prot_hilo_select & 1)    // $8178fa
299299   {
r26056r26057
372372         {
373373            switch (m_olds_ptr)
374374            {
375               case 1: return 0x3f00 | ioport(":Region")->read();
375               case 1:
376                  return 0x3f00 | ((m_kb_game_id >> 0) & 0xff);
376377
377378               case 2:
378                  return 0x3f00 | 0x00;
379                  return 0x3f00 | ((m_kb_game_id >> 8) & 0xff);
379380
380381               case 3:
381                  return 0x3f00 | 0x90;
382                  return 0x3f00 | ((m_kb_game_id >> 16) & 0xff);
382383
383384               case 4:
384                  return 0x3f00 | 0x00;
385                  return 0x3f00 | ((m_kb_game_id >> 24) & 0xff);
385386
387
388
389
386390               case 5:
387391               default: // >= 5
388392                  return 0x3f00 | BITSWAP8(m_olds_prot_hold, 5,2,9,7,10,13,12,15);    // $817906
r26056r26057
443447      {
444448         switch (m_drgw2_ptr)
445449         {
446            case 1: return 0x3f00 | ((m_drgw2_protection_region >> 0) & 0xff);
450            case 1:
451               return 0x3f00 | ((m_kb_game_id >> 0) & 0xff);
447452
448453            case 2:
449               return 0x3f00 | ((m_drgw2_protection_region >> 8) & 0xff);
454               return 0x3f00 | ((m_kb_game_id >> 8) & 0xff);
450455
451456            case 3:
452               return 0x3f00 | ((m_drgw2_protection_region >> 16) & 0xff);
457               return 0x3f00 | ((m_kb_game_id >> 16) & 0xff);
453458
454459            case 4:
455               return 0x3f00 | ((m_drgw2_protection_region >> 24) & 0xff);
460               return 0x3f00 | ((m_kb_game_id >> 24) & 0xff);
456461
457462            case 5:
458463            default:
trunk/src/mame/includes/pgm.h
r26056r26057
405405   DECLARE_DRIVER_INIT(killbld);
406406   DECLARE_DRIVER_INIT(drgw3);
407407   DECLARE_MACHINE_RESET(killbld);
408   DECLARE_MACHINE_RESET(dw3);
408409
409410   void igs025_to_igs022_callback( void );
410411
r26056r26057
532533
533534/*----------- defined in machine/pgmprot4.c -----------*/
534535
535MACHINE_CONFIG_EXTERN( pgm_022_025 );
536MACHINE_CONFIG_EXTERN(pgm_022_025_dw3);
537MACHINE_CONFIG_EXTERN(pgm_022_025_killbld);
536538
537539INPUT_PORTS_EXTERN( killbld );
538540INPUT_PORTS_EXTERN( dw3 );
trunk/src/mame/drivers/pgm.c
r26056r26057
40184018GAME( 1997, drgw2j,       drgw2,     pgm_012_025_drgw2,     pgm, pgm_012_025_state,      drgw2j,     ROT0,   "IGS", "Chuugokuryuu II (ver. 100J, Japan)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
40194019GAME( 1997, drgw2c,       drgw2,     pgm_012_025_drgw2,     pgm, pgm_012_025_state,      drgw2c,     ROT0,   "IGS", "Zhong Guo Long II (ver. 100C, China)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
40204020
4021GAME( 1998, killbld,      pgm,       pgm_022_025, killbld, pgm_022_025_state,  killbld,    ROT0,   "IGS", "The Killing Blade (ver. 109, Chinese Board)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) /* region provided by protection device */
4022GAME( 1998, killbld104,   killbld,   pgm_022_025, killbld, pgm_022_025_state,  killbld,    ROT0,   "IGS", "The Killing Blade (ver. 104)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) /* region provided by protection device */
4021GAME( 1998, killbld,      pgm,       pgm_022_025_killbld, killbld, pgm_022_025_state,  killbld,    ROT0,   "IGS", "The Killing Blade (ver. 109, Chinese Board)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) /* region provided by protection device */
4022GAME( 1998, killbld104,   killbld,   pgm_022_025_killbld, killbld, pgm_022_025_state,  killbld,    ROT0,   "IGS", "The Killing Blade (ver. 104)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) /* region provided by protection device */
40234023
40244024// these seem playable but the DMA mode transfering 68k code to RAM is not emulated so there could still be problems
4025GAME( 1998, drgw3,        pgm,       pgm_022_025,     dw3, pgm_022_025_state,      drgw3,      ROT0,   "IGS", "Dragon World 3 (ver. 106)", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) /* region provided by protection device */
4026GAME( 1998, drgw3105,     drgw3,     pgm_022_025,     dw3, pgm_022_025_state,      drgw3,      ROT0,   "IGS", "Dragon World 3 (ver. 105)", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) /* region provided by protection device */
4027GAME( 1998, drgw3100,     drgw3,     pgm_022_025,     dw3j,pgm_022_025_state,      drgw3,      ROT0,   "IGS", "Dragon World 3 (Japan, ver. 100)", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) // Japan only, has an extra game mode option!
4025GAME( 1998, drgw3,        pgm,       pgm_022_025_dw3,     dw3, pgm_022_025_state,      drgw3,      ROT0,   "IGS", "Dragon World 3 (ver. 106)", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) /* region provided by protection device */
4026GAME( 1998, drgw3105,     drgw3,     pgm_022_025_dw3,     dw3, pgm_022_025_state,      drgw3,      ROT0,   "IGS", "Dragon World 3 (ver. 105)", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) /* region provided by protection device */
4027GAME( 1998, drgw3100,     drgw3,     pgm_022_025_dw3,     dw3j,pgm_022_025_state,      drgw3,      ROT0,   "IGS", "Dragon World 3 (Japan, ver. 100)", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) // Japan only, has an extra game mode option!
40284028
4029GAME( 1998, dwex,         pgm,       pgm_022_025,     dw3, pgm_022_025_state,      drgw3,      ROT0,   "IGS", "Dragon World 3 EX (ver. 100)", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) /* region provided by protection device */
4029GAME( 1998, dwex,         pgm,       pgm_022_025_dw3,     dw3, pgm_022_025_state,      drgw3,      ROT0,   "IGS", "Dragon World 3 EX (ver. 100)", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) /* region provided by protection device */
40304030
40314031// region provided by internal ARM rom
40324032GAME( 1999, photoy2k,     pgm,       pgm_arm_type1,     photoy2k, pgm_arm_type1_state, photoy2k,   ROT0,   "IGS", "Photo Y2K (ver. 105)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) /* region provided by protection device */

Previous 199869 Revisions Next


© 1997-2024 The MAME Team