6 * This work is licensed under the terms of MAME license.
7 * See COPYING file in the top-level directory.
9 #include "../pico_int.h"
14 picohw_state PicoPicohw;
18 PICO_INTERNAL void PicoReratePico(void)
21 PicoPicohw.xpcm_ptr = PicoPicohw.xpcm_buffer + PicoPicohw.fifo_bytes;
24 static void PicoLinePico(void)
26 // update sound so that irq for FIFO refill is generated
27 if ((PicoPicohw.fifo_bytes | !PicoPicoPCMBusyN()) && (Pico.m.scanline & 7) == 7)
28 PsndDoPCM(cycles_68k_to_z80(SekCyclesDone() - Pico.t.m68c_frame_start));
31 static void PicoResetPico(void)
35 PicoPicohw.xpcm_ptr = PicoPicohw.xpcm_buffer;
36 PicoPicohw.fifo_bytes = 0;
39 PicoPicohw.pen_pos[0] = PicoPicohw.pen_pos[1] = 0x8000;
45 // map version register
47 switch (Pico.m.hardware >> 6) {
48 case 0: PicoPicohw.r1 = 0x40; break; // JP NTSC
49 case 1: PicoPicohw.r1 = 0x00; break; // JP PAL
50 case 2: PicoPicohw.r1 = 0x60; break; // US
51 case 3: PicoPicohw.r1 = 0x20; break; // EU
55 PICO_INTERNAL void PicoInitPico(void)
57 elprintf(EL_STATUS, "Pico startup");
58 PicoLineHook = PicoLinePico;
59 PicoResetHook = PicoResetPico;
61 PicoIn.AHW = PAHW_PICO;
62 memset(&PicoPicohw, 0, sizeof(PicoPicohw));
63 PicoPicohw.pen_pos[0] = PicoPicohw.pen_pos[1] = 0x8000;