![]() |
Routines |
| Prev: 50154 | Up: Map | Next: 50667 |
|
Used by the routine at 50112.
|
|||||||||||||||
| Duel_Prep | 50210 | LD HL,50154 | Copies 51 bytes of data from Duel_Data to Dueller_01 (and across all three duellists). | ||||||||||||
| 50213 | LD DE,23488 | ||||||||||||||
| 50216 | LD BC,51 | ||||||||||||||
| 50219 | LDIR | ||||||||||||||
| 50221 | POP DE | ||||||||||||||
| 50222 | POP BC | ||||||||||||||
| 50223 | LD A,B | ||||||||||||||
| 50224 | LD IX,23488 | Calls Update_Duel_Timer with Dueller_01. | |||||||||||||
| 50228 | CALL Update_Duel_Timer | ||||||||||||||
| 50231 | LD A,C | ||||||||||||||
| 50232 | LD IX,23505 | Calls Update_Duel_Timer with Dueller_02. | |||||||||||||
| 50236 | CALL Update_Duel_Timer | ||||||||||||||
| 50239 | LD A,D | ||||||||||||||
| 50240 | LD IX,23522 | Calls Update_Duel_Timer with Dueller_03. | |||||||||||||
| 50244 | CALL Update_Duel_Timer | ||||||||||||||
| 50247 | XOR A | Reset the flags (writes 0 to Duel_Bang_Flag, Duel_Lose_Life and Duel_Extra_Life). | |||||||||||||
| 50248 | LD HL,50914 | ||||||||||||||
| 50251 | LD (HL),A | ||||||||||||||
| 50252 | INC HL | ||||||||||||||
| 50253 | LD (HL),A | ||||||||||||||
| 50254 | INC HL | ||||||||||||||
| 50255 | LD (HL),A | ||||||||||||||
| 50256 | LD A,(50209) | 50209. | |||||||||||||
| 50259 | OR 1 | ||||||||||||||
| 50261 | CP 32 | ||||||||||||||
| 50263 | LD DE,1 | ||||||||||||||
| 50266 | JR NC,Duel_Clear_Screen | ||||||||||||||
| 50268 | LD B,A | ||||||||||||||
| 50269 | LD DE,32 | ||||||||||||||
| Duel_Prep_Loop | 50272 | DEC DE | |||||||||||||
| 50273 | DJNZ Duel_Prep_Loop | ||||||||||||||
| Duel_Clear_Screen | 50275 | LD (50478),DE | .... | ||||||||||||
|
Clears down the screen buffer.
|
|||||||||||||||
| 50279 | LD HL,16384 | Writes 0 to all 6911 bytes of the screen buffer (i.e. "blanks it"). | |||||||||||||
| 50282 | LD DE,16385 | ||||||||||||||
| 50285 | LD BC,6911 | ||||||||||||||
| 50288 | XOR A | ||||||||||||||
| 50289 | LD (HL),A | ||||||||||||||
| 50290 | LDIR | ||||||||||||||
|
Writes the attributes for the playfield (sky, grass, footer).
|
|||||||||||||||
| 50292 | LD HL,22656 | Writes 40 to 22656 in the attribute buffer 384 times...
|
|||||||||||||
| 50295 | LD DE,22657 | ||||||||||||||
| 50298 | LD BC,384 | ||||||||||||||
| 50301 | LD (HL),40 | ||||||||||||||
| 50303 | LDIR | ||||||||||||||
| 50305 | LD (HL),32 | ...continuing, writes 32 128 times...
|
|||||||||||||
| 50307 | LD BC,128 | ||||||||||||||
| 50310 | LDIR | ||||||||||||||
| 50312 | LD (HL),7 | ...and finally, writes 7 127 times.
|
|||||||||||||
| 50314 | LD BC,127 | ||||||||||||||
| 50317 | LDIR | ||||||||||||||
|
Creates the footer.
|
|||||||||||||||
| 50319 | LD HL,50773 | Point to Playfield_Lives and print using Duel_Print_Lives. | |||||||||||||
| 50322 | CALL Duel_Print_Lives | ||||||||||||||
| 50325 | CALL Draw_Lives_Images_Alias | ||||||||||||||
| 50328 | LD HL,50765 | Point to Playfield_Score and prints using Print_TwoToneText_Alias.
|
|||||||||||||
| 50331 | LD DE,20672 | ||||||||||||||
| 50334 | LD BC,1795 | ||||||||||||||
| 50337 | CALL Print_TwoToneText_Alias | ||||||||||||||
| 50340 | CALL Draw_Score_Alias | Writes the players score. | |||||||||||||
|
Initialise duellers.
|
|||||||||||||||
| 50343 | LD IX,23488 | Initialise Dueller_01 (draws frame 1). | |||||||||||||
| 50347 | LD A,(IX+10) | ||||||||||||||
| 50350 | CALL Duel_Draw_Bandit_Prep | ||||||||||||||
| 50353 | LD IX,23505 | Initialise Dueller_02 (draws frame 1). | |||||||||||||
| 50357 | LD A,(IX+10) | ||||||||||||||
| 50360 | CALL Duel_Draw_Bandit_Prep | ||||||||||||||
| 50363 | LD IX,23522 | Initialise Dueller_03 (draws frame 1). | |||||||||||||
| 50367 | LD A,(IX+10) | ||||||||||||||
| 50370 | CALL Duel_Draw_Bandit_Prep | ||||||||||||||
|
Count down 5-4-3-2-1...0!
|
|||||||||||||||
| Countdown_Initialise | 50373 | LD A,53 | Initialise countdown to "5" seconds (53 in ASCII), hold this at Duel_Timer. | ||||||||||||
| Countdown_Loop | 50375 | PUSH AF | |||||||||||||
| 50376 | LD (50912),A | ||||||||||||||
| 50379 | CALL Duel_Print_Countdown | ||||||||||||||
| 50382 | LD B,49 | Short halt loop (1 second pause). | |||||||||||||
| Countdown_Halt_Loop | 50384 | HALT | |||||||||||||
| 50385 | DJNZ Countdown_Halt_Loop | ||||||||||||||
| 50387 | POP AF | Keep looping back to Countdown_Loop until the countdown is "0" (48 in ASCII). | |||||||||||||
| 50388 | DEC A | ||||||||||||||
| 50389 | CP 48 | ||||||||||||||
| 50391 | JR NZ,Countdown_Loop | ||||||||||||||
| 50393 | LD A,32 | Blank the countdown timer by printing a "SPACE" (32 in ASCII) over the top of it. | |||||||||||||
| 50395 | LD (50912),A | ||||||||||||||
| 50398 | CALL Duel_Print_Countdown | ||||||||||||||
| 50401 | JR Duel_Start | Jump to Duel_Start and start the duel! | |||||||||||||
| Duel_Loop | 50403 | LD IX,23488 | Calls Duel_Actions with Dueller_01. | ||||||||||||
| 50407 | CALL Duel_Actions | ||||||||||||||
| 50410 | LD IX,23505 | Calls Duel_Actions with Dueller_02. | |||||||||||||
| 50414 | CALL Duel_Actions | ||||||||||||||
| 50417 | LD IX,23522 | Calls Duel_Actions with Dueller_03. | |||||||||||||
| 50421 | CALL Duel_Actions | ||||||||||||||
| 50424 | RET | Return. | |||||||||||||
|
DRAW!
|
|||||||||||||||
| Duel_Start | 50425 | LD DE,(50478) | DE=50478 and push it on the stack. | ||||||||||||
| Duel_Start_Loop | 50429 | PUSH DE | |||||||||||||
| 50430 | CALL Duel_Loop | ||||||||||||||
| 50433 | POP DE | ||||||||||||||
| 50434 | DEC DE | ||||||||||||||
| 50435 | LD A,D | ||||||||||||||
| 50436 | OR E | ||||||||||||||
| 50437 | JR NZ,Duel_Start_Loop | ||||||||||||||
| 50439 | LD IX,23488 | ||||||||||||||
| 50443 | CALL Duel_Prep_1 | ||||||||||||||
| 50446 | LD IX,23505 | ||||||||||||||
| 50450 | CALL Duel_Prep_1 | ||||||||||||||
| 50453 | LD IX,23522 | ||||||||||||||
| 50457 | CALL Duel_Prep_1 | ||||||||||||||
| 50460 | LD IX,23488 | ||||||||||||||
| 50464 | LD A,(IX+8) | ||||||||||||||
| 50467 | OR (IX+25) | ||||||||||||||
| 50470 | OR (IX+42) | ||||||||||||||
| 50473 | JP Z,Duel_Complete | ||||||||||||||
| 50476 | JR Duel_Start | ||||||||||||||
| 50478 | DEFW 31 | ||||||||||||||
| Duel_Actions | 50480 | CALL Duel_Action_01 | |||||||||||||
| 50483 | CALL Duel_Action_04 | ||||||||||||||
| 50486 | CALL Duel_Action_02 | ||||||||||||||
| 50489 | CALL Duel_Action_04 | ||||||||||||||
| 50492 | CALL Duel_Action_03 | ||||||||||||||
| 50495 | CALL Duel_Action_04 | ||||||||||||||
| 50498 | RET | Return. | |||||||||||||
| Duel_Action_01 | 50499 | CALL Jump_Control_Method | Calls Jump_Control_Method. | ||||||||||||
| 50502 | BIT 4,A | Return if bit 4 of A is zero. | |||||||||||||
| 50504 | RET Z | ||||||||||||||
| 50505 | BIT 0,A | If bit 0 is not zero then return setting A to 3. | |||||||||||||
| 50507 | LD A,3 | ||||||||||||||
| 50509 | RET NZ | ||||||||||||||
| 50510 | XOR A | Set A to zero and return. | |||||||||||||
| 50511 | RET | ||||||||||||||
| Duel_Action_02 | 50512 | CALL Jump_Control_Method | Calls Jump_Control_Method. | ||||||||||||
| 50515 | BIT 4,A | Return if bit 4 of A is zero. | |||||||||||||
| 50517 | RET Z | ||||||||||||||
| 50518 | BIT 1,A | If bit 1 is not zero then return setting A to 1. | |||||||||||||
| 50520 | LD A,1 | ||||||||||||||
| 50522 | RET NZ | ||||||||||||||
| 50523 | XOR A | Set A to zero and return. | |||||||||||||
| 50524 | RET | ||||||||||||||
| Duel_Action_03 | 50525 | CALL Jump_Control_Method | |||||||||||||
| 50528 | BIT 4,A | ||||||||||||||
| 50530 | RET Z | ||||||||||||||
| 50531 | AND 3 | ||||||||||||||
| 50533 | LD A,0 | ||||||||||||||
| 50535 | RET NZ | ||||||||||||||
| 50536 | LD A,2 | ||||||||||||||
| 50538 | RET | Return. | |||||||||||||
| Duel_Action_04 | 50539 | CP (IX+3) | If the dueller position has been changed to zero then jump to Duel_Dunno. | ||||||||||||
| 50542 | JR Z,Duel_Dunno | ||||||||||||||
| 50544 | LD (IX+13),0 | ||||||||||||||
| 50548 | RET | Return. | |||||||||||||
| Duel_Dunno | 50549 | LD A,(IX+13) | |||||||||||||
| 50552 | AND A | ||||||||||||||
| 50553 | RET NZ | ||||||||||||||
| 50554 | LD A,1 | ||||||||||||||
| 50556 | LD (IX+13),A | ||||||||||||||
| 50559 | LD (IX+0),A | Set dueller state to 1. | |||||||||||||
| 50562 | RET | Return. | |||||||||||||
|
This entry point is used by the routines at Print_BonusScore and Dueller_Shot.
|
|||||||||||||||
| Duel_Prep_0 | 50563 | PUSH IX | |||||||||||||
| 50565 | CALL Shot_Sound_01_Alias | ||||||||||||||
| 50568 | POP IX | ||||||||||||||
| 50570 | RET | ||||||||||||||
| Duel_Prep_1 | 50571 | LD A,(IX+8) | If IX+$08 is zero then return. | ||||||||||||
| 50574 | AND A | ||||||||||||||
| 50575 | RET Z | ||||||||||||||
| 50576 | LD A,(IX+9) | If dueller frame index is 1 then jump to Duel_Prep_2. | |||||||||||||
| 50579 | DEC A | ||||||||||||||
| 50580 | JR Z,Duel_Prep_2 | ||||||||||||||
| 50582 | DEC A | If dueller frame index is 2 then jump to Duel_Prep_3. | |||||||||||||
| 50583 | JR Z,Duel_Prep_3 | ||||||||||||||
| 50585 | DEC A | If dueller frame index is 3 then jump to Duel_Prep_4. | |||||||||||||
| 50586 | JR Z,Duel_Prep_4 | ||||||||||||||
| 50588 | DEC A | If dueller frame index is 4 then jump to Duel_Prep_5. | |||||||||||||
| 50589 | JR Z,Duel_Prep_5 | ||||||||||||||
| 50591 | JR Duel_Prep_6 | Jump to Duel_Prep_6. | |||||||||||||
| Duel_Prep_2 | 50593 | LD HL,50917 | Dueller_Shot. | ||||||||||||
| 50596 | CALL Dueller_Down | ||||||||||||||
| 50599 | DEC (IX+1) | ||||||||||||||
| 50602 | RET NZ | ||||||||||||||
| 50603 | INC (IX+9) | ||||||||||||||
| 50606 | LD A,(IX+11) | ||||||||||||||
| 50609 | CALL Duel_Draw_Bandit_Prep | ||||||||||||||
| 50612 | RET | ||||||||||||||
| Duel_Prep_3 | 50613 | DEC (IX+16) | |||||||||||||
| 50616 | RET NZ | ||||||||||||||
| 50617 | INC (IX+9) | ||||||||||||||
| 50620 | RET | ||||||||||||||
| Duel_Prep_4 | 50621 | LD HL,50678 | |||||||||||||
| 50624 | CALL Dueller_Down | ||||||||||||||
| 50627 | DEC (IX+2) | ||||||||||||||
| 50630 | RET NZ | ||||||||||||||
| 50631 | LD (IX+8),A | ||||||||||||||
| 50634 | INC A | ||||||||||||||
| 50635 | LD (50914),A | ||||||||||||||
| 50638 | RET | ||||||||||||||
| Duel_Prep_5 | 50639 | DEC (IX+14) | |||||||||||||
| 50642 | RET NZ | ||||||||||||||
| 50643 | INC (IX+9) | ||||||||||||||
| 50646 | LD A,(IX+12) | ||||||||||||||
| 50649 | CALL Duel_Draw_Bandit_Prep | ||||||||||||||
| 50652 | RET | ||||||||||||||
| Duel_Prep_6 | 50653 | DEC (IX+15) | |||||||||||||
| 50656 | RET NZ | ||||||||||||||
| 50657 | LD A,2 | ||||||||||||||
| 50659 | CALL Duel_Draw_Bandit_Prep | ||||||||||||||
| 50662 | LD (IX+8),0 | ||||||||||||||
| 50666 | RET | ||||||||||||||
| Prev: 50154 | Up: Map | Next: 50667 |