Prev: 46759 Up: Map Next: 47017
46780: Handler: Bull
Used by the routine at Handler_Madrid.
Handler_Bull 46780 LD A,(61434) Jump to Handler_Bull_Play if the player has not been hit by the bull.
46783 CP 8
46785 JR NZ,Handler_Bull_Play
46787 LD SP,(39342) SP=*39342.
46791 RET Return.
The player is still alive!
Handler_Bull_Play 46792 LD A,0 Write 0 to *39338.
46794 LD (39338),A
46797 LD IX,29272 IX=29272.
46801 LD A,(29191) Jump to Handler_Bull_0 if *29191 is equal to 1.
46804 CP 1
46806 JR Z,Handler_Bull_0
46808 CP 5 Return if *29191 is not equal to 5.
46810 RET NZ
Handler_Bull_0 46811 DEC (IX+0) Decrease *IX+0 by one.
46814 JP NZ,Handler_Bull_8 Jump to Handler_Bull_8 if A is not zero.
46817 LD (IX+0),1 Write 1 to *IX+0.
46821 LD HL,29272 HL=29272.
46824 CALL 37945 Call 37945.
46827 BIT 5,(IX+6) Test bit 5 of *IX+6.
46831 JR NZ,Handler_Bull_3 Jump to Handler_Bull_3 if A is not zero.
46833 DEC (IX+7) Decrease *IX+7 by one.
46836 JR Z,Handler_Bull_4 Jump to Handler_Bull_4 if A is zero.
46838 LD L,(IX+1) L=*IX+1.
46841 LD H,(IX+2) H=*IX+2.
46844 CALL 37749 Call 37749.
46847 AND %01000001 Keep only bits 0 and 6.
46849 JR Z,Handler_Bull_1 Jump to Handler_Bull_1 if A is zero.
46851 CP 1 Jump to Handler_Bull_4 if A is equal to 1.
46853 JR Z,Handler_Bull_4
46855 LD A,8 Write 00001000 ("Hit By The Bull") to *GameState_1.
46857 LD (61434),A
46860 JP 39206 Jump to 39206.
Handler_Bull_1 46863 LD A,122 Jump to Handler_Bull_4 if 122 is equal to H.
46865 CP H
46866 JR Z,Handler_Bull_4
46868 LD (IX+4),L Write L to *IX+4.
46871 LD (IX+5),H Write H to *IX+5.
46874 SET 5,(IX+6) Set bit 5 of *IX+6.
Handler_Bull_2 46878 JP 39206 Jump to 39206.
Handler_Bull_3 46881 RES 5,(IX+6) Reset bit 5 of *IX+6.
46885 JR Handler_Bull_2 Jump to Handler_Bull_2.
Handler_Bull_4 46887 CALL 38871 Call 38871.
46890 LD A,H Jump to Handler_Bull_5 if H is higher than L.
46891 CP L
46892 JR NC,Handler_Bull_5
46894 LD A,C A=C.
46895 LD C,B C=B.
46896 LD B,A B=A.
Handler_Bull_5 46897 LD A,(IX+6) A=*IX+6.
46900 AND %00011000 Keep only bits 3-4.
46902 XOR %00010000 Flip bit 4.
46904 CP B Compare A with B.
46905 JR NZ,Handler_Bull_6 Jump to Handler_Bull_6 if A is not zero.
46907 LD B,C B=C.
Handler_Bull_6 46908 LD (IX+6),B Write B to *IX+6.
46911 CALL 38425 Call 38425.
46914 LD A,(39333) A=*39333.
46917 AND %00000011 Keep only bits 0-1.
46919 JR Z,Handler_Bull_7 Jump to Handler_Bull_7 if A is zero.
46921 ADD A,5 A+=5.
46923 LD IX,29272 IX=29272.
46927 LD (IX+7),A Write A to *IX+7.
46930 JP Handler_Bull_2 Jump to Handler_Bull_2.
Handler_Bull_7 46933 CALL 38425 Call 38425.
46936 LD A,(39333) A=*39333.
46939 AND %00011110 Keep only bits 1-4.
46941 ADD A,10 A+=10.
46943 LD (29272),A Write A to *29272.
46946 LD IX,29272 IX=29272.
46950 LD A,(IX+6) A=*IX+6.
46953 AND %00011000 Keep only bits 3-4.
46955 RRCA RRCA.
46956 LD HL,47694 HL=47694.
46959 LD E,A E=A.
46960 LD D,0 D=0.
46962 ADD HL,DE HL+=DE.
46963 LD DE,29360 DE=29360.
46966 LD BC,4 BC=0004.
46969 LDIR LDIR.
46971 JP Handler_Bull_2 Jump to Handler_Bull_2.
Handler_Bull_8 46974 LD A,(IX+0) A=*IX+0.
46977 AND %00000011 Keep only bits 0-1.
46979 RET NZ Return if {} is not zero.
46980 LD IX,(29360) IX=*29360.
46984 LD E,(IX+0) E=*IX+0.
46987 LD D,(IX+1) D=*IX+1.
46990 LD HL,(29362) HL=*29362.
46993 EX DE,HL Exchange the DE and HL registers.
46994 LD (29362),HL Write HL to *29362.
46997 LD (IX+0),E Write E to *IX+0.
47000 LD (IX+1),D Write D to *IX+1.
47003 LD IX,29272 IX=29272.
47007 LD L,(IX+4) L=*IX+4.
47010 LD H,(IX+5) H=*IX+5.
47013 CALL 39188 Call 39188.
47016 RET Return.
Prev: 46759 Up: Map Next: 47017