trunk/src/mame/drivers/asuka.c
| r23697 | r23698 | |
| 328 | 328 | AM_RANGE(0x800c00, 0x800c01) AM_WRITE(bonzeadv_cchip_bank_w) |
| 329 | 329 | AM_RANGE(0xc00000, 0xc0ffff) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_word_r, tc0100scn_word_w) /* tilemaps */ |
| 330 | 330 | AM_RANGE(0xc20000, 0xc2000f) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w) |
| 331 | | AM_RANGE(0xd00000, 0xd03fff) AM_DEVREADWRITE_LEGACY("pc090oj", pc090oj_word_r, pc090oj_word_w) /* sprite ram */ |
| 331 | AM_RANGE(0xd00000, 0xd03fff) AM_DEVREADWRITE("pc090oj", pc090oj_device, word_r, word_w) /* sprite ram */ |
| 332 | 332 | ADDRESS_MAP_END |
| 333 | 333 | |
| 334 | 334 | static ADDRESS_MAP_START( asuka_map, AS_PROGRAM, 16, asuka_state ) |
| r23697 | r23698 | |
| 343 | 343 | AM_RANGE(0xc00000, 0xc0ffff) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_word_r, tc0100scn_word_w) /* tilemaps */ |
| 344 | 344 | AM_RANGE(0xc10000, 0xc103ff) AM_WRITENOP /* error in Asuka init code */ |
| 345 | 345 | AM_RANGE(0xc20000, 0xc2000f) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w) |
| 346 | | AM_RANGE(0xd00000, 0xd03fff) AM_DEVREADWRITE_LEGACY("pc090oj", pc090oj_word_r, pc090oj_word_w) /* sprite ram */ |
| 346 | AM_RANGE(0xd00000, 0xd03fff) AM_DEVREADWRITE("pc090oj", pc090oj_device, word_r, word_w) /* sprite ram */ |
| 347 | 347 | ADDRESS_MAP_END |
| 348 | 348 | |
| 349 | 349 | static ADDRESS_MAP_START( cadash_map, AS_PROGRAM, 16, asuka_state ) |
| r23697 | r23698 | |
| 355 | 355 | AM_RANGE(0x800000, 0x800fff) AM_READWRITE(cadash_share_r,cadash_share_w) /* network ram */ |
| 356 | 356 | AM_RANGE(0x900000, 0x90000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff) |
| 357 | 357 | AM_RANGE(0xa00000, 0xa0000f) AM_DEVREADWRITE_LEGACY("tc0110pcr", tc0110pcr_word_r, tc0110pcr_step1_4bpg_word_w) |
| 358 | | AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE_LEGACY("pc090oj", pc090oj_word_r, pc090oj_word_w) /* sprite ram */ |
| 358 | AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("pc090oj", pc090oj_device, word_r, word_w) /* sprite ram */ |
| 359 | 359 | AM_RANGE(0xc00000, 0xc0ffff) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_word_r, tc0100scn_word_w) /* tilemaps */ |
| 360 | 360 | AM_RANGE(0xc20000, 0xc2000f) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w) |
| 361 | 361 | ADDRESS_MAP_END |
| r23697 | r23698 | |
| 369 | 369 | AM_RANGE(0x4a0000, 0x4a0003) AM_WRITE(asuka_spritectrl_w) |
| 370 | 370 | AM_RANGE(0x4e0000, 0x4e0001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, tc0140syt_port_w, 0x00ff) |
| 371 | 371 | AM_RANGE(0x4e0002, 0x4e0003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, tc0140syt_comm_r, tc0140syt_comm_w, 0x00ff) |
| 372 | | AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE_LEGACY("pc090oj", pc090oj_word_r, pc090oj_word_w) /* sprite ram */ |
| 372 | AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("pc090oj", pc090oj_device, word_r, word_w) /* sprite ram */ |
| 373 | 373 | AM_RANGE(0xc00000, 0xc0ffff) AM_DEVWRITE_LEGACY("tc0100scn", tc0100scn_word_w) |
| 374 | 374 | AM_RANGE(0xd00000, 0xd0ffff) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_word_r, tc0100scn_word_w) /* tilemaps */ |
| 375 | 375 | AM_RANGE(0xd20000, 0xd2000f) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w) |
| r23697 | r23698 | |
| 859 | 859 | // rising edge |
| 860 | 860 | if (state) |
| 861 | 861 | { |
| 862 | | pc090oj_eof_callback(m_pc090oj); |
| 862 | m_pc090oj->eof_callback(); |
| 863 | 863 | } |
| 864 | 864 | } |
| 865 | 865 | |
trunk/src/mame/video/taitoic.c
| r23697 | r23698 | |
| 990 | 990 | /* */ |
| 991 | 991 | /***************************************************************************/ |
| 992 | 992 | |
| 993 | | struct pc090oj_state |
| 994 | | { |
| 995 | | /* NB: pc090oj_ctrl is the internal register controlling flipping |
| 996 | 993 | |
| 997 | | pc090oj_sprite_ctrl is a representation of the hardware OUTSIDE the pc090oj |
| 998 | | which impacts on sprite plotting, and which varies between games. It |
| 999 | | includes color banking and (optionally) priority. It allows each game to |
| 1000 | | control these aspects of the sprites in different ways, while keeping the |
| 1001 | | routines here modular. |
| 994 | #define PC090OJ_RAM_SIZE 0x4000 |
| 995 | #define PC090OJ_ACTIVE_RAM_SIZE 0x800 |
| 1002 | 996 | |
| 1003 | | */ |
| 1004 | 997 | |
| 1005 | | UINT16 ctrl, buffer, gfxnum; |
| 1006 | | UINT16 sprite_ctrl; |
| 1007 | 998 | |
| 1008 | | UINT16 * ram; |
| 1009 | | UINT16 * ram_buffered; |
| 999 | /***************************************************************************** |
| 1000 | DEVICE INTERFACE |
| 1001 | *****************************************************************************/ |
| 1010 | 1002 | |
| 1011 | | int xoffs, yoffs; |
| 1012 | | }; |
| 1013 | 1003 | |
| 1014 | | #define PC090OJ_RAM_SIZE 0x4000 |
| 1015 | | #define PC090OJ_ACTIVE_RAM_SIZE 0x800 |
| 1016 | 1004 | |
| 1017 | | /***************************************************************************** |
| 1018 | | INLINE FUNCTIONS |
| 1019 | | *****************************************************************************/ |
| 1005 | const device_type PC090OJ = &device_creator<pc090oj_device>; |
| 1020 | 1006 | |
| 1021 | | INLINE pc090oj_state *pc090oj_get_safe_token( device_t *device ) |
| 1007 | pc090oj_device::pc090oj_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 1008 | : device_t(mconfig, PC090OJ, "Taito PC090OJ", tag, owner, clock) |
| 1022 | 1009 | { |
| 1023 | | assert(device != NULL); |
| 1024 | | assert(device->type() == PC090OJ); |
| 1010 | } |
| 1025 | 1011 | |
| 1026 | | return (pc090oj_state *)downcast<pc090oj_device *>(device)->token(); |
| 1012 | //------------------------------------------------- |
| 1013 | // device_config_complete - perform any |
| 1014 | // operations now that the configuration is |
| 1015 | // complete |
| 1016 | //------------------------------------------------- |
| 1017 | |
| 1018 | void pc090oj_device::device_config_complete() |
| 1019 | { |
| 1020 | // inherit a copy of the static data |
| 1021 | const pc090oj_interface *intf = reinterpret_cast<const pc090oj_interface *>(static_config()); |
| 1022 | if (intf != NULL) |
| 1023 | *static_cast<pc090oj_interface *>(this) = *intf; |
| 1024 | |
| 1025 | // or initialize to defaults if none provided |
| 1026 | else |
| 1027 | { |
| 1028 | } |
| 1027 | 1029 | } |
| 1028 | 1030 | |
| 1029 | | INLINE const pc090oj_interface *pc090oj_get_interface( device_t *device ) |
| 1031 | //------------------------------------------------- |
| 1032 | // device_start - device-specific startup |
| 1033 | //------------------------------------------------- |
| 1034 | |
| 1035 | void pc090oj_device::device_start() |
| 1030 | 1036 | { |
| 1031 | | assert(device != NULL); |
| 1032 | | assert((device->type() == PC090OJ)); |
| 1033 | | return (const pc090oj_interface *) device->static_config(); |
| 1037 | m_ram = auto_alloc_array_clear(machine(), UINT16, PC090OJ_RAM_SIZE / 2); |
| 1038 | m_ram_buffered = auto_alloc_array_clear(machine(), UINT16, PC090OJ_RAM_SIZE / 2); |
| 1039 | |
| 1040 | save_pointer(NAME(m_ram), PC090OJ_RAM_SIZE / 2); |
| 1041 | save_pointer(NAME(m_ram_buffered), PC090OJ_RAM_SIZE / 2); |
| 1042 | save_item(NAME(m_ctrl)); |
| 1043 | save_item(NAME(m_sprite_ctrl)); // should this be set in intf?!? |
| 1034 | 1044 | } |
| 1035 | 1045 | |
| 1046 | //------------------------------------------------- |
| 1047 | // device_reset - device-specific reset |
| 1048 | //------------------------------------------------- |
| 1049 | |
| 1050 | void pc090oj_device::device_reset() |
| 1051 | { |
| 1052 | m_ctrl = 0; |
| 1053 | } |
| 1054 | |
| 1036 | 1055 | /***************************************************************************** |
| 1037 | 1056 | DEVICE HANDLERS |
| 1038 | 1057 | *****************************************************************************/ |
| 1039 | 1058 | |
| 1040 | | void pc090oj_set_sprite_ctrl( device_t *device, UINT16 sprctrl ) |
| 1059 | void pc090oj_device::set_sprite_ctrl( UINT16 sprctrl ) |
| 1041 | 1060 | { |
| 1042 | | pc090oj_state *pc090oj = pc090oj_get_safe_token(device); |
| 1043 | | pc090oj->sprite_ctrl = sprctrl; |
| 1061 | m_sprite_ctrl = sprctrl; |
| 1044 | 1062 | } |
| 1045 | 1063 | |
| 1046 | | READ16_DEVICE_HANDLER( pc090oj_word_r ) |
| 1064 | READ16_MEMBER( pc090oj_device::word_r ) |
| 1047 | 1065 | { |
| 1048 | | pc090oj_state *pc090oj = pc090oj_get_safe_token(device); |
| 1049 | | return pc090oj->ram[offset]; |
| 1066 | return m_ram[offset]; |
| 1050 | 1067 | } |
| 1051 | 1068 | |
| 1052 | | WRITE16_DEVICE_HANDLER( pc090oj_word_w ) |
| 1069 | WRITE16_MEMBER( pc090oj_device::word_w ) |
| 1053 | 1070 | { |
| 1054 | | pc090oj_state *pc090oj = pc090oj_get_safe_token(device); |
| 1055 | | COMBINE_DATA(&pc090oj->ram[offset]); |
| 1071 | COMBINE_DATA(&m_ram[offset]); |
| 1056 | 1072 | |
| 1057 | 1073 | /* If we're not buffering sprite ram, write it straight through... */ |
| 1058 | | if (!pc090oj->buffer) |
| 1059 | | pc090oj->ram_buffered[offset] = pc090oj->ram[offset]; |
| 1074 | if (!m_use_buffer) |
| 1075 | m_ram_buffered[offset] = m_ram[offset]; |
| 1060 | 1076 | |
| 1061 | 1077 | if (offset == 0xdff) |
| 1062 | 1078 | { |
| 1063 | 1079 | /* Bit 0 is flip control, others seem unused */ |
| 1064 | | pc090oj->ctrl = data; |
| 1080 | m_ctrl = data; |
| 1065 | 1081 | |
| 1066 | 1082 | #if 0 |
| 1067 | 1083 | popmessage("pc090oj ctrl = %4x", data); |
| r23697 | r23698 | |
| 1069 | 1085 | } |
| 1070 | 1086 | } |
| 1071 | 1087 | |
| 1072 | | void pc090oj_eof_callback( device_t *device ) |
| 1088 | void pc090oj_device::eof_callback( ) |
| 1073 | 1089 | { |
| 1074 | | pc090oj_state *pc090oj = pc090oj_get_safe_token(device); |
| 1075 | | if (pc090oj->buffer) |
| 1090 | if (m_use_buffer) |
| 1076 | 1091 | { |
| 1077 | 1092 | int i; |
| 1078 | 1093 | for (i = 0; i < PC090OJ_ACTIVE_RAM_SIZE / 2; i++) |
| 1079 | | pc090oj->ram_buffered[i] = pc090oj->ram[i]; |
| 1094 | m_ram_buffered[i] = m_ram[i]; |
| 1080 | 1095 | } |
| 1081 | 1096 | } |
| 1082 | 1097 | |
| 1083 | 1098 | |
| 1084 | | void pc090oj_draw_sprites( device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri_type ) |
| 1099 | void pc090oj_device::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, int pri_type ) |
| 1085 | 1100 | { |
| 1086 | | pc090oj_state *pc090oj = pc090oj_get_safe_token(device); |
| 1087 | 1101 | int offs, priority = 0; |
| 1088 | | int sprite_colbank = (pc090oj->sprite_ctrl & 0xf) << 4; /* top nibble */ |
| 1102 | int sprite_colbank = (m_sprite_ctrl & 0xf) << 4; /* top nibble */ |
| 1089 | 1103 | |
| 1090 | 1104 | switch (pri_type) |
| 1091 | 1105 | { |
| r23697 | r23698 | |
| 1098 | 1112 | break; |
| 1099 | 1113 | |
| 1100 | 1114 | case 0x02: |
| 1101 | | priority = pc090oj->sprite_ctrl >> 15; /* variable sprite/tile priority */ |
| 1115 | priority = m_sprite_ctrl >> 15; /* variable sprite/tile priority */ |
| 1102 | 1116 | } |
| 1103 | 1117 | |
| 1104 | 1118 | for (offs = 0; offs < PC090OJ_ACTIVE_RAM_SIZE / 2; offs += 4) |
| r23697 | r23698 | |
| 1107 | 1121 | int x, y; |
| 1108 | 1122 | int data, code, color; |
| 1109 | 1123 | |
| 1110 | | data = pc090oj->ram_buffered[offs]; |
| 1124 | data = m_ram_buffered[offs]; |
| 1111 | 1125 | flipy = (data & 0x8000) >> 15; |
| 1112 | 1126 | flipx = (data & 0x4000) >> 14; |
| 1113 | 1127 | color = (data & 0x000f) | sprite_colbank; |
| 1114 | 1128 | |
| 1115 | | code = pc090oj->ram_buffered[offs + 2] & 0x1fff; |
| 1116 | | x = pc090oj->ram_buffered[offs + 3] & 0x1ff; /* mask verified with Rainbowe board */ |
| 1117 | | y = pc090oj->ram_buffered[offs + 1] & 0x1ff; /* mask verified with Rainbowe board */ |
| 1129 | code = m_ram_buffered[offs + 2] & 0x1fff; |
| 1130 | x = m_ram_buffered[offs + 3] & 0x1ff; /* mask verified with Rainbowe board */ |
| 1131 | y = m_ram_buffered[offs + 1] & 0x1ff; /* mask verified with Rainbowe board */ |
| 1118 | 1132 | |
| 1119 | 1133 | /* treat coords as signed */ |
| 1120 | 1134 | if (x > 0x140) x -= 0x200; |
| 1121 | 1135 | if (y > 0x140) y -= 0x200; |
| 1122 | 1136 | |
| 1123 | | if (!(pc090oj->ctrl & 1)) /* sprites flipscreen */ |
| 1137 | if (!(m_ctrl & 1)) /* sprites flipscreen */ |
| 1124 | 1138 | { |
| 1125 | 1139 | x = 320 - x - 16; |
| 1126 | 1140 | y = 256 - y - 16; |
| r23697 | r23698 | |
| 1128 | 1142 | flipy = !flipy; |
| 1129 | 1143 | } |
| 1130 | 1144 | |
| 1131 | | x += pc090oj->xoffs; |
| 1132 | | y += pc090oj->yoffs; |
| 1145 | x += m_x_offset; |
| 1146 | y += m_y_offset; |
| 1133 | 1147 | |
| 1134 | | pdrawgfx_transpen(bitmap,cliprect,device->machine().gfx[pc090oj->gfxnum], |
| 1148 | pdrawgfx_transpen(bitmap,cliprect,machine().gfx[m_gfxnum], |
| 1135 | 1149 | code, |
| 1136 | 1150 | color, |
| 1137 | 1151 | flipx,flipy, |
| 1138 | 1152 | x,y, |
| 1139 | | device->machine().priority_bitmap, |
| 1153 | machine().priority_bitmap, |
| 1140 | 1154 | priority ? 0xfc : 0xf0,0); |
| 1141 | 1155 | } |
| 1142 | 1156 | } |
| 1143 | 1157 | |
| 1144 | 1158 | |
| 1145 | | /***************************************************************************** |
| 1146 | | DEVICE INTERFACE |
| 1147 | | *****************************************************************************/ |
| 1148 | 1159 | |
| 1149 | | static DEVICE_START( pc090oj ) |
| 1150 | | { |
| 1151 | | pc090oj_state *pc090oj = pc090oj_get_safe_token(device); |
| 1152 | | const pc090oj_interface *intf = pc090oj_get_interface(device); |
| 1153 | | |
| 1154 | | /* use the given gfx set */ |
| 1155 | | pc090oj->gfxnum = intf->gfxnum; |
| 1156 | | |
| 1157 | | pc090oj->xoffs = intf->x_offset; |
| 1158 | | pc090oj->yoffs = intf->y_offset; |
| 1159 | | |
| 1160 | | pc090oj->buffer = intf->use_buffer; |
| 1161 | | |
| 1162 | | |
| 1163 | | pc090oj->ram = auto_alloc_array_clear(device->machine(), UINT16, PC090OJ_RAM_SIZE / 2); |
| 1164 | | pc090oj->ram_buffered = auto_alloc_array_clear(device->machine(), UINT16, PC090OJ_RAM_SIZE / 2); |
| 1165 | | |
| 1166 | | device->save_pointer(NAME(pc090oj->ram), PC090OJ_RAM_SIZE / 2); |
| 1167 | | device->save_pointer(NAME(pc090oj->ram_buffered), PC090OJ_RAM_SIZE / 2); |
| 1168 | | device->save_item(NAME(pc090oj->ctrl)); |
| 1169 | | device->save_item(NAME(pc090oj->sprite_ctrl)); // should this be set in intf?!? |
| 1170 | | } |
| 1171 | | |
| 1172 | | static DEVICE_RESET( pc090oj ) |
| 1173 | | { |
| 1174 | | pc090oj_state *pc090oj = pc090oj_get_safe_token(device); |
| 1175 | | |
| 1176 | | pc090oj->ctrl = 0; |
| 1177 | | } |
| 1178 | | |
| 1179 | | const device_type PC090OJ = &device_creator<pc090oj_device>; |
| 1180 | | |
| 1181 | | pc090oj_device::pc090oj_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 1182 | | : device_t(mconfig, PC090OJ, "Taito PC090OJ", tag, owner, clock) |
| 1183 | | { |
| 1184 | | m_token = global_alloc_clear(pc090oj_state); |
| 1185 | | } |
| 1186 | | |
| 1187 | | //------------------------------------------------- |
| 1188 | | // device_config_complete - perform any |
| 1189 | | // operations now that the configuration is |
| 1190 | | // complete |
| 1191 | | //------------------------------------------------- |
| 1192 | | |
| 1193 | | void pc090oj_device::device_config_complete() |
| 1194 | | { |
| 1195 | | } |
| 1196 | | |
| 1197 | | //------------------------------------------------- |
| 1198 | | // device_start - device-specific startup |
| 1199 | | //------------------------------------------------- |
| 1200 | | |
| 1201 | | void pc090oj_device::device_start() |
| 1202 | | { |
| 1203 | | DEVICE_START_NAME( pc090oj )(this); |
| 1204 | | } |
| 1205 | | |
| 1206 | | //------------------------------------------------- |
| 1207 | | // device_reset - device-specific reset |
| 1208 | | //------------------------------------------------- |
| 1209 | | |
| 1210 | | void pc090oj_device::device_reset() |
| 1211 | | { |
| 1212 | | DEVICE_RESET_NAME( pc090oj )(this); |
| 1213 | | } |
| 1214 | | |
| 1215 | | |
| 1216 | 1160 | /***************************************************************************/ |
| 1217 | 1161 | /* */ |
| 1218 | 1162 | /* TC0080VCO */ |
trunk/src/mame/video/taitoic.h
| r23697 | r23698 | |
| 27 | 27 | |
| 28 | 28 | struct pc090oj_interface |
| 29 | 29 | { |
| 30 | | int gfxnum; |
| 30 | int m_gfxnum; |
| 31 | 31 | |
| 32 | | int x_offset, y_offset; |
| 33 | | int use_buffer; |
| 32 | int m_x_offset, m_y_offset; |
| 33 | int m_use_buffer; |
| 34 | 34 | }; |
| 35 | 35 | |
| 36 | 36 | |
| r23697 | r23698 | |
| 152 | 152 | |
| 153 | 153 | extern const device_type PC080SN; |
| 154 | 154 | |
| 155 | | class pc090oj_device : public device_t |
| 155 | class pc090oj_device : public device_t, |
| 156 | public pc090oj_interface |
| 156 | 157 | { |
| 157 | 158 | public: |
| 158 | 159 | pc090oj_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 159 | | ~pc090oj_device() { global_free(m_token); } |
| 160 | ~pc090oj_device() {} |
| 160 | 161 | |
| 161 | | // access to legacy token |
| 162 | | void *token() const { assert(m_token != NULL); return m_token; } |
| 162 | DECLARE_READ16_MEMBER( word_r ); |
| 163 | DECLARE_WRITE16_MEMBER( word_w ); |
| 164 | |
| 165 | void set_sprite_ctrl(UINT16 sprctrl); |
| 166 | void eof_callback(); |
| 167 | void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int pri_type); |
| 168 | |
| 163 | 169 | protected: |
| 164 | 170 | // device-level overrides |
| 165 | 171 | virtual void device_config_complete(); |
| 166 | 172 | virtual void device_start(); |
| 167 | 173 | virtual void device_reset(); |
| 174 | |
| 168 | 175 | private: |
| 169 | | // internal state |
| 170 | | void *m_token; |
| 176 | /* NB: pc090oj_ctrl is the internal register controlling flipping |
| 177 | |
| 178 | pc090oj_sprite_ctrl is a representation of the hardware OUTSIDE the pc090oj |
| 179 | which impacts on sprite plotting, and which varies between games. It |
| 180 | includes color banking and (optionally) priority. It allows each game to |
| 181 | control these aspects of the sprites in different ways, while keeping the |
| 182 | routines here modular. |
| 183 | |
| 184 | */ |
| 185 | |
| 186 | UINT16 m_ctrl; |
| 187 | UINT16 m_sprite_ctrl; |
| 188 | |
| 189 | UINT16 * m_ram; |
| 190 | UINT16 * m_ram_buffered; |
| 171 | 191 | }; |
| 172 | 192 | |
| 173 | 193 | extern const device_type PC090OJ; |
| r23697 | r23698 | |
| 408 | 428 | DEVICE I/O FUNCTIONS |
| 409 | 429 | ***************************************************************************/ |
| 410 | 430 | |
| 411 | | /** PC090OJ **/ |
| 412 | | DECLARE_READ16_DEVICE_HANDLER( pc090oj_word_r ); |
| 413 | | DECLARE_WRITE16_DEVICE_HANDLER( pc090oj_word_w ); |
| 414 | | |
| 415 | | void pc090oj_set_sprite_ctrl(device_t *device, UINT16 sprctrl); |
| 416 | | void pc090oj_eof_callback(device_t *device); |
| 417 | | void pc090oj_draw_sprites(device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri_type); |
| 418 | | |
| 419 | | |
| 420 | 431 | /** TC0080VCO **/ |
| 421 | 432 | DECLARE_READ16_DEVICE_HANDLER( tc0080vco_word_r ); |
| 422 | 433 | DECLARE_WRITE16_DEVICE_HANDLER( tc0080vco_word_w ); |