Prince-of-Persia-Apple-II

A running-jumping-swordfighting game Jordan Mechner made on the Apple II from 1985-89
Log | Files | Refs | README | LICENSE

HRTABLES.S (8289B)


      1 * hires tables
      2 org = $e000
      3  tr on
      4  lst off
      5 *-------------------------------
      6  org org
      7 *-------------------------------
      8 *
      9 * YLO/YHI
     10 *
     11 * Index: Screen Y-coord (0-191, 0 = top)
     12 * Returns base address on hires page 1 (add $2000 for page 2)
     13 *
     14 *-------------------------------
     15 
     16 YLO hex 00000000000000008080808080808080
     17  hex 00000000000000008080808080808080
     18  hex 00000000000000008080808080808080
     19  hex 00000000000000008080808080808080
     20 
     21  hex 2828282828282828A8A8A8A8A8A8A8A8
     22  hex 2828282828282828A8A8A8A8A8A8A8A8
     23  hex 2828282828282828A8A8A8A8A8A8A8A8
     24  hex 2828282828282828A8A8A8A8A8A8A8A8
     25 
     26  hex 5050505050505050D0D0D0D0D0D0D0D0
     27  hex 5050505050505050D0D0D0D0D0D0D0D0
     28  hex 5050505050505050D0D0D0D0D0D0D0D0
     29  hex 5050505050505050D0D0D0D0D0D0D0D0
     30 
     31 YHI hex 2024282C3034383C2024282C3034383C
     32  hex 2125292D3135393D2125292D3135393D
     33  hex 22262A2E32363A3E22262A2E32363A3E
     34  hex 23272B2F33373B3F23272B2F33373B3F
     35 
     36  hex 2024282C3034383C2024282C3034383C
     37  hex 2125292D3135393D2125292D3135393D
     38  hex 22262A2E32363A3E22262A2E32363A3E
     39  hex 23272B2F33373B3F23272B2F33373B3F
     40 
     41  hex 2024282C3034383C2024282C3034383C
     42  hex 2125292D3135393D2125292D3135393D
     43  hex 22262A2E32363A3E22262A2E32363A3E
     44  hex 23272B2F33373B3F23272B2F33373B3F
     45 
     46 *-------------------------------
     47 *
     48 * SHIFTn/CARRYn
     49 *
     50 * n = # of pixels to shift right (0-6)
     51 * Index: byte value w/hibit clr (0-127)
     52 *
     53 * SHIFT returns shifted byte w/hibit set
     54 * CARRY returns carryover to next byte w/hibit clr
     55 *
     56 *-------------------------------
     57 
     58 SHIFT0 hex 808182838485868788898A8B8C8D8E8F
     59  hex 909192939495969798999A9B9C9D9E9F
     60  hex A0A1A2A3A4A5A6A7A8A9AAABACADAEAF
     61  hex B0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF
     62 
     63  hex C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF
     64  hex D0D1D2D3D4D5D6D7D8D9DADBDCDDDEDF
     65  hex E0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
     66  hex F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
     67 
     68 SHIFT1 hex 80828486888A8C8E90929496989A9C9E
     69  hex A0A2A4A6A8AAACAEB0B2B4B6B8BABCBE
     70  hex C0C2C4C6C8CACCCED0D2D4D6D8DADCDE
     71  hex E0E2E4E6E8EAECEEF0F2F4F6F8FAFCFE
     72 
     73  hex 80828486888A8C8E90929496989A9C9E
     74  hex A0A2A4A6A8AAACAEB0B2B4B6B8BABCBE
     75  hex C0C2C4C6C8CACCCED0D2D4D6D8DADCDE
     76  hex E0E2E4E6E8EAECEEF0F2F4F6F8FAFCFE
     77 
     78 SHIFT2 hex 8084888C9094989CA0A4A8ACB0B4B8BC
     79  hex C0C4C8CCD0D4D8DCE0E4E8ECF0F4F8FC
     80  hex 8084888C9094989CA0A4A8ACB0B4B8BC
     81  hex C0C4C8CCD0D4D8DCE0E4E8ECF0F4F8FC
     82 
     83  hex 8084888C9094989CA0A4A8ACB0B4B8BC
     84  hex C0C4C8CCD0D4D8DCE0E4E8ECF0F4F8FC
     85  hex 8084888C9094989CA0A4A8ACB0B4B8BC
     86  hex C0C4C8CCD0D4D8DCE0E4E8ECF0F4F8FC
     87 
     88 SHIFT3 hex 80889098A0A8B0B8C0C8D0D8E0E8F0F8
     89  hex 80889098A0A8B0B8C0C8D0D8E0E8F0F8
     90  hex 80889098A0A8B0B8C0C8D0D8E0E8F0F8
     91  hex 80889098A0A8B0B8C0C8D0D8E0E8F0F8
     92 
     93  hex 80889098A0A8B0B8C0C8D0D8E0E8F0F8
     94  hex 80889098A0A8B0B8C0C8D0D8E0E8F0F8
     95  hex 80889098A0A8B0B8C0C8D0D8E0E8F0F8
     96  hex 80889098A0A8B0B8C0C8D0D8E0E8F0F8
     97 
     98 SHIFT4 hex 8090A0B0C0D0E0F08090A0B0C0D0E0F0
     99  hex 8090A0B0C0D0E0F08090A0B0C0D0E0F0
    100  hex 8090A0B0C0D0E0F08090A0B0C0D0E0F0
    101  hex 8090A0B0C0D0E0F08090A0B0C0D0E0F0
    102 
    103  hex 8090A0B0C0D0E0F08090A0B0C0D0E0F0
    104  hex 8090A0B0C0D0E0F08090A0B0C0D0E0F0
    105  hex 8090A0B0C0D0E0F08090A0B0C0D0E0F0
    106  hex 8090A0B0C0D0E0F08090A0B0C0D0E0F0
    107 
    108 SHIFT5 hex 80A0C0E080A0C0E080A0C0E080A0C0E0
    109  hex 80A0C0E080A0C0E080A0C0E080A0C0E0
    110  hex 80A0C0E080A0C0E080A0C0E080A0C0E0
    111  hex 80A0C0E080A0C0E080A0C0E080A0C0E0
    112 
    113  hex 80A0C0E080A0C0E080A0C0E080A0C0E0
    114  hex 80A0C0E080A0C0E080A0C0E080A0C0E0
    115  hex 80A0C0E080A0C0E080A0C0E080A0C0E0
    116  hex 80A0C0E080A0C0E080A0C0E080A0C0E0
    117 
    118 SHIFT6 hex 80C080C080C080C080C080C080C080C0
    119  hex 80C080C080C080C080C080C080C080C0
    120  hex 80C080C080C080C080C080C080C080C0
    121  hex 80C080C080C080C080C080C080C080C0
    122 
    123  hex 80C080C080C080C080C080C080C080C0
    124  hex 80C080C080C080C080C080C080C080C0
    125  hex 80C080C080C080C080C080C080C080C0
    126  hex 80C080C080C080C080C080C080C080C0
    127 
    128 CARRY0 hex 00000000000000000000000000000000
    129  hex 00000000000000000000000000000000
    130  hex 00000000000000000000000000000000
    131  hex 00000000000000000000000000000000
    132 
    133  hex 00000000000000000000000000000000
    134  hex 00000000000000000000000000000000
    135  hex 00000000000000000000000000000000
    136  hex 00000000000000000000000000000000
    137 
    138 CARRY1 hex 00000000000000000000000000000000
    139  hex 00000000000000000000000000000000
    140  hex 00000000000000000000000000000000
    141  hex 00000000000000000000000000000000
    142 
    143  hex 01010101010101010101010101010101
    144  hex 01010101010101010101010101010101
    145  hex 01010101010101010101010101010101
    146  hex 01010101010101010101010101010101
    147 
    148 CARRY2 hex 00000000000000000000000000000000
    149  hex 00000000000000000000000000000000
    150  hex 01010101010101010101010101010101
    151  hex 01010101010101010101010101010101
    152 
    153  hex 02020202020202020202020202020202
    154  hex 02020202020202020202020202020202
    155  hex 03030303030303030303030303030303
    156  hex 03030303030303030303030303030303
    157 
    158 CARRY3 hex 00000000000000000000000000000000
    159  hex 01010101010101010101010101010101
    160  hex 02020202020202020202020202020202
    161  hex 03030303030303030303030303030303
    162 
    163  hex 04040404040404040404040404040404
    164  hex 05050505050505050505050505050505
    165  hex 06060606060606060606060606060606
    166  hex 07070707070707070707070707070707
    167 
    168 CARRY4 hex 00000000000000000101010101010101
    169  hex 02020202020202020303030303030303
    170  hex 04040404040404040505050505050505
    171  hex 06060606060606060707070707070707
    172 
    173  hex 08080808080808080909090909090909
    174  hex 0A0A0A0A0A0A0A0A0B0B0B0B0B0B0B0B
    175  hex 0C0C0C0C0C0C0C0C0D0D0D0D0D0D0D0D
    176  hex 0E0E0E0E0E0E0E0E0F0F0F0F0F0F0F0F
    177 
    178 CARRY5 hex 00000000010101010202020203030303
    179  hex 04040404050505050606060607070707
    180  hex 08080808090909090A0A0A0A0B0B0B0B
    181  hex 0C0C0C0C0D0D0D0D0E0E0E0E0F0F0F0F
    182 
    183  hex 10101010111111111212121213131313
    184  hex 14141414151515151616161617171717
    185  hex 18181818191919191A1A1A1A1B1B1B1B
    186  hex 1C1C1C1C1D1D1D1D1E1E1E1E1F1F1F1F
    187 
    188 CARRY6 hex 00000101020203030404050506060707
    189  hex 080809090A0A0B0B0C0C0D0D0E0E0F0F
    190  hex 10101111121213131414151516161717
    191  hex 181819191A1A1B1B1C1C1D1D1E1E1F1F
    192 
    193  hex 20202121222223232424252526262727
    194  hex 282829292A2A2B2B2C2C2D2D2E2E2F2F
    195  hex 30303131323233333434353536363737
    196  hex 383839393A3A3B3B3C3C3D3D3E3E3F3F
    197 
    198 *-------------------------------
    199 *
    200 * MIRROR
    201 *
    202 * Index: byte value w/hibit clr (0-127)
    203 * Returns mirrored byte w/hibit set
    204 *
    205 *-------------------------------
    206 
    207 MIRROR hex 80C0A0E090D0B0F088C8A8E898D8B8F8
    208  hex 84C4A4E494D4B4F48CCCACEC9CDCBCFC
    209  hex 82C2A2E292D2B2F28ACAAAEA9ADABAFA
    210  hex 86C6A6E696D6B6F68ECEAEEE9EDEBEFE
    211 
    212  hex 81C1A1E191D1B1F189C9A9E999D9B9F9
    213  hex 85C5A5E595D5B5F58DCDADED9DDDBDFD
    214  hex 83C3A3E393D3B3F38BCBABEB9BDBBBFB
    215  hex 87C7A7E797D7B7F78FCFAFEF9FDFBFFF
    216 
    217 *-------------------------------
    218 *
    219 * MASKTAB
    220 *
    221 * Index: byte value w/hibit clr (0-127)
    222 * Returns mask byte w/hibit set
    223 *
    224 *-------------------------------
    225 
    226 MASKTAB HEX FF,FC,F8,F8,F1,F0,F0,F0
    227  HEX E3,E0,E0,E0,E1,E0,E0,E0
    228  HEX C7,C4,C0,C0,C1,C0,C0,C0
    229  HEX C3,C0,C0,C0,C1,C0,C0,C0
    230 
    231  HEX 8F,8C,88,88,81,80,80,80
    232  HEX 83,80,80,80,81,80,80,80
    233  HEX 87,84,80,80,81,80,80,80
    234  HEX 83,80,80,80,81,80,80,80
    235 
    236  HEX 9F,9C,98,98,91,90,90,90
    237  HEX 83,80,80,80,81,80,80,80
    238  HEX 87,84,80,80,81,80,80,80
    239  HEX 83,80,80,80,81,80,80,80
    240 
    241  HEX 8F,8C,88,88,81,80,80,80
    242  HEX 83,80,80,80,81,80,80,80
    243  HEX 87,84,80,80,81,80,80,80
    244  HEX 83,80,80,80,81,80,80,80
    245 
    246 *-------------------------------
    247 *
    248 * SHIFTL-H/CARRYL-H
    249 *
    250 * Index: Bit offset (0-6)
    251 * Returns address of corresponding shift/carry table
    252 *
    253 *-------------------------------
    254 
    255 SHIFTL dfb #SHIFT0-$80
    256  dfb #SHIFT1-$80
    257  dfb #SHIFT2-$80
    258  dfb #SHIFT3-$80
    259  dfb #SHIFT4-$80
    260  dfb #SHIFT5-$80
    261  dfb #SHIFT6-$80
    262 
    263 SHIFTH dfb >SHIFT0-$80
    264  dfb >SHIFT1-$80
    265  dfb >SHIFT2-$80
    266  dfb >SHIFT3-$80
    267  dfb >SHIFT4-$80
    268  dfb >SHIFT5-$80
    269  dfb >SHIFT6-$80
    270 
    271 CARRYL dfb #CARRY0-$80
    272  dfb #CARRY1-$80
    273  dfb #CARRY2-$80
    274  dfb #CARRY3-$80
    275  dfb #CARRY4-$80
    276  dfb #CARRY5-$80
    277  dfb #CARRY6-$80
    278 
    279 CARRYH dfb >CARRY0-$80
    280  dfb >CARRY1-$80
    281  dfb >CARRY2-$80
    282  dfb >CARRY3-$80
    283  dfb >CARRY4-$80
    284  dfb >CARRY5-$80
    285  dfb >CARRY6-$80
    286 
    287 *-------------------------------
    288 *
    289 * AMASKS/BMASKS
    290 *
    291 * Index: Bit offset (0-6)
    292 * Returns appropriate mask bytes
    293 *
    294 *-------------------------------
    295 
    296 AMASKS dfb %10000000
    297  dfb %10000001
    298  dfb %10000011
    299  dfb %10000111
    300  dfb %10001111
    301  dfb %10011111
    302  dfb %10111111
    303 
    304 BMASKS dfb %11111111
    305  dfb %11111110
    306  dfb %11111100
    307  dfb %11111000
    308  dfb %11110000
    309  dfb %11100000
    310  dfb %11000000
    311 
    312 *-------------------------------
    313 *
    314 * OPCODE
    315 *
    316 * Index: OPACITY (0-5)
    317 * Returns opcode to put in self-mod code
    318 *
    319 *-------------------------------
    320 
    321 OPCODE dfb $31 ;and (oper),Y
    322  dfb $11 ;ora
    323  dfb $91 ;sta
    324  dfb $51 ;eor
    325  dfb $31 ;and
    326  dfb $91 ;sta
    327 
    328 *-------------------------------
    329  lst
    330  usr $a9,2,$0000,*-org
    331  lst off