h8: compounded duh (nw)

This commit is contained in:
Olivier Galibert 2014-04-21 20:21:46 +00:00
parent f67c7598c1
commit b4f57de540
8 changed files with 21 additions and 2 deletions

View File

@ -233,6 +233,10 @@ void h83006_device::internal_update(UINT64 current_time)
add_event(event_time, sci0->internal_update(current_time));
add_event(event_time, sci1->internal_update(current_time));
add_event(event_time, sci2->internal_update(current_time));
add_event(event_time, timer8_0->internal_update(current_time));
add_event(event_time, timer8_1->internal_update(current_time));
add_event(event_time, timer8_2->internal_update(current_time));
add_event(event_time, timer8_3->internal_update(current_time));
add_event(event_time, timer16_0->internal_update(current_time));
add_event(event_time, timer16_1->internal_update(current_time));
add_event(event_time, timer16_2->internal_update(current_time));

View File

@ -188,6 +188,10 @@ void h83008_device::internal_update(UINT64 current_time)
add_event(event_time, adc->internal_update(current_time));
add_event(event_time, sci0->internal_update(current_time));
add_event(event_time, sci1->internal_update(current_time));
add_event(event_time, timer8_0->internal_update(current_time));
add_event(event_time, timer8_1->internal_update(current_time));
add_event(event_time, timer8_2->internal_update(current_time));
add_event(event_time, timer8_3->internal_update(current_time));
add_event(event_time, timer16_0->internal_update(current_time));
add_event(event_time, timer16_1->internal_update(current_time));
add_event(event_time, timer16_2->internal_update(current_time));

View File

@ -240,8 +240,10 @@ void h8_timer16_channel_device::update_counter(UINT64 cur_time)
void h8_timer16_channel_device::recalc_event(UINT64 cur_time)
{
if(!channel_active)
if(!channel_active) {
event_time = 0;
return;
}
bool update_cpu = cur_time == 0;
UINT64 old_event_time = event_time;
@ -288,6 +290,7 @@ void h8_timer16_channel_device::recalc_event(UINT64 cur_time)
if(event_delay > new_delay)
event_delay = new_delay;
}
if(event_delay != 0xffffffff)
event_time = ((((cur_time + (1ULL << clock_divider) - phase) >> clock_divider) + event_delay - 1) << clock_divider) + phase;
else

View File

@ -290,7 +290,7 @@ void h8_timer8_channel_device::recalc_event(UINT64 cur_time)
}
if(event_delay != 0xffffffff)
event_time = ((((cur_time + clock_divider) >> clock_divider) + event_delay - 1) << clock_divider) + clock_divider/2;
event_time = ((((cur_time + clock_divider) / clock_divider) + event_delay - 1) * clock_divider) + clock_divider/2;
else
event_time = 0;

View File

@ -312,6 +312,8 @@ void h8s2245_device::internal_update(UINT64 current_time)
add_event(event_time, sci0->internal_update(current_time));
add_event(event_time, sci1->internal_update(current_time));
add_event(event_time, sci2->internal_update(current_time));
add_event(event_time, timer8_0->internal_update(current_time));
add_event(event_time, timer8_1->internal_update(current_time));
add_event(event_time, timer16_0->internal_update(current_time));
add_event(event_time, timer16_1->internal_update(current_time));
add_event(event_time, timer16_2->internal_update(current_time));

View File

@ -417,6 +417,8 @@ void h8s2320_device::internal_update(UINT64 current_time)
add_event(event_time, sci0->internal_update(current_time));
add_event(event_time, sci1->internal_update(current_time));
add_event(event_time, sci2->internal_update(current_time));
add_event(event_time, timer8_0->internal_update(current_time));
add_event(event_time, timer8_1->internal_update(current_time));
add_event(event_time, timer16_0->internal_update(current_time));
add_event(event_time, timer16_1->internal_update(current_time));
add_event(event_time, timer16_2->internal_update(current_time));

View File

@ -389,6 +389,8 @@ void h8s2357_device::internal_update(UINT64 current_time)
add_event(event_time, sci0->internal_update(current_time));
add_event(event_time, sci1->internal_update(current_time));
add_event(event_time, sci2->internal_update(current_time));
add_event(event_time, timer8_0->internal_update(current_time));
add_event(event_time, timer8_1->internal_update(current_time));
add_event(event_time, timer16_0->internal_update(current_time));
add_event(event_time, timer16_1->internal_update(current_time));
add_event(event_time, timer16_2->internal_update(current_time));

View File

@ -396,6 +396,8 @@ void h8s2655_device::internal_update(UINT64 current_time)
add_event(event_time, sci0->internal_update(current_time));
add_event(event_time, sci1->internal_update(current_time));
add_event(event_time, sci2->internal_update(current_time));
add_event(event_time, timer8_0->internal_update(current_time));
add_event(event_time, timer8_1->internal_update(current_time));
add_event(event_time, timer16_0->internal_update(current_time));
add_event(event_time, timer16_1->internal_update(current_time));
add_event(event_time, timer16_2->internal_update(current_time));