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

SHSTUFF.S (1919B)


      1 
      2 stlx mac bank;addr
      3  hex 9f
      4  da ]2
      5  db ]1
      6  <<<
      7 ldlx mac bank;addr
      8  hex bf
      9  da ]2
     10  db ]1
     11  <<<
     12 
     13 **************************************************
     14 **************************************************
     15 **************************************************
     16 
     17  clc
     18  xce
     19 
     20  sep $30 ;axy
     21 
     22  lda #%00011110
     23  sta $C035 ;shadow reg
     24  lda #$41
     25  sta $C029 ;SH reg
     26 
     27  rep $30 ;AXY
     28 
     29 * Clear scan line control byte table
     30 * and palette 0 to black
     31 
     32  lda #$0000
     33  ldx #$011E
     34 :scbclr dex
     35  dex
     36  stlx $E1;$9D00
     37  bne :scbclr
     38 
     39 * Now move data over
     40 
     41  ldx #$2000
     42  ldy #$2000
     43  lda #32000-1
     44  phb
     45  mvn 1,$E1
     46  plb
     47 
     48 * Turn on Super Hires mode
     49 
     50  sep $20
     51  lda #$C1
     52  sta $C029
     53  rep $20
     54 
     55 * Move desired palette over to PalFade area
     56 
     57  ldx #$9E00 ;aux mem
     58  ldy #new_palette
     59  lda #32-1
     60  phb
     61  mvn 1,0 ;aux to main
     62  plb
     63 
     64 * Now fade in the picture
     65 
     66  jsr PalFade
     67 
     68 * Do something here... LIKE play some music
     69 
     70 * Clear the "destination" palette back to zero
     71 
     72  ldx #32
     73  lda #$0000
     74 :palclr dex
     75  dex
     76  sta new_palette,x
     77  bne :palclr
     78 
     79 * Now fade out
     80 
     81  jsr PalFade
     82 
     83 * All done...
     84 
     85  bra *
     86 
     87 *------------------------------------------------- PalFade
     88 *
     89 * Given current palette at $E19E00.1F, fade to
     90 * new palette given in new_palette
     91 *
     92 
     93 new_palette ds 32
     94 
     95 PalFade dum 0
     96 :green ds 1
     97 :blue ds 1
     98  dend
     99 
    100  sep $30
    101 
    102  bit $C019
    103  bmi *-3
    104 
    105  ldy #16
    106 
    107 :fadein ldx #3
    108 
    109 :fadein2 bit $C019
    110  bpl *-3
    111 
    112  bit $C019
    113  bmi *-3
    114 
    115  dex
    116  bne :fadein2
    117 
    118  ldx #30
    119 :palloop ldlx $E1;$9E01
    120  cmp new_palette+1,x
    121  beq :red_ok
    122  inc
    123  blt :red_ok
    124  dec
    125  dec
    126 
    127 :red_ok stlx $E1;$9E01
    128 
    129  lda new_palette,x
    130  and #$F0
    131  sta :green
    132 
    133  ldlx $E1;$9E00
    134  and #$F0
    135  cmp :green
    136  beq :green_ok
    137  blt :grn_add
    138  sbc #$20
    139 :grn_add clc
    140  adc #$10
    141 
    142 :green_ok sta :green
    143 
    144  lda new_palette,x
    145  and #$0F
    146  sta :blue
    147 
    148  ldlx $E1;$9E00
    149  and #$0F
    150  cmp :blue
    151  beq :blue_ok
    152  inc
    153  blt :blue_ok
    154  dec
    155  dec
    156 
    157 :blue_ok ora :green
    158  stlx $E1;$9E00
    159 
    160  dex
    161  dex
    162  bpl :palloop
    163 
    164  dey
    165  bpl :fadein
    166 
    167  rep $30
    168 
    169  rts
    170 
    171 *-------------------------------------------------