supporting caanoo, line doublers, refactoring

git-svn-id: file:///home/notaz/opt/svn/PicoDrive@893 be3aeb3a-fb24-0410-a615-afba39da0efa
This commit is contained in:
notaz 2010-09-15 13:48:55 +00:00
parent bf61bea0f2
commit f4750ee051
24 changed files with 349 additions and 222 deletions

View file

@ -1590,3 +1590,19 @@ void PicoDrawSetInternalBuf(void *dest, int increment)
}
}
void PicoDrawSetCallbacks(int (*begin)(unsigned int num), int (*end)(unsigned int num))
{
PicoScanBegin = NULL;
PicoScanEnd = NULL;
PicoScan32xBegin = NULL;
PicoScan32xEnd = NULL;
if ((PicoAHW & PAHW_32X) && FinalizeLine != FinalizeLine32xRGB555) {
PicoScan32xBegin = begin;
PicoScan32xEnd = end;
}
else {
PicoScanBegin = begin;
PicoScanEnd = end;
}
}

View file

@ -1638,7 +1638,7 @@ vidConvCpyRGB565: @ void *to, void *from, int pixels
stmfd sp!, {r4-r9,lr}
mov r8, #0x0061
orr r8, r8, #0x0800
orr r8, r8, lsl #16
orr r8, r8, r8, lsl #16
vidConvCpyRGB565_local
ldmfd sp!, {r4-r9,lr}
bx lr
@ -1663,7 +1663,7 @@ PicoDoHighPal555_nopush:
mov r2, #0x40
mov r8, #0x0061
orr r8, r8, #0x0800
orr r8, r8, lsl #16
orr r8, r8, r8, lsl #16
vidConvCpyRGB565_local

View file

@ -170,10 +170,9 @@ typedef enum
} pdso_t;
void PicoDrawSetOutFormat(pdso_t which, int allow_32x);
void PicoDrawSetOutBuf(void *dest, int increment);
void PicoDrawSetCallbacks(int (*begin)(unsigned int num), int (*end)(unsigned int num));
extern void *DrawLineDest;
extern unsigned char *HighCol;
extern int (*PicoScanBegin)(unsigned int num);
extern int (*PicoScanEnd)(unsigned int num);
// utility
#ifdef _ASM_DRAW_C
void vidConvCpyRGB565(void *to, void *from, int pixels);
@ -219,8 +218,6 @@ extern int p32x_ssh2_multiplier;
// 32x/draw.c
void PicoDraw32xSetFrameMode(int is_on, int only_32x);
extern int (*PicoScan32xBegin)(unsigned int num);
extern int (*PicoScan32xEnd)(unsigned int num);
// sound.c
extern int PsndRate,PsndLen;

View file

@ -540,6 +540,8 @@ PICO_INTERNAL void PicoFrameStart(void);
void PicoDrawSync(int to, int blank_last_line);
void BackFill(int reg7, int sh);
void FinalizeLine555(int sh, int line);
extern int (*PicoScanBegin)(unsigned int num);
extern int (*PicoScanEnd)(unsigned int num);
extern int DrawScanline;
#define MAX_LINE_SPRITES 29
extern unsigned char HighLnSpr[240][3 + MAX_LINE_SPRITES];
@ -727,6 +729,8 @@ void p32x_poll_event(int cpu_mask, int is_vdp);
void FinalizeLine32xRGB555(int sh, int line);
void PicoDraw32xLayer(int offs, int lines, int mdbg);
void PicoDraw32xLayerMdOnly(int offs, int lines);
extern int (*PicoScan32xBegin)(unsigned int num);
extern int (*PicoScan32xEnd)(unsigned int num);
enum {
PDM32X_OFF,
PDM32X_32X_ONLY,