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

📄 toaplan1.c

📁 十七种模拟器源代码 非常有用的作课程设计不可缺少的
💻 C
📖 第 1 页 / 共 5 页
字号:
     ret = ReadWord(&tp1vcu[0].SCROLL[offset&0x0E]);     break;   default:     ret = 0x0000;#ifdef RAINE_DEBUG     print_debug("tp1vcu[0] rw(%04x)\n", offset&0x0E);#endif     break;   }      return ret;}static UINT8 tp1vcu_bg_rb(UINT32 offset){   UINT16 ret;   ret = tp1vcu_bg_rw(offset);   if((offset&1)==0)      return (UINT8) ((ret>>8)&0xFF);   else      return (UINT8) ((ret>>0)&0xFF);}/******************************************************************************//*  VBLANK/INTERRUPT THINGY                                                   *//******************************************************************************/static UINT32 want_int;static int x_ofs[4];static UINT8 tp_vblank_rb(UINT32 offset){   static UINT8 status;   switch(offset & 0x0E){   case 0x00:      status ^= 1;      return status;   break;   default:      return 0;   break;   }}static UINT16 tp_vblank_rw(UINT32 offset){   return (UINT16) (tp_vblank_rb(offset));}static void tp_vblank_wb(UINT32 offset, UINT8 data){   switch(offset & 0x0E){   case 0x02:     want_int = data & 1;      #ifdef RAINE_DEBUG      print_debug("want_int: %d\n", want_int);      #endif   break;   case 0x08:      x_ofs[0] = (data&0xFF) - 0xd8;   break;   case 0x0A:      x_ofs[1] = (data&0xFF) - 0x17;   break;   case 0x0C:      x_ofs[2] = (data&0xFF) - 0x88;   break;   case 0x0E:      x_ofs[3] = (data&0xFF) - 0x07;   break;   default:   break;   }}static void tp_vblank_ww(UINT32 offset, UINT16 data){   tp_vblank_wb(offset, (UINT8)(data&0xFF));}static int bg_x_ofs;static int bg_y_ofs;static void tp1vcu_ofsreg_ww(UINT32 offset, UINT16 data){  switch (offset & 6) {  case 0:    bg_x_ofs = data;    break;  case 2:    bg_y_ofs = data;    break;  case 6:    break;  default:  }}/******************************************************************************//*  Z80 CUSTOM (not dumped)                                                   *//******************************************************************************/static UINT8 vimana_z80_rb(UINT32 offset){   UINT16 ret;   offset |= 1;   switch(offset&0xFF){      case 0x01:                        // sound comm?         ret = 0xFF;      break;      case 0x03:                        // sound comm?         ret = 0x00;      break;      case 0x05:                        // credits         ret = 0x01;      break;      case 0x07:                        // dswa         ret = get_dsw(0);      break;      case 0x09:                        // misc input         ret = RAM[0x023003];      break;      case 0x0B:                        // p1 input	  ret = RAM[0x023004];      break;      case 0x0D:                        // p2 input         ret = RAM[0x023005];      break;      case 0x0F:                        // dswb         ret = get_dsw(1);      break;      case 0x11:                        // dswc         ret = get_dsw(2);      break;      default:         ret = 0x00;         #ifdef RAINE_DEBUG         print_debug("vimana_z80_rb(%04x)\n", offset&0xFF);         #endif      break;   }   return ret;}static UINT16 vimana_z80_rw(UINT32 offset){   return (UINT16) (vimana_z80_rb(offset|1));}static UINT8 fshark_z80_rb(UINT32 offset){   UINT16 ret;   offset |= 1;   switch(offset&0xFF){      case 0x01:                        // p1 controls	ret = RAM[0x023004];      break;      case 0x03:                        // p2 input         ret = RAM[0x023005];      break;      case 0x05:                        // dsw a         ret = get_dsw(0);      break;      case 0x07:                        // dswb         ret = get_dsw(1);      break;      case 0x09:                        // misc input         ret = RAM[0x023003];      break;      case 0x0B:                        // dsw c	ret = get_dsw(2) | 0x80;      break;      default:         ret = 0x00;         #ifdef RAINE_DEBUG         print_debug("fshark_z80_rb(%04x)\n", offset&0xFF);         #endif      break;   }   return ret;}static UINT16 fshark_z80_rw(UINT32 offset){   return (UINT16) (fshark_z80_rb(offset|1));}/******************************************************************************//*  Z80 NORMAL                                                                *//******************************************************************************/static UINT8 tp1_z80_rb(UINT32 offset){   offset  &= 0xFFF;   offset >>= 1;   return Z80ROM[0x8000 + offset];}static UINT16 tp1_z80_rw(UINT32 offset){   offset  &= 0xFFF;   offset >>= 1;   return (UINT16) (Z80ROM[0x8000 + offset]);}static void tp1_z80_wb(UINT32 offset, UINT8 data){   offset  &= 0xFFF;   offset >>= 1;   Z80ROM[0x8000 + offset] = data;}static void tp1_z80_ww(UINT32 offset, UINT16 data){   offset  &= 0xFFF;   offset >>= 1;   Z80ROM[0x8000 + offset] = (UINT8) (data&0xFF);}static UINT8 zero_wing_port_rb(UINT16 offset){   switch(offset&0xFF){      case 0x00:         return RAM[0x023004];      break;      case 0x08:         return RAM[0x023005];      break;      case 0x20:         return get_dsw(0);      break;      case 0x28:         return get_dsw(1);      break;      case 0x80:         return RAM[0x023003];      break;      case 0x88:         return get_dsw(2);      break;      case 0xA8:	return YM3812ReadZ80(0);      break;      default:         return 0x00;      break;   }}static void zero_wing_port_wb(UINT16 offset, UINT8 data){   switch(offset&0xFF){      case 0xA8:         YM3812WriteZ80(0,data);      break;      case 0xA9:         YM3812WriteZ80(1,data);      break;      default:      break;   }}static UINT8 demons_world_port_rb(UINT16 offset){   switch(offset&0xFF){      case 0x00:         return YM3812ReadZ80(0);      break;      case 0x20:         return get_dsw(2);      break;      case 0x60:         return RAM[0x023003];      break;      case 0x80:         return RAM[0x023004];      break;      case 0xA0:         return get_dsw(1);      break;      case 0xC0:         return RAM[0x023005];      break;      case 0xE0:         return get_dsw(0);      break;      default:         return 0xFF;      break;   }}static void demons_world_port_wb(UINT16 offset, UINT8 data){   switch(offset&0xFF){      case 0x00:         YM3812WriteZ80(0,data);      break;      case 0x01:         YM3812WriteZ80(1,data);      break;      default:      break;   }}static UINT8 truxton_port_rb(UINT16 offset){   switch(offset&0xFF){      case 0x00:         return RAM[0x023004];      break;      case 0x10:         return RAM[0x023005];      break;      case 0x20:         return RAM[0x023003];      break;      case 0x40:         return get_dsw(0);      break;      case 0x50:         return get_dsw(1);      break;      case 0x60:         return YM3812ReadZ80(0);      break;      case 0x70:         return get_dsw(2);      break;      default:         return 0xFF;      break;   }}static void truxton_port_wb(UINT16 offset, UINT8 data){   switch(offset&0xFF){   case 0x60:     YM3812WriteZ80(0,data);     break;   case 0x61:     YM3812WriteZ80(1,data);     break;   default:     break;   }}static UINT8 outzone_port_rb(UINT16 offset){   switch(offset&0xFF){      case 0x00:         return YM3812ReadZ80(0);      break;      case 0x08:         return get_dsw(0);      break;      case 0x0C:         return get_dsw(1);      break;      case 0x10:         return RAM[0x023003];      break;      case 0x14:         return RAM[0x023004];      break;      case 0x18:         return RAM[0x023005];      break;      case 0x1C:         return get_dsw(2);      break;      default:         return 0xFF;      break;   }}static void outzone_port_wb(UINT16 offset, UINT8 data){   switch(offset&0xFF){      case 0x00:         YM3812WriteZ80(0,data);      break;      case 0x01:         YM3812WriteZ80(1,data);      break;      default:      break;   }}static UINT8 hell_fire_port_rb(UINT16 offset){   switch(offset&0xFF){      case 0x00:         return get_dsw(0);      break;      case 0x10:         return get_dsw(1);      break;      case 0x20:         return get_dsw(2);      break;      case 0x40:

⌨️ 快捷键说明

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