:::::::: laffik-asm-sources/03b/PivotalMoveBobsPoly06Yellow.txt :::::::: Start: JSR StoreCopper MOVE.L #Plane1,Showplane MOVE.L #Plane2,Workplane MOVE.L #Copper1,Showcop MOVE.L #Copper2,Workcop JSR FillC1Planes JSR FillC2Planes JSR FillC1C2Palettes MOVE.L Workcop,$dff080 wblt: BTST #14,$dff002 BNE wblt MOVE.L #$0,MaxX MOVE.L #$0fffffff,MinX MOVE.L #$0,MaxY MOVE.L #$0fffffff,MinY retrigger: LEA Sequence,a2 LEA Sequence,a4 MOVE.W AddSub,d7 NOT.W d7 MOVE.W d7,AddSub loopenz: BTST.B #6,$bfe001 BEQ tu MOVEQ #0,d7 MOVE.W (a2)+,d7 CMP.W #$250,d7 BEQ DrawLine CMP.W #$251,d7 BEQ DrawPolyLine CMP.W #$252,d7 BEQ DrawPolyLine3 CMP.W #$520,d7 BEQ DrawPixel CMP.W #$667,d7 BEQ CopyPolygonToSpare CMP.W #$929,d7 BNE noShowtime MOVE.W AddSub,d7 ;CMP.W #0,d7 ;BNE ShowtimeSub ;BRA Showtime BRA ShowtimeReplace noShowtime: CMP.W #$fff,d7 ;BEQ tu ;quit BEQ retrigger ;loop ;BEQ WaitMouse ;wait l mouse button tu: JSR RestoreCopper RTS WaitMouse: BTST.B #6,$bfe001 BNE WaitMouse BRA tu DrawPixel: MOVE.L #DP1,a1 MOVE.W (a2)+,d1 MOVE.W (a2)+,d2 ;BRA loopenz MOVE.W d1,d3 LSR.W #3,d3 MULU #40,d2 ADD.W d3,d2 NOT d1 BCHG d1,(a1,d2.w) BRA loopenz ShowtimeReplace: ;JSR CopySpare2Draw2 MOVE.L #0,d6 ;JSR CopySpare2Over JSR CopySpare2WorkRepl ADD.L #$2800,d6 ;JSR CopySpare2Over JSR CopySpare2WorkRepl ADD.L #$2800,d6 ;JSR CopySpare2Over JSR CopySpare2WorkRepl ADD.L #$2800,d6 ;JSR CopySpare2Over JSR CopySpare2WorkRepl ADD.L #$2800,d6 ;JSR CopySpare2Over JSR CopySpare2WorkRepl JSR ClearDraw2 JSR ClearSpare JSR WaitVBL JSR Swap ;JSR Clear ; rmbflickr: ; BTST.B #10,$dff016 ; BNE rmbflickr rmblprr: BTST.B #10,$dff016 BEQ rmblprr BRA loopenz Showtime: ;JSR CopySpare2Draw2 MOVE.L #0,d6 JSR CopySpare2Over JSR CopySpare2Work ADD.L #$2800,d6 JSR CopySpare2Over JSR CopySpare2Work ADD.L #$2800,d6 JSR CopySpare2Over JSR CopySpare2Work ADD.L #$2800,d6 JSR CopySpare2Over JSR CopySpare2Work ADD.L #$2800,d6 JSR CopySpare2Over JSR CopySpare2Work JSR ClearDraw2 JSR ClearSpare JSR WaitVBL ;JSR Swap ;JSR Clear ; rmbflick: ; BTST.B #10,$dff016 ; BNE rmbflick rmblpr: BTST.B #10,$dff016 BEQ rmblpr BRA loopenz ShowtimeSub: ;JSR CopySpare2Draw2 MOVE.L #0,d6 JSR CopySpare2OverSub JSR CopySpare2Work ADD.L #$2800,d6 JSR CopySpare2OverSub JSR CopySpare2Work ADD.L #$2800,d6 JSR CopySpare2OverSub JSR CopySpare2Work ADD.L #$2800,d6 JSR CopySpare2OverSub JSR CopySpare2Work ADD.L #$2800,d6 JSR CopySpare2OverSub JSR CopySpare2Work JSR ClearDraw2 JSR ClearSpare JSR WaitVBL ;JSR Swap ;JSR Clear ; rmbflicks: ; BTST.B #10,$dff016 ; BNE rmbflicks rmblprs: BTST.B #10,$dff016 BEQ rmblprs BRA loopenz CopyPolygonToSpare: MOVE.W (a2)+,Kolorro ;MOVE.W #1,Kolorro ;ADD.L #5,MaxY ;SUB.L #5,MinY JSR CopyDraw2Draw2 JSR ClearDraw MOVE.W Kolorro,d2 BTST #0,d2 BNE CopyDraw22Spare0 BRA CopyDraw22Spare0c cdw1: MOVE.W Kolorro,d2 BTST #1,d2 BNE CopyDraw22Spare1 BRA CopyDraw22Spare1c cdw2: MOVE.W Kolorro,d2 BTST #2,d2 BNE CopyDraw22Spare2 BRA CopyDraw22Spare2c cdw3: MOVE.W Kolorro,d2 BTST #3,d2 BNE CopyDraw22Spare3 BRA CopyDraw22Spare3c cdw4: MOVE.W Kolorro,d2 BTST #4,d2 BNE CopyDraw22Spare4 BRA CopyDraw22Spare4c cdw5: JSR ClearDraw2 MOVE.L #$0,MaxX MOVE.L #$0fffffff,MinX MOVE.L #$0,MaxY MOVE.L #$0fffffff,MinY MOVE.L #0,CoordsOffset LEA PolygonCoords,a0 MOVE.L #0,(a0)+ MOVE.L #0,(a0)+ MOVE.L #0,(a0)+ MOVE.L #0,(a0)+ MOVE.L #0,(a0)+ MOVE.L #0,(a0)+ MOVE.L #0,(a0)+ MOVE.L #0,(a0)+ MOVE.L #0,(a0)+ MOVE.L #0,(a0)+ MOVE.L #0,(a0)+ MOVE.L #0,(a0)+ MOVE.L #0,(a0)+ MOVE.L #0,(a0)+ MOVE.L #0,(a0)+ MOVE.L #0,(a0)+ MOVE.L #0,(a0)+ MOVE.L #0,(a0)+ MOVE.L #0,(a0)+ MOVE.L #0,(a0)+ BRA loopenz DrawLine: MOVE.W (a2)+,d1 MOVE.W (a2)+,d2 MOVE.W (a2)+,d3 MOVE.W (a2)+,d4 EXT.L d1 EXT.L d2 EXT.L d3 EXT.L d4 JSR SetMinMax JSR WriteCoords JSR Kreska BRA loopenz DrawPolyLine: MOVE.W (a2),d1 MOVE.W 2(a2),d2 MOVE.W 4(a2),d3 MOVE.W 6(a2),d4 EXT.L d1 EXT.L d2 EXT.L d3 EXT.L d4 JSR SetMinMax JSR WriteCoords JSR Kreska MOVE.W 4(a2),d1 MOVE.W 6(a2),d2 MOVE.W 8(a2),d3 MOVE.W 10(a2),d4 EXT.L d1 EXT.L d2 EXT.L d3 EXT.L d4 JSR SetMinMax JSR WriteCoords JSR Kreska MOVE.W 8(a2),d1 MOVE.W 10(a2),d2 MOVE.W 12(a2),d3 MOVE.W 14(a2),d4 EXT.L d1 EXT.L d2 EXT.L d3 EXT.L d4 JSR SetMinMax JSR WriteCoords JSR Kreska MOVE.W 12(a2),d1 MOVE.W 14(a2),d2 MOVE.W (a2),d3 MOVE.W 2(a2),d4 ADDA.L #16,a2 EXT.L d1 EXT.L d2 EXT.L d3 EXT.L d4 JSR SetMinMax JSR WriteCoords JSR Kreska BRA loopenz DrawPolyLine3: MOVE.W (a2),d1 MOVE.W 2(a2),d2 MOVE.W 4(a2),d3 MOVE.W 6(a2),d4 EXT.L d1 EXT.L d2 EXT.L d3 EXT.L d4 JSR SetMinMax JSR WriteCoords JSR Kreska MOVE.W 4(a2),d1 MOVE.W 6(a2),d2 MOVE.W 8(a2),d3 MOVE.W 10(a2),d4 EXT.L d1 EXT.L d2 EXT.L d3 EXT.L d4 JSR SetMinMax JSR WriteCoords JSR Kreska MOVE.W 8(a2),d1 MOVE.W 10(a2),d2 MOVE.W (a2),d3 MOVE.W 2(a2),d4 EXT.L d1 EXT.L d2 EXT.L d3 EXT.L d4 JSR SetMinMax JSR WriteCoords JSR Kreska ADDA.L #12,a2 BRA loopenz WriteCoords: LEA PolygonCoords,a0 MOVE.L CoordsOffset,d5 MOVE.L d1,(a0,d5.l) MOVE.L d2,4(a0,d5.l) MOVE.L d3,8(a0,d5.l) MOVE.L d4,12(a0,d5.l) ADD.L #16,d5 MOVE.L d5,CoordsOffset RTS SetMinMax: MOVE.L MinX,d5 CMP.L d1,d5 BLE nonewmin MOVE.L d1,d5 nonewmin: CMP.L d3,d5 BLE nonewmin2 MOVE.L d3,d5 nonewmin2: MOVE.L d5,MinX MOVE.L MaxX,d5 CMP.L d1,d5 BGE nonewmax MOVE.L d1,d5 nonewmax: CMP.L d3,d5 BGE nonewmax2 MOVE.L d3,d5 nonewmax2: MOVE.L d5,MaxX MOVE.L MinY,d5 CMP.L d2,d5 BLE nonewminy MOVE.L d2,d5 nonewminy: CMP.L d4,d5 BLE nonewminy2 MOVE.L d4,d5 nonewminy2: MOVE.L d5,MinY MOVE.L MaxY,d5 CMP.L d2,d5 BGE nonewmaxy MOVE.L d2,d5 nonewmaxy: CMP.L d4,d5 BGE nonewmaxy2 MOVE.L d4,d5 nonewmaxy2: MOVE.L d5,MaxY RTS Kreska: ;BRA aresorted CMP.L d2,d4 BGE aresorted EXG.L d1,d3 EXG.L d2,d4 aresorted: MOVEQ #0,d5 MOVE.W d1,d5 ANDI.L #$0f,d5 LSL.L #8,d5 LSL.L #4,d5 OR.L #%0000101101011010,d5 ;XOR ;OR.L #%0000101111111010,d5 ;OR MOVE.W d5,$dff040 MOVE.L d1,d5 SUB.L d3,d5 CMP.L #0,d5 BGE noneg NEG.L d5 noneg: MOVE.L d5,DeltaX MOVE.L d2,d5 SUB.L d4,d5 CMP.L #0,d5 BGE noneg2 NEG.L d5 noneg2: MOVE.L d5,DeltaY MOVE.L DeltaX,d5 MOVE.L DeltaY,d6 CMP.L d5,d6 BGE nosfap EXG d5,d6 nosfap: MOVE.L d6,DX MOVE.L d5,DY MOVE.L #DP1,d0 MOVE.W #$8000,$dff074 MOVE.W #$ffff,$dff072 MOVE.W #$ffff,$dff044 MOVE.W #$ffff,$dff046 SUB.L d6,d5 ASL.L #2,d5 MOVE.W d5,$dff064 MOVE.L DY,d5 ASL.L #2,d5 MOVE.W d5,$dff062 MOVE.W #40,$dff060 MOVE.W #40,$dff066 MOVE.L DY,d5 MOVE.L DX,d6 LSL.L #2,d5 LSL.L #2,d6 SUB.L d6,d5 MOVE.B #0,Sign CMP.L #0,d5 BGE noset MOVE.B #64,Sign noset: MOVE.L d5,$dff050 MOVE.L d2,d5 MULU #40,d5 MOVE.L d1,d6 LSR.L #4,d6 LSL.L #1,d6 ADD.L d6,d5 ADD.L d0,d5 MOVE.L d5,$dff048 MOVE.L d5,$dff054 MOVEQ #0,d0 MOVE.L DeltaX,d5 MOVE.L DeltaY,d6 CMP.L d5,d6 BGE nooneset1 BSET.L #0,d0 nooneset1: CMP.L d2,d4 BGE nooneset2 BSET.L #1,d0 nooneset2: CMP.L d1,d3 BGE nooneset3 BSET.L #2,d0 nooneset3: LEA Function,a3 MOVE.B (a3,d0.w),d6 MOVE.W #%0000000000000011,d5 OR.B Sign,d5 OR.B d6,d5 MOVE.W d5,$dff042 MOVE.L DX,d5 ADD.L #1,d5 LSL.L #6,d5 ADD.L #2,d5 MOVE.W d5,$dff058 wblt11: BTST #14,$dff002 BNE wblt11 RTS CopySpare2Over: MOVE.L #0,d2 MOVE.L #319,d3 LSR.L #4,d2 LSR.L #4,d3 LSL.L #1,d2 LSL.L #1,d3 MOVE.L d3,d5 SUB.L d2,d5 ;LSR.L #1,d5 ADD.L #2,d5 MOVE.L #40,d4 SUB.L d5,d4 MOVE.W d4,$dff064 MOVE.W d4,$dff062 MOVE.W d4,$dff060 MOVE.W d4,$dff066 MOVE.L #$0fe80002,$dff040 MOVE.L #$ffffffff,$dff044 MOVE.L #DP3,d4 MOVE.L #255,d5 SUB.L #1,d5 MULU.L #40,d5 ADD.L d3,d5 ADD.L d5,d4 ADD.L d6,d4 MOVE.L d4,$dff050 ;a - obiekt MOVE.L #DP2,d4 ADD.L d5,d4 ADD.L d6,d4 ADD.L #$2800,d4 CMP.L #$a000,d6 BNE nolastbt SUB.L #$c800,d4 nolastbt: MOVE.L d4,$dff054 ;d - overflow+1 MOVE.L Workplane,d4 MOVE.L #255,d5 SUB.L #1,d5 MULU.L #40,d5 ADD.L d3,d5 ADD.L d5,d4 ADD.L d6,d4 MOVE.L d4,$dff048 ;c - workplane MOVE.L #DP2,d4 MOVE.L #255,d5 SUB.L #1,d5 MULU.L #40,d5 ADD.L d3,d5 ADD.L d5,d4 ADD.L d6,d4 MOVE.L d4,$dff04c ;b - overflow MOVE.L #255,d5 SUB.L #0,d5 SUB.L #1,d5 MULU.L #64,d5 SUB.L d2,d3 LSR.L #1,d3 ADD.L #1,d3 ADD.L d3,d5 MOVE.W d5,$dff058 wbltw112938: BTST #14,$dff002 BNE.B wbltw112938 RTS CopySpare2OverSub: MOVE.L #0,d2 MOVE.L #319,d3 LSR.L #4,d2 LSR.L #4,d3 LSL.L #1,d2 LSL.L #1,d3 MOVE.L d3,d5 SUB.L d2,d5 ;LSR.L #1,d5 ADD.L #2,d5 MOVE.L #40,d4 SUB.L d5,d4 MOVE.W d4,$dff064 MOVE.W d4,$dff062 MOVE.W d4,$dff060 MOVE.W d4,$dff066 MOVE.L #$0fd40002,$dff040 MOVE.L #$ffffffff,$dff044 MOVE.L #DP3,d4 MOVE.L #255,d5 SUB.L #1,d5 MULU.L #40,d5 ADD.L d3,d5 ADD.L d5,d4 ADD.L d6,d4 MOVE.L d4,$dff050 ;a - obiekt MOVE.L #DP2,d4 ADD.L d5,d4 ADD.L d6,d4 ADD.L #$2800,d4 CMP.L #$a000,d6 BNE nolastbts SUB.L #$c800,d4 nolastbts: MOVE.L d4,$dff054 ;d - overflow+1 MOVE.L Workplane,d4 MOVE.L #255,d5 SUB.L #1,d5 MULU.L #40,d5 ADD.L d3,d5 ADD.L d5,d4 ADD.L d6,d4 MOVE.L d4,$dff048 ;c - workplane MOVE.L #DP2,d4 MOVE.L #255,d5 SUB.L #1,d5 MULU.L #40,d5 ADD.L d3,d5 ADD.L d5,d4 ADD.L d6,d4 MOVE.L d4,$dff04c ;b - overflow MOVE.L #255,d5 SUB.L #0,d5 SUB.L #1,d5 MULU.L #64,d5 SUB.L d2,d3 LSR.L #1,d3 ADD.L #1,d3 ADD.L d3,d5 MOVE.W d5,$dff058 wbltw112938s: BTST #14,$dff002 BNE.B wbltw112938s RTS CopySpare2WorkRepl: MOVE.L #0,d2 MOVE.L #319,d3 LSR.L #4,d2 LSR.L #4,d3 LSL.L #1,d2 LSL.L #1,d3 MOVE.L d3,d5 SUB.L d2,d5 ;LSR.L #1,d5 ADD.L #2,d5 MOVE.L #40,d4 SUB.L d5,d4 MOVE.W d4,$dff064 MOVE.W d4,$dff062 MOVE.W d4,$dff060 MOVE.W d4,$dff066 MOVE.L #$0ff00002,$dff040 MOVE.L #$ffffffff,$dff044 MOVE.L #DP3,d4 MOVE.L #255,d5 SUB.L #1,d5 MULU.L #40,d5 ADD.L d3,d5 ADD.L d5,d4 ADD.L d6,d4 MOVE.L d4,$dff050 ;a MOVE.L Workplane,d4 ;ADD.L #$2800,d4 ADD.L d5,d4 ADD.L d6,d4 MOVE.L d4,$dff054 ;d MOVE.L d4,$dff048 ;c MOVE.L #DP2,d4 MOVE.L #255,d5 SUB.L #1,d5 MULU.L #40,d5 ADD.L d3,d5 ADD.L d5,d4 ADD.L d6,d4 MOVE.L d4,$dff04c ;b MOVE.L #255,d5 SUB.L #0,d5 SUB.L #1,d5 MULU.L #64,d5 SUB.L d2,d3 LSR.L #1,d3 ADD.L #1,d3 ADD.L d3,d5 MOVE.W d5,$dff058 wbltw11299r: BTST #14,$dff002 BNE.B wbltw11299r RTS CopySpare2Work: MOVE.L #0,d2 MOVE.L #319,d3 LSR.L #4,d2 LSR.L #4,d3 LSL.L #1,d2 LSL.L #1,d3 MOVE.L d3,d5 SUB.L d2,d5 ;LSR.L #1,d5 ADD.L #2,d5 MOVE.L #40,d4 SUB.L d5,d4 MOVE.W d4,$dff064 MOVE.W d4,$dff062 MOVE.W d4,$dff060 MOVE.W d4,$dff066 MOVE.L #$0f960002,$dff040 MOVE.L #$ffffffff,$dff044 MOVE.L #DP3,d4 MOVE.L #255,d5 SUB.L #1,d5 MULU.L #40,d5 ADD.L d3,d5 ADD.L d5,d4 ADD.L d6,d4 MOVE.L d4,$dff050 ;a MOVE.L Workplane,d4 ;ADD.L #$2800,d4 ADD.L d5,d4 ADD.L d6,d4 MOVE.L d4,$dff054 ;d MOVE.L d4,$dff048 ;c MOVE.L #DP2,d4 MOVE.L #255,d5 SUB.L #1,d5 MULU.L #40,d5 ADD.L d3,d5 ADD.L d5,d4 ADD.L d6,d4 MOVE.L d4,$dff04c ;b MOVE.L #255,d5 SUB.L #0,d5 SUB.L #1,d5 MULU.L #64,d5 SUB.L d2,d3 LSR.L #1,d3 ADD.L #1,d3 ADD.L d3,d5 MOVE.W d5,$dff058 wbltw11299: BTST #14,$dff002 BNE.B wbltw11299 RTS CopyDraw22Spare0: MOVE.L MinX,d2 MOVE.L MaxX,d3 LSR.L #4,d2 LSR.L #4,d3 LSL.L #1,d2 LSL.L #1,d3 MOVE.L d3,d5 SUB.L d2,d5 ;LSR.L #1,d5 ADD.L #2,d5 MOVE.L #40,d4 SUB.L d5,d4 MOVE.W d4,$dff064 MOVE.W d4,$dff060 MOVE.W d4,$dff066 MOVE.L #$0bfa0002,$dff040 MOVE.L #$ffffffff,$dff044 MOVE.L #DP2,d4 MOVE.L MaxY,d5 ;SUB.L Shifter,d5 MULU.L #40,d5 ADD.L d3,d5 ADD.L d5,d4 MOVE.L d4,$dff050 MOVE.L #DP3,d4 ;ADD.L #$2800*3,d4 ADD.L d5,d4 MOVE.L d4,$dff054 MOVE.L d4,$dff048 MOVE.L MaxY,d5 SUB.L MinY,d5 ;SUB.L Shifter2,d5 MULU.L #64,d5 SUB.L d2,d3 LSR.L #1,d3 ADD.L #1,d3 ADD.L d3,d5 MOVE.W d5,$dff058 wbltw11290: BTST #14,$dff002 BNE.B wbltw11290 BRA cdw1 CopyDraw22Spare1: MOVE.L MinX,d2 MOVE.L MaxX,d3 LSR.L #4,d2 LSR.L #4,d3 LSL.L #1,d2 LSL.L #1,d3 MOVE.L d3,d5 SUB.L d2,d5 ;LSR.L #1,d5 ADD.L #2,d5 MOVE.L #40,d4 SUB.L d5,d4 MOVE.W d4,$dff064 MOVE.W d4,$dff060 MOVE.W d4,$dff066 MOVE.L #$0bfa0002,$dff040 MOVE.L #$ffffffff,$dff044 MOVE.L #DP2,d4 MOVE.L MaxY,d5 ;SUB.L Shifter,d5 MULU.L #40,d5 ADD.L d3,d5 ADD.L d5,d4 MOVE.L d4,$dff050 MOVE.L #DP3,d4 ADD.L #$2800,d4 ADD.L d5,d4 MOVE.L d4,$dff054 MOVE.L d4,$dff048 MOVE.L MaxY,d5 SUB.L MinY,d5 ;SUB.L Shifter2,d5 MULU.L #64,d5 SUB.L d2,d3 LSR.L #1,d3 ADD.L #1,d3 ADD.L d3,d5 MOVE.W d5,$dff058 wbltw11291: BTST #14,$dff002 BNE.B wbltw11291 BRA cdw2 CopyDraw22Spare2: MOVE.L MinX,d2 MOVE.L MaxX,d3 LSR.L #4,d2 LSR.L #4,d3 LSL.L #1,d2 LSL.L #1,d3 MOVE.L d3,d5 SUB.L d2,d5 ;LSR.L #1,d5 ADD.L #2,d5 MOVE.L #40,d4 SUB.L d5,d4 MOVE.W d4,$dff064 MOVE.W d4,$dff060 MOVE.W d4,$dff066 MOVE.L #$0bfa0002,$dff040 MOVE.L #$ffffffff,$dff044 MOVE.L #DP2,d4 MOVE.L MaxY,d5 ;SUB.L Shifter,d5 MULU.L #40,d5 ADD.L d3,d5 ADD.L d5,d4 MOVE.L d4,$dff050 MOVE.L #DP3,d4 ADD.L #$2800*2,d4 ADD.L d5,d4 MOVE.L d4,$dff054 MOVE.L d4,$dff048 MOVE.L MaxY,d5 SUB.L MinY,d5 ;SUB.L Shifter2,d5 MULU.L #64,d5 SUB.L d2,d3 LSR.L #1,d3 ADD.L #1,d3 ADD.L d3,d5 MOVE.W d5,$dff058 wbltw11292: BTST #14,$dff002 BNE.B wbltw11292 BRA cdw3 CopyDraw22Spare3: MOVE.L MinX,d2 MOVE.L MaxX,d3 LSR.L #4,d2 LSR.L #4,d3 LSL.L #1,d2 LSL.L #1,d3 MOVE.L d3,d5 SUB.L d2,d5 ;LSR.L #1,d5 ADD.L #2,d5 MOVE.L #40,d4 SUB.L d5,d4 MOVE.W d4,$dff064 MOVE.W d4,$dff060 MOVE.W d4,$dff066 MOVE.L #$0bfa0002,$dff040 MOVE.L #$ffffffff,$dff044 MOVE.L #DP2,d4 MOVE.L MaxY,d5 ;SUB.L Shifter,d5 MULU.L #40,d5 ADD.L d3,d5 ADD.L d5,d4 MOVE.L d4,$dff050 MOVE.L #DP3,d4 ADD.L #$2800*3,d4 ADD.L d5,d4 MOVE.L d4,$dff054 MOVE.L d4,$dff048 MOVE.L MaxY,d5 SUB.L MinY,d5 ;SUB.L Shifter2,d5 MULU.L #64,d5 SUB.L d2,d3 LSR.L #1,d3 ADD.L #1,d3 ADD.L d3,d5 MOVE.W d5,$dff058 wbltw11293: BTST #14,$dff002 BNE.B wbltw11293 BRA cdw4 CopyDraw22Spare4: MOVE.L MinX,d2 MOVE.L MaxX,d3 LSR.L #4,d2 LSR.L #4,d3 LSL.L #1,d2 LSL.L #1,d3 MOVE.L d3,d5 SUB.L d2,d5 ;LSR.L #1,d5 ADD.L #2,d5 MOVE.L #40,d4 SUB.L d5,d4 MOVE.W d4,$dff064 MOVE.W d4,$dff060 MOVE.W d4,$dff066 MOVE.L #$0bfa0002,$dff040 MOVE.L #$ffffffff,$dff044 MOVE.L #DP2,d4 MOVE.L MaxY,d5 ;SUB.L Shifter,d5 MULU.L #40,d5 ADD.L d3,d5 ADD.L d5,d4 MOVE.L d4,$dff050 MOVE.L #DP3,d4 ADD.L #$2800*4,d4 ADD.L d5,d4 MOVE.L d4,$dff054 MOVE.L d4,$dff048 MOVE.L MaxY,d5 SUB.L MinY,d5 ;SUB.L Shifter2,d5 MULU.L #64,d5 SUB.L d2,d3 LSR.L #1,d3 ADD.L #1,d3 ADD.L d3,d5 MOVE.W d5,$dff058 wbltw112935: BTST #14,$dff002 BNE.B wbltw112935 BRA cdw5 CopyDraw22Spare0c: MOVE.L MinX,d2 MOVE.L MaxX,d3 LSR.L #4,d2 LSR.L #4,d3 LSL.L #1,d2 LSL.L #1,d3 MOVE.L d3,d5 SUB.L d2,d5 ;LSR.L #1,d5 ADD.L #2,d5 MOVE.L #40,d4 SUB.L d5,d4 MOVE.W d4,$dff064 MOVE.W d4,$dff060 MOVE.W d4,$dff066 MOVE.L #$0b0a0002,$dff040 MOVE.L #$ffffffff,$dff044 MOVE.L #DP2,d4 MOVE.L MaxY,d5 ;SUB.L Shifter,d5 MULU.L #40,d5 ADD.L d3,d5 ADD.L d5,d4 MOVE.L d4,$dff050 MOVE.L #DP3,d4 ;ADD.L #$2800*3,d4 ADD.L d5,d4 MOVE.L d4,$dff054 MOVE.L d4,$dff048 MOVE.L MaxY,d5 SUB.L MinY,d5 ;SUB.L Shifter2,d5 MULU.L #64,d5 SUB.L d2,d3 LSR.L #1,d3 ADD.L #1,d3 ADD.L d3,d5 MOVE.W d5,$dff058 wbltw11290c: BTST #14,$dff002 BNE.B wbltw11290c BRA cdw1 CopyDraw22Spare1c: MOVE.L MinX,d2 MOVE.L MaxX,d3 LSR.L #4,d2 LSR.L #4,d3 LSL.L #1,d2 LSL.L #1,d3 MOVE.L d3,d5 SUB.L d2,d5 ;LSR.L #1,d5 ADD.L #2,d5 MOVE.L #40,d4 SUB.L d5,d4 MOVE.W d4,$dff064 MOVE.W d4,$dff060 MOVE.W d4,$dff066 MOVE.L #$0b0a0002,$dff040 MOVE.L #$ffffffff,$dff044 MOVE.L #DP2,d4 MOVE.L MaxY,d5 ;SUB.L Shifter,d5 MULU.L #40,d5 ADD.L d3,d5 ADD.L d5,d4 MOVE.L d4,$dff050 MOVE.L #DP3,d4 ADD.L #$2800,d4 ADD.L d5,d4 MOVE.L d4,$dff054 MOVE.L d4,$dff048 MOVE.L MaxY,d5 SUB.L MinY,d5 ;SUB.L Shifter2,d5 MULU.L #64,d5 SUB.L d2,d3 LSR.L #1,d3 ADD.L #1,d3 ADD.L d3,d5 MOVE.W d5,$dff058 wbltw11291c: BTST #14,$dff002 BNE.B wbltw11291c BRA cdw2 CopyDraw22Spare2c: MOVE.L MinX,d2 MOVE.L MaxX,d3 LSR.L #4,d2 LSR.L #4,d3 LSL.L #1,d2 LSL.L #1,d3 MOVE.L d3,d5 SUB.L d2,d5 ;LSR.L #1,d5 ADD.L #2,d5 MOVE.L #40,d4 SUB.L d5,d4 MOVE.W d4,$dff064 MOVE.W d4,$dff060 MOVE.W d4,$dff066 MOVE.L #$0b0a0002,$dff040 MOVE.L #$ffffffff,$dff044 MOVE.L #DP2,d4 MOVE.L MaxY,d5 ;SUB.L Shifter,d5 MULU.L #40,d5 ADD.L d3,d5 ADD.L d5,d4 MOVE.L d4,$dff050 MOVE.L #DP3,d4 ADD.L #$2800*2,d4 ADD.L d5,d4 MOVE.L d4,$dff054 MOVE.L d4,$dff048 MOVE.L MaxY,d5 SUB.L MinY,d5 ;SUB.L Shifter2,d5 MULU.L #64,d5 SUB.L d2,d3 LSR.L #1,d3 ADD.L #1,d3 ADD.L d3,d5 MOVE.W d5,$dff058 wbltw11292c: BTST #14,$dff002 BNE.B wbltw11292c BRA cdw3 CopyDraw22Spare3c: MOVE.L MinX,d2 MOVE.L MaxX,d3 LSR.L #4,d2 LSR.L #4,d3 LSL.L #1,d2 LSL.L #1,d3 MOVE.L d3,d5 SUB.L d2,d5 ;LSR.L #1,d5 ADD.L #2,d5 MOVE.L #40,d4 SUB.L d5,d4 MOVE.W d4,$dff064 MOVE.W d4,$dff060 MOVE.W d4,$dff066 MOVE.L #$0b0a0002,$dff040 MOVE.L #$ffffffff,$dff044 MOVE.L #DP2,d4 MOVE.L MaxY,d5 ;SUB.L Shifter,d5 MULU.L #40,d5 ADD.L d3,d5 ADD.L d5,d4 MOVE.L d4,$dff050 MOVE.L #DP3,d4 ADD.L #$2800*3,d4 ADD.L d5,d4 MOVE.L d4,$dff054 MOVE.L d4,$dff048 MOVE.L MaxY,d5 SUB.L MinY,d5 ;SUB.L Shifter2,d5 MULU.L #64,d5 SUB.L d2,d3 LSR.L #1,d3 ADD.L #1,d3 ADD.L d3,d5 MOVE.W d5,$dff058 wbltw11293c: BTST #14,$dff002 BNE.B wbltw11293c BRA cdw4 CopyDraw22Spare4c: MOVE.L MinX,d2 MOVE.L MaxX,d3 LSR.L #4,d2 LSR.L #4,d3 LSL.L #1,d2 LSL.L #1,d3 MOVE.L d3,d5 SUB.L d2,d5 ;LSR.L #1,d5 ADD.L #2,d5 MOVE.L #40,d4 SUB.L d5,d4 MOVE.W d4,$dff064 MOVE.W d4,$dff060 MOVE.W d4,$dff066 MOVE.L #$0b0a0002,$dff040 MOVE.L #$ffffffff,$dff044 MOVE.L #DP2,d4 MOVE.L MaxY,d5 ;SUB.L Shifter,d5 MULU.L #40,d5 ADD.L d3,d5 ADD.L d5,d4 MOVE.L d4,$dff050 MOVE.L #DP3,d4 ADD.L #$2800*4,d4 ADD.L d5,d4 MOVE.L d4,$dff054 MOVE.L d4,$dff048 MOVE.L MaxY,d5 SUB.L MinY,d5 ;SUB.L Shifter2,d5 MULU.L #64,d5 SUB.L d2,d3 LSR.L #1,d3 ADD.L #1,d3 ADD.L d3,d5 MOVE.W d5,$dff058 wbltw112935c: BTST #14,$dff002 BNE.B wbltw112935c BRA cdw5 CopyDraw2Draw2: MOVE.L MinX,d2 MOVE.L MaxX,d3 LSR.L #4,d2 LSR.L #4,d3 LSL.L #1,d2 LSL.L #1,d3 MOVE.L d3,d5 SUB.L d2,d5 ;LSR.L #1,d5 ADD.L #2,d5 MOVE.L #40,d4 SUB.L d5,d4 MOVE.W d4,$dff064 MOVE.W d4,$dff066 MOVE.L #$09f0000a,$dff040 MOVE.L #$ffffffff,$dff044 MOVE.L #DP1,d4 MOVE.L MaxY,d5 ;SUB.L Shifter,d5 MULU.L #40,d5 ADD.L d3,d5 ADD.L d5,d4 MOVE.L d4,$dff050 MOVE.L #DP2,d4 ;ADD.L #$2800*3,d4 ADD.L d5,d4 MOVE.L d4,$dff054 MOVE.L MaxY,d5 SUB.L MinY,d5 ;SUB.L Shifter2,d5 MULU.L #64,d5 SUB.L d2,d3 LSR.L #1,d3 ADD.L #1,d3 ADD.L d3,d5 MOVE.W d5,$dff058 wbltw1128: BTST #14,$dff002 BNE.B wbltw1128 RTS ClearDraw: wabltc: BTST #14,$dff002 BNE.B wabltc MOVE.L #DP1,d0 MOVE.L d0,$dff054 MOVE.W #$0000,$dff066 MOVE.W #%0000000100000000,$dff040 MOVE.W #$0000,$dff042 MOVE.W #256*64+20,$dff058 wabltc2: BTST #14,$dff002 BNE.B wabltc2 RTS ClearDraw2: wabltc222: BTST #14,$dff002 BNE.B wabltc222 MOVE.L #DP2,d0 MOVE.L d0,$dff054 MOVE.W #$0000,$dff066 MOVE.W #%0000000100000000,$dff040 MOVE.W #$0000,$dff042 MOVE.W #256*64+20,$dff058 wabltc2222: BTST #14,$dff002 BNE.B wabltc2222 MOVE.L #DP2,d0 ADD.L #$2800,d0 MOVE.L d0,$dff054 MOVE.W #$0000,$dff066 MOVE.W #%0000000100000000,$dff040 MOVE.W #$0000,$dff042 MOVE.W #256*64+20,$dff058 wabltc2233: BTST #14,$dff002 BNE.B wabltc2233 MOVE.L #DP2,d0 ADD.L #$5000,d0 MOVE.L d0,$dff054 MOVE.W #$0000,$dff066 MOVE.W #%0000000100000000,$dff040 MOVE.W #$0000,$dff042 MOVE.W #256*64+20,$dff058 wabltc2244: BTST #14,$dff002 BNE.B wabltc2244 MOVE.L #DP2,d0 ADD.L #$7800,d0 MOVE.L d0,$dff054 MOVE.W #$0000,$dff066 MOVE.W #%0000000100000000,$dff040 MOVE.W #$0000,$dff042 MOVE.W #256*64+20,$dff058 wabltc224: BTST #14,$dff002 BNE.B wabltc224 MOVE.L #DP2,d0 ADD.L #$a000,d0 MOVE.L d0,$dff054 MOVE.W #$0000,$dff066 MOVE.W #%0000000100000000,$dff040 MOVE.W #$0000,$dff042 MOVE.W #256*64+20,$dff058 wabltc2245: BTST #14,$dff002 BNE.B wabltc2245 RTS ClearSpare: wabltc222s: BTST #14,$dff002 BNE.B wabltc222s MOVE.L #DP3,d0 MOVE.L d0,$dff054 MOVE.W #$0000,$dff066 MOVE.W #%0000000100000000,$dff040 MOVE.W #$0000,$dff042 MOVE.W #256*64+20,$dff058 wabltc2222s: BTST #14,$dff002 BNE.B wabltc2222s MOVE.L #DP3,d0 ADD.L #$2800,d0 MOVE.L d0,$dff054 MOVE.W #$0000,$dff066 MOVE.W #%0000000100000000,$dff040 MOVE.W #$0000,$dff042 MOVE.W #256*64+20,$dff058 wabltc2233s: BTST #14,$dff002 BNE.B wabltc2233s MOVE.L #DP3,d0 ADD.L #$5000,d0 MOVE.L d0,$dff054 MOVE.W #$0000,$dff066 MOVE.W #%0000000100000000,$dff040 MOVE.W #$0000,$dff042 MOVE.W #256*64+20,$dff058 wabltc2244s: BTST #14,$dff002 BNE.B wabltc2244s MOVE.L #DP3,d0 ADD.L #$7800,d0 MOVE.L d0,$dff054 MOVE.W #$0000,$dff066 MOVE.W #%0000000100000000,$dff040 MOVE.W #$0000,$dff042 MOVE.W #256*64+20,$dff058 wabltc224s: BTST #14,$dff002 BNE.B wabltc224s MOVE.L #DP3,d0 ADD.L #$a000,d0 MOVE.L d0,$dff054 MOVE.W #$0000,$dff066 MOVE.W #%0000000100000000,$dff040 MOVE.W #$0000,$dff042 MOVE.W #256*64+20,$dff058 wabltc225s: BTST #14,$dff002 BNE.B wabltc225s RTS Clear: ;clear Workplane - 5 bitplanes wablt: BTST #14,$dff002 BNE.B wablt MOVE.L Workplane,d0 MOVE.L d0,$dff054 MOVE.W #$0000,$dff066 MOVE.W #%0000000100000000,$dff040 MOVE.W #$0000,$dff042 MOVE.W #256*64+20,$dff058 wablt2: BTST #14,$dff002 BNE.B wablt2 ADD.L #$2800,d0 MOVE.L d0,$dff054 MOVE.W #$0000,$dff066 MOVE.W #%0000000100000000,$dff040 MOVE.W #$0000,$dff042 MOVE.W #256*64+20,$dff058 wablt3: BTST #14,$dff002 BNE.B wablt3 ADD.L #$2800,d0 MOVE.L d0,$dff054 MOVE.W #$0000,$dff066 MOVE.W #%0000000100000000,$dff040 MOVE.W #$0000,$dff042 MOVE.W #256*64+20,$dff058 wablt4: BTST #14,$dff002 BNE.B wablt4 ADD.L #$2800,d0 MOVE.L d0,$dff054 MOVE.W #$0000,$dff066 MOVE.W #%0000000100000000,$dff040 MOVE.W #$0000,$dff042 MOVE.W #256*64+20,$dff058 wablt5: BTST #14,$dff002 BNE.B wablt5 ADD.L #$2800,d0 MOVE.L d0,$dff054 MOVE.W #$0000,$dff066 MOVE.W #%0000000100000000,$dff040 MOVE.W #$0000,$dff042 MOVE.W #256*64+20,$dff058 wablt6: BTST #14,$dff002 BNE.B wablt6 RTS Swap: MOVE.L Showplane,d0 MOVE.L Workplane,Showplane MOVE.L d0,Workplane MOVE.L Showcop,d0 MOVE.L Workcop,Showcop MOVE.L d0,Workcop MOVE.L Showcop,$dff080 RTS FillC1C2Palettes: LEA C1Palette,a0 LEA C2Palette,a1 LEA Palette,a2 MOVE.W #$0180,d0 MOVE.W #31,d1 pl: MOVE.W d0,(a0)+ MOVE.W d0,(a1)+ MOVE.W (a2),(a0)+ MOVE.W (a2)+,(a1)+ ADD.W #2,d0 DBF d1,pl RTS FillC1Planes: LEA C1Planes,a0 MOVE.L Showplane,d0 MOVE.W #$00e2,(a0)+ MOVE.W d0,(a0)+ SWAP d0 MOVE.W #$00e0,(a0)+ MOVE.W d0,(a0)+ SWAP d0 ADD.L #$2800,d0 MOVE.W #$00e6,(a0)+ MOVE.W d0,(a0)+ SWAP d0 MOVE.W #$00e4,(a0)+ MOVE.W d0,(a0)+ SWAP d0 ADD.L #$2800,d0 MOVE.W #$00ea,(a0)+ MOVE.W d0,(a0)+ SWAP d0 MOVE.W #$00e8,(a0)+ MOVE.W d0,(a0)+ SWAP d0 ADD.L #$2800,d0 MOVE.W #$00ee,(a0)+ MOVE.W d0,(a0)+ SWAP d0 MOVE.W #$00ec,(a0)+ MOVE.W d0,(a0)+ SWAP d0 ADD.L #$2800,d0 MOVE.W #$00f2,(a0)+ MOVE.W d0,(a0)+ SWAP d0 MOVE.W #$00f0,(a0)+ MOVE.W d0,(a0) RTS FillC2Planes: LEA C2Planes,a0 MOVE.L Workplane,d0 MOVE.W #$00e2,(a0)+ MOVE.W d0,(a0)+ SWAP d0 MOVE.W #$00e0,(a0)+ MOVE.W d0,(a0)+ SWAP d0 ADD.L #$2800,d0 MOVE.W #$00e6,(a0)+ MOVE.W d0,(a0)+ SWAP d0 MOVE.W #$00e4,(a0)+ MOVE.W d0,(a0)+ SWAP d0 ADD.L #$2800,d0 MOVE.W #$00ea,(a0)+ MOVE.W d0,(a0)+ SWAP d0 MOVE.W #$00e8,(a0)+ MOVE.W d0,(a0)+ SWAP d0 ADD.L #$2800,d0 MOVE.W #$00ee,(a0)+ MOVE.W d0,(a0)+ SWAP d0 MOVE.W #$00ec,(a0)+ MOVE.W d0,(a0)+ SWAP d0 ADD.L #$2800,d0 MOVE.W #$00f2,(a0)+ MOVE.W d0,(a0)+ SWAP d0 MOVE.W #$00f0,(a0)+ MOVE.W d0,(a0) RTS StoreCopper: MOVE.L 4.w,a6 JSR -132(a6) MOVE.L 156(a6),a1 MOVE.L 38(a1),OldCop RTS RestoreCopper: MOVE.L 4.w,a6 JSR -138(a6) MOVE.L OldCop,$dff080 RTS WMB: mbl: BTST.B #6,$bfe001 BNE.W mbl RTS WaitVBL: MOVE.L $dff004,d0 LSR.L #8,d0 ANDI.W #$1ff,d0 CMP.W #$12d,d0 BNE WaitVBL RTS ;---------------------------------------------- SECTION Dane,DATA_P OldCop: DC.L $00000000 Showplane: DC.L $00000000 Workplane: DC.L $00000000 Showcop: DC.L $00000000 Workcop: DC.L $00000000 DeltaX: DC.L 0 DeltaY: DC.L 0 DX: DC.L 0 DY: DC.L 0 DDX: DC.L 0 DDY: DC.L 0 even Sign: DC.B 0 even HalfOctant: DC.B 0 even HalfOctant2: DC.B 0 even Octant: DC.B 0 even SECTION Copper,DATA_C Copper1: DC.L $008e2c81,$00902cc1 DC.L $00920038,$009400d0 DC.L $00960020 DC.L $01020000,$01040000 DC.L $01080000,$010a0000 C1Palette: DS.L 32 C1Planes: DS.L 10 DC.L $01005000 DC.L $01fc0000 DC.L $fffffffe Copper2: DC.L $008e2c81,$00902cc1 DC.L $00920038,$009400d0 DC.L $00960020 DC.L $01020000,$01040000 DC.L $01080000,$010a0000 C2Palette: DS.L 32 C2Planes: DS.L 10 DC.L $01005000 DC.L $01fc0000 DC.L $fffffffe SECTION Paleta,DATA_P Palette: DC.W $0040,$0140,$0250,$0350,$0460,$0560,$0670,$0770 DC.W $0870,$0980,$0a80,$0b80,$0c90,$0d90,$0ea0,$0fa0 DC.W $0fb1,$0fb2,$0fb3,$0fb4,$0fc5,$0fc6,$0fc7,$0fc8 DC.W $0fd9,$0fda,$0fdb,$0fec,$0fed,$0fee,$0fef,$0fff SECTION Screeny,DATA_C Plane1: P11: DCB.B $2800,$0 P12: DCB.B $2800,$0 P13: DCB.B $2800,$0 P14: DCB.B $2800,$0 P15: DCB.B $2800,$0 Plane2: P21: DCB.B $2800,$0 P22: DCB.B $2800,$0 P23: DCB.B $2800,$0 P24: DCB.B $2800,$0 P25: DCB.B $2800,$0 DrawPlane: DP1: DCB.B $2800,$0 DCB.B $2800,$0 DCB.B $2800,$0 DCB.B $2800,$0 DCB.B $2800,$0 DP2: DCB.B $2800,$0 DCB.B $2800,$0 DCB.B $2800,$0 DCB.B $2800,$0 DCB.B $2800,$0 DP3: DCB.B $2800,$0 DCB.B $2800,$0 DCB.B $2800,$0 DCB.B $2800,$0 DCB.B $2800,$0 AD: DS.B 4 AddSub: DC.W $ffff CoordsOffset: DC.L 0 PolygonCoords: DC.L 0,0,0,0,0,0,0,0 DC.L 0,0,0,0,0,0,0,0 DC.L 0,0,0,0,0,0,0,0 DC.L 0,0,0,0,0,0,0,0 Kolorro: DC.L 0 Shifter: DC.L 0 Shifter2: DC.L 0 MinY: DC.L 0 MaxY: DC.L 0 MinX: DC.L 0 MaxX: DC.L 0 MaxYTimes: DC.L 0 MinYTimes: DC.L 0 Sequence: INCBIN "Sources:spheroid proppa.seq" Function: DC.B 0,16,4,24,8,20,12,28