Prev: AADC Up: Map Next: AC3D
AB2E: Animation: Opponent Throwing
Used by the routine at Messaging_YouWin.
Animation_OpponentThrowing AB2E LD HL,$DD00 Copy 1B00 bytes of data from *PubScene to Loading.
AB31 LD DE,$4000
AB34 LD BC,$1B00
AB37 LDIR
AB39 LD BC,($9AAE) BC=*CurrentOpponent_PubScene.
AB3D LD D,$06 D=06.
AB3F LD E,$16 E=16.
AB41 CALL Draw_OpponentPubScene Call Draw_OpponentPubScene.
Self-modifying code.
AB44 LD A,$ED Writes an extra LDI to B8EA.
AB46 LD ($B8EA),A
AB49 LD A,$A0
AB4B LD ($B8EB),A
AB4E LD E,$0A E=0A.
AB50 CALL $A875 Call A875.
AB53 AND A Jump to Animation_OpponentThrowing_0 if A is not equal to 0A.
AB54 JR NZ,Animation_OpponentThrowing_0
AB56 LD HL,$48B0 HL=48B0 (screen buffer location).
AB59 LD DE,$C8BC DE=Graphics_Dog_02.
AB5C CALL Print_Dog_Frame_0 Call Print_Dog_Frame_0.
AB5F LD A,$01 Write 01 to *9AAA.
AB61 LD ($9AAA),A
Animation_OpponentThrowing_0 AB64 LD HL,$ACF6 Copy 0003 bytes of data from *Current_Total to *9B2F.
AB67 LD DE,$9B2F
AB6A LD BC,$0003
AB6D LDIR
AB6F CALL Messaging_CurrentTotal Call Messaging_CurrentTotal.
AB72 CALL LongPause Call LongPause.
AB75 CALL ClearMessagingArea Call ClearMessagingArea.
AB78 CALL PrintString_Loop Call PrintString_Loop.
AB7B DEFB $10,$07 INK: WHITE.
AB7D DEFB $11,$00 PAPER: BLACK.
AB7F DEFB $12,$01 FLASH: ON.
AB81 DEFB $16,$16,$00 PRINT AT: 16, 00.
AB84 DEFM "1ST DART" 1st-dart
AB8C DEFB $FF Terminator.
AB8D CALL Messaging_AimingAt Call Messaging_AimingAt.
AB90 CALL $AFB5 Call AFB5.
AB93 CALL $ACFB Call ACFB.
AB96 CALL Animation_ThrowingDart Call Animation_ThrowingDart.
AB99 CALL ReportOpponentScore Call ReportOpponentScore.
AB9C CALL LongPause Call LongPause.
AB9F LD A,($B412) Jump to Handler_OpponentWins if *B412 is not equal to zero.
ABA2 AND A
ABA3 JP NZ,Handler_OpponentWins
ABA6 LD A,($B417) Jump to Messaging_Bust if *B417 is not equal to zero.
ABA9 AND A
ABAA JP NZ,Messaging_Bust
ABAD CALL ClearMessagingArea Call ClearMessagingArea.
ABB0 CALL $AFB5 Call AFB5.
ABB3 CALL PrintString_Loop Call PrintString_Loop.
ABB6 DEFB $10,$07 INK: WHITE.
ABB8 DEFB $11,$00 PAPER: BLACK.
ABBA DEFB $12,$01 FLASH: ON.
ABBC DEFB $16,$16,$00 PRINT AT: 16, 00.
ABBF DEFM "2ND DART" 2nd-dart
ABC7 DEFB $FF Terminator.
ABC8 CALL Messaging_AimingAt Call Messaging_AimingAt.
ABCB CALL $ACFB Call ACFB.
ABCE CALL Animation_ThrowingDart Call Animation_ThrowingDart.
ABD1 CALL ReportOpponentScore Call ReportOpponentScore.
ABD4 CALL LongPause Call LongPause.
ABD7 LD A,($B412) Jump to Handler_OpponentWins if *B412 is not equal to 00.
ABDA AND A
ABDB JP NZ,Handler_OpponentWins
ABDE LD A,($B417) Jump to Messaging_Bust if *B417 is not equal to 00.
ABE1 AND A
ABE2 JP NZ,Messaging_Bust
ABE5 CALL ClearMessagingArea Call ClearMessagingArea.
ABE8 CALL $AFB5 Call AFB5.
ABEB CALL PrintString_Loop Call PrintString_Loop.
ABEE DEFB $10,$07 INK: WHITE.
ABF0 DEFB $11,$00 PAPER: BLACK.
ABF2 DEFB $12,$01 FLASH: ON.
ABF4 DEFB $16,$16,$00 PRINT AT: 16, 00.
ABF7 DEFM "3RD DART" 3rd-dart
ABFF DEFB $FF Terminator.
AC00 CALL Messaging_AimingAt Call Messaging_AimingAt.
AC03 CALL $ACFB Call ACFB.
AC06 CALL Animation_ThrowingDart Call Animation_ThrowingDart.
AC09 CALL ReportOpponentScore Call ReportOpponentScore.
AC0C CALL LongPause Call LongPause.
AC0F LD A,($B412) Jump to Handler_OpponentWins if *B412 is not equal to 00.
AC12 AND A
AC13 JP NZ,Handler_OpponentWins
AC16 LD A,($B417) Jump to Messaging_Bust if *B417 is not equal to 00.
AC19 AND A
AC1A JP NZ,Messaging_Bust
This entry point is used by the routine at Messaging_Bust.
Animation_OpponentThrowing_1 AC1D LD A,($9AAA) Call Animation_Dog if *9AAA is not equal to 00.
AC20 AND A
AC21 CALL NZ,Animation_Dog
AC24 LD HL,$ACF6 Copy 0003 bytes of data from *Current_Total to *FinalTotal.
AC27 LD DE,$ACD4
AC2A LD BC,$0003
AC2D LDIR
AC2F CALL ClearMessagingArea Call ClearMessagingArea.
AC32 CALL Messaging_FinalTotal Call Messaging_FinalTotal.
AC35 CALL LongPause Call LongPause.
AC38 XOR A Write 00 to *9AAA.
AC39 LD ($9AAA),A
AC3C RET Return.
Prev: AADC Up: Map Next: AC3D