diff --git a/src/burn/snd/burn_ymf278b.cpp b/src/burn/snd/burn_ymf278b.cpp index 478d32402..d16bb74c1 100644 --- a/src/burn/snd/burn_ymf278b.cpp +++ b/src/burn/snd/burn_ymf278b.cpp @@ -258,4 +258,5 @@ void BurnYMF278BScan(INT32 nAction, INT32* pnMin) #endif BurnTimerScan(nAction, pnMin); + ymf278b_scan(nAction, pnMin); } diff --git a/src/burn/snd/ymf278b.c b/src/burn/snd/ymf278b.c index b05656743..d0a3a0172 100644 --- a/src/burn/snd/ymf278b.c +++ b/src/burn/snd/ymf278b.c @@ -37,6 +37,7 @@ #ifdef FBA /* !!! FBA */ #include "ymf278b.h" +#include "state.h" typedef struct { int sample_rate; } MACHINE; MACHINE machine; MACHINE* Machine = &machine; @@ -662,6 +663,29 @@ static void ymf278b_data_port_C_w(int num, UINT8 data) } #ifdef FBA /* !!! FBA */ +void ymf278b_scan(INT32 nAction, INT32* pnMin) +{ + if (nAction & ACB_DRIVER_DATA) { + struct BurnArea ba; + char szName[] = "YMF278b Data"; + const UINT8 *rom_save; void *irq_cb_save; void *timer_cb_save; + + rom_save = YMF278B[0].rom; + irq_cb_save = YMF278B[0].irq_callback; + timer_cb_save = YMF278B[0].timer_callback; + + ba.Data = &YMF278B[0]; + ba.nLen = sizeof(YMF278BChip); + ba.nAddress = 0; + ba.szName = szName; + BurnAcb(&ba); + + YMF278B[0].rom = rom_save; + YMF278B[0].irq_callback = irq_cb_save; + YMF278B[0].timer_callback = timer_cb_save; + } +} + int ymf278b_start(INT8 num, UINT8 *rom, void (*irq_cb)(int, int), void (*timer_cb)(int, int, double), int clock, int rate) { int i; diff --git a/src/burn/snd/ymf278b.h b/src/burn/snd/ymf278b.h index 0925f7ae2..e7eb09fb0 100644 --- a/src/burn/snd/ymf278b.h +++ b/src/burn/snd/ymf278b.h @@ -18,6 +18,7 @@ struct YMF278B_interface { }; #ifdef FBA /* !!! FBA */ +void ymf278b_scan(INT32 nAction, INT32* pnMin); void ymf278b_pcm_update(int num, INT16 **outputs, int length); int ymf278b_timer_over(int num, int timer); int ymf278b_start(INT8 num, UINT8 *rom, void (*irq_cb)(int, int), void (*timer_cb)(int, int, double), int clock, int rate);