@@ -40,7 +40,8 @@ struct sio2man_internal_data
40
40
int m_intr_sema ;
41
41
int m_transfer_semaphore ;
42
42
// Unofficial: backwards compatibility for libraries using 1.3 SDK
43
- int m_sdk13x_flag ;
43
+ int m_sdk13x_curflag ;
44
+ int m_sdk13x_totalflag ;
44
45
sio2_mtap_change_slot_cb_t m_mtap_change_slot_cb ;
45
46
sio2_mtap_get_slot_max_cb_t m_mtap_get_slot_max_cb ;
46
47
sio2_mtap_get_slot_max2_cb_t m_mtap_get_slot_max2_cb ;
@@ -311,7 +312,8 @@ int _start(int ac, char **av)
311
312
if ( g_sio2man_data .m_inited )
312
313
return 1 ;
313
314
g_sio2man_data .m_inited = 1 ;
314
- g_sio2man_data .m_sdk13x_flag = 0 ;
315
+ g_sio2man_data .m_sdk13x_curflag = 0 ;
316
+ g_sio2man_data .m_sdk13x_totalflag = 3 ;
315
317
// Unofficial: remove unneeded thread priority argument handler
316
318
// Unofficial: use setters instead of setting variable directly
317
319
sio2_mtap_change_slot_set (NULL );
@@ -409,7 +411,7 @@ int sio2_transfer(sio2_transfer_data_t *td)
409
411
sio2_set_ctrl_1 ();
410
412
sio2_wait_for_intr ();
411
413
recv_td (td );
412
- if ( g_sio2man_data .m_sdk13x_flag )
414
+ if ( g_sio2man_data .m_sdk13x_curflag )
413
415
sio2_transfer_reset ();
414
416
#ifdef SIO2LOG
415
417
log_flush (0 );
@@ -426,18 +428,24 @@ void sio2_pad_transfer_init(void)
426
428
#ifdef SIO2LOG
427
429
log_default (LOG_PAD_READY );
428
430
#endif
429
- g_sio2man_data .m_sdk13x_flag = 0 ;
431
+ g_sio2man_data .m_sdk13x_curflag = 0 ;
430
432
}
431
433
432
434
void sio2_pad_transfer_init_possiblysdk13x (void )
433
435
{
434
436
sio2_pad_transfer_init ();
435
- g_sio2man_data .m_sdk13x_flag = 1 ;
437
+ g_sio2man_data .m_sdk13x_curflag |= g_sio2man_data .m_sdk13x_totalflag & 1 ;
438
+ }
439
+
440
+ void sio2_mc_transfer_init_possiblysdk13x (void )
441
+ {
442
+ sio2_pad_transfer_init ();
443
+ g_sio2man_data .m_sdk13x_curflag |= g_sio2man_data .m_sdk13x_totalflag & 2 ;
436
444
}
437
445
438
446
void sio2_transfer_reset (void )
439
447
{
440
- g_sio2man_data .m_sdk13x_flag = 0 ;
448
+ g_sio2man_data .m_sdk13x_curflag = 0 ;
441
449
SignalSema (g_sio2man_data .m_transfer_semaphore );
442
450
#ifdef SIO2LOG
443
451
log_default (LOG_RESET );
@@ -491,7 +499,7 @@ void sio2_mtap_update_slots_set(sio2_mtap_update_slots_t cb)
491
499
492
500
int sio2_mtap_change_slot (s32 * arg )
493
501
{
494
- g_sio2man_data .m_sdk13x_flag = 0 ;
502
+ g_sio2man_data .m_sdk13x_totalflag &= ~ g_sio2man_data . m_sdk13x_curflag ;
495
503
// Unofficial: unconditionally call callback
496
504
return g_sio2man_data .m_mtap_change_slot_cb (arg );
497
505
}
0 commit comments