notaz.gp2x.de
/
picodrive.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
new code to collect/use more stats, some debug tools
[picodrive.git]
/
Pico
/
Draw.s
diff --git
a/Pico/Draw.s
b/Pico/Draw.s
index
c620c74
..
7e75a65
100644
(file)
--- a/
Pico/Draw.s
+++ b/
Pico/Draw.s
@@
-25,7
+25,6
@@
.equ PDRAW_DIRTY_SPRITES, (1<<4)
\r
.equ PDRAW_PLANE_HI_PRIO, (1<<6)
\r
.equ PDRAW_SHHI_DONE, (1<<7)
\r
.equ PDRAW_DIRTY_SPRITES, (1<<4)
\r
.equ PDRAW_PLANE_HI_PRIO, (1<<6)
\r
.equ PDRAW_SHHI_DONE, (1<<7)
\r
-.equ MAX_LINE_SPRITES, 30
\r
\r
@ helper
\r
.macro TilePixel pat lsrr offs
\r
\r
@ helper
\r
.macro TilePixel pat lsrr offs
\r
@@
-947,26
+946,19
@@
DrawTilesFromCache:
@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
\r
\r
\r
@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
\r
\r
\r
-.global DrawSpritesSHi @
int prio_unused, int sh
\r
+.global DrawSpritesSHi @
unsigned char *sprited
\r
\r
DrawSpritesSHi:
\r
\r
DrawSpritesSHi:
\r
- ldr r3, =DrawScanline
\r
- ldr r2, =HighLnSpr
\r
- ldr r12,[r3]
\r
- mov r3, #(MAX_LINE_SPRITES+2)
\r
- mla r2, r12, r3, r2
\r
- ldr r3, [r2]
\r
+ ldr r3, [r0]
\r
+ mov r12,#0xff
\r
ands r3, r3, #0x7f
\r
bxeq lr
\r
\r
stmfd sp!, {r4-r11,lr}
\r
ands r3, r3, #0x7f
\r
bxeq lr
\r
\r
stmfd sp!, {r4-r11,lr}
\r
- mov r12,#0xff
\r
- strb r12,[r2,#1] @ set end marker
\r
- add r10,r2, #2
\r
+ strb r12,[r0,#2] @ set end marker
\r
+ add r10,r0, #3 @ r10=HighLnSpr end
\r
add r10,r10,r3 @ r10=HighLnSpr end
\r
\r
add r10,r10,r3 @ r10=HighLnSpr end
\r
\r
- str r1, [sp, #-4] @ no calls after this point
\r
-
\r
.if OVERRIDE_HIGHCOL
\r
ldr r11,=HighCol
\r
mov r12,#0xf
\r
.if OVERRIDE_HIGHCOL
\r
ldr r11,=HighCol
\r
mov r12,#0xf
\r
@@
-982,7
+974,7
@@
DrawSpriteSHi:
@ draw next sprite
\r
ldrb r0, [r10,#-1]!
\r
ldr r1, =HighPreSpr
\r
@ draw next sprite
\r
ldrb r0, [r10,#-1]!
\r
ldr r1, =HighPreSpr
\r
- ldr r8, [sp, #-4]
\r
+
@
ldr r8, [sp, #-4]
\r
cmp r0, #0xff
\r
ldmeqfd sp!, {r4-r11,pc} @ end of list
\r
and r0, r0, #0x7f
\r
cmp r0, #0xff
\r
ldmeqfd sp!, {r4-r11,pc} @ end of list
\r
and r0, r0, #0x7f
\r
@@
-994,12
+986,12
@@
DrawSpriteSHi:
mov r9, r9, lsl #16
\r
mov r3, r9, lsr #31 @ priority
\r
mov r9, r9, lsr #16
\r
mov r9, r9, lsl #16
\r
mov r3, r9, lsr #31 @ priority
\r
mov r9, r9, lsr #16
\r
- orr r9, r9, r8, lsl #31 @ r9=code|sh[31]
\r
+@ orr r9, r9, r8, lsl #31 @ r9=code|sh[31] @@ sh is always on here now
\r
and r4, r9, #0x6000
\r
orr r9, r9, r4, lsl #16
\r
and r4, r9, #0x6000
\r
orr r9, r9, r4, lsl #16
\r
- orr r9, r9, #0x
1
0000000 @ r9=scc1 ???? ... <code> (s=shadow/hilight, cc=pal)
\r
+ orr r9, r9, #0x
9
0000000 @ r9=scc1 ???? ... <code> (s=shadow/hilight, cc=pal)
\r
cmp r12,r9, lsr #28 @ sh/hi with pal3?
\r
cmp r12,r9, lsr #28 @ sh/hi with pal3?
\r
- cmpne r3, #1 @ if not, is
hi prio
\r
+ cmpne r3, #1 @ if not, is
ir hi prio?
\r
bne DrawSpriteSHi @ non-operator low sprite, already drawn
\r
\r
ldr r3, [r0] @ sprite[0]
\r
bne DrawSpriteSHi @ non-operator low sprite, already drawn
\r
\r
ldr r3, [r0] @ sprite[0]
\r
@@
-1030,8
+1022,6
@@
DrawSpriteSHi:
add r8, r8, r7, lsl #1 @ tile+=(row&7)<<1; // Tile address
\r
\r
mov r5, r5, lsl #4 @ delta<<=4; // Delta of address
\r
add r8, r8, r7, lsl #1 @ tile+=(row&7)<<1; // Tile address
\r
\r
mov r5, r5, lsl #4 @ delta<<=4; // Delta of address
\r
-
\r
- orrs r3, r9, r9, lsl #4
\r
mov r3, r4, lsr #9 @ r3=pal=((code>>9)&0x30);
\r
\r
add r6, r6, #1 @ inc now
\r
mov r3, r4, lsr #9 @ r3=pal=((code>>9)&0x30);
\r
\r
add r6, r6, #1 @ inc now
\r
@@
-1136,36
+1126,31
@@
DrawSpriteSHi:
\r
@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
\r
\r
\r
@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
\r
\r
-.global DrawAllSprites @ int prio, int sh
\r
+.global DrawAllSprites @
unsigned char *sprited,
int prio, int sh
\r
\r
DrawAllSprites:
\r
ldr r3, =rendstatus
\r
\r
DrawAllSprites:
\r
ldr r3, =rendstatus
\r
- orr r1, r
1, r0
, lsl #1
\r
+ orr r1, r
2, r1
, lsl #1
\r
ldr r12,[r3]
\r
tst r12,#(PDRAW_ACC_SPRITES|PDRAW_SPRITES_MOVED)
\r
beq das_no_prep
\r
ldr r12,[r3]
\r
tst r12,#(PDRAW_ACC_SPRITES|PDRAW_SPRITES_MOVED)
\r
beq das_no_prep
\r
- stmfd sp!, {r1,lr}
\r
+ stmfd sp!, {r
0,r
1,lr}
\r
and r0, r12,#PDRAW_DIRTY_SPRITES
\r
bic r12,r12,#(PDRAW_ACC_SPRITES|PDRAW_SPRITES_MOVED)
\r
str r12,[r3]
\r
bl PrepareSprites
\r
and r0, r12,#PDRAW_DIRTY_SPRITES
\r
bic r12,r12,#(PDRAW_ACC_SPRITES|PDRAW_SPRITES_MOVED)
\r
str r12,[r3]
\r
bl PrepareSprites
\r
- ldmfd sp!, {r1,lr}
\r
+ ldmfd sp!, {r
0,r
1,lr}
\r
\r
das_no_prep:
\r
\r
das_no_prep:
\r
- ldr r3, =DrawScanline
\r
- ldr r2, =HighLnSpr
\r
- ldr r12,[r3]
\r
- mov r3, #(MAX_LINE_SPRITES+2)
\r
- mla r2, r12, r3, r2
\r
- ldr r3, [r2]
\r
+ ldr r3, [r0]
\r
ands r3, r3, #0x7f
\r
bxeq lr
\r
\r
@ time to do some real work
\r
stmfd sp!, {r4-r11,lr}
\r
mov r12,#0xff
\r
ands r3, r3, #0x7f
\r
bxeq lr
\r
\r
@ time to do some real work
\r
stmfd sp!, {r4-r11,lr}
\r
mov r12,#0xff
\r
- strb r12,[r
2,#1
] @ set end marker
\r
- add r10,r
2, #2
\r
+ strb r12,[r
0,#2
] @ set end marker
\r
+ add r10,r
0, #3
\r
add r10,r10,r3 @ r10=HighLnSpr end
\r
\r
str r1, [sp, #-4] @ no calls after this point
\r
add r10,r10,r3 @ r10=HighLnSpr end
\r
\r
str r1, [sp, #-4] @ no calls after this point
\r