HIGH.S 4.7 KB

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