Refactored slideshow example
@@ -5,16 +5,16 @@ INTERLACE=1
|
|||||||
HAM_MODE=1
|
HAM_MODE=1
|
||||||
|
|
||||||
USERSTACK_ADDRESS=7fffc # userstack used by bootblock
|
USERSTACK_ADDRESS=7fffc # userstack used by bootblock
|
||||||
BASE_ADDRESS=10000 # if you change this you must also change link.script
|
BASE_ADDRESS=800 # if you change this you must also change link.script.x
|
||||||
|
|
||||||
BOOTBLOCK_ASM=alpine_bootblock.s
|
BOOTBLOCK_ASM=alpine_bootblock.s
|
||||||
OBJS=out/init.o out/utils.o out/trackloader.o out/image.o out/blitter.o
|
OBJS=out/init.o out/utils.o out/trackloader.o out/image.o out/blitter.o out/module.o out/disk.o out/data.o
|
||||||
|
|
||||||
ifeq ($(INTERLACE),0)
|
ifeq ($(INTERLACE),0)
|
||||||
NOINTERLACE_EXTRA=mr8.png
|
NOINTERLACE_EXTRA=image8.png
|
||||||
endif
|
endif
|
||||||
|
|
||||||
IMAGES=mr.png mr2.png mr3.png mr4.png mr6.png mr9.png mr10.png $(NOINTERLACE_EXTRA)
|
IMAGES=image1.png image2.png image3.png image4.png image5.png image6.png image7.png $(NOINTERLACE_EXTRA)
|
||||||
|
|
||||||
P61MODULE=out/P61.breath_of_life.lz
|
P61MODULE=out/P61.breath_of_life.lz
|
||||||
|
|
||||||
@@ -30,6 +30,8 @@ IMAGECON_ARGS=--colors 32 --quantize
|
|||||||
IMAGEDATA=$(addprefix out/, $(IMAGES:.png=.bin))
|
IMAGEDATA=$(addprefix out/, $(IMAGES:.png=.bin))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
SHRUNKDATA=$(IMAGEDATA:.bin=.lz)
|
SHRUNKDATA=$(IMAGEDATA:.bin=.lz)
|
||||||
SIZEDIMAGEDATA=$(addprefix out/, $(IMAGES:.png=.sized.png))
|
SIZEDIMAGEDATA=$(addprefix out/, $(IMAGES:.png=.sized.png))
|
||||||
|
|
||||||
@@ -40,11 +42,12 @@ FLAGS=--height=256
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
#SYMBOL_INFO=-M
|
#SYMBOL_INFO=-M
|
||||||
LINK_COMMANDLINE=vlink -T link.script -brawbin1 $< $(OBJS) $(SYMBOL_INFO) -o $@
|
#LINK_COMMANDLINE=vlink -T link.script.x -brawbin1 $< $(OBJS) $(SYMBOL_INFO) -osec=out/main && cat out/main.load out/main.photo > out/main.bin
|
||||||
|
LINK_COMMANDLINE=vlink -T link.script.x -brawbin1 $< $(OBJS) $(SYMBOL_INFO) -o out/main.bin
|
||||||
|
|
||||||
include ../shared/base.mk
|
include ../shared/base.mk
|
||||||
|
|
||||||
|
out/%.sized.png: assets/%.png
|
||||||
out/%.sized.png: ../assets/%.png
|
|
||||||
$(RESIZE) --width=320 $(FLAGS) --blur=0.75 --input=$< --output=$@
|
$(RESIZE) --width=320 $(FLAGS) --blur=0.75 --input=$< --output=$@
|
||||||
|
|
||||||
out/%.bin: out/%.sized.png
|
out/%.bin: out/%.sized.png
|
||||||
@@ -59,5 +62,5 @@ out/%.lz: ../assets/%.mod
|
|||||||
out/%-ham.bin: out/%.sized.png
|
out/%-ham.bin: out/%.sized.png
|
||||||
$(IMAGECON) --input $< $(IMAGECON_ARGS) --output-bitplanes --output-palette-asm --output-palette $(DITHER) --output out/$*
|
$(IMAGECON) --input $< $(IMAGECON_ARGS) --output-bitplanes --output-palette-asm --output-palette $(DITHER) --output out/$*
|
||||||
|
|
||||||
out/main.o: $(P61MODULE) $(SIZEDIMAGEDATA) $(IMAGEDATA) $(SHRUNKDATA) constants.i Makefile link.script
|
out/main.o: $(P61MODULE) $(SIZEDIMAGEDATA) $(IMAGEDATA) $(SHRUNKDATA) constants.i Makefile link.script.x
|
||||||
out/init.o: constants.i Makefile
|
out/init.o: constants.i Makefile
|
||||||
@@ -240,7 +240,8 @@ MotorOff:
|
|||||||
LoadTrak: ;loadtrack+decode.a0=dst,d0=secoffs,d1=secsleft
|
LoadTrak: ;loadtrack+decode.a0=dst,d0=secoffs,d1=secsleft
|
||||||
MOVE.W D0,-(SP)
|
MOVE.W D0,-(SP)
|
||||||
MOVE.W D1,-(SP)
|
MOVE.W D1,-(SP)
|
||||||
lea (MFMbuf).w,a1
|
;; lea (MFMbuf).w,a1
|
||||||
|
lea (MFMbuf),a1
|
||||||
move.w #2,$9c-2(a6) ;Clr Req
|
move.w #2,$9c-2(a6) ;Clr Req
|
||||||
move.l a1,$20-2(a6)
|
move.l a1,$20-2(a6)
|
||||||
move.w #$8210,$96-2(a6) ;DskEna
|
move.w #$8210,$96-2(a6) ;DskEna
|
||||||
@@ -335,7 +336,8 @@ BootE:
|
|||||||
cnop 0,1024
|
cnop 0,1024
|
||||||
|
|
||||||
;MFMbuf is placed here after bootblock end, $3c0.w or so when copied.
|
;MFMbuf is placed here after bootblock end, $3c0.w or so when copied.
|
||||||
MFMbuf equ LoaderVars+(BootE-CopyStart)
|
MFMbuf equ $E0000
|
||||||
|
;; MFMbuf equ LoaderVars+(BootE-CopyStart)
|
||||||
MFMbufE equ MFMbuf+MFMlen ;lowest free address. $372e for a full bootblock.
|
MFMbufE equ MFMbuf+MFMlen ;lowest free address. $372e for a full bootblock.
|
||||||
|
|
||||||
mainStart:
|
mainStart:
|
||||||
|
|||||||
|
After Width: | Height: | Size: 2.5 MiB |
|
After Width: | Height: | Size: 1.3 MiB |
|
After Width: | Height: | Size: 913 KiB |
|
After Width: | Height: | Size: 1.5 MiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 760 KiB |
|
After Width: | Height: | Size: 2.0 MiB |
|
Before Width: | Height: | Size: 708 KiB After Width: | Height: | Size: 708 KiB |
@@ -0,0 +1,152 @@
|
|||||||
|
include "includes.i"
|
||||||
|
|
||||||
|
xdef imageLookupTable
|
||||||
|
xdef compressedModule
|
||||||
|
xdef endCompressedModule
|
||||||
|
|
||||||
|
InstallColorPalette:
|
||||||
|
include "out/image1-palette.s"
|
||||||
|
rts
|
||||||
|
InstallColorPalette2:
|
||||||
|
include "out/image2-palette.s"
|
||||||
|
rts
|
||||||
|
InstallColorPalette3:
|
||||||
|
include "out/image3-palette.s"
|
||||||
|
rts
|
||||||
|
InstallColorPalette4:
|
||||||
|
include "out/image4-palette.s"
|
||||||
|
rts
|
||||||
|
InstallColorPalette5:
|
||||||
|
include "out/image5-palette.s"
|
||||||
|
rts
|
||||||
|
InstallColorPalette6:
|
||||||
|
include "out/image6-palette.s"
|
||||||
|
rts
|
||||||
|
InstallColorPalette7:
|
||||||
|
include "out/image7-palette.s"
|
||||||
|
rts
|
||||||
|
if INTERLACE==0
|
||||||
|
InstallColorPalette8:
|
||||||
|
include "out/image8-palette.s"
|
||||||
|
rts
|
||||||
|
endif; INTERLACE==0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
imageLookupTable: ; configure slideshow here
|
||||||
|
dc.l InstallColorPalette ; palette installation routine
|
||||||
|
dc.l imageData1 ; compressed image data
|
||||||
|
dc.l endImageData1-imageData1 ; compressed image data size
|
||||||
|
|
||||||
|
dc.l InstallColorPalette2
|
||||||
|
dc.l imageData2
|
||||||
|
dc.l endImageData2-imageData2
|
||||||
|
|
||||||
|
dc.l InstallColorPalette3
|
||||||
|
dc.l imageData3
|
||||||
|
dc.l endImageData3-imageData3
|
||||||
|
|
||||||
|
dc.l InstallColorPalette4
|
||||||
|
dc.l imageData4
|
||||||
|
dc.l endImageData4-imageData4
|
||||||
|
|
||||||
|
dc.l InstallColorPalette5
|
||||||
|
dc.l imageData5
|
||||||
|
dc.l endImageData5-imageData5
|
||||||
|
|
||||||
|
dc.l InstallColorPalette6
|
||||||
|
dc.l imageData6
|
||||||
|
dc.l endImageData6-imageData6
|
||||||
|
|
||||||
|
|
||||||
|
dc.l InstallColorPalette7
|
||||||
|
dc.l imageData7
|
||||||
|
dc.l endImageData7-imageData7
|
||||||
|
|
||||||
|
if INTERLACE==0
|
||||||
|
dc.l InstallColorPalette8
|
||||||
|
dc.l imageData8
|
||||||
|
dc.l endImageData8-imageData8
|
||||||
|
endif; INTERLACE==0
|
||||||
|
dc.l 0 ; terminate list
|
||||||
|
|
||||||
|
|
||||||
|
section .noload ; data in this section will not be loaded by the bootloader
|
||||||
|
cnop 0,512 ; each image must be aligned to a sector boundary
|
||||||
|
imageData1: ; because I am too lazy to read non aligned data
|
||||||
|
if HAM_MODE==1
|
||||||
|
incbin "out/image1-ham.lz"
|
||||||
|
else
|
||||||
|
incbin "out/image1.lz"
|
||||||
|
endif
|
||||||
|
endImageData1:
|
||||||
|
|
||||||
|
cnop 0,512 ; each image must be aligned to a sector boundary
|
||||||
|
imageData2: ; because I am too lazy to read non aligned data
|
||||||
|
if HAM_MODE==1
|
||||||
|
incbin "out/image2-ham.lz"
|
||||||
|
else
|
||||||
|
incbin "out/image2.lz"
|
||||||
|
endif
|
||||||
|
endImageData2:
|
||||||
|
|
||||||
|
cnop 0,512 ; each image must be aligned to a sector boundary
|
||||||
|
imageData3:
|
||||||
|
if HAM_MODE==1
|
||||||
|
incbin "out/image3-ham.lz"
|
||||||
|
else
|
||||||
|
incbin "out/image3.lz"
|
||||||
|
endif
|
||||||
|
endImageData3:
|
||||||
|
|
||||||
|
cnop 0,512 ; each image must be aligned to a sector boundary
|
||||||
|
imageData4:
|
||||||
|
if HAM_MODE==1
|
||||||
|
incbin "out/image4-ham.lz"
|
||||||
|
else
|
||||||
|
incbin "out/image4.lz"
|
||||||
|
endif
|
||||||
|
endImageData4:
|
||||||
|
|
||||||
|
cnop 0,512 ; each image must be aligned to a sector boundary
|
||||||
|
imageData5:
|
||||||
|
if HAM_MODE==1
|
||||||
|
incbin "out/image5-ham.lz"
|
||||||
|
else
|
||||||
|
incbin "out/image5.lz"
|
||||||
|
endif
|
||||||
|
endImageData5:
|
||||||
|
|
||||||
|
cnop 0,512 ; each image must be aligned to a sector boundary
|
||||||
|
imageData6:
|
||||||
|
if HAM_MODE==1
|
||||||
|
incbin "out/image6-ham.lz"
|
||||||
|
else
|
||||||
|
incbin "out/image6.lz"
|
||||||
|
endif
|
||||||
|
endImageData6:
|
||||||
|
|
||||||
|
cnop 0,512 ; each image must be aligned to a sector boundary
|
||||||
|
imageData7:
|
||||||
|
if HAM_MODE==1
|
||||||
|
incbin "out/image7-ham.lz"
|
||||||
|
else
|
||||||
|
incbin "out/image7.lz"
|
||||||
|
endif
|
||||||
|
endImageData7:
|
||||||
|
|
||||||
|
if INTERLACE==0
|
||||||
|
cnop 0,512 ; each image must be aligned to a sector boundary
|
||||||
|
imageData8:
|
||||||
|
if HAM_MODE==1
|
||||||
|
incbin "out/image8-ham.lz"
|
||||||
|
else
|
||||||
|
incbin "out/image8.lz"
|
||||||
|
endif
|
||||||
|
endImageData8:
|
||||||
|
endif; INTERLACE==0
|
||||||
|
|
||||||
|
cnop 0,512
|
||||||
|
compressedModule:
|
||||||
|
incbin "out/P61.breath_of_life.lz"
|
||||||
|
endCompressedModule:
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
xdef LoadDiskData
|
||||||
|
|
||||||
|
LoadDiskData:
|
||||||
|
;; a0 - destination address
|
||||||
|
;; a1 - start address
|
||||||
|
;; d0 - size
|
||||||
|
movem.l d0-a6,-(sp)
|
||||||
|
lea $dff002,a6 ; LoadMFMB 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 ; load the data!
|
||||||
|
|
||||||
|
movem.l (sp)+,d0-a6
|
||||||
|
rts
|
||||||
@@ -1,7 +1,6 @@
|
|||||||
include "includes.i"
|
include "includes.i"
|
||||||
|
|
||||||
xdef LoadNextImage
|
xdef LoadNextImage
|
||||||
xdef LoadModule
|
|
||||||
xdef SetupImage
|
xdef SetupImage
|
||||||
|
|
||||||
LoadNextImage:
|
LoadNextImage:
|
||||||
@@ -26,29 +25,28 @@ LoadImage:
|
|||||||
;; d0 - size
|
;; d0 - size
|
||||||
;; a1 - start address
|
;; a1 - start address
|
||||||
;; a2 - InstallColorPalette(X) address
|
;; a2 - InstallColorPalette(X) address
|
||||||
|
|
||||||
move.l bitplanesp3,a0 ; load compressed data into bitplanes3
|
lea bitplanes3,a0
|
||||||
bsr DoLoadImage ; load data from disk
|
bsr LoadDiskData ; load data from disk
|
||||||
|
|
||||||
move.l nextbitplane,a1 ; decompress into offscreen bitplanesp(1/2)
|
move.l nextbitplane,a1 ; decompress into offscreen bitplanesp(1/2)
|
||||||
move.l (a1),a1
|
|
||||||
;a0 = Input buffer to be decompressed. Must be 16-bit aligned!
|
;; a0 = Input buffer to be decompressed. Must be 16-bit aligned!
|
||||||
;a1 = Output buffer. Points to the end of the data at exit
|
;; a1 = Output buffer. Points to the end of the data at exit
|
||||||
jsr Depack
|
jsr Depack
|
||||||
|
|
||||||
jsr WaitVerticalBlank ; avoid tearing when we show the new image
|
jsr WaitVerticalBlank ; avoid tearing when we show the new image
|
||||||
jsr (a2) ; install new color palette
|
jsr (a2) ; install new color palette
|
||||||
bsr SetupImage ; display new image
|
bsr SetupImage ; display new image
|
||||||
|
|
||||||
|
|
||||||
;; toggle offscreen bitplane
|
;; toggle offscreen bitplane
|
||||||
cmp.l #bitplanesp1,nextbitplane
|
cmp.l #bitplanes1,nextbitplane
|
||||||
beq .setbitplanesp2
|
beq .setbitplanes2
|
||||||
.setbitplanesp1:
|
.setbitplanes1:
|
||||||
move.l #bitplanesp1,nextbitplane
|
move.l #bitplanes1,nextbitplane
|
||||||
bra .done
|
bra .done
|
||||||
.setbitplanesp2:
|
.setbitplanes2:
|
||||||
move.l #bitplanesp2,nextbitplane
|
move.l #bitplanes2,nextbitplane
|
||||||
.done:
|
.done:
|
||||||
rts
|
rts
|
||||||
|
|
||||||
@@ -69,199 +67,9 @@ SetupImage:
|
|||||||
movem.l (sp)+,d0-a6
|
movem.l (sp)+,d0-a6
|
||||||
rts
|
rts
|
||||||
|
|
||||||
DoLoadImage:
|
|
||||||
;; a0 - destination address
|
|
||||||
;; a1 - start address
|
|
||||||
;; d0 - size
|
|
||||||
movem.l d0-a6,-(sp)
|
|
||||||
lea $dff002,a6 ; LoadMFMB 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 ; load the data!
|
|
||||||
|
|
||||||
movem.l (sp)+,d0-a6
|
|
||||||
rts
|
|
||||||
|
|
||||||
imageLookupTable: ; configure slideshow here
|
|
||||||
dc.l InstallColorPalette ; palette installation routine
|
|
||||||
dc.l imageData1 ; compressed image data
|
|
||||||
dc.l endImageData1-imageData1 ; compressed image data size
|
|
||||||
|
|
||||||
dc.l InstallColorPalette2
|
|
||||||
dc.l imageData2
|
|
||||||
dc.l endImageData2-imageData2
|
|
||||||
|
|
||||||
dc.l InstallColorPalette3
|
|
||||||
dc.l imageData3
|
|
||||||
dc.l endImageData3-imageData3
|
|
||||||
|
|
||||||
dc.l InstallColorPalette4
|
|
||||||
dc.l imageData4
|
|
||||||
dc.l endImageData4-imageData4
|
|
||||||
|
|
||||||
dc.l InstallColorPalette5
|
|
||||||
dc.l imageData5
|
|
||||||
dc.l endImageData5-imageData5
|
|
||||||
|
|
||||||
dc.l InstallColorPalette6
|
|
||||||
dc.l imageData6
|
|
||||||
dc.l endImageData6-imageData6
|
|
||||||
|
|
||||||
|
|
||||||
dc.l InstallColorPalette7
|
|
||||||
dc.l imageData7
|
|
||||||
dc.l endImageData7-imageData7
|
|
||||||
|
|
||||||
if INTERLACE==0
|
|
||||||
dc.l InstallColorPalette8
|
|
||||||
dc.l imageData8
|
|
||||||
dc.l endImageData8-imageData8
|
|
||||||
endif; INTERLACE==0
|
|
||||||
dc.l 0 ; terminate list
|
|
||||||
|
|
||||||
imageIndex:
|
imageIndex:
|
||||||
dc.l 0
|
dc.l 0
|
||||||
nextbitplane:
|
nextbitplane:
|
||||||
dc.l bitplanesp1
|
dc.l bitplanes1
|
||||||
|
|
||||||
LoadModule:
|
|
||||||
;; a0 - destination address
|
|
||||||
;; a1 - start address
|
|
||||||
;; d0 - size
|
|
||||||
movem.l d0-a6,-(sp)
|
|
||||||
lea endCode,a0
|
|
||||||
lea compressedModule,a1
|
|
||||||
move.l #endCompressedModule,d0
|
|
||||||
sub.l #compressedModule,d0
|
|
||||||
jsr DoLoadImage
|
|
||||||
|
|
||||||
;a0 = input buffer to be decompressed. Must be 16-bit aligned!
|
|
||||||
;a1 = output buffer. Points to the end of the data at exit
|
|
||||||
lea endCode,a0
|
|
||||||
lea Module1,a1
|
|
||||||
move.l (a1),a1
|
|
||||||
jsr Depack
|
|
||||||
|
|
||||||
movem.l (sp)+,d0-a6
|
|
||||||
rts
|
|
||||||
|
|
||||||
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/mr9-palette.s"
|
|
||||||
rts
|
|
||||||
InstallColorPalette6:
|
|
||||||
include "out/mr6-palette.s"
|
|
||||||
rts
|
|
||||||
InstallColorPalette7:
|
|
||||||
include "out/mr10-palette.s"
|
|
||||||
rts
|
|
||||||
if INTERLACE==0
|
|
||||||
InstallColorPalette8:
|
|
||||||
include "out/mr8-palette.s"
|
|
||||||
rts
|
|
||||||
endif; INTERLACE==0
|
|
||||||
|
|
||||||
section .photo ; data in this section will not be loaded by the bootloader
|
|
||||||
cnop 0,512 ; each image must be aligned to a sector boundary
|
|
||||||
imageData1: ; because I am too lazy to read non aligned data
|
|
||||||
if HAM_MODE==1
|
|
||||||
incbin "out/mr-ham.lz"
|
|
||||||
else
|
|
||||||
incbin "out/mr.lz"
|
|
||||||
endif
|
|
||||||
endImageData1:
|
|
||||||
|
|
||||||
cnop 0,512 ; each image must be aligned to a sector boundary
|
|
||||||
imageData2: ; because I am too lazy to read non aligned data
|
|
||||||
if HAM_MODE==1
|
|
||||||
incbin "out/mr2-ham.lz"
|
|
||||||
else
|
|
||||||
incbin "out/mr2.lz"
|
|
||||||
endif
|
|
||||||
endImageData2:
|
|
||||||
|
|
||||||
cnop 0,512 ; each image must be aligned to a sector boundary
|
|
||||||
imageData3:
|
|
||||||
if HAM_MODE==1
|
|
||||||
incbin "out/mr3-ham.lz"
|
|
||||||
else
|
|
||||||
incbin "out/mr3.lz"
|
|
||||||
endif
|
|
||||||
endImageData3:
|
|
||||||
|
|
||||||
cnop 0,512 ; each image must be aligned to a sector boundary
|
|
||||||
imageData4:
|
|
||||||
if HAM_MODE==1
|
|
||||||
incbin "out/mr4-ham.lz"
|
|
||||||
else
|
|
||||||
incbin "out/mr4.lz"
|
|
||||||
endif
|
|
||||||
endImageData4:
|
|
||||||
|
|
||||||
cnop 0,512 ; each image must be aligned to a sector boundary
|
|
||||||
imageData5:
|
|
||||||
if HAM_MODE==1
|
|
||||||
incbin "out/mr9-ham.lz"
|
|
||||||
else
|
|
||||||
incbin "out/mr9.lz"
|
|
||||||
endif
|
|
||||||
endImageData5:
|
|
||||||
|
|
||||||
cnop 0,512 ; each image must be aligned to a sector boundary
|
|
||||||
imageData6:
|
|
||||||
if HAM_MODE==1
|
|
||||||
incbin "out/mr6-ham.lz"
|
|
||||||
else
|
|
||||||
incbin "out/mr6.lz"
|
|
||||||
endif
|
|
||||||
endImageData6:
|
|
||||||
|
|
||||||
cnop 0,512 ; each image must be aligned to a sector boundary
|
|
||||||
imageData7:
|
|
||||||
if HAM_MODE==1
|
|
||||||
incbin "out/mr10-ham.lz"
|
|
||||||
else
|
|
||||||
incbin "out/mr10.lz"
|
|
||||||
endif
|
|
||||||
endImageData7:
|
|
||||||
|
|
||||||
if INTERLACE==0
|
|
||||||
cnop 0,512 ; each image must be aligned to a sector boundary
|
|
||||||
imageData8:
|
|
||||||
if HAM_MODE==1
|
|
||||||
incbin "out/mr8-ham.lz"
|
|
||||||
else
|
|
||||||
incbin "out/mr8.lz"
|
|
||||||
endif
|
|
||||||
endImageData8:
|
|
||||||
endif; INTERLACE==0
|
|
||||||
|
|
||||||
cnop 0,512
|
|
||||||
compressedModule:
|
|
||||||
incbin "out/P61.breath_of_life.lz"
|
|
||||||
endCompressedModule:
|
|
||||||
|
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ HAMBIT equ 0
|
|||||||
lea copperList,a0
|
lea copperList,a0
|
||||||
move.l a0,COP1LC(a6)
|
move.l a0,COP1LC(a6)
|
||||||
move.w COPJMP1(a6),d0
|
move.w COPJMP1(a6),d0
|
||||||
move.w #(DMAF_BLITTER|DMAF_SETCLR!DMAF_COPPER!DMAF_RASTER!DMAF_MASTER),DMACON(a6)
|
move.w #(DMAF_BLITTER|DMAF_SETCLR!DMAF_COPPER!DMAF_RASTER!DMAF_MASTER),DMACON(a6)
|
||||||
;; move.w #(INTF_SETCLR|INTF_VERTB|INTF_INTEN),INTENA(a6)
|
;; move.w #(INTF_SETCLR|INTF_VERTB|INTF_INTEN),INTENA(a6)
|
||||||
movem.l (sp)+,d0-a6
|
movem.l (sp)+,d0-a6
|
||||||
rts
|
rts
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
MEMORY
|
|
||||||
{
|
|
||||||
ram: org = 0x10000, len = 0x100000
|
|
||||||
}
|
|
||||||
|
|
||||||
SECTIONS
|
|
||||||
{
|
|
||||||
load : {
|
|
||||||
startCode = .;
|
|
||||||
*(.text)
|
|
||||||
*(.bss)
|
|
||||||
*(.data)
|
|
||||||
*(CODE)
|
|
||||||
*(DATA)
|
|
||||||
endCode = .;
|
|
||||||
} > ram
|
|
||||||
|
|
||||||
photo ALIGN(512) : {
|
|
||||||
startData = .;
|
|
||||||
*(.photo)
|
|
||||||
endData = .;
|
|
||||||
} > ram
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
MEMORY
|
||||||
|
{
|
||||||
|
disk: org = 0x800, len = 0xDB800
|
||||||
|
ram: org = 0x00000, len = 0x80000
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTIONS
|
||||||
|
{
|
||||||
|
load : {
|
||||||
|
startCode = .;
|
||||||
|
*(.text)
|
||||||
|
*(.data)
|
||||||
|
*(CODE)
|
||||||
|
*(DATA)
|
||||||
|
endCode = .;
|
||||||
|
} > disk
|
||||||
|
|
||||||
|
noload ALIGN(512) : {
|
||||||
|
startData = .;
|
||||||
|
*(.noload)
|
||||||
|
endData = .;
|
||||||
|
} > disk
|
||||||
|
|
||||||
|
bss (NOLOAD) : {
|
||||||
|
. = endCode;
|
||||||
|
*(.bss)
|
||||||
|
} > ram;
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
xdef LoadModule
|
||||||
|
|
||||||
|
LoadModule:
|
||||||
|
movem.l d0-a6,-(sp)
|
||||||
|
lea bitplanes1,a0
|
||||||
|
lea compressedModule,a1
|
||||||
|
move.l #endCompressedModule,d0
|
||||||
|
sub.l #compressedModule,d0
|
||||||
|
;; a0 - destination address
|
||||||
|
;; a1 - start address
|
||||||
|
;; d0 - size
|
||||||
|
jsr LoadDiskData
|
||||||
|
|
||||||
|
;; a0 - input buffer to be decompressed. Must be 16-bit aligned!
|
||||||
|
;; a1 - output buffer. Points to the end of the data at exit
|
||||||
|
lea bitplanes1,a0
|
||||||
|
lea Module,a1
|
||||||
|
jsr Depack
|
||||||
|
|
||||||
|
movem.l (sp)+,d0-a6
|
||||||
|
rts
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
210
|
||||||
|
fed
|
||||||
|
b76
|
||||||
|
fff
|
||||||
|
ecb
|
||||||
|
321
|
||||||
|
744
|
||||||
|
c98
|
||||||
|
fdc
|
||||||
|
c53
|
||||||
|
dba
|
||||||
|
965
|
||||||
|
b87
|
||||||
|
ffe
|
||||||
|
533
|
||||||
|
da9
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
210
|
||||||
|
fed
|
||||||
|
b76
|
||||||
|
fff
|
||||||
|
ecb
|
||||||
|
321
|
||||||
|
744
|
||||||
|
c98
|
||||||
|
fdc
|
||||||
|
c53
|
||||||
|
dba
|
||||||
|
965
|
||||||
|
b87
|
||||||
|
ffe
|
||||||
|
533
|
||||||
|
da9
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
210
|
||||||
|
fed
|
||||||
|
b76
|
||||||
|
fff
|
||||||
|
ecb
|
||||||
|
321
|
||||||
|
744
|
||||||
|
c98
|
||||||
|
fdc
|
||||||
|
c53
|
||||||
|
dba
|
||||||
|
965
|
||||||
|
b87
|
||||||
|
ffe
|
||||||
|
533
|
||||||
|
da9
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
210
|
||||||
|
fed
|
||||||
|
b76
|
||||||
|
fff
|
||||||
|
ecb
|
||||||
|
321
|
||||||
|
744
|
||||||
|
c98
|
||||||
|
fdc
|
||||||
|
c53
|
||||||
|
dba
|
||||||
|
965
|
||||||
|
b87
|
||||||
|
ffe
|
||||||
|
533
|
||||||
|
da9
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
210
|
||||||
|
fed
|
||||||
|
b76
|
||||||
|
fff
|
||||||
|
ecb
|
||||||
|
321
|
||||||
|
744
|
||||||
|
c98
|
||||||
|
fdc
|
||||||
|
c53
|
||||||
|
dba
|
||||||
|
965
|
||||||
|
b87
|
||||||
|
ffe
|
||||||
|
533
|
||||||
|
da9
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
210
|
||||||
|
fed
|
||||||
|
b76
|
||||||
|
fff
|
||||||
|
ecb
|
||||||
|
321
|
||||||
|
744
|
||||||
|
c98
|
||||||
|
fdc
|
||||||
|
c53
|
||||||
|
dba
|
||||||
|
965
|
||||||
|
b87
|
||||||
|
ffe
|
||||||
|
533
|
||||||
|
da9
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
210
|
||||||
|
fed
|
||||||
|
b76
|
||||||
|
fff
|
||||||
|
ecb
|
||||||
|
321
|
||||||
|
744
|
||||||
|
c98
|
||||||
|
fdc
|
||||||
|
c53
|
||||||
|
dba
|
||||||
|
965
|
||||||
|
b87
|
||||||
|
ffe
|
||||||
|
533
|
||||||
|
da9
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
210
|
||||||
|
fed
|
||||||
|
b76
|
||||||
|
fff
|
||||||
|
ecb
|
||||||
|
321
|
||||||
|
744
|
||||||
|
c98
|
||||||
|
fdc
|
||||||
|
c53
|
||||||
|
dba
|
||||||
|
965
|
||||||
|
b87
|
||||||
|
ffe
|
||||||
|
533
|
||||||
|
da9
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
111
|
|
||||||
9ac
|
|
||||||
244
|
|
||||||
cef
|
|
||||||
28a
|
|
||||||
744
|
|
||||||
122
|
|
||||||
3ce
|
|
||||||
267
|
|
||||||
cbd
|
|
||||||
978
|
|
||||||
422
|
|
||||||
b8c
|
|
||||||
def
|
|
||||||
133
|
|
||||||
19c
|
|
||||||
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
000
|
|
||||||
fff
|
|
||||||
757
|
|
||||||
a23
|
|
||||||
99a
|
|
||||||
355
|
|
||||||
ccc
|
|
||||||
788
|
|
||||||
258
|
|
||||||
222
|
|
||||||
eee
|
|
||||||
666
|
|
||||||
abb
|
|
||||||
444
|
|
||||||
555
|
|
||||||
777
|
|
||||||
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
011
|
|
||||||
865
|
|
||||||
222
|
|
||||||
c97
|
|
||||||
543
|
|
||||||
ecb
|
|
||||||
b75
|
|
||||||
344
|
|
||||||
689
|
|
||||||
432
|
|
||||||
754
|
|
||||||
111
|
|
||||||
233
|
|
||||||
da8
|
|
||||||
fed
|
|
||||||
455
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
111
|
|
||||||
9ac
|
|
||||||
244
|
|
||||||
cef
|
|
||||||
28a
|
|
||||||
744
|
|
||||||
122
|
|
||||||
3ce
|
|
||||||
267
|
|
||||||
cbd
|
|
||||||
978
|
|
||||||
422
|
|
||||||
b8c
|
|
||||||
def
|
|
||||||
133
|
|
||||||
19c
|
|
||||||
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
000
|
|
||||||
da8
|
|
||||||
532
|
|
||||||
ffe
|
|
||||||
211
|
|
||||||
865
|
|
||||||
922
|
|
||||||
dcb
|
|
||||||
e63
|
|
||||||
544
|
|
||||||
322
|
|
||||||
988
|
|
||||||
fd5
|
|
||||||
511
|
|
||||||
111
|
|
||||||
edd
|
|
||||||
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
000
|
|
||||||
dcd
|
|
||||||
833
|
|
||||||
fff
|
|
||||||
a02
|
|
||||||
877
|
|
||||||
134
|
|
||||||
ba9
|
|
||||||
555
|
|
||||||
701
|
|
||||||
112
|
|
||||||
d02
|
|
||||||
def
|
|
||||||
058
|
|
||||||
ec9
|
|
||||||
333
|
|
||||||
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
000
|
|
||||||
aad
|
|
||||||
734
|
|
||||||
cef
|
|
||||||
67a
|
|
||||||
d58
|
|
||||||
211
|
|
||||||
722
|
|
||||||
346
|
|
||||||
ace
|
|
||||||
fef
|
|
||||||
933
|
|
||||||
e8b
|
|
||||||
79c
|
|
||||||
d27
|
|
||||||
568
|
|
||||||
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
100
|
|
||||||
a86
|
|
||||||
522
|
|
||||||
dc9
|
|
||||||
744
|
|
||||||
311
|
|
||||||
eeb
|
|
||||||
cb8
|
|
||||||
965
|
|
||||||
633
|
|
||||||
b97
|
|
||||||
200
|
|
||||||
854
|
|
||||||
411
|
|
||||||
eda
|
|
||||||
422
|
|
||||||
@@ -2,23 +2,22 @@
|
|||||||
include "P6112-Options.i"
|
include "P6112-Options.i"
|
||||||
|
|
||||||
xdef PokeBitplanePointers
|
xdef PokeBitplanePointers
|
||||||
xdef Level3InterruptHandler
|
|
||||||
xdef copperList
|
xdef copperList
|
||||||
xdef copperListAlternate
|
xdef copperListAlternate
|
||||||
xdef bitplanesp1
|
xdef bitplanes1
|
||||||
xdef bitplanesp2
|
xdef bitplanes2
|
||||||
xdef bitplanesp3
|
xdef bitplanes3
|
||||||
xdef Module1
|
xdef Module
|
||||||
|
|
||||||
byteMap:
|
byteMap:
|
||||||
dc.l Entry
|
dc.l Entry
|
||||||
dc.l endCode-byteMap
|
dc.l endCode-byteMap
|
||||||
|
|
||||||
Entry:
|
Entry:
|
||||||
move.l userstack,a7
|
lea userstack,a7
|
||||||
lea CUSTOM,a6
|
lea CUSTOM,a6
|
||||||
|
|
||||||
move #$7ff,DMACON(a6) ; disable all dma
|
;; move #$7ff,DMACON(a6) ; disable all dma
|
||||||
move #$7fff,INTENA(a6) ; disable all interrupts
|
move #$7fff,INTENA(a6) ; disable all interrupts
|
||||||
|
|
||||||
move.w d0,COLOR00(a6) ; black screen
|
move.w d0,COLOR00(a6) ; black screen
|
||||||
@@ -28,23 +27,23 @@ Entry:
|
|||||||
move.l a3,LVL3_INT_VECTOR
|
move.l a3,LVL3_INT_VECTOR
|
||||||
|
|
||||||
;; initialise P61
|
;; initialise P61
|
||||||
lea Module1,a0
|
lea Module,a0
|
||||||
move.l (a0),a0
|
|
||||||
sub.l a1,a1
|
sub.l a1,a1
|
||||||
sub.l a2,a2
|
sub.l a2,a2
|
||||||
moveq #0,d0
|
moveq #0,d0
|
||||||
jsr P61_Init
|
jsr P61_Init
|
||||||
|
|
||||||
move.w #(INTF_SETCLR|INTF_VERTB|INTF_INTEN),INTENA(a6)
|
move.w #(INTF_SETCLR|INTF_VERTB|INTF_INTEN),INTENA(a6)
|
||||||
|
lea bitplanes2,a0
|
||||||
move.l bitplanesp2,a0 ; setup an empty bitplane
|
move.l #IMAGESIZE/4,d0
|
||||||
move.l #IMAGESIZE,d0
|
.clear:
|
||||||
jsr ClearMemory ; clear it
|
move.l #0,(a0)+
|
||||||
jsr WaitBlitter ; make sure it's clear
|
dbra d0,.clear
|
||||||
|
|
||||||
move.l a0,a1
|
|
||||||
bsr SetupImage ; select it
|
|
||||||
|
|
||||||
|
lea bitplanes2,a1
|
||||||
|
bsr SetupImage ; select it
|
||||||
|
|
||||||
|
jsr WaitVerticalBlank
|
||||||
jsr Init ; enable the playfield
|
jsr Init ; enable the playfield
|
||||||
|
|
||||||
move.l #50*10,d0
|
move.l #50*10,d0
|
||||||
@@ -82,9 +81,6 @@ Level3InterruptHandler:
|
|||||||
|
|
||||||
.verticalBlank:
|
.verticalBlank:
|
||||||
move.w #INTF_VERTB,INTREQ(a6) ; clear interrupt bit
|
move.w #INTF_VERTB,INTREQ(a6) ; clear interrupt bit
|
||||||
movem.l d0-a6,-(sp)
|
|
||||||
;; jsr P61_Music ; and call the playroutine manually.
|
|
||||||
movem.l (sp)+,d0-a6
|
|
||||||
|
|
||||||
if INTERLACE==1
|
if INTERLACE==1
|
||||||
btst #VPOSRLOFBIT,VPOSR(a6)
|
btst #VPOSRLOFBIT,VPOSR(a6)
|
||||||
@@ -166,19 +162,19 @@ copperList:
|
|||||||
dc.w BPL6PTL,0
|
dc.w BPL6PTL,0
|
||||||
dc.w BPL6PTH,0
|
dc.w BPL6PTH,0
|
||||||
dc.l $fffffffe
|
dc.l $fffffffe
|
||||||
|
|
||||||
;; Module1:
|
|
||||||
;; incbin "../assets/P61.sowhat-intro" ;usecode $9410
|
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
|
|
||||||
bitplanesp1:
|
section .bss
|
||||||
dc.l endCode
|
|
||||||
bitplanesp2:
|
bitplanes1:
|
||||||
dc.l endCode+(512)+IMAGESIZE
|
ds.b IMAGESIZE+512
|
||||||
bitplanesp3:
|
bitplanes2:
|
||||||
dc.l endCode+(512*2)+(2*IMAGESIZE)
|
ds.b IMAGESIZE+(512*2)
|
||||||
userstack:
|
bitplanes3:
|
||||||
dc.l endCode+(512*3)+(3*IMAGESIZE)+$1000
|
ds.b IMAGESIZE+(512*3)
|
||||||
Module1:
|
startUserstack:
|
||||||
dc.l endCode+(512*3)+(3*IMAGESIZE)+$1000+4
|
ds.b $1000
|
||||||
|
userstack:
|
||||||
|
endUserstack:
|
||||||
|
Module:
|
||||||