201 lines
3.1 KiB
ArmAsm
Executable File
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
|