Merge branch 'release0262' into master

This commit is contained in:
Vas Crabb 2024-01-30 07:14:15 +11:00
commit 6ff4e69b09
8 changed files with 35 additions and 74 deletions

View File

@ -155,7 +155,7 @@ license:CC0-1.0
70 *EC0070-JPM J-Pop Mix Volume 34
71 *EC0071-JPM J-Pop Mix Volume 35
72 *EC0072-JPM J-Pop Mix Volume 36
73 *EC0073-MKC Mood Kayou Collection Volume 1
73 *EC0073-MKC Mood Kayō Collection Volume 1
74 *EC0074-JPM J-Pop Mix Volume 37
75 *EC0075-JPM J-Pop Mix Volume 38
76 *EC0076-JPM J-Pop Mix Volume 39
@ -1026,7 +1026,7 @@ license:CC0-1.0
</software>
<software name="ec0073">
<description>Mood Kayou Collection Volume 1 (Japan) (EC0073-MKC)</description>
<description>Mood Kayō Collection Volume 1 (Japan) (EC0073-MKC)</description>
<year>2001</year>
<publisher>Takara</publisher>
<info name="alt_title" value="ムード歌謡コレクション Vol.1" />

View File

@ -6238,9 +6238,10 @@ license:CC0-1.0
</software>
<software name="samsho4k" cloneof="samsho4">
<description>Pae Wang Jeon Seol / Legend of a Warrior (Korean censored Samurai Shodown IV)</description>
<description>Paewang Jeonseol / Legend of a Warrior (Korean censored Samurai Shodown IV)</description>
<year>1996</year>
<publisher>SNK</publisher>
<info name="alt_title" value="覇王傳說" />
<sharedfeat name="release" value="MVS" /> <!-- Unknown if it was also released on AES -->
<sharedfeat name="compatibility" value="MVS,AES" />
<part name="cart" interface="neo_cart">

View File

@ -407,9 +407,6 @@ int mc6845_device::vsync_r()
void mc6845_device::recompute_parameters(bool postload)
{
bool zero_horizontal_width = (m_horiz_disp == 0);
bool zero_vertical_height = (m_vert_disp == 0);
uint16_t hsync_on_pos, hsync_off_pos, vsync_on_pos, vsync_off_pos;
uint16_t video_char_height = m_max_ras_addr + (MODE_INTERLACE_AND_VIDEO ? m_interlace_adjust : m_noninterlace_adjust); // fix garbage at the bottom of the screen (eg victor9k)
@ -421,22 +418,8 @@ void mc6845_device::recompute_parameters(bool postload)
uint16_t vert_pix_total = (m_vert_char_total + 1) * video_char_height + m_vert_total_adj;
/* determine the visible area, avoid division by 0 */
uint16_t visible_width = zero_horizontal_width ? m_visible_width : (m_horiz_disp * m_hpixels_per_column);
uint16_t visible_height = zero_vertical_height ? m_visible_height : (m_vert_disp * video_char_height);
// Check to see visual width or height needs to be adjusted due to changes with total
if (zero_horizontal_width || zero_vertical_height)
{
if (visible_width > horiz_pix_total)
{
visible_width = horiz_pix_total;
}
if (visible_height > vert_pix_total)
{
visible_height = vert_pix_total;
}
}
uint16_t max_visible_x = m_horiz_disp * m_hpixels_per_column - 1;
uint16_t max_visible_y = m_vert_disp * video_char_height - 1;
/* determine the syncing positions */
uint8_t horiz_sync_char_width = m_sync_width & 0x0f;
@ -470,13 +453,13 @@ void mc6845_device::recompute_parameters(bool postload)
/* update only if screen parameters changed, unless we are coming here after loading the saved state */
if (postload ||
(horiz_pix_total != m_horiz_pix_total) || (vert_pix_total != m_vert_pix_total) ||
(visible_width != m_visible_width) || (visible_height != m_visible_height) ||
(max_visible_x != m_max_visible_x) || (max_visible_y != m_max_visible_y) ||
(hsync_on_pos != m_hsync_on_pos) || (vsync_on_pos != m_vsync_on_pos) ||
(hsync_off_pos != m_hsync_off_pos) || (vsync_off_pos != m_vsync_off_pos))
{
/* update the screen if we have valid data */
if ((horiz_pix_total > 0) && (visible_width <= horiz_pix_total) &&
(vert_pix_total > 0) && (visible_height <= vert_pix_total) &&
if ((horiz_pix_total > 0) && (max_visible_x < horiz_pix_total) &&
(vert_pix_total > 0) && (max_visible_y < vert_pix_total) &&
(hsync_on_pos <= horiz_pix_total) && (vsync_on_pos <= vert_pix_total) &&
(hsync_on_pos != hsync_off_pos))
{
@ -491,33 +474,23 @@ void mc6845_device::recompute_parameters(bool postload)
// Also, the mode-register change needs to be added to the changed-parameter tests above.
if (MODE_INTERLACE_AND_VIDEO)
{
//visible_height *= 2;
//max_visible_y *= 2;
//vert_pix_total *= 2;
}
if(m_show_border_area)
{
visarea.set(0, horiz_pix_total-2, 0, vert_pix_total-2);
}
else
{
visarea.set(
0 + m_visarea_adjust_min_x, visible_width - 1 + m_visarea_adjust_max_x,
0 + m_visarea_adjust_min_y, visible_height - 1 + m_visarea_adjust_max_y);
}
visarea.set(0 + m_visarea_adjust_min_x, max_visible_x + m_visarea_adjust_max_x, 0 + m_visarea_adjust_min_y, max_visible_y + m_visarea_adjust_max_y);
LOGCONF("M6845 config screen: HTOTAL: %d VTOTAL: %d VIS_WIDTH: %d VIS_HEIGHT: %d HSYNC: %d-%d VSYNC: %d-%d Freq: %ffps\n",
horiz_pix_total, vert_pix_total, visible_width, visible_height, hsync_on_pos, hsync_off_pos - 1, vsync_on_pos, vsync_off_pos - 1, refresh.as_hz());
LOGCONF("M6845 config screen: HTOTAL: %d VTOTAL: %d MAX_X: %d MAX_Y: %d HSYNC: %d-%d VSYNC: %d-%d Freq: %ffps\n",
horiz_pix_total, vert_pix_total, max_visible_x, max_visible_y, hsync_on_pos, hsync_off_pos - 1, vsync_on_pos, vsync_off_pos - 1, refresh.as_hz());
if (has_screen())
{
screen().configure(horiz_pix_total, vert_pix_total, visarea, refresh.as_attoseconds());
}
if(!m_reconfigure_cb.isnull())
{
m_reconfigure_cb(horiz_pix_total, vert_pix_total, visarea, refresh.as_attoseconds());
}
m_has_valid_parameters = true;
}
@ -526,8 +499,8 @@ void mc6845_device::recompute_parameters(bool postload)
m_horiz_pix_total = horiz_pix_total;
m_vert_pix_total = vert_pix_total;
m_visible_width = visible_width;
m_visible_height = visible_height;
m_max_visible_x = max_visible_x;
m_max_visible_y = max_visible_y;
m_hsync_on_pos = hsync_on_pos;
m_hsync_off_pos = hsync_off_pos;
m_vsync_on_pos = vsync_on_pos;
@ -703,7 +676,6 @@ bool hd6845s_device::check_cursor_visible(uint16_t ra, uint16_t line_addr)
TIMER_CALLBACK_MEMBER(mc6845_device::handle_line_timer)
{
bool new_vsync = m_vsync;
bool nonzero_horizontal_width = (m_horiz_disp != 0);
m_character_counter = 0;
m_cursor_x = -1;
@ -781,11 +753,8 @@ TIMER_CALLBACK_MEMBER(mc6845_device::handle_line_timer)
if ( m_line_enable_ff )
{
if (nonzero_horizontal_width)
{
/* Schedule DE off signal change */
m_de_off_timer->adjust(cclks_to_attotime(m_horiz_disp));
}
/* Schedule DE off signal change */
m_de_off_timer->adjust(cclks_to_attotime(m_horiz_disp));
/* Is cursor visible on this line? */
if (check_cursor_visible(m_raster_counter, m_line_address))
@ -805,7 +774,7 @@ TIMER_CALLBACK_MEMBER(mc6845_device::handle_line_timer)
/* Set VSYNC and DE signals */
set_vsync( new_vsync );
set_de( (m_line_enable_ff && nonzero_horizontal_width) ? true : false );
set_de( m_line_enable_ff ? true : false );
}
@ -950,7 +919,6 @@ uint8_t mc6845_device::draw_scanline(int y, bitmap_rgb32 &bitmap, const rectangl
{
/* compute the current raster line */
uint8_t ra = y % (m_max_ras_addr + (MODE_INTERLACE_AND_VIDEO ? m_interlace_adjust : m_noninterlace_adjust));
bool nonzero_horizontal_width = (m_horiz_disp != 0);
// Check if the cursor is visible and is on this scanline.
int cursor_visible = check_cursor_visible(ra, m_current_disp_addr);
@ -959,7 +927,7 @@ uint8_t mc6845_device::draw_scanline(int y, bitmap_rgb32 &bitmap, const rectangl
// is in units of characters and is relative to the start of the
// displayable area, not relative to the screen bitmap origin.
int8_t cursor_x = cursor_visible ? (m_cursor_addr - m_current_disp_addr) : -1;
int de = ((y < m_visible_height) && nonzero_horizontal_width) ? 1 : 0;
int de = (y <= m_max_visible_y) ? 1 : 0;
int vbp = m_vert_pix_total - m_vsync_off_pos;
if (vbp < 0) vbp = 0;
int hbp = m_horiz_pix_total - m_hsync_off_pos;
@ -1073,11 +1041,10 @@ void mc6845_device::device_start()
m_upd_adr_timer = timer_alloc(FUNC(mc6845_device::adr_update_tick), this);
m_upd_trans_timer = timer_alloc(FUNC(mc6845_device::transparent_update_tick), this);
// Make sure m_horiz_char_total/m_vert_char_total are less than m_horiz_disp/m_vert_disp
// to avoid calculating startup resolution before values are valid
m_horiz_char_total = 0;
/* Use some large startup values */
m_horiz_char_total = 0xff;
m_max_ras_addr = 0x1f;
m_vert_char_total = 0;
m_vert_char_total = 0x7f;
m_mode_control = 0x00;
m_supports_disp_start_addr_r = false; // MC6845 can not read Display Start (double checked on datasheet)
@ -1097,13 +1064,13 @@ void mc6845_device::device_start()
m_de = 0;
m_sync_width = 1;
m_horiz_pix_total = m_vert_pix_total = 0;
m_visible_width = m_visible_height = 0;
m_max_visible_x = m_max_visible_y = 0;
m_hsync_on_pos = m_vsync_on_pos = 0;
m_hsync_off_pos = m_vsync_off_pos = 0;
m_vsync = m_hsync = 0;
m_cur = 0;
m_line_counter = 0;
m_horiz_disp = m_vert_disp = 0x7f;
m_horiz_disp = m_vert_disp = 0;
m_vert_sync_pos = 0;
m_vert_total_adj = 0;
m_cursor_start_ras = m_cursor_end_ras = m_cursor_addr = 0;

View File

@ -202,8 +202,8 @@ protected:
/* These computed are used to define the screen parameters for a driver */
uint16_t m_horiz_pix_total;
uint16_t m_vert_pix_total;
uint16_t m_visible_width;
uint16_t m_visible_height;
uint16_t m_max_visible_x;
uint16_t m_max_visible_y;
uint16_t m_hsync_on_pos;
uint16_t m_hsync_off_pos;
uint16_t m_vsync_on_pos;

View File

@ -19,6 +19,8 @@
- 49/50 row mode only shows half the screen.
- In 49/50 row mode, character descenders are cut off.
- Screen saver does not disable the screen
- With superset slot option
- Screensaver freezes the screen instead of blanking the screen
****************************************************************************/
/***************************************************************************
@ -879,7 +881,6 @@ ROM_START( h19 )
ROM_LOAD( "2716_444-37_h19keyb.u445", 0x0000, 0x0800, CRC(5c3e6972) SHA1(df49ce64ae48652346a91648c58178a34fb37d3c))
ROM_END
ROM_START( super19 )
// Super-19 ROM
ROM_REGION( 0x1000, "maincpu", ROMREGION_ERASEFF )
@ -894,7 +895,6 @@ ROM_START( super19 )
ROM_LOAD( "2716_444-37_h19keyb.u445", 0x0000, 0x0800, CRC(5c3e6972) SHA1(df49ce64ae48652346a91648c58178a34fb37d3c))
ROM_END
ROM_START( superset )
// SuperSet ROM
ROM_REGION( 0x4000, "maincpu", ROMREGION_ERASEFF )
@ -913,7 +913,6 @@ ROM_START( superset )
ROM_LOAD( "2716_101-422_superset_kbd.u445", 0x0000, 0x0800, CRC(549d15b3) SHA1(981962e5e05bbdc5a66b0e86870853ce5596e877))
ROM_END
ROM_START( watz19 )
ROM_REGION( 0x1000, "maincpu", ROMREGION_ERASEFF )
ROM_DEFAULT_BIOS("watzman-a")
@ -934,7 +933,6 @@ ROM_START( watz19 )
ROM_LOAD( "keybd.u445", 0x0000, 0x0800, CRC(58dc8217) SHA1(1b23705290bdf9fc6342065c6a528c04bff67b13))
ROM_END
ROM_START( ultra19 )
// Ultra ROM
ROM_REGION( 0x1000, "maincpu", ROMREGION_ERASEFF )
@ -949,7 +947,6 @@ ROM_START( ultra19 )
ROM_LOAD( "2716_h19_ultra_keyboard.u445", 0x0000, 0x0800, CRC(76130c92) SHA1(ca39c602af48505139d2750a084b5f8f0e662ff7))
ROM_END
ROM_START( gp19 )
// GP-19 ROMs
ROM_REGION( 0x3000, "maincpu", ROMREGION_ERASEFF )
@ -966,7 +963,6 @@ ROM_START( gp19 )
ROM_LOAD( "2716_444-37_h19keyb.u445", 0x0000, 0x0800, CRC(5c3e6972) SHA1(df49ce64ae48652346a91648c58178a34fb37d3c))
ROM_END
ROM_START( imaginator )
// Program code
ROM_REGION( 0x4000, "maincpu", ROMREGION_ERASEFF )
@ -1108,7 +1104,6 @@ ioport_constructor heath_super19_tlb_device::device_input_ports() const
return INPUT_PORTS_NAME(super19);
}
/**
* Superset ROM
*
@ -1256,7 +1251,6 @@ void heath_superset_tlb_device::out2_internal(int data)
m_selected_char_set = (m_selected_char_set & 0x0a) | (data & 0x01);
}
/**
* Watzman ROM
*
@ -1277,7 +1271,6 @@ ioport_constructor heath_watz_tlb_device::device_input_ports() const
return INPUT_PORTS_NAME(watz19);
}
/**
* UltraROM
*
@ -1316,7 +1309,6 @@ ioport_constructor heath_ultra_tlb_device::device_input_ports() const
return INPUT_PORTS_NAME(ultra19);
}
/**
* Northwest Digital Systems GP-19 add-in board
*/
@ -1413,6 +1405,7 @@ void heath_gp19_tlb_device::latch_u5_w(uint8_t data)
}
}
MC6845_UPDATE_ROW(heath_gp19_tlb_device::crtc_update_row)
{
rgb_t const *const palette = m_palette->palette()->entry_list_raw();

View File

@ -11946,7 +11946,7 @@ GAME( 1996, ssideki4, neogeo, neobase, neogeo, mvs_led_state, empty_ini
GAME( 1996, kizuna, neogeo, neobase, neogeo, mvs_led_state, empty_init, ROT0, "SNK", "Kizuna Encounter - Super Tag Battle / Fu'un Super Tag Battle", MACHINE_SUPPORTS_SAVE )
GAME( 1996, kizuna4p, kizuna, kizuna4p, kizuna4p, mvs_state, empty_init, ROT0, "SNK", "Kizuna Encounter - Super Tag Battle 4 Way Battle Version / Fu'un Super Tag Battle Special Version", MACHINE_SUPPORTS_SAVE )
GAME( 1996, samsho4, neogeo, neobase, neogeo, mvs_led_state, empty_init, ROT0, "SNK", "Samurai Shodown IV - Amakusa's Revenge / Samurai Spirits - Amakusa Kourin (NGM-222 ~ NGH-222)", MACHINE_SUPPORTS_SAVE )
GAME( 1996, samsho4k, samsho4, neobase, neogeo, mvs_led_state, empty_init, ROT0, "SNK", "Pae Wang Jeon Seol / Legend of a Warrior (Korean censored Samurai Shodown IV)", MACHINE_SUPPORTS_SAVE )
GAME( 1996, samsho4k, samsho4, neobase, neogeo, mvs_led_state, empty_init, ROT0, "SNK", "Paewang Jeonseol / Legend of a Warrior (Korean censored Samurai Shodown IV)", MACHINE_SUPPORTS_SAVE )
GAME( 1996, rbffspec, neogeo, neobase, neogeo, mvs_led_state, empty_init, ROT0, "SNK", "Real Bout Fatal Fury Special / Real Bout Garou Densetsu Special", MACHINE_SUPPORTS_SAVE )
GAME( 1996, rbffspeck, rbffspec, neobase, neogeo, mvs_led_state, empty_init, ROT0, "SNK", "Real Bout Fatal Fury Special / Real Bout Garou Densetsu Special (Korean release)", MACHINE_SUPPORTS_SAVE )
GAME( 1997, kof97, neogeo, neobase, neogeo, mvs_led_state, empty_init, ROT0, "SNK", "The King of Fighters '97 (NGM-2320)", MACHINE_SUPPORTS_SAVE )

View File

@ -69,9 +69,9 @@ void rmnimbus_state::nimbus_io(address_map &map)
static INPUT_PORTS_START( nimbus )
PORT_START("config")
PORT_CONFNAME( 0x01, 0x01, "Mouse emulation mode" )
PORT_CONFSETTING( 0x00, "Real" )
PORT_CONFSETTING( 0x01, "HLE" )
PORT_CONFNAME( 0x01, 0x01, "Mouse mode" )
PORT_CONFSETTING( 0x00, "Emulate incremental encoders" )
PORT_CONFSETTING( 0x01, "Simulate BIOS handler" )
PORT_START(JOYSTICK0_TAG)
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) PORT_8WAY

View File

@ -41,7 +41,7 @@ This is a 3D system comprising....
There are only 7 games on this system. In some cases the game name changes depending on the BIOS region.
The games in order of release are....
001 Roads Edge / Round Trip RV
002 Samurai Shodown 64 / Samurai Spirits / Pae Wang Jeon Seol 64
002 Samurai Shodown 64 / Samurai Spirits / 64 (Paewang Jeonseol 64)
003 Xtreme Rally / Off Beat Racer!
004 Beast Busters: Second Nightmare
005 Samurai Shodown 64: Warriors Rage / Samurai Spirits 2: Asura Zanmaden
@ -3215,7 +3215,7 @@ GAME( 1997, hng64, 0, hng64_default, hng64, hng64_state, init_hn
/* Games */
GAME( 1997, roadedge, hng64, hng64_drive, hng64_drive, hng64_state, init_roadedge, ROT0, "SNK", "Roads Edge / Round Trip RV (rev.B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) /* 001 */
GAME( 1998, sams64, hng64, hng64_fight, hng64_fight, hng64_state, init_ss64, ROT0, "SNK", "Samurai Shodown 64 / Samurai Spirits / Pae Wang Jeon Seol 64", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) /* 002 */
GAME( 1998, sams64, hng64, hng64_fight, hng64_fight, hng64_state, init_ss64, ROT0, "SNK", "Samurai Shodown 64 / Samurai Spirits / Paewang Jeonseol 64", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) /* 002 */
GAME( 1998, xrally, hng64, hng64_drive, hng64_drive, hng64_state, init_hng64_drive, ROT0, "SNK", "Xtreme Rally / Off Beat Racer!", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) /* 003 */
GAME( 1998, bbust2, hng64, hng64_shoot, hng64_shoot, hng64_state, init_hng64_shoot, ROT0, "SNK / ADK", "Beast Busters: Second Nightmare", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) /* 004 */ // ADK credited in the ending sequence
GAME( 1998, sams64_2, hng64, hng64_fight, hng64_fight, hng64_state, init_ss64, ROT0, "SNK", "Samurai Shodown 64: Warriors Rage / Samurai Spirits 2: Asura Zanmaden", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) /* 005 */