X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=Pico%2FVideoPort.c;h=a4fe3c88bf740add99aa09a8df6de847ca64d839;hb=e5f426aa2e86d56357b8af2795e73cc0c9b17e8f;hp=bb5fe4aa418d4b96b20e4f37bc6f79c7624142ef;hpb=fa1e5e2948e9b06dec3353081081173f7ae4d742;p=picodrive.git diff --git a/Pico/VideoPort.c b/Pico/VideoPort.c index bb5fe4a..a4fe3c8 100644 --- a/Pico/VideoPort.c +++ b/Pico/VideoPort.c @@ -1,7 +1,7 @@ // This is part of Pico Library // (c) Copyright 2004 Dave, All rights reserved. -// (c) Copyright 2006 notaz, All rights reserved. +// (c) Copyright 2006-2007, Grazvydas "notaz" Ignotas // Free for non-commercial use. // For commercial use, separate licencing terms must be obtained. @@ -15,8 +15,12 @@ extern const unsigned char hcounts_40[]; extern const unsigned short vcounts[]; extern int rendstatus; +#ifndef UTYPES_DEFINED typedef unsigned char u8; typedef unsigned short u16; +typedef unsigned int u32; +#define UTYPES_DEFINED +#endif static __inline void AutoIncrement() @@ -89,7 +93,8 @@ static void DmaSlow(int len) if(Pico.m.scanline != -1) { Pico.m.dma_bytes += len; - SekSetCyclesLeft(SekCyclesLeft - CheckDMA()); + if ((PicoMCD&1) && (PicoOpt & 0x2000)) SekCyclesBurn(CheckDMA()); + else SekSetCyclesLeftNoMCD(SekCyclesLeftNoMCD - CheckDMA()); } else { // be approximate in non-accurate mode SekSetCyclesLeft(SekCyclesLeft - (len*(((488<<8)/167))>>8)); @@ -173,7 +178,7 @@ static void DmaSlow(int len) r = Pico.cram; for(a2=a&0x7f; len; len--) { - r[a2>>1] = (u16)*pd++;; // bit 0 is ignored + r[a2>>1] = (u16)*pd++; // bit 0 is ignored // AutoIncrement a2+=inc; // didn't src overlap? @@ -307,7 +312,7 @@ static void CommandChange() if (cmd&0x80) CommandDma(); } -void PicoVideoWrite(unsigned int a,unsigned short d) +PICO_INTERNAL_ASM void PicoVideoWrite(unsigned int a,unsigned short d) { struct PicoVideo *pvid=&Pico.video; @@ -389,7 +394,7 @@ void PicoVideoWrite(unsigned int a,unsigned short d) } } -unsigned int PicoVideoRead(unsigned int a) +PICO_INTERNAL_ASM unsigned int PicoVideoRead(unsigned int a) { unsigned int d=0;