 |
 |
;----------------------------------------------------
; Return
;----------------------------------------------------
RET ; Return
;----------------------------------------------------
; Return
;----------------------------------------------------
RET ; Return
;----------------------------------------------------
; Compact High Score Tables and Reset Data
;----------------------------------------------------
L0FF9: CALL L1003 ; Compact All-Time High Score Table
CALL L1074 ; Compact Today's High Score Table
CALL L1627 ; Reset Bookkeeping Data
RET ; Return
;----------------------------------------------------
; Remove empty slots from All-Time High Score Table
;----------------------------------------------------
L1003: LD HL,0E000h ; HL = Start of All-Time High Scores
LD IY,0E000h ; IY = Start of All-Time High Scores
LD DE,00008h ; Number of bytes in High Score
LD C,00Ah ; Loop = 10 scores
L100F: LD B,008h ; 8 bytes to sum
CALL L110C ; Calculate Sum of bytes
CP 0FFh ; Check if slot is blank
JR NZ,L101E ; Blank slot found so remove it
ADD IY,DE ; Point to next score
DEC C ; Decrement Loop
JR NZ,L100F ; Loop until all scores checked
RET ; Return
;----------------------------------------------------
; Remove empty slot
;----------------------------------------------------
L101E: CALL L1023 ; Erase empty slot
JR L1003 ; Recheck all slots
;----------------------------------------------------
; Initials
;----------------------------------------------------
; IY Pointer within High Score
;----------------------------------------------------
L1023: PUSH BC ; Save BC Register
PUSH DE ; Save DE Register
PUSH HL ; Save HL Register
PUSH IY ; Save IY Register
PUSH IY ; Copy IY
POP DE ; DE = High Score pointer
LD HL,0E050h ; HL = Start of Initials
AND A ; Clear carry
SBC HL,DE ;
LD DE,00008h ;
SBC HL,DE ;
INC HL ;
LD B,H ;
LD C,L ;
PUSH IY ;
POP HL ; Restore HL Register
ADD HL,DE ;
PUSH IY ;
POP DE ;
LDIR ;
LD IY,0E048h ; 10th High Score
LD A,055h ; "U"
LD (IY+000h),A ;
LD A,052h ; "R"
LD (IY+001h),A ;
LD A,04Ch ; "L"
LD (IY+002h),A ;
XOR A ; A = 00
LD (IY+003h),A ;
LD (IY+004h),A ;
LD (IY+005h),A ;
LD (IY+006h),A ;
LD B,007h ; 7 bytes to sum
LD HL,0E048h ; Sum 10th High Score
CALL L110C ; Calculate Sum of bytes
CPL ;
LD (IY+007h),A ;
POP IY ; Restore IY Register
POP HL ; Restore HL Register
POP DE ; Restore DE Register
POP BC ; Restore BC Register
RET ; Return
;----------------------------------------------------
; Remove empty slots from Today's High Score Table
;----------------------------------------------------
L1074: LD HL,0E050h ; HL = Start of Today's High Scores
LD IY,0E050h ; IY = Start of Today's High Scores;
LD DE,00008 ; Number of bytes in High Score
LD C,00Ah ; 10 slots to check
L1080: LD B,008h ; 8 bytes in each slot to sum
CALL L110C ; Calculate Sum of bytes
CP 0FFh ; Check if slot is blank
JR NZ,L108F ; Blank slot found so remove it
ADD IY,DE ; Point to next score
DEC C ; Decrement Loop
JR NZ,L1080 ; Loop until all scores checked
RET ; Return
;----------------------------------------------------
; Remove empty slot
;----------------------------------------------------
L108F: CALL L1094 ; Remove empty slot
JR L1074 ; Continue checking scores
;----------------------------------------------------
; Move all High Scores up one notch
;----------------------------------------------------
; IY = High Score to change (E050,E058,...)
;----------------------------------------------------
L1094: PUSH BC ; Save BC Register
PUSH DE ; Save DE Register
PUSH HL ; Save HL Register
PUSH IY ; Save IY Register
PUSH IY ; Move IY...
POP DE ; ...into DE
LD HL,0E0A0h ; Point to last high score
AND A ; Clear carry
SBC HL,DE ; Subtract back from last score
LD DE,00008h ;
SBC HL,DE
INC HL
LD B,H
LD C,L
PUSH IY
POP HL ; Restore HL Register
ADD HL,DE
PUSH IY
POP DE
LDIR
;----------------------------------------------------
; Save "URL 00000" into last high score position
;----------------------------------------------------
LD IY,0E098h ; Point to last position
LD A,055h ; "U"
LD (IY+000h),A
LD A,052h ; "R"
LD (IY+001h),A
LD A,04Ch ; "L"
LD (IY+002h),A
XOR A ; A = 00
LD (IY+003h),A
LD (IY+004h),A
LD (IY+005h),A
LD (IY+006h),A
LD B,007h ; 7 bytes to sum
LD HL,0E098h
CALL L110C ; Calculate Sum of bytes
CPL
LD (IY+007h),A
POP IY ; Restore IY Register
POP HL ; Restore HL Register
POP DE ; Restore DE Register
POP BC ; Restore BC Register
RET ; Return
;----------------------------------------------------
; Calculate Sum of Plays:
;----------------------------------------------------
; E0A0 - E0A2 Total Plays
; E0A3 - E0A4 Left Coin Slot Total
; E0A5 - E0A6 Right Coin Slot Total
;----------------------------------------------------
L10E5: LD B,007h ; 7 bytes to sum
LD HL,0E0A0h ; Sum bytes E0A0 - E0A6
JR L1106 ; Calculate sum of bytes
;----------------------------------------------------
; Calculate Sum of Play Times:
;----------------------------------------------------
; E0A8 - E0AA Total Play Time Seconds
; E0AB - E0AD Longest Game Seconds
; E0AE Shortest Game Seconds
; E0AF Highest Scene
;----------------------------------------------------
L10EC: LD B,008h ; 8 bytes to sum
LD HL,0E0A8h ; Sum bytes E0A8 thru E0AF
JR L1106 ; Calculate sum of bytes
;----------------------------------------------------
; Calculate Sum of ----
;----------------------------------------------------
L10F3: LD B,01Eh ; Sum 30 values
LD HL,0E0B1h ;
JR L1106 ;
L10FA: LD B,01Eh ; Sum 30 values
LD HL,0E0D0h ;
JR L1106 ;
L1101: LD B,01Eh
LD HL,0E0EFh
;----------------------------------------------------
; Calculate Sum of HL + (HL+1) + ... + (HL+B)
;----------------------------------------------------
; B = Number of bytes to sum
; HL = Starting Location of byte
;----------------------------------------------------
L1106: CALL L110C ; Call Calculate sum
CPL ; Reverse all bits
LD (HL),A ; Store sum (HL+B)
RET ; Return
;----------------------------------------------------
; Calculate Sum of Data Series
;----------------------------------------------------
; B = Number of bytes to sum
; HL = Starting Location of byte
; A = Return Total
;----------------------------------------------------
L110C: XOR A ; Clear total
L110D: ADD A,(HL) ; Add contents of HL
INC HL ; Point to next location
DJNZ L110D ; Loop until all bytes summed
RET ; Return
;----------------------------------------------------
; Top Ten High Scores and Initials at startup
;----------------------------------------------------
L1112: .TEXT "JMH"
.DB 0,1,0,0,0
L111A: .TEXT "PMR"
.DB 0,0,9,0,0
L1122: .TEXT "EJM"
.DB 0,0,8,0,0
L112A: .TEXT "APH"
.DB 0,0,7,0,0
L1132: .TEXT "VAV"
.DB 0,0,6,0,0
L113A: .TEXT "MAS"
.DB 0,0,5,0,0
L1142: .TEXT "JON"
.DB 0,0,4,0,0
L114A: .TEXT "WHO"
.DB 0,0,3,0,0
L1152: .TEXT "HP?"
.DB 0,0,2,0,0
L115A: .TEXT "JIM"
.DB 0,0,1,0,0
;----------------------------------------------------
; Check Coin Slots
;----------------------------------------------------
L1162: LD HL,(0E127h) ; Get temp Add/Subtract location
PUSH HL ; Save it before entering this routine
LD DE,(0E129h) ; Get temp Add/Subtract location
PUSH DE ; Save it before entering this routine
LD DE,L0000 ; DE = 00000h
LD (0E127h),DE ; Erase Temp Add/Subtract location
LD (0E129h),DE ; Erase Temp Add/Subtract location
LD HL,0E1A1h ; HL = Coins Inserted Left
LD A,(0E192h) ; Get Button Data
;----------------------------------------------------
; Check Left Coin Slot
;----------------------------------------------------
BIT 0,A ; Test Left Coin Slot
JR Z,L1193 ; No Coins so skip ahead
;----------------------------------------------------
; Coin Inserted in Left Slot
;----------------------------------------------------
RES 0,A ; Clear Left Coin Slot
EX AF,AF' ; Save Button Data
INC (HL) ; Increment Coins Inserted Left
LD DE,0E0A4h ; Get Left Coin Count (Ones)
LD A,001h ; A = 1
LD (0E12Ah),A ; Put 1 Coin
CALL L0FB0 ; Call 2-digit BCD Addition
RET ; Return
CALL L10E5 ; Sum Total Coins
EX AF,AF' ; Recall Button Data
L1193: LD HL,0E1A2h ; HL = Get Coins Inserted Right
;----------------------------------------------------
; Check Right Coin Slot
;----------------------------------------------------
BIT 1,A ; Test Right Coin Slot
JR Z,L11AD ; No Coins so skip ahead
;----------------------------------------------------
; Coin Inserted in Right Slot
;----------------------------------------------------
RES 1,A ; Clear Right Coin Slot
EX AF,AF' ; Save Button Data
INC (HL) ; Increment Coins Inserted Right
LD DE,0E0A6h ; Get Right Coin Count (Ones)
LD A,001h ; A = 1
LD (0E12Ah),A ; Put 1 Coin
CALL L0FB0 ; Call 2-digit BCD Addition
CALL L10E5 ; Sum Total Coins
EX AF,AF' ; Recall Button Data
L11AD: LD (0E192h),A ; Save Button Data
CALL L11C0 ; Award Credits for Coins
CALL L1254 ;
POP DE ; Get temp Add/Subtract location
LD (0E129h),DE ; Restore Add/Subtract location
POP HL ; Get temp Add/Subtract location
LD (0E127h),HL ; Restore Add/Subtract location
RET ; Return
;----------------------------------------------------
; Check DIP Settings and Award Credits for Coins
;----------------------------------------------------
; 24 25 Right
; 20 21 Left
; -------------------
; OFF OFF 2 Coins
; ON OFF 2 Coins
; OFF ON 3 Coins
; ON ON 4 Coins
;----------------------------------------------------
L11C0: LD DE,0E1A1h ; DE = Coins Inserted Left
LD A,(0E1A3h) ; Get x
LD C,A ; C = x
LD A,(0E189h) ; Get DIP Switches 20-27
RRCA ; Get Coin Settings
RRCA ; Get Coin Settings
RRCA ; Get Coin Settings
RRCA ; Get Coin Settings
AND 003h ; Isolate Right Coin/Credit Setting 24-25
LD B,A ; B = Right Coins/Credit Setting
LD A,(0E189h) ; Get DIP Switches 20-27
AND 003h ; Isolate Left Coin/Credit Settings 20-21
CP B ; Compare Left settings to Right Settings
JR NZ,L11E6 ; Coin/Credit settings differ so jump ahead
;----------------------------------------------------
; Total both Coins into Left Coin
;----------------------------------------------------
; IF BOTH COIN CHUTES ARE ADJUSTED THE SAME FOR MULTIPLE
; COINS, CREDITS WILL INCREASE AS IF DROPPED IN SAME CHUTE
;----------------------------------------------------
EX AF,AF' ; Save Coin/Credit Setting
EX DE,HL ; HL = Coins Inserted Left
LD A,(0E1A2h) ; A = Coins Inserted Right
ADD A,(HL) ; Add Right Coins to Left Coins
LD (HL),A ; Store Total into Left Coins Inserted
EX DE,HL ; Restore HL Register
XOR A ; A = 0
LD (0E1A2h),A ; Zero Coins Inserted Right
EX AF,AF' ; Recall Coin/Credit Settings
L11E6: CALL L1205 ; ??
LD A,C ; A = x
LD (0E1A3h),A ; Save x
LD DE,0E1A2h ; DE = Coins Inserted Right
LD A,(0E1A4h) ;
LD C,A ;
LD A,(0E189h) ; Get DIP Switches 20-27
RRCA ;
RRCA ;
RRCA ;
RRCA ;
AND 003h ;
CALL L1205 ;
LD A,C ;
LD (0E1A4h),A ;
RET ; Return
;----------------------------------------------------
; Coins per Credit
;----------------------------------------------------
; A = Coins/Settings (0,1,2,3)
; DE = Coins Inserted Left
;----------------------------------------------------
L1205: LD HL,0129Dh ; HL = Pointer to Bank12 table
LD B,A ; B = Coin Setting (0,1,2,3)
OR A ; Is Coin Setting 0?
JR Z,L1214 ; Yes, so use Award Cycle 1
PUSH DE ; Save DE Register
LD DE,0000Ch ; DE = 12 Bytes per Award Cycle
L1210: ADD HL,DE ; HL = Correct Award Cycle
DJNZ L1210 ; Loop until correct Award Cycle
POP DE ; Restore DE Register
L1214: LD A,(DE) ; A = Coins Inserted Left
OR A ; Are there any coins?
RET Z ; No coins so return
ADD HL,BC ; Add BC index into Award Cycle
XOR A ; A = 0
;----------------------------------------------------
; Award Credits while there are Coins in Left Slot
;----------------------------------------------------
L1219: ADD A,(HL) ; Add Number of Coins in Table
EX AF,AF' ; Save table total
LD A,C ; A = x
CP 00Bh ; Is x = 11?
JR NZ,L122A ; No, so skip ahead
PUSH DE ; Save DE Register
LD DE,0000Ch ; BE = 12 bytes per Award Cycle
XOR A ; Clear Carry
SBC HL,DE ; Go to previous bank
LD C,0FFh ; C = 255
POP DE ; Recall DE Register
L122A: INC C
INC HL ; Point to next spot in table
PUSH HL ; Save table Pointer
LD HL,0E1A5h ;
INC (HL)
POP HL ; Recall table Pointer
EX AF,AF'
EX DE,HL ; Get Coins Inserted Left
DEC (HL) ; Subtract 1 coin
EX DE,HL ; Restore Registers
JR NZ,L1219 ; More coins left so keep looping
CALL L123C ; Award Credits and Beep
RET ; Return
;----------------------------------------------------
; Award Credits and Beep
;----------------------------------------------------
; A = Number of credits to award
;----------------------------------------------------
L123C: LD B,A ; B = Number of Credits to award
OR A ; Is it zero?
RET Z ; Yes, no credits to award so return
LD A,(0E1A8h) ; A = Number of Credits
CP 099h ; Are there 99 credits?
RET Z ; Yes, so just return
ADD A,B ; Add to Number of Credits
DAA ; Make BCD
JR NC,L124B ; Still less than 99 so skip ahead
LD A,099h ; Set Number of Credits = 99
L124B: LD (0E1A8h),A ; Store Number of Credits
LD A,002h ; ?
CALL GoodBeep ; Sound GoodBeep
RET ; Return
;----------------------------------------------------
; Unknown
;----------------------------------------------------
L1254: LD A,(0E1A6h)
BIT 0,A
JR Z,L1282
LD A,(0E1A7h)
OR A
JR Z,L1266
DEC A
LD (0E1A7h),A
RET
L1266: LD A,(0E1A6h)
BIT 1,A
JR Z,L127C
RES 1,A
LD (0E1A6h),A
RES 6,A
OUT (068h),A
LD A,00Ch
LD (0E1A7h),A
RET
L127C: RES 0,A
LD (0E1A6h),A
RET
L1282: LD A,(0E1A5h)
OR A
RET Z
DEC A
LD (0E1A5h),A
XOR A
SET 0,A
SET 1,A
LD (0E1A6h),A
SET 6,A
OUT (068h),A
LD A,004h
LD (0E1A7h),A
RET
;----------------------------------------------------
; Award Cycles
;----------------------------------------------------
; 1 Coin per Credit
;----------------------------------------------------
L129D: .DB 001h
.DB 001h
.DB 001h
.DB 001h
.DB 001h
.DB 001h
.DB 001h
.DB 001h
.DB 001h
.DB 001h
.DB 001h
.DB 001h
;----------------------------------------------------
; 2 Coins per Credit
;----------------------------------------------------
.DB 000h, 001h
.DB 000h, 001h
.DB 000h, 001h
.DB 000h, 001h
.DB 000h, 001h
.DB 000h, 001h
;----------------------------------------------------
; 3 Coins per Credit
;----------------------------------------------------
.DB 000h, 000h, 001h
.DB 000h, 000h, 001h
.DB 000h, 000h, 001h
.DB 000h, 000h, 001h
;----------------------------------------------------
; 4 Coins per Credit
;----------------------------------------------------
.DB 000h, 000h, 000h, 001h
.DB 000h, 000h, 000h, 001h
.DB 000h, 000h, 000h, 001h
;----------------------------------------------------
; ROM0 Copyright
;----------------------------------------------------
L12CD: .DB 010h
L12CE: .TEXT "COPYRIGHT STERN ELECTRONICS, INC."
;----------------------------------------------------
; Check Buy-In Feature
;----------------------------------------------------
L12F0: LD A,(0E18Ch) ; Get DIP Switches 12-19
BIT 7,A ; Check BUY-IN feature
RET Z ; No BUY-IN so just return
L12F6: LD A,(0E126h) ; Get Control Register ;
BIT 1,A ;
JR NZ,L12F6 ;
LD A,(0E126h) ; Get Control Register
BIT 4,A ;
JR NZ,L1311 ;
;----------------------------------------------------
; Send PAUSE Command
;----------------------------------------------------
LD A,00Ah ; Command = PAUSE (0Ah)
CALL L207F ; Send Message to LDPlayer DI
LD A,(0E126h) ; Get Control Register
SET 4,A ; Set PAUSE Bit
LD (0E126h),A ; Save Control Register
L1311: PUSH IY ;
PUSH DE ;
PUSH BC ;
CALL L2392 ;
CALL L22F5 ; Program Graphics Chip
LD A,0FDh ; Text = WHITE, Bkgnd = PURPLE
CALL L20CA ; Setup Graphics Chip for Text
CALL L21FF ; Clear Text Display
LD C,000h ; Loop = 0
L1325: LD A,C ; A = Rectangle #
CALL L575D ; Draw programmed rectangle
LD B,005h ; Loop = 5
L132B: CALL L2353 ; Wait for Comm Ready
DJNZ L132B ; Loop for 5 Comm's
INC C ; Increment loop
LD A,C ; Check loop
CP 005h ; Is loop at 5 yet?
JR C,L1325 ; No, continue with loop
L1336: PUSH HL ; Save HL Register
LD HL,00127h ; Cursor Position
CALL L2212 ; Set Cursor and Print Text
;----------------------------------------------------
L133D: .TEXT "PLAYER # "
.DB 000h
;----------------------------------------------------
POP HL ; Restore HL Register
LD A,(0E1A9h) ; Get Player Number
AND 003h ; Decode number
OR 030h ; Create printable character A
CALL L2256 ; Print A to Text Display
PUSH HL ; Save HL Register
LD HL,00170h ; Cursor Position
CALL L2212 ; Set Cursor and Print Text
;----------------------------------------------------
L135A: .TEXT "If you wish to continue"
.DB 000h
;----------------------------------------------------
POP HL ; Restore HL Register
PUSH HL ; Save HL Register
LD HL,0019Bh ; Cursor Position
CALL L2212 ; Set Cursor and Print Text
;----------------------------------------------------
L137A: .TEXT "playing this level"
.DB 000h
;----------------------------------------------------
POP HL ; Restore HL Register
LD A,(0E1A8h) ; Get Number of Credits
OR A ; Check if any credits left
JR NZ,L13B6 ; Credits left so skip ahead
PUSH HL ; Save HL Register
LD HL,001E7h ; Cursor Position
CALL L2212 ; Set Cursor and Print Text
;----------------------------------------------------
L139B: .TEXT "Insert required coins and"
.DB 000h
;----------------------------------------------------
POP HL ; Restore HL Register
L13B6: PUSH HL ; Save HL Register
LD HL,00239h ; Cursor Position
CALL L2212 ; Set Cursor and Print Text
;----------------------------------------------------
L13BD: .TEXT "Press Player 1 button"
.DB 000h
;----------------------------------------------------
POP HL ; Restore HL Register
PUSH HL ; Save HL Register
LD HL,002B0h ; Cursor Position
CALL L2212 ; Set Cursor and Print Text
;----------------------------------------------------
L13DB: .TEXT "Time left to buy-in : 9"
.DB 000h
;----------------------------------------------------
L13F4: POP HL ; Restore HL Register
CALL Delay100000 ; Call Delay 100,000
CALL L1538 ;
PUSH HL ; Save HL Register
L13FC: LD HL,002B0h ; Cursor Position
CALL L2212 ; Set Cursor and Print Text
;----------------------------------------------------
L1402: .TEXT "Time left to buy-in : 8"
.DB 000h
;----------------------------------------------------
L141B: POP HL ; Restore HL Register
CALL Delay100000 ; Call Delay 100,000
CALL L1538 ;
PUSH HL ; Save HL Register
LD HL,002B0h ; Cursor Position
CALL L2212 ; Set Cursor and Print Text
;----------------------------------------------------
L1429: .TEXT "Time left to buy-in : 7"
.DB 000h
;----------------------------------------------------
POP HL ; Restore HL Register
CALL Delay100000 ; Call Delay 100,000
CALL L1538 ;
PUSH HL ; Save HL Register
LD HL,002B0h ; Cursor Position
L144D: CALL L2212 ; Set Cursor and Print Text
;----------------------------------------------------
L1450: .TEXT "Time left to buy-in : 6"
.DB 000h
;----------------------------------------------------
POP HL ; Restore HL Register
CALL Delay100000 ; Call Delay 100,000
CALL L1538 ;
PUSH HL ; Save HL Register
LD HL,002B0h ; Cursor Position
L1474: CALL L2212 ; Set Cursor and Print Text
;----------------------------------------------------
L1476: .TEXT "Time left to buy-in : 5"
.DB 000h
;----------------------------------------------------
POP HL ; Restore HL Register
CALL Delay100000 ; Call Delay 100,000
CALL L1538
PUSH HL ; Save HL Register
LD HL,002B0h ; Cursor Position
L149B: CALL L2212 ; Set Cursor and Print Text
;----------------------------------------------------
L149E: .TEXT "Time left to buy-in : 4"
.DB 000h
;----------------------------------------------------
POP HL ; Restore HL Register
CALL Delay100000 ; Call Delay 100,000
CALL L1538
PUSH HL ; Save HL Register
LD HL,002B0h ; Cursor Position
L14C2: CALL L2212 ; Set Cursor and Print Text
;----------------------------------------------------
L14C5: .TEXT "Time left to buy-in : 3"
.DB 000h
;----------------------------------------------------
POP HL ; Restore HL Register
CALL Delay100000 ; Call Delay 100,000
CALL L1538 ;
PUSH HL ; Save HL Register
LD HL,002B0h ; Cursor Position
L14E9: CALL L2212 ; Set Cursor and Print Text
;----------------------------------------------------
L14EC: .TEXT "Time left to buy-in : 2"
.DB 000h
;----------------------------------------------------
POP HL ; Restore HL Register
CALL Delay100000 ; Call Delay 100,000
CALL L1538 ;
PUSH HL ; Save HL Register
LD HL,002B0h ; Cursor Position
L1510: CALL L2212 ; Set Cursor and Print Text
;----------------------------------------------------
L1513: .TEXT "Time left to buy-in : 1"
.DB 000h
;----------------------------------------------------
POP HL ; Restore HL Register
CALL Delay100000 ; Call Delay 100,000
CALL L1538 ;
L1533: POP BC ; Restore BC Register
POP DE ; Restore DE Register
L1535: POP IY ; Restore IY Register
L1537: RET ; Return
;----------------------------------------------------
; Buy-In Timer
;----------------------------------------------------
L1538: LD A,(0E18Ch) ; Get DIP Switches 12-19
L153B: BIT 2,A ; Check FREE PLAY (sw 14)
JR NZ,L1544 ; FREE PLAY set so skip credit check
;----------------------------------------------------
; Check if there are any credits
;----------------------------------------------------
LD A,(0E1A8h) ; Get Number of Credits
OR A ; Check Number of Credits
RET Z ; No credits so return
L1544: LD A,(0E192h) ; Get Button Data
;----------------------------------------------------
; Check for Player1 Button
;----------------------------------------------------
BIT 2,A ; Check PLAYER1 Button pressed
RET Z ; Not pressed so return
L154A: RES 2,A ; Clear PLAYER1 Button press
LD (0E192h),A ; Save modified Button Data
LD DE,00000h ;
LD (0E127h),DE ;
LD DE,0E0A2h ;
LD A,001h ;
LD (0E12Ah),A ;
L155E: CALL L0FA1 ; Call 3-Digit Addition
CALL L10E5 ; Sum Total Coins
CALL L1F55 ;
CALL L1F70 ; Add Number of Lives per Credit
INC SP ;
L156B: INC SP ;
JP L1533 ;
;----------------------------------------------------
; Update Bookkeeping Data
;----------------------------------------------------
; Add Game Timer to Total Play Time
;----------------------------------------------------
L156F: XOR A ; A = 0
LD (0E127h),A ; Store zero in thousands
LD HL,(0E1C4h) ; Get Game Play Timer
LD (0E128h),HL ; Store in temp add location
LD A,(0E1C6h) ; Get Game Play Timer
LD (0E12Ah),A ; Store in temp add location
LD DE,0E0AAh ; DE = Bookkeeping Total Play Time (ones)
CALL L0FA1 ; Call 3-Digit Addition
;----------------------------------------------------
; Check for Longest Game Play Time
;----------------------------------------------------
L1585: LD B,003h ; 3 digits to check
LD DE,0E1C4h ; DE = Game Play Time
LD HL,0E0ABh ; HL = Longest Time
L158D: LD A,(DE) ; Get Game Play Time digit
CP (HL) ; Compare it to Longest
JR C,L15A7 ; Less than longest, so check shortest
JR Z,L1596 ; Digits equal check next digit
JP NC,L159C | |