struct DMC { unsigned length_counter; bool irq_pending; uint4 period; unsigned period_counter; bool irq_enable; bool loop_mode; uint8 dac_latch; uint8 addr_latch; uint8 length_latch; uint15 read_addr; unsigned dma_delay_counter; uint3 bit_counter; bool have_dma_buffer; uint8 dma_buffer; bool have_sample; uint8 sample; void start(); void stop(); uint8 clock(); void power(); void reset(); void serialize(serializer&); } dmc;