trunk/src/emu/diimage.cpp
| r253071 | r253072 | |
| 161 | 161 | zippath_parent(m_working_directory, filename); |
| 162 | 162 | m_basename.assign(m_image_name); |
| 163 | 163 | |
| 164 | | int loc1 = m_image_name.find_last_of('\\'); |
| 165 | | int loc2 = m_image_name.find_last_of('/'); |
| 166 | | int loc3 = m_image_name.find_last_of(':'); |
| 167 | | int loc = MAX(loc1,MAX(loc2,loc3)); |
| 168 | | if (loc!=-1) { |
| 164 | size_t loc1 = m_image_name.find_last_of('\\'); |
| 165 | size_t loc2 = m_image_name.find_last_of('/'); |
| 166 | size_t loc3 = m_image_name.find_last_of(':'); |
| 167 | size_t loc = MAX(loc1,MAX(loc2, loc3)); |
| 168 | if (loc != -1) { |
| 169 | 169 | if (loc == loc3) |
| 170 | 170 | { |
| 171 | 171 | // temp workaround for softlists now that m_image_name contains the part name too (e.g. list:gamename:cart) |
| 172 | 172 | m_basename = m_basename.substr(0, loc); |
| 173 | | std::string tmpstr = std::string(m_basename); |
| 174 | | int tmploc = tmpstr.find_last_of(':'); |
| 175 | | m_basename = m_basename.substr(tmploc + 1,loc-tmploc); |
| 173 | size_t tmploc = m_basename.find_last_of(':'); |
| 174 | m_basename = m_basename.substr(tmploc + 1, loc - tmploc); |
| 176 | 175 | } |
| 177 | 176 | else |
| 178 | | m_basename = m_basename.substr(loc + 1, m_basename.length() - loc); |
| 177 | m_basename = m_basename.substr(loc + 1); |
| 179 | 178 | } |
| 180 | | m_basename_noext = m_basename.assign(m_basename); |
| 179 | m_basename_noext = m_basename; |
| 181 | 180 | m_filetype = ""; |
| 182 | 181 | loc = m_basename_noext.find_last_of('.'); |
| 183 | | if (loc!=-1) { |
| 184 | | m_basename_noext = m_basename_noext.substr(0,loc); |
| 185 | | m_filetype = m_basename.assign(m_basename); |
| 186 | | m_filetype = m_filetype.substr(loc + 1, m_filetype.length() - loc); |
| 182 | if (loc != -1) { |
| 183 | m_basename_noext = m_basename_noext.substr(0, loc); |
| 184 | m_filetype = m_basename.substr(loc + 1); |
| 187 | 185 | } |
| 188 | 186 | |
| 189 | 187 | return IMAGE_ERROR_SUCCESS; |
trunk/src/emu/ui/ui.cpp
| r253071 | r253072 | |
| 183 | 183 | CORE IMPLEMENTATION |
| 184 | 184 | ***************************************************************************/ |
| 185 | 185 | |
| 186 | | static const UINT32 mouse_bitmap[32*32] = |
| 187 | | { |
| 186 | static const UINT32 mouse_bitmap[] = { |
| 188 | 187 | 0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff, |
| 189 | 188 | 0x09a46f30,0x81ac7c43,0x24af8049,0x00ad7d45,0x00a8753a,0x00a46f30,0x009f6725,0x009b611c,0x00985b14,0x0095560d,0x00935308,0x00915004,0x00904e02,0x008f4e01,0x008f4d00,0x008f4d00,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff, |
| 190 | 189 | 0x00a16a29,0xa2aa783d,0xffbb864a,0xc0b0824c,0x5aaf7f48,0x09ac7b42,0x00a9773c,0x00a67134,0x00a26b2b,0x009e6522,0x009a5e19,0x00965911,0x0094550b,0x00925207,0x00915004,0x008f4e01,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff, |
| r253071 | r253072 | |
| 237 | 236 | m_handler_param = 0; |
| 238 | 237 | m_single_step = false; |
| 239 | 238 | m_showfps = false; |
| 240 | | m_showfps_end = false; |
| 239 | m_showfps_end = 0; |
| 241 | 240 | m_show_profiler = false; |
| 242 | 241 | m_popup_text_end = 0; |
| 243 | 242 | m_use_natural_keyboard = false; |
| r253071 | r253072 | |
| 458 | 457 | { |
| 459 | 458 | float mouse_y=-1,mouse_x=-1; |
| 460 | 459 | if (mouse_target->map_point_container(mouse_target_x, mouse_target_y, *container, mouse_x, mouse_y)) { |
| 461 | | container->add_quad(mouse_x,mouse_y,mouse_x + 0.02f*container->manager().ui_aspect(container),mouse_y + 0.02f,UI_TEXT_COLOR,m_mouse_arrow_texture,PRIMFLAG_ANTIALIAS(1)|PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); |
| 460 | container->add_quad(mouse_x,mouse_y,mouse_x + 0.05f*container->manager().ui_aspect(container),mouse_y + 0.05f,UI_TEXT_COLOR,m_mouse_arrow_texture,PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); |
| 462 | 461 | } |
| 463 | 462 | } |
| 464 | 463 | } |
| r253071 | r253072 | |
| 1504 | 1503 | // first draw the FPS counter |
| 1505 | 1504 | if (machine.ui().show_fps_counter()) |
| 1506 | 1505 | { |
| 1507 | | std::string tempstring; |
| 1508 | 1506 | machine.ui().draw_text_full(container, machine.video().speed_text().c_str(), 0.0f, 0.0f, 1.0f, |
| 1509 | 1507 | JUSTIFY_RIGHT, WRAP_WORD, DRAW_OPAQUE, ARGB_WHITE, ARGB_BLACK, nullptr, nullptr); |
| 1510 | 1508 | } |
trunk/src/mame/drivers/overdriv.cpp
| r253071 | r253072 | |
| 70 | 70 | |
| 71 | 71 | TIMER_DEVICE_CALLBACK_MEMBER(overdriv_state::overdriv_cpuA_scanline) |
| 72 | 72 | { |
| 73 | | const int timer_threshold = 168; // fwiw matches 0 on mask ROM check, so IF it's a timer irq then should be close ... |
| 74 | 73 | int scanline = param; |
| 75 | | |
| 76 | | m_fake_timer ++; |
| 77 | | |
| 78 | | // TODO: irqs routines are TOO slow right now, it ends up firing spurious irqs for whatever reason (shared ram fighting?) |
| 79 | | // this is a temporary solution to get rid of deprecat lib and the crashes, but also makes the game timer to be too slow. |
| 80 | | // Update: gameplay is actually too fast compared to timer, first attract mode shouldn't even surpass first blue car on right. |
| 81 | | if(scanline == 256) // vblank-out irq |
| 82 | | { |
| 83 | | // m_screen->frame_number() & 1 |
| 74 | |
| 75 | /* TODO: irqs routines are TOO slow right now, it ends up firing spurious irqs for whatever reason (shared ram fighting?) */ |
| 76 | /* this is a temporary solution to get rid of deprecat lib and the crashes, but also makes the game timer to be too slow */ |
| 77 | if(scanline == 256 && m_screen->frame_number() & 1) // vblank-out irq |
| 84 | 78 | m_maincpu->set_input_line(4, HOLD_LINE); |
| 85 | | m_subcpu->set_input_line(4, HOLD_LINE); // likely wrong |
| 86 | | } |
| 87 | | else if(m_fake_timer >= timer_threshold) // timer irq |
| 88 | | { |
| 89 | | m_fake_timer -= timer_threshold; |
| 79 | else if((scanline % 128) == 0) // timer irq |
| 90 | 80 | m_maincpu->set_input_line(5, HOLD_LINE); |
| 91 | | } |
| 92 | 81 | } |
| 93 | 82 | |
| 94 | 83 | INTERRUPT_GEN_MEMBER(overdriv_state::cpuB_interrupt) |
| 95 | 84 | { |
| 96 | 85 | // this doesn't get turned on until the irq has happened? wrong irq? |
| 97 | | if (m_k053246->k053246_is_irq_enabled()) |
| 98 | | m_subcpu->set_input_line(6, HOLD_LINE); // likely wrong |
| 86 | // if (m_k053246->k053246_is_irq_enabled()) |
| 87 | m_subcpu->set_input_line(4, HOLD_LINE); // likely wrong |
| 99 | 88 | } |
| 100 | 89 | |
| 101 | 90 | |
| r253071 | r253072 | |
| 138 | 127 | |
| 139 | 128 | WRITE16_MEMBER(overdriv_state::overdriv_soundirq_w) |
| 140 | 129 | { |
| 141 | | m_audiocpu->set_input_line(M6809_IRQ_LINE, ASSERT_LINE); |
| 130 | m_audiocpu->set_input_line(M6809_IRQ_LINE, HOLD_LINE); |
| 142 | 131 | } |
| 143 | 132 | |
| 144 | | |
| 145 | 133 | WRITE16_MEMBER(overdriv_state::overdriv_cpuB_irq_x_w) |
| 146 | 134 | { |
| 147 | 135 | m_subcpu->set_input_line(5, HOLD_LINE); // likely wrong |
| r253071 | r253072 | |
| 149 | 137 | |
| 150 | 138 | WRITE16_MEMBER(overdriv_state::overdriv_cpuB_irq_y_w) |
| 151 | 139 | { |
| 140 | m_subcpu->set_input_line(6, HOLD_LINE); // likely wrong |
| 152 | 141 | } |
| 153 | 142 | |
| 154 | 143 | static ADDRESS_MAP_START( overdriv_master_map, AS_PROGRAM, 16, overdriv_state ) |
| r253071 | r253072 | |
| 178 | 167 | AM_RANGE(0x238000, 0x238001) AM_WRITE(overdriv_cpuB_irq_x_w) |
| 179 | 168 | ADDRESS_MAP_END |
| 180 | 169 | |
| 181 | | #ifdef UNUSED_FUNCTION |
| 170 | // HACK ALERT |
| 182 | 171 | WRITE16_MEMBER( overdriv_state::overdriv_k053246_word_w ) |
| 183 | 172 | { |
| 184 | 173 | m_k053246->k053246_word_w(space,offset,data,mem_mask); |
| r253071 | r253072 | |
| 201 | 190 | //printf("%02x %04x %04x\n", offset, data, mem_mask); |
| 202 | 191 | |
| 203 | 192 | } |
| 204 | | #endif |
| 205 | 193 | |
| 206 | 194 | static ADDRESS_MAP_START( overdriv_slave_map, AS_PROGRAM, 16, overdriv_state ) |
| 207 | 195 | AM_RANGE(0x000000, 0x03ffff) AM_ROM |
| r253071 | r253072 | |
| 209 | 197 | AM_RANGE(0x0c0000, 0x0c1fff) AM_RAM //AM_DEVREADWRITE("k053250_1", k053250_device, ram_r, ram_w) |
| 210 | 198 | AM_RANGE(0x100000, 0x10000f) AM_DEVREADWRITE("k053250_1", k053250_device, reg_r, reg_w) |
| 211 | 199 | AM_RANGE(0x108000, 0x10800f) AM_DEVREADWRITE("k053250_2", k053250_device, reg_r, reg_w) |
| 212 | | AM_RANGE(0x118000, 0x118fff) AM_DEVREADWRITE("k053246", k053247_device, k053247_word_r, k053247_word_w) // data gets copied to sprite chip with DMA.. |
| 200 | AM_RANGE(0x118000, 0x118fff) AM_RAM AM_SHARE("sprram") //AM_DEVREADWRITE("k053246", k053247_device, k053247_word_r, k053247_word_w) // data gets copied to sprite chip with DMA.. |
| 213 | 201 | AM_RANGE(0x120000, 0x120001) AM_DEVREAD("k053246", k053247_device, k053246_word_r) |
| 214 | 202 | AM_RANGE(0x128000, 0x128001) AM_READWRITE(cpuB_ctrl_r, cpuB_ctrl_w) /* enable K053247 ROM reading, plus something else */ |
| 215 | | AM_RANGE(0x130000, 0x130007) AM_DEVREADWRITE8("k053246", k053247_device, k053246_r,k053246_w,0xffff) |
| 216 | | //AM_RANGE(0x140000, 0x140001) used in later stages |
| 203 | AM_RANGE(0x130000, 0x130007) AM_WRITE(overdriv_k053246_word_w) // AM_DEVWRITE("k053246", k053247_device, k053246_word_w) |
| 217 | 204 | AM_RANGE(0x200000, 0x203fff) AM_RAM AM_SHARE("share1") |
| 218 | 205 | AM_RANGE(0x208000, 0x20bfff) AM_RAM |
| 219 | 206 | AM_RANGE(0x218000, 0x219fff) AM_DEVREAD("k053250_1", k053250_device, rom_r) |
| 220 | 207 | AM_RANGE(0x220000, 0x221fff) AM_DEVREAD("k053250_2", k053250_device, rom_r) |
| 221 | 208 | ADDRESS_MAP_END |
| 222 | 209 | |
| 223 | | WRITE8_MEMBER(overdriv_state::sound_ack_w) |
| 224 | | { |
| 225 | | m_audiocpu->set_input_line(M6809_IRQ_LINE, CLEAR_LINE); |
| 226 | | } |
| 227 | | |
| 228 | 210 | static ADDRESS_MAP_START( overdriv_sound_map, AS_PROGRAM, 8, overdriv_state ) |
| 229 | | AM_RANGE(0x0000, 0x0000) AM_WRITE(sound_ack_w) |
| 230 | | // 0x012 read during explosions |
| 231 | | // 0x180 |
| 232 | 211 | AM_RANGE(0x0200, 0x0201) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write) |
| 233 | 212 | AM_RANGE(0x0400, 0x042f) AM_DEVREADWRITE("k053260_1", k053260_device, read, write) |
| 234 | 213 | AM_RANGE(0x0600, 0x062f) AM_DEVREADWRITE("k053260_2", k053260_device, read, write) |
| r253071 | r253072 | |
| 243 | 222 | |
| 244 | 223 | static INPUT_PORTS_START( overdriv ) |
| 245 | 224 | PORT_START("INPUTS") |
| 246 | | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_TOGGLE |
| 225 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_TOGGLE |
| 247 | 226 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) |
| 248 | 227 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) |
| 249 | 228 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| r253071 | r253072 | |
| 318 | 297 | |
| 319 | 298 | /* video hardware */ |
| 320 | 299 | MCFG_SCREEN_ADD("screen", RASTER) |
| 321 | | MCFG_SCREEN_RAW_PARAMS(XTAL_24MHz/4,384,0,305,264,0,224) |
| 300 | MCFG_SCREEN_REFRESH_RATE(59) |
| 301 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) |
| 302 | MCFG_SCREEN_SIZE(64*8, 40*8) |
| 303 | MCFG_SCREEN_VISIBLE_AREA(13*8, (64-13)*8-1, 0*8, 32*8-1 ) |
| 322 | 304 | MCFG_SCREEN_UPDATE_DRIVER(overdriv_state, screen_update_overdriv) |
| 323 | 305 | MCFG_SCREEN_PALETTE("palette") |
| 324 | 306 | |
| r253071 | r253072 | |
| 493 | 475 | ROM_LOAD( "789e02.f1", 0x100000, 0x100000, CRC(bdd3b5c6) SHA1(412332d64052c0a3714f4002c944b0e7d32980a4) ) |
| 494 | 476 | ROM_END |
| 495 | 477 | |
| 496 | | GAMEL( 1990, overdriv, 0, overdriv, overdriv, driver_device, 0, ROT90, "Konami", "Over Drive (set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_overdriv ) // US version |
| 497 | | GAMEL( 1990, overdriva, overdriv, overdriv, overdriv, driver_device, 0, ROT90, "Konami", "Over Drive (set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_overdriv ) // Overseas? |
| 498 | | GAMEL( 1990, overdrivb, overdriv, overdriv, overdriv, driver_device, 0, ROT90, "Konami", "Over Drive (set 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_overdriv ) // Overseas? |
| 478 | GAMEL( 1990, overdriv, 0, overdriv, overdriv, driver_device, 0, ROT90, "Konami", "Over Drive (set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_overdriv ) |
| 479 | GAMEL( 1990, overdriva, overdriv, overdriv, overdriv, driver_device, 0, ROT90, "Konami", "Over Drive (set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_overdriv ) |
| 480 | GAMEL( 1990, overdrivb, overdriv, overdriv, overdriv, driver_device, 0, ROT90, "Konami", "Over Drive (set 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_overdriv ) |