Prev: 9240 Up: Map Next: 9663
9470: The game has just loaded
9470 DI Disable interrupts
9471 XOR A A=0
9472 LD ($A247),A Initialise input device type to $00
9475 LD ($A25B),A Initialise to 0 the number of room to display in attract-mode
9478 CALL $DAC0 Main loop for the tile screen
947B LD HL,$E4FF Clear the attribute buffer for HUD and room
947E LD DE,$E500
9481 LD BC,$02FF
9484 LD (HL),$00
9486 LDIR
9488 LD HL,$000A Set the minimum score for the game to 1000 = $0A * 100
948B LD ($A224),HL
Initialise data buffers and game states variables. This entry point is used by the routine at 9D68.
948E CALL $A793 Initialise drones configuration data buffer
9491 LD A,$08 Initialise laser duration to 8
9493 LD ($A201),A
9496 XOR A Set A=0
9497 OUT ($FE),A Reset keyboard reading
9499 LD ($A20A),A Set Rex to be mortal
949C LD A,$00 Set current room number
949E LD ($A251),A
94A1 XOR A Set A=0
94A2 LD ($A268),A Set FINAL BOSS alive
94A5 LD ($A202),A Set the respawn indicator index value for animatio
94A8 LD ($A203),A Set the shield recharger index value for animation
94AB LD ($A215),A Initialized but never used
94AE LD ($A202),A Duplicated code
94B1 LD ($A204),A Initialized but never used
94B4 LD ($A1F4),A Number of room in the last saved respawn
94B7 LD ($A1F5),A Set current room not configured
94BA LD ($A20B),A Set Rex speed to normal
94BD LD ($A20C),A
94C0 LD ($AC5D),A Initialize variable related to DOUBLE FIRE weapon selection windows
94C3 LD ($AC6E),A Initialize variable related to LASER weapon selection windows
94C6 LD ($AC79),A Initialize variable related to MULTIPLE weapon selection windows
94C9 LD ($AC87),A Initialize variable related to SPRAY weapon selection windows
94CC LD ($A1EE),A Set Rex alive
94CF XOR A
94D0 LD ($A1FD),A Set time bar update slot index
94D3 LD ($A1FF),A Set time bar update direction to right
94D6 LD HL,$0313 Initialise seed for pseudo random number generator
94D9 LD ($A23A),HL
94DC LD A,$11
94DE LD ($A23C),A
94E1 LD HL,($A263) Set HL the score from Rex (Side A)
94E4 LD ($A1D7),HL Set the initial score
94E7 LD ($A222),HL Set the initial number of humans killed
94EA LD A,($A267) Set A the number of lives from Rex (Side A)
94ED LD ($A1FC),A Set the initial number of lives
94F0 LD A,($A266) Set A the number of smartbombs from Rex (Side A)
94F3 LD ($A205),A Set the initial number of smartbombs
94F6 CALL $BAC6 Initialise weapon data (laser in use)
94F9 LD A,($A265) Set A the shield power
94FC LD ($A1E6),A Set the initial shield power
94FF LD A,$02 Set shield loss counter
9501 LD ($A1E7),A
9504 LD HL,($A1D7) Computes and set the increment lives score counter. Lives score counter = Score counter from Rex (Side A) mod 100
9507 LD DE,$0064
950A AND A
950B SBC HL,DE
950D JP NC,$950A
9510 ADD HL,DE
9511 LD ($A20F),HL
9514 LD A,$01 Set machine gun weapon available
9516 LD ($A1E8),A
9519 XOR A Set rapid shots inactive
951A LD ($A1D9),A
951D LD ($A1D1),A Initialized but never used
9520 LD ($A1C9),A Set to not destroy all enemies
9523 LD ($A24C),A Initialized but never used
9526 LD ($A1E2),A Set shield power inactive
9529 LD A,$70 Set initial Rex x-position
952B LD ($A24F),A
952E LD ($A1F2),A Set initial respawn x-position
9531 LD A,$30 Set initial Rex y-position
9533 LD ($A250),A
9536 LD ($A1F3),A Set initial respawn y-position
9539 XOR A
953A LD ($A254),A Set Rex facing right
953D LD ($A256),A Set Rex to not jumping
9540 LD ($A22A),A Set speed of Rex
9543 LD ($A255),A Set Rex to not falling
9546 XOR A
9547 LD ($A1B1),A Set weapon energy quantity
954A LD A,$FF Set HUD flash ianctive
954C LD ($A1DB),A
954F LD A,$00
9551 CALL $A556 Reset display and attribute file
9554 CALL $A34D Draw HUD
9557 CALL $98D9 Draws lives number on HUD
955A CALL $98C9 Draw score on HUD
955D CALL $BC0B Copy the attribute file of the HUD to the attribute buffer
9560 LD IX,$AAF7 Point IX to text definition for game start
9564 LD B,$03 Set B the number of lines to show
9566 CALL $A2E6 Draws windows for game start
9569 CALL $97AB Reset sound buffer, volume channels and check for FIRE key
956C LD IX,$ABE2 Point IX to text definition for press key
9570 LD B,$02 Set B the number of lines to show
9572 CALL $A2E6 Draws windows for press key
9575 CALL $97AB Reset sound data and wait some time for FIRE key
9578 LD A,($A22C) Check if FIRE key ispressed
957B OR A
957C JP Z,$A98E Jump to attract-mode if FIRE key not pressed
957F CALL $D346 Reset sound data buffer
9582 CALL $9E15 Configure data for Rex teleporting when game begins
Main loop for the game. This entry point is used by the routines at 9D68 and C9CD.
9585 CALL $A939 Configure current room
9588 CALL $B694 Draw Rex projectiles
958B CALL $B68B Draw enemy projectiles
958E CALL $A7A4 Draw drones for multiple weapon
9591 CALL $9683 Draw Rex and shield
9594 CALL $9E67 Handle Rex visibility during teleporting
9597 CALL $9F9B Handle Rex atoms flush during teleporting
959A CALL $BC48 Draw enemies
959D CALL $D424 Play sound channels
95A0 CALL $B384 Copy tile graphic into room graphic data
95A3 LD A,($A268) Jump to handle explosions if FINAL BOSS is dead
95A6 OR A
95A7 CALL NZ,$99E3
95AA CALL $A432 Copy room graphic buffer to display file
95AD CALL $B243 Reset room graphic buffer
95B0 CALL $D424 Play sound channels
95B3 CALL $CF59 Handle enemy projectile collision with Rex
95B6 CALL $B9E6 Update color attribute for weapon icon on HUD
95B9 CALL $C9E3 Generate train parts: front, middle or rear wagon. No trains in Rex (Side B)
95BC CALL $CA35 Creates a new mobile enemy on room
95BF CALL $976E Destroy an enemy if smartbomb released or Rex dead
95C2 CALL $98B0 Update attribute color for score points in HUD
95C5 CALL $996A HUD flash
95C8 CALL $A26C Update timer bar in HUD
95CB CALL $A683 Check if DOWN key pressed
95CE CALL Z,$9667 Active/inactive shield power if keypressed
95D1 CALL $A683 Check if DOWN key pressed
95D4 JP Z,$95DB Jump forward if DOWN key is still pressed
95D7 XOR A Set Shield power key not hold down
95D8 LD ($A1E5),A
95DB LD BC,$BFFE Check if RESET key (ENTER) is pressed
95DE IN A,(C)
95E0 BIT 0,A
95E2 JP Z,$948E Jump back to reset game
95E5 LD BC,$BFFE Check if PAUSE key (H) is pressed
95E8 IN A,(C)
95EA BIT 4,A
95EC CALL Z,$A68F Pause game if pressed
95EF LD BC,$7FFE Check if SMARTBOMB key (SPACE) is pressed
95F2 IN A,(C)
95F4 BIT 0,A
95F6 CALL Z,$9739 Release a smartbomb if pressed
95F9 LD A,($A24F) Copy x-position of Rex into A248
95FC LD ($A248),A
95FF LD A,($A250) Copy y-position of Rex into A250
9602 LD ($A249),A
9605 LD A,($A254) Set A the face direction of Rex
9608 CALL $A6AB Computes address position in tile type buffer based on (x,y) position on screen
960B LD ($A1B2),HL Set this address into A1EE
960E LD A,($A1EE) Jump forward if Rex is dead
9611 OR A
9612 JP NZ,$9655
Rex is alive
9615 LD A,($A1D9) Jump forward if no rapid shots
9618 OR A
9619 JP Z,$9620
961C XOR A Set FIRE key not hold down
961D LD ($A1AB),A
9620 CALL $A61F Check if FIRE key is pressed
9623 CALL Z,$B3B8 Fire weapon if pressed
9626 CALL $A61F Check if FIRE key is pressed
9629 JP Z,$9630 Jump forward if key is still pressed
962C XOR A Set FIRE key not hold down
962D LD ($A1AB),A
9630 LD A,($A268) Jump forward if FINAL BOSS is dead
9633 OR A
9634 JP NZ,$9643
9637 CALL $A651 Check if RIGHT key is pressed
963A CALL Z,$CD52 Jump to move Rex right if key pressed
963D CALL $A638 Check if LEFT key is pressed
9640 CALL Z,$CD6E Jump to move Rex left is key pressed
9643 CALL $A66A Check if UP key is pressed
9646 CALL Z,$CE52 Jump to set Rex jump is key pressed
9649 CALL $CE74 Handle Rex jumping
964C CALL $CEE5 Handle Rex falling
964F CALL $CD8B Handle Rex lateral movement
9652 CALL $A0F8 Handle Rex over special tiles
9655 CALL $A706 Update arrow tiles, shield recharger and respawn indicator
9658 LD A,($A1B0) Change tilt arrow tiles indicator
965B XOR $01
965D LD ($A1B0),A
9660 JP $9588 Jump back to main loop game
Prev: 9240 Up: Map Next: 9663