Skip navigation.

Posts tagged with "xmame"

Add tgm2 & tgm2p to xmame

非常喜欢Tetris the Absolute The Grand Master 2 Plus这个游戏...mame0.99u4曾经支持,但是在厂商的要求下去掉了...linux上的xmame也没了,于是就给它加上...自己暗爽...


下载xmame0.106的源码,在x.mame.net可以下载到.

解压,然后在src/drivers文件夹中找到psikyosh.c这个文件,打开.

然后往下寻找到这一段:
  if (use_factory_eeprom==EEPROM_DARAKU) /* Daraku, replace top 10 bytes with defaults (different to other games) */
 memcpy(eeprom_data, daraku_eeprom, 0x10);

if (use_factory_eeprom==EEPROM_S1945III) /* S1945iii suffers from corruption on highscore unless properly initialised at the end of the eeprom */
 memcpy(eeprom_data+0xf0, s1945iii_eeprom, 0x10);

 if (use_factory_eeprom==EEPROM_DRAGNBLZ) /* Dragnblz too */
 memcpy(eeprom_data+0xf0, dragnblz_eeprom, 0x10);

 if (use_factory_eeprom==EEPROM_GNBARICH) /* Might as well do Gnbarich as well, otherwise the highscore is incorrect */
 memcpy(eeprom_data+0xf0, gnbarich_eeprom, 0x10);


在后面加上:
if (use_factory_eeprom==EEPROM_USER1) 

 memcpy(eeprom_data, memory_region(REGION_USER1), 0x100);


再继续向下看.

INPUT_PORTS_START( mjgtaste ) /* This will need the Mahjong inputs */
PORT_START_TAG("IN0")
PSIKYOSH_PORT_PLAYER( 1, IPT_START1, 3 )
PORT_START_TAG("IN1")
PSIKYOSH_PORT_PLAYER( 2, IPT_START2, 3 )

UNUSED_PORT
PORT_COIN( 0 )

PORT_START_TAG("IN4")/* jumper pads on the PCB */
/*  PORT_DIPNAME( 0x03, 0x01, DEF_STR( Region ) ) */
/*  PORT_DIPSETTING(    0x00, DEF_STR( Japan ) ) */
/*  PORT_DIPSETTING(    0x02, "International Ver A." ) */
/*  PORT_DIPSETTING(    0x01, "International Ver B." ) */
INPUT_PORTS_END


/*   这里开始加上以下内容   */
INPUT_PORTS_START( tgm2 )

PORT_START_TAG("IN0")

PSIKYOSH_PORT_PLAYER( 1, IPT_START1, 3 )

PORT_START_TAG("IN1")

PSIKYOSH_PORT_PLAYER( 2, IPT_START2, 3 )



UNUSED_PORT

PORT_COIN( 1 )



PORT_START_TAG("IN4")/* jumper pads on the PCB */

PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) )

PORT_DIPSETTING(    0x00, DEF_STR( Off ) )

PORT_DIPSETTING(    0x00, DEF_STR( On ) )

PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )

PORT_DIPSETTING(    0x00, DEF_STR( Off ) )

PORT_DIPSETTING(    0x00, DEF_STR( On ) )

PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )

PORT_DIPSETTING(    0x00, DEF_STR( Off ) )

PORT_DIPSETTING(    0x04, DEF_STR( On ) )

PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )

PORT_DIPSETTING(    0x00, DEF_STR( Off ) )

PORT_DIPSETTING(    0x08, DEF_STR( On ) )

PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )

PORT_DIPSETTING(    0x00, DEF_STR( Off ) )

PORT_DIPSETTING(    0x10, DEF_STR( On ) )

PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )

PORT_DIPSETTING(    0x00, DEF_STR( Off ) )

PORT_DIPSETTING(    0x20, DEF_STR( On ) )

PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )

PORT_DIPSETTING(    0x00, DEF_STR( Off ) )

PORT_DIPSETTING(    0x40, DEF_STR( On ) )

PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )

PORT_DIPSETTING(    0x00, DEF_STR( Off ) )

PORT_DIPSETTING(    0x80, DEF_STR( On ) )

INPUT_PORTS_END



再下面..就是一堆ROM_START,加上

ROM_START( tgm2 )

ROM_REGION( 0x100000, REGION_CPU1, 0)

ROM_LOAD32_WORD_SWAP( "2.u21",   0x000000, 0x080000, CRC(b19f6c31) SHA1(c58346c575db71262aebc3993743cb031c41e4af) )

ROM_LOAD32_WORD_SWAP( "1.u22",   0x000002, 0x080000, CRC(c521bf24) SHA1(0ee5b9f74b6b8bcc01b2270c53f30d99e877ed64) )



ROM_REGION( 0x3000000, REGION_GFX1, ROMTEST_GFX )/* Sprites */

/* Lower positions not populated */

    ROM_LOAD32_WORD( "81ts_3l.u6",   0x0c00000, 0x200000, CRC(d77cff9c) SHA1(93ee48c350110ebf9a80cca95c599c90a523147d) )

    ROM_LOAD32_WORD( "82ts_3h.u14",  0x0c00002, 0x200000, CRC(f012b583) SHA1(907e1c93cbfa6a0285f96c53f5ccb63e313053d7) )

    ROM_LOAD32_WORD( "83ts_4l.u7",   0x1000000, 0x200000, CRC(078cafc3) SHA1(26e47c8f0aaa461e69e9f40ee61ce4b4cc480776) )

    ROM_LOAD32_WORD( "84ts_4h.u15",  0x1000002, 0x200000, CRC(1f91446b) SHA1(81b43156c6a0f4e63dcc9e7c1e9dd54bcba38240) )

    ROM_LOAD32_WORD( "85ts_5l.u8",   0x1400000, 0x200000, CRC(40fbd259) SHA1(6b8cbfc6232e04785fd232158b3f4d56fadb0c7d) )

    ROM_LOAD32_WORD( "86ts_5h.u16",  0x1400002, 0x200000, CRC(186c935f) SHA1(0cab30c2ec4df3dc35b4c9de63d29bd0bc99afdb) )

ROM_LOAD32_WORD( "87ts_6l.u1",   0x1800000, 0x200000, CRC(c17dc48a) SHA1(4399bfc253fb1cd4ef1081d7350c73df3a0f7441) )

ROM_LOAD32_WORD( "88ts_6h.u2",   0x1800002, 0x200000, CRC(e4dba5da) SHA1(24db1e19f4df94ba3a22fba59e4fd065921db1c5) )

ROM_LOAD32_WORD( "89ts_7l.u19",  0x1c00000, 0x200000, CRC(dab1b2c5) SHA1(114fd7717b97cdfd605ab7e2a354190c41ba4a82) )

ROM_LOAD32_WORD( "90ts_7h.u20",  0x1c00002, 0x200000, CRC(aae696b3) SHA1(9ac27365719c1700f647911dc324a0e2aacea172) )

ROM_LOAD32_WORD( "91ts_8l.u28",  0x2000000, 0x200000, CRC(e953ace1) SHA1(c6cdfd807a7a84b86378c3585aeb7c0cb066f8a1) )

ROM_LOAD32_WORD( "92ts_8h.u29",  0x2000002, 0x200000, CRC(9da3b976) SHA1(ce1e4eb93760749200ede45703412868ca29a5e7) )

ROM_LOAD32_WORD( "93ts_9l.u41",  0x2400000, 0x200000, CRC(233087fe) SHA1(c4adb307ce11ef558fd23b299ce7f458de581446) )

ROM_LOAD32_WORD( "94ts_9h.u42",  0x2400002, 0x200000, CRC(9da831c7) SHA1(42698697aa85df088745b2d37ec89b01adce700f) )

ROM_LOAD32_WORD( "95ts_10l.u58", 0x2800000, 0x200000, CRC(303a5240) SHA1(5816d1922e85bc27a2a13cdd183d9e67c7ddb2e1) )

ROM_LOAD32_WORD( "96ts_10h.u59", 0x2800002, 0x200000, CRC(2240ebf6) SHA1(b61f93a18dd9d94fb57d95745d4df2e41a0371ff) )



ROM_REGION( 0x800000, REGION_SOUND1, 0 ) /* Samples */

ROM_LOAD( "97ts_snd.u52", 0x000000, 0x400000, CRC(9155eca6) SHA1(f0b4f68462d8a465c39815d3b7fd9818788132ae) )



ROM_REGION( 0x100, REGION_USER1, 0 ) /* Default Eeprom (contains scores etc.) */

/* might need byteswapping to reprogram actual chip */

ROM_LOAD( "tgm2.default.nv", 0x000, 0x100, CRC(50e2348c) SHA1(d17d2739c97a1d93a95dcc9f11feb1f6f228729e) )

ROM_END



ROM_START( tgm2p )

ROM_REGION( 0x100000, REGION_CPU1, 0)

ROM_LOAD32_WORD_SWAP( "2b.u21",   0x000000, 0x080000, CRC(38bc626c) SHA1(783e8413b11f1fa08d331b09ef4ed63f62b87ead) )

ROM_LOAD32_WORD_SWAP( "1b.u22",   0x000002, 0x080000, CRC(7599fb19) SHA1(3f7e81756470c173cc17a7e7dee91437571fd0c3) )



ROM_REGION( 0x3000000, REGION_GFX1, ROMTEST_GFX )/* Sprites */

/* Lower positions not populated */

    ROM_LOAD32_WORD( "81ts_3l.u6",   0x0c00000, 0x200000, CRC(d77cff9c) SHA1(93ee48c350110ebf9a80cca95c599c90a523147d) )

    ROM_LOAD32_WORD( "82ts_3h.u14",  0x0c00002, 0x200000, CRC(f012b583) SHA1(907e1c93cbfa6a0285f96c53f5ccb63e313053d7) )

    ROM_LOAD32_WORD( "83ts_4l.u7",   0x1000000, 0x200000, CRC(078cafc3) SHA1(26e47c8f0aaa461e69e9f40ee61ce4b4cc480776) )

    ROM_LOAD32_WORD( "84ts_4h.u15",  0x1000002, 0x200000, CRC(1f91446b) SHA1(81b43156c6a0f4e63dcc9e7c1e9dd54bcba38240) )

    ROM_LOAD32_WORD( "85ts_5l.u8",   0x1400000, 0x200000, CRC(40fbd259) SHA1(6b8cbfc6232e04785fd232158b3f4d56fadb0c7d) )

    ROM_LOAD32_WORD( "86ts_5h.u16",  0x1400002, 0x200000, CRC(186c935f) SHA1(0cab30c2ec4df3dc35b4c9de63d29bd0bc99afdb) )

ROM_LOAD32_WORD( "87ts_6l.u1",   0x1800000, 0x200000, CRC(c17dc48a) SHA1(4399bfc253fb1cd4ef1081d7350c73df3a0f7441) )

ROM_LOAD32_WORD( "88ts_6h.u2",   0x1800002, 0x200000, CRC(e4dba5da) SHA1(24db1e19f4df94ba3a22fba59e4fd065921db1c5) )

ROM_LOAD32_WORD( "89ts_7l.u19",  0x1c00000, 0x200000, CRC(dab1b2c5) SHA1(114fd7717b97cdfd605ab7e2a354190c41ba4a82) )

ROM_LOAD32_WORD( "90ts_7h.u20",  0x1c00002, 0x200000, CRC(aae696b3) SHA1(9ac27365719c1700f647911dc324a0e2aacea172) )

ROM_LOAD32_WORD( "91ts_8l.u28",  0x2000000, 0x200000, CRC(e953ace1) SHA1(c6cdfd807a7a84b86378c3585aeb7c0cb066f8a1) )

ROM_LOAD32_WORD( "92ts_8h.u29",  0x2000002, 0x200000, CRC(9da3b976) SHA1(ce1e4eb93760749200ede45703412868ca29a5e7) )

ROM_LOAD32_WORD( "93ts_9l.u41",  0x2400000, 0x200000, CRC(233087fe) SHA1(c4adb307ce11ef558fd23b299ce7f458de581446) )

ROM_LOAD32_WORD( "94ts_9h.u42",  0x2400002, 0x200000, CRC(9da831c7) SHA1(42698697aa85df088745b2d37ec89b01adce700f) )

ROM_LOAD32_WORD( "95ts_10l.u58", 0x2800000, 0x200000, CRC(303a5240) SHA1(5816d1922e85bc27a2a13cdd183d9e67c7ddb2e1) )

ROM_LOAD32_WORD( "96ts_10h.u59", 0x2800002, 0x200000, CRC(2240ebf6) SHA1(b61f93a18dd9d94fb57d95745d4df2e41a0371ff) )



ROM_REGION( 0x800000, REGION_SOUND1, 0 ) /* Samples */

ROM_LOAD( "97ts_snd.u52", 0x000000, 0x400000, CRC(9155eca6) SHA1(f0b4f68462d8a465c39815d3b7fd9818788132ae) )



ROM_REGION( 0x100, REGION_USER1, 0 ) /* Default Eeprom (contains scores etc.) */

/* might need byteswapping to reprogram actual chip */

ROM_LOAD( "tgm2p.default.nv", 0x000, 0x100, CRC(b2328b40) SHA1(e6cda4d6f4e91b9f78d2ca84a5eee6c3bd03fe02) )

ROM_END



还有,

static READ32_HANDLER( tgm2_speedup_r )

{

UINT32 retaddr = 0x06000C/4;



/* tgm2 */

if (activecpu_get_pc()==0x0602895a) {cpu_spinuntil_int();return psh_ram[retaddr];} // attract / title

if (activecpu_get_pc()==0x06028ef2) {cpu_spinuntil_int();return psh_ram[retaddr];} // attract game

if (activecpu_get_pc()==0x06028cac) {cpu_spinuntil_int();return psh_ram[retaddr];} // gameplay



/* tgm2p */

if (activecpu_get_pc()==0x0602ae5a) {cpu_spinuntil_int();return psh_ram[retaddr];} // attract / title

if (activecpu_get_pc()==0x0602b3f2) {cpu_spinuntil_int();return psh_ram[retaddr];} // attract game

if (activecpu_get_pc()==0x0602b1ac) {cpu_spinuntil_int();return psh_ram[retaddr];} // gameplay



//  printf("active %08x  ",activecpu_get_pc());

return psh_ram[retaddr];

}



文件最后,

GAME( 2000, tgm2,     0,        psikyo5_240, tgm2,     tgm2,     ROT0,   "Arika", "Tetris the Absolute The Grand Master 2", 0 )
GAME( 2000, tgm2p,    tgm2,     psikyo5_240, tgm2,     tgm2,     ROT0,   "Arika", "Tetris the Absolute The Grand Master 2 Plus", 0 )


保存,然后打开mamedriv.c,把被注释的tgm2的内容去掉注释...


编译....完.

Linux下xmame手柄问题的解决

,

在linux编译xmame来玩,我有个打印口的PS手柄,想用它来玩xmame,上网寻找了驱动它的方法

#modprobe parport
#modprobe parport_pc
#modprobe joydev
#modprobe gamecon map=0,7,7,7,7,7


前3个都正常,最后一个modprobe gamecon map=0,7,7,7,7,7,出现问题

# modprobe gamecon map=0,7,7,7,7,7
FATAL: Error inserting gamecon (/lib/modules/2.6.17-ARCH/kernel/drivers/input/joystick/gamecon.ko): Device or resource busy


寻找了一番,得解决方法,先# modprobe -r lp,然后# modprobe gamecon map=0,7,7,7,7,7,成功!

用#jstest /dev/input/js0测试手柄,正常运作.

编译xmame,打开makefile,发现里面关于手柄的东西有

###########################################################################
# Input Devices
###########################################################################

# Uncomment any joystick types that you want to use; the one that is 
# actually used can be selected at runtime with the -joytype switch.

# Enable the standard joystick driver, which should work in Linux, OpenBSD, 
# NetBSD, and FreeBSD.
#JOY_STANDARD = 1

# Linux FM-TOWNS game pad joystick emulation support.  Thanks to Osamu 
# Kurati.
#JOY_PAD = 1

# NetBSD/FreeBSD USB joystick support.
#JOY_USB = 1

# PlayStation2-Linux native pad support.
#JOY_PS2 = 1

# SDL joystick support.
#JOY_SDL = 1


把#JOY_STANDARD = 1前面的#去掉,编译.
编译后发现xmame不能使用手柄.用gxmame,选项里面连手柄都不能选择.
上网看了下论坛相关资料.发现makefile里面还有一句,

# The default name for the input device used by the X11 joystick driver.
# Use provided program "xlistdev" to list available ones.
X11_JOYNAME = "Joystick"


按一个网友说法,把X11_JOYNAME = "Joystick"注释掉,重新编译.
运行xmame,手柄可以使用,gxmame中也可以选择了.
December 2009
S M T W T F S
November 2009January 2010
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31