Prince-of-Persia-Apple-II/01 POP Source/Source/TABLES.S

201 lines
3.1 KiB
ArmAsm
Executable File

* 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