]> github.com/historicalsource and other repositories - mspacman-7800.git/blob - HIGH.S
Initial import.
[mspacman-7800.git] / HIGH.S
1 \r
2 *  HIGH           HIGH SCORE ROUTINES\r
3 \r
4 \r
5 *  THIS ROUTINE DISPLAYS THE HIGH SCORES FOR THE GAME\r
6 HOLDSCOR  LDA     HSCHERE                ;SEE IF HI SCORE CART IS THERE\r
7           BEQ     HOSOUT\r
8 \r
9           LDX     #$07\r
10 HOSLOOP   TXA                            ;SAVE X\r
11           PHA\r
12           JSR     HSETTEMP               ;SET UP TEMPLATE FOR HSC DATA BLOCK\r
13           LDA     #$04                   ;SET TIME TO SEE TABLE\r
14           STA     HSCRAM+$0E\r
15           PLA                            ;GET OUR X BACK\r
16           PHA\r
17           JSR     HSETDIF                ;UPDATE HSC DATA BLOCK FOR DIFFICULTY\r
18           JSR     HSCATRCT\r
19           PLA                            ;RESTORE X\r
20           TAX\r
21           DEX\r
22           BPL     HOSLOOP\r
23 HOSOUT    RTS\r
24 \r
25 \r
26 *  THIS ROUTINE ENTERS A NEW HI SCORE AND SHOWS THE HI SCORE TABLE\r
27 HNEWSCOR  LDA     HSCHERE                ;SEE IF HI SCORE CART IS THERE\r
28           BEQ     HOSOUT\r
29 \r
30           JSR     HSETTEMP               ;SET UP TEMPLATE FOR HSC DATA BLOCK\r
31           JSR     HSETDIFC               ;SET DIFFICULTY\r
32           LDA     #$00\r
33           JSR     HSETPLAY               ;SET PLAYER 1\r
34           JSR     HSCENTER               ;SHOW HSC TABLE\r
35           LDA     TWOPLAYR\r
36           BEQ     HNSOUT\r
37 \r
38           JSR     HSETTEMP               ;SET UP TEMPLATE FOR HSC DATA BLOCK\r
39           JSR     HSETDIFC               ;SET DIFFICULTY\r
40           LDA     #$01\r
41           JSR     HSETPLAY               ;SET PLAYER 2\r
42           JSR     HSCENTER\r
43 \r
44 HNSOUT    JSR     HSETTEMP               ;SET UP TEMPLATE FOR HSC DATA BLOCK\r
45           LDA     #$09                   ;SET TIME TO SEE TABLE - 10 SECONDS\r
46           STA     HSCRAM+$0E\r
47           JSR     HSETDIFC\r
48                                          ;FALL THROUGH\r
49 \r
50 *  DO THE HSCATRCT\r
51 HSCATRCT  LDX     #L(HSCRAM)             ;AND DO IT\r
52           LDY     #H(HSCRAM)\r
53           JSR     $3FFA                  ;DO HSCATRCT\r
54           JSR     OURINIT                ;FIX OUR STATE\r
55           JMP     SEEBAUTO\r
56 \r
57 \r
58 *  DO THE HSCENTER\r
59 HSCENTER  LDX     #L(HSCRAM)             ;AND DO IT\r
60           LDY     #H(HSCRAM)\r
61           JSR     $3FFD                  ;DO HSCENTER\r
62           JSR     OURINIT                ;FIX OUR STATE\r
63           JMP     SEEBALL\r
64 \r
65 \r
66 *  THIS ROUTINE SETS UP A DEFAULT HSC TABLE IN THE START OF HSC RAM\r
67 HSETTEMP  LDX     #$1F\r
68 HSTLOOP   LDA     HSCTEMP,X              ;INITIALIZE HI SCORE TEMPLATE\r
69           STA     HSCRAM,X\r
70           LDA     #$1D                   ;CLEAR DIFFICULTY NAME\r
71           STA     HSCDIF,X\r
72           DEX\r
73           BPL     HSTLOOP\r
74           RTS\r
75 \r
76 \r
77 *  THIS ROUTINE SETS THE DIFFICULTY IN A FOR THE HSCRAM\r
78 HSETDIFC  LDA     STLEVEL                ;DEFAULT STARTING LEVEL\r
79 HSETDIF   TAX\r
80           ASL     A                      ;SHIFT IT LEFT TWICE\r
81           ASL     A\r
82           STA     HSCRAM+2               ;STORE IT IN DIFFICULTY\r
83 \r
84           LDY     HSCOFF,X               ;MOVE THE NAME IN\r
85           LDX     #$08\r
86 HSDLOOP   LDA     TMESSAG2,Y\r
87           BNE     HSDLNORM\r
88           LDA     #$1D\r
89           JMP     HSDLSTOR\r
90 HSDLNORM  SEC\r
91           SBC     #$5E\r
92 HSDLSTOR  STA     HSCDIF,X\r
93           INY\r
94           INX\r
95           CPX     #$12\r
96           BMI     HSDLOOP\r
97 \r
98           RTS\r
99 \r
100 \r
101 *  THIS ROUTINE SETS THE PLAYER.  A IS THE PLAYER.  HSCDIF MUST BE CALLED FIRST.\r
102 *  PLAYER 1 MUST BE DONE BEFORE PLAYER 2.\r
103 HSETPLAY  TAX\r
104           ORA     HSCRAM+2               ;OR IN THE DIFFICULTY\r
105           STA     HSCRAM+2\r
106 \r
107           LDA     #H(P1SCORE)            ;SET HI BYTE OF SCORE\r
108           STA     HSCRAM+9\r
109           CPX     #$00                   ;SEE WHICH PLAYER\r
110           BNE     HSCP2\r
111 \r
112           LDA     #L(P1SCORE)            ;SET SCORE FOR PLAYER 1\r
113           STA     HSCRAM+8\r
114           RTS\r
115 \r
116 HSCP2     LDA     #L(P2SCORE)            ;SET SCORE FOR PLAYER 2\r
117           STA     HSCRAM+8\r
118 \r
119 *  WE HAVE NO SOUND FOR HSC\r
120 HSCSOUND  RTS\r
121 \r
122 \r
123 *  TEMPLATE FOR HSC TABLE\r
124 HSCTEMP   DB      $80,$01                ;ID NUMBER AND TRAILING ZERO\r
125           DB      $00                    ;DIFFICULTY [7..2] AND PLAYER [1..0]\r
126           DB      $01                    ;CONTROLLER TYPE\r
127           DB      L(HSCMS),H(HSCMS)      ;POINTER TO MS PAC-MAN NAME\r
128           DB      L(HSCDIF),H(HSCDIF)    ;POINTER TO DIFFICULTY NAME\r
129           DB      $00,$00                ;POINTER TO SCORE\r
130           DB      $00,$00                ;POINTER TO DLL FOR LOGO\r
131           DB      L(HSCSOUND),H(HSCSOUND) ;POINTER TO SOUND ROUTINE\r
132           DB      $00                    ;TIME TO WAIT TILL RETURN\r
133 \r
134 *  WORDS FOR HSC - NAME OF GAME AND DIFFICULTIES\r
135 HSCMS     DB      $1D,$1D,$1D,$1D,$1D,$1D,$1D,$1D\r
136           DB      $0C,$12,$1D,$0F,$00,$02,$1C,$0C,$00,$0D  ;MS PAC-MAN\r
137           DB      $1D,$1D,$1D,$1D,$1D,$1D,$1D,$1D\r
138 \r