frenzy/pattern.asm

1007 lines
14 KiB
NASM

B>type pattern.asm
.title "PATTERNS"
.sbttl "FRENZY"
.ident PATERN
;~~~~~~~~~~~~~
; PATTERNS
;_____________
HSIZE == 32
; Macros
.define ANIMATE[P2]=[
..Loop: .word P2
.word 0,..Loop
]
.define P1[A]=
[.byte ^B'A
]
.define P2[A]=
[.byte ^B'A>8,^B'A&255
]
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; Robot Animation TABLES
;_______________________________
R.LAY:: .WORD RL0,RL1,RL2,RL3,RL4,RL5,RL6,RL7,RL8,RL9
R.0:: .word R.0A,R.0B,R.0C,R.0D,R.0E
.word R.0H,R.0H,R.0H,R.0H,R.0H
.word R.0I,R.0J,R.0K
.word 0,R.0
R.1::
R.3::
R.2:: ANIMATE (R.2A,R.2B,R.2C)
R.4:: ANIMATE (R.4A,R.4B,R.4C)
R.5::
R.7::
R.6:: ANIMATE (R.6A,R.6B,R.6C)
R.8:: ANIMATE (R.8A,R.8B,R.8C)
; explosion animation
R.9:: .word R.9A,R.9B,R.9C
..Loop: .word R.9D,00,..Loop
S.0:: ANIMATE (S.0A,S.0A)
S.2:: ANIMATE (S.2A,S.2B,S.2A,S.2C)
S.4:: ANIMATE (S.4A,S.4B,S.4A,S.4C)
S.6:: ANIMATE (S.6A,S.6B,S.6A,S.6C)
S.8:: ANIMATE (S.8A,S.8B,S.8A,S.8C)
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; Man Animation TABLES
;_______________________________
MS.0::
M.0:: ANIMATE (M.0A,M.0A)
M.2::
M.3::
M.4::
M.8::
M.1:: ANIMATE (M.1C,M.1C,M.1A,M.1A,M.1B,M.1B)
M.5::
M.7::
M.6:: ANIMATE (M.6C,M.6C,M.6A,M.6A,M.6B,M.6B)
; Man Electrocution
M.9:: ANIMATE (M.9B,M.9A,M.9C,M.9D)
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; Man Shooting Animation Tables
;_______________________________
MS.1:: ANIMATE (MS.1A,MS.1A)
MS.2:: ANIMATE (MS.2A,MS.2A)
MS.3:: ANIMATE (MS.3A,MS.3A)
MS.4:: ANIMATE (MS.4A,MS.4A)
MS.5:: ANIMATE (MS.5A,MS.5A)
MS.6:: ANIMATE (MS.6A,MS.6A)
MS.7:: ANIMATE (MS.7A,MS.7A)
MS.8:: ANIMATE (MS.8A,MS.8A)
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; "Otto's" Animation Table
;_______________________________
; SUPER ROBOT
SR.0:: .word SR.0A,SR.0B,SR.0C,SR.0D,SR.0E,SR.0F
..Loop: .word SR.0M,SR.0H,SR.0I,SR.0J,SR.0K,SR.0J,SR.0I,SR.0H
.word 0,..Loop
SR.1:: ANIMATE (SR.1M,SR.1H,SR.1I,SR.1J,SR.1K,SR.1J,SR.1I,SR.1H)
SR.2:: ANIMATE (SR.2M,SR.2H,SR.2I,SR.2J,SR.2K,SR.2J,SR.2I,SR.2H)
;Death
SR.3:: .word SR.2J,SR.2K,SR.2J,SR.2I,SR.2H
.word SR.3A,SR.3B,SR.3C,SR.3D
..Loop: .word R.9D
.word 0,..Loop
;~~~~~~~~~~~~~~~~~~~~~~~~~~
; Robot Factory animations
;__________________________
;conveyor
C.PART:: .word C.A,C.B,C.C,C.D,C.E,C.F,C.G ;falls into idle
C.IDLE::ANIMATE (C.H,C.A)
;Crank Handle
H.GO:: ANIMATE (H.A,H.B,H.C,H.D,H.E,H.D,H.C,H.B)
H.IDLE::ANIMATE (H.A,H.A)
;Whirlies
W.CW:: ANIMATE (W.A,W.B,W.C,W.D,W.E,W.F,W.G,W.H,W.I,W.J,W.K,W.L)
W.CCW:: ANIMATE (W.L,W.K,W.J,W.I,W.H,W.G,W.F,W.E,W.D,W.C,W.B,W.A)
TRCCW:: ANIMATE (TR.1,TR.2,TR.3,TR.4)
CMS:: ANIMATE (GI,X1,Y5,GO,Y5,GI,X1,GO)
; computer mouth death animation
CMDIE:: .WORD CM.0,CM.1,CM.2,CM.3,CM.4,CM.5
..Loop: .WORD CM.6,0,..Loop
CMouth::ANIMATE (CM.A,CM.0,CM.1,CM.2,CM.1,CM.0)
TL:: ANIMATE (TL.0,R.9D,R.9D,TL.1,R.9D,TL.2,TL.3,TL.4,R.9D)
BL:: ANIMATE (R.9D,BL.0,BL.1,BL.2,R.9D,R.9D,R.9D,BL.3,BL.4,BL.5,R.9D)
; END OF PROGRAM SPACE
AEND::
;-------------------------------
.LOC .DATA.
BYTE5:: .byte 0 ;xsum byte
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; Patterns
; Patterns are encoded as an array, X varying fastest
; Preceding the array are the 'size bytes' X first then Y.
;
; Robot's Patterns
;_______________________________
; ROVING EYE SLOT
R.0A: .byte 1,11
P1 00111100
P1 01111110
P1 11000111
P1 11010111
P1 11000111
P1 01111110
P1 00111100
P1 11011011
P1 01111110
P1 11111111
P1 01011010
R.0B: .byte 1,11
P1 00111100
P1 01111110
P1 11100011
P1 11101011
P1 11100011
P1 01111110
P1 00111100
P1 11011011
P1 01111110
P1 11111111
P1 01011010
R.0C: .byte 1,11
P1 00111100
P1 01111110
P1 11110001
P1 11110101
P1 11110001
P1 01111110
P1 00111100
P1 11011011
P1 01111110
P1 11111111
P1 01011010
R.0D: .byte 1,11
P1 00111100
P1 01111110
P1 11111000
P1 11111010
P1 11111000
P1 01111110
P1 00111100
P1 11011011
P1 01111110
P1 11111111
P1 01011010
R.0E: .byte 1,11
P1 00111100
P1 01111110
P1 11111100
P1 11111101
P1 11111100
P1 01111110
P1 00111100
P1 11011011
P1 01111110
P1 11111111
P1 01011010
R.0H: .byte 1,11
P1 00111100
P1 01111110
P1 11111111
P1 11111111
P1 11111111
P1 01111110
P1 00111100
P1 11011011
P1 01111110
P1 11111111
P1 01011010
R.0I: .byte 1,11
P1 00111100
P1 01111110
P1 00111111
P1 10111111
P1 00111111
P1 01111110
P1 00111100
P1 11011011
P1 01111110
P1 11111111
P1 01011010
R.0J: .byte 1,11
P1 00111100
P1 01111110
P1 00011111
P1 01011111
P1 00011111
P1 01111110
P1 00111100
P1 11011011
P1 01111110
P1 11111111
P1 01011010
R.0K: .byte 1,11
P1 00111100
P1 01111110
P1 10001111
P1 10101111
P1 10001111
P1 01111110
P1 00111100
P1 11011011
P1 01111110
P1 11111111
P1 01011010
;ROBOT moving Right
R.2A: .byte 1,11
P1 00111100
P1 01111110
P1 11110001
P1 11110101
P1 11110001
P1 01111110
P1 00111100
P1 11011011
P1 01111110
P1 11111111
P1 01011010
R.2B: .byte 1,11
P1 00111100
P1 01111110
P1 11110001
P1 11110101
P1 11110001
P1 01111110
P1 00111100
P1 01101101
P1 11111111
P1 11111110
P1 00110110
R.2C: .byte 1,11
P1 00111100
P1 01111110
P1 11110001
P1 11110101
P1 11110001
P1 01111110
P1 00111100
P1 10110110
P1 11111111
P1 01111111
P1 01101100
;ROBOT MOVING LEFT
R.6A: .byte 1,11
P1 00111100
P1 01111110
P1 10001111
P1 10101111
P1 10001111
P1 01111110
P1 00111100
P1 11011011
P1 01111110
P1 11111111
P1 01011010
R.6B: .byte 1,11
P1 00111100
P1 01111110
P1 10001111
P1 10101111
P1 10001111
P1 01111110
P1 00111100
P1 10110110
P1 11111111
P1 01111111
P1 01101100
R.6C: .byte 1,11
P1 00111100
P1 01111110
P1 10001111
P1 10101111
P1 10001111
P1 01111110
P1 00111100
P1 01101101
P1 11111111
P1 11111110
P1 00110110
;ROBOT MOVING UP
R.8A: .byte 1,11
P1 00111100
P1 01111110
P1 11111111
P1 11111111
P1 11111111
P1 01111110
P1 00111100
P1 11111111
P1 00011111
P1 11111000
P1 11100111
R.8B: .byte 1,11
P1 00111100
P1 01111110
P1 11111111
P1 11111111
P1 11111111
P1 01111110
P1 00111100
P1 00011111
P1 11111000
P1 11111111
P1 00000111
R.8C: .byte 1,11
P1 00111100
P1 01111110
P1 11111111
P1 11111111
P1 11111111
P1 01111110
P1 00111100
P1 11111000
P1 11111111
P1 00011111
P1 11100000
;ROBOT MOVING DOWN
R.4A: .byte 1,11
P1 00111100
P1 01111110
P1 11111111
P1 11000111
P1 11010111
P1 01000110
P1 00111100
P1 11111111
P1 00011111
P1 11111000
P1 11100111
R.4B: .byte 1,11
P1 00111100
P1 01111110
P1 11111111
P1 11000111
P1 11010111
P1 01000110
P1 00111100
P1 11111000
P1 11111111
P1 00011111
P1 11100000
R.4C: .byte 1,11
P1 00111100
P1 01111110
P1 11111111
P1 11000111
P1 11010111
P1 01000110
P1 00111100
P1 00011111
P1 11111000
P1 11111111
P1 00000111
;ROBOT BLOWS UP
R.9A: .byte 2,17
.word 0,0,0,0,0,0
P2 0000001111000000
P2 0000011111100000
P2 0000111101111000
P2 0001001111001000
P2 0000101011010000
P2 0000001101000000
P2 0011001111001100
P2 0000100111110000
P2 0000001001001000
P2 0001111001111000
P2 0000011001100000
R.9B: .byte 2,17
.word 0,0,0,0
P2 0000001111000000
P2 0000011001100000
P2 0001001001001000
P2 0000100010010000
P2 0001000000001000
P2 0010001001000100
P2 0010010001001000
P2 0000101010010000
P2 0001001101100000
P2 0000100000011000
P2 0001010000100000
P2 0000001001000000
P2 0000011001100000
R.9C: .byte 2,19
.word 0
P2 0000001000000000
P2 0000000000100000
P2 0000000100001000
P2 0001000000000000
P2 0000001001000000
P2 0010000000010010
P2 0000100000000001
P2 1000000000100000
P2 0000100010000010
P2 0100000000000010
P2 0000010000010000
P2 0010000100000000
P2 0000100000000100
P2 0010000000000010
P2 0000010000001000
P2 0010000000100000
P2 0001000000001000
P2 0001100000001100
R.9D:: .byte 1,1
.byte 0
;super robot patterns
.define DROP[Down]=[
.word (Down)+8000H
]
SR.0A: DROP 16*HSIZE
.byte 1,2
P1 00011000
P1 00011000
SR.0B: DROP 16*HSIZE
.byte 1,3
P1 00010000
P1 00111000
P1 00010000
SR.0C: DROP 16*HSIZE
.byte 1,4
P1 00010000
P1 00111000
P1 00111000
P1 00010000
SR.0D: DROP 16*HSIZE
.byte 1,5
P1 00011000
P1 00111100
P1 00111100
P1 00111100
P1 00011000
SR.0E: DROP 16*HSIZE
.byte 1,6
P1 00111000
P1 01111100
P1 01111100
P1 01111100
P1 01111100
P1 00111000
SR.0F: DROP 16*HSIZE
.byte 1,7
P1 00111000
P1 01111100
P1 11111110
P1 11111110
P1 11111110
P1 01111100
P1 00011100
SR.0G: DROP 16*HSIZE
.byte 1,8
P1 00011000
P1 01111110
P1 01011010
P1 11111111
P1 11111111
P1 01111110
P1 01111110
P1 00011000
SR.0H: DROP 8*HSIZE
.byte 1,10
P1 00011000
P1 01111110
P1 01111110
P1 11011011
P1 11111111
P1 10111101
P1 11011011
P1 01100110
P1 01111110
P1 00011000
SR.0I: DROP 4*HSIZE
.byte 1,10
P1 00011000
P1 01111110
P1 01111110
P1 11011011
P1 11111111
P1 10111101
P1 11011011
P1 01100110
P1 01111110
P1 00011000
SR.0J: DROP 2*HSIZE
.byte 1,10
P1 00011000
P1 01111110
P1 01111110
P1 11011011
P1 11111111
P1 10111101
P1 11011011
P1 01100110
P1 01111110
P1 00011000
SR.0K: .byte 1,10
P1 00011000
P1 01111110
P1 01111110
P1 11011011
P1 11111111
P1 10111101
P1 11011011
P1 01100110
P1 01111110
P1 00011000
SR.1M:
SR.2M:
SR.0M: DROP 16*HSIZE
.byte 1,9
.byte 0,0,0
P1 00111100
P1 01011010
P1 11111111
P1 11111111
P1 11000011
P1 01111110
SR.1H: DROP 8*HSIZE
.byte 1,10
P1 00011000
P1 01111110
P1 01111110
P1 11011011
P1 11111111
P1 11111111
P1 11000011
P1 01111110
P1 01111110
P1 00011000
SR.1I: DROP 4*HSIZE
.byte 1,10
P1 00011000
P1 01111110
P1 01111110
P1 11011011
P1 11111111
P1 11111111
P1 11000011
P1 01111110
P1 01111110
P1 00011000
SR.1J: DROP 2*HSIZE
.byte 1,10
P1 00011000
P1 01111110
P1 01111110
P1 11011011
P1 11111111
P1 11111111
P1 11000011
P1 01111110
P1 01111110
P1 00011000
SR.1K: .byte 1,10
P1 00011000
P1 01111110
P1 01111110
P1 11011011
P1 11111111
P1 11111111
P1 11000011
P1 01111110
P1 01111110
P1 00011000
SR.2H: DROP 8*HSIZE
.byte 1,10
P1 00011000
P1 01111110
P1 01111110
P1 11011011
P1 11111111
P1 11111111
P1 11100111
P1 01011010
P1 01111110
P1 00011000
SR.2I: DROP 4*HSIZE
.byte 1,10
P1 00011000
P1 01111110
P1 01111110
P1 11011011
P1 11111111
P1 11111111
P1 11100111
P1 01011010
P1 01111110
P1 00011000
SR.2J: DROP 2*HSIZE
.byte 1,10
P1 00011000
P1 01111110
P1 01111110
P1 11011011
P1 11111111
P1 11111111
P1 11100111
P1 01011010
P1 01111110
P1 00011000
SR.2K: .byte 1,10
P1 00011000
P1 01111110
P1 01111110
P1 11011011
P1 11111111
P1 11111111
P1 11100111
P1 01011010
P1 01111110
P1 00011000
SR.3A: DROP 16*HSIZE
.byte 1,9
.byte 0,0,0,0,0
P1 00111100
P1 01011010
P1 11000011
P1 11111111
SR.3B: DROP 16*HSIZE
.byte 1,9
.byte 0,0,0,0,0,0
P1 00111100
P1 01011010
P1 11111111
SR.3C: DROP 16*HSIZE
.byte 1,9
.byte 0,0,0,0,0,0,0
P1 00111100
P1 11111111
SR.3D: DROP 16*HSIZE
.byte 1,9
.byte 0,0,0,0,0,0,0,0
P1 11111111
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; Man's Patterns
;_______________________________
M.0A: .byte 1,16
P1 00011000
P1 00011000
P1 00000000
P1 00111100
P1 01011010
P1 01011010
P1 01011010
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011100
P1 00011000
M.1A: .byte 1,16
P1 00011000
P1 00011000
P1 00000000
P1 00111100
P1 01011010
P1 10011010
P1 01011001
P1 00011000
P1 00011000
P1 00100100
P1 00100010
P1 01000001
P1 01000001
P1 10000001
P1 10000001
P1 11000000
M.1B: .byte 1,16
P1 00000000
P1 00011000
P1 00011000
P1 00000000
P1 00111100
P1 01011100
P1 01011010
P1 00111010
P1 00011000
P1 00011000
P1 00010100
P1 00010010
P1 11110010
P1 10000010
P1 00000010
P1 00000011
M.1C: .byte 1,16
P1 00011000
P1 00011000
P1 00000000
P1 00111100
P1 00111100
P1 00111100
P1 00011010
P1 00011000
P1 00011000
P1 00001100
P1 00001010
P1 00001111
P1 01111000
P1 01001000
P1 00001000
P1 00001100
M.6A: .byte 1,16
P1 00011000
P1 00011000
P1 00000000
P1 00111100
P1 01011010
P1 01011001
P1 10011010
P1 00011000
P1 00011000
P1 00100100
P1 01000100
P1 10000010
P1 10000010
P1 10000001
P1 10000001
P1 00000011
;
M.6B: .byte 1,16
.byte 0
P1 00011000
P1 00011000
P1 00000000
P1 00111100
P1 00111010
P1 00111010
P1 11011100
P1 00011000
P1 00011000
P1 00101000
P1 01001000
P1 01001111
P1 01000001
P1 01000000
P1 10000000
;
M.6C: .byte 1,16
P1 00011000
P1 00011000
.byte 0
P1 00111100
P1 00111100
P1 00111100
P1 01011000
P1 00011000
P1 00011000
P1 00110000
P1 01010000
P1 11110000
P1 00011110
P1 00010010
P1 00010000
P1 00110000
; NORMAL
M.9A: .byte 1,16
.byte 0
P1 00011000
P1 00011000
P1 00000000
P1 00111100
P1 01011010
P1 01011010
P1 01011010
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00111100
; OUTLINE
M.9B: .byte 1,17
P1 00011000
P1 00100100
P1 00100100
P1 01000010
P1 10000001
P1 10000001
P1 10000001
P1 10000001
P1 10000001
P1 01000010
P1 00100100
P1 00100100
P1 00100100
P1 00100100
P1 00100100
P1 01000010
P1 00111100
; NEGATIVE
M.9C: .byte 1,17
P1 00011000
P1 00100100
P1 00100100
P1 01111110
P1 11000011
P1 10100101
P1 10100101
P1 10100101
P1 11100111
P1 01100110
P1 00100100
P1 00100100
P1 00100100
P1 00100100
P1 01100110
P1 01000010
P1 00111100
; BIG BLOCK
M.9D: .byte 1,17
P1 00111100
P1 00111100
P1 00111100
P1 01111110
P1 11111111
P1 11111111
P1 11111111
P1 11111111
P1 11111111
P1 01111110
P1 00111100
P1 00111100
P1 00111100
P1 00111100
P1 01111110
P1 01111110
P1 01111110
; SHOOTING PATTERNS
MS.1A: .byte 1,15
P1 00011000
P1 00011001
P1 00000010
P1 00011100
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011100
MS.2A: .byte 1,15
P1 00011000
P1 00011000
P1 00000000
P1 00011111
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011100
MS.3A: .byte 1,15
P1 00011000
P1 00011000
P1 00000000
P1 00011000
P1 00011000
P1 00011100
P1 00011010
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011100
MS.4A: .byte 1,15
P1 00011000
P1 00011000
P1 00000000
P1 00111100
P1 00111100
P1 00111010
P1 00111010
P1 00111010
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011100
MS.5A: .byte 1,15
P1 00011000
P1 00011000
P1 00000000
P1 00111100
P1 00111100
P1 01011100
P1 10011100
P1 00011100
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00111000
MS.6A: .byte 1,15
P1 00011000
P1 00011000
P1 00000000
P1 11111000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00111000
MS.7A: .byte 1,15
P1 10011000
P1 01011000
P1 00100000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00111000
MS.8A: .byte 1,15
P1 00011000
P1 00011000
P1 00000000
P1 00011101
P1 00011011
P1 00011001
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011000
P1 00011100
.INSERT CHARSET
.INSERT PAT2
.INSERT PAT3
PEND::
.end