Initial commit
This commit is contained in:
83
graphics/scaler/Normal2xARM.s
Normal file
83
graphics/scaler/Normal2xARM.s
Normal file
@@ -0,0 +1,83 @@
|
||||
@ ScummVM - Graphic Adventure Engine
|
||||
@
|
||||
@ ScummVM is the legal property of its developers, whose names
|
||||
@ are too numerous to list here. Please refer to the COPYRIGHT
|
||||
@ file distributed with this source distribution.
|
||||
@
|
||||
@ This program is free software: you can redistribute it and/or modify
|
||||
@ it under the terms of the GNU General Public License as published by
|
||||
@ the Free Software Foundation, either version 3 of the License, or
|
||||
@ (at your option) any later version.
|
||||
@
|
||||
@ This program is distributed in the hope that it will be useful,
|
||||
@ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
@ GNU General Public License for more details.
|
||||
@
|
||||
@ You should have received a copy of the GNU General Public License
|
||||
@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
@
|
||||
@ @author Robin Watts (robin@wss.co.uk)
|
||||
|
||||
.text
|
||||
|
||||
.global Normal2xARM
|
||||
|
||||
|
||||
@ Assumes dst is aligned (so did the C)
|
||||
@ Assumes 16bit (so did the C)
|
||||
.align 2
|
||||
Normal2xARM:
|
||||
@ r0 = src
|
||||
@ r1 = srcPitch
|
||||
@ r2 = dst
|
||||
@ r3 = dstPitch
|
||||
@ r4 = w
|
||||
@ r5 = h
|
||||
STMFD r13!,{r4-r11,r14}
|
||||
LDR r4, [r13,#4*9] @ r4 = w
|
||||
LDR r5, [r13,#4*10] @ r5 = h
|
||||
ADD r12,r2, r3
|
||||
SUB r1, r1, r4, LSL #1
|
||||
SUB r6, r3, r4, LSL #2
|
||||
ADD r3, r3, r6
|
||||
yloop:
|
||||
SUBS r14,r4, #4
|
||||
ADDLT r14,r14, #4
|
||||
BLT thin
|
||||
xloop:
|
||||
LDRH r6, [r0], #2
|
||||
LDRH r7, [r0], #2
|
||||
LDRH r8, [r0], #2
|
||||
LDRH r9, [r0], #2
|
||||
ORR r6, r6, r6, LSL #16
|
||||
ORR r7, r7, r7, LSL #16
|
||||
ORR r8, r8, r8, LSL #16
|
||||
ORR r9, r9, r9, LSL #16
|
||||
STMIA r2!, {r6-r9}
|
||||
STMIA r12!,{r6-r9}
|
||||
SUBS r14,r14,#4
|
||||
BGE xloop
|
||||
ADDS r14,r14,#4
|
||||
BNE thin
|
||||
ADD r0, r0, r1
|
||||
ADD r2, r2, r3
|
||||
ADD r12,r12,r3
|
||||
SUBS r5, r5, #1
|
||||
BGT yloop
|
||||
|
||||
LDMFD r13!,{r4-r11,PC}
|
||||
thin:
|
||||
LDRH r6, [r0], #2
|
||||
ORR r6, r6, r6, LSL #16
|
||||
STR r6, [r2], #4
|
||||
STR r6, [r12],#4
|
||||
SUBS r14,r14,#1
|
||||
BGT thin
|
||||
ADD r0, r0, r1
|
||||
ADD r2, r2, r3
|
||||
ADD r12,r12,r3
|
||||
SUBS r5, r5, #1
|
||||
BGT yloop
|
||||
|
||||
LDMFD r13!,{r4-r11,PC}
|
||||
Reference in New Issue
Block a user