Files
AmigaExamples/023.slideshow/image.s
T
2016-03-21 21:23:05 +11:00

248 lines
4.1 KiB
ArmAsm

include "includes.i"
xref LoadNextImage
LoadNextImage:
movem.l d0-a6,-(sp)
lea imageLookupTable,a1
add.l imageIndex,a1
cmp.l #0,(a1) ; lookup table is terminated with 0
bne .showImage
move.l #0,imageIndex
lea imageLookupTable,a1
.showImage
move.l a1,a3
move.l (a1),a2 ; address of InsallColorPalette(X)
move.l 4(a3),a1 ; address of compressed image on disk
move.l 8(a3),d0 ; size of compressed image
move.l 12(a3),a3 ; address of LoadImage(X)
jsr (a3)
add.l #16,imageIndex
movem.l (sp)+,d0-a6
rts
LoadImage1:
;; d0 - size
;; a1 - start address
;; a2 - InstallColorPalette(X) address
move.l bitplanesp3,a0 ; Load compressed data into bitplanes3
bsr DoLoadImage
move.l bitplanesp1,a1
movem.l d0-a6,-(sp)
bsr doynaxdepack
movem.l (sp)+,d0-a6
jsr WaitVerticalBlank
jsr (a2)
bsr SetupImage
rts
LoadImage2:
;; d0 - size
;; a1 - start address
;; a2 - InstallColorPalette(X) address
move.l bitplanesp3,a0 ; Load compressed data into bitplanes3
bsr DoLoadImage
move.l bitplanesp2,a1
movem.l d0-a6,-(sp)
bsr doynaxdepack
movem.l (sp)+,d0-a6
jsr WaitVerticalBlank
jsr (a2)
bsr SetupImage
rts
SetupImage:
;; a1 - bitplanes address
movem.l d0-a6,-(sp)
if INTERLACE==1
;; poke the bitplane pointers for the two copper lists.
move.l #SCREEN_WIDTH_BYTES*SCREEN_BIT_DEPTH,d0
lea copperListAlternate,a0
jsr PokeBitplanePointers
endif
moveq.l #0,d0
lea copperList,a0
jsr PokeBitplanePointers
movem.l (sp)+,d0-a6
rts
DoLoadImage:
;; a0 - destination address
;; a1 - start address
;; d0 - size
movem.l d0-a6,-(sp)
lea $dff002,a6 ;Loader uses this custom base addr
move.l d0,d1
move.l a1,d0
move.l #startCode,d2
sub.l d2,d0 ; offset from start of this module
lsr.l #6,d0 ; bytes -> sectors
lsr.l #3,d0
add.l #2,d0 ; offset for bootblock
add.l #512,d1
lsr.l #6,d1 ; bytes -> sectors
lsr.l #3,d1
neg.w d1
jsr LoadMFMB
movem.l (sp)+,d0-a6
rts
imageLookupTable:
dc.l InstallColorPalette
dc.l imageData1
dc.l endImageData1-imageData1
dc.l LoadImage2
dc.l InstallColorPalette2
dc.l imageData2
dc.l endImageData2-imageData2
dc.l LoadImage1
dc.l InstallColorPalette3
dc.l imageData3
dc.l endImageData3-imageData3
dc.l LoadImage2
dc.l InstallColorPalette4
dc.l imageData4
dc.l endImageData4-imageData4
dc.l LoadImage1
dc.l InstallColorPalette5
dc.l imageData5
dc.l endImageData5-imageData5
dc.l LoadImage2
dc.l InstallColorPalette6
dc.l imageData6
dc.l endImageData6-imageData6
dc.l LoadImage1
dc.l InstallColorPalette7
dc.l imageData7
dc.l endImageData7-imageData7
dc.l LoadImage2
dc.l InstallColorPalette8
dc.l imageData8
dc.l endImageData8-imageData8
dc.l LoadImage1
dc.l 0
imageIndex:
dc.l 0
InstallColorPalette:
include "out/mr-palette.s"
rts
InstallColorPalette2:
include "out/mr2-palette.s"
rts
InstallColorPalette3:
include "out/mr3-palette.s"
rts
InstallColorPalette4:
include "out/mr4-palette.s"
rts
InstallColorPalette5:
include "out/mr5-palette.s"
rts
InstallColorPalette6:
include "out/mr6-palette.s"
rts
InstallColorPalette7:
include "out/mr7-palette.s"
rts
InstallColorPalette8:
include "out/mr8-palette.s"
rts
include "../tools/external/doynamite68k/depacker_doynax.asm"
section .photo
cnop 0,512
imageData1:
if HAM_MODE==1
incbin "out/mr-ham.lz"
else
incbin "out/mr.lz"
endif
endImageData1:
cnop 0,512
imageData2:
if HAM_MODE==1
incbin "out/mr2-ham.lz"
else
incbin "out/mr2.lz"
endif
endImageData2:
cnop 0,512
imageData3:
if HAM_MODE==1
incbin "out/mr3-ham.lz"
else
incbin "out/mr3.lz"
endif
endImageData3:
cnop 0,512
imageData4:
if HAM_MODE==1
incbin "out/mr4-ham.lz"
else
incbin "out/mr4.lz"
endif
endImageData4:
cnop 0,512
imageData5:
if HAM_MODE==1
incbin "out/mr5-ham.lz"
else
incbin "out/mr5.lz"
endif
endImageData5:
cnop 0,512
imageData6:
if HAM_MODE==1
incbin "out/mr6-ham.lz"
else
incbin "out/mr6.lz"
endif
endImageData6:
cnop 0,512
imageData7:
if HAM_MODE==1
incbin "out/mr7-ham.lz"
else
incbin "out/mr7.lz"
endif
endImageData7:
cnop 0,512
imageData8:
if HAM_MODE==1
incbin "out/mr8-ham.lz"
else
incbin "out/mr8.lz"
endif
endImageData8: