- u32 d=0;
-
- if ((a&0xe00000)==0xe00000) { u16 *pm=(u16 *)(Pico.ram+(a&0xfffe)); d = (pm[0]<<16)|pm[1]; goto end; } // Ram
-
- a&=0xfffffe;
-
- if (a<Pico.romsize) { u16 *pm=(u16 *)(Pico.rom+a); d = (pm[0]<<16)|pm[1]; goto end; } // Rom
-
- if ((a&0xfffff0)==0xc00000) {
- d = (PicoVideoRead(a)<<16)|PicoVideoRead(a+2);
- goto end;
- }
-
- elprintf(EL_UIO, "r32: %06x, %08x @%06x", a&0xffffff, d, SekPc);
-
-end:
- elprintf(EL_IO, "r32: %06x, %08x @%06x", a&0xffffff, d, SekPc);
- return d;
-}
-
-// -----------------------------------------------------------------
-// Write Ram
-/*
-void dump(u16 w)
-{
- static FILE *f[0x10] = { NULL, };
- char fname[32];
- int num = PicoPicohw.r12 & 0xf;
-
- w = (w << 8) | (w >> 8);
- sprintf(fname, "ldump%i.bin", num);
- if (f[num] == NULL)
- f[num] = fopen(fname, "wb");
- fwrite(&w, 1, 2, f[num]);
- //fclose(f);
-}
-*/
-
-static void PicoWritePico8(u32 a,u8 d)
-{
- elprintf(EL_IO, "w8 : %06x, %02x @%06x", a&0xffffff, d, SekPc);
-
- if ((a&0xe00000)==0xe00000) { *(u8 *)(Pico.ram+((a^1)&0xffff))=d; return; } // Ram
-
- a&=0xffffff;
- if ((a&0xfffff9)==0xc00011) { if (PicoOpt&2) SN76496Write(d); return; } // PSG Sound
-
- if ((a&0xfffff0)==0xc00000) { // VDP
- d&=0xff;
- PicoVideoWrite(a,(u16)(d|(d<<8))); // Byte access gets mirrored
- return;
- }
-
- switch (a & 0x1f) {