MCPcopy Create free account
hub / github.com/DaedalusX64/daedalus / CPU_SetCompareEvent

Function CPU_SetCompareEvent

Source/Core/CPU.cpp:194–225  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

192}
193
194static void CPU_SetCompareEvent( s32 count )
195{
196 {
197 LOCK_EVENT_QUEUE();
198
199#ifdef DAEDALUS_ENABLE_ASSERTS
200 DAEDALUS_ASSERT( count > 0, "Count is invalid" );
201#endif
202 //
203 // Remove any existing compare events. Need to adjust any subsequent timer's count.
204 //
205 for( u32 i {}; i < gCPUState.NumEvents; ++i )
206 {
207 if( gCPUState.Events[ i ].mEventType == CPU_EVENT_COMPARE )
208 {
209 //
210 // Check for a following event, and remove
211 //
212 if( i+1 < gCPUState.NumEvents )
213 {
214 gCPUState.Events[ i+1 ].mCount += gCPUState.Events[ i ].mCount;
215 u32 num_to_copy {gCPUState.NumEvents - (i+1)};
216 memmove( &gCPUState.Events[ i ], &gCPUState.Events[ i+1 ], num_to_copy * sizeof( CPUEvent ) );
217 }
218 gCPUState.NumEvents--;
219 break;
220 }
221 }
222 }
223
224 CPU_AddEvent( count, CPU_EVENT_COMPARE );
225}
226
227static ECPUEventType CPU_PopEvent()
228{

Callers 1

CPU_SetCompareFunction · 0.85

Calls 1

CPU_AddEventFunction · 0.85

Tested by

no test coverage detected