⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 segacrpt.c

📁 这个是延伸mame的在wince平台下的游戏模拟器的代码
💻 C
📖 第 1 页 / 共 4 页
字号:
		/*  A    B    C    D         A    B    C    D                           */
		{ 0xa0,0xa0,0x00,0x00 }, { 0x80,0xa8,0x20,0x08 },	/* ...0...0...0...0 */
		{ 0x20,0x20,0x20,0x20 }, { 0x20,0x20,0x20,0x20 },	/* ...0...0...0...1 */
		{ 0xa0,0xa0,0x00,0x00 }, { 0x08,0x20,0x20,0x08 },	/* ...0...0...1...0 */
		{ 0x88,0x00,0x88,0x00 }, { 0x88,0x00,0x88,0x00 },	/* ...0...0...1...1 */
		{ 0xa0,0xa0,0x00,0x00 }, { 0x20,0x20,0x20,0x20 },	/* ...0...1...0...0 */
		{ 0x28,0xa0,0x00,0x88 }, { 0x20,0x20,0x20,0x20 },	/* ...0...1...0...1 */
		{ 0xa0,0xa0,0x00,0x00 }, { 0x08,0x20,0x20,0x08 },	/* ...0...1...1...0 */
		{ 0x88,0x00,0x88,0x00 }, { 0x88,0x00,0x88,0x00 },	/* ...0...1...1...1 */
		{ 0x28,0xa0,0x00,0x88 }, { 0xa0,0xa0,0x00,0x00 },	/* ...1...0...0...0 */
		{ 0x88,0x00,0x88,0x00 }, { 0x80,0xa8,0x20,0x08 },	/* ...1...0...0...1 */
		{ 0x28,0xa0,0x00,0x88 }, { 0x08,0x20,0x20,0x08 },	/* ...1...0...1...0 */
		{ 0x28,0xa0,0x00,0x88 }, { 0x80,0xa8,0x20,0x08 },	/* ...1...0...1...1 */
		{ 0x20,0x20,0x20,0x20 }, { 0x20,0x20,0x20,0x20 },	/* ...1...1...0...0 */
		{ 0x88,0x00,0x88,0x00 }, { 0x20,0x20,0x20,0x20 },	/* ...1...1...0...1 */
		{ 0x08,0x20,0x20,0x08 }, { 0x80,0xa8,0x20,0x08 },	/* ...1...1...1...0 */
		{ 0x08,0x20,0x20,0x08 }, { 0x88,0x00,0x88,0x00 }	/* ...1...1...1...1 */
	};


	sega_decode(xortable);
}


void pitfall2_decode(void)
{
	static const unsigned char xortable[32][4] =
	{
		/*       opcode                   data                     address      */
		/*  A    B    C    D         A    B    C    D                           */
		{ 0xa0,0x88,0x88,0xa0 }, { 0xa0,0x88,0x88,0xa0 },	/* ...0...0...0...0 */
		{ 0x08,0x80,0x08,0x80 }, { 0x28,0xa0,0x00,0x88 },	/* ...0...0...0...1 */
		{ 0xa0,0x88,0x88,0xa0 }, { 0xa0,0x88,0x88,0xa0 },	/* ...0...0...1...0 */
		{ 0xa0,0xa0,0x00,0x00 }, { 0xa0,0xa0,0x00,0x00 },	/* ...0...0...1...1 */
		{ 0xa0,0x88,0x88,0xa0 }, { 0x20,0x08,0x80,0xa8 },	/* ...0...1...0...0 */
		{ 0x28,0xa0,0x00,0x88 }, { 0x20,0x08,0x80,0xa8 },	/* ...0...1...0...1 */
		{ 0xa0,0xa0,0x00,0x00 }, { 0xa0,0xa0,0x00,0x00 },	/* ...0...1...1...0 */
		{ 0x28,0xa0,0x00,0x88 }, { 0xa0,0xa0,0x00,0x00 },	/* ...0...1...1...1 */
		{ 0x20,0x08,0x80,0xa8 }, { 0x80,0x80,0x80,0x80 },	/* ...1...0...0...0 */
		{ 0x80,0x80,0x80,0x80 }, { 0x80,0x80,0x80,0x80 },	/* ...1...0...0...1 */
		{ 0xa0,0xa0,0x00,0x00 }, { 0xa0,0x88,0x88,0xa0 },	/* ...1...0...1...0 */
		{ 0x80,0x80,0x80,0x80 }, { 0x28,0xa0,0x00,0x88 },	/* ...1...0...1...1 */
		{ 0x20,0x08,0x80,0xa8 }, { 0x80,0x80,0x80,0x80 },	/* ...1...1...0...0 */
		{ 0x80,0x80,0x80,0x80 }, { 0x20,0x08,0x80,0xa8 },	/* ...1...1...0...1 */
		{ 0xa0,0xa0,0x00,0x00 }, { 0xa0,0x88,0x88,0xa0 },	/* ...1...1...1...0 */
		{ 0x80,0x80,0x80,0x80 }, { 0x28,0xa0,0x00,0x88 }	/* ...1...1...1...1 */
	};


	sega_decode(xortable);
}


void nprinces_decode(void)
{
	static const unsigned char xortable[32][4] =
	{
		/*       opcode                   data                     address      */
		/*  A    B    C    D         A    B    C    D                           */
		{ 0x08,0x80,0x20,0xa8 }, { 0xa0,0x28,0xa0,0x28 },	/* ...0...0...0...0 */
		{ 0xa8,0xa8,0x08,0x08 }, { 0x88,0xa0,0xa0,0x88 },	/* ...0...0...0...1 */
		{ 0x88,0x88,0x28,0x28 }, { 0x28,0x00,0x88,0xa0 },	/* ...0...0...1...0 */
		{ 0x88,0xa0,0xa0,0x88 }, { 0x28,0x00,0x88,0xa0 },	/* ...0...0...1...1 */
		{ 0x88,0xa0,0xa0,0x88 }, { 0xa0,0x28,0xa0,0x28 },	/* ...0...1...0...0 */
		{ 0xa8,0xa8,0x08,0x08 }, { 0xa8,0xa8,0x08,0x08 },	/* ...0...1...0...1 */
		{ 0x88,0x88,0x28,0x28 }, { 0x88,0xa0,0xa0,0x88 },	/* ...0...1...1...0 */
		{ 0x88,0xa0,0xa0,0x88 }, { 0x88,0xa0,0xa0,0x88 },	/* ...0...1...1...1 */
		{ 0xa0,0x28,0xa0,0x28 }, { 0xa0,0x28,0xa0,0x28 },	/* ...1...0...0...0 */
		{ 0x08,0x80,0x20,0xa8 }, { 0x28,0x00,0x88,0xa0 },	/* ...1...0...0...1 */
		{ 0x88,0xa0,0xa0,0x88 }, { 0x88,0x88,0x28,0x28 },	/* ...1...0...1...0 */
		{ 0x88,0xa0,0xa0,0x88 }, { 0x28,0x00,0x88,0xa0 },	/* ...1...0...1...1 */
		{ 0x88,0xa0,0xa0,0x88 }, { 0x88,0xa0,0xa0,0x88 },	/* ...1...1...0...0 */
		{ 0x88,0xa0,0xa0,0x88 }, { 0x88,0xa0,0xa0,0x88 },	/* ...1...1...0...1 */
		{ 0x88,0x88,0x28,0x28 }, { 0x88,0x88,0x28,0x28 },	/* ...1...1...1...0 */
		{ 0x08,0x80,0x20,0xa8 }, { 0x28,0x00,0x88,0xa0 }	/* ...1...1...1...1 */
	};


	sega_decode(xortable);
}


void seganinj_decode(void)
{
	static const unsigned char xortable[32][4] =
	{
		/*       opcode                   data                     address      */
		/*  A    B    C    D         A    B    C    D                           */
		{ 0x88,0xa0,0xa0,0x88 }, { 0x88,0x00,0xa0,0x28 },	/* ...0...0...0...0 */
		{ 0x28,0xa0,0x28,0xa0 }, { 0xa0,0xa0,0xa0,0xa0 },	/* ...0...0...0...1 */
		{ 0xa8,0xa8,0x08,0x08 }, { 0xa8,0xa8,0x08,0x08 },	/* ...0...0...1...0 */
		{ 0x28,0xa0,0x28,0xa0 }, { 0xa0,0xa0,0xa0,0xa0 },	/* ...0...0...1...1 */
		{ 0x28,0x00,0x88,0xa0 }, { 0x28,0x00,0x88,0xa0 },	/* ...0...1...0...0 */
		{ 0x28,0xa0,0x28,0xa0 }, { 0x88,0x00,0xa0,0x28 },	/* ...0...1...0...1 */
		{ 0x28,0x00,0x88,0xa0 }, { 0x28,0x00,0x88,0xa0 },	/* ...0...1...1...0 */
		{ 0x28,0xa0,0x28,0xa0 }, { 0xa8,0xa8,0x08,0x08 },	/* ...0...1...1...1 */
		{ 0x88,0x00,0xa0,0x28 }, { 0x88,0xa0,0xa0,0x88 },	/* ...1...0...0...0 */
		{ 0xa0,0xa0,0xa0,0xa0 }, { 0x28,0xa0,0x28,0xa0 },	/* ...1...0...0...1 */
		{ 0xa8,0xa8,0x08,0x08 }, { 0x88,0xa0,0xa0,0x88 },	/* ...1...0...1...0 */
		{ 0xa8,0xa8,0x08,0x08 }, { 0x28,0xa0,0x28,0xa0 },	/* ...1...0...1...1 */
		{ 0x28,0x00,0x88,0xa0 }, { 0x88,0xa0,0xa0,0x88 },	/* ...1...1...0...0 */
		{ 0x28,0x00,0x88,0xa0 }, { 0x28,0x00,0x88,0xa0 },	/* ...1...1...0...1 */
		{ 0x88,0xa0,0xa0,0x88 }, { 0x88,0xa0,0xa0,0x88 },	/* ...1...1...1...0 */
		{ 0xa8,0xa8,0x08,0x08 }, { 0x28,0x00,0x88,0xa0 }	/* ...1...1...1...1 */
	};


	sega_decode(xortable);
}


void imsorry_decode(void)
{
	static const unsigned char xortable[32][4] =
	{
		/*       opcode                   data                     address      */
		/*  A    B    C    D         A    B    C    D                           */
		{ 0x88,0x00,0xa0,0x28 }, { 0x00,0x28,0xa0,0x88 },	/* ...0...0...0...0 */
		{ 0x00,0x28,0xa0,0x88 }, { 0x88,0x00,0xa0,0x28 },	/* ...0...0...0...1 */
		{ 0x88,0x00,0x88,0x00 }, { 0x00,0x28,0xa0,0x88 },	/* ...0...0...1...0 */
		{ 0x00,0x28,0xa0,0x88 }, { 0x88,0x00,0x88,0x00 },	/* ...0...0...1...1 */
		{ 0x00,0x28,0xa0,0x88 }, { 0x08,0x08,0xa8,0xa8 },	/* ...0...1...0...0 */
		{ 0x00,0x28,0xa0,0x88 }, { 0x20,0x20,0x80,0x80 },	/* ...0...1...0...1 */
		{ 0x20,0x20,0x80,0x80 }, { 0x00,0x28,0xa0,0x88 },	/* ...0...1...1...0 */
		{ 0x20,0x20,0x80,0x80 }, { 0x88,0x00,0x88,0x00 },	/* ...0...1...1...1 */
		{ 0x88,0x00,0xa0,0x28 }, { 0x08,0x08,0xa8,0xa8 },	/* ...1...0...0...0 */
		{ 0x08,0x08,0xa8,0xa8 }, { 0x88,0x00,0xa0,0x28 },	/* ...1...0...0...1 */
		{ 0x08,0x20,0x20,0x08 }, { 0x08,0x20,0x20,0x08 },	/* ...1...0...1...0 */
		{ 0x88,0x00,0xa0,0x28 }, { 0x08,0x20,0x20,0x08 },	/* ...1...0...1...1 */
		{ 0x08,0x20,0x20,0x08 }, { 0x08,0x08,0xa8,0xa8 },	/* ...1...1...0...0 */
		{ 0x08,0x20,0x20,0x08 }, { 0x20,0x20,0x80,0x80 },	/* ...1...1...0...1 */
		{ 0x20,0x20,0x80,0x80 }, { 0x08,0x20,0x20,0x08 },	/* ...1...1...1...0 */
		{ 0x20,0x20,0x80,0x80 }, { 0x08,0x20,0x20,0x08 }	/* ...1...1...1...1 */
	};


	sega_decode(xortable);
}


void teddybb_decode(void)
{
	static const unsigned char xortable[32][4] =
	{
		/*       opcode                   data                     address      */
		/*  A    B    C    D         A    B    C    D                           */
		{ 0x20,0x20,0x20,0x20 }, { 0x80,0x08,0x80,0x08 },	/* ...0...0...0...0 */
		{ 0x20,0x20,0x20,0x20 }, { 0xa0,0xa0,0x00,0x00 },	/* ...0...0...0...1 */
		{ 0x28,0x00,0x88,0xa0 }, { 0xa0,0x88,0x88,0xa0 },	/* ...0...0...1...0 */
		{ 0xa0,0xa0,0x00,0x00 }, { 0xa0,0x88,0x88,0xa0 },	/* ...0...0...1...1 */
		{ 0x20,0x20,0x20,0x20 }, { 0x28,0x00,0x88,0xa0 },	/* ...0...1...0...0 */
		{ 0xa0,0xa0,0x00,0x00 }, { 0xa0,0xa0,0x00,0x00 },	/* ...0...1...0...1 */
		{ 0xa0,0x88,0x88,0xa0 }, { 0x28,0x00,0x88,0xa0 },	/* ...0...1...1...0 */
		{ 0xa0,0xa0,0x00,0x00 }, { 0x28,0x00,0x88,0xa0 },	/* ...0...1...1...1 */
		{ 0x80,0x08,0x80,0x08 }, { 0x80,0x08,0x80,0x08 },	/* ...1...0...0...0 */
		{ 0xa0,0x28,0x88,0x00 }, { 0xa0,0xa0,0x00,0x00 },	/* ...1...0...0...1 */
		{ 0xa0,0x28,0x88,0x00 }, { 0xa0,0x88,0x88,0xa0 },	/* ...1...0...1...0 */
		{ 0xa0,0x88,0x88,0xa0 }, { 0xa0,0x88,0x88,0xa0 },	/* ...1...0...1...1 */
		{ 0x80,0x08,0x80,0x08 }, { 0x20,0x20,0x20,0x20 },	/* ...1...1...0...0 */
		{ 0xa0,0xa0,0x00,0x00 }, { 0xa0,0x28,0x88,0x00 },	/* ...1...1...0...1 */
		{ 0x80,0x08,0x80,0x08 }, { 0xa0,0x88,0x88,0xa0 },	/* ...1...1...1...0 */
		{ 0xa0,0xa0,0x00,0x00 }, { 0xa0,0x28,0x88,0x00 }	/* ...1...1...1...1 */
	};


	sega_decode(xortable);
}


void hvymetal_decode(void)
{
	static const unsigned char xortable[32][4] =
	{
		/*       opcode                   data                     address      */
		/*  A    B    C    D         A    B    C    D                           */
		{ 0x88,0xa0,0xa0,0x88 }, { 0xa0,0x88,0x88,0xa0 },	/* ...0...0...0...0 */
		{ 0x88,0xa0,0xa0,0x88 }, { 0x88,0x88,0x28,0x28 },	/* ...0...0...0...1 */
		{ 0xa0,0x88,0x88,0xa0 }, { 0x88,0xa0,0xa0,0x88 },	/* ...0...0...1...0 */
		{ 0x88,0xa0,0xa0,0x88 }, { 0x88,0x88,0x28,0x28 },	/* ...0...0...1...1 */
		{ 0xa0,0x88,0x88,0xa0 }, { 0x88,0x88,0x28,0x28 },	/* ...0...1...0...0 */
		{ 0x88,0x88,0x28,0x28 }, { 0x88,0x88,0x28,0x28 },	/* ...0...1...0...1 */
		{ 0xa0,0x88,0x88,0xa0 }, { 0x88,0x88,0x28,0x28 },	/* ...0...1...1...0 */
		{ 0x88,0x88,0x28,0x28 }, { 0x28,0x00,0x88,0xa0 },	/* ...0...1...1...1 */
		{ 0xa0,0x28,0x88,0x00 }, { 0x88,0xa0,0xa0,0x88 },	/* ...1...0...0...0 */
		{ 0xa0,0x28,0x88,0x00 }, { 0x88,0xa0,0xa0,0x88 },	/* ...1...0...0...1 */
		{ 0xa0,0x28,0x88,0x00 }, { 0x88,0xa0,0xa0,0x88 },	/* ...1...0...1...0 */
		{ 0x88,0xa0,0xa0,0x88 }, { 0x28,0x00,0x88,0xa0 },	/* ...1...0...1...1 */
		{ 0x28,0xa0,0x28,0xa0 }, { 0xa0,0x28,0x88,0x00 },	/* ...1...1...0...0 */
		{ 0xa0,0x28,0x88,0x00 }, { 0x28,0xa0,0x28,0xa0 },	/* ...1...1...0...1 */
		{ 0x28,0xa0,0x28,0xa0 }, { 0xa0,0x28,0x88,0x00 },	/* ...1...1...1...0 */
		{ 0x28,0x00,0x88,0xa0 }, { 0x28,0xa0,0x28,0xa0 }	/* ...1...1...1...1 */
	};


	sega_decode(xortable);
}


void myheroj_decode(void)
{
	static const unsigned char xortable[32][4] =
	{
		/*       opcode                   data                     address      */
		/*  A    B    C    D         A    B    C    D                           */
		{ 0x20,0x08,0x80,0xa8 }, { 0x80,0xa8,0xa8,0x80 },	/* ...0...0...0...0 */
		{ 0x20,0x08,0x80,0xa8 }, { 0x80,0xa8,0xa8,0x80 },	/* ...0...0...0...1 */
		{ 0xa8,0xa8,0xa8,0xa8 }, { 0xa8,0xa8,0xa8,0xa8 },	/* ...0...0...1...0 */
		{ 0x08,0x80,0x20,0xa8 }, { 0x80,0xa8,0xa8,0x80 },	/* ...0...0...1...1 */
		{ 0x20,0x08,0x80,0xa8 }, { 0x28,0xa0,0x28,0xa0 },	/* ...0...1...0...0 */
		{ 0x20,0x08,0x80,0xa8 }, { 0x08,0x80,0x20,0xa8 },	/* ...0...1...0...1 */
		{ 0x28,0xa0,0x28,0xa0 }, { 0xa8,0xa8,0xa8,0xa8 },	/* ...0...1...1...0 */
		{ 0x08,0x80,0x20,0xa8 }, { 0xa8,0xa8,0xa8,0xa8 },	/* ...0...1...1...1 */
		{ 0x28,0xa0,0x28,0xa0 }, { 0x20,0x08,0x80,0xa8 },	/* ...1...0...0...0 */
		{ 0x80,0xa8,0xa8,0x80 }, { 0x20,0x08,0x80,0xa8 },	/* ...1...0...0...1 */
		{ 0x80,0xa8,0xa8,0x80 }, { 0x80,0xa8,0xa8,0x80 },	/* ...1...0...1...0 */
		{ 0xa8,0xa8,0xa8,0xa8 }, { 0x80,0xa8,0xa8,0x80 },	/* ...1...0...1...1 */
		{ 0x88,0x88,0x28,0x28 }, { 0x88,0x88,0x28,0x28 },	/* ...1...1...0...0 */
		{ 0x88,0x88,0x28,0x28 }, { 0x08,0x80,0x20,0xa8 },	/* ...1...1...0...1 */
		{ 0x88,0x88,0x28,0x28 }, { 0xa8,0xa8,0xa8,0xa8 },	/* ...1...1...1...0 */
		{ 0x88,0x88,0x28,0x28 }, { 0xa8,0xa8,0xa8,0xa8 }	/* ...1...1...1...1 */
	};

	myheroj_unmangle();	/* additional address and data line swapping */
	sega_decode(xortable);
}


/******************************************************************************

  4D Warriors

  This encryption is quite different from the standard one. It is still
  a XOR scheme, but the value to use for the XOR is chosen differently, and
  the affected bits are D0, D2, D4 and D6 instead of D3, D5 and D7.

  The translation table depends on A0, A3, A6, A9, A12 and A14; however A0, A3
  and A6 only select some fixed additional XOR, so there are only 8 really
  different tables.

  There are no separate tables for data and opcodes: the opcodes are just XORed
  with an additional 0x40. To make it a little more complicated, however, data
  picks its XOR value not from the line given by the address but from the one
  below. For example if you are decoding a byte at address .1.0..1..0..1..0,
  you pick the XOR value as if you were at address .1.0..1..0..1..1 (note that
  I'm not talking about the rows of the xortable below, but of the "logical"
  ones which are generated by them with the additional fixed XORs selected by
  A0, A3 and A6).

******************************************************************************/

void fdwarrio_decode(void)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -