mirror of
https://github.com/RaySollium99/picodrive.git
synced 2025-09-07 08:08:04 -04:00
got rid of fb border integration, using defines instead
git-svn-id: file:///home/notaz/opt/svn/PicoDrive@620 be3aeb3a-fb24-0410-a615-afba39da0efa
This commit is contained in:
parent
146cd4bf30
commit
3823d229a5
4 changed files with 57 additions and 34 deletions
|
@ -4,6 +4,8 @@
|
||||||
@ (c) Copyright 2006, notaz
|
@ (c) Copyright 2006, notaz
|
||||||
@ All Rights Reserved
|
@ All Rights Reserved
|
||||||
|
|
||||||
|
.include "port_config.s"
|
||||||
|
|
||||||
|
|
||||||
@ Convert 0000bbb0 ggg0rrr0 0000bbb0 ggg0rrr0
|
@ Convert 0000bbb0 ggg0rrr0 0000bbb0 ggg0rrr0
|
||||||
@ to 00000000 rrr00000 ggg00000 bbb00000 ...
|
@ to 00000000 rrr00000 ggg00000 bbb00000 ...
|
||||||
|
@ -342,13 +344,13 @@ vidConvCpy_90:
|
||||||
mov r6, #0
|
mov r6, #0
|
||||||
stmia r0!, {r3-r6}
|
stmia r0!, {r3-r6}
|
||||||
stmia r0!, {r3-r6}
|
stmia r0!, {r3-r6}
|
||||||
add r7, r0, #256*4-8*4
|
add r7, r0, #(240+BORDER_R)*4-8*4
|
||||||
stmia r7!, {r3-r6}
|
stmia r7!, {r3-r6}
|
||||||
stmia r7!, {r3-r6}
|
stmia r7!, {r3-r6}
|
||||||
add r7, r7, #256*4-8*4
|
add r7, r7, #(240+BORDER_R)*4-8*4
|
||||||
stmia r7!, {r3-r6}
|
stmia r7!, {r3-r6}
|
||||||
stmia r7!, {r3-r6}
|
stmia r7!, {r3-r6}
|
||||||
add r7, r7, #256*4-8*4
|
add r7, r7, #(240+BORDER_R)*4-8*4
|
||||||
stmia r7!, {r3-r6}
|
stmia r7!, {r3-r6}
|
||||||
stmia r7!, {r3-r6}
|
stmia r7!, {r3-r6}
|
||||||
|
|
||||||
|
@ -373,7 +375,7 @@ vidConvCpy_90:
|
||||||
mode2_4pix 0
|
mode2_4pix 0
|
||||||
.endif
|
.endif
|
||||||
stmia r0, {r7,r8,r10,lr}
|
stmia r0, {r7,r8,r10,lr}
|
||||||
add r0, r0, #256*4
|
add r0, r0, #(240+BORDER_R)*4
|
||||||
|
|
||||||
.if \is270
|
.if \is270
|
||||||
mode2_4pix 16
|
mode2_4pix 16
|
||||||
|
@ -381,7 +383,7 @@ vidConvCpy_90:
|
||||||
mode2_4pix 8
|
mode2_4pix 8
|
||||||
.endif
|
.endif
|
||||||
stmia r0, {r7,r8,r10,lr}
|
stmia r0, {r7,r8,r10,lr}
|
||||||
add r0, r0, #256*4
|
add r0, r0, #(240+BORDER_R)*4
|
||||||
|
|
||||||
.if \is270
|
.if \is270
|
||||||
mode2_4pix 8
|
mode2_4pix 8
|
||||||
|
@ -389,7 +391,7 @@ vidConvCpy_90:
|
||||||
mode2_4pix 16
|
mode2_4pix 16
|
||||||
.endif
|
.endif
|
||||||
stmia r0, {r7,r8,r10,lr}
|
stmia r0, {r7,r8,r10,lr}
|
||||||
add r0, r0, #256*4
|
add r0, r0, #(240+BORDER_R)*4
|
||||||
|
|
||||||
.if \is270
|
.if \is270
|
||||||
mode2_4pix 0
|
mode2_4pix 0
|
||||||
|
@ -397,7 +399,7 @@ vidConvCpy_90:
|
||||||
mode2_4pix 24
|
mode2_4pix 24
|
||||||
.endif
|
.endif
|
||||||
stmia r0!,{r7,r8,r10,lr}
|
stmia r0!,{r7,r8,r10,lr}
|
||||||
sub r0, r0, #256*4*3
|
sub r0, r0, #(240+BORDER_R)*4*3
|
||||||
|
|
||||||
bpl 0b @ .loopM2RGB32_270
|
bpl 0b @ .loopM2RGB32_270
|
||||||
|
|
||||||
|
@ -407,13 +409,13 @@ vidConvCpy_90:
|
||||||
mov r6, #0
|
mov r6, #0
|
||||||
stmia r0!, {r3-r6}
|
stmia r0!, {r3-r6}
|
||||||
stmia r0!, {r3-r6}
|
stmia r0!, {r3-r6}
|
||||||
add r0, r0, #256*4-8*4
|
add r0, r0, #(240+BORDER_R)*4-8*4
|
||||||
stmia r0!, {r3-r6}
|
stmia r0!, {r3-r6}
|
||||||
stmia r0!, {r3-r6}
|
stmia r0!, {r3-r6}
|
||||||
add r0, r0, #256*4-8*4
|
add r0, r0, #(240+BORDER_R)*4-8*4
|
||||||
stmia r0!, {r3-r6}
|
stmia r0!, {r3-r6}
|
||||||
stmia r0!, {r3-r6}
|
stmia r0!, {r3-r6}
|
||||||
add r0, r0, #256*4-8*4
|
add r0, r0, #(240+BORDER_R)*4-8*4
|
||||||
stmia r0!, {r3-r6}
|
stmia r0!, {r3-r6}
|
||||||
nop @ phone crashes if this is commented out. Do I stress it too much?
|
nop @ phone crashes if this is commented out. Do I stress it too much?
|
||||||
stmia r0!, {r3-r6}
|
stmia r0!, {r3-r6}
|
||||||
|
@ -422,7 +424,9 @@ vidConvCpy_90:
|
||||||
subs r12, r12, #1
|
subs r12, r12, #1
|
||||||
ldmeqfd sp!, {r4-r11,pc} @ return
|
ldmeqfd sp!, {r4-r11,pc} @ return
|
||||||
|
|
||||||
add r0, r0, #16*4
|
.if BORDER_R
|
||||||
|
add r0, r0, #BORDER_R*4
|
||||||
|
.endif
|
||||||
.if \is270
|
.if \is270
|
||||||
sub r9, r9, #4 @ fix src pointer
|
sub r9, r9, #4 @ fix src pointer
|
||||||
.else
|
.else
|
||||||
|
@ -432,13 +436,13 @@ vidConvCpy_90:
|
||||||
|
|
||||||
stmia r0!, {r3-r6} @ top border
|
stmia r0!, {r3-r6} @ top border
|
||||||
stmia r0!, {r3-r6}
|
stmia r0!, {r3-r6}
|
||||||
add r7, r0, #256*4-8*4
|
add r7, r0, #(240+BORDER_R)*4-8*4
|
||||||
stmia r7!, {r3-r6}
|
stmia r7!, {r3-r6}
|
||||||
stmia r7!, {r3-r6}
|
stmia r7!, {r3-r6}
|
||||||
add r7, r7, #256*4-8*4
|
add r7, r7, #(240+BORDER_R)*4-8*4
|
||||||
stmia r7!, {r3-r6}
|
stmia r7!, {r3-r6}
|
||||||
stmia r7!, {r3-r6}
|
stmia r7!, {r3-r6}
|
||||||
add r7, r7, #256*4-8*4
|
add r7, r7, #(240+BORDER_R)*4-8*4
|
||||||
stmia r7!, {r3-r6}
|
stmia r7!, {r3-r6}
|
||||||
stmia r7!, {r3-r6}
|
stmia r7!, {r3-r6}
|
||||||
|
|
||||||
|
@ -481,7 +485,9 @@ vidConvCpy_center_0:
|
||||||
sub r12, r12, #1
|
sub r12, r12, #1
|
||||||
adds r12, r12, #1<<16
|
adds r12, r12, #1<<16
|
||||||
ldmeqfd sp!, {r4-r6,r11,pc} @ return
|
ldmeqfd sp!, {r4-r6,r11,pc} @ return
|
||||||
add r0, r0, #16*4
|
.if BORDER_R
|
||||||
|
add r0, r0, #BORDER_R*4
|
||||||
|
.endif
|
||||||
add r1, r1, #88
|
add r1, r1, #88
|
||||||
orr r12, #(240/4-1)<<16
|
orr r12, #(240/4-1)<<16
|
||||||
b .loopRGB32_c0
|
b .loopRGB32_c0
|
||||||
|
@ -510,7 +516,9 @@ vidConvCpy_center_180:
|
||||||
sub r12, r12, #1
|
sub r12, r12, #1
|
||||||
adds r12, r12, #1<<16
|
adds r12, r12, #1<<16
|
||||||
ldmeqfd sp!, {r4-r6,r11,pc} @ return
|
ldmeqfd sp!, {r4-r6,r11,pc} @ return
|
||||||
add r0, r0, #16*4
|
.if BORDER_R
|
||||||
|
add r0, r0, #BORDER_R*4
|
||||||
|
.endif
|
||||||
sub r1, r1, #88
|
sub r1, r1, #88
|
||||||
orr r12, #(240/4-1)<<16
|
orr r12, #(240/4-1)<<16
|
||||||
b .loopRGB32_c180
|
b .loopRGB32_c180
|
||||||
|
@ -544,7 +552,9 @@ vidConvCpy_center2_40c_0:
|
||||||
sub r12, r12, #1
|
sub r12, r12, #1
|
||||||
adds r12, r12, #1<<16
|
adds r12, r12, #1<<16
|
||||||
ldmeqfd sp!, {r4-r6,r10,r11,pc} @ return
|
ldmeqfd sp!, {r4-r6,r10,r11,pc} @ return
|
||||||
add r0, r0, #16*4
|
.if BORDER_R
|
||||||
|
add r0, r0, #BORDER_R*4
|
||||||
|
.endif
|
||||||
add r1, r1, #8
|
add r1, r1, #8
|
||||||
orr r12, #(240/3-1)<<16
|
orr r12, #(240/3-1)<<16
|
||||||
b .loopRGB32_c2_40c_0
|
b .loopRGB32_c2_40c_0
|
||||||
|
@ -580,7 +590,9 @@ vidConvCpy_center2_40c_180:
|
||||||
sub r12, r12, #1
|
sub r12, r12, #1
|
||||||
adds r12, r12, #1<<16
|
adds r12, r12, #1<<16
|
||||||
ldmeqfd sp!, {r4-r6,r10,r11,pc} @ return
|
ldmeqfd sp!, {r4-r6,r10,r11,pc} @ return
|
||||||
add r0, r0, #16*4
|
.if BORDER_R
|
||||||
|
add r0, r0, #BORDER_R*4
|
||||||
|
.endif
|
||||||
sub r1, r1, #8
|
sub r1, r1, #8
|
||||||
orr r12, #(240/3-1)<<16
|
orr r12, #(240/3-1)<<16
|
||||||
b .loop_c2_40c_180
|
b .loop_c2_40c_180
|
||||||
|
@ -617,7 +629,9 @@ vidConvCpy_center2_32c_0:
|
||||||
sub r12, r12, #1
|
sub r12, r12, #1
|
||||||
adds r12, r12, #1<<16
|
adds r12, r12, #1<<16
|
||||||
ldmeqfd sp!, {r4-r11,pc} @ return
|
ldmeqfd sp!, {r4-r11,pc} @ return
|
||||||
add r0, r0, #16*4
|
.if BORDER_R
|
||||||
|
add r0, r0, #BORDER_R*4
|
||||||
|
.endif
|
||||||
add r1, r1, #64+8
|
add r1, r1, #64+8
|
||||||
orr r12, #(240/15-1)<<16
|
orr r12, #(240/15-1)<<16
|
||||||
b .loop_c2_32c_0
|
b .loop_c2_32c_0
|
||||||
|
@ -658,7 +672,9 @@ vidConvCpy_center2_32c_180:
|
||||||
sub r12, r12, #1
|
sub r12, r12, #1
|
||||||
adds r12, r12, #1<<16
|
adds r12, r12, #1<<16
|
||||||
ldmeqfd sp!, {r4-r11,pc} @ return
|
ldmeqfd sp!, {r4-r11,pc} @ return
|
||||||
add r0, r0, #16*4
|
.if BORDER_R
|
||||||
|
add r0, r0, #BORDER_R*4
|
||||||
|
.endif
|
||||||
sub r1, r1, #64+8
|
sub r1, r1, #64+8
|
||||||
orr r12, #(240/15-1)<<16
|
orr r12, #(240/15-1)<<16
|
||||||
b .loop_c2_32c_180
|
b .loop_c2_32c_180
|
||||||
|
@ -690,7 +706,9 @@ vidClear:
|
||||||
sub r12, r12, #1
|
sub r12, r12, #1
|
||||||
adds r12, r12, #1<<16
|
adds r12, r12, #1<<16
|
||||||
ldmeqfd sp!, {pc} @ return
|
ldmeqfd sp!, {pc} @ return
|
||||||
add r0, r0, #16*4
|
.if BORDER_R
|
||||||
|
add r0, r0, #BORDER_R*4
|
||||||
|
.endif
|
||||||
orr r12, #(240/16-1)<<16
|
orr r12, #(240/16-1)<<16
|
||||||
b .loopVidClear
|
b .loopVidClear
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@ extern const char *actionNames[];
|
||||||
static void *screenbuff = 0; // pointer to real device video memory
|
static void *screenbuff = 0; // pointer to real device video memory
|
||||||
//static
|
//static
|
||||||
extern "C" { unsigned char *PicoDraw2FB = 0; } // temporary buffer
|
extern "C" { unsigned char *PicoDraw2FB = 0; } // temporary buffer
|
||||||
const int framebuffsize = (8+320)*(8+240+8)*2+8*2; // actual framebuffer size (in bytes+to support new rendering mode)
|
const int framebuffsize = (8+320)*(8+240+8)*2+8*2; // PicoDraw2FB size (in bytes+to support new rendering mode)
|
||||||
|
|
||||||
// drawer function pointers
|
// drawer function pointers
|
||||||
static void (*drawTextFps)(const char *text) = 0;
|
static void (*drawTextFps)(const char *text) = 0;
|
||||||
|
@ -272,9 +272,9 @@ static void vidBlit_90(int full)
|
||||||
vidConvCpy_90(pd, ps, localPal, 320/8);
|
vidConvCpy_90(pd, ps, localPal, 320/8);
|
||||||
else {
|
else {
|
||||||
if(full) vidClear(pd, 32);
|
if(full) vidClear(pd, 32);
|
||||||
pd += 256*32;
|
pd += (240+VID_BORDER_R)*32;
|
||||||
vidConvCpy_90(pd, ps, localPal, 256/8);
|
vidConvCpy_90(pd, ps, localPal, 256/8);
|
||||||
if(full) vidClear(pd + 256*256, 32);
|
if(full) vidClear(pd + (240+VID_BORDER_R)*256, 32);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -288,10 +288,10 @@ static void vidBlit_270(int full)
|
||||||
vidConvCpy_270(pd, ps, localPal, 320/8);
|
vidConvCpy_270(pd, ps, localPal, 320/8);
|
||||||
else {
|
else {
|
||||||
if(full) vidClear(pd, 32);
|
if(full) vidClear(pd, 32);
|
||||||
pd += 256*32;
|
pd += (240+VID_BORDER_R)*32;
|
||||||
ps -= 64; // the blitter starts copying from the right border, so we need to adjust
|
ps -= 64; // the blitter starts copying from the right border, so we need to adjust
|
||||||
vidConvCpy_270(pd, ps, localPal, 256/8);
|
vidConvCpy_270(pd, ps, localPal, 256/8);
|
||||||
if(full) vidClear(pd + 256*256, 32);
|
if(full) vidClear(pd + (240+VID_BORDER_R)*256, 32);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -303,7 +303,7 @@ static void vidBlitCenter_0(int full)
|
||||||
|
|
||||||
if(Pico.video.reg[12]&1) ps += 32;
|
if(Pico.video.reg[12]&1) ps += 32;
|
||||||
vidConvCpy_center_0(pd, ps, localPal);
|
vidConvCpy_center_0(pd, ps, localPal);
|
||||||
if(full) vidClear(pd + 224*256, 96);
|
if(full) vidClear(pd + (240+VID_BORDER_R)*224, 96);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -314,7 +314,7 @@ static void vidBlitCenter_180(int full)
|
||||||
|
|
||||||
if(Pico.video.reg[12]&1) ps += 32;
|
if(Pico.video.reg[12]&1) ps += 32;
|
||||||
vidConvCpy_center_180(pd, ps, localPal);
|
vidConvCpy_center_180(pd, ps, localPal);
|
||||||
if(full) vidClear(pd + 224*256, 96);
|
if(full) vidClear(pd + (240+VID_BORDER_R)*224, 96);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -323,7 +323,7 @@ static void vidBlitFit_0(int full)
|
||||||
if(Pico.video.reg[12]&1)
|
if(Pico.video.reg[12]&1)
|
||||||
vidConvCpy_center2_40c_0(screenbuff, PicoDraw2FB+328*8, localPal, 168);
|
vidConvCpy_center2_40c_0(screenbuff, PicoDraw2FB+328*8, localPal, 168);
|
||||||
else vidConvCpy_center2_32c_0(screenbuff, PicoDraw2FB+328*8, localPal, 168);
|
else vidConvCpy_center2_32c_0(screenbuff, PicoDraw2FB+328*8, localPal, 168);
|
||||||
if(full) vidClear((unsigned long *)screenbuff + 168*256, 320-168);
|
if(full) vidClear((unsigned long *)screenbuff + (240+VID_BORDER_R)*168, 320-168);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -332,7 +332,7 @@ static void vidBlitFit_180(int full)
|
||||||
if(Pico.video.reg[12]&1)
|
if(Pico.video.reg[12]&1)
|
||||||
vidConvCpy_center2_40c_180(screenbuff, PicoDraw2FB+328*8, localPal, 168);
|
vidConvCpy_center2_40c_180(screenbuff, PicoDraw2FB+328*8, localPal, 168);
|
||||||
else vidConvCpy_center2_32c_180(screenbuff, PicoDraw2FB+328*8-64, localPal, 168);
|
else vidConvCpy_center2_32c_180(screenbuff, PicoDraw2FB+328*8-64, localPal, 168);
|
||||||
if(full) vidClear((unsigned long *)screenbuff + 168*256, 320-168);
|
if(full) vidClear((unsigned long *)screenbuff + (240+VID_BORDER_R)*168, 320-168);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -341,7 +341,7 @@ static void vidBlitFit2_0(int full)
|
||||||
if(Pico.video.reg[12]&1)
|
if(Pico.video.reg[12]&1)
|
||||||
vidConvCpy_center2_40c_0(screenbuff, PicoDraw2FB+328*8, localPal, 224);
|
vidConvCpy_center2_40c_0(screenbuff, PicoDraw2FB+328*8, localPal, 224);
|
||||||
else vidConvCpy_center2_32c_0(screenbuff, PicoDraw2FB+328*8, localPal, 224);
|
else vidConvCpy_center2_32c_0(screenbuff, PicoDraw2FB+328*8, localPal, 224);
|
||||||
if(full) vidClear((unsigned long *)screenbuff + 224*256, 96);
|
if(full) vidClear((unsigned long *)screenbuff + (240+VID_BORDER_R)*224, 96);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -350,10 +350,9 @@ static void vidBlitFit2_180(int full)
|
||||||
if(Pico.video.reg[12]&1)
|
if(Pico.video.reg[12]&1)
|
||||||
vidConvCpy_center2_40c_180(screenbuff, PicoDraw2FB+328*8, localPal, 224);
|
vidConvCpy_center2_40c_180(screenbuff, PicoDraw2FB+328*8, localPal, 224);
|
||||||
else vidConvCpy_center2_32c_180(screenbuff, PicoDraw2FB+328*8-64, localPal, 224);
|
else vidConvCpy_center2_32c_180(screenbuff, PicoDraw2FB+328*8-64, localPal, 224);
|
||||||
if(full) vidClear((unsigned long *)screenbuff + 224*256, 96);
|
if(full) vidClear((unsigned long *)screenbuff + (240+VID_BORDER_R)*224, 96);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void vidBlitCfg(void)
|
static void vidBlitCfg(void)
|
||||||
{
|
{
|
||||||
unsigned short *ps = (unsigned short *) PicoDraw2FB;
|
unsigned short *ps = (unsigned short *) PicoDraw2FB;
|
||||||
|
@ -364,7 +363,7 @@ static void vidBlitCfg(void)
|
||||||
//for (int i = 1; i < 320; i++, ps += 240, pd += 256)
|
//for (int i = 1; i < 320; i++, ps += 240, pd += 256)
|
||||||
// vidConvCpyRGB32(pd, ps, 240);
|
// vidConvCpyRGB32(pd, ps, 240);
|
||||||
|
|
||||||
for (i = 0; i < 320; i++, pd += 16)
|
for (i = 0; i < 320; i++, pd += VID_BORDER_R)
|
||||||
for (int u = 0; u < 240; u++, ps++, pd++)
|
for (int u = 0; u < 240; u++, ps++, pd++)
|
||||||
*pd = ((*ps & 0xf) << 20) | ((*ps & 0xf0) << 8) | ((*ps & 0xf00) >> 4);
|
*pd = ((*ps & 0xf) << 20) | ((*ps & 0xf0) << 8) | ((*ps & 0xf00) >> 4);
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,4 +31,7 @@
|
||||||
#define PATH_SEP "\\"
|
#define PATH_SEP "\\"
|
||||||
#define PATH_SEP_C '\\'
|
#define PATH_SEP_C '\\'
|
||||||
|
|
||||||
|
// engine/vid.cpp, also update BORDER_R in port_config.s
|
||||||
|
#define VID_BORDER_R 16
|
||||||
|
|
||||||
#endif // PORT_CONFIG_H
|
#endif // PORT_CONFIG_H
|
||||||
|
|
|
@ -11,3 +11,6 @@
|
||||||
|
|
||||||
@ this should be set to one only for GP2X port
|
@ this should be set to one only for GP2X port
|
||||||
.equiv EXTERNAL_YM2612, 0
|
.equiv EXTERNAL_YM2612, 0
|
||||||
|
|
||||||
|
@ also update VID_BORDER_R in port_config.h
|
||||||
|
.equiv BORDER_R, 16
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue