home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TCE Demo 2
/
TCE_DEMO_CD2.iso
/
demo_cd_.2
/
mags
/
stosser
/
stoser20.arj
/
stoser20.msa
/
HEADER2
/
PRGHEDR.S
Wrap
Text File
|
1994-12-14
|
9KB
|
470 lines
* Display a piccy while STOS prog is unpacking
* Use data packing *not* executable packing!
start:
move.l #0,res ; 0= LOW, 1=MED, 2=HIGH
bsr black ; fade to black
* get actual screen address, phys base
move.w #2,-(sp)
trap #14
addq.l #2,sp
move.l d0,screen
* the business
move.l d0,a1 ;move screen address to a1
lea picture(pc),a0
bsr tiny
bsr fcolour ;fade to the palette created by
; the tiny depack (TINPAL)
* piccy on screen now go do depack of STOS program
lea stos(pc),a0 ;move the start of the STOS prog into a0
bsr ice_decrunch_2
bsr fblack ; fade to black so the the picture
; doesn't just vanish when we run the
; STOS program
bra stos ;and off we go!!
illegal ;It'll never get here (!?)
fblack: ;fade to black in super mode
moveq.l #2,d6
move.l #fade_black,-(sp)
move #38,-(sp)
trap #14
addq.l #6,sp
rts
fcolour: ;now fade back to colours
moveq.l #5,d6
lea tinpal(pc),a6
move.l #fade,-(sp)
move #38,-(sp)
trap #14
addq.l #6,sp
rts
black
move.l #black_pal,-(sp)
move #6,-(sp)
trap #14
add.l #6,sp
rts
even
***************************************************************************
* COLOUR FADE ROUTINES BY POWERMAN OF THE WILD BOYS, (C) TWB 1991 *
* CALL FADE_BLACK TO FADE ALL COLOURS TO BLACK *
* CALL FADE TO FADE ALL COLOURS TO A NEW PALETTE, MAKE SURE THAT *
* A6=ADDRESS OF NEW PALETTE DATA. *
* ON BOTH ROUTINES, D6=SPEED OF FADE (0=FASTEST) *
* DONT FORGET TO CREDIT ME IF YOU USE THESE ROUTS! *
***************************************************************************
FADE ; Note: A6=source address of new palette
; D6=Speed of fade (0,1,2 etc)
MOVE.L $70.W,-(A7)
MOVE.W SR,-(A7)
MOVE.W #$2300,SR
MOVE.L #FADE_VBL,$70.W
MOVEQ.W #8-1,D0
.L1 MOVEQ.W #16-1,D1 16 colours
LEA $FFFF8240.W,A0
MOVE.L A6,A5
.L2 MOVE.W (A0),D2
ANDI.W #%0000011101110111,D2
MOVE.W (A5)+,D7
BSR FADE_D2_TO_D7
MOVE.W D2,(A0)+
DBF D1,.L2
MOVE.W D6,D5
.L3 BSR WAIT_VBL
DBF D5,.L3
DBF D0,.L1
MOVE.W (A7)+,SR
MOVE.L (A7)+,$70.W
RTS
FADE_D2_TO_D7 MOVEM.L D0-D1,-(A7)
MOVE.W D2,D3
ANDI.W #$F,D2
LSR.W #4,D3
MOVE.W D3,D4
ANDI.W #$F,D3
LSR.W #4,D4 D2,D3,D4=R,G,B VALUES OF OLD COLOUR
ANDI.W #$F,D4
MOVE.W D7,D0
ANDI.W #$F,D7
LSR.W #4,D0
MOVE.W D0,D1
ANDI.W #$F,D0
LSR.W #4,D1 D7,D0,D1=R,G,B VALUES OF NEW COLOUR
ANDI.W #$F,D1
CMP.W D2,D7
BEQ .L2
BLT .L1
ADDQ.W #1,D2
BRA .L2
.L1 SUBQ.W #1,D2
.L2 CMP.W D3,D0
BEQ .L22
BLT .L11
ADDQ.W #1,D3
BRA .L22
.L11 SUBQ.W #1,D3
.L22 CMP.W D4,D1
BEQ .L222
BLT .L111
ADDQ.W #1,D4
BRA .L222
.L111 SUBQ.W #1,D4
.L222 LSL.W #4,D3
LSL.W #8,D4
OR.W D3,D2
OR.W D4,D2
MOVEM.L (A7)+,D0-D1
RTS
FADE_BLACK ; Note: D6=Speed of fade
MOVE.L $70.W,-(A7)
MOVE.W SR,-(A7)
MOVE.W #$2300,SR
MOVE.L #FADE_VBL,$70.W
MOVEQ.W #8-1,D0
.L1 MOVEQ.W #16-1,D1 16 colours
LEA $FFFF8240.W,A0
.L2 MOVE.W (A0),D2
BSR FADE_D2
MOVE.W D2,(A0)+
DBF D1,.L2
MOVE.W D6,D5
.L3 BSR WAIT_VBL
DBF D5,.L3
DBF D0,.L1
MOVE.W (A7)+,SR
MOVE.L (A7)+,$70.W
RTS
FADE_D2 MOVE.W D2,D3
ANDI.W #$F,D2
LSR.W #4,D3
MOVE.W D3,D4
ANDI.W #$F,D3
LSR.W #4,D4 D2,D3,D4=R,G,B VALUES
ANDI.W #$F,D4
TST.W D2
BEQ .L1
SUBQ.W #1,D2
.L1 TST.W D3
BEQ .L2
SUBQ.W #1,D3
.L2 TST.W D4
BEQ .L3
SUBQ.W #1,D4
.L3 LSL.W #8,D4
LSL.W #4,D3
OR.W D4,D2
OR.W D3,D2
RTS
WAIT_VBL CLR.B VBL_FLAG
.L1 TST.B VBL_FLAG
BEQ .L1
RTS
VBL_FLAG DS.W 1
FADE_VBL ST VBL_FLAG
RTE
even
* Tiny depack (C) Axe of Superior
; the de-packing code !
tiny: movem.l d1-d6/a2-a5,-(sp)
bsr t_getpal ; read resolution and palette
move.l a4,d5
move.l a1,d6
addi.l #$7d00,d6
move.l a1,d4
addi.l #$a0,d4
bra.s t17a0a
t179be: moveq #0,d0
move.b (a5)+,d0
beq.s t179ce
cmpi.b #1,d0
beq.s t179d6
ext.w d0
bra.s t179de
t179ce: move.b (a5)+,d0
lsl.w #8,d0
move.b (a5)+,d0
bra.s t179de
t179d6: move.b (a5)+,d0
lsl.w #8,d0
move.b (a5)+,d0
neg.w d0
t179de: tst.w d0
bmi.s t179ea
move.b (a4)+,d3
lsl.w #8,d3
move.b (a4)+,d3
bra.s t17a2e
t179ea: neg.w d0
bra.s t17a06
t179ee: move.b (a4)+,(a1)+
move.b (a4)+,(a1)+
lea $9e(a1),a1
cmpa.l d6,a1
blt.s t17a06
lea $ffff8308(a1),a1
cmp.l d4,a1
blt.s t17a06
lea $ffffff62(a1),a1
t17a06: dbra d0,t179ee
t17a0a: cmp.l d5,a5
blt.s t179be
moveq #1,d0
t_end: movem.l (sp)+,d1-d6/a2-a5
rts
t17a18: move.w d3,(a1)+
lea $9e(a1),a1
cmp.l d6,a1
blt.s t17a2e
lea $ffff8308(a1),a1
cmp.l d4,a1
blt.s t17a2e
lea $ffffff62(a1),a1
t17a2e: dbra d0,t17a18
cmpa.l d5,a5
blt.s t179be
moveq #1,d0
movem.l (sp)+,d1-d6/a2-a5
rts
; find out resolution and palette
t_getpal: cmpi.b #2,(a0)+ ; Color mode?
ble.s t_color
addq.l #4,a0
t_color: moveq #31,d0 ; install palette
lea tinpal(pc),a2
t_copypal:move.b (a0)+,(a2)+
dbra d0,t_copypal
move.b (a0)+,d1
lsl.w #8,d1
move.b (a0)+,d1
addq.l #2,a0
movea.l a0,a5 ; beginning of Data
ext.l d1
adda.l d1,a0
movea.l a0,a4 ; end of Data
moveq #1,d0
rts
even
;*********************************************
; Unpacking routine of PACK-ICE
; a0 = AdTRESs of packed data
; "bsr" or "jsr" to ice_decrunch_2 with register a0 prepared.
ice_decrunch_2
link a3,#-120
movem.L d0-a6,-(sp)
lea 120(a0),a4
move.L a4,a6
bsr .getinfo
cmpi.L #'ICE!',d0
bne.S .not_packed
bsr.s .getinfo
lea.L -8(a0,d0.L),a5
bsr.s .getinfo
move.L d0,(sp)
adda.L d0,a6
move.L a6,a1
moveq #119,d0
.save move.B -(a1),-(a3)
dbf d0,.save
move.L a6,a3
move.B -(a5),d7
bsr.s .normal_bytes
move.L a3,a5
bsr .get_1_bit
bcc.s .no_picture
move.W #$0f9f,d7
bsr .get_1_bit
bcc.s .ice_00
moveq #15,d0
bsr .get_d0_bits
move.W d1,d7
.ice_00 moveq #3,d6
.ice_01 move.W -(a3),d4
moveq #3,d5
.ice_02 add.W d4,d4
addx.W d0,d0
add.W d4,d4
addx.W d1,d1
add.W d4,d4
addx.W d2,d2
add.W d4,d4
addx.W d3,d3
dbra d5,.ice_02
dbra d6,.ice_01
movem.W d0-d3,(a3)
dbra d7,.ice_00
.no_picture
movem.L (sp),d0-a3
.move move.B (a4)+,(a0)+
subq.L #1,d0
bne.s .move
moveq #119,d0
.TRESt move.B -(a3),-(a5)
dbf d0,.TRESt
.not_packed movem.L (sp)+,d0-a6
unlk a3
rts
.getinfo moveq #3,d1
.getbytes lsl.L #8,d0
move.B (a0)+,d0
dbf d1,.getbytes
rts
.normal_bytes
bsr.s .get_1_bit
bcc.s .test_if_end
moveq.L #0,d1
bsr.s .get_1_bit
bcc.s .copy_direkt
lea.L .direkt_tab+20(pc),a1
moveq.L #4,d3
.nextgb move.L -(a1),d0
bsr.s .get_d0_bits
swap.W d0
cmp.W d0,d1
dbne d3,.nextgb
.no_more add.L 20(a1),d1
.copy_direkt move.B -(a5),-(a6)
dbf d1,.copy_direkt
.test_if_end cmpa.L a4,a6
bgt.s .strings
rts
.get_1_bit add.B d7,d7
bne.s .Bitfound
move.B -(a5),d7
addx.B d7,d7
.Bitfound rts
.get_d0_bits
moveq.L #0,d1
.hole_bit_loop
add.B d7,d7
bne.s .on_d0
move.B -(a5),d7
addx.B d7,d7
.on_d0 addx.W d1,d1
dbf d0,.hole_bit_loop
rts
.strings lea.L .Length_tab(pc),a1
moveq.L #3,d2
.get_length_bit
bsr.s .get_1_bit
dbcc d2,.get_length_bit
.no_length_bit
moveq.L #0,d4
moveq.L #0,d1
move.B 1(a1,d2.W),d0
ext.W d0
bmi.s .no_über
.get_über bsr.s .get_d0_bits
.no_über move.B 6(a1,d2.W),d4
add.W d1,d4
beq.s .get_offset_2
lea.L .more_offset(pc),a1
moveq.L #1,d2
.getoffs bsr.s .get_1_bit
dbcc d2,.getoffs
moveq.L #0,d1
move.B 1(a1,d2.W),d0
ext.W d0
bsr.s .get_d0_bits
add.W d2,d2
add.W 6(a1,d2.W),d1
bpl.s .depack_bytes
sub.W d4,d1
bra.s .depack_bytes
.get_offset_2
moveq.L #0,d1
moveq.L #5,d0
moveq.L #-1,d2
bsr.s .get_1_bit
bcc.s .Less_40
moveq.L #8,d0
moveq.L #$3f,d2
.Less_40 bsr.s .get_d0_bits
add.W d2,d1
.depack_bytes
lea.L 2(a6,d4.W),a1
adda.W d1,a1
move.B -(a1),-(a6)
.dep_b move.B -(a1),-(a6)
dbf d4,.dep_b
bra .normal_bytes
.direkt_tab dc.L $7fff000e,$00ff0007,$00070002,$00030001,$00030001
dc.L 270-1, 15-1, 8-1, 5-1, 2-1
.Length_tab dc.B 9,1,0,-1,-1
dc.B 8,4,2,1,0
.more_offset dc.B 11, 4, 7, 0 ; Bits lesen
dc.W $11f, -1, $1f ; Standard Offset
ende_ice_decrunch_2
even
oldssp: ds.l 1
rez: ds.w 1
tinpal: ds.w 16
ds.l 256 ;the actual stack
ustk ds.l 1
res ds.w 1
screen ds.l 1
black_pal
ds.w 16
even
* Put your Tiny packed picture
* filename here.
* It will be included at compile
* time.
picture:
incbin a:\piccy.tny
* Stos program here (* Data * packed remember)
even
stos incbin a:\stosprog.prg