* INFINITY DEVELOPMENTS intro............. bsr set_super move.b #$12,$fffffc02.w ;DI mouse bsr get_screen_base bsr get_old_palette bsr set_new_palette bsr get_original_rez bsr set_low_rez bsr set_up lea routine_list,a0 do_routines tst.l (a0) bmi.s wait move.l (a0)+,a1 move.l a0,-(sp) jsr (a1) move.l (sp)+,a0 bra.s do_routines wait bsr get_key bsr set_old_palette bsr set_org_rez move.b #$8,$fffffc02.w bsr set_user clr.w -(sp) trap #1 ******************* * CUSTOM ROUTINES * ******************* show_twinkle lea dat1,a0 move.w #10-1,d0 .loop bsr v_sync3 move.l scr_now,a1 add.w #160*57+8,a1 REPT 26 move.l (a0)+,(a1) move.l (a0)+,4(a1) move.l (a0)+,8(a1) move.l (a0)+,12(a1) lea 160(a1),a1 ENDR dbf d0,.loop move.w #6,d0 .delay bsr v_sync2 dbf d0,.delay rts draw_triangle lea triangle+8+(7*8*12),a0 move.l scr_now,a1 add.w #70*160+16,a1 move.l #%10000000000000001000000000000000,d7 move.w #16-1,d0 .bits bsr v_sync move.l (a0),d1 move.l 4(a0),d2 and.l d7,d1 and.l d7,d2 move.l d1,(a1) move.l d2,4(a1) move.l d7,d6 lsr.l #1,d7 or.l d6,d7 dbf d0,.bits add.w #8,a0 add.w #8,a1 move.w #5-1,d5 .words move.l #%11000000000000001100000000000000,d7 move.w #8-1,d0 .bits2 bsr v_sync move.l (a0),d1 move.l 4(a0),d2 and.l d7,d1 and.l d7,d2 move.l d1,(a1) move.l d2,4(a1) move.l d7,d6 lsr.l #1,d7 or.l d6,d7 lsr.l #1,d7 or.l d6,d7 dbf d0,.bits2 addq #8,a0 addq #8,a1 dbf d5,.words lea 8*13(a1),a1 bsr v_sync2 move.w #3-1,d5 .x1 bsr v_sync2 REPT 7 move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ ENDR lea 8*13(a1),a1 dbf d5,.x1 move.w #4-1,d5 .x2 bsr v_sync2 REPT 7 move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ ENDR lea 8*13(a1),a1 REPT 7 move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ ENDR lea 8*13(a1),a1 dbf d5,.x2 move.w #84/3-1,d0 .down bsr v_sync2 REPT 3 movem.l (a0)+,d1-d7/a2-a6 movem.l d1-d7/a2-a6,(a1) lea 12*4(a1),a1 move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ lea 8*13(a1),a1 ENDR dbf d0,.down rts split_triangle lea dat3,a0 move.w #9-1,d0 ;9 frames .loop bsr v_sync3 move.l scr_now,a1 add.w #160*58+40,a1 REPT 60 move.l (a0)+,(a1) move.l (a0)+,4(a1) move.l (a0)+,8(a1) move.l (a0)+,12(a1) move.l (a0)+,16(a1) move.l (a0)+,20(a1) lea 160(a1),a1 ENDR dbf d0,.loop rts bounce_ball lea bounce_table,a2 .bounce bsr v_sync lea dat3+(8*24*60),a0 move.l scr_now,a1 add.w #160*58+40,a1 REPT 8 move.l (a0)+,(a1) move.l (a0)+,4(a1) move.l (a0)+,8(a1) move.l (a0)+,12(a1) move.l (a0)+,16(a1) move.l (a0)+,20(a1) lea 160(a1),a1 ENDR lea pic+34+(8*3)-160*6,a3 lea ball,a0 move.l scr_now,a1 add.w #8*3,a1 sub.w #39*160,a1 move.w (a2)+,d4 bmi .stop and.l #$ff,d4 mulu #160,d4 add.w d4,a1 add.w d4,a3 lea ball,a0 REPT 33 move.l (a0)+,(a1) move.l (a0)+,4(a1) move.l (a0)+,8(a1) move.l (a0)+,12(a1) move.l (a0)+,16(a1) move.l (a0)+,20(a1) lea 160(a1),a1 ENDR REPT 12 move.l (a3),d1 or.l (a0)+,d1 move.l d1,(a1) move.l 4(a3),d1 or.l (a0)+,d1 move.l d1,4(a1) move.l 8(a3),d1 or.l (a0)+,d1 move.l d1,8(a1) move.l 12(a3),d1 or.l (a0)+,d1 move.l d1,12(a1) move.l 16(a3),d1 or.l (a0)+,d1 move.l d1,16(a1) move.l 20(a3),d1 or.l (a0)+,d1 move.l d1,20(a1) lea 160(a1),a1 lea 160(a3),a3 ENDR dbf d0,.bounce .stop rts flash_ball lea flash,a0 lea flash_pals,a3 move.w #4-1,d0 .loop bsr v_sync3 move.l (a3)+,$ffff8240+2.w move.l (a3)+,$ffff8240+6.w move.l (a3)+,$ffff8240+10.w move.l (a3)+,$ffff8240+14.w move.l scr_now,a1 add.w #2*8,a1 REPT 65 move.l (a0)+,(a1) move.l (a0)+,4(a1) move.l (a0)+,8(a1) move.l (a0)+,12(a1) move.l (a0)+,16(a1) move.l (a0)+,20(a1) move.l (a0)+,24(a1) move.l (a0)+,28(a1) move.l (a0)+,32(a1) move.l (a0)+,36(a1) lea 160(a1),a1 ENDR dbf d0,.loop move.l pic+4,$ffff8240+2.w move.l pic+8,$ffff8240+6.w move.l pic+12,$ffff8240+10.w move.l pic+16,$ffff8240+14.w rts fade_infinity lea infinity_text,a0 move.w #6-1,d0 .loop bsr v_sync3 move.l scr_now,a1 lea 160*92+(8*8)(a1),a1 REPT 54 move.l (a0)+,(a1) move.l (a0)+,4(a1) move.l (a0)+,8(a1) move.l (a0)+,12(a1) move.l (a0)+,16(a1) move.l (a0)+,20(a1) move.l (a0)+,24(a1) move.l (a0)+,28(a1) move.l (a0)+,32(a1) move.l (a0)+,36(a1) move.l (a0)+,40(a1) move.l (a0)+,44(a1) move.l (a0)+,48(a1) move.l (a0)+,52(a1) move.l (a0)+,56(a1) move.l (a0)+,60(a1) move.l (a0)+,64(a1) move.l (a0)+,68(a1) move.l (a0)+,72(a1) move.l (a0)+,76(a1) move.l (a0)+,80(a1) move.l (a0)+,84(a1) lea 160(a1),a1 ENDR dbf d0,.loop rts *********************** * SUBROUTINES SECTION * *********************** v_sync3 bsr v_sync v_sync2 bsr v_sync v_sync movem.l d0-d3/a0-a3,-(sp) move.w #$25,-(sp) trap #14 addq.l #2,sp movem.l (sp)+,d0-d3/a0-a3 rts tst_key move.w #11,-(sp) trap #1 addq.l #2,sp rts get_key move.w #7,-(sp) trap #1 addq.l #2,sp rts set_super clr.l -(sp) move.w #$20,-(sp) trap #1 addq.l #6,sp move.l d0,stack_save rts set_user move.l stack_save,-(sp) move.w #$20,-(sp) trap #1 addq.l #6,sp rts get_old_palette lea $ffff8240.w,a0 lea old_palette,a1 movem.l (a0),d0-d7 movem.l d0-d7,(a1) rts set_new_palette lea pic+2,a0 bra set_pal set_old_palette lea old_palette,a0 set_pal lea $ffff8240.w,a1 movem.l (a0),d0-d7 movem.l d0-d7,(a1) rts get_screen_base move.w #3,-(sp) trap #14 addq.l #2,sp move.l d0,screen_base rts get_original_rez move.w #4,-(sp) trap #14 addq.l #2,sp move.w d0,original_rez rts set_low_rez clr.w -(sp) bra set_rez set_org_rez move.w original_rez,-(sp) set_rez move.l screen_base,-(sp) move.l (sp),-(sp) move.w #5,-(sp) trap #14 add.l #12,sp rts set_up move.l #screens,d0 clr.b d0 move.l d0,scr_now set_screen move.l scr_now,d6 lsr.l #8,d6 lea $ffff8201.w,a6 movep.w d6,(a6) rts ******************* SECTION DATA ******************* routine_list dc.l show_twinkle dc.l draw_triangle dc.l split_triangle dc.l bounce_ball dc.l flash_ball dc.l fade_infinity dc.l -1 pic incbin "in.pi1" dat1 incbin 1.dat triangle incbin 2.dat dat3 incbin 3.dat ball incbin ball.dat bounce_table dc.w 0,1,2,4,6,8,10,12,14,17,20,23,27,30,33,36 dc.w 40,44,48,52,56,60,64,60,56,52,48,44,40,36 dc.w 33,30,27,24,21,18,16,14,12,10,8,7,6,5,4,3,2,2,3 dc.w 4,5,6,8,10,12,14,17,20,23,27,30,33,36 dc.w 40,44,48,52,56,60,64,60,56,52,48,45,42,40 dc.w 38,37,36,35,34,34,34,34,35,35,36,37,38,40 dc.w 42,44,48,52,56,60,64,61,58,56,54,53,52,51,50 dc.w 49,48,47 dc.w -1 flash incbin flash.dat flash_pals dc.w $666,$666,$666,$666,$666,$667,$767,$767 dc.w $545,$545,$546,$656,$656,$657,$767,$767 dc.w $334,$434,$435,$535,$546,$647,$757,$757 dc.w $213,$313,$314,$425,$536,$637,$747,$757 infinity_text incbin in_fade1.dat incbin in_fade2.dat ******************* SECTION BSS ******************* stack_save ds.l 1 screen_base ds.l 1 original_rez ds.w 1 old_palette ds.w 16 scr_now ds.l 1 ds.b 256 ds.b 160*39 screens ds.b 32000