home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga MA Magazine 1997 #3
/
amigamamagazinepolishissue03-1
/
dema
/
droolthis
/
start_dema2.s
< prev
next >
Wrap
Text File
|
1997-04-08
|
92KB
|
5,004 lines
ùúùúÿØOÿØOÿØOÿØOÿØOÿØOÿØOÿØOÿØOBlit: macro
btst #14,2(a6)
dc.w $66f8
endm
; FileFormat offsets
sd_songname EQU 0 ;songname offset
sd_sampleinfo EQU 20 ;first sample starts here
sd_numofpatt EQU 950 ;number of patterns are stored here
sd_pattpos EQU 952 ;pattern positions table is here
sd_mahokakt EQU 1080 ;"M.K." :)
sd_patterndata EQU 1084 ;first pattern starts at this position
; Song offsets. W/L/B means word/longword/byte length.
n_note EQU 0 ;W
n_cmd EQU 2 ;W
n_cmdlo EQU 3 ;low B of cmd
n_start EQU 4 ;L
n_length EQU 8 ;W
n_loopstart EQU 10 ;L
n_replen EQU 14 ;W
n_period EQU 16 ;W
n_finetune EQU 18 ;B
n_volume EQU 19 ;B
n_dmabit EQU 20 ;W
n_toneportdirec EQU 22 ;B
n_toneportspeed EQU 23 ;B
n_wantedperiod EQU 24 ;W
n_vibratocmd EQU 26 ;B
n_vibratopos EQU 27 ;B
n_tremolocmd EQU 28 ;B
n_tremolopos EQU 29 ;B
n_wavecontrol EQU 30 ;B
n_glissfunk EQU 31 ;B
n_sampleoffset EQU 32 ;B
n_pattpos EQU 33 ;B
n_loopcount EQU 34 ;B
n_funkoffset EQU 35 ;B
n_wavestart EQU 36 ;L
n_reallength EQU 40 ;W
n_trigger EQU 42 ;B
n_samplenum EQU 43 ;B
_LVOExec =4
_LVOOldOpenLib =-408
_LVOCloseLibrary =-414
_LVOOpenScreen =-198
_LVOCloseScreen =-66
_LVOOpenWindow =-204
_LVOCloseWindow =-72
_LVOAutoRequest =-348
_LVOWaitPort =-384
_LVOGetMsg =-372
_LVOText =-60
_LVOMove =-240
_LVOSetAPen =-342
_LVOOpenDiskFont =-30
_LVOOpenFont =-72
_LVOSetFont =-66
_LVOAskSoftStyle =-84
_LVOSetSoftStyle =-90
_LVOCloseFont =-78
_LVOPrintIText =-216
_LVOSetRGB4 = -288
_LVOGetRGB4 = -582
_LVOLoadRGB4 = -192
_LVOMoveScreen = -162
_LVODeleteFile = -72
_LVOOpen = -30
_LVOClose = -36
_LVORead = -42
_LVOWrite = -48
_LVOInput = -54
_LVOOutput = -60
_LVOSeek = -66
_LVORename = -78
_LVOLock = -84
_LVOUnLock = -90
_LVODupLock = -96
_LVOExaminIVE
_LVOExNext = -108
_LVOInfo = -114
_LVOCreateDir = -120
_LVOCurrentDir = -126
_LVOIoErr = -132
_LVOCreateProc = -138
_LVOExit = -144
_LVOLoadSeg = -150
_LVOUnLoadSeg = -156
_LVOGetPacket = -162
_LVOQueuePacket = -168
_LVODeviceProc = -174
_LVOSetComment = -180
_LVOSetProtection= -186
_LVODateStamp = -192
_LVODelay = -198
_LVOWaitForChar = -204
_LVOParentDir = -210
_LVOIsInteractive= -216
_LVOFreeMem = -$d2
_LVOAllocMem = -$c6
_LVOAcces_mode = -2
_LVOOpenWorkBench= -210
WBENCHSCREEN = $0001
CUSTOMSCREEN = $000F
SHOWTITLE = $0010
BEEPING = $0020
CUSTOMBITMAP = $0040
SCREENBEHIND = $0080
SCREENQUIET = $0100
STDSCREENHEIGHT = -1
ILE_COLOROW=16
CREDITS_MODULO_S=64
CREDITS_MODULO_P=2
ILE_KOPIUJ=64
OFFSET1=-41
OFFSET=198
OFFSET2=240
ILE_W_DOOL=4
ILE_DODAC=OFFSET2*ILE_W_DOOL ;-4
ILE_ZOOM=3
ODD=$FF-$25
IL_LINI=$135-$25
ILE_REZERWOWAC=IL_LINI*12+20
ILE_SCROLUJ=1600
ILEP=280000
ZOOOM = 3
WYS = 71
section code,code_c
STARTF1:
move.l #0000,$dff1fc
move.w #$c00,$dff106
move.l #$180000,d0
move.l d0,ADRES_PAMIECI
move.l #ILEP,d7
move.l ADRES_PAMIECI,a1
BBBIII:
move.b #$00,(a1)+
dbf d7,BBBIII
add.l d0,PICTR1
add.l d0,PICTR2
add.l d0,PICTR3
add.l d0,PICTR4
move.l #picture+ILE_W_DOOL*40,a0
move.l PICTR1,a1
add.l #42,a1
jsr x_zoom
move.l #picture+71*40+ILE_W_DOOL*40,a0
move.l PICTR2,a1
add.l #42,a1
jsr x_zoom
move.l #picture+71*40+71*40+ILE_W_DOOL*40,a0
move.l PICTR3,a1
add.l #42,a1
jsr x_zoom
move.l #picture+71*40+71*40+71*40+ILE_W_DOOL*40,a0
move.l PICTR4,a1
add.l #42,a1
jsr x_zoom
move.l ADRES_PAMIECI,d0
add.l #80*1024,d0
move.l d0,BUF1
add.l d0,PICTR1K
add.l d0,PICTR2K
add.l d0,PICTR3K
move.l d0,a0 ; Where decrunch it
move.l #PICTUREKOLO,a1 ; What must be decrunch
jsr DECRUNCH
move.l ADRES_PAMIECI,d0
add.l #$3200*3,d0
add.l #80*1024,d0
add.l d0,creditsa
move.l d0,a0 ; Where decrunch it
move.l #CREDITS,a1 ; What must be decrunch
jsr DECRUNCH
move.l ADRES_PAMIECI,d0
add.l #$3200*3,d0
add.l #80*1024,d0
add.l #10000,d0
move.l d0,GET_C_COLORS_LIST
add.l #34*4,d0
move.l d0,GET_C_COLORS_LIST_BUF
add.l #34*4,d0
move.l d0,COLOR_WHITE
add.l #100,d0
move.l d0,TABLE_DRAW
add.l #2000,d0
move.l #SHADE_TABLE,a0
move.l #E_SHADE_TABLE,a1
move.l d0,(a0)+
move.l d0,(a1)+
add.l #$8000,d0
move.l d0,(a0)+
move.l d0,(a1)+
add.l #$8000,d0
move.l d0,(a0)+
move.l d0,(a1)+
add.l #$8000,d0
move.l d0,(a0)+
move.l d0,(a1)+
add.l #$8000,d0
move.l d0,(a0)+
move.l d0,(a1)+
add.l #$8000,d0
bra BLEF
X_ZOOM:
moveq #0,d0
moveq #0,d1
moveq #0,d2
moveq #0,d3
moveq #0,d4
moveq #0,d5
moveq #0,d6
moveq #0,d7
move.w #15,d7
move.w #$00008000,RORL
X_ZOOM_LOOP_BPL1:
move.w #ZOOOM,d6
X_ZOOM_LOOP_BPL12:
add.w #1,PUNKT
jsr WAIT_BLITTER
move.l a0,$dff050
move.l a1,d1
move.w PUNKT,d0
sub.w ROLM,d0
And.w #$fff0,d0
Lsr.w #3,d0
Add.w d0,d1
Add.l #0,d1
move.l d1,$dff054
move.l d1,$dff04c
move.w RORL,$dff044
move.w #000,$dff046
move.w PUNKT,d0
sub.w ROLM,d0
And.w #$000f,d0
Lsl.w #8,d0
Lsl.w #4,d0
Or.w #$0dfc,d0
move.w d0,$dff040
move.w #0000,$dff042
move.w #236,$dff062
move.w #036,$dff064
move.w #236,$dff066
move.w #[WYS*64+2],$dff058
btst #6,$bfe001
beq.w X_ZOOM_EXIT
cmp.w #320*4,PUNKT
bgt X_ZOOM_EXIT
X_ZOMM:
dbf d6,X_ZOOM_LOOP_BPL12
ror.w #1,RORL
add.w #1,ROLM
dbf d7,X_ZOOM_LOOP_BPL1
add.l #2,a0
move.w #0,ROLM
move.w #15,d7
move.w #$0008000,RORL
bra X_ZOOM_LOOP_BPL1
X_ZOOM_EXIT:
move.w #0,PUNKT
rts
PUNKT: dc.w 0
RORL: dc.l 0
ROLM: dc.w 0
DECRUNCH:
clr.l d0
clr.l d1
clr.l d2
clr.l d3
clr.l d4
clr.l d5
clr.l d6
clr.l d7
move.l (a1),d7
add.l #4,a1
DCR_LOOP:
clr.l d0
move.b (a1)+,d0
sub.l #1,d7
tst.l d7
beq DCR_E
btst #7,d0
bne DCR_F1
move.b (a1)+,d1
sub.l #1,d7
DCR_F:
move.b d1,(a0)+
dbf d0,DCR_F
tst.l d7
beq DCR_E
jmp DCR_LOOP
DCR_F1:
bclr #7,d0
DCR_F2:
move.b (a1)+,(a0)+
sub.l #1,d7
tst.l d7
beq DCR_E
dbf d0,DCR_F2
jmp DCR_LOOP
DCR_E:
rts
;
;
;
;
;
;
BLEF:
POCZATEK:
lea $dff000,a6 ; ZABICIE PRZERWAN
move.w $1c(a6),Mem
move.w $02(a6),Mem+2
or.l #$80008000,Mem
move.w #$7fff,$9a(a6)
jsr pt_InitMusic
jsr PRZERWANIE_INIT
move.l _LVOExec,a6 ; exec do a6
lea DosName(pc),a1 ; nazwa do a1
jsr _LVOOldOpenLib(a6) ; Open library
move.l d0,DosBase ; baza do bufora
beq End
move.l _LVOExec,a6 ; exec do a6
lea IntuiName(pc),a1 ; nazwa do a1
jsr _LVOOldOpenLib(a6) ; Open library
move.l d0,IntuiBase ; baza do bufora
beq End
move.l _LVOExec,a6 ; exec do a6
lea GraphName(pc),a1 ; nazwa do a1
jsr _LVOOldOpenLib(a6) ; Open library
move.l d0,GraphBase ; baza do bufora
beq End
move.l IntuiBase(pc),a6
jsr _LVOOpenWorkBench(a6)
move.l d0,WBHandle
ILE_COLORS=2
GET_C_ILE_COLORS=32
move.l GET_C_COLORS_LIST,a5
move.l GET_C_COLORS_LIST_BUF,a4
move.l #GET_C_ILE_COLORS,d5
GET_C_COLORS_GET:
move.l GraphBase,a6
move.l WbHandle,a0
lea $2c(a0),a0 ; Viev PORT
move.l 4(a0),a0
move.l d5,d0 ; nr koloru
move.l #GET_C_ILE_COLORS,d3
sub.l d0,d3
move.l d3,d0
jsr _LVOGetRGB4(a6)
move.w d0,(a5)+
move.w d0,(a4)+
dbf d5,GET_C_COLORS_GET
move.l #16,d7
GET_C_MOUSE:
move.l GET_C_COLORS_LIST,a0
move.l COLOR_WHITE,a1
jsr GET_C_FADE_PROCEDURE
move.l GraphBase,a6
move.l WbHandle,a0
lea $2c(a0),a0 ; Viev PORT
move.l #GET_C_ILE_COLORS,d0 ; ilosc kolorow
move.l GET_C_COLORS_LIST,a1
jsr _LVOLoadRGB4(a6)
jsr WAIT255
jsr WAIT255
dbf d7,GET_C_MOUSE
BITPLANY: ; organizacja bitplanow
move.l PICTR1,d0
move.w d0,BITPLAN1+2
swap d0
move.w d0,BITPLAN0+2
move.l PICTR2,d0
move.w d0,BITPLAN3+2
swap d0
move.w d0,BITPLAN2+2
move.l PICTR3,d0
move.w d0,BITPLAN5+2
swap d0
move.w d0,BITPLAN4+2
move.l PICTR4,d0
move.w d0,BITPLAN7+2
swap d0
move.w d0,BITPLAN6+2
jsr USTAW_VIRTUAL_SPRITES
jsr ZOOM
jsr CHANGE_PALETTE
move.l #CopperList,$dff080
clr.w $dff088
jsr SCR
rts
MOUSE:
jsr WAIT255
jsr WAIT255
jsr MOUSE_WALL1
;*** Koni. Dema ***
jsr pt_StopMusic
move.l STARY_WEKTOR,$6c
lea $dff000,a6
move.w Mem,$9a(a6)
move.w Mem+2,$96(a6)
End
; ** CloseGraph:
move.l _LVOExec,a6 ; exec do a6
move.l GraphBase(pc),a1 ; baza do a1
jsr _LVOCloseLibrary(a6) ; zamknij
; ** CloseIntui:
move.l _LVOExec,a6 ; exec do a6
move.l IntuiBase(pc),a1 ; baza do a1
jsr _LVOCloseLibrary(a6) ; zamknij
; ** CloseDos:
move.l _LVOExec,a6 ; exec do a6
move.l DosBase(pc),a1 ; baza do a1
jsr _LVOCloseLibrary(a6) ; zamknij
ERREND1:
move.l _LVOExec,a6
move.l #ILEP,d0
move.l ADRES_PAMIECI,a1
jsr _LVOFreeMem(a6)
ERREND:
rts
IntuiName: dc.b "intuition.library",0
GraphName: dc.b "graphics.library",0
DosName: dc.b 'dos.library',0
even
WBHandle: dc.l 0
Ile_Zjechal dc.l 0
ScreenHandle: dc.l 0
IntuiBase: dc.l 0
ReqBase: dc.l 0
GraphBase: dc.l 0
DiskFontBase: dc.l 0
DosBase: dc.l 0
pt_InitMusic
MOVEM.L D0-D3/A0-A2,-(SP)
move.l #pt_data,a0
MOVE.L A0,pt_SongDataPtr
LEA sd_pattpos(A0),A1
MOVEQ #128-1,D0
MOVEQ #0,D1
MOVEQ #0,D2
moveq #$1e,d3
pt_lop2 MOVE.B (A1)+,D1
CMP.B D2,D1
BLE.B pt_lop
MOVE.L D1,D2
pt_lop DBRA D0,pt_lop2
ADDQ.W #1,d2
ASL.L #8,D2
ASL.L #2,D2
LEA 4(A1,D2.L),A2
LEA pt_SampleStarts(PC),A1
ADD.W #2*20+2,A0 ;find first sample length
MOVEQ #31-1,D0
pt_lop3 MOVE.L A2,(A1)+
MOVEQ #0,D1
MOVE.W (A0),D1
ASL.L #1,D1
ADD.L D1,A2
ADD.L D3,A0
DBRA D0,pt_lop3
MOVE.B #6,pt_Speed ;default speed
OR.B #2,$BFE001
MOVEQ #0,D0
LEA $DFF000,A0
MOVE.W D0,$A8(A0)
MOVE.W D0,$B8(A0)
MOVE.W D0,$C8(A0)
MOVE.W D0,$D8(A0)
CLR.B pt_SongPos
CLR.B pt_Counter
CLR.B pt_PattPos
MOVEM.L (SP)+,D0-D3/A0-A2
RTS
pt_StopMusic
MOVEM.L D0/A0,-(SP)
MOVEQ #0,D0
LEA $DFF000,A0
MOVE.W D0,$A8(A0)
MOVE.W D0,$B8(A0)
MOVE.W D0,$C8(A0)
MOVE.W D0,$D8(A0)
MOVE.W #$000F,$DFF096 ;stop AudioDMA activity
MOVEM.L (SP)+,D0/A0
RTS
pt_PlayMusic
MOVEM.L D0-D7/A0-A6,-(SP)
MOVE.L pt_SongDataPtr(PC),A0
ADDQ.L #1,pt_Counter
MOVE.L pt_Counter(PC),D0
CMP.L pt_CurrSpeed(PC),D0
BLO.B pt_NoNewNote
CLR.L pt_Counter
TST.B pt_PattDelayTime2
BEQ.B pt_GetNewNote
BSR.B pt_NoNewAllChannels
BRA.W pt_dskip
pt_NoNewNote
BSR.B pt_NoNewAllChannels
BRA.W pt_NoNewPositionYet
pt_NoNewAllChannels
LEA pt_audchan1temp(PC),A6
LEA $DFF0A0,A5
BSR.W pt_CheckEffects
LEA pt_audchan2temp(PC),A6
LEA $DFF0B0,A5
BSR.W pt_CheckEffects
LEA pt_audchan3temp(PC),A6
LEA $DFF0C0,A5
BSR.W pt_CheckEffects
LEA pt_audchan4temp(PC),A6
LEA $DFF0D0,A5
BRA.W pt_CheckEffects
pt_GetNewNote
LEA 12(A0),A3
LEA sd_pattpos(A0),A2
LEA sd_patterndata(A0),A0
MOVEQ #0,D1
MOVE.L pt_SongPosition(PC),D0
MOVE.B 0(a2,D0.W),D1
ASL.L #8,D1 ;*1024
ASL.L #2,D1
ADD.L pt_PatternPosition(PC),D1
MOVE.L D1,pt_PatternPtr
CLR.W pt_DMACONtemp
LEA $DFF0A0,A5
LEA pt_audchan1temp(PC),A6
MOVEQ #1,D2
BSR.W pt_PlayVoice
MOVEQ #0,D0
MOVE.B n_volume(A6),D0
MOVE.W D0,8(A5)
LEA $DFF0B0,A5
LEA pt_audchan2temp(PC),A6
MOVEQ #2,D2
BSR.B pt_PlayVoice
MOVEQ #0,D0
MOVE.B n_volume(A6),D0
MOVE.W D0,8(A5)
LEA $DFF0C0,A5
LEA pt_audchan3temp(PC),A6
MOVEQ #3,D2
BSR.B pt_PlayVoice
MOVEQ #0,D0
MOVE.B n_volume(A6),D0
MOVE.W D0,8(A5)
LEA $DFF0D0,A5
LEA pt_audchan4temp(PC),A6
MOVEQ #4,D2
BSR.B pt_PlayVoice
MOVEQ #0,D0
MOVE.B n_volume(A6),D0
MOVE.W D0,8(A5)
BRA.W pt_SetDMA
pt_CheckMetronome
CMP.B pt_MetroChannel,D2
BNE.W pt_Return
MOVE.B pt_MetroSpeed,D2
BEQ.W pt_Return
MOVE.L pt_PatternPosition,D3
LSR.L #4,D3
DIVU D2,D3
SWAP D3
TST.W D3
BNE.W pt_Return
AND.L #$00000FFF,(A6)
OR.L #$10D6F000,(A6) ;Play sample $1F at period $0D6 (214)
RTS
pt_PlayVoice
TST.L (A6)
BNE.B pt_plvskip
BSR.W pt_PerNop
pt_plvskip
MOVE.L 0(a0,D1.L),(A6) ;Read one track from pattern
BSR.B pt_CheckMetronome
ADDQ.L #4,D1
MOVEQ #0,D2
MOVE.B n_cmd(A6),D2 ;Get lower 4 bits of instrument
AND.B #$F0,D2
LSR.B #4,D2
MOVE.B (A6),D0 ;Get higher 4 bits of instrument
AND.B #$F0,D0
OR.B D0,D2
TST.B D2
BEQ.B pt_SetRegisters ;Instrument was zero
MOVEQ #0,D3
LEA pt_SampleStarts(PC),A1
MOVE D2,D4
MOVE.B D2,n_samplenum(A6)
SUBQ.L #1,D2
LSL.L #2,D2
MULU #30,D4
MOVE.L 0(a1,D2.L),n_start(A6)
MOVE.W 0(a3,D4.L),n_length(A6)
MOVE.W 0(a3,D4.L),n_reallength(A6)
MOVE.B 2(A3,D4.L),n_finetune(A6)
MOVE.B 3(A3,D4.L),n_volume(A6)
MOVE.W 4(A3,D4.L),D3 ;Get repeat
TST.W D3
BEQ.B pt_NoLoop
MOVE.L n_start(A6),D2 ;Get start
ASL.W #1,D3
ADD.L D3,D2 ;Add repeat
MOVE.L D2,n_loopstart(A6)
MOVE.L D2,n_wavestart(A6)
MOVE.W 4(A3,D4.L),D0 ;Get repeat
ADD.W 6(A3,D4.L),D0 ;Add replen
MOVE.W D0,n_length(A6)
MOVE.W 6(A3,D4.L),n_replen(A6) ;Save replen
BRA.B pt_SetRegisters
pt_NoLoop
MOVE.L n_start(A6),D2
ADD.L D3,D2
MOVE.L D2,n_loopstart(A6)
MOVE.L D2,n_wavestart(A6)
MOVE.W 6(A3,D4.L),n_replen(A6) ;Save replen
pt_SetRegisters
MOVE.W (A6),D0
AND.W #$0FFF,D0
BEQ.W pt_CheckMoreEffects ;If no note ->
MOVE.W 2(A6),D0
AND.W #$0FF0,D0
CMP.W #$0E50,D0 ;finetune?
BEQ.B pt_DoSetFineTune
MOVE.B 2(A6),D0
AND.B #$0F,D0
CMP.B #3,D0 ;TonePortamento?
BEQ.B pt_ChkTonePorta
CMP.B #5,D0 ;TonePortamento + VolSlide?
BEQ.B pt_ChkTonePorta
CMP.B #9,D0 ;Sample Offset?
BNE.B pt_SetPeriod
BSR.W pt_CheckMoreEffects
BRA.B pt_SetPeriod
pt_DoSetFineTune
BSR.W pt_SetFineTune
BRA.B pt_SetPeriod
pt_ChkTonePorta
BSR.W pt_SetTonePorta
BRA.W pt_CheckMoreEffects
pt_SetPeriod
MOVEM.L D0-D1/A0-A1,-(SP)
MOVE.W (A6),D1
AND.W #$0FFF,D1
LEA pt_PeriodTable(PC),A1
MOVEQ #0,D0
MOVEQ #$24,D7
pt_ftuloop
CMP.W 0(a1,D0.W),D1
BHS.B pt_ftufound
ADDQ.L #2,D0
DBRA D7,pt_ftuloop
pt_ftufound
MOVEQ #0,D1
MOVE.B n_finetune(A6),D1
MULU #37*2,D1
ADD.L D1,A1
MOVE.W 0(a1,D0.W),n_period(A6)
MOVEM.L (SP)+,D0-D1/A0-A1
MOVE.W 2(A6),D0
AND.W #$0FF0,D0
CMP.W #$0ED0,D0
BEQ.W pt_CheckMoreEffects
MOVE.W n_dmabit(A6),$DFF096
BTST #2,n_wavecontrol(A6)
BNE.B pt_vibnoc
CLR.B n_vibratopos(A6)
pt_vibnoc
BTST #6,n_wavecontrol(A6)
BNE.B pt_trenoc
CLR.B n_tremolopos(A6)
pt_trenoc
MOVE.W n_length(A6),4(A5) ;Set length
MOVE.L n_start(A6),(A5) ;Set start
BNE.B pt_sdmaskp
CLR.L n_loopstart(A6)
MOVEQ #1,D0
MOVE.W D0,4(A5)
MOVE.W D0,n_replen(A6)
pt_sdmaskp
MOVE.W n_period(A6),D0
MOVE.W D0,6(A5) ;Set period
ST n_trigger(A6)
MOVE.W n_dmabit(A6),D0
OR.W D0,pt_DMACONtemp
BRA.W pt_CheckMoreEffects
pt_SetDMA
move.b pt_timeout,$bfe701 ;TimerB HI
move.b pt_timeout+1,$bfe601 ;TimerB LO
move.b #%000011001,$bfef01 ;set commandbits: OneShot & CLK & Start
pt_timerwait1
btst #0,$bfef01 ;timeout on timerB? (ICR TimerB)
bne.s pt_timerwait1 ;nope...
MOVE.W pt_DMACONtemp,D0
AND.W pt_ActiveChannels,D0 ;mask out inactive channels
OR.W #$8000,D0
MOVE.W D0,$DFF096
move.b pt_timeout,$bfe701 ;TimerB HI
move.b pt_timeout+1,$bfe601 ;TimerB LO
move.b #%000011001,$bfef01 ;set commandbits: OneShot & CLK & Start
pt_timerwait2
btst #0,$bfef01 ;timeout on timerB? (ICR TimerB)
bne.s pt_timerwait2 ;nope...
LEA $DFF000,A5
LEA pt_audchan4temp(PC),A6
MOVE.L n_loopstart(A6),$D0(A5)
MOVE.W n_replen(A6),$D4(A5)
LEA pt_audchan3temp(PC),A6
MOVE.L n_loopstart(A6),$C0(A5)
MOVE.W n_replen(A6),$C4(A5)
LEA pt_audchan2temp(PC),A6
MOVE.L n_loopstart(A6),$B0(A5)
MOVE.W n_replen(A6),$B4(A5)
LEA pt_audchan1temp(PC),A6
MOVE.L n_loopstart(A6),$A0(A5)
MOVE.W n_replen(A6),$A4(A5)
pt_dskip
ADD.L #16,pt_PatternPosition
MOVE.B pt_PattDelayTime,D0
BEQ.B pt_dskpc
MOVE.B D0,pt_PattDelayTime2
CLR.B pt_PattDelayTime
pt_dskpc
TST.B pt_PattDelayTime2
BEQ.B pt_dskpa
SUBQ.B #1,pt_PattDelayTime2
BEQ.B pt_dskpa
SUB.L #16,pt_PatternPosition
pt_dskpa
TST.B pt_PBreakFlag
BEQ.B pt_nnpysk
SF pt_PBreakFlag
MOVEQ #0,D0
MOVE.B pt_PBreakPosition(PC),D0
LSL.W #4,D0
MOVE.L D0,pt_PatternPosition
CLR.B pt_PBreakPosition
pt_nnpysk
CMP.L #1024,pt_PatternPosition
BNE.B pt_NoNewPositionYet
pt_NextPosition
MOVEQ #0,D0
MOVE.B pt_PBreakPosition(PC),D0
LSL.W #4,D0
MOVE.L D0,pt_PatternPosition
CLR.B pt_PBreakPosition
CLR.B pt_PosJumpAssert
ADDQ.L #1,pt_SongPosition
AND.L #$7F,pt_SongPosition
MOVE.L pt_SongPosition(PC),D1
MOVE.L pt_SongDataPtr(PC),A0
CMP.B sd_numofpatt(A0),D1
BLO.B pt_NoNewPositionYet
CLR.L pt_SongPosition
pt_NoNewPositionYet
TST.B pt_PosJumpAssert
BNE.B pt_NextPosition
MOVEM.L (SP)+,D0-D7/A0-A6
RTS
pt_CheckEffects
BSR.B pt_chkefx2
MOVEQ #0,D0
MOVE.B n_volume(A6),D0
MOVE.W D0,8(A5)
RTS
pt_chkefx2
BSR.W pt_UpdateFunk
MOVE.W n_cmd(A6),D0
AND.W #$0FFF,D0
BEQ.B pt_Return
MOVE.B n_cmd(A6),D0
AND.B #$0F,D0
TST.B D0
BEQ.B pt_Arpeggio
CMP.B #1,D0
BEQ.W pt_PortaUp
CMP.B #2,D0
BEQ.W pt_PortaDown
CMP.B #3,D0
BEQ.W pt_TonePortamento
CMP.B #4,D0
BEQ.W pt_Vibrato
CMP.B #5,D0
BEQ.W pt_TonePlusVolSlide
CMP.B #6,D0
BEQ.W pt_VibratoPlusVolSlide
CMP.B #$E,D0
BEQ.W pt_ECommands
pt_SetBack
MOVE.W n_period(A6),6(A5)
CMP.B #7,D0
BEQ.W pt_Tremolo
CMP.B #$A,D0
BEQ.W pt_VolumeSlide
CMP.B #8,D0
BEQ.W pt_CompSet
pt_Return
RTS
pt_CompSet:
MOVE.B n_cmdlo(A6),D0
AND.B #$0F,D0
move.b d0,MCBIT
rts
pt_PerNop
MOVE.W n_period(A6),6(A5)
RTS
pt_Arpeggio
MOVEQ #0,D0
MOVE.L pt_Counter(PC),D0
DIVS #3,D0
SWAP D0
CMP.W #1,D0
BEQ.B pt_Arpeggio1
CMP.W #2,D0
BEQ.B pt_Arpeggio2
pt_Arpeggio0
MOVE.W n_period(A6),D2
BRA.B pt_ArpeggioSet
pt_Arpeggio1
MOVEQ #0,D0
MOVE.B n_cmdlo(A6),D0
LSR.B #4,D0
BRA.B pt_ArpeggioFind
pt_Arpeggio2
MOVEQ #0,D0
MOVE.B n_cmdlo(A6),D0
AND.B #15,D0
pt_ArpeggioFind
ASL.W #1,D0
MOVEQ #0,D1
MOVE.B n_finetune(A6),D1
MULU #37*2,D1
LEA pt_PeriodTable(PC),A0
ADD.L D1,A0
MOVEQ #0,D1
MOVE.W n_period(A6),D1
MOVEQ #$24,D7
pt_arploop
MOVE.W 0(a0,D0.W),D2
CMP.W (A0),D1
BHS.B pt_ArpeggioSet
ADDQ.L #2,A0
DBRA D7,pt_arploop
RTS
pt_ArpeggioSet
MOVE.W D2,6(A5)
RTS
pt_FinePortaUp
TST.L pt_Counter
BNE.W pt_Return
MOVE.B #$0F,pt_LowMask
pt_PortaUp
MOVEQ #0,D0
MOVE.B n_cmdlo(A6),D0
AND.B pt_LowMask,D0
MOVE.B #$FF,pt_LowMask
SUB.W D0,n_period(A6)
MOVE.W n_period(A6),D0
AND.W #$0FFF,D0
CMP.W #$0071,D0
BPL.B pt_PortaUskip
AND.W #$F000,n_period(A6)
OR.W #$0071,n_period(A6)
pt_PortaUskip
MOVE.W n_period(A6),D0
AND.W #$0FFF,D0
MOVE.W D0,6(A5)
RTS
pt_FinePortaDown
TST.L pt_Counter
BNE.W pt_Return
MOVE.B #$0F,pt_LowMask
pt_PortaDown
CLR.W D0
MOVE.B n_cmdlo(A6),D0
AND.B pt_LowMask,D0
MOVE.B #$FF,pt_LowMask
ADD.W D0,n_period(A6)
MOVE.W n_period(A6),D0
AND.W #$0FFF,D0
CMP.W #$0358,D0
BMI.B pt_Portadskip
AND.W #$F000,n_period(A6)
OR.W #$0358,n_period(A6)
pt_Portadskip
MOVE.W n_period(A6),D0
AND.W #$0FFF,D0
MOVE.W D0,6(A5)
RTS
pt_SetTonePorta
MOVE.L A0,-(SP)
MOVE.W (A6),D2
AND.W #$0FFF,D2
MOVEQ #0,D0
MOVE.B n_finetune(A6),D0
MULU #37*2,D0
LEA pt_PeriodTable(PC),A0
ADD.L D0,A0
MOVEQ #0,D0
pt_StpLoop
CMP.W 0(a0,D0.W),D2
BHS.B pt_StpFound
ADDQ.W #2,D0
CMP.W #37*2,D0
BLO.B pt_StpLoop
MOVEQ #35*2,D0
pt_StpFound
MOVE.B n_finetune(A6),D2
AND.B #8,D2
BEQ.B pt_StpGoss
TST.W D0
BEQ.B pt_StpGoss
SUBQ.W #2,D0
pt_StpGoss
MOVE.W 0(a0,D0.W),D2
MOVE.L (SP)+,A0
MOVE.W D2,n_wantedperiod(A6)
MOVE.W n_period(A6),D0
CLR.B n_toneportdirec(A6)
CMP.W D0,D2
BEQ.B pt_ClearTonePorta
BGE.W pt_Return
MOVE.B #1,n_toneportdirec(A6)
RTS
pt_ClearTonePorta
CLR.W n_wantedperiod(A6)
RTS
pt_TonePortamento
MOVE.B n_cmdlo(A6),D0
BEQ.B pt_TonePortNoChange
MOVE.B D0,n_toneportspeed(A6)
CLR.B n_cmdlo(A6)
pt_TonePortNoChange
TST.W n_wantedperiod(A6)
BEQ.W pt_Return
MOVEQ #0,D0
MOVE.B n_toneportspeed(A6),D0
TST.B n_toneportdirec(A6)
BNE.B pt_TonePortaUp
pt_TonePortaDown
ADD.W D0,n_period(A6)
MOVE.W n_wantedperiod(A6),D0
CMP.W n_period(A6),D0
BGT.B pt_TonePortaSetPer
MOVE.W n_wantedperiod(A6),n_period(A6)
CLR.W n_wantedperiod(A6)
BRA.B pt_TonePortaSetPer
pt_TonePortaUp
SUB.W D0,n_period(A6)
MOVE.W n_wantedperiod(A6),D0
CMP.W n_period(A6),D0
BLT.B pt_TonePortaSetPer
MOVE.W n_wantedperiod(A6),n_period(A6)
CLR.W n_wantedperiod(A6)
pt_TonePortaSetPer
MOVE.W n_period(A6),D2
MOVE.B n_glissfunk(A6),D0
AND.B #$0F,D0
BEQ.B pt_GlissSkip
MOVEQ #0,D0
MOVE.B n_finetune(A6),D0
MULU #37*2,D0
LEA pt_PeriodTable(PC),A0
ADD.L D0,A0
MOVEQ #0,D0
pt_GlissLoop
CMP.W 0(a0,D0.W),D2
BHS.B pt_GlissFound
ADDQ.W #2,D0
CMP.W #37*2,D0
BLO.B pt_GlissLoop
MOVEQ #35*2,D0
pt_GlissFound
MOVE.W 0(a0,D0.W),D2
pt_GlissSkip
MOVE.W D2,6(A5) ;Set period
RTS
pt_Vibrato
MOVE.B n_cmdlo(A6),D0
BEQ.B pt_Vibrato2
MOVE.B n_vibratocmd(A6),D2
AND.B #$0F,D0
BEQ.B pt_vibskip
AND.B #$F0,D2
OR.B D0,D2
pt_vibskip
MOVE.B n_cmdlo(A6),D0
AND.B #$F0,D0
BEQ.B pt_vibskip2
AND.B #$0F,D2
OR.B D0,D2
pt_vibskip2
MOVE.B D2,n_vibratocmd(A6)
pt_Vibrato2
MOVE.L A4,-(SP)
MOVE.B n_vibratopos(A6),D0
LEA pt_VibratoTable(PC),A4
LSR.W #2,D0
AND.W #$001F,D0
MOVEQ #0,D2
MOVE.B n_wavecontrol(A6),D2
AND.B #$03,D2
BEQ.B pt_vib_sine
LSL.B #3,D0
CMP.B #1,D2
BEQ.B pt_vib_rampdown
MOVE.B #255,D2
BRA.B pt_vib_set
pt_vib_rampdown
TST.B n_vibratopos(A6)
BPL.B pt_vib_rampdown2
MOVE.B #255,D2
SUB.B D0,D2
BRA.B pt_vib_set
pt_vib_rampdown2
MOVE.B D0,D2
BRA.B pt_vib_set
pt_vib_sine
MOVE.B 0(A4,D0.W),D2
pt_vib_set
MOVE.B n_vibratocmd(A6),D0
AND.W #15,D0
MULU D0,D2
LSR.W #7,D2
MOVE.W n_period(A6),D0
TST.B n_vibratopos(A6)
BMI.B pt_VibratoNeg
ADD.W D2,D0
BRA.B pt_Vibrato3
pt_VibratoNeg
SUB.W D2,D0
pt_Vibrato3
MOVE.W D0,6(A5)
MOVE.B n_vibratocmd(A6),D0
LSR.W #2,D0
AND.W #$003C,D0
ADD.B D0,n_vibratopos(A6)
MOVE.L (SP)+,A4
RTS
pt_TonePlusVolSlide
BSR.W pt_TonePortNoChange
BRA.W pt_VolumeSlide
pt_VibratoPlusVolSlide
BSR.B pt_Vibrato2
BRA.W pt_VolumeSlide
pt_Tremolo
MOVE.L A4,-(SP)
MOVE.B n_cmdlo(A6),D0
BEQ.B pt_Tremolo2
MOVE.B n_tremolocmd(A6),D2
AND.B #$0F,D0
BEQ.B pt_treskip
AND.B #$F0,D2
OR.B D0,D2
pt_treskip
MOVE.B n_cmdlo(A6),D0
AND.B #$F0,D0
BEQ.B pt_treskip2
AND.B #$0F,D2
OR.B D0,D2
pt_treskip2
MOVE.B D2,n_tremolocmd(A6)
pt_Tremolo2
MOVE.B n_tremolopos(A6),D0
LEA pt_VibratoTable(PC),A4
LSR.W #2,D0
AND.W #$001F,D0
MOVEQ #0,D2
MOVE.B n_wavecontrol(A6),D2
LSR.B #4,D2
AND.B #$03,D2
BEQ.B pt_tre_sine
LSL.B #3,D0
CMP.B #1,D2
BEQ.B pt_tre_rampdown
MOVE.B #255,D2
BRA.B pt_tre_set
pt_tre_rampdown
TST.B n_vibratopos(A6)
BPL.B pt_tre_rampdown2
MOVE.B #255,D2
SUB.B D0,D2
BRA.B pt_tre_set
pt_tre_rampdown2
MOVE.B D0,D2
BRA.B pt_tre_set
pt_tre_sine
MOVE.B 0(A4,D0.W),D2
pt_tre_set
MOVE.B n_tremolocmd(A6),D0
AND.W #15,D0
MULU D0,D2
LSR.W #6,D2
MOVEQ #0,D0
MOVE.B n_volume(A6),D0
TST.B n_tremolopos(A6)
BMI.B pt_TremoloNeg
ADD.W D2,D0
BRA.B pt_Tremolo3
pt_TremoloNeg
SUB.W D2,D0
pt_Tremolo3
BPL.B pt_TremoloSkip
CLR.W D0
pt_TremoloSkip
CMP.W #$40,D0
BLS.B pt_TremoloOk
MOVE.W #$40,D0
pt_TremoloOk
MOVE.W D0,8(A5)
MOVE.B n_tremolocmd(A6),D0
LSR.W #2,D0
AND.W #$003C,D0
ADD.B D0,n_tremolopos(A6)
MOVE.L (SP)+,A4
ADDQ.L #4,SP
RTS
pt_SampleOffset
MOVEQ #0,D0
MOVE.B n_cmdlo(A6),D0
BEQ.B pt_sononew
MOVE.B D0,n_sampleoffset(A6)
pt_sononew
MOVE.B n_sampleoffset(A6),D0
LSL.W #7,D0
CMP.W n_length(A6),D0
BGE.B pt_sofskip
SUB.W D0,n_length(A6)
LSL.W #1,D0
ADD.L D0,n_start(A6)
RTS
pt_sofskip
MOVE.W #1,n_length(A6)
RTS
pt_VolumeSlide
MOVEQ #0,D0
MOVE.B n_cmdlo(A6),D0
LSR.B #4,D0
TST.B D0
BEQ.B pt_VolSlideDown
pt_VolSlideUp
ADD.B D0,n_volume(A6)
CMP.B #$40,n_volume(A6)
BMI.B pt_vsuskip
MOVE.B #$40,n_volume(A6)
pt_vsuskip
MOVE.B n_volume(A6),D0
RTS
pt_VolSlideDown
MOVEQ #0,D0
MOVE.B n_cmdlo(A6),D0
AND.B #$0F,D0
pt_VolSlideDown2
SUB.B D0,n_volume(A6)
BPL.B pt_vsdskip
CLR.B n_volume(A6)
pt_vsdskip
MOVE.B n_volume(A6),D0
RTS
pt_PositionJump
MOVEQ #0,D0
MOVE.B n_cmdlo(A6),D0
SUBQ.B #1,D0
MOVE.L D0,pt_SongPosition
pt_pj2 CLR.B pt_PBreakPosition
ST pt_PosJumpAssert
RTS
pt_VolumeChange
MOVEQ #0,D0
MOVE.B n_cmdlo(A6),D0
CMP.B #$40,D0
BLS.B pt_VolumeOk
MOVEQ #$40,D0
pt_VolumeOk
MOVE.B D0,n_volume(A6)
RTS
pt_PatternBreak
MOVEQ #0,D0
MOVE.B n_cmdlo(A6),D0
MOVE.L D0,D2
LSR.B #4,D0
MULU #10,D0
AND.B #$0F,D2
ADD.B D2,D0
CMP.B #63,D0
BHI.B pt_pj2
MOVE.B D0,pt_PBreakPosition
ST pt_PosJumpAssert
RTS
pt_SetSpeed
MOVE.B 3(A6),D0
AND.W #$FF,D0
BEQ.B pt_SpeedNull
; CMP.W #32,D0 ;change this for lev6/CIA users
; BLO.B normspd ;it updates the countervalues (Tempo)
; MOVE.W D0,RealTempo ;for the BPM timer
; MOVEM.L D0-D7/A0-A6,-(SP)
; ST UpdateTempo
; JSR SetTempo
; MOVEM.L (SP)+,D0-D7/A0-A6
; RTS
pt_normspd
CLR.L pt_Counter
MOVE.W D0,pt_CurrSpeed+2
RTS
pt_SpeedNull
RTS
pt_CheckMoreEffects
MOVE.B 2(A6),D0
AND.B #$0F,D0
CMP.B #$9,D0
BEQ.W pt_SampleOffset
CMP.B #$B,D0
BEQ.W pt_PositionJump
CMP.B #$D,D0
BEQ.B pt_PatternBreak
CMP.B #$E,D0
BEQ.B pt_ECommands
CMP.B #$F,D0
BEQ.B pt_SetSpeed
CMP.B #$C,D0
BEQ.W pt_VolumeChange
BRA.W pt_PerNop
pt_ECommands
MOVE.B n_cmdlo(A6),D0
AND.B #$F0,D0
LSR.B #4,D0
BEQ.B pt_FilterOnOff
CMP.B #1,D0
BEQ.W pt_FinePortaUp
CMP.B #2,D0
BEQ.W pt_FinePortaDown
CMP.B #3,D0
BEQ.B pt_SetGlissControl
CMP.B #4,D0
BEQ.W pt_SetVibratoControl
CMP.B #5,D0
BEQ.W pt_SetFineTune
CMP.B #6,D0
BEQ.W pt_JumpLoop
CMP.B #7,D0
BEQ.W pt_SetTremoloControl
CMP.B #8,D0
BEQ.W pt_KarplusStrong
CMP.B #$E,D0
BEQ.W pt_PatternDelay
CMP.B #9,D0
BEQ.W pt_RetrigNote
CMP.B #$A,D0
BEQ.W pt_VolumeFineUp
CMP.B #$B,D0
BEQ.W pt_VolumeFineDown
CMP.B #$C,D0
BEQ.W pt_NoteCut
CMP.B #$D,D0
BEQ.W pt_NoteDelay
CMP.B #$F,D0
BEQ.W pt_FunkIt
RTS
pt_FilterOnOff
MOVE.B n_cmdlo(A6),D0
AND.B #1,D0
ASL.B #1,D0
AND.B #$FD,$BFE001
OR.B D0,$BFE001
RTS
pt_SetGlissControl
MOVE.B n_cmdlo(A6),D0
AND.B #$0F,D0
AND.B #$F0,n_glissfunk(A6)
OR.B D0,n_glissfunk(A6)
RTS
pt_SetVibratoControl
MOVE.B n_cmdlo(A6),D0
AND.B #$0F,D0
AND.B #$F0,n_wavecontrol(A6)
OR.B D0,n_wavecontrol(A6)
RTS
pt_SetFineTune
MOVE.B n_cmdlo(A6),D0
AND.B #$0F,D0
MOVE.B D0,n_finetune(A6)
RTS
pt_JumpLoop
TST.L pt_Counter
BNE.W pt_Return
MOVE.B n_cmdlo(A6),D0
AND.B #$0F,D0
BEQ.B pt_SetLoop
TST.B n_loopcount(A6)
BEQ.B pt_jumpcnt
SUB.B #1,n_loopcount(A6)
BEQ.W pt_Return
pt_jmploop
MOVE.B n_pattpos(A6),pt_PBreakPosition
ST pt_PBreakFlag
RTS
pt_jumpcnt
MOVE.B D0,n_loopcount(A6)
BRA.B pt_jmploop
pt_SetLoop
MOVE.L pt_PatternPosition,D0
LSR.L #4,D0
AND.B #63,D0
MOVE.B D0,n_pattpos(A6)
RTS
pt_SetTremoloControl
MOVE.B n_cmdlo(A6),D0
AND.B #$0F,D0
LSL.B #4,D0
AND.B #$0F,n_wavecontrol(A6)
OR.B D0,n_wavecontrol(A6)
RTS
pt_KarplusStrong
MOVEM.L D1-D2/A0-A1,-(SP)
MOVE.L n_loopstart(A6),A0
MOVE.L A0,A1
MOVE.W n_replen(A6),D0
ADD.W D0,D0
SUBQ.W #2,D0
pt_karplop
MOVE.B (A0),D1
EXT.W D1
MOVE.B 1(A0),D2
EXT.W D2
ADD.W D1,D2
ASR.W #1,D2
MOVE.B D2,(A0)+
DBRA D0,pt_karplop
MOVE.B (A0),D1
EXT.W D1
MOVE.B (A1),D2
EXT.W D2
ADD.W D1,D2
ASR.W #1,D2
MOVE.B D2,(A0)
MOVEM.L (SP)+,D1-D2/A0-A1
RTS
pt_RetrigNote
MOVE.L D1,-(SP)
MOVEQ #0,D0
MOVE.B n_cmdlo(A6),D0
AND.B #$0F,D0
BEQ.W pt_rtnend
MOVE.L pt_Counter,D1
BNE.B pt_rtnskp
MOVE.W n_note(A6),D1
AND.W #$0FFF,D1
BNE.W pt_rtnend
MOVE.L pt_Counter,D1
pt_rtnskp
DIVU D0,D1
SWAP D1
TST.W D1
BNE.W pt_rtnend
pt_DoRetrg
MOVE.W n_dmabit(A6),$DFF096 ;Audio DMA off
MOVE.L n_start(A6),(A5) ;Set sampledata pointer
MOVE.W n_length(A6),4(A5) ;Set length
MOVE.W n_period(A6),6(A5)
MOVEQ #0,D0
MOVE.B n_volume(A6),D0
move.b pt_timeout,$bfe701 ;TimerB HI
move.b pt_timeout+1,$bfe601 ;TimerB LO
move.b #%000011001,$bfef01 ;set commandbits: OneShot & CLK & Start
pt_timerwait3
btst #0,$bfef01 ;timeout on timerB? (ICR TimerB)
bne.s pt_timerwait3 ;nope...
MOVE.W n_dmabit(A6),D0
BSET #15,D0
MOVE.W D0,$DFF096
move.b pt_timeout,$bfe701 ;TimerB HI
move.b pt_timeout+1,$bfe601 ;TimerB LO
move.b #%000011001,$bfef01 ;set commandbits: OneShot & CLK & Start
pt_timerwait4
btst #0,$bfef01 ;timeout on timerB? (ICR TimerB)
bne.s pt_timerwait4 ;nope...
MOVE.L n_loopstart(A6),(A5)
MOVE.L n_replen(A6),4(A5)
pt_rtnend
MOVE.L (SP)+,D1
RTS
pt_VolumeFineUp
TST.L pt_Counter
BNE.W pt_Return
MOVEQ #0,D0
MOVE.B n_cmdlo(A6),D0
AND.B #$F,D0
BRA.W pt_VolSlideUp
pt_VolumeFineDown
TST.L pt_Counter
BNE.W pt_Return
MOVEQ #0,D0
MOVE.B n_cmdlo(A6),D0
AND.B #$0F,D0
BRA.W pt_VolSlideDown2
pt_NoteCut
MOVEQ #0,D0
MOVE.B n_cmdlo(A6),D0
AND.B #$0F,D0
CMP.L pt_Counter,D0
BNE.W pt_Return
CLR.B n_volume(A6)
RTS
pt_NoteDelay
MOVEQ #0,D0
MOVE.B n_cmdlo(A6),D0
AND.B #$0F,D0
CMP.L pt_Counter,D0
BNE.W pt_Return
MOVE.W (A6),D0
AND.W #$0FFF,D0
BEQ.W pt_Return
MOVE.L D1,-(SP)
BRA.W pt_DoRetrg
pt_PatternDelay
TST.L pt_Counter
BNE.W pt_Return
MOVEQ #0,D0
MOVE.B n_cmdlo(A6),D0
AND.B #$0F,D0
TST.B pt_PattDelayTime2
BNE.W pt_Return
ADDQ.B #1,D0
MOVE.B D0,pt_PattDelayTime
RTS
pt_FunkIt
TST.L pt_Counter
BNE.W pt_Return
MOVE.B n_cmdlo(A6),D0
AND.B #$0F,D0
LSL.B #4,D0
AND.B #$0F,n_glissfunk(A6)
OR.B D0,n_glissfunk(A6)
TST.B D0
BEQ.W pt_Return
pt_UpdateFunk
MOVEM.L A0/D1,-(SP)
MOVEQ #0,D0
MOVE.B n_glissfunk(A6),D0
LSR.B #4,D0
BEQ.B pt_funkend
LEA pt_FunkTable(PC),A0
MOVE.B 0(a0,D0.W),D0
ADD.B D0,n_funkoffset(A6)
BTST #7,n_funkoffset(A6)
BEQ.B pt_funkend
CLR.B n_funkoffset(A6)
MOVE.L n_loopstart(A6),D0
MOVEQ #0,D1
MOVE.W n_replen(A6),D1
ADD.L D1,D0
ADD.L D1,D0
MOVE.L n_wavestart(A6),A0
ADDQ.L #1,A0
CMP.L D0,A0
BLO.B pt_funkok
MOVE.L n_loopstart(A6),A0
pt_funkok
MOVE.L A0,n_wavestart(A6)
MOVEQ #-1,D0
SUB.B (A0),D0
MOVE.B D0,(A0)
pt_funkend
MOVEM.L (SP)+,A0/D1
RTS
pt_FunkTable
dc.b 0,5,6,7,8,10,11,13,16,19,22,26,32,43,64,128
pt_VibratoTable
dc.b 0,24,49,74,97,120,141,161
dc.b 180,197,212,224,235,244,250,253
dc.b 255,253,250,244,235,224,212,197
dc.b 180,161,141,120,97,74,49,24
pt_PeriodTable
; -> Tuning 0
dc.w 856,808,762,720,678,640,604,570,538,508,480,453
dc.w 428,404,381,360,339,320,302,285,269,254,240,226
dc.w 214,202,190,180,170,160,151,143,135,127,120,113,0
; -> Tuning 1
dc.w 850,802,757,715,674,637,601,567,535,505,477,450
dc.w 425,401,379,357,337,318,300,284,268,253,239,225
dc.w 213,201,189,179,169,159,150,142,134,126,119,113,0
; -> Tuning 2
dc.w 844,796,752,709,670,632,597,563,532,502,474,447
dc.w 422,398,376,355,335,316,298,282,266,251,237,224
dc.w 211,199,188,177,167,158,149,141,133,125,118,112,0
; -> Tuning 3
dc.w 838,791,746,704,665,628,592,559,528,498,470,444
dc.w 419,395,373,352,332,314,296,280,264,249,235,222
dc.w 209,198,187,176,166,157,148,140,132,125,118,111,0
; -> Tuning 4
dc.w 832,785,741,699,660,623,588,555,524,495,467,441
dc.w 416,392,370,350,330,312,294,278,262,247,233,220
dc.w 208,196,185,175,165,156,147,139,131,124,117,110,0
; -> Tuning 5
dc.w 826,779,736,694,655,619,584,551,520,491,463,437
dc.w 413,390,368,347,328,309,292,276,260,245,232,219
dc.w 206,195,184,174,164,155,146,138,130,123,116,109,0
; -> Tuning 6
dc.w 820,774,730,689,651,614,580,547,516,487,460,434
dc.w 410,387,365,345,325,307,290,274,258,244,230,217
dc.w 205,193,183,172,163,154,145,137,129,122,115,109,0
; -> Tuning 7
dc.w 814,768,725,684,646,610,575,543,513,484,457,431
dc.w 407,384,363,342,323,305,288,272,256,242,228,216
dc.w 204,192,181,171,161,152,144,136,128,121,114,108,0
; -> Tuning -8
dc.w 907,856,808,762,720,678,640,604,570,538,508,480
dc.w 453,428,404,381,360,339,320,302,285,269,254,240
dc.w 226,214,202,190,180,170,160,151,143,135,127,120,0
; -> Tuning -7
dc.w 900,850,802,757,715,675,636,601,567,535,505,477
dc.w 450,425,401,379,357,337,318,300,284,268,253,238
dc.w 225,212,200,189,179,169,159,150,142,134,126,119,0
; -> Tuning -6
dc.w 894,844,796,752,709,670,632,597,563,532,502,474
dc.w 447,422,398,376,355,335,316,298,282,266,251,237
dc.w 223,211,199,188,177,167,158,149,141,133,125,118,0
; -> Tuning -5
dc.w 887,838,791,746,704,665,628,592,559,528,498,470
dc.w 444,419,395,373,352,332,314,296,280,264,249,235
dc.w 222,209,198,187,176,166,157,148,140,132,125,118,0
; -> Tuning -4
dc.w 881,832,785,741,699,660,623,588,555,524,494,467
dc.w 441,416,392,370,350,330,312,294,278,262,247,233
dc.w 220,208,196,185,175,165,156,147,139,131,123,117,0
; -> Tuning -3
dc.w 875,826,779,736,694,655,619,584,551,520,491,463
dc.w 437,413,390,368,347,328,309,292,276,260,245,232
dc.w 219,206,195,184,174,164,155,146,138,130,123,116,0
; -> Tuning -2
dc.w 868,820,774,730,689,651,614,580,547,516,487,460
dc.w 434,410,387,365,345,325,307,290,274,258,244,230
dc.w 217,205,193,183,172,163,154,145,137,129,122,115,0
; -> Tuning -1
dc.w 862,814,768,725,684,646,610,575,543,513,484,457
dc.w 431,407,384,363,342,323,305,288,272,256,242,228
dc.w 216,203,192,181,171,161,152,144,136,128,121,114,0
pt_audchan1temp dc.l 0,0,0,0,0,$00010000,0,0,0,0,0
pt_audchan2temp dc.l 0,0,0,0,0,$00020000,0,0,0,0,0
pt_audchan3temp dc.l 0,0,0,0,0,$00040000,0,0,0,0,0
pt_audchan4temp dc.l 0,0,0,0,0,$00080000,0,0,0,0,0
pt_SampleStarts dcb.l 31,0
pt_timeout dc.w 330 ;CIA-B timeout-value
pt_Counter dc.l 0
pt_CurrSpeed dc.l 6
pt_PattPos dc.w 0
pt_DMACONtemp dc.w 0
pt_ActiveChannels
dc.w %00001111
pt_PatternPtr dc.l 0
pt_PatternPosition
dc.l 0
pt_SongPosition dc.l 0
pt_SongDataPtr dc.l 0
pt_MetroSpeed dc.b 0
pt_MetroChannel dc.b 0
pt_Speed dc.b 6
pt_SongPos dc.b 0
pt_PBreakPosition
dc.b 0
pt_PosJumpAssert
dc.b 0
pt_PBreakFlag dc.b 0
pt_LowMask dc.b 0
pt_PattDelayTime
dc.b 0
pt_PattDelayTime2
dc.b 0
even
pt_data: incbin "df0:mods/mod.hand4"
MCBIT: dc.b 0
even
WAIT_BLITTER:
waitblit: btst #$e,$dff002
waitblit2: btst #$e,$dff002
bne.s waitblit2
rts
WAIT255:
cmp.b #$fe,$dff006
bne.s WAIT255
WAIT255a:
cmp.b #$FF,$dff006
bne.s WAIT255a
rts
BLIT1:
jsr WAIT_BLITTER
move.l a0,$dff050
move.l #S1,$dff054
move.w #$ffff,$dff044
move.w #$ffff,$dff046
move.w #$0000,$dff042
move.w #$09f0,$dff040
move.w #CREDITS_MODULO_S,$dff064
move.w #CREDITS_MODULO_P,$dff066
move.w #[ILE_KOPIUJ*64+1],$dff058
jsr WAIT_BLITTER
add.l #2,a0
move.l a0,$dff050
move.l #S2,$dff054
move.w #$ffff,$dff044
move.w #$ffff,$dff046
move.w #$0000,$dff042
move.w #$09f0,$dff040
move.w #CREDITS_MODULO_S,$dff064
move.w #CREDITS_MODULO_P,$dff066
move.w #[ILE_KOPIUJ*64+1],$dff058
jsr WAIT_BLITTER
add.l #2,a0
move.l a0,$dff050
move.l #S3,$dff054
move.w #$ffff,$dff044
move.w #$ffff,$dff046
move.w #$0000,$dff042
move.w #$09f0,$dff040
move.w #CREDITS_MODULO_S,$dff064
move.w #CREDITS_MODULO_P,$dff066
move.w #[ILE_KOPIUJ*64+1],$dff058
jsr WAIT_BLITTER
add.l #2,a0
move.l a0,$dff050
move.l #S4,$dff054
move.w #$ffff,$dff044
move.w #$ffff,$dff046
move.w #$0000,$dff042
move.w #$09f0,$dff040
move.w #CREDITS_MODULO_S,$dff064
move.w #CREDITS_MODULO_P,$dff066
move.w #[ILE_KOPIUJ*64+1],$dff058
jsr WAIT_BLITTER
add.l #2,a0
move.l a0,$dff050
move.l #S5,$dff054
move.w #$ffff,$dff044
move.w #$ffff,$dff046
move.w #$0000,$dff042
move.w #$09f0,$dff040
move.w #CREDITS_MODULO_S,$dff064
move.w #CREDITS_MODULO_P,$dff066
move.w #[ILE_KOPIUJ*64+1],$dff058
jsr WAIT_BLITTER
add.l #2,a0
move.l a0,$dff050
move.l #S6,$dff054
move.w #$ffff,$dff044
move.w #$ffff,$dff046
move.w #$0000,$dff042
move.w #$09f0,$dff040
move.w #CREDITS_MODULO_S,$dff064
move.w #CREDITS_MODULO_P,$dff066
move.w #[ILE_KOPIUJ*64+1],$dff058
jsr WAIT_BLITTER
add.l #2,a0
move.l a0,$dff050
move.l #S7,$dff054
move.w #$ffff,$dff044
move.w #$ffff,$dff046
move.w #$0000,$dff042
move.w #$09f0,$dff040
move.w #CREDITS_MODULO_S,$dff064
move.w #CREDITS_MODULO_P,$dff066
move.w #[ILE_KOPIUJ*64+1],$dff058
jsr WAIT_BLITTER
add.l #2,a0
move.l a0,$dff050
move.l #S8,$dff054
move.w #$ffff,$dff044
move.w #$ffff,$dff046
move.w #$0000,$dff042
move.w #$09f0,$dff040
move.w #CREDITS_MODULO_S,$dff064
move.w #CREDITS_MODULO_P,$dff066
move.w #[ILE_KOPIUJ*64+1],$dff058
sub.l #14,a0
jsr WAIT_BLITTER
add.l #64*66,a0
move.l a0,$dff050
move.l #S1+2,$dff054
move.w #$ffff,$dff044
move.w #$ffff,$dff046
move.w #$0000,$dff042
move.w #$09f0,$dff040
move.w #CREDITS_MODULO_S,$dff064
move.w #CREDITS_MODULO_P,$dff066
move.w #[ILE_KOPIUJ*64+1],$dff058
jsr WAIT_BLITTER
add.l #2,a0
move.l a0,$dff050
move.l #S2+2,$dff054
move.w #$ffff,$dff044
move.w #$ffff,$dff046
move.w #$0000,$dff042
move.w #$09f0,$dff040
move.w #CREDITS_MODULO_S,$dff064
move.w #CREDITS_MODULO_P,$dff066
move.w #[ILE_KOPIUJ*64+1],$dff058
jsr WAIT_BLITTER
add.l #2,a0
move.l a0,$dff050
move.l #S3+2,$dff054
move.w #$ffff,$dff044
move.w #$ffff,$dff046
move.w #$0000,$dff042
move.w #$09f0,$dff040
move.w #CREDITS_MODULO_S,$dff064
move.w #CREDITS_MODULO_P,$dff066
move.w #[ILE_KOPIUJ*64+1],$dff058
jsr WAIT_BLITTER
add.l #2,a0
move.l a0,$dff050
move.l #S4+2,$dff054
move.w #$ffff,$dff044
move.w #$ffff,$dff046
move.w #$0000,$dff042
move.w #$09f0,$dff040
move.w #CREDITS_MODULO_S,$dff064
move.w #CREDITS_MODULO_P,$dff066
move.w #[ILE_KOPIUJ*64+1],$dff058
jsr WAIT_BLITTER
add.l #2,a0
move.l a0,$dff050
move.l #S5+2,$dff054
move.w #$ffff,$dff044
move.w #$ffff,$dff046
move.w #$0000,$dff042
move.w #$09f0,$dff040
move.w #CREDITS_MODULO_S,$dff064
move.w #CREDITS_MODULO_P,$dff066
move.w #[ILE_KOPIUJ*64+1],$dff058
jsr WAIT_BLITTER
add.l #2,a0
move.l a0,$dff050
move.l #S6+2,$dff054
move.w #$ffff,$dff044
move.w #$ffff,$dff046
move.w #$0000,$dff042
move.w #$09f0,$dff040
move.w #CREDITS_MODULO_S,$dff064
move.w #CREDITS_MODULO_P,$dff066
move.w #[ILE_KOPIUJ*64+1],$dff058
jsr WAIT_BLITTER
add.l #2,a0
move.l a0,$dff050
move.l #S7+2,$dff054
move.w #$ffff,$dff044
move.w #$ffff,$dff046
move.w #$0000,$dff042
move.w #$09f0,$dff040
move.w #CREDITS_MODULO_S,$dff064
move.w #CREDITS_MODULO_P,$dff066
move.w #[ILE_KOPIUJ*64+1],$dff058
jsr WAIT_BLITTER
add.l #2,a0
move.l a0,$dff050
move.l #S8+2,$dff054
move.w #$ffff,$dff044
move.w #$ffff,$dff046
move.w #$0000,$dff042
move.w #$09f0,$dff040
move.w #CREDITS_MODULO_S,$dff064
move.w #CREDITS_MODULO_P,$dff066
move.w #[ILE_KOPIUJ*64+1],$dff058
rts
PRZERWANIE_INIT:
move.l $6c,STARY_WEKTOR
move.l #PRZERWANIE_LOOP,$6c
move.w #%1100000000100000,$dff09a ; intena
rts
STARY_WEKTOR:
dc.l 0
PRZERWANIE_LOOP:
movem.l d0-d7/a0-a6,-(a7)
move.w $dff01e,d0 ; intreqr
and.w #%100000,d0
beq.b NIE_TO_PRZERWANIE
move.w #%0000000000100000,$dff09c ; intreq
jsr pt_PlayMusic
movem.l (a7)+,d0-d7/a0-a6
rte
NIE_TO_PRZERWANIE:
movem.l (a7)+,d0-d7/a0-a6
rte
USTAW_SPRITES:
move.l #CopperList,a0
move.l #SPRITTE1,d0 ; N
move.w d0,6(a0)
swap d0
move.w d0,2(a0)
add.l #8,a0
move.l #SPRITTE2,d0 ; N
move.w d0,6(a0)
swap d0
move.w d0,2(a0)
add.l #8,a0
move.l #SPRITTE3,d0 ; T
move.w d0,6(a0)
swap d0
move.w d0,2(a0)
add.l #8,a0
move.l #SPRITTE4,d0 ; T
move.w d0,6(a0)
swap d0
move.w d0,2(a0)
add.l #8,a0
move.l #SPRITTE5,d0 ; T
move.w d0,6(a0)
swap d0
move.w d0,2(a0)
add.l #8,a0
move.l #SPRITTE6,d0 ; T
move.w d0,6(a0)
swap d0
move.w d0,2(a0)
add.l #8,a0
move.l #SPRITTE7,d0 ; T
move.w d0,6(a0)
swap d0
move.w d0,2(a0)
add.l #8,a0
move.l #SPRITTE8,d0 ; T
move.w d0,6(a0)
swap d0
move.w d0,2(a0)
rts
USTAW_VIRTUAL_SPRITES:
move.l #CopperList,a0
move.l #VIRSPR,d0
move.w d0,6(a0)
swap d0
move.w d0,2(a0)
move.l #VIRSPR,d0
move.w d0,14(a0)
swap d0
move.w d0,10(a0)
move.l #VIRSPR,d0
move.w d0,22(a0)
swap d0
move.w d0,18(a0)
move.l #VIRSPR,d0
move.w d0,30(a0)
swap d0
move.w d0,26(a0)
move.l #VIRSPR,d0
move.w d0,38(a0)
swap d0
move.w d0,34(a0)
move.l #VIRSPR,d0
move.w d0,46(a0)
swap d0
move.w d0,42(a0)
move.l #VIRSPR,d0
move.w d0,54(a0)
swap d0
move.w d0,50(a0)
move.l #VIRSPR,d0
move.w d0,62(a0)
swap d0
move.w d0,58(a0)
rts
ZOOM:
move.l #IL_LINI,d7
move.l #0,d5
move.l #ZOOMER,a0
move.l START_POSITION,d0
move.l END_POSITION,d1
move.w #$0108,d2
move.w #$010a,d3
move.l #ILE_ZOOM,d4
rol.l #8,d4
rol.l #8,d4
rol.l #8,d4
ZOOM_LOOP:
btst #0,CCBIT
bne ZZZ
cmp.l #ODD,d5
beq ZOOM_END
bgt ZOOM_END
ZZZ:
move.l d0,(a0)+
move.w d2,(a0)+
move.w #OFFSET1,(a0)+
move.w d3,(a0)+
move.w #OFFSET1,(a0)+
add.l #ILE_ZOOM,d5
sub.l #ILE_ZOOM,d7
cmp.l #$0,d7
beq ZOOM_END1
bmi ZOOM_END1
add.l d4,d0
btst #0,CCBIT
bne ZZZ1
cmp.l #ODD,d5
beq ZOOM_END2
bgt ZOOM_END2
ZZZ1:
move.l d0,(a0)+
move.w d2,(a0)+
move.w #OFFSET,(a0)+
move.w d3,(a0)+
move.w #OFFSET,(a0)+
add.l #$01000000,d0
add.l #1,d5
sub.l #1,d7
cmp.l #$0,d7
beq ZOOM_END1
bmi ZOOM_END1
bra ZOOM_LOOP
ZOOM_END1:
move.l #$FFFFFFFE,(a0)
rts
ZOOM_END:
bset #0,CCBIT
move.l #$FFDFFFFE,(a0)+
bra ZZZ
ZOOM_END2:
bset #0,CCBIT
move.l #$FFDFFFFE,(a0)+
bra ZZZ1
SCR:
move.w #ILE_SCROLUJ,d7
move.w #$00FF,SCROLL+2
SCROLL_PR:
btst #1,CCBIT
bne FADESCREDS
btst #2,CCBIT
bne FADESCREDS12
cmp.b #$01,MCBIT
beq EBPILS
btst #3,CCBIT
bne FADES
cmp.w #1500,d7
beq ZMSP1
cmp.w #1280,d7
beq ZPSPV
cmp.w #1260,d7
beq ZMSP2
cmp.w #940,d7
beq ZPSPV
cmp.w #920,d7
beq ZMSP3
cmp.w #600,d7
beq ZPSPV
cmp.w #580,d7
beq ZMSP4
cmp.w #260,d7
beq ZPSPV
cmp.w #220,d7
beq FADE_BEGIN
SCROLL_BACK:
jsr WAIT255
move.w SCROLL+2,d0
cmp.w #$0000,d0
beq ADDUJ
sub.w #$0011,SCROLL+2
dbf d7,SCROLL_PR
EBPILS:
rts
FADES:
move.l #COLORMAP,a0
add.l #2,a0
move.l #31,d7
TO_BLACK:
moveq #0,d1
move.w (a0),d0
cmp.w #0,d0
beq NEXT_C
CH1:
and.w #$00F,d0
cmp.w #0,d0
beq CH2
sub.w #$001,d0
add.w d0,d1
CH2:
move.w (a0),d0
and.w #$0F0,d0
cmp.w #0,d0
beq CH3
sub.w #$010,d0
add.w d0,d1
CH3:
move.w (a0),d0
and.w #$F00,d0
cmp.w #0,d0
beq NEXT_C
sub.w #$100,d0
add.w d0,d1
NEXT_C:
move.w d1,(a0)+
add.l #2,a0
dbf d7,TO_BLACK
bra SCROLL_BACK
FADE_BEGIN:
bset #3,CCBIT
bra SCROLL_BACK
ZMSP1:
jsr USTAW_VIRTUAL_SPRITES
bset #2,CCBIT
move.w #$0000,CREDCOLOR+2
move.w #$0000,CREDCOLOR+6
move.w #$0000,CREDCOLOR+10
move.w #$0000,CREDCOLOR+14
move.w #$0000,CREDCOLOR+18
move.w #$0000,CREDCOLOR+22
move.w #$0000,CREDCOLOR+26
move.w #$0000,CREDCOLOR+30
move.w #$0000,CREDCOLOR+34
move.w #$0000,CREDCOLOR+38
move.w #$0000,CREDCOLOR+42
move.w #$0000,CREDCOLOR+46
move.w #$0000,CREDCOLOR+50
move.w #$0000,CREDCOLOR+54
move.w #$0000,CREDCOLOR+58
move.w #$0000,CREDCOLOR+62
move.l creditsa,a0
jsr BLIT1
jsr USTAW_SPRITES
bra SCROLL_BACK
ZMSP2:
jsr USTAW_VIRTUAL_SPRITES
bset #2,CCBIT
move.w #$0000,CREDCOLOR+2
move.w #$0000,CREDCOLOR+6
move.w #$0000,CREDCOLOR+10
move.w #$0000,CREDCOLOR+14
move.w #$0000,CREDCOLOR+18
move.w #$0000,CREDCOLOR+22
move.w #$0000,CREDCOLOR+26
move.w #$0000,CREDCOLOR+30
move.w #$0000,CREDCOLOR+34
move.w #$0000,CREDCOLOR+38
move.w #$0000,CREDCOLOR+42
move.w #$0000,CREDCOLOR+46
move.w #$0000,CREDCOLOR+50
move.w #$0000,CREDCOLOR+54
move.w #$0000,CREDCOLOR+58
move.w #$0000,CREDCOLOR+62
move.w #180*$100+100,spritte1
move.w #180*$100+65*$100,spritte1+2
move.w #180*$100+100+8,spritte2
move.w #180*$100+65*$100,spritte2+2
move.w #180*$100+100+8+8,spritte3
move.w #180*$100+65*$100,spritte3+2
move.w #180*$100+100+8+8+8,spritte4
move.w #180*$100+65*$100,spritte4+2
move.w #180*$100+100+8+8+8+8,spritte5
move.w #180*$100+65*$100,spritte5+2
move.w #180*$100+100+8+8+8+8+8,spritte6
move.w #180*$100+65*$100,spritte6+2
move.w #180*$100+100+8+8+8+8+8+8,spritte7
move.w #180*$100+65*$100,spritte7+2
move.w #180*$100+100+8+8+8+8+8+8+8,spritte8
move.w #180*$100+65*$100,spritte8+2
move.l creditsa,a0
add.l #16,a0
jsr BLIT1
jsr USTAW_SPRITES
bra SCROLL_BACK
ZMSP3:
jsr USTAW_VIRTUAL_SPRITES
bset #2,CCBIT
move.w #$0000,CREDCOLOR+2
move.w #$0000,CREDCOLOR+6
move.w #$0000,CREDCOLOR+10
move.w #$0000,CREDCOLOR+14
move.w #$0000,CREDCOLOR+18
move.w #$0000,CREDCOLOR+22
move.w #$0000,CREDCOLOR+26
move.w #$0000,CREDCOLOR+30
move.w #$0000,CREDCOLOR+34
move.w #$0000,CREDCOLOR+38
move.w #$0000,CREDCOLOR+42
move.w #$0000,CREDCOLOR+46
move.w #$0000,CREDCOLOR+50
move.w #$0000,CREDCOLOR+54
move.w #$0000,CREDCOLOR+58
move.w #$0000,CREDCOLOR+62
move.w #80*$100+70,spritte1
move.w #80*$100+65*$100,spritte1+2
move.w #80*$100+70+8,spritte2
move.w #80*$100+65*$100,spritte2+2
move.w #80*$100+70+16,spritte3
move.w #80*$100+65*$100,spritte3+2
move.w #80*$100+70+24,spritte4
move.w #80*$100+65*$100,spritte4+2
move.w #80*$100+70+32,spritte5
move.w #80*$100+65*$100,spritte5+2
move.w #80*$100+70+40,spritte6
move.w #80*$100+65*$100,spritte6+2
move.w #80*$100+70+48,spritte7
move.w #80*$100+65*$100,spritte7+2
move.w #80*$100+70+56,spritte8
move.w #80*$100+65*$100,spritte8+2
move.l creditsa,a0
add.l #16+16,a0
jsr BLIT1
jsr USTAW_SPRITES
bra SCROLL_BACK
FADESCREDS:
cmp.b #0,WAITED
bne FADESCREDS_END
move.b #5,WAITED
cmp.w #$0ddd,CREDCOLOR+6
beq FADESCREDS1
sub.w #$0111,CREDCOLOR+6
sub.w #$0111,CREDCOLOR+22
sub.w #$0111,CREDCOLOR+38
sub.w #$0111,CREDCOLOR+54
FADESCREDS1:
cmp.w #$0999,CREDCOLOR+10
beq FADESCREDS2
sub.w #$0111,CREDCOLOR+10
sub.w #$0111,CREDCOLOR+26
sub.w #$0111,CREDCOLOR+42
sub.w #$0111,CREDCOLOR+58
FADESCREDS2:
cmp.w #$0555,CREDCOLOR+14
beq FADESCREDS3
sub.w #$0111,CREDCOLOR+14
sub.w #$0111,CREDCOLOR+30
sub.w #$0111,CREDCOLOR+46
sub.w #$0111,CREDCOLOR+62
bra FADESCREDS_END
FADESCREDS3:
bclr #1,CCBIT
FADESCREDS_END:
sub.b #1,WAITED
bra SCROLL_BACK
FADESCREDS12:
cmp.b #0,WAITED
bne FADESCREDS_END1
move.b #1,WAITED
cmp.w #$0FFF,CREDCOLOR+6
beq FADESCREDS11
add.w #$0111,CREDCOLOR+6
add.w #$0111,CREDCOLOR+22
add.w #$0111,CREDCOLOR+38
add.w #$0111,CREDCOLOR+54
add.w #$0111,CREDCOLOR+10
add.w #$0111,CREDCOLOR+26
add.w #$0111,CREDCOLOR+42
add.w #$0111,CREDCOLOR+58
add.w #$0111,CREDCOLOR+14
add.w #$0111,CREDCOLOR+30
add.w #$0111,CREDCOLOR+46
add.w #$0111,CREDCOLOR+62
bra FADESCREDS_END1
FADESCREDS11:
bclr #2,CCBIT
bset #1,CCBIT
move.b #1,WAITED
FADESCREDS_END1:
sub.b #1,WAITED
bra SCROLL_BACK
ZMSP4:
jsr USTAW_VIRTUAL_SPRITES
bset #2,CCBIT
move.w #$0000,CREDCOLOR+2
move.w #$0000,CREDCOLOR+6
move.w #$0000,CREDCOLOR+10
move.w #$0000,CREDCOLOR+14
move.w #$0000,CREDCOLOR+18
move.w #$0000,CREDCOLOR+22
move.w #$0000,CREDCOLOR+26
move.w #$0000,CREDCOLOR+30
move.w #$0000,CREDCOLOR+34
move.w #$0000,CREDCOLOR+38
move.w #$0000,CREDCOLOR+42
move.w #$0000,CREDCOLOR+46
move.w #$0000,CREDCOLOR+50
move.w #$0000,CREDCOLOR+54
move.w #$0000,CREDCOLOR+58
move.w #$0000,CREDCOLOR+62
move.w #180*$100+160,spritte1
move.w #180*$100+65*$100,spritte1+2
move.w #180*$100+160+8,spritte2
move.w #180*$100+65*$100,spritte2+2
move.w #180*$100+160+8+8,spritte3
move.w #180*$100+65*$100,spritte3+2
move.w #180*$100+160+8+8+8,spritte4
move.w #180*$100+65*$100,spritte4+2
move.w #180*$100+160+8+8+8+8,spritte5
move.w #180*$100+65*$100,spritte5+2
move.w #180*$100+160+8+8+8+8+8,spritte6
move.w #180*$100+65*$100,spritte6+2
move.w #180*$100+160+8+8+8+8+8+8,spritte7
move.w #180*$100+65*$100,spritte7+2
move.w #180*$100+160+8+8+8+8+8+8+8,spritte8
move.w #180*$100+65*$100,spritte8+2
move.l creditsa,a0
add.l #16+16+16,a0
jsr BLIT1
jsr USTAW_SPRITES
bra SCROLL_BACK
ZPSPV:
jsr USTAW_VIRTUAL_SPRITES
bra SCROLL_BACK
ADDUJ:
move.w #$00FF,SCROLL+2
add.l #2,PICTR1
add.l #2,PICTR2
add.l #2,PICTR3
add.l #2,PICTR4
move.l PICTR1,d0
move.w d0,BITPLAN1+2
swap d0
move.w d0,BITPLAN0+2
move.l PICTR2,d0
move.w d0,BITPLAN3+2
swap d0
move.w d0,BITPLAN2+2
move.l PICTR3,d0
move.w d0,BITPLAN5+2
swap d0
move.w d0,BITPLAN4+2
move.l PICTR4,d0
move.w d0,BITPLAN7+2
swap d0
move.w d0,BITPLAN6+2
bra SCROLL_PR
CHANGE_PALETTE:
move.l #COLORMAP,a0
move.w #15,d7
move.l #PALETTE,a1
CHPL:
add.l #2,a0
move.w (a1)+,(a0)+
dbf d7,CHPL
rts
MOUSE_WALL1:
move.l SHADE_TABLE,a6
move.l a6,PLANE
jsr CHANGE_PALETTE1
move.l PICTR1K,d0
move.w d0,BITPLAN1w+2
swap d0
move.w d0,BITPLAN0w+2
move.l PICTR2K,d0
move.w d0,BITPLAN3w+2
swap d0
move.w d0,BITPLAN2w+2
move.l PICTR3K,d0
move.w d0,BITPLAN5w+2
swap d0
move.w d0,BITPLAN4w+2
move.l plane,d0
move.w d0,BITPLAN7w+2
swap d0
move.w d0,BITPLAN6w+2
move.l plane,d0
move.w d0,BITPLAN9w+2
swap d0
move.w d0,BITPLAN8w+2
lea $dff000,a6
move.l #copperlistwall,$80(a6)
clr.w $88(a6)
move.w #200,GLEMBIA
move.w #4,ANGL
move.w #105,d7
move.l #SHADE_TABLE,a0
move.l (a0)+,PLANE
jsr WAIT_BLITTER
jsr CLEARSCREEN
move.l (a0)+,PLANE
jsr WAIT_BLITTER
jsr CLEARSCREEN
move.l (a0)+,PLANE
jsr WAIT_BLITTER
jsr CLEARSCREEN
move.l (a0)+,PLANE
jsr WAIT_BLITTER
jsr CLEARSCREEN
move.l (a0)+,PLANE
jsr WAIT_BLITTER
jsr CLEARSCREEN
MOUSE1:
move.w d7,ROTBUF
jsr ODDOD
jsr WAIT
move.l #WAL1I,COORDS_1
move.l #WAL1D,datalines
move.w ANGLEZ,BUFOR1
jsr WAIT_BLITTER
jsr CLEARSCREEN
jsr ROTATE
jsr WAIT_BLITTER
jsr DRAWLINES
jsr WAIT_BLITTER
jsr FILL
jsr CHBUFSb
move.l #WAL2I,COORDS_1
move.l #WAL2D,datalines
move.w BUFOR1,ANGLEZ
jsr WAIT_BLITTER
jsr CLEARSCREEN
jsr ROTATE
jsr WAIT_BLITTER
jsr DRAWLINES
jsr WAIT_BLITTER
jsr FILL
jsr CHBUFSb1
move.w ROTBUF,d7
dbf d7,mouse1
jsr MOUSE_HAND
rts
MOUSE_HAND:
cmp.b #$07,MCBIT
bne MOUSE_HAND
jsr CHANGE_PALETTE5
jsr WAIT255
jsr WAIT255
jsr CHANGE_PALETTE2
move.w #160,GLEMBIA
move.w #4,ANGL
move.w #0,ANGX
move.w #0,ANGY
move.w #45,d7
MOUSE_HAND1:
add.w #2,glembia
move.w d7,ROTBUF
jsr WAIT
jsr WAIT_BLITTER
jsr CLEARSCREEN
move.l #H1,COORDS_1
move.l #H1D,datalines
jsr ROTATE
jsr WAIT_BLITTER
jsr DRAWLINES
jsr WAIT_BLITTER
jsr FILL
jsr CHBUFSb
jsr WAIT_BLITTER
jsr CLEARSCREEN
move.l #H2,COORDS_1
move.l #H2D,datalines
jsr ROTATE
jsr WAIT_BLITTER
jsr DRAWLINES
jsr WAIT_BLITTER
jsr FILL
jsr CHBUFSb1
move.w ROTBUF,d7
dbf d7,MOUSE_HAND1
move.w #2,ANGL
move.w #8,ANGX
move.w #0,ANGY
move.w #0,CCBIT
move.w #320,d7
move.w #161,XPZ
move.w #128,YPZ
MOUSE_HAND2:
move.w d7,ROTBUF
jsr WAIT
cmp.b #$02,MCBIT
beq BLOB3
btst #1,CCBIT
bne BLOB1
jsr CHANGE_PALETTE4
bra BLOB2
BLOB1:
jsr CHANGE_PALETTE2
BLOB2:
jsr WAIT_BLITTER
jsr CLEARSCREEN
move.l #H1,COORDS_1
move.l #H1D,datalines
jsr ROTATE
jsr WAIT_BLITTER
jsr DRAWLINES
jsr WAIT_BLITTER
jsr FILL
jsr CHBUFSb
jsr WAIT_BLITTER
jsr CLEARSCREEN
move.l #H2,COORDS_1
move.l #H2D,datalines
jsr ROTATE
jsr WAIT_BLITTER
jsr DRAWLINES
jsr WAIT_BLITTER
jsr FILL
jsr CHBUFSb1
move.w ROTBUF,d7
bra MOUSE_HAND2
BLOB3:
jsr CHANGE_PALETTE5
jsr WAIT
jsr CHANGE_PALETTE3
jsr WAIT
move.b #$02,d0
jsr WAITMC
jsr CHANGE_PALETTE5
jsr WAIT
jsr CHANGE_PALETTE3
jsr WAIT
move.b #$02,d0
jsr WAITMC
jsr CHANGE_PALETTE5
jsr WAIT
jsr CHANGE_PALETTE3
jsr WAIT
move.b #$02,d0
jsr WAITMC
jsr CHANGE_PALETTE5
jsr WAIT
jsr CHANGE_PALETTE3
jsr WAIT
move.b #$02,d0
jsr WAITMC
jsr CHANGE_PALETTE5
jsr WAIT
jsr CHANGE_PALETTE3
jsr WAIT
move.b #$02,d0
jsr WAITMC
TUNEL:
move.l #SHADE_TABLE,a0
move.l (a0)+,PLANE
jsr WAIT_BLITTER
jsr CLEARSCREEN
move.l (a0)+,PLANE
jsr WAIT_BLITTER
jsr CLEARSCREEN
move.l (a0)+,PLANE
jsr WAIT_BLITTER
jsr CLEARSCREEN
move.l (a0)+,PLANE
jsr WAIT_BLITTER
jsr CLEARSCREEN
move.l (a0)+,PLANE
jsr WAIT_BLITTER
jsr CLEARSCREEN
move.l PLANE,d0
move.w d0,BITPLAN1w+2
swap d0
move.w d0,BITPLAN0w+2
move.l PLANE,d0
move.w d0,BITPLAN3w+2
swap d0
move.w d0,BITPLAN2w+2
move.l PLANE,d0
move.w d0,BITPLAN5w+2
swap d0
move.w d0,BITPLAN4w+2
move.l PLANE,d0
move.w d0,BITPLAN7w+2
swap d0
move.w d0,BITPLAN6w+2
move.l PLANE,d0
move.w d0,BITPLAN9w+2
swap d0
move.w d0,BITPLAN8w+2
jsr CHANGE_PALETTE6
;po rot transform
move.w #220,GLEMBIA
move.w ANGLEZ,BUFOR2
move.w #0,ANGLEZ
move.w #0,ANGLEY
move.w #0,ANGLEX
move.w #0,ANGL
move.w #0,ANGY
move.w #0,ANGX
move.w #-6,ang1
move.w #-6,ang2
move.w #-6,ang3
move.w #-6,ang4
move.w #-6,ang5
move.w #-6,ang6
move.w #-6,ang7
move.w #-6,ang8
mouse1T:
jsr WAIT
jsr TUNEL_LOOP
jsr WAIT
jsr TUNEL_LOOP
cmp.b #$0A,MCBIT
bne mouse1T
move.b #00,MCBIT
jsr CHANGE_PALETTE5
jsr WAIT
jsr WAIT
jsr CHANGE_PALETTE6
jsr WAIT
jsr WAIT
move.w #6,ang1
move.w #6,ang2
move.w #6,ang3
move.w #6,ang4
move.w #6,ang5
move.w #6,ang6
move.w #6,ang7
move.w #6,ang8
mouse2T:
jsr WAIT
jsr TUNEL_LOOP
cmp.b #$0A,MCBIT
bne mouse2T
move.b #00,MCBIT
jsr CHANGE_PALETTE5
jsr WAIT
jsr WAIT
jsr CHANGE_PALETTE6
jsr WAIT
jsr WAIT
move.w #-6,ang1
move.w #-6,ang2
move.w #-6,ang3
move.w #-6,ang4
move.w #-6,ang5
move.w #-6,ang6
move.w #-6,ang7
move.w #-6,ang8
mouse4T:
jsr WAIT
jsr TUNEL_LOOP
cmp.b #$0A,MCBIT
bne mouse4T
move.b #00,MCBIT
jsr CHANGE_PALETTE5
jsr WAIT
jsr WAIT
jsr CHANGE_PALETTE6
jsr WAIT
jsr WAIT
move.w #4,ang1
move.w #4,ang2
move.w #4,ang3
move.w #4,ang4
move.w #6,ang5
move.w #6,ang6
move.w #6,ang7
move.w #6,ang8
mouse5T:
jsr WAIT
jsr TUNEL_LOOP
cmp.b #$0A,MCBIT
bne mouse5T
move.b #00,MCBIT
jsr CHANGE_PALETTE5
jsr WAIT
jsr WAIT
jsr CHANGE_PALETTE6
jsr WAIT
jsr WAIT
move.w #-4,ang1
move.w #-4,ang2
move.w #-4,ang3
move.w #-4,ang4
move.w #-4,ang5
move.w #-4,ang6
move.w #-4,ang7
move.w #-4,ang8
mouse6T:
jsr WAIT
jsr TUNEL_LOOP
cmp.b #$0A,MCBIT
bne mouse6T
move.b #00,MCBIT
jsr CHANGE_PALETTE5
jsr WAIT
jsr WAIT
jsr CHANGE_PALETTE6
jsr WAIT
jsr WAIT
move.w #6,ang1
move.w #6,ang2
move.w #2,ang3
move.w #6,ang4
move.w #6,ang5
move.w #2,ang6
move.w #6,ang7
move.w #6,ang8
move.w #14,d7
mouse7T1:
move.w d7,ROTBUF
mouse7T:
jsr WAIT255
jsr TUNEL_LOOP
cmp.b #$0A,MCBIT
bne mouse7T
move.b #00,MCBIT
jsr CHANGE_PALETTE5
jsr WAIT255
jsr WAIT255
jsr CHANGE_PALETTE6
jsr WAIT255
jsr WAIT255
move.w #-8,ang1
move.w #-8,ang2
move.w #-8,ang3
move.w #-8,ang4
move.w #-8,ang5
move.w #-8,ang6
move.w #-8,ang7
move.w #-8,ang8
mouse8T:
jsr WAIT255
jsr TUNEL_LOOP
cmp.b #$0A,MCBIT
bne mouse8T
move.b #00,MCBIT
jsr CHANGE_PALETTE5
jsr WAIT255
jsr WAIT255
jsr CHANGE_PALETTE6
jsr WAIT255
jsr WAIT255
move.w #8,ang1
move.w #8,ang2
move.w #8,ang3
move.w #8,ang4
move.w #8,ang5
move.w #8,ang6
move.w #8,ang7
move.w #8,ang8
move.w ROTBUF,d7
dbf d7,mouse7T1
jsr WAIT255
jsr TUNEL_LOOP
jsr WAIT255
jsr TUNEL_LOOP
jsr WAIT255
jsr TUNEL_LOOP
jsr WAIT255
jsr TUNEL_LOOP
jsr WAIT255
jsr TUNEL_LOOP
jsr WAIT255
jsr TUNEL_LOOP
jsr WAIT255
jsr TUNEL_LOOP
jsr WAIT255
jsr TUNEL_LOOP
ENDT:
jsr CHANGE_PALETTE5
jsr WAIT255
jsr WAIT255
jsr WAIT255
jsr WAIT255
jsr CHANGE_PALETTE6
jsr WAIT255
jsr WAIT255
move.l PLANE,d0
move.w d0,BITPLAN1wl+2
swap d0
move.w d0,BITPLAN0wl+2
lea $dff000,a6
move.l #copper,$80(a6)
clr.w $88(a6)
END1:
jsr WAIT
cmp.b #$03,MCBIT
bne END1
move.w #$0000,COLORMAP12+2
move.w #$0000,COLORMAP12+6
END2:
jsr WAIT
cmp.b #$04,MCBIT
bne END2
move.w #$0000,BLIB2+2
move.w #$0000,BLIB2+6
END3:
jsr WAIT
cmp.b #$05,MCBIT
bne END3
move.w #$0000,BLIB1+2
move.w #$0000,BLIB1+6
END4:
jsr WAIT
cmp.b #$06,MCBIT
bne END4
jsr CHANGE_PALETTE5
jsr WAIT255
jsr WAIT255
jsr CHANGE_PALETTE6
jsr WAIT255
jsr WAIT255
move.l #PICTURE,a6
move.l a6,PLANE
jsr CHANGE_PALETTE7
move.l #SCREEN1,d0
move.w d0,BITPLAN17+2
swap d0
move.w d0,BITPLAN07+2
move.l #endpart+40,d0
move.w d0,BITPLAN1e+2
swap d0
move.w d0,BITPLAN0e+2
move.l #endpart+40*31,d0
move.w d0,BITPLAN3e+2
swap d0
move.w d0,BITPLAN2e+2
move.l #endpart+40*31+40*30,d0
move.w d0,BITPLAN5e+2
swap d0
move.w d0,BITPLAN4e+2
move.l #endpart+40*31+40*30+40*30,d0
move.w d0,BITPLAN7e+2
swap d0
move.w d0,BITPLAN6e+2
lea $dff000,a6
move.l #copperlist7,$80(a6)
clr.w $88(a6)
Mousem:
Bsr Start
jsr BLIT1a
move.w #19,d7
blee:
move.w d7,bjb
jsr WAIT255
jsr BLITs
move.w bjb,d7
dbf d7,blee
bra Mousem
BLITs:
jsr WAIT_BLITTER
move.l #SCREEN1+40,$dff050
move.l #SCREEN1,$dff054
move.l #$FFFFFFFF,$dff044
move.w #$09f0,$dff040
move.w #$0000,$dff042
move.w #0000,$dff064
move.w #0000,$dff066
move.w #[255*64+20],$dff058
rts
BLIT1a:
jsr WAIT_BLITTER
move.l #SCREEN,$dff050
move.l #SCREEN1+200*40,d1
move.w #300,d0
sub.w XL,d0
divs #2,d0
And.w #$fff0,d0
Lsr.w #3,d0
Add.w d0,d1
Add.l #0,d1
move.l d1,$dff054
move.l #$FFFFFFF,$dff044
move.w #000,$dff046
move.w #300,d0
sub.w XL,d0
divs #2,d0
And.w #$000f,d0
Lsl.w #8,d0
Lsl.w #4,d0
Or.w #$09f0,d0
move.w d0,$dff040
move.w #0000,$dff042
move.w #0000,$dff064
move.w #0000,$dff066
move.w #[18*64+20],$dff058
jsr WAIT_BLITTER
LEA $DFF000,A6
MOVE.L #SCREEN,$54(A6)
MOVE.l #$0,$66(A6)
MOVE.W #%0000000100000000,$40(A6)
MOVE.W #0,$42(A6)
MOVE.W #19*64+20,$58(A6)
rts
Start:
Move.l #187,d7
Lea Screen+40,a0
Loop:
Moveq #0,d0
Move.b (a1)+,d0
Tst d0
Beq Exit1f
Cmp.b #' ',d0
Bne NoSpace
Add.w #10,Text_X ;<-- space
Bra Loop
NoSpace:
Cmp.b #10,d0
Bne NoReturn
; Add.l #80*12,Text_Y
move.w Text_X,XL
Move.w #10,Text_X
Bra exit2f
NoReturn:
Sub.b #32,d0
Lsl.w #2,d0
Lea PropFonts,a0
Add.w d0,a0
Bsr PiszLitera
Moveq #0,d0
Move.b -1(a1),d0
Sub.b #32,d0
Lsl.w #1,d0
Lea SzerTab,a0
Move.w (a0,d0.w),d1
Add.w d1,Text_X
Add.w #1,Text_X
Bra Loop
Exit1f:
Lea Text,a1
Exit2f:
Rts
; a0 - adres litery
PiszLitera:
Btst #14,$dff002
Bne PiszLitera
Move.l a0,$50(a6)
Move.l #Screen,d1
Move.w Text_X,d0
And.w #$fff0,d0
Lsr.w #3,d0
Add.w d0,d1
Add.l Text_Y,d1
Move.l d1,$54(a6)
Move.l d1,$4c(a6)
Move.w #$ffff,$44(a6)
Move.w #$ffff,$46(a6)
Move.w #0244,$64(a6)
Move.w #0036,$62(a6)
Move.w #0036,$66(a6)
Move.w Text_X,d0
And.w #$000f,d0
Lsl.w #8,d0
Lsl.w #4,d0
Or.w #$0dfc,d0
Move.w d0,$40(a6)
Move.w #$0000,$42(a6)
Move.w #64*19+2,$58(a6)
Rts
XL:
dc.w 0
Text_X:
dc.w 10
Text_Y:
dc.l 0
SzerTab:
; !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[ ]
;--- --- - -------------- - -----------------------------
dc.w 10,6,12 ; !"
dc.w 1,2,3,4 ;#$%&
dc.w 5,6,6 ;'()
dc.w 1,2 ;*+
dc.w 6 ;,
dc.w 1 ;-
;./0123456789:;
dc.w 6,12,12,6,12,12,12,12,12,12,12,12,6,5
dc.w 1,2,3,12,4 ;<=>?@
;ABCDEFGHIJKLMNOPQRSTUVWXYZ[ ]
dc.w 12,12,12,12,12,10,12,12,4,12,12,10,12,12,12,12,12
dc.w 12,12,10,12,12,12,12,12,12,5,1,5
;******************** MENU *****
TEXT:
INCBIN 'df0:lolo.txt'
DC.B 0
even
PropFonts:
incbin "df0:Fonty1.RAW"
Screen:
Blk.b $5000,$00
Screen1:
Blk.b $5000,$00
CHANGE_PALETTE7:
move.l #COLORMAP7,a0
move.w #31,d7
move.l #PALETTE7,a1
CHPL7:
add.l #2,a0
move.w (a1)+,(a0)+
dbf d7,CHPL7
rts
CopperList7:
dc.w $0120,$0000 ; SpritePointers
dc.w $0122,$0000
dc.w $0124,$0000
dc.w $0126,$0000
dc.w $0128,$0000
dc.w $012a,$0000
dc.w $012c,$0000
dc.w $012e,$0000
dc.w $0130,$0000
dc.w $0132,$0000
dc.w $0134,$0000
dc.w $0136,$0000
dc.w $0138,$0000
dc.w $013a,$0000
dc.w $013c,$0000
dc.w $013e,$0000
COLORMAP7:
dc.w $0180,$0000 ; ColorMap
dc.w $0182,$0CEF
dc.w $0184,$09AB
dc.w $0186,$0555
dc.w $0188,$0222
dc.w $018a,$0000
dc.w $018c,$0111
dc.w $018e,$0333
dc.w $0190,$0F00
dc.w $0192,$0A00
dc.w $0194,$0600
dc.w $0196,$0300
dc.w $0198,$0FC6
dc.w $019a,$0FA0
dc.w $019c,$0F60
dc.w $019e,$0B50
dc.w $01a0,$0000
dc.w $01a2,$0FFF
dc.w $01a4,$0FFF
dc.w $01a6,$0FFF
dc.w $01a8,$0000
dc.w $01aa,$0FFF
dc.w $01ac,$0FFF
dc.w $01ae,$0FFF
dc.w $01b0,$0000
dc.w $01b2,$0FFF
dc.w $01b4,$0FFF
dc.w $01b6,$0FFF
dc.w $01b8,$0000
dc.w $01ba,$0FFF
dc.w $01bc,$0FFF
dc.w $01be,$0FFF
dc.w $0102,$0000 ; bplcon1
dc.w $0104,$0024 ; bplcon2
dc.w $0108,$0000 ; bpl1mod
dc.w $010a,$0000 ; bpl2mod
dc.w $008e,$2c81 ; diwstrt
dc.w $0090,$14C1 ; diwstop
dc.w $0092,$0038 ; ddfstrt
dc.w $0094,$00D0 ; ddfstop
BITPLAN07 dc.w $00e0,$0000 ; Pointers to BitMap
BITPLAN17 dc.w $00e2,$0000
BITPLAN27 dc.w $00e4,$0000
BITPLAN37 dc.w $00e6,$0000
BITPLAN47 dc.w $00e8,$0000
BITPLAN57 dc.w $00ea,$0000
BITPLAN67 dc.w $00ec,$0000
BITPLAN77 dc.w $00ee,$0000
BITPLAN87 dc.w $00f0,$0000
BITPLAN97 dc.w $00f2,$0000
BITPLAN107 dc.w $00f4,$0000
BITPLAN117 dc.w $00f6,$0000
dc.w $0100,$1200 ; bplcon0
dc.w $4001,$ff00
dc.w $182,$000
dc.w $4101,$ff00
dc.w $182,$111
dc.w $4201,$ff00
dc.w $182,$222
dc.w $4301,$ff00
dc.w $182,$333
dc.w $4401,$ff00
dc.w $182,$444
dc.w $4501,$ff00
dc.w $182,$555
dc.w $4601,$ff00
dc.w $182,$666
dc.w $4701,$ff00
dc.w $182,$777
dc.w $4801,$ff00
dc.w $182,$888
dc.w $4901,$ff00
dc.w $182,$999
dc.w $f001,$ff00
dc.w $182,$888
dc.w $f101,$ff00
dc.w $182,$777
dc.w $f201,$ff00
dc.w $182,$666
dc.w $f301,$ff00
dc.w $182,$555
dc.w $f401,$ff00
dc.w $182,$444
dc.w $f501,$ff00
dc.w $182,$333
dc.w $f601,$ff00
dc.w $182,$222
dc.w $f701,$ff00
dc.w $182,$111
dc.w $f801,$ff00
dc.w $182,$000
BIL1: dc.w $ff01,$ff00
dc.w $0100,$4200 ; bplcon0
BITPLAN0e dc.w $00e0,$0000 ; Pointers to BitMap
BITPLAN1e dc.w $00e2,$0000
BITPLAN2e dc.w $00e4,$0000
BITPLAN3e dc.w $00e6,$0000
BITPLAN4e dc.w $00e8,$0000
BITPLAN5e dc.w $00ea,$0000
BITPLAN6e dc.w $00ec,$0000
BITPLAN7e dc.w $00ee,$0000
BITPLAN8e dc.w $00f0,$0000
BITPLAN9e dc.w $00f2,$0000
BITPLAN10e dc.w $00f4,$0000
BITPLAN11e dc.w $00f6,$0000
BIL2: dc.w $0201,$ff00
dc.w $0120,$0000 ; SpritePointers
dc.w $0122,$0000
dc.w $0124,$0000
dc.w $0126,$0000
dc.w $0128,$0000
dc.w $012a,$0000
dc.w $012c,$0000
dc.w $012e,$0000
dc.w $0130,$0000
dc.w $0132,$0000
dc.w $0134,$0000
dc.w $0136,$0000
dc.w $0138,$0000
dc.w $013a,$0000
dc.w $013c,$0000
dc.w $013e,$0000
COLORMAPE:
dc.w $0180,$0000 ; ColorMap
dc.w $0182,$0012
dc.w $0184,$0334
dc.w $0186,$0545
dc.w $0188,$0656
dc.w $018a,$0667
dc.w $018c,$0878
dc.w $018e,$0a88
dc.w $0190,$0997
dc.w $0192,$0ca9
dc.w $0194,$0dbc
dc.w $0196,$0dca
dc.w $0198,$0deb
dc.w $019a,$0fda
dc.w $019c,$0fea
dc.w $019e,$0ffc
dc.w $01a0,$0000
dc.w $01a2,$0000
dc.w $01a4,$0000
dc.w $01a6,$0000
dc.w $01a8,$0000
dc.w $01aa,$0000
dc.w $01ac,$0000
dc.w $01ae,$0000
dc.w $01b0,$0000
dc.w $01b2,$0000
dc.w $01b4,$0000
dc.w $01b6,$0000
dc.w $01b8,$0000
dc.w $01ba,$0000
dc.w $01bc,$0000
dc.w $01be,$0000
DC.L $FFFFFFFE
endpart:
incbin 'df0:endpart.raw'
PALETTE7:
dc.w $000,$000,$222,$333,$444,$555,$666,$777
dc.w $888,$999,$AAA,$BBB,$CCC,$DDD,$EEE,$FFF
dc.w $f46,$999,$999,$999,$999,$999,$999,$999
dc.w $f46,$999,$999,$999,$999,$999,$999,$999
WAITMC:
move.b MCBIT,d1
cmp.b d0,d1
bne WAITMC
rts
;po rot transform
ODDOD:
move.l #WAL1I,a0
move.w #24,d7
ODDOD1:
add.l #2,a0
cmp.w #-180,(a0)
blt ODDOD11
sub.w #4,(a0)
ODDOD11:
add.l #4,a0
dbf d7,ODDOD1
move.l #WAL2I,a0
move.w #23,d7
ODDOD2:
add.l #2,a0
cmp.w #180,(a0)
bgt ODDOD21
add.w #4,(a0)
ODDOD21:
add.l #4,a0
dbf d7,ODDOD2
rts
WAIT:
CMP.B #$FE,$DFF006
BNE WAIT
WAITREAL:
CMP.B #$FF,$DFF006
BNE WAITREAL
rts
CLEARSCREEN:
jsr WAIT_BLITTER
LEA $DFF000,A6
MOVE.L PLANE,$54(A6)
MOVE.l #$0,$66(A6)
MOVE.W #%0000000100000000,$40(A6)
MOVE.W #0,$42(A6)
MOVE.W #256*64+20,$58(A6)
rts
ROTATE:
move.l COORDS_1,A5
move.l TABLE_DRAW,A2
LEA COSTABLE,A3
LEA SINTABLE,A4
move.w ANGL,d0
ADD.W d0,ANGLEZ
ANDI.W #$1Fe,ANGLEZ
move.w ANGY,d0
ADD.W d0,ANGLEY
ANDI.W #$1Fe,ANGLEY
move.w ANGX,d0
ADD.W d0,ANGLEX
ANDI.W #$1Fe,ANGLEX
cmp.w #$100,ANGLEX
bne AZ1
bchg #1,CCBIT
AZ1:
cmp.w #$20,ANGLEX
bne AZ2
bchg #1,CCBIT
AZ2:
MOVE.W (A5)+,D7
LOOP_CALC_COORDS5a:
MOVEM.W (A5)+,D0-D2
Rotacja_Y5a: ;os Y
MOVE.W ANGLEY,A0
MOVE.W D0,D4
MOVE.W D2,D5
MULS (A3,A0.W),D4
MULS (A4,A0.W),D5
SUB.L D5,D4
ASR.L #8,D4
MOVE.W D4,D6
MOVE.W D0,D4
MOVE.W D2,D5
MULS (A4,A0.W),D4
MULS (A3,A0.W),D5
ADD.L D4,D5
ASR.L #8,D5
MOVE.W D6,D0
MOVE.W D5,D2
Rotacja_X5a: ;os X
MOVE.W ANGLEX,A0
MOVE.W D1,D4
MOVE.W D2,D5
MULS (A3,A0.W),D4
MULS (A4,A0.W),D5
SUB.L D5,D4
ASR.L #8,D4
MOVE.W D4,D6
MOVE.W D1,D4
MOVE.W D2,D5
MULS (A4,A0.W),D4
MULS (A3,A0.W),D5
ADD.L D4,D5
ASR.L #8,D5
MOVE.W D6,D1
MOVE.W D5,D2
Rotacja_Z5a: ;os Z
MOVE.W ANGLEZ,A0
MOVE.W D0,D4
MOVE.W D1,D5
MULS (A3,A0.W),D4
MULS (A4,A0.W),D5
SUB.L D5,D4
ASR.L #8,D4
MOVE.W D4,D6
MOVE.W D0,D4
MOVE.W D1,D5
MULS (A4,A0.W),D4
MULS (A3,A0.W),D5
ADD.L D4,D5
ASR.L #8,D5
MOVE.W D6,D0
MOVE.W D5,D1
Perspektywa5a: ;perspektywa
Z_ADD5a: ADD.W GLEMBIA,D2
NEG.W D2
EXT.L D0
EXT.L D1
ASL.L #8,D0
ASL.L #8,D1
DIVS D2,D0
DIVS D2,D1
ADD.W XPZ,D0
ADD.W YPZ,D1
MOVE.W D0,(A2)+
MOVE.W D1,(A2)+
DBF D7,LOOP_CALC_COORDS5a
rts
DRAWLINES:
move.l TABLE_DRAW,A4
move.l DATALINES,A5
MOVE.L PLANE,A0
MOVE.W (A5)+,D7
LOOP_FOR_DRAW:
MOVEM.W (A5)+,D4-D5
LSL.W #2,D4
LSL.W #2,D5
MOVEM.W (A4,D4.W),D0-D1
MOVEM.W (A4,D5.W),D2-D3
MOVEM.L D7,-(A7)
Bsr Clip
MOVEM.L (A7)+,D7
DBF D7,LOOP_FOR_DRAW
ENDLO:
RTS
clip tst.w d0
blt.s clipa
tst.w d2
blt.s clipa
tst.w d1
blt.s clipa
tst.w d3
blt.s clipa
cmp.w #xmax,d0
bgt.s clipa
cmp.w #xmax,d2
bgt.s clipa
cmp.w #ymax,d1
bgt.s clipa
cmp.w #ymax,d3
bgt.w clipa
druw
bra draw
clipa cmp.w d3,d1
blt.s this
exg d0,d2
exg d1,d3
this move.w d0,zx1
move.w d2,zx2
move.w d1,zy1
move.w d3,zy2
moveq #1,d4
move.w d4,d5
tst.w d0
bge.s ml1
moveq #xmin,d4
bra.s ml2
ml1 cmp.w #xmax,d0
ble.s ml2
move.w #xmax,d4
ml2 tst.w d1
bge.s ml3
moveq #ymin,d5
bra.s ml4
ml3 cmp.w #ymax,d1
ble.s ml4
move.w #ymax,d5
ml4
moveq #1,d6
moveq #1,d7
tst.w d2
bge.s mx1
moveq #xmin,d6
bra.s mx2
mx1 cmp.w #xmax,d2
ble.s mx2
move.w #xmax,d6
mx2 tst.w d3
bge.s mx3
moveq #ymin,d7
bra.s mx4
mx3 cmp.w #ymax,d3
ble.s mx4
move.w #ymax,d7
mx4
cmp.w d4,d6
bne.s md1
cmp.w #1,d4 ;+
bne lineout
md1 cmp.w d5,d7
bne.s md2
cmp.w #1,d5
bne lineout
md2 cmp.w #1,d4
beq clip1
move.w d1,d6 ; cut left for 1 pixel
sub.w d3,d6
move.w d4,d7
sub.w d0,d7
muls d7,d6
move.w d2,d7
sub.w d0,d7
beq lineout
divs d7,d6
sub.w d6,d1
move.w d4,d0
moveq #1,d4
moveq #1,d5
tst.w d0
bge.s ms1
moveq #xmin,d4
bra.s ms2
ms1 cmp.w #xmax,d0
ble.s ms2
move.w #xmax,d4
ms2 tst.w d1
bge.s ms3
moveq #ymin,d5
bra.s clip1
ms3 cmp.w #ymax,d1
ble.s clip1
move.w #ymax,d5
clip1
cmp.w #1,d5 ;+
beq clip2
move.w d2,d6 ; cut up for 1 pixel
sub.w d0,d6
move.w d5,d7
sub.w d1,d7
muls d7,d6
move.w d3,d7
sub.w d1,d7
beq lineout
divs d7,d6
add.w d6,d0
move.w d5,d1
clip2
moveq #1,d4
moveq #1,d5
tst.w d2
bge.s mz1
moveq #xmin,d4
bra.s mz2
mz1 cmp.w #xmax,d2
ble.s mz2
move.w #xmax,d4
mz2 tst.w d3
bge.s mz3
moveq #ymin,d5
bra.s mz4
mz3 cmp.w #ymax,d3
ble.s mz4
move.w #ymax,d5
mz4
cmp.w #1,d4
beq clip3
move.w d1,d6 ; cut left for 2 pixel
sub.w d3,d6
move.w d4,d7
sub.w d0,d7
muls d7,d6
move.w d2,d7
sub.w d0,d7
beq lineout
divs d7,d6
move.w d1,d7
sub.w d6,d7
move.w d7,d3
move.w d4,d2
moveq #1,d4
moveq #1,d5
tst.w d2
bge.s mv1
moveq #xmin,d4
bra.s mv2
mv1 cmp.w #xmax,d2
ble.s mv2
move.w #xmax,d4
mv2 tst.w d3
bge.s mv3
moveq #ymin,d5
bra.s clip3
mv3 cmp.w #ymax,d3
ble.s clip3
move.w #ymax,d5
clip3
cmp.w #1,d5
beq clip4
move.w d2,d6 ; cut right for 2 pixel
sub.w d0,d6
move.w d5,d7
sub.w d1,d7
muls d7,d6
move.w d3,d7
sub.w d1,d7
beq lineout
divs d7,d6
move.w d0,d7
add.w d6,d7
move.w d7,d2
move.w d5,d3
clip4
cmp.w d0,d2
bne.s clip5
cmp.w d1,d3
beq lineout ; kreska poza ekranem
clip5
movem.w d0-d3,-(a7)
bsr draw
movem.w (a7)+,d0-d3
cmp.w #xmax,d0
beq exit1
cmp.w #xmax,d2
bne zero2
move.w d2,d0
move.w d3,d1
move.w zy2,d3
tst.w d3
bge.s cli1
moveq #ymin,d3
cli1 cmp.w #ymax,d3
ble.s cli2
move.w #ymax,d3
cli2
bra draw
exit1
move.w d0,d2
move.w zy1,d3
tst.w d3
bge.s cli3
moveq #ymin,d3
cli3 cmp.w #ymax,d3
ble.s cli4
move.w #ymax,d3
cli4
bra draw
lineout
cmp.w #xmax,zx1
bgt.s outn
cmp.w #xmax,zx2
bgt.s outn
rts
outn move.w zy1,d1
move.w zy2,d3
tst.w d1
bpl.s otn1
moveq #ymin,d1
otn1 cmp.w #ymax,d1
blt.s otn2
move.w #ymax,d1
otn2
tst.w d3
bpl.s otn3
moveq #ymin,d3
otn3 cmp.w #ymax,d3
blt.s otn4
move.w #ymax,d3
otn4
move.w #xmax,d0
move.w #xmax,d2
bra Draw
zero2: rts
zx1 dc.w 0
zx2 dc.w 0
zy1 dc.w 0
zy2 dc.w 0
Draw:
Movem.l D0-A6,-(SP)
Cmp.w D1,D3
Beq.w No_Line
Bge.b P_1
Exg D2,D0
Exg D1,D3
P_1:
Addq.b #1,D1
Moveq #$f,D4
And.b D2,D4
Ror.l #$4,D4
Sub.w D3,D1
Neg.w D1
Move.w D3,D5
Asl.w #5,D5 ;Mulu #40,D3
Asl.w #3,D3
Add.w D5,d3
Sub.w D2,D0
Blt.b p_5
Cmp.w D0,D1
Bge.b P_4
Ori.l #$0b4a001b,D4
Bra.b P_9
P_4:
Ori.l #$0b4a0005,D4
Exg D0,D1
Bra.b P_9
P_5:
Neg.w D0
Cmp.w D0,D1
Bge.b P_8
Ori.l #$0b4a001f,D4
Bra.b P_9
P_8:
Ori.l #$0b4a000f,D4
Exg D0,D1
P_9:
Asl.w #1,D1
Asr.w #$3,D2
Andi.l #$0000ffff,D2
Add.l D2,D3
Move.w D1,D2
Sub.w D0,D2
Sub.w D0,D2
Bge.b P_10
Bset #6,D4
P_10:
Asl.w #6,d0
Add.w #$42,d0
jsr WAIT_BLITTER
Move.w d1,$62(A6)
Move.w d2,$64(A6)
Move.l #-1,$44(A6)
Move.w #40,$60(A6)
Move.l #$ffff8000,$72(A6)
Add.l PLANE,d3
OK:
Move.W D2,$52(A6)
Move.l D4,$40(A6)
Move.l D3,$48(A6)
Move.l D3,$54(A6)
Move.w D0,$58(A6)
No_Line:
Movem.l (SP)+,D0-A6
Rts
FILL:
jsr WAIT_BLITTER
LEA $DFF000,A0
Move.w #$9f0,$40(A0)
Move.w #%01010,$42(A0)
Move.l #$ffffffff,$44(A0)
Move.l PLANE,D0
Add.w #256*40-2,D0
Move.l D0,$50(A0)
Move.l D0,$54(A0)
Clr.w $64(A0)
Clr.w $66(A0)
Move.w #256*64+20,$58(A0)
jsr WAIT_BLITTER
rts
CHBUFS:
MOVE.L ACT_ADRES,A0
CMP.L #E_SHADE_TABLE,A0
BNE CLOO
MOVE.L #SHADE_TABLE,ACT_ADRES
CLOO:
ADDQ.L #4,ACT_ADRES
MOVE.L ACT_ADRES,A0
MOVE.L (A0)+,PLANE
MOVE.L (A0)+,D0
MOVE.W D0,BITPLAN1w+2
SWAP D0
MOVE.W D0,BITPLAN0w+2
MOVE.L (A0)+,D0
MOVE.W D0,BITPLAN3w+2
SWAP D0
MOVE.W D0,BITPLAN2w+2
MOVE.L (A0)+,D0
MOVE.W D0,BITPLAN5w+2
SWAP D0
MOVE.W D0,BITPLAN4w+2
MOVE.L (A0)+,D0
MOVE.W D0,BITPLAN7w+2
SWAP D0
MOVE.W D0,BITPLAN6w+2
; MOVE.L (A0)+,D0
; MOVE.W D0,BITPLAN9w+2
; SWAP D0
; MOVE.W D0,BITPLAN8w+2
RTS
CHBUFSb:
MOVE.L ACT_ADRES,A0
CMP.L #E_SHADE_TABLE,A0
BNE CLOOb
MOVE.L #SHADE_TABLE,ACT_ADRES
CLOOb:
ADDQ.L #4,ACT_ADRES
MOVE.L ACT_ADRES,A0
MOVE.L (A0)+,D0
MOVE.L (A0)+,PLANE
MOVE.W D0,BITPLAN9w+2
SWAP D0
MOVE.W D0,BITPLAN8w+2
RTS
CHBUFSb1:
MOVE.L ACT_ADRES,A0
CMP.L #E_SHADE_TABLE,A0
BNE CLOOb1
MOVE.L #SHADE_TABLE,ACT_ADRES
CLOOb1:
ADDQ.L #4,ACT_ADRES
MOVE.L ACT_ADRES,A0
MOVE.L (A0)+,D0
MOVE.L (A0)+,PLANE
MOVE.W D0,BITPLAN7w+2
SWAP D0
MOVE.W D0,BITPLAN6w+2
RTS
SHADE_TABLE:
DC.L 0,0,0,0,0
E_SHADE_TABLE:
DC.L 0,0,0,0,0
ACT_ADRES:
DC.L SHADE_TABLE
xmin=0
ymin=0
xmax=319
ymax=255
ANGLEX: DC.W 0
ANGLEZ: DC.W 0
ANGLEY: DC.W 0
CHANGE_PALETTE6:
move.l #COLORMAP1,a0
move.w #31,d7
move.l #PALETTE6,a1
CHPL6:
add.l #2,a0
move.w (a1)+,(a0)+
dbf d7,CHPL6
rts
CHANGE_PALETTE1:
move.l #COLORMAP1,a0
move.w #31,d7
move.l #PALETTE1,a1
CHPL1:
add.l #2,a0
move.w (a1)+,(a0)+
dbf d7,CHPL1
rts
CHANGE_PALETTE2:
move.l #COLORMAP1,a0
move.w #31,d7
move.l #PALETTE2,a1
CHPL2:
add.l #2,a0
move.w (a1)+,(a0)+
dbf d7,CHPL2
rts
CHANGE_PALETTE4:
move.l #COLORMAP1,a0
move.w #31,d7
move.l #PALETTE4,a1
CHPL4:
add.l #2,a0
move.w (a1)+,(a0)+
dbf d7,CHPL4
rts
CHANGE_PALETTE3:
move.l #COLORMAP1,a0
move.w #31,d7
move.l COLOR_WHITE,a1
CHPL3:
add.l #2,a0
move.w (a1)+,(a0)+
dbf d7,CHPL3
rts
CHANGE_PALETTE5:
move.l #COLORMAP1,a0
move.w #31,d7
CHPL5:
add.l #2,a0
move.w #$FFF,(a0)+
dbf d7,CHPL5
rts
GET_C_FADE_PROCEDURE:
GET_C_il_COLORS=30 ; -1
move.l #GET_C_il_COLORS,d0
moveq #0,d1
moveq #0,d2
moveq #0,d4
GET_C_FADE_LOOP:
moveq #0,d4 ; ABY NIE DZILALO W KOLKO
move.w (a0),d4 ; d4 jaki kolor po zmianie
move.w (a0),d1 ; KOLORKI DO d1 i d2
move.w (a1),d2
cmp.w d1,d2 ; CZY ROWNE ???
beq GET_C_FADE_OK_END ; JESLI TAK TO ZREZYGNUJ Z PROCEDURY DLA TEGO KOLORU
GET_C_FADE_WIEKSZY:
move.w (a0),d1 ; KOLORKI DO d1 i d2
move.w (a1),d2
and.w #$00f,d1 ; MASKI DLA POZOSTALYCH BITOW
and.w #$00f,d2
cmp.w d1,d2 ; JESLI 0-ych 8 BITOW TAKIE SAME TO OMIN
beq GET_C_FADE_0_OK_P
bmi GET_C_FADE_ADD_0
add.w #$001,d1
move.w d1,d4
bra GET_C_FADE_0_OK
GET_C_FADE_ADD_0
sub.w #$001,d1
move.w d1,d4 ; ZMIENIONY KOLOR do d4
bra GET_C_FADE_0_OK
GET_C_FADE_0_OK_P:
move.w (a1),d1
and.w #$00f,d1
move.w d1,d4
GET_C_FADE_0_OK:
move.w (a0),d1 ; KOLORKI DO d1 i d2
move.w (a1),d2
and.w #$0f0,d1 ; MASKI DLA 2-ich 8 BITOW
and.w #$0f0,d2
cmp.w d1,d2 ; JESLI 1-Ych 8 BITOW TAKIE SAME TO OMIN
beq GET_C_FADE_1_OK_P
bmi GET_C_FADE_ADD_1
add.w #$010,d1
and.w #$f0f,d4
add.w d1,d4
bra GET_C_FADE_1_OK
GET_C_FADE_ADD_1
sub.w #$010,d1
and.w #$f0f,d4
add.w d1,d4 ; ZMIENIONY KOLOR do d4
bra GET_C_FADE_1_OK
GET_C_FADE_1_OK_P:
move.w (a1),d1
and.w #$0f0,d1
and.w #$f0f,d4
add.w d1,d4
GET_C_FADE_1_OK:
move.w (a0),d1 ; KOLORKI DO d1 i d2
move.w (a1),d2
and.w #$f00,d1 ; MASKI DLA 2-ich 8 BITOW
and.w #$f00,d2
cmp.w d1,d2 ; JESLI 2-ICH 8 BITOW TAKIE SAME TO OMIN
beq GET_C_FADE_OK_END_P
bmi GET_C_FADE_ADD_2
add.w #$100,d1
and.w #$0ff,d4
add.w d1,d4
bra GET_C_FADE_OK_END
GET_C_FADE_ADD_2
sub.w #$100,d1
and.w #$0ff,d4
add.w d1,d4 ; ZMIENIONY KOLOR do d4
bra GET_C_FADE_OK_END
GET_C_FADE_OK_END_P:
move.w (a1),d1
and.w #$f00,d1
and.w #$0ff,d4
add.w d1,d4
GET_C_FADE_OK_END:
move.w d4,(a0)
add.l #2,a0 ; PRZESUN KOLORY o .L
add.l #2,a1
dbf d0,GET_C_FADE_LOOP ; TYLE PETLI ILE KOLOROW
rts
TUNEL_LOOP:
jsr CHBUFS
jsr CLEARSCREEN
move.w BUF1,ANGLEZ
move.w ANG1,ANGL
move.w GLE1,GLEMBIA
move.l #TUNEL1I,COORDS_1
move.l #TUNEL1D,datalines
jsr ROTATE
jsr DRAWLINES
move.w SPEED,D0
sub.w D0,GLEMBIA
cmp.w #80,GLEMBIA
bgt BZZ1
move.w #200+120+120+120+120+120+120+120,GLEMBIA
move.b #1,CCBIT
move.w STPOL,ANGLEZ
BZZ1:
move.w GLEMBIA,GLE1
move.w ANGLEZ,BUF1
move.w BUF2,ANGLEZ
move.w ANG2,ANGL
move.w GLE2,GLEMBIA
move.l #TUNEL1I,COORDS_1
move.l #TUNEL1D,datalines
jsr ROTATE
jsr DRAWLINES
move.w SPEED,D0
sub.w D0,GLEMBIA
cmp.w #80,GLEMBIA
bgt BZZ2
move.w #200+120+120+120+120+120+120+120,GLEMBIA
move.b #2,CCBIT
move.w STPOL,ANGLEZ
BZZ2:
move.w GLEMBIA,GLE2
move.w ANGLEZ,BUF2
move.w BUF3,ANGLEZ
move.w ANG3,ANGL
move.w GLE3,GLEMBIA
move.l #TUNEL1I,COORDS_1
move.l #TUNEL1D,datalines
jsr ROTATE
jsr DRAWLINES
move.w SPEED,D0
sub.w D0,GLEMBIA
cmp.w #80,GLEMBIA
bgt BZZ3
move.w #200+120+120+120+120+120+120+120,GLEMBIA
move.b #3,CCBIT
move.w STPOL,ANGLEZ
BZZ3:
move.w GLEMBIA,GLE3
move.w ANGLEZ,BUF3
move.w BUF4,ANGLEZ
move.w ANG4,ANGL
move.w GLE4,GLEMBIA
move.l #TUNEL1I,COORDS_1
move.l #TUNEL1D,datalines
jsr ROTATE
jsr DRAWLINES
move.w SPEED,D0
sub.w D0,GLEMBIA
cmp.w #80,GLEMBIA
bgt BZZ4
move.w #200+120+120+120+120+120+120+120,GLEMBIA
move.b #4,CCBIT
move.w STPOL,ANGLEZ
BZZ4:
move.w GLEMBIA,GLE4
move.w ANGLEZ,BUF4
move.w BUF5,ANGLEZ
move.w ANG5,ANGL
move.w GLE5,GLEMBIA
move.l #TUNEL1I,COORDS_1
move.l #TUNEL1D,datalines
jsr ROTATE
jsr DRAWLINES
move.w SPEED,D0
sub.w D0,GLEMBIA
cmp.w #80,GLEMBIA
bgt BZZ5
move.w #200+120+120+120+120+120+120+120,GLEMBIA
move.b #5,CCBIT
move.w STPOL,ANGLEZ
BZZ5:
move.w GLEMBIA,GLE5
move.w ANGLEZ,BUF5
move.w BUF6,ANGLEZ
move.w ANG6,ANGL
move.w GLE6,GLEMBIA
move.l #TUNEL1I,COORDS_1
move.l #TUNEL1D,datalines
jsr ROTATE
jsr DRAWLINES
move.w SPEED,D0
sub.w D0,GLEMBIA
cmp.w #80,GLEMBIA
bgt BZZ6
move.w #200+120+120+120+120+120+120+120,GLEMBIA
move.b #6,CCBIT
move.w STPOL,ANGLEZ
BZZ6:
move.w GLEMBIA,GLE6
move.w ANGLEZ,BUF6
move.w BUF7,ANGLEZ
move.w ANG7,ANGL
move.w GLE7,GLEMBIA
move.l #TUNEL1I,COORDS_1
move.l #TUNEL1D,datalines
jsr ROTATE
jsr DRAWLINES
move.w SPEED,D0
sub.w D0,GLEMBIA
cmp.w #80,GLEMBIA
bgt BZZ7
move.w #200+120+120+120+120+120+120+120,GLEMBIA
move.b #7,CCBIT
move.w STPOL,ANGLEZ
BZZ7:
move.w GLEMBIA,GLE7
move.w ANGLEZ,BUF7
move.w BUF8,ANGLEZ
move.w ANG8,ANGL
move.w GLE8,GLEMBIA
move.l #TUNEL1I,COORDS_1
move.l #TUNEL1D,datalines
jsr ROTATE
jsr DRAWLINES
move.w SPEED,D0
sub.w D0,GLEMBIA
cmp.w #80,GLEMBIA
bgt BZZ8
move.w #200+120+120+120+120+120+120+120,GLEMBIA
move.b #8,CCBIT
move.w STPOL,ANGLEZ
BZZ8:
move.w GLEMBIA,GLE8
move.w ANGLEZ,BUF8
jsr FILL
blit
rts
CopperList:
dc.w $0120,$0000 ; SpritePointers
dc.w $0122,$0000
dc.w $0124,$0000
dc.w $0126,$0000
dc.w $0128,$0000
dc.w $012a,$0000
dc.w $012c,$0000
dc.w $012e,$0000
dc.w $0130,$0000
dc.w $0132,$0000
dc.w $0134,$0000
dc.w $0136,$0000
dc.w $0138,$0000
dc.w $013a,$0000
dc.w $013c,$0000
dc.w $013e,$0000
COLORMAP:
dc.w $0180,$0000
dc.w $0182,$0CEF
dc.w $0184,$09AB
dc.w $0186,$0555
dc.w $0188,$0222
dc.w $018a,$0000
dc.w $018c,$0111
dc.w $018e,$0333
dc.w $0190,$0F00
dc.w $0192,$0A00
dc.w $0194,$0600
dc.w $0196,$0300
dc.w $0198,$0FC6
dc.w $019a,$0FA0
dc.w $019c,$0F60
dc.w $019e,$0B50
CREDCOLOR: dc.w $01a0,$0000
dc.w $01a2,$0ddd
dc.w $01a4,$0999
dc.w $01a6,$0555
dc.w $01a8,$0000
dc.w $01aa,$0ddd
dc.w $01ac,$0999
dc.w $01ae,$0555
dc.w $01b0,$0000
dc.w $01b2,$0ddd
dc.w $01b4,$0999
dc.w $01b6,$0555
dc.w $01b8,$0000
dc.w $01ba,$0ddd
dc.w $01bc,$0999
dc.w $01be,$0555
SCROLL: dc.w $0102,$0000 ; bplcon1
dc.w $0104,$0024 ; bplcon2
dc.w $0108,$FFD7 ; bpl1mod
dc.w $010a,$FFD7 ; bpl2mod
dc.w $008e,$2c81 ; diwstrt
dc.w $0090,$30C1 ; diwstop
dc.w $0092,$0030 ; ddfstrt
dc.w $0094,$00D0 ; ddfstop
BitMapPtrs:
BITPLAN0 dc.w $00e0,$0000 ; Pointers to BitMap
BITPLAN1 dc.w $00e2,$0000
BITPLAN2 dc.w $00e4,$0000
BITPLAN3 dc.w $00e6,$0000
BITPLAN4 dc.w $00e8,$0000
BITPLAN5 dc.w $00ea,$0000
BITPLAN6 dc.w $00ec,$0000
BITPLAN7 dc.w $00ee,$0000
BITPLAN8 dc.w $00f0,$0000
BITPLAN9 dc.w $00f2,$0000
BITPLAN10 dc.w $00f4,$0000
BITPLAN11 dc.w $00f6,$0000
dc.w $0100,$4a00 ; bplcon0
ZOOMER:
blk.b ILE_REZERWOWAC,00
even
PICTUREKOLO:
incbin "df0:bcr/c1.boc"
even
PICTURE:
incbin "df0:logo1.raw"
even
PALETTE:
incbin "df0:bcr/paletteLOGO.raw"
even
CREDITS:
incbin "df0:bcr/cr1.boc"
even
; SPRITTE SECTION
VIRSPR:
dc.w 0,0,0,0
SPRITTE1:
dc.w 78*$100+70+80,78*$100+65*$100
S1: blk.w 65*2,0 ;$FFFF
dc.l 0
SPRITTE2:
dc.w 78*$100+78+80,78*$100+65*$100
S2: blk.w 65*2,0 ;$FFFF
dc.l 0
SPRITTE3:
dc.w 78*$100+86+80,78*$100+65*$100
S3: blk.w 65*2,0 ;$FFFF
dc.l 0
SPRITTE4:
dc.w 78*$100+94+80,78*$100+65*$100
S4: blk.w 65*2,0 ;$FFFF
dc.l 0
SPRITTE5:
dc.w 78*$100+102+80,78*$100+65*$100
S5: blk.w 65*2,0 ;$FFFF
dc.l 0
SPRITTE6:
dc.w 78*$100+110+80,78*$100+65*$100
S6: blk.w 65*2,0 ;$FFFF
dc.l 0
SPRITTE7:
dc.w 78*$100+118+80,78*$100+65*$100
S7: blk.w 65*2,0 ;$FFFF
dc.l 0
SPRITTE8:
dc.w 78*$100+126+80,78*$100+65*$100
S8: blk.w 65*2,0 ;$FFFF
dc.l 0
CCBIT dc.w 0
START_POSITION: dc.l $2501ff00
END_POSITION: dc.l $fe01ff00
PICTR1: dc.l ILE_DODAC
PICTR2: dc.l OFFSET2*(80)+ILE_DODAC
PICTR3: dc.l OFFSET2*(80*2)+ILE_DODAC
PICTR4: dc.l OFFSET2*(80*3)+ILE_DODAC
PICTR1K: dc.l 0
PICTR2K: dc.l 10240
PICTR3K: dc.l 20480
BUF1: dc.l 0
WAITED: dc.b 1
even
MEM: dc.l 0
GET_C_COLORS_LIST: dc.l 0
GET_C_COLORS_LIST_BUF: dc.l 0
COLOR_WHITE: dc.l 0
CopperListwall:
dc.w $0120,$0000 ; SpritePointers
dc.w $0122,$0000
dc.w $0124,$0000
dc.w $0126,$0000
dc.w $0128,$0000
dc.w $012a,$0000
dc.w $012c,$0000
dc.w $012e,$0000
dc.w $0130,$0000
dc.w $0132,$0000
dc.w $0134,$0000
dc.w $0136,$0000
dc.w $0138,$0000
dc.w $013a,$0000
dc.w $013c,$0000
dc.w $013e,$0000
COLORMAP1:
dc.w $0180,$0000 ; ColorMap
dc.w $0182,$0CEF
dc.w $0184,$09AB
dc.w $0186,$0555
dc.w $0188,$0222
dc.w $018a,$0000
dc.w $018c,$0111
dc.w $018e,$0333
dc.w $0190,$0F00
dc.w $0192,$0A00
dc.w $0194,$0600
dc.w $0196,$0300
dc.w $0198,$0FC6
dc.w $019a,$0FA0
dc.w $019c,$0F60
dc.w $019e,$0B50
dc.w $01a0,$0000
dc.w $01a2,$0FFF
dc.w $01a4,$0FFF
dc.w $01a6,$0FFF
dc.w $01a8,$0000
dc.w $01aa,$0FFF
dc.w $01ac,$0FFF
dc.w $01ae,$0FFF
dc.w $01b0,$0000
dc.w $01b2,$0FFF
dc.w $01b4,$0FFF
dc.w $01b6,$0FFF
dc.w $01b8,$0000
dc.w $01ba,$0FFF
dc.w $01bc,$0FFF
dc.w $01be,$0FFF
dc.w $0102,$0000 ; bplcon1
dc.w $0104,$0024 ; bplcon2
dc.w $0108,$0000 ; bpl1mod
dc.w $010a,$0000 ; bpl2mod
dc.w $008e,$2c81 ; diwstrt
dc.w $0090,$2cC1 ; diwstop
dc.w $0092,$0038 ; ddfstrt
dc.w $0094,$00D0 ; ddfstop
BITPLAN0w dc.w $00e0,$0000 ; Pointers to BitMap
BITPLAN1w dc.w $00e2,$0000
BITPLAN2w dc.w $00e4,$0000
BITPLAN3w dc.w $00e6,$0000
BITPLAN4w dc.w $00e8,$0000
BITPLAN5w dc.w $00ea,$0000
BITPLAN6w dc.w $00ec,$0000
BITPLAN7w dc.w $00ee,$0000
BITPLAN8w dc.w $00f0,$0000
BITPLAN9w dc.w $00f2,$0000
BITPLAN10w dc.w $00f4,$0000
BITPLAN11w dc.w $00f6,$0000
BPL0: dc.w $0100,$5200 ; bplcon0
DC.L $FFFFFFFE
Copper: dc.w $0120,$0000 ; SpritePointers
dc.w $0122,$0000
dc.w $0124,$0000
dc.w $0126,$0000
dc.w $0128,$0000
dc.w $012a,$0000
dc.w $012c,$0000
dc.w $012e,$0000
dc.w $0130,$0000
dc.w $0132,$0000
dc.w $0134,$0000
dc.w $0136,$0000
dc.w $0138,$0000
dc.w $013a,$0000
dc.w $013c,$0000
dc.w $013e,$0000
COLORMAP12:
dc.w $0180,$0666 ; ColorMap
dc.w $0182,$0666
dc.w $0184,$0000
dc.w $0186,$0000
dc.w $0188,$0222
dc.w $018a,$0000
dc.w $018c,$0111
dc.w $018e,$0333
dc.w $0190,$0F00
dc.w $0192,$0A00
dc.w $0194,$0600
dc.w $0196,$0300
dc.w $0198,$0FC6
dc.w $019a,$0FA0
dc.w $019c,$0F60
dc.w $019e,$0B50
dc.w $01a0,$0000
dc.w $01a2,$0FFF
dc.w $01a4,$0FFF
dc.w $01a6,$0FFF
dc.w $01a8,$0000
dc.w $01aa,$0FFF
dc.w $01ac,$0FFF
dc.w $01ae,$0FFF
dc.w $01b0,$0000
dc.w $01b2,$0FFF
dc.w $01b4,$0FFF
dc.w $01b6,$0FFF
dc.w $01b8,$0000
dc.w $01ba,$0FFF
dc.w $01bc,$0FFF
dc.w $01be,$0FFF
dc.w $0102,$0000 ; bplcon1
dc.w $0104,$0024 ; bplcon2
dc.w $0108,$0000 ; bpl1mod
dc.w $010a,$0000 ; bpl2mod
dc.w $008e,$2c81 ; diwstrt
dc.w $0090,$2cC1 ; diwstop
dc.w $0092,$0038 ; ddfstrt
dc.w $0094,$00D0 ; ddfstop
BITPLAN0wl dc.w $00e0,$0000 ; Pointers to BitMap
BITPLAN1wl dc.w $00e2,$0000
BITPLAN2wl dc.w $00e4,$0000
BITPLAN3wl dc.w $00e6,$0000
BITPLAN4wl dc.w $00e8,$0000
BITPLAN5wl dc.w $00ea,$0000
BITPLAN6wl dc.w $00ec,$0000
BITPLAN7wl dc.w $00ee,$0000
BITPLAN8wl dc.w $00f0,$0000
BITPLAN9wl dc.w $00f2,$0000
BITPLAN10wl dc.w $00f4,$0000
BITPLAN11wl dc.w $00f6,$0000
dc.w $0100,$1200 ; bplcon0
dc.w $6001,$FF00
BLIB1 dc.w $180,$666
dc.w $182,$666
dc.w $f001,$FF00
BLIB2 dc.w $180,$666
dc.w $182,$666
DC.L $FFFFFFFE
PALETTE1:
dc.w $000,$000,$000,$000,$000,$000,$000,$000
dc.w $09c,$000,$055,$077,$099,$0bb,$0dd,$0ff
dc.w $09c,$000,$055,$077,$099,$0bb,$0dd,$0ff
dc.w $069,$000,$022,$044,$066,$088,$0AA,$0CC
PALETTE2:
dc.w $069,$000,$022,$044,$066,$088,$0AA,$0CC
dc.w $022,$000,$022,$044,$066,$088,$0AA,$0CC
dc.w $022,$022,$022,$022,$022,$022,$022,$022
dc.w $000,$000,$022,$044,$066,$088,$0AA,$0CC
PALETTE4:
dc.w $069,$000,$022,$044,$066,$088,$0AA,$0CC
dc.w $022,$022,$022,$022,$022,$022,$022,$022
dc.w $022,$000,$022,$044,$066,$088,$0AA,$0CC
dc.w $000,$000,$022,$044,$066,$088,$0AA,$0CC
PALETTE6:
dc.w $000,$111,$222,$333,$444,$555,$666,$777
dc.w $888,$999,$aaa,$bbb,$ccc,$ddd,$eee,$fff
dc.w $000,$111,$222,$333,$444,$555,$666,$777
dc.w $888,$999,$aaa,$bbb,$ccc,$ddd,$eee,$fff
******************************************
*** LINE OBJECT IN FORMAT VECTOR EDIT. ***
******************************************
H1:
dc.w 67
dc.w 160-56,133-127,0
dc.w 160-58,146-127,0
dc.w 160-69,145-127,0
dc.w 160-71,151-127,0
dc.w 160-60,154-127,0
dc.w 160-58,174-127,0
dc.w 160-102,153-127,0
dc.w 160-99,143-127,0
dc.w 160-81,149-127,0
dc.w 160-80,143-127,0
dc.w 160-98,140-127,0
dc.w 160-97,130-127,0 ;H
dc.w 160-74,186-127,0
dc.w 160-85,198-127,0
dc.w 160-128,181-127,0
dc.w 160-116,172-127,0
dc.w 160-98,182-127,0
dc.w 160-95,179-127,0
dc.w 160-108,162-127,0
dc.w 160-103,154-127,0 ;A
dc.w 160-85,189-127,0
dc.w 160-93,186-127,0
dc.w 160-90,182-127,0 ;/\
dc.w 160-92,206-127,0
dc.w 160-100,212-127,0
dc.w 160-113,206-127,0
dc.w 160-110,218-127,0
dc.w 160-123,224-127,0
dc.w 160-130,183-127,0 ;V
dc.w 160-126,225-127,0
dc.w 160-144,230-127,0
dc.w 160-146,222-127,0
dc.w 160-137,220-127,0
dc.w 160-138,217-127,0
dc.w 160-144,219-127,0
dc.w 160-147,211-127,0
dc.w 160-141,208-127,0
dc.w 160-142,205-127,0
dc.w 160-157,211-127,0
dc.w 160-160,190-127,0
dc.w 160-137,186-127,0 ;E
dc.w 160-194,225-127,0
dc.w 160-214,215-127,0
dc.w 160-203,174-127,0
dc.w 160-192,181-127,0
dc.w 160-197,200-127,0
dc.w 160-194,201-127,0
dc.w 160-185,185-127,0
dc.w 160-173,189-127,0
dc.w 160-203,214-127,0
dc.w 160-201,205-127,0
dc.w 160-196,207-127,0
dc.w 160-243,189-127,0
dc.w 160-259,157-127,0
dc.w 160-220,146-127,0
dc.w 160-217,154-127,0
dc.w 160-237,164-127,0
dc.w 160-235,167-127,0
dc.w 160-216,157-127,0
dc.w 160-211,164-127,0
dc.w 160-262,147-127,0
dc.w 160-264,133-127,0
dc.w 160-252,132-127,0
dc.w 160-250,145-127,0
dc.w 160-246,145-127,0
dc.w 160-248,132-127,0
dc.w 160-223,130-127,0
dc.w 160-222,141-127,0
H1D:
dc.w 67
dc.w 0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,0
dc.w 12,13,13,14,14,15,15,16,16,17,17,18,18,19,19,12
dc.w 20,21,21,22,22,20
dc.w 23,24,24,25,25,26,26,27,27,28,28,23
dc.w 29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38
dc.w 38,39,39,40,40,29
dc.w 41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,41
dc.w 49,50,50,51,51,49
dc.w 52,53,53,54,54,55,55,56,56,57,57,58,58,59,59,52
dc.w 60,61,61,62,62,63,63,60,64,65,65,66,66,67,67,64
H2:
dc.w 54
dc.w 160-264,121-127,0
dc.w 160-256,89-127,0
dc.w 160-244,92-127,0
dc.w 160-249,113-127,0
dc.w 160-241,114-127,0
dc.w 160-234,93-127,0
dc.w 160-217,100-127,0
dc.w 160-223,124-127,0 ;C
dc.w 160-251,77-127,0
dc.w 160-228,49-127,0
dc.w 160-221,57-127,0
dc.w 160-231,69-127,0
dc.w 160-229,71-127,0
dc.w 160-222,63-127,0
dc.w 160-215,70-127,0
dc.w 160-222,77-127,0
dc.w 160-220,79-127,0
dc.w 160-207,63-127,0
dc.w 160-197,75-127,0
dc.w 160-216,97-127,0 ;E
dc.w 160-182,25-127,0
dc.w 160-152,23-127,0
dc.w 160-142,37-127,0
dc.w 160-142,51-127,0
dc.w 160-153,64-127,0
dc.w 160-175,66-127,0 ;D
dc.w 160-169,33-127,0
dc.w 160-159,32-127,0
dc.w 160-154,38-127,0
dc.w 160-154,45-127,0
dc.w 160-160,50-127,0
dc.w 160-166,50-127,0 ; srodek D
dc.w 160-120,31-127,0
dc.w 160-103,40-127,0
dc.w 160-114,84-127,0
dc.w 160-126,73-127,0
dc.w 160-121,59-127,0
dc.w 160-126,56-127,0
dc.w 160-133,70-127,0
dc.w 160-146,66-127,0 ;A
dc.w 160-113,39-127,0
dc.w 160-116,54-127,0
dc.w 160-123,50-127,0 ;srodek A
dc.w 160-94,56-127,0
dc.w 160-83,56-127,0
dc.w 160-87,78-127,0
dc.w 160-68,78-127,0
dc.w 160-68,92-127,0
dc.w 160-92,87-127,0
dc.w 160-105,96-127,0
dc.w 160-111,87-127,0 ;Y
dc.w 160-98,77-127,0
dc.w 160-91,104-127,0
dc.w 160-71,111-127,0
dc.w 160-78,121-127,0 ;trojkat
H2D:
dc.w 54
dc.w 0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,0
dc.w 8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,16,16,17,17
dc.w 18,18,19,19,8
dc.w 20,21,21,22,22,23,23,24,24,25,25,20
dc.w 26,27,27,28,28,29,29,30,30,31,31,26
dc.w 32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,32
dc.w 40,41,41,42,42,40
dc.w 43,44,44,45,45,46,46,47,47,48,48,49,49,50,50,51,51,43
dc.w 52,53,53,54,54,52
WAL1I:
dc.w 26
dc.w 180-60,160,0
dc.w 180-60,100,0
dc.w 220-60,100,0
dc.w 220-60,80,0
dc.w 240-60,80,0
dc.w 240-60,80,0
dc.w 240-60,60,0
dc.w 180-60,60,0
dc.w 180-60,40,0
dc.w 200-60,40,0
dc.w 200-60,20,0
dc.w 240-60,20,0
dc.w 240-60,0,0
dc.w 180-60,0,0
dc.w 180-60,-20,0
dc.w 220-60,-20,0
dc.w 220-60,-40,0
dc.w 260-60,-40,0
dc.w 260-60,-60,0
dc.w 200-60,-60,0
dc.w 200-60,-80,0
dc.w 240-60,-80,0
dc.w 240-60,-100,0
dc.w 180-60,-100,0
dc.w 180-60,-160,0
dc.w 260-60,-160,0
dc.w 260-60,160,0
WAL1D:
dc.w 26
dc.w 0,1,1,2,2,3,3,4,4,5
dc.w 5,6,6,7,7,8,8,9,9,10
dc.w 10,11,11,12,12,13,13,14,14,15
dc.w 15,16,16,17,17,18,18,19,19,20
dc.w 20,21,21,22,22,23,23,24,24,25
dc.w 25,26,26,0
WAL2I:
dc.w 25
dc.w -240+60,160,0
dc.w -240+60,100,0
dc.w -200+60,100,0
dc.w -200+60,80,0
dc.w -180+60,80,0
dc.w -180+60,60,0
dc.w -240+60,60,0
dc.w -240+60,40,0
dc.w -220+60,40,0
dc.w -220+60,20,0
dc.w -180+60,20,0
dc.w -180+60,0,0
dc.w -240+60,0,0
dc.w -240+60,-20,0
dc.w -200+60,-20,0
dc.w -200+60,-40,0
dc.w -160+60,-40,0
dc.w -160+60,-60,0
dc.w -220+60,-60,0
dc.w -220+60,-80,0
dc.w -180+60,-80,0
dc.w -180+60,-100,0
dc.w -240+60,-100,0
dc.w -240+60,-160,0
dc.w -260+60,-160,0
dc.w -260+60,160,0
WAL2D:
dc.w 25
dc.w 0,1,1,2,2,3,3,4,4,5
dc.w 5,6,6,7,7,8,8,9,9,10
dc.w 10,11,11,12,12,13,13,14,14,15
dc.w 15,16,16,17,17,18,18,19,19,20
dc.w 20,21,21,22,22,23,23,24,24,25
dc.w 25,0
TUNEL1I:
dc.w 31
dc.w -60,80,-20
dc.w -100,80,-20
dc.w -100,80,20
dc.w -60,80,20
dc.w -60,-80,-20
dc.w -100,-80,-20
dc.w -100,-80,20
dc.w -60,-80,20
dc.w 100,-80,-20
dc.w 60,-80,-20
dc.w 60,-80,20
dc.w 100,-80,20
dc.w 100,80,-20
dc.w 60,80,-20
dc.w 60,80,20
dc.w 100,80,20
dc.w 60,120,20
dc.w 60,80,20
dc.w 60,80,-20
dc.w 60,120,-20
dc.w -60,120,20
dc.w -60,80,20
dc.w -60,80,-20
dc.w -60,120,-20
dc.w -60,-80,20
dc.w -60,-120,20
dc.w -60,-120,-20
dc.w -60,-80,-20
dc.w 60,-80,20
dc.w 60,-120,20
dc.w 60,-120,-20
dc.w 60,-80,-20
TUNEL1D:
dc.w 31
dc.w 0,1,1,2,2,3,3,0,4,5
dc.w 5,6,6,7,7,4,8,9,9,10
dc.w 10,11,11,8,12,13,13,14,14,15
dc.w 15,12,16,17,17,18,18,19,19,16
dc.w 20,21,21,22,22,23,23,20,24,25
dc.w 25,26,26,27,27,24,28,29,29,30
dc.w 30,31,31,28
TABLE_DRAW: dc.l 0
************************
*** SIN & COS TABLES ***
************************
sintable:
dc.w 1,-5,-12,-18,-24,-30,-37,-43
dc.w -49,-55,-61,-67,-73,-79,-85,-91
dc.w -97,-103,-108,-114,-120,-125,-131,-136
dc.w -141,-146,-151,-156,-161,-166,-171,-176
dc.w -180,-184,-189,-193,-197,-201,-205,-208
dc.w -212,-215,-219,-222,-225,-228,-230,-233
dc.w -236,-238,-240,-242,-244,-246,-247,-249
dc.w -250,-251,-252,-253,-254,-254,-255,-255
dc.w -255,-255,-255,-254,-254,-253,-252,-251
dc.w -250,-249,-247,-246,-244,-242,-240,-238
dc.w -236,-233,-230,-228,-225,-222,-219,-215
dc.w -212,-208,-205,-201,-197,-193,-189,-184
dc.w -180,-176,-171,-166,-161,-156,-151,-146
dc.w -141,-136,-131,-125,-120,-114,-108,-103
dc.w -97,-91,-85,-79,-73,-67,-61,-55
dc.w -49,-43,-37,-30,-24,-18,-12,-5
dc.w 1,6,13,19,25,31,38,44
dc.w 50,56,62,68,74,80,86,92
dc.w 98,104,109,115,121,126,132,137
dc.w 142,147,152,158,162,167,172,177
dc.w 181,185,190,194,198,202,206,209
dc.w 213,216,220,223,226,229,231,234
dc.w 237,239,241,243,245,247,248,250
dc.w 251,252,253,254,255,255,256,256
dc.w 256,256,256,255,255,254,253,252
dc.w 251,250,248,247,245,243,241,239
dc.w 237,234,231,229,226,223,220,216
dc.w 213,209,206,202,198,194,190,185
dc.w 181,177,172,167,162,157,152,147
dc.w 142,137,132,126,121,115,109,104
dc.w 98,92,86,80,74,68,62,56
dc.w 50,44,38,31,25,19,13,6
costable:
dc.w 256,256,256,255,255,254,253,252
dc.w 251,250,248,247,245,243,241,239
dc.w 237,234,231,229,226,223,220,216
dc.w 213,209,206,202,198,194,190,185
dc.w 181,177,172,167,162,157,152,147
dc.w 142,137,132,126,121,115,109,104
dc.w 98,92,86,80,74,68,62,56
dc.w 50,44,38,31,25,19,13,6
dc.w 1,-5,-12,-18,-24,-30,-37,-43
dc.w -49,-55,-61,-67,-73,-79,-85,-91
dc.w -97,-103,-108,-114,-120,-125,-131,-136
dc.w -141,-146,-151,-156,-161,-166,-171,-176
dc.w -180,-184,-189,-193,-197,-201,-205,-208
dc.w -212,-215,-219,-222,-225,-228,-230,-233
dc.w -236,-238,-240,-242,-244,-246,-247,-249
dc.w -250,-251,-252,-253,-254,-254,-255,-255
dc.w -255,-255,-255,-254,-254,-253,-252,-251
dc.w -250,-249,-247,-246,-244,-242,-240,-238
dc.w -236,-233,-230,-228,-225,-222,-219,-215
dc.w -212,-208,-205,-201,-197,-193,-189,-184
dc.w -180,-176,-171,-166,-161,-156,-151,-146
dc.w -141,-136,-131,-125,-120,-114,-108,-103
dc.w -97,-91,-85,-79,-73,-67,-61,-55
dc.w -49,-43,-37,-30,-24,-18,-12,-5
dc.w 1,6,13,19,25,31,38,44
dc.w 50,56,62,68,74,80,86,92
dc.w 98,104,109,115,121,126,132,137
dc.w 142,147,152,158,162,167,172,177
dc.w 181,185,190,194,198,202,206,209
dc.w 213,216,220,223,226,229,231,234
dc.w 237,239,241,243,245,247,248,250
dc.w 251,252,253,254,255,255,256,256
PLANE: DC.L 0
SPEED dc.w 30
GLEMBIA dc.w 0
ODLICZ dc.w 0
BUFOR1 dc.w 0
BUFOR2 dc.w 0
OBR dc.w 0
ANGL dc.w 0
ANGX dc.w 0
ANGY dc.w 0
XPZ dc.w 156
YPZ dc.w 124
ANG1 dc.w 0
GLE1 dc.w 200
BUF2 dc.w 0
ANG2 dc.w 0
GLE2 dc.w 200+120
BUF3 dc.w 0
ANG3 dc.w 0
GLE3 dc.w 200+120+120
BUF4 dc.w 0
ANG4 dc.w 0
GLE4 dc.w 200+120+120+120
BUF5 dc.w 0
ANG5 dc.w 0
GLE5 dc.w 200+120+120+120+120
BUF6 dc.w 0
ANG6 dc.w 0
GLE6 dc.w 200+120+120+120+120+120
BUF7 dc.w 0
ANG7 dc.w 0
GLE7 dc.w 200+120+120+120+120+120+120
BUF8 dc.w 0
ANG8 dc.w 0
GLE8 dc.w 200+120+120+120+120+120+120+120
STPOL dc.w 0
COORDS_1: dc.l 0
datalines: dc.l 0
ROTBUF dc.w 0
ADRES_PAMIECI dc.l 0
creditsa dc.l 0
ANGB dc.w 0
bjb dc.l 0