![]() |
Routines |
| Prev: C3EA | Up: Map | Next: C5EB |
|
Used by the routine at C3C0.
|
|||||||||||||||
| Duel_Prep | C422 | LD HL,$C3EA | Copies 33 bytes of data from Duel_Data to Dueller_01 (and across all three duellists). | ||||||||||||
| C425 | LD DE,$5BC0 | ||||||||||||||
| C428 | LD BC,$0033 | ||||||||||||||
| C42B | LDIR | ||||||||||||||
| C42D | POP DE | ||||||||||||||
| C42E | POP BC | ||||||||||||||
| C42F | LD A,B | ||||||||||||||
| C430 | LD IX,$5BC0 | Calls Update_Duel_Timer with Dueller_01. | |||||||||||||
| C434 | CALL Update_Duel_Timer | ||||||||||||||
| C437 | LD A,C | ||||||||||||||
| C438 | LD IX,$5BD1 | Calls Update_Duel_Timer with Dueller_02. | |||||||||||||
| C43C | CALL Update_Duel_Timer | ||||||||||||||
| C43F | LD A,D | ||||||||||||||
| C440 | LD IX,$5BE2 | Calls Update_Duel_Timer with Dueller_03. | |||||||||||||
| C444 | CALL Update_Duel_Timer | ||||||||||||||
| C447 | XOR A | Reset the flags (writes 00 to Duel_Bang_Flag, Duel_Lose_Life and Duel_Extra_Life). | |||||||||||||
| C448 | LD HL,$C6E2 | ||||||||||||||
| C44B | LD (HL),A | ||||||||||||||
| C44C | INC HL | ||||||||||||||
| C44D | LD (HL),A | ||||||||||||||
| C44E | INC HL | ||||||||||||||
| C44F | LD (HL),A | ||||||||||||||
| C450 | LD A,($C421) | C421. | |||||||||||||
| C453 | OR $01 | ||||||||||||||
| C455 | CP $20 | ||||||||||||||
| C457 | LD DE,$0001 | ||||||||||||||
| C45A | JR NC,Duel_Clear_Screen | ||||||||||||||
| C45C | LD B,A | ||||||||||||||
| C45D | LD DE,$0020 | ||||||||||||||
| Duel_Prep_Loop | C460 | DEC DE | |||||||||||||
| C461 | DJNZ Duel_Prep_Loop | ||||||||||||||
| Duel_Clear_Screen | C463 | LD ($C52E),DE | .... | ||||||||||||
|
Clears down the screen buffer.
|
|||||||||||||||
| C467 | LD HL,$4000 | Writes 00 to all 1AFF bytes of the screen buffer (i.e. "blanks it"). | |||||||||||||
| C46A | LD DE,$4001 | ||||||||||||||
| C46D | LD BC,$1AFF | ||||||||||||||
| C470 | XOR A | ||||||||||||||
| C471 | LD (HL),A | ||||||||||||||
| C472 | LDIR | ||||||||||||||
|
Writes the attributes for the playfield (sky, grass, footer).
|
|||||||||||||||
| C474 | LD HL,$5880 | Writes 28 to 5880 in the attribute buffer 0180 times...
|
|||||||||||||
| C477 | LD DE,$5881 | ||||||||||||||
| C47A | LD BC,$0180 | ||||||||||||||
| C47D | LD (HL),$28 | ||||||||||||||
| C47F | LDIR | ||||||||||||||
| C481 | LD (HL),$20 | ...continuing, writes 20 80 times...
|
|||||||||||||
| C483 | LD BC,$0080 | ||||||||||||||
| C486 | LDIR | ||||||||||||||
| C488 | LD (HL),$07 | ...and finally, writes 07 7F times.
|
|||||||||||||
| C48A | LD BC,$007F | ||||||||||||||
| C48D | LDIR | ||||||||||||||
|
Creates the footer.
|
|||||||||||||||
| C48F | LD HL,$C655 | Point to Playfield_Lives and print using Duel_Print_Lives. | |||||||||||||
| C492 | CALL Duel_Print_Lives | ||||||||||||||
| C495 | CALL Draw_Lives_Images_Alias | ||||||||||||||
| C498 | LD HL,$C64D | Point to Playfield_Score and prints using Print_TwoToneText_Alias.
|
|||||||||||||
| C49B | LD DE,$50C0 | ||||||||||||||
| C49E | LD BC,$0703 | ||||||||||||||
| C4A1 | CALL Print_TwoToneText_Alias | ||||||||||||||
| C4A4 | CALL Draw_Score_Alias | Writes the players score. | |||||||||||||
|
Initialise duellers.
|
|||||||||||||||
| C4A7 | LD IX,$5BC0 | Initialise Dueller_01 (draws frame 1). | |||||||||||||
| C4AB | LD A,(IX+$0A) | ||||||||||||||
| C4AE | CALL Duel_Draw_Bandit_Prep | ||||||||||||||
| C4B1 | LD IX,$5BD1 | Initialise Dueller_02 (draws frame 1). | |||||||||||||
| C4B5 | LD A,(IX+$0A) | ||||||||||||||
| C4B8 | CALL Duel_Draw_Bandit_Prep | ||||||||||||||
| C4BB | LD IX,$5BE2 | Initialise Dueller_03 (draws frame 1). | |||||||||||||
| C4BF | LD A,(IX+$0A) | ||||||||||||||
| C4C2 | CALL Duel_Draw_Bandit_Prep | ||||||||||||||
|
Count down 5-4-3-2-1...0!
|
|||||||||||||||
| Countdown_Initialise | C4C5 | LD A,$35 | Initialise countdown to "5" seconds (35 in ASCII), hold this at Duel_Timer. | ||||||||||||
| Countdown_Loop | C4C7 | PUSH AF | |||||||||||||
| C4C8 | LD ($C6E0),A | ||||||||||||||
| C4CB | CALL Duel_Print_Countdown | ||||||||||||||
| C4CE | LD B,$31 | Short halt loop (1 second pause). | |||||||||||||
| Countdown_Halt_Loop | C4D0 | HALT | |||||||||||||
| C4D1 | DJNZ Countdown_Halt_Loop | ||||||||||||||
| C4D3 | POP AF | Keep looping back to Countdown_Loop until the countdown is "0" (30 in ASCII). | |||||||||||||
| C4D4 | DEC A | ||||||||||||||
| C4D5 | CP $30 | ||||||||||||||
| C4D7 | JR NZ,Countdown_Loop | ||||||||||||||
| C4D9 | LD A,$20 | Blank the countdown timer by printing a "SPACE" (20 in ASCII) over the top of it. | |||||||||||||
| C4DB | LD ($C6E0),A | ||||||||||||||
| C4DE | CALL Duel_Print_Countdown | ||||||||||||||
| C4E1 | JR Duel_Start | Jump to Duel_Start and start the duel! | |||||||||||||
| Duel_Loop | C4E3 | LD IX,$5BC0 | Calls Duel_Actions with Dueller_01. | ||||||||||||
| C4E7 | CALL Duel_Actions | ||||||||||||||
| C4EA | LD IX,$5BD1 | Calls Duel_Actions with Dueller_02. | |||||||||||||
| C4EE | CALL Duel_Actions | ||||||||||||||
| C4F1 | LD IX,$5BE2 | Calls Duel_Actions with Dueller_03. | |||||||||||||
| C4F5 | CALL Duel_Actions | ||||||||||||||
| C4F8 | RET | Return. | |||||||||||||
|
DRAW!
|
|||||||||||||||
| Duel_Start | C4F9 | LD DE,($C52E) | DE=C52E and push it on the stack. | ||||||||||||
| Duel_Start_Loop | C4FD | PUSH DE | |||||||||||||
| C4FE | CALL Duel_Loop | ||||||||||||||
| C501 | POP DE | ||||||||||||||
| C502 | DEC DE | ||||||||||||||
| C503 | LD A,D | ||||||||||||||
| C504 | OR E | ||||||||||||||
| C505 | JR NZ,Duel_Start_Loop | ||||||||||||||
| C507 | LD IX,$5BC0 | ||||||||||||||
| C50B | CALL Duel_Prep_1 | ||||||||||||||
| C50E | LD IX,$5BD1 | ||||||||||||||
| C512 | CALL Duel_Prep_1 | ||||||||||||||
| C515 | LD IX,$5BE2 | ||||||||||||||
| C519 | CALL Duel_Prep_1 | ||||||||||||||
| C51C | LD IX,$5BC0 | ||||||||||||||
| C520 | LD A,(IX+$08) | ||||||||||||||
| C523 | OR (IX+$19) | ||||||||||||||
| C526 | OR (IX+$2A) | ||||||||||||||
| C529 | JP Z,Duel_Complete | ||||||||||||||
| C52C | JR Duel_Start | ||||||||||||||
| C52E | DEFW $001F | ||||||||||||||
| Duel_Actions | C530 | CALL Duel_Action_01 | |||||||||||||
| C533 | CALL Duel_Action_04 | ||||||||||||||
| C536 | CALL Duel_Action_02 | ||||||||||||||
| C539 | CALL Duel_Action_04 | ||||||||||||||
| C53C | CALL Duel_Action_03 | ||||||||||||||
| C53F | CALL Duel_Action_04 | ||||||||||||||
| C542 | RET | Return. | |||||||||||||
| Duel_Action_01 | C543 | CALL Jump_Control_Method | Calls Jump_Control_Method. | ||||||||||||
| C546 | BIT 4,A | Return if bit 4 of A is zero. | |||||||||||||
| C548 | RET Z | ||||||||||||||
| C549 | BIT 0,A | If bit 0 is not zero then return setting A to 03. | |||||||||||||
| C54B | LD A,$03 | ||||||||||||||
| C54D | RET NZ | ||||||||||||||
| C54E | XOR A | Set A to zero and return. | |||||||||||||
| C54F | RET | ||||||||||||||
| Duel_Action_02 | C550 | CALL Jump_Control_Method | Calls Jump_Control_Method. | ||||||||||||
| C553 | BIT 4,A | Return if bit 4 of A is zero. | |||||||||||||
| C555 | RET Z | ||||||||||||||
| C556 | BIT 1,A | If bit 1 is not zero then return setting A to 01. | |||||||||||||
| C558 | LD A,$01 | ||||||||||||||
| C55A | RET NZ | ||||||||||||||
| C55B | XOR A | Set A to zero and return. | |||||||||||||
| C55C | RET | ||||||||||||||
| Duel_Action_03 | C55D | CALL Jump_Control_Method | |||||||||||||
| C560 | BIT 4,A | ||||||||||||||
| C562 | RET Z | ||||||||||||||
| C563 | AND $03 | ||||||||||||||
| C565 | LD A,$00 | ||||||||||||||
| C567 | RET NZ | ||||||||||||||
| C568 | LD A,$02 | ||||||||||||||
| C56A | RET | Return. | |||||||||||||
| Duel_Action_04 | C56B | CP (IX+$03) | If the dueller position has been changed to zero then jump to Duel_Dunno. | ||||||||||||
| C56E | JR Z,Duel_Dunno | ||||||||||||||
| C570 | LD (IX+$0D),$00 | ||||||||||||||
| C574 | RET | Return. | |||||||||||||
| Duel_Dunno | C575 | LD A,(IX+$0D) | |||||||||||||
| C578 | AND A | ||||||||||||||
| C579 | RET NZ | ||||||||||||||
| C57A | LD A,$01 | ||||||||||||||
| C57C | LD (IX+$0D),A | ||||||||||||||
| C57F | LD (IX+$00),A | Set dueller state to 01. | |||||||||||||
| C582 | RET | Return. | |||||||||||||
|
This entry point is used by the routines at Print_BonusScore and Dueller_Shot.
|
|||||||||||||||
| Duel_Prep_0 | C583 | PUSH IX | |||||||||||||
| C585 | CALL Shot_Sound_01_Alias | ||||||||||||||
| C588 | POP IX | ||||||||||||||
| C58A | RET | ||||||||||||||
| Duel_Prep_1 | C58B | LD A,(IX+$08) | If IX+$08 is zero then return. | ||||||||||||
| C58E | AND A | ||||||||||||||
| C58F | RET Z | ||||||||||||||
| C590 | LD A,(IX+$09) | If dueller frame index is 01 then jump to Duel_Prep_2. | |||||||||||||
| C593 | DEC A | ||||||||||||||
| C594 | JR Z,Duel_Prep_2 | ||||||||||||||
| C596 | DEC A | If dueller frame index is 02 then jump to Duel_Prep_3. | |||||||||||||
| C597 | JR Z,Duel_Prep_3 | ||||||||||||||
| C599 | DEC A | If dueller frame index is 03 then jump to Duel_Prep_4. | |||||||||||||
| C59A | JR Z,Duel_Prep_4 | ||||||||||||||
| C59C | DEC A | If dueller frame index is 04 then jump to Duel_Prep_5. | |||||||||||||
| C59D | JR Z,Duel_Prep_5 | ||||||||||||||
| C59F | JR Duel_Prep_6 | Jump to Duel_Prep_6. | |||||||||||||
| Duel_Prep_2 | C5A1 | LD HL,$C6E5 | Dueller_Shot. | ||||||||||||
| C5A4 | CALL Dueller_Down | ||||||||||||||
| C5A7 | DEC (IX+$01) | ||||||||||||||
| C5AA | RET NZ | ||||||||||||||
| C5AB | INC (IX+$09) | ||||||||||||||
| C5AE | LD A,(IX+$0B) | ||||||||||||||
| C5B1 | CALL Duel_Draw_Bandit_Prep | ||||||||||||||
| C5B4 | RET | ||||||||||||||
| Duel_Prep_3 | C5B5 | DEC (IX+$10) | |||||||||||||
| C5B8 | RET NZ | ||||||||||||||
| C5B9 | INC (IX+$09) | ||||||||||||||
| C5BC | RET | ||||||||||||||
| Duel_Prep_4 | C5BD | LD HL,$C5F6 | |||||||||||||
| C5C0 | CALL Dueller_Down | ||||||||||||||
| C5C3 | DEC (IX+$02) | ||||||||||||||
| C5C6 | RET NZ | ||||||||||||||
| C5C7 | LD (IX+$08),A | ||||||||||||||
| C5CA | INC A | ||||||||||||||
| C5CB | LD ($C6E2),A | ||||||||||||||
| C5CE | RET | ||||||||||||||
| Duel_Prep_5 | C5CF | DEC (IX+$0E) | |||||||||||||
| C5D2 | RET NZ | ||||||||||||||
| C5D3 | INC (IX+$09) | ||||||||||||||
| C5D6 | LD A,(IX+$0C) | ||||||||||||||
| C5D9 | CALL Duel_Draw_Bandit_Prep | ||||||||||||||
| C5DC | RET | ||||||||||||||
| Duel_Prep_6 | C5DD | DEC (IX+$0F) | |||||||||||||
| C5E0 | RET NZ | ||||||||||||||
| C5E1 | LD A,$02 | ||||||||||||||
| C5E3 | CALL Duel_Draw_Bandit_Prep | ||||||||||||||
| C5E6 | LD (IX+$08),$00 | ||||||||||||||
| C5EA | RET | ||||||||||||||
| Prev: C3EA | Up: Map | Next: C5EB |