* tables org = $e00 tr on lst off *------------------------------- * * PRINCE OF PERSIA * Copyright 1989 Jordan Mechner * *------------------------------- dum org ByteTable ds $100 OffsetTable ds $100 BlockTable ds $100 PixelTable ds $100 Mult10 ds $10 Mult7 ds $10 Mult30 ds $40 BlockEdge ds 20 BlockTop ds 5 BlockBot ds 5 FloorY ds 5 BlockAy ds 5 dend *------------------------------- org org *------------------------------- ScrnLeft = 58 ScrnTop = 0 ScrnBot = 191 VertDist = 10 ;from bottom of block to center plane BlockHeight = 63 DHeight = 3 ;floorpiece thickness Blox1 = BlockHeight Blox2 = 2*BlockHeight Blox3 = 3*BlockHeight Blox4 = 4*BlockHeight *------------------------------- * ByteTable * * Index: Real screen X-coord (0-255) * Yields: Byte # (0-36) *------------------------------- ds ByteTable-* ]byte = 0 lup 36 db ]byte,]byte,]byte,]byte,]byte,]byte,]byte ]byte = ]byte+1 --^ db 36,36,36,36 *------------------------------- * OffsetTable * * Index: Same as ByteTable * Yields: Offset (0-6) *------------------------------- ds OffsetTable-* lup 36 db 0,1,2,3,4,5,6 --^ db 0,1,2,3 *------------------------------- * BlockTable * * Index: Screen X-coord (0 to 255) * Yields: Block # (-5 to 14) *------------------------------- ds BlockTable-* ]byte = -5 db ]byte,]byte lup 18 ]byte = ]byte+1 db ]byte,]byte,]byte,]byte,]byte,]byte,]byte db ]byte,]byte,]byte,]byte,]byte,]byte,]byte --^ ]byte = ]byte+1 db ]byte,]byte *------------------------------- * PixelTable * * Index: Same as BlockTable * Yields: Pixel # within block (0 to 13) *------------------------------- ds PixelTable-* db 12,13 lup 18 db 0,1,2,3,4,5,6,7,8,9,10,11,12,13 --^ db 0,1 *------------------------------- * Mult10 *------------------------------- ds Mult10-* ]byte = 0 lup 16 db ]byte ]byte = ]byte+10 --^ *------------------------------- * Mult7 *------------------------------- ds Mult7-* ]byte = 0 lup 16 db ]byte ]byte = ]byte+7 --^ *------------------------------- * Mult30 *------------------------------- ds Mult30-* ]word = 0 lup 32 dw ]word ]word = ]word+30 --^ *------------------------------- * BlockEdge * * Index: Block X (-5 to 14) + 5 * Yields: Screen X-coord of left edge of block *------------------------------- ds BlockEdge-* ]byte = -12 lup 20 db ]byte ]byte = ]byte+14 --^ *------------------------------- * BlockTop, BlockBot, FloorY * * Index: Block Y (-1 to 3) + 1 ds BlockTop-* db ScrnBot+1-Blox4 db ScrnBot+1-Blox3 db ScrnBot+1-Blox2 db ScrnBot+1-Blox1 db ScrnBot+1 *------------------------------- ds BlockBot-* db ScrnBot-Blox3 db ScrnBot-Blox2 db ScrnBot-Blox1 db ScrnBot db ScrnBot+Blox1 *------------------------------- ds FloorY-* db ScrnBot-Blox3-VertDist db ScrnBot-Blox2-VertDist db ScrnBot-Blox1-VertDist db ScrnBot-VertDist db ScrnBot+Blox1-VertDist *------------------------------- ds BlockAy-* db ScrnBot-Blox3-DHeight db ScrnBot-Blox2-DHeight db ScrnBot-Blox1-DHeight db ScrnBot-DHeight db ScrnBot+Blox1-DHeight *------------------------------- lst eof ds 1 usr $a9,3,$000,*-org lst off