亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? twincobr.c

?? 這個是延伸mame的在wince平臺下的游戲模擬器的代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/***************************************************************************

68000:

00000-2ffff ROM
30000-33fff RAM part of this (starting from 30000) is shared with the
                TI TMS320C10NL-14 protection microcontroller
40000-40fff RAM sprite character display properties (co-ordinates, character, color - etc)
50000-50dff Palette RAM
60000-60003 RAM
7a000-7abff RAM shared with Z80; 16-bit on this side, 8-bit on Z80 side

read:
78004       Player 1 Joystick and Buttons input port
78006       Player 2 Joystick and Buttons input port
78009       bit 7 vblank
7e000-7e005 read data from video RAM (see below)

write:
70000-70001 scroll   y   for character page (centre normally 0x01c9)
70002-70003 scroll < x > for character page (centre normally 0x00e2)
70004-70005 offset in character page to write character (7e000)

72000-72001 scroll   y   for foreground page (starts from     0x03c9)
72002-72003 scroll < x > for foreground page (centre normally 0x002a)
72004-72005 offset in character page to write character (7e002)

74000-74001 scroll   y   for background page (starts from     0x03c9)
74002-74003 scroll < x > for background page (centre normally 0x002a)
74004-74005 offset in character page to write character (7e004)

76000-76003 enable video ???
7800c       goes to the TI TMS320C10NL-14 protection microcontroller. Bit 0
            might be interrupt enable, but might also be a signal to the chip
            which then triggers the IRQ. The game writes 0c-0d in succession
            to this register when it expects the protection chip to do its
            work with the shared RAM at 30000.
7e000-7e001 data to write in text video RAM (70000)
7e002-7e003 data to write in bg video RAM (72004)
7e004-7e005 data to write in fg video RAM (74004)

Z80:
0000-7fff ROM
8000-87ff shared with 68000; 8-bit on this side, 16-bit on 68000 side

in:
00        YM3812 status
10        Coin inputs and control/service inputs
40        DSW1
50        DSW2

out:
00        YM3812 control
01        YM3812 data
20        ??

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

#include "driver.h"
#include "vidhrdw/generic.h"
#include "M68000/M68000.h"


static unsigned char *twincobr_sharedram;

static unsigned char *twincobr_60000_3;
void twincobr_70004_w(int offset,int data);
int twincobr_7e000_r(int offset);
void twincobr_7e000_w(int offset,int data);
void twincobr_72004_w(int offset,int data);
int twincobr_7e002_r(int offset);
void twincobr_7e002_w(int offset,int data);
void twincobr_74004_w(int offset,int data);
int twincobr_7e004_r(int offset);
void twincobr_7e004_w(int offset,int data);
void twincobr_txscroll_w(int offset,int data);
void twincobr_bgscroll_w(int offset,int data);
void twincobr_fgscroll_w(int offset,int data);
int twincobr_vh_start(void);
void twincobr_vh_stop(void);
void twincobr_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);



static int intenable;

int twincobr_interrupt(void)
{
	if (intenable) return MC68000_IRQ_4;
	else return MC68000_INT_NONE;
}


int twincobr_input_r(int offset)
{
	return readinputport(1 + offset / 2);
}

int twincobr_60000_3_r(int offset)
{
 unsigned short int temp6000x = 0;
 temp6000x = READ_WORD(&twincobr_60000_3[offset]);
 return temp6000x;
}
void twincobr_60000_3_w(int offset,int data)
{
 WRITE_WORD(&twincobr_60000_3[offset],data);
}



void twincobr_7800c_w(int offset,int data)
{
	intenable = data & 1;
}

int twincobr_sharedram_r(int offset)
{
	return twincobr_sharedram[offset / 2];
}

void twincobr_sharedram_w(int offset,int data)
{
	twincobr_sharedram[offset / 2] = data;
}

static unsigned char *ppp;
static int plap(int offset)
{
if (cpu_getpc() == 0x23a9e)
{
	WRITE_WORD(&ppp[0x0000],0x0000);
}
if (cpu_getpc() == 0x23aac)
{
	WRITE_WORD(&ppp[0x0000],0x0000);
}
if (cpu_getpc() == 0x23ad0)
{
	WRITE_WORD(&ppp[0x0000],0x0000);
}
if (cpu_getpc() == 0x23c1a)
{
	WRITE_WORD(&ppp[0x0000],0x0000);
}
if (cpu_getpc() == 0x23c3e)
{
	WRITE_WORD(&ppp[0x0000],0x0000);
}
if (cpu_getpc() == 0x23c62)
{
	WRITE_WORD(&ppp[0x0000],0x0000);
}
if (cpu_getpc() == 0x23c80)
{
	WRITE_WORD(&ppp[0x0000],0x0000);
	WRITE_WORD(&ppp[0x000e],0x0000);	/* ??? */
}
if (cpu_getpc() == 0x23cb6)
{
	WRITE_WORD(&ppp[0x0000],0x0000);
	WRITE_WORD(&ppp[0x000e],0x0076);
}
	return READ_WORD(&ppp[offset]);
}
static void plop(int offset,int data)
{
	COMBINE_WORD_MEM(&ppp[offset],data);
}

static struct MemoryReadAddress readmem[] =
{
	{ 0x000000, 0x02ffff, MRA_ROM },
	{ 0x030000, 0x03001f, plap },
	{ 0x030020, 0x033fff, MRA_BANK1 },
	{ 0x040000, 0x040fff, MRA_BANK2 },  /* sprite ram data */
    { 0x050000, 0x050dff, paletteram_word_r },
	{ 0x060000, 0x060003, twincobr_60000_3_r, &twincobr_60000_3 },
	{ 0x078004, 0x078007, twincobr_input_r },
	{ 0x078008, 0x07800b, input_port_0_r },	/* vblank??? */
	{ 0x07a000, 0x07abff, twincobr_sharedram_r },     /* 16-bit on 68000 side, 8-bit on Z80 side */
	{ 0x07e000, 0x07e001, twincobr_7e000_r },	/* data from text video RAM */
	{ 0x07e002, 0x07e003, twincobr_7e002_r },	/* data from bg video RAM */
	{ 0x07e004, 0x07e005, twincobr_7e004_r },	/* data from fg video RAM */
	{ -1 }	/* end of table */
};

static struct MemoryWriteAddress writemem[] =
{
	{ 0x000000, 0x02ffff, MWA_ROM },
	{ 0x030000, 0x03001f, plop, &ppp },
	{ 0x030020, 0x033fff, MWA_BANK1 },
	{ 0x040000, 0x040fff, MWA_BANK2, &spriteram, &spriteram_size },  /* sprite ram data */
    { 0x050000, 0x050dff, paletteram_xBBBBBGGGGGRRRRR_word_w, &paletteram },
	{ 0x060000, 0x060003, twincobr_60000_3_w, &twincobr_60000_3 },
	{ 0x070000, 0x070003, twincobr_txscroll_w },	/* scroll */
	{ 0x070004, 0x070005, twincobr_70004_w },	/* offset in text video RAM */
	{ 0x072000, 0x072003, twincobr_bgscroll_w },	/* scroll */
	{ 0x072004, 0x072005, twincobr_72004_w },	/* offset in bg video RAM */
	{ 0x074000, 0x074003, twincobr_fgscroll_w },	/* scroll */
	{ 0x074004, 0x074005, twincobr_74004_w },	/* offset in fg video RAM */
	{ 0x07800c, 0x07800f, twincobr_7800c_w },
	{ 0x07a000, 0x07abff, twincobr_sharedram_w },	/* 16-bit on 68000 side, 8-bit on Z80 side */
	{ 0x07e000, 0x07e001, twincobr_7e000_w },	/* data for text video RAM */
	{ 0x07e002, 0x07e003, twincobr_7e002_w },	/* data for bg video RAM */
	{ 0x07e004, 0x07e005, twincobr_7e004_w },	/* data for fg video RAM */
	{ -1 }	/* end of table */
};

static struct MemoryReadAddress sound_readmem[] =
{
	{ 0x0000, 0x7fff, MRA_ROM },
	{ 0x8000, 0x87ff, MRA_RAM },
	{ -1 }	/* end of table */
};

static struct MemoryWriteAddress sound_writemem[] =
{
	{ 0x0000, 0x7fff, MWA_ROM },
	{ 0x8000, 0x87ff, MWA_RAM, &twincobr_sharedram },
	{ -1 }	/* end of table */
};

static struct IOReadPort sound_readport[] =
{
	{ 0x00, 0x00, YM3812_status_port_0_r },
	{ 0x10, 0x10, input_port_3_r },
	{ 0x40, 0x40, input_port_4_r },
	{ 0x50, 0x50, input_port_5_r },
	{ -1 }	/* end of table */
};

static struct IOWritePort sound_writeport[] =
{
	{ 0x00, 0x00, YM3812_control_port_0_w },
	{ 0x01, 0x01, YM3812_write_port_0_w },
	{ -1 }	/* end of table */
};



INPUT_PORTS_START( input_ports )
	PORT_START
	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_VBLANK )     /* ? could be wrong */

	PORT_START
	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP | IPF_8WAY )
	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN | IPF_8WAY )
	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT | IPF_8WAY )
	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY )
	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 )
	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )

	PORT_START
	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER2 )
	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER2 )
	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER2 )
	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER2 )
	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 | IPF_PLAYER2 )
	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )

	PORT_START
	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_TILT )
	PORT_DIPNAME( 0x04, 0x00, "Cross Hatch Pattern", IP_KEY_NONE )
	PORT_DIPSETTING(    0x00, "Off" )
	PORT_DIPSETTING(    0x04, "On" )
	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN2 )
	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN3 )
	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START1 )
	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START2 )
	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )

	PORT_START      /* DSW1 */
	PORT_DIPNAME( 0x01, 0x00, "Unknown", IP_KEY_NONE )
	PORT_DIPSETTING(    0x00, "Off" )
	PORT_DIPSETTING(    0x01, "On" )
	PORT_DIPNAME( 0x02, 0x00, "Flip Screen", IP_KEY_NONE )
	PORT_DIPSETTING(    0x00, "Off" )
	PORT_DIPSETTING(    0x02, "On" )
	PORT_DIPNAME( 0x04, 0x00, "Cross Hatch Pattern", IP_KEY_NONE )
	PORT_DIPSETTING(    0x00, "Off" )
	PORT_DIPSETTING(    0x04, "On" )
	PORT_DIPNAME( 0x08, 0x00, "Demo Sounds", IP_KEY_NONE )
	PORT_DIPSETTING(    0x08, "Off" )
	PORT_DIPSETTING(    0x00, "On" )
	PORT_DIPNAME( 0x30, 0x00, "Coin A", IP_KEY_NONE )
	PORT_DIPSETTING(    0x30, "4 Coins/1 Credit" )
	PORT_DIPSETTING(    0x20, "3 Coins/1 Credit" )
	PORT_DIPSETTING(    0x10, "2 Coins/1 Credit" )
	PORT_DIPSETTING(    0x00, "1 Coin/1 Credit" )
	PORT_DIPNAME( 0xc0, 0x00, "Coin B", IP_KEY_NONE )
	PORT_DIPSETTING(    0x00, "1 Coin/2 Credits" )
	PORT_DIPSETTING(    0x40, "1 Coin/3 Credits" )
	PORT_DIPSETTING(    0x80, "1 Coin/4 Credits" )
	PORT_DIPSETTING(    0xc0, "1 Coin/6 Credits" )

	PORT_START      /* DSW2 */
	PORT_DIPNAME( 0x03, 0x00, "Difficulty", IP_KEY_NONE )
	PORT_DIPSETTING(    0x01, "Easy" )
	PORT_DIPSETTING(    0x00, "Normal" )
	PORT_DIPSETTING(    0x02, "Hard" )
	PORT_DIPSETTING(    0x03, "Hardest" )
	PORT_DIPNAME( 0x0c, 0x00, "Bonus Life", IP_KEY_NONE )
	PORT_DIPSETTING(    0x00, "50000 & every 150000" )
	PORT_DIPSETTING(    0x04, "70000 & every 200000" )
	PORT_DIPSETTING(    0x08, "50000" )
	PORT_DIPSETTING(    0x0c, "100000" )
	PORT_DIPNAME( 0x30, 0x00, "Lives", IP_KEY_NONE )
	PORT_DIPSETTING(    0x30, "2" )
	PORT_DIPSETTING(    0x00, "3" )
	PORT_DIPSETTING(    0x20, "4" )
	PORT_DIPSETTING(    0x10, "5" )
	PORT_DIPNAME( 0x40, 0x00, "Show DIP SW Settings", IP_KEY_NONE )
	PORT_DIPSETTING(    0x00, "No" )
	PORT_DIPSETTING(    0x40, "Yes" )
	PORT_DIPNAME( 0x80, 0x00, "Unknown", IP_KEY_NONE )
	PORT_DIPSETTING(    0x00, "Off" )
	PORT_DIPSETTING(    0x80, "On" )
INPUT_PORTS_END



static struct GfxLayout charlayout =
{
	8,8,	/* 8*8 characters */
	2048,	/* 2048 characters */
	3,	/* 3 bits per pixel */
	{ 0*2048*8*8, 1*2048*8*8, 2*2048*8*8 }, /* the bitplanes are separated */
	{ 0, 1, 2, 3, 4, 5, 6, 7 },
	{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
	8*8	/* every char takes 8 consecutive bytes */
};

static struct GfxLayout fgtilelayout =
{
	8,8,	/* 8*8 tiles */
	8192,	/* 8192 tiles */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久99精品久久只有精品| 成人午夜又粗又硬又大| 亚洲三级电影全部在线观看高清| 欧美一区在线视频| 欧美人体做爰大胆视频| 7777精品伊人久久久大香线蕉| 欧美亚洲国产怡红院影院| 91婷婷韩国欧美一区二区| 成人国产精品免费观看动漫| 国产成人在线看| 99久久精品免费观看| 色国产精品一区在线观看| 在线观看av一区二区| 欧美精品一卡两卡| 欧美日韩精品久久久| 欧美精品一区二区三区在线| 精品久久久久久久久久久久包黑料| 欧美一区二区三区不卡| 久久日韩粉嫩一区二区三区 | 韩国av一区二区三区在线观看| 免费在线欧美视频| 亚洲伦理在线精品| 天堂va蜜桃一区二区三区漫画版| 天堂在线亚洲视频| 国产米奇在线777精品观看| av一区二区三区在线| k8久久久一区二区三区| 色婷婷一区二区三区四区| 制服.丝袜.亚洲.另类.中文 | 91色视频在线| 日韩一卡二卡三卡四卡| 欧美—级在线免费片| 亚洲大片精品永久免费| 国产精品主播直播| 在线观看www91| 国产欧美日韩三区| 亚洲18影院在线观看| 国产精品一区二区免费不卡 | 久草在线在线精品观看| av亚洲精华国产精华精华| 制服丝袜亚洲精品中文字幕| 国产拍揄自揄精品视频麻豆| 午夜精品久久久久影视| 久草这里只有精品视频| 国产成人亚洲精品青草天美| 欧美日韩一区二区在线观看视频| 精品少妇一区二区| 亚洲高清免费一级二级三级| 国产九色sp调教91| 在线电影一区二区三区| 亚洲视频 欧洲视频| 国产精品一二三在| 日韩欧美你懂的| 亚洲国产日韩一区二区| 91在线观看污| 久久久三级国产网站| 日韩国产高清影视| 欧日韩精品视频| 亚洲啪啪综合av一区二区三区| 久久超碰97中文字幕| 欧美伦理视频网站| 亚洲综合清纯丝袜自拍| 91麻豆蜜桃一区二区三区| 国产精品久久久久久久久免费丝袜 | 国产精品一区在线| 日韩一区二区精品在线观看| 亚洲精品自拍动漫在线| 成人亚洲精品久久久久软件| 久久一日本道色综合| 精品一区二区三区免费观看| 欧美一区二区在线播放| 天天操天天综合网| 91精品国产综合久久小美女| 日本视频一区二区| 777色狠狠一区二区三区| 婷婷久久综合九色国产成人| 欧美精品电影在线播放| 日韩综合小视频| 欧美电影免费观看完整版| 免费在线观看视频一区| 精品国产免费视频| 国产一区二区三区视频在线播放| 久久综合久久鬼色中文字| 国产精品小仙女| 欧美国产欧美亚州国产日韩mv天天看完整| 国产在线精品不卡| 国产精品日日摸夜夜摸av| av成人老司机| 亚洲国产精品一区二区久久恐怖片| 欧美亚男人的天堂| 日韩中文字幕av电影| 日韩欧美在线不卡| 国产成人精品免费一区二区| 亚洲同性gay激情无套| 91国偷自产一区二区三区观看 | 亚洲精品高清视频在线观看| 色屁屁一区二区| 婷婷综合另类小说色区| 日韩精品一区二区在线观看| 国产成人免费在线观看不卡| 国产精品午夜在线| 国产99久久久国产精品潘金网站| 国产偷国产偷亚洲高清人白洁| 国产成人亚洲精品狼色在线 | 91麻豆精品国产91| 久久99精品国产麻豆不卡| 久久视频一区二区| 不卡的av在线| 亚洲高清视频的网址| 久久夜色精品一区| 99re亚洲国产精品| 日韩精品一二三区| 精品国产污网站| 波多野结衣中文一区| 五月天激情小说综合| 久久女同性恋中文字幕| 在线精品视频一区二区| 国产麻豆日韩欧美久久| 亚洲精品v日韩精品| 欧美一级二级三级蜜桃| www.欧美精品一二区| 青青草国产成人av片免费| 欧美激情在线看| 3atv一区二区三区| av午夜精品一区二区三区| 日韩激情av在线| 国产精品视频在线看| 欧美大度的电影原声| 欧美日韩精品久久久| 94色蜜桃网一区二区三区| 久久国产精品99久久久久久老狼| 亚洲黄色免费网站| 国产精品成人网| 久久精品综合网| 欧美电影免费观看高清完整版在线观看| 91丨porny丨中文| 成人国产精品免费观看动漫| 国产一区啦啦啦在线观看| 日本不卡中文字幕| 偷拍亚洲欧洲综合| 亚洲第一福利一区| 一区二区三区波多野结衣在线观看 | 欧美一级黄色片| 欧美日韩一区二区不卡| 欧美伊人久久久久久久久影院| 成人a级免费电影| 成人天堂资源www在线| 亚洲视频在线一区| 国产精品久久久99| 亚洲国产精品99久久久久久久久| 精品久久久久久综合日本欧美| 欧美精品日日鲁夜夜添| 欧美精品一级二级| 欧美三级资源在线| 欧美精品第一页| 日韩精品一区二区三区视频| 欧美α欧美αv大片| 精品av综合导航| 国产亚洲成av人在线观看导航| 久久久国产综合精品女国产盗摄| 精品1区2区在线观看| 久久久久国产精品厨房| 国产精品免费看片| 一区二区三区四区在线免费观看 | 日韩一区二区三区在线视频| 日韩三级视频在线观看| 精品美女一区二区| 国产视频在线观看一区二区三区 | 国产女主播视频一区二区| 欧洲精品在线观看| 欧美日韩国产一级| 91精品国产综合久久福利| 欧美xxxxxxxx| 国产亚洲美州欧州综合国| 中文字幕一区二| 性做久久久久久免费观看欧美| 日韩 欧美一区二区三区| 免费视频最近日韩| 高清免费成人av| 91国偷自产一区二区开放时间| 欧美午夜电影在线播放| 精品少妇一区二区三区视频免付费 | 精品国产青草久久久久福利| 色综合久久久久久久久久久| 色老头久久综合| 欧美日韩高清影院| 日韩欧美视频一区| 2023国产精华国产精品| 中文字幕一区三区| 亚洲制服丝袜在线| 久久成人免费电影| 色欧美乱欧美15图片| 91精品国产色综合久久| 亚洲欧美综合色| 久久精品国产亚洲aⅴ| 99久久精品99国产精品| 日韩精品综合一本久道在线视频| 国产精品欧美一区二区三区| 亚洲va在线va天堂| 播五月开心婷婷综合|