mirror of
https://github.com/earok/GloomAmiga.git
synced 2026-09-10 19:05:20 +00:00
49 lines
751 B
ArmAsm
49 lines
751 B
ArmAsm
decodeiff40 ;for 40 columns...
|
|
;
|
|
moveq #40,d7
|
|
jmp decodeiff3
|
|
;
|
|
decodeiff ;a0=trimmed IFF file,a1=dest bitmap
|
|
;
|
|
moveq #80,d7
|
|
decodeiff3 ;
|
|
move (a0)+,d0 ;pixel width
|
|
lsr #3,d0 ;to byte width
|
|
move (a0)+,d1 ;pixel height
|
|
cmp #200,d1
|
|
bcs.s .hok
|
|
move #199,d1
|
|
.hok subq #1,d1 ;to dbf
|
|
move (a0)+,d2 ;depth
|
|
subq #1,d2 ;to dbf
|
|
addq #6,a0 ;skip header
|
|
;
|
|
.loop5 move d2,d5 ;depth
|
|
;
|
|
.loop4 move.l a1,a2
|
|
move d0,d4 ;how many bytes in line
|
|
;
|
|
.loop moveq #0,d3
|
|
move.b (a0)+,d3
|
|
bmi.s .repeat
|
|
sub d3,d4
|
|
.loop3 move.b (a0)+,(a2)+
|
|
dbf d3,.loop3
|
|
jmp .skip
|
|
;
|
|
.repeat cmp.b #-128,d3
|
|
beq.s .loop
|
|
neg.b d3
|
|
sub d3,d4
|
|
.loop2 move.b (a0),(a2)+
|
|
dbf d3,.loop2
|
|
addq #1,a0
|
|
.skip subq #1,d4
|
|
bgt.s .loop
|
|
;
|
|
add d7,a1
|
|
dbf d5,.loop4
|
|
dbf d1,.loop5
|
|
rts
|
|
|