Minor changes

This commit is contained in:
Angelo Salese 2011-08-17 23:19:56 +00:00
parent ea03fab2bd
commit 1fca6b29a8
2 changed files with 18 additions and 13 deletions

View File

@ -18,9 +18,9 @@ Notes:
TODO:
(Main issues)
- decap the SH-1, used for CD block (needed especially for Sega Saturn)
- IRQs: some games have some issues with timing accurate IRQs,check/fix all of them.
- IRQs: some games have some issues with timing accurate IRQs, check/fix all of them.
- The Cart-Dev mode hangs even with the -dev bios,I would like to see what it does on the real HW.
- IC13 games on the bios dev doesn't even load the cartridge / crashes the emulation at start-up,
- IC13 games on the dev bios doesn't even load the cartridge / crashes the emulation at start-up,
rom rearrange needed?
- SCU DSP still has its fair share of issues, it also needs to be converted to CPU structure;
- Add the RS232c interface (serial port),needed by fhboxers.
@ -28,15 +28,14 @@ TODO:
- Reimplement the idle skip if possible.
- clean up the I/Os, by using per-game specific mapped ports and rewrite it by using 16-bit trampolines
- Properly emulate the protection chips, used by several games (check stvprot.c for more info)
- Move SCU device into its respective files;
- Move SCU device into its respective file;
- Split ST-V and Saturn files properly;
- completely rewrite IOGA for ST-V;
(per-game issues)
- stress: accesses the Sound Memory Expansion Area (0x05a80000-0x05afffff), unknown purpose;
- smleague / finlarch: it randomly hangs / crashes,it works if you use a ridiculous MCFG_INTERLEAVE number,might need strict
SH-2 synching.
- suikoenb/shanhigw + others: why do we get 2 credits on startup? Cause might be by a communication with the M68k
- groovef / myfairld: why do we get 2 credits on startup? Cause might be by a communication with the M68k
- myfairld: Apparently this game gives a black screen (either test mode and in-game mode),but let it wait for about
10 seconds and the game will load everything. This is because of a hellishly slow m68k sub-routine located at 54c2.
Likely to not be a bug but an in-game design issue.
@ -500,7 +499,7 @@ static READ32_HANDLER( saturn_scu_r )
saturn_state *state = space->machine().driver_data<saturn_state>();
UINT32 res;
/*TODO: write only registers must return 0...*/
/*TODO: write only registers must return 0 or open bus */
switch(offset)
{
case 0x5c/4:
@ -2038,9 +2037,6 @@ static TIMER_DEVICE_CALLBACK( saturn_scanline )
{
video_update_vdp1(timer.machine());
if(STV_VDP1_VBE)
state->m_vdp1.framebuffer_clear_on_next_frame = 1;
if(!(state->m_scu.ism & IRQ_VDP1_END))
{
device_set_input_line_and_vector(state->m_maincpu, 0x2, HOLD_LINE, 0x4d);
@ -2070,6 +2066,9 @@ static TIMER_DEVICE_CALLBACK( saturn_scanline )
}
else
state->m_scu.ist |= (IRQ_VBLANK_IN);
if(STV_VDP1_VBE)
state->m_vdp1.framebuffer_clear_on_next_frame = 1;
}
else if((scanline % y_step) == 0 && scanline < vblank_line*y_step)
{

View File

@ -1959,19 +1959,25 @@ static void stv_vdp1_process_list(running_machine &machine)
switch (stv2_current_sprite.CMDCTRL & 0x000f)
{
case 0x0000:
if (VDP1_LOG) logerror ("Sprite List Normal Sprite\n");
if (VDP1_LOG) logerror ("Sprite List Normal Sprite (%d %d)\n",stv2_current_sprite.CMDXA,stv2_current_sprite.CMDYA);
stv2_current_sprite.ispoly = 0;
stv_vpd1_draw_normal_sprite(machine, cliprect, 0);
break;
case 0x0001:
if (VDP1_LOG) logerror ("Sprite List Scaled Sprite\n");
if (VDP1_LOG) logerror ("Sprite List Scaled Sprite (%d %d)\n",stv2_current_sprite.CMDXA,stv2_current_sprite.CMDYA);
stv2_current_sprite.ispoly = 0;
stv_vpd1_draw_scaled_sprite(machine, cliprect);
break;
case 0x0002:
if (VDP1_LOG) logerror ("Sprite List Distorted Sprite\n");
if (VDP1_LOG) logerror ("(A: %d %d)\n",stv2_current_sprite.CMDXA,stv2_current_sprite.CMDYA);
if (VDP1_LOG) logerror ("(B: %d %d)\n",stv2_current_sprite.CMDXB,stv2_current_sprite.CMDYB);
if (VDP1_LOG) logerror ("(C: %d %d)\n",stv2_current_sprite.CMDXC,stv2_current_sprite.CMDYC);
if (VDP1_LOG) logerror ("(D: %d %d)\n",stv2_current_sprite.CMDXD,stv2_current_sprite.CMDYD);
if (VDP1_LOG) logerror ("CMDPMOD = %04x\n",stv2_current_sprite.CMDPMOD);
stv2_current_sprite.ispoly = 0;
stv_vpd1_draw_distorted_sprite(machine, cliprect);
break;
@ -2011,7 +2017,7 @@ static void stv_vdp1_process_list(running_machine &machine)
break;
case 0x000a:
if (VDP1_LOG) logerror ("Sprite List Local Co-Ordinate Set\n");
if (VDP1_LOG) logerror ("Sprite List Local Co-Ordinate Set (%d %d)\n",(INT16)stv2_current_sprite.CMDXA,(INT16)stv2_current_sprite.CMDYA);
state->m_vdp1.local_x = (INT16)stv2_current_sprite.CMDXA;
state->m_vdp1.local_y = (INT16)stv2_current_sprite.CMDYA;
break;
@ -2112,7 +2118,7 @@ void video_update_vdp1(running_machine &machine)
case 1:/*Draw by request*/
break;
case 2:/*Automatic Draw*/
if ( framebuffer_changed )
if ( framebuffer_changed || VDP1_LOG )
{
/*set CEF to 1*/
stv_vdp1_process_list(machine);