Prev: 28019 Up: Map Next: 28363
28210: Routine at 6E32
Used by the routine at HandlerAccelerate.
28210 EX DE,HL
28211 AND A
28212 SBC HL,DE
28214 SBC A,0
28216 JR NZ,HandlerAccelerate_4
28218 EX AF,AF'
28219 LD A,H
28220 CP 128
28222 JR C,HandlerAccelerate_8
28224 EX AF,AF'
28225 JR HandlerAccelerate_4
This entry point is used by the routine at HandlerAccelerate.
28227 LD A,(24133)
28230 AND A
28231 JR Z,28244
28233 DEC A
28234 LD (24133),A
28237 JR Z,28241
28239 LD A,2
28241 LD (24135),A
28244 CALL ReadInputLR Call ReadInputLR.
28247 LD HL,(24080)
28250 LD E,24
28252 BIT 1,A
28254 JP Z,28278
28257 BIT 0,A
28259 JP Z,28268
28262 LD E,0 E=0.
28264 JR HandlerFuel Jump to HandlerFuel.
28266 LD E,24 E=24.
28268 LD D,0 D=0.
28270 ADD HL,DE
28271 LD (24080),HL
28274 JR HandlerFuel Jump to HandlerFuel.
28276 LD E,24 E=24.
28278 LD D,0 D=0.
28280 AND A
28281 SBC HL,DE
28283 LD (24080),HL
Don't "use fuel" on every frame. This routine uses the last two bits of the GameTimer (i.e. a number between 0-3) to only process every fourth frame.
HandlerFuel 28286 LD A,(24105) A=GameTimer.
28289 AND %00000011 Keep only bits 0-1.
28291 JR NZ,HandlerTemperatureGauge If the result is not zero then jump to HandlerTemperatureGauge.
Handles "using" fuel.
28293 LD A,(24077) B=0 C=Speed.
28296 LD C,A
28297 LD B,0
28299 LD HL,(24074) HL=Fuel_LSB.
A higher speed uses more fuel.
28302 SBC HL,BC HL=HL (fuel) - BC (speed).
28304 JR C,FuelSkipWrite If there's "carry" (i.e. if the player has run out of fuel) jump to FuelSkipWrite.
28306 LD (24074),HL Write HL to Fuel_LSB.
FuelSkipWrite 28309 CP 176 If the current speed is more than 176 (top speed) jump to TemperatureMaxSpeed.
28311 JR NC,TemperatureMaxSpeed
28313 CP 96 Compare current speed with 96.
Handle the temperature gauge.
HandlerTemperatureGauge 28315 LD A,(24076) A=Temperature.
28318 JR C,TemperatureDrop If there's carry set (this could be either from 28313 or 28289) then jump to TemperatureDrop.
DrawTemperatureGauge 28320 LD HL,20834 HL=20834 (screen location).
28323 CALL DrawGaugeLine Call DrawGaugeLine.
Handle the fuel gauge.
28326 LD A,(24075) A=Fuel_MSB.
28329 LD HL,20770 HL=20770 (screen location).
28332 JP DrawGaugeLine Jump to DrawGaugeLine.
Handle the temperature gauge at maximum speed.
TemperatureMaxSpeed 28335 LD A,(24076) A=Temperature.
Check if the temperature is already at the upper limit.
28338 CP 192 If the current temperature is more than 192 jump to DrawTemperatureGauge.
28340 JR NC,DrawTemperatureGauge
Go ahead and increase the temperature...
28342 INC A Increment A by one.
UpdateTemperature 28343 LD (24076),A Write the updated A (temperature) back to Temperature.
28346 JR DrawTemperatureGauge Jump to DrawTemperatureGauge.
Handles dropping the temperature gauge.
TemperatureDrop 28348 AND A If the current temperature is at zero jump to DrawTemperatureGauge.
28349 JR Z,DrawTemperatureGauge
28351 DEC A Decrease A (temperature) by one.
28352 JR UpdateTemperature Jump to UpdateTemperature.
This entry point is used by the routine at HandlerAccelerate.
28354 LD B,5 B=5.
28356 SRL H
28358 RR L
28360 DJNZ 28356 Decrease counter by one and loop back to 28356 until counter is zero.
28362 RET Return.
Prev: 28019 Up: Map Next: 28363