trunk/src/mame/drivers/cps1.c
| r241545 | r241546 | |
| 4002 | 4002 | ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) ) |
| 4003 | 4003 | |
| 4004 | 4004 | ROM_REGION( 0x0200, "bboardplds", 0 ) |
| 4005 | | ROM_LOAD( "sth63b.1a", 0x0000, 0x0117, BAD_DUMP CRC(c706b773) SHA1(ddfe2e747637eec081a5125cfefcb478a4ba9e76) ) /* Handcrafted but works on actual PCB. Redump needed */ |
| 4005 | ROM_LOAD( "sth63b.1a", 0x0000, 0x0117, NO_DUMP ) |
| 4006 | 4006 | ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) ) |
| 4007 | 4007 | ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) ) |
| 4008 | 4008 | |
| r241545 | r241546 | |
| 4483 | 4483 | ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) ) |
| 4484 | 4484 | |
| 4485 | 4485 | ROM_REGION( 0x0200, "bboardplds", 0 ) |
| 4486 | | ROM_LOAD( "ara63b.1a", 0x0000, 0x0117, BAD_DUMP CRC(f5569c93) SHA1(7db7cf23639036590eef1e5e309f08560859efaf) ) /* Handcrafted but works on actual PCB. Redump needed */ |
| 4486 | ROM_LOAD( "ara63b.1a", 0x0000, 0x0117, NO_DUMP ) |
| 4487 | 4487 | ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) ) |
| 4488 | 4488 | ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) ) |
| 4489 | 4489 | |
trunk/src/mame/drivers/naomi.c
| r241545 | r241546 | |
| 493 | 493 | Capcom Vs. SNK Millennium Fight 2000 841-0011C 23511 7 (128Mb) 315-6219 present 317-5059-COM (000802) |
| 494 | 494 | Capcom Vs. SNK Millennium Fight 2000 (Rev A) 841-0011C 23511A 7 (128Mb) 315-6219 present 317-5059-COM (000804) |
| 495 | 495 | Capcom Vs. SNK Millennium Fight 2000 (Rev C) 841-0011C 23511C 7 (128Mb) 315-6319 present 317-5059-COM (000904) |
| 496 | | Club Kart: European Session (Rev E) 840-0062C 23704E 11 (128Mb) 315-6319A present 317-0313-COM |
| 497 | | Club Kart: European Session (Rev D) 840-0062C 23704D 11 (128Mb) 315-6319A present 317-0313-COM |
| 498 | | Club Kart: European Session (Rev C) 840-0062C 23704C 11 (128Mb) 315-6319A present 317-0313-COM |
| 496 | Club Kart: European Session 840-0062C 23704 11 (128Mb) 315-6319A present 317-0313-COM |
| 497 | Club Kart: European Session (Rev D) 840-0062C 21473D 11 (128Mb) 315-6319A present 317-0313-COM |
| 499 | 498 | Crackin' DJ 840-0043C 23450D 10 (128Mb) 315-6319 present ? |
| 500 | 499 | Derby Owners Club II (Rev B) 840-0083C 22306B 11 (128Mb) 315-6319A present not present |
| 501 | 500 | Derby Owners Club World Edition (Rev C) 840-0088C 22336C 7 (128Mb) 315-6319A present not present |
| r241545 | r241546 | |
| 7918 | 7917 | NAOMI_DEFAULT_EEPROM |
| 7919 | 7918 | |
| 7920 | 7919 | ROM_REGION( 0xb800000, "rom_board", ROMREGION_ERASEFF) |
| 7921 | | ROM_LOAD( "epr-23704d.ic22",0x0000000, 0x0400000, CRC(60ac770c) SHA1(2f1688f2046e794d1c1e06912b46c1573d934608) ) |
| 7920 | ROM_LOAD( "epr-21473d.ic22",0x0000000, 0x0400000, CRC(60ac770c) SHA1(2f1688f2046e794d1c1e06912b46c1573d934608) ) |
| 7922 | 7921 | ROM_LOAD( "mpr-23693.ic1", 0x0800000, 0x1000000, CRC(28995764) SHA1(a1457f9935dde2e5aaa5ef245c736c0f2f8c74b7) ) |
| 7923 | 7922 | ROM_LOAD( "mpr-23694.ic2", 0x1800000, 0x1000000, CRC(37d30111) SHA1(4c07df8cd548cac79d48709e61f692d762471f8f) ) |
| 7924 | 7923 | ROM_LOAD( "mpr-23695.ic3", 0x2800000, 0x1000000, CRC(41ac1510) SHA1(01b889b627fdfc1f12a0c84fcc36debdfb1cf377) ) |
| r241545 | r241546 | |
| 7935 | 7934 | ROM_LOAD( "clubkrte-key.bin", 0, 4, CRC(db426a5d) SHA1(6a6a0b80ec0416605541159efea379dc19fe796d) ) |
| 7936 | 7935 | ROM_END |
| 7937 | 7936 | |
| 7938 | | ROM_START( clubkrtc ) |
| 7939 | | NAOMI2_BIOS |
| 7940 | | NAOMI_DEFAULT_EEPROM |
| 7941 | | |
| 7942 | | ROM_REGION( 0xb800000, "rom_board", ROMREGION_ERASEFF) |
| 7943 | | ROM_LOAD( "epr-23704c.ic22",0x0000000, 0x0400000, CRC(45ea13c3) SHA1(48cddba0506010dc705f04457f784a1d455ef3a6) ) |
| 7944 | | ROM_LOAD( "mpr-23693.ic1", 0x0800000, 0x1000000, CRC(28995764) SHA1(a1457f9935dde2e5aaa5ef245c736c0f2f8c74b7) ) |
| 7945 | | ROM_LOAD( "mpr-23694.ic2", 0x1800000, 0x1000000, CRC(37d30111) SHA1(4c07df8cd548cac79d48709e61f692d762471f8f) ) |
| 7946 | | ROM_LOAD( "mpr-23695.ic3", 0x2800000, 0x1000000, CRC(41ac1510) SHA1(01b889b627fdfc1f12a0c84fcc36debdfb1cf377) ) |
| 7947 | | ROM_LOAD( "mpr-23696.ic4", 0x3800000, 0x1000000, CRC(6f2da455) SHA1(b655757bc513398820bfeae07dca8a4f3ea9752c) ) |
| 7948 | | ROM_LOAD( "mpr-23697.ic5", 0x4800000, 0x1000000, CRC(1383c742) SHA1(6efd17632a277a4bb0e47cc912fbc9865a8b14c3) ) |
| 7949 | | ROM_LOAD( "mpr-23698.ic6", 0x5800000, 0x1000000, CRC(da79cd06) SHA1(fdfe068caca1eb764dec28ab327e56b39144f3ae) ) |
| 7950 | | ROM_LOAD( "mpr-23699.ic7", 0x6800000, 0x1000000, CRC(ea77f000) SHA1(35aa8ee804d9429e72f516137a3b06c585a57b6d) ) |
| 7951 | | ROM_LOAD( "mpr-23700.ic8", 0x7800000, 0x1000000, CRC(db9e5c1d) SHA1(db918c0fa1860f4345806e574d44354aba5fcd54) ) |
| 7952 | | ROM_LOAD( "mpr-23701.ic9", 0x8800000, 0x1000000, CRC(0fa92fd7) SHA1(67a1cf085101884a17a4783d0d509ab198aa6425) ) |
| 7953 | | ROM_LOAD( "mpr-23702.ic10", 0x9800000, 0x1000000, CRC(e302b582) SHA1(787192ed9f9a08541eecc3128855485cad802a42) ) |
| 7954 | | ROM_LOAD( "mpr-23703.ic11", 0xa800000, 0x1000000, CRC(702b8b4a) SHA1(3a8dfde458f341e7db20664382b9fce2b6e5d462) ) |
| 7955 | | |
| 7956 | | ROM_REGION( 4, "rom_key", 0 ) |
| 7957 | | ROM_LOAD( "clubkrte-key.bin", 0, 4, CRC(db426a5d) SHA1(6a6a0b80ec0416605541159efea379dc19fe796d) ) |
| 7958 | | ROM_END |
| 7959 | | |
| 7960 | 7937 | ROM_START( clubkprz ) |
| 7961 | 7938 | NAOMI2_BIOS |
| 7962 | 7939 | NAOMI_DEFAULT_EEPROM |
| r241545 | r241546 | |
| 8952 | 8929 | /* 0046 */ GAME( 2001, wldrider, naomi2, naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Wild Riders (JPN, USA, EXP, KOR, AUS)", GAME_FLAGS ) |
| 8953 | 8930 | /* 0061 */ GAME( 2001, vstrik3c, naomi2, naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Virtua Striker 3 (USA, EXP, KOR, AUS) (Cart, Rev C)", GAME_FLAGS ) |
| 8954 | 8931 | /* 0061 */ GAME( 2001, vstrik3cb,vstrik3c,naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Virtua Striker 3 (USA, EXP, KOR, AUS) (Cart, Rev B)", GAME_FLAGS ) |
| 8955 | | /* 0062 */ GAME( 2001, clubkrte, naomi2, naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Club Kart: European Session (Rev E)", GAME_FLAGS ) |
| 8932 | /* 0062 */ GAME( 2001, clubkrte, naomi2, naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Club Kart: European Session", GAME_FLAGS ) |
| 8956 | 8933 | /* 0062 */ GAME( 2001, clubkrtd, clubkrte,naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Club Kart: European Session (Rev D)", GAME_FLAGS ) |
| 8957 | | /* 0062 */ GAME( 2001, clubkrtc, clubkrte,naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Club Kart: European Session (Rev C)", GAME_FLAGS ) |
| 8958 | 8934 | /* 0080 */ GAME( 2002, vf4cart, naomi2, naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Virtua Fighter 4 (Cartridge)", GAME_FLAGS ) |
| 8959 | 8935 | /* 0087 */ GAME( 2002, kingrt66, naomi2, naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "King of Route 66 (Rev A)", GAME_FLAGS ) |
| 8960 | 8936 | /* 0095 */ GAME( 2002, soulsurf, naomi2, naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Soul Surfer (Rev A)", GAME_FLAGS ) |
trunk/src/mame/video/konamigx.c
| r241545 | r241546 | |
| 276 | 276 | #define GX_MAX_OBJECTS (GX_MAX_SPRITES + GX_MAX_LAYERS) |
| 277 | 277 | |
| 278 | 278 | static struct GX_OBJ { int order, offs, code, color; } *gx_objpool; |
| 279 | static UINT16 *gx_spriteram; |
| 279 | 280 | |
| 281 | // mirrored K054338 settings |
| 282 | static int *K054338_shdRGB; |
| 283 | |
| 284 | |
| 280 | 285 | void konamigx_state::konamigx_mixer_init(screen_device &screen, int objdma) |
| 281 | 286 | { |
| 282 | 287 | m_gx_objdma = 0; |
| r241545 | r241546 | |
| 286 | 291 | m_gx_shdzbuf = auto_alloc_array(machine(), UINT8, GX_ZBUFSIZE); |
| 287 | 292 | gx_objpool = auto_alloc_array(machine(), struct GX_OBJ, GX_MAX_OBJECTS); |
| 288 | 293 | |
| 289 | | m_k054338->export_config(&m_K054338_shdRGB); |
| 294 | m_k054338->export_config(&K054338_shdRGB); |
| 290 | 295 | |
| 291 | 296 | if (objdma) |
| 292 | 297 | { |
| 293 | | m_gx_spriteram = auto_alloc_array(machine(), UINT16, 0x1000/2); |
| 298 | gx_spriteram = auto_alloc_array(machine(), UINT16, 0x1000/2); |
| 294 | 299 | m_gx_objdma = 1; |
| 295 | 300 | } |
| 296 | 301 | else |
| 297 | | m_k055673->k053247_get_ram(&m_gx_spriteram); |
| 302 | m_k055673->k053247_get_ram(&gx_spriteram); |
| 298 | 303 | |
| 299 | 304 | m_palette->set_shadow_dRGB32(3,-80,-80,-80, 0); |
| 300 | 305 | m_k054338->invert_alpha(1); |
| r241545 | r241546 | |
| 310 | 315 | UINT16* k053247_ram; |
| 311 | 316 | m_k055673->k053247_get_ram(&k053247_ram); |
| 312 | 317 | |
| 313 | | if (m_gx_objdma && m_gx_spriteram && k053247_ram) memcpy(m_gx_spriteram, k053247_ram, 0x1000); |
| 318 | if (m_gx_objdma && gx_spriteram && k053247_ram) memcpy(gx_spriteram, k053247_ram, 0x1000); |
| 314 | 319 | } |
| 315 | 320 | |
| 316 | 321 | void konamigx_state::konamigx_mixer(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, |
| r241545 | r241546 | |
| 411 | 416 | // only enable shadows beyond a +/-7 RGB threshold |
| 412 | 417 | for (j=0,i=0; i<3; j+=3,i++) |
| 413 | 418 | { |
| 414 | | k = m_K054338_shdRGB[j ]; if (k < -7 || k > 7) { shadowon[i] = 1; continue; } |
| 415 | | k = m_K054338_shdRGB[j+1]; if (k < -7 || k > 7) { shadowon[i] = 1; continue; } |
| 416 | | k = m_K054338_shdRGB[j+2]; if (k < -7 || k > 7) { shadowon[i] = 1; } |
| 419 | k = K054338_shdRGB[j ]; if (k < -7 || k > 7) { shadowon[i] = 1; continue; } |
| 420 | k = K054338_shdRGB[j+1]; if (k < -7 || k > 7) { shadowon[i] = 1; continue; } |
| 421 | k = K054338_shdRGB[j+2]; if (k < -7 || k > 7) { shadowon[i] = 1; } |
| 417 | 422 | } |
| 418 | 423 | |
| 419 | 424 | // SHDON specifies layers on which shadows can be projected (see detail on p.65 7.2.8) |
| r241545 | r241546 | |
| 491 | 496 | { |
| 492 | 497 | int pri = 0; |
| 493 | 498 | |
| 494 | | if (!(m_gx_spriteram[offs] & 0x8000)) continue; |
| 499 | if (!(gx_spriteram[offs] & 0x8000)) continue; |
| 495 | 500 | |
| 496 | | int zcode = m_gx_spriteram[offs] & 0xff; |
| 501 | int zcode = gx_spriteram[offs] & 0xff; |
| 497 | 502 | |
| 498 | 503 | // invert z-order when opset_pri is set (see p.51 OPSET PRI) |
| 499 | 504 | if (m_k053247_opset & 0x10) zcode = 0xff - zcode; |
| 500 | 505 | |
| 501 | | int code = m_gx_spriteram[offs+1]; |
| 502 | | int color = k = m_gx_spriteram[offs+6]; |
| 503 | | l = m_gx_spriteram[offs+7]; |
| 506 | int code = gx_spriteram[offs+1]; |
| 507 | int color = k = gx_spriteram[offs+6]; |
| 508 | l = gx_spriteram[offs+7]; |
| 504 | 509 | |
| 505 | 510 | m_k055673->m_k053247_cb(&code, &color, &pri); |
| 506 | 511 | |
| r241545 | r241546 | |
| 864 | 869 | |
| 865 | 870 | |
| 866 | 871 | m_k055673->k053247_draw_single_sprite_gxcore(bitmap, cliprect, |
| 867 | | m_gx_objzbuf, m_gx_shdzbuf, code, m_gx_spriteram, offs, |
| 872 | m_gx_objzbuf, m_gx_shdzbuf, code, gx_spriteram, offs, |
| 868 | 873 | color, alpha, drawmode, zcode, pri, |
| 869 | 874 | /* non-gx only */ |
| 870 | 875 | 0,0,NULL,NULL,0 |
| r241545 | r241546 | |
| 922 | 927 | SET_TILE_INFO_MEMBER(0, tileno, colour, TILE_FLIPYX(flip)); |
| 923 | 928 | } |
| 924 | 929 | |
| 930 | static int konamigx_type3_psac2_actual_bank; |
| 931 | //int konamigx_type3_psac2_actual_last_bank = 0; |
| 925 | 932 | |
| 926 | 933 | WRITE32_MEMBER(konamigx_state::konamigx_type3_psac2_bank_w) |
| 927 | 934 | { |
| 928 | 935 | // other bits are used for something... |
| 929 | 936 | |
| 930 | 937 | COMBINE_DATA(&m_konamigx_type3_psac2_bank[offset]); |
| 931 | | m_konamigx_type3_psac2_actual_bank = (m_konamigx_type3_psac2_bank[0] & 0x10000000) >> 28; |
| 938 | konamigx_type3_psac2_actual_bank = (m_konamigx_type3_psac2_bank[0] & 0x10000000) >> 28; |
| 932 | 939 | |
| 933 | 940 | /* handle this by creating 2 roz tilemaps instead, otherwise performance dies completely on dual screen mode |
| 934 | | if (m_konamigx_type3_psac2_actual_bank!=m_konamigx_type3_psac2_actual_last_bank) |
| 941 | if (konamigx_type3_psac2_actual_bank!=konamigx_type3_psac2_actual_last_bank) |
| 935 | 942 | { |
| 936 | 943 | m_gx_psac_tilemap->mark_all_dirty(); |
| 937 | | m_konamigx_type3_psac2_actual_last_bank = m_konamigx_type3_psac2_actual_bank; |
| 944 | konamigx_type3_psac2_actual_last_bank = konamigx_type3_psac2_actual_bank; |
| 938 | 945 | } |
| 939 | 946 | */ |
| 940 | 947 | } |
| r241545 | r241546 | |
| 949 | 956 | |
| 950 | 957 | int base_index = tile_index; |
| 951 | 958 | |
| 952 | | // if (m_konamigx_type3_psac2_actual_bank) |
| 959 | // if (konamigx_type3_psac2_actual_bank) |
| 953 | 960 | // base_index+=0x20000/2; |
| 954 | 961 | |
| 955 | 962 | |
| r241545 | r241546 | |
| 970 | 977 | |
| 971 | 978 | int base_index = tile_index; |
| 972 | 979 | |
| 973 | | // if (m_konamigx_type3_psac2_actual_bank) |
| 980 | // if (konamigx_type3_psac2_actual_bank) |
| 974 | 981 | // base_index+=0x20000/2; |
| 975 | 982 | |
| 976 | 983 | |
| r241545 | r241546 | |
| 1425 | 1432 | temprect = cliprect; |
| 1426 | 1433 | temprect.max_x = cliprect.min_x+320; |
| 1427 | 1434 | |
| 1428 | | if (m_konamigx_type3_psac2_actual_bank == 1) K053936_0_zoom_draw(screen, *m_type3_roz_temp_bitmap, temprect,m_gx_psac_tilemap_alt, 0,0,0); // soccerss playfield |
| 1435 | if (konamigx_type3_psac2_actual_bank == 1) K053936_0_zoom_draw(screen, *m_type3_roz_temp_bitmap, temprect,m_gx_psac_tilemap_alt, 0,0,0); // soccerss playfield |
| 1429 | 1436 | else K053936_0_zoom_draw(screen, *m_type3_roz_temp_bitmap, temprect,m_gx_psac_tilemap, 0,0,0); // soccerss playfield |
| 1430 | 1437 | |
| 1431 | 1438 | |
trunk/src/mess/machine/coco.c
| r241545 | r241546 | |
| 681 | 681 | /* determine the sound mux status */ |
| 682 | 682 | soundmux_status_t status = soundmux_status(); |
| 683 | 683 | |
| 684 | | /* the SC77526 DAC chip internally biases the AC-coupled sound inputs for Cassette and Cartridge at the midpoint of the 3.9v output range */ |
| 685 | | bool bCassSoundEnable = (status == (SOUNDMUX_ENABLE | SOUNDMUX_SEL1)); |
| 686 | | bool bCartSoundEnable = (status == (SOUNDMUX_ENABLE | SOUNDMUX_SEL2)); |
| 687 | | UINT8 cassette_sound = (bCassSoundEnable ? 0x40 : 0); |
| 688 | | UINT8 cart_sound = (bCartSoundEnable ? 0x40 : 0); |
| 689 | | |
| 690 | 684 | /* determine the value to send to the DAC */ |
| 691 | 685 | m_dac_output = (m_pia_1->a_output() & 0xFC) >> 2; |
| 692 | | UINT8 dac_sound = (status == SOUNDMUX_ENABLE ? m_dac_output << 1 : 0); |
| 693 | | m_dac->write_unsigned8(single_bit_sound + dac_sound + cassette_sound + cart_sound); |
| 686 | UINT8 sound_output = single_bit_sound + (status == SOUNDMUX_ENABLE ? m_dac_output << 1 : 0); |
| 687 | m_dac->write_unsigned8(sound_output); |
| 694 | 688 | |
| 695 | 689 | /* determine the cassette sound status */ |
| 696 | | cassette_state cas_sound = bCassSoundEnable ? CASSETTE_SPEAKER_ENABLED : CASSETTE_SPEAKER_MUTED; |
| 690 | cassette_state cas_sound = (status == (SOUNDMUX_ENABLE | SOUNDMUX_SEL1)) |
| 691 | ? CASSETTE_SPEAKER_ENABLED |
| 692 | : CASSETTE_SPEAKER_MUTED; |
| 697 | 693 | m_cassette->change_state(cas_sound, CASSETTE_MASK_SPEAKER); |
| 698 | 694 | |
| 699 | 695 | /* determine the cartridge sound status */ |
| 700 | | m_cococart->cart_set_line(COCOCART_LINE_SOUND_ENABLE, bCartSoundEnable ? COCOCART_LINE_VALUE_ASSERT : COCOCART_LINE_VALUE_CLEAR); |
| 696 | m_cococart->cart_set_line( |
| 697 | COCOCART_LINE_SOUND_ENABLE, |
| 698 | (status == (SOUNDMUX_ENABLE | SOUNDMUX_SEL2)) ? COCOCART_LINE_VALUE_ASSERT : COCOCART_LINE_VALUE_CLEAR); |
| 701 | 699 | } |
| 702 | 700 | |
| 703 | 701 | |
trunk/src/mess/machine/ti85.c
| r241545 | r241546 | |
| 154 | 154 | { |
| 155 | 155 | //address_space &space = m_maincpu->space(AS_PROGRAM); |
| 156 | 156 | |
| 157 | | m_membank1->set_bank(0); //Always flash page 0, well allmost |
| 157 | m_membank1->set_bank(m_booting ? 0x1f : 0); //Always flash page 0, well allmost |
| 158 | 158 | |
| 159 | 159 | if (m_ti83p_port4 & 1) |
| 160 | 160 | { |
| r241545 | r241546 | |
| 182 | 182 | { |
| 183 | 183 | //address_space &space = m_maincpu->space(AS_PROGRAM); |
| 184 | 184 | |
| 185 | | m_membank1->set_bank(m_ti8x_memory_page_0); |
| 185 | m_membank1->set_bank(m_booting ? (m_model==TI84P ? 0x3f : 0x7f) : 0); |
| 186 | 186 | |
| 187 | 187 | if (m_ti83p_port4 & 1) |
| 188 | 188 | { |
| r241545 | r241546 | |
| 273 | 273 | m_PCR = 0xc0; |
| 274 | 274 | } |
| 275 | 275 | |
| 276 | DIRECT_UPDATE_MEMBER(ti85_state::ti83p_direct_update_handler) |
| 277 | { |
| 278 | if (m_booting) |
| 279 | { |
| 280 | if (((m_ti83p_port4 & 1) && (address >= 0x4000 && address < 0xc000)) || (address >= 0x4000 && address < 0x8000)) |
| 281 | { |
| 282 | m_booting = false; |
| 283 | update_ti83p_memory(); |
| 284 | } |
| 285 | } |
| 286 | return address; |
| 287 | } |
| 288 | |
| 289 | |
| 276 | 290 | MACHINE_RESET_MEMBER(ti85_state,ti83p) |
| 277 | 291 | { |
| 278 | 292 | m_red_out = 0x00; |
| 279 | 293 | m_white_out = 0x00; |
| 280 | 294 | m_PCR = 0xc0; |
| 281 | 295 | |
| 282 | | m_ti8x_memory_page_0 = 0;//0x1f; |
| 283 | 296 | |
| 284 | | if (m_model == TI83P) |
| 285 | | { |
| 286 | | m_ti8x_memory_page_1 = 0x1f; |
| 287 | | } |
| 288 | | else if (m_model == TI84P) |
| 289 | | { |
| 290 | | m_ti8x_memory_page_1 = 0x3f; |
| 291 | | } |
| 292 | | else |
| 293 | | { |
| 294 | | m_ti8x_memory_page_1 = 0x7f; |
| 295 | | } |
| 296 | | |
| 297 | m_ti8x_memory_page_1 = 0; |
| 297 | 298 | m_ti8x_memory_page_2 = 0; |
| 298 | 299 | m_ti8x_memory_page_3 = 0; |
| 299 | 300 | m_ti83p_port4 = 1; |
| 301 | m_booting = true; |
| 300 | 302 | if (m_model == TI83P) |
| 301 | 303 | { |
| 302 | 304 | update_ti83p_memory(); |
| r241545 | r241546 | |
| 305 | 307 | { |
| 306 | 308 | update_ti83pse_memory(); |
| 307 | 309 | } |
| 308 | | |
| 309 | | m_maincpu->set_pc(0x8000); |
| 310 | 310 | } |
| 311 | 311 | |
| 312 | 312 | MACHINE_START_MEMBER(ti85_state,ti83p) |
| r241545 | r241546 | |
| 314 | 314 | m_model = TI83P; |
| 315 | 315 | //address_space &space = m_maincpu->space(AS_PROGRAM); |
| 316 | 316 | //m_bios = memregion("flash")->base(); |
| 317 | m_maincpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(FUNC(ti85_state::ti83p_direct_update_handler), this)); |
| 317 | 318 | |
| 318 | 319 | m_timer_interrupt_mask = 0; |
| 319 | 320 | m_timer_interrupt_status = 0; |
| 320 | 321 | m_ON_interrupt_mask = 0; |
| 321 | 322 | m_ON_interrupt_status = 0; |
| 322 | 323 | m_ON_pressed = 0; |
| 323 | | m_ti8x_memory_page_0 = 0;//0x1f; |
| 324 | | m_ti8x_memory_page_1 = 0x1f; |
| 324 | m_ti8x_memory_page_1 = 0; |
| 325 | 325 | m_ti8x_memory_page_2 = 0; |
| 326 | 326 | m_ti8x_memory_page_3 = 0; |
| 327 | 327 | m_LCD_memory_base = 0; |
| r241545 | r241546 | |
| 334 | 334 | m_ti83p_port4 = 1; |
| 335 | 335 | m_flash_unlocked = 0; |
| 336 | 336 | |
| 337 | m_booting = true; |
| 338 | |
| 337 | 339 | ti85_state::update_ti83p_memory(); |
| 338 | | m_maincpu->set_pc(0x8000); //this is a hack due to incomplete memory mapping emulation |
| 339 | 340 | |
| 340 | 341 | |
| 341 | 342 | machine().scheduler().timer_pulse(attotime::from_hz(256), timer_expired_delegate(FUNC(ti85_state::ti83_timer1_callback),this)); |
| r241545 | r241546 | |
| 345 | 346 | /* save states and debugging */ |
| 346 | 347 | save_item(NAME(m_timer_interrupt_status)); |
| 347 | 348 | save_item(NAME(m_timer_interrupt_mask)); |
| 348 | | save_item(NAME(m_ti8x_memory_page_0)); |
| 349 | 349 | save_item(NAME(m_ti8x_memory_page_1)); |
| 350 | 350 | save_item(NAME(m_ti8x_memory_page_2)); |
| 351 | 351 | save_item(NAME(m_ti8x_memory_page_3)); |
| 352 | 352 | save_item(NAME(m_ti83p_port4)); |
| 353 | save_item(NAME(m_booting)); |
| 353 | 354 | } |
| 354 | 355 | |
| 355 | 356 | void ti85_state::ti8xpse_init_common() |
| r241545 | r241546 | |
| 363 | 364 | m_ON_interrupt_mask = 0; |
| 364 | 365 | m_ON_interrupt_status = 0; |
| 365 | 366 | m_ON_pressed = 0; |
| 366 | | m_ti8x_memory_page_0 = 00;//0x7f; |
| 367 | | m_ti8x_memory_page_1 = (m_model != TI84P ) ? 0x7f : 0x3f ; |
| 367 | m_ti8x_memory_page_1 = 0; |
| 368 | 368 | m_ti8x_memory_page_2 = 0; |
| 369 | 369 | m_ti8x_memory_page_3 = 0; |
| 370 | 370 | m_LCD_memory_base = 0; |
| r241545 | r241546 | |
| 378 | 378 | m_flash_unlocked = 0; |
| 379 | 379 | |
| 380 | 380 | ti85_state::update_ti83pse_memory(); |
| 381 | | m_maincpu->set_pc(0x8000);//same as above, hack to work around incomplete memory mapping emulation |
| 381 | m_maincpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(FUNC(ti85_state::ti83p_direct_update_handler), this)); |
| 382 | 382 | |
| 383 | 383 | |
| 384 | 384 | machine().scheduler().timer_pulse(attotime::from_hz(256), timer_expired_delegate(FUNC(ti85_state::ti83_timer1_callback),this)); |
| r241545 | r241546 | |
| 391 | 391 | /* save states and debugging */ |
| 392 | 392 | save_item(NAME(m_ctimer_interrupt_status)); |
| 393 | 393 | save_item(NAME(m_timer_interrupt_status)); |
| 394 | | save_item(NAME(m_ti8x_memory_page_0)); |
| 395 | 394 | save_item(NAME(m_ti8x_memory_page_1)); |
| 396 | 395 | save_item(NAME(m_ti8x_memory_page_2)); |
| 397 | 396 | save_item(NAME(m_ti8x_memory_page_3)); |