Prev: 49132 Up: Map Next: 49470
49187: Routine at C023
Used by the routines at 48397, 48456 and 49132.
49187 LD A,(IX+7) A=*IX+7.
49190 BIT 7,A Jump to 49211 if bit 7 of A is not set.
49192 JR Z,49211
49194 SUB (IX+8) A-=*IX+8.
49197 BIT 3,A Jump to 49218 if bit 3 of A is not set.
49199 JR Z,49218
49201 ADD A,8 A+=8.
49203 LD (IX+7),A Write A to *IX+7.
49206 DEC (IX+0) Decrease *IX+0 by one.
49209 JR 49239 Jump to 49239.
49211 ADD A,(IX+8) A+=*IX+8.
49214 BIT 3,A Jump to 49231 if bit 3 of A is set.
49216 JR NZ,49231
49218 LD (IX+7),A Write A to *IX+7.
49221 LD A,(IX+0) A=*IX+0.
49224 CP (IX+11) Return if A is higher than *IX+11.
49227 RET NC
49228 JP 49426 Jump to 49426.
49231 RES 3,A Reset bit 3 of A.
49233 LD (IX+7),A Write A to *IX+7.
49236 INC (IX+0) Increment *IX+0 by one.
This entry point is used by the routines at 46014 and 46481.
49239 LD A,(IX+0) A=*IX+0.
49242 CP (IX+11) Return if A is higher than *IX+11.
49245 RET NC
49246 CP 20 Jump to 49321 if A is higher than 20.
49248 JR NC,49321
49250 CP (IX+12) Jump to 49263 if A is lower than *IX+12.
49253 JR C,49263
49255 LD A,(IX+12) A=*IX+12.
49258 LD (IX+3),A Write A to *IX+3.
49261 JR 49267 Jump to 49267.
49263 INC A Increment A by one.
49264 LD (IX+3),A Write A to *IX+3.
49267 LD A,(IX+5) A=*IX+5.
49270 AND %00011111 Keep only bits 0-4.
49272 LD C,A C=A.
49273 LD A,(IX+0) A=*IX+0.
49276 NEG NEG.
49278 ADD A,21 A+=21.
49280 LD E,A E=A.
49281 RRCA RRCA.
49282 RRCA RRCA.
49283 RRCA RRCA.
49284 LD B,A B=A.
49285 AND %11100000 Keep only bits 5-7.
49287 OR C Set the bits from C.
49288 LD (IX+5),A Write A to *IX+5.
49291 LD (IX+1),A Write A to *IX+1.
49294 LD A,3 A=3.
49296 AND B Merge the bits from B.
49297 OR %01011000 Set bits 3-4, 6.
49299 LD D,A D=A.
49300 SET 5,D Set bit 5 of D.
49302 LD (IX+6),A Write A to *IX+6.
49305 LD A,24 A=24.
49307 AND E Merge the bits from E.
49308 OR %01000000 Set bits 6.
49310 LD (IX+2),A Write A to *IX+2.
49313 LD E,(IX+5) E=*IX+5.
49316 LD BC,0 BC=0000.
49319 JR 49368 Jump to 49368.
49321 NEG NEG.
49323 ADD A,(IX+11) A+=*IX+11.
49326 LD (IX+3),A Write A to *IX+3.
49329 SUB (IX+12) A-=*IX+12.
49332 NEG NEG.
49334 BIT 0,(IX+4) Jump to 49341 if bit 0 of *IX+4 is set.
49338 JR NZ,49341
49340 RLCA RLCA.
49341 LD C,A C=A.
49342 LD B,0 B=0.
49344 LD A,(IX+5) A=*IX+5.
49347 AND %00011111 Keep only bits 0-4.
49349 OR %01000000 Set bits 6.
49351 LD E,A E=A.
49352 LD (IX+5),A Write A to *IX+5.
49355 LD (IX+1),A Write A to *IX+1.
49358 LD D,120 D=120.
49360 LD (IX+6),88 Write 6 to *IX+6.
49364 LD (IX+2),64 Write 2 to *IX+2.
49368 LD L,(IX+9) L=*IX+9.
49371 LD H,(IX+10) H=*IX+10.
49374 LD A,C A=C.
49375 PUSH AF Stash AF and HL on the stack.
49376 PUSH HL
49377 ADD HL,BC HL+=BC.
49378 LD C,(IX+12) C=*IX+12.
49381 BIT 0,(IX+4) Jump to 49389 if bit 0 of *IX+4 is set.
49385 JR NZ,49389
49387 SLA C Shift C left (with carry).
49389 SLA C Shift C left (with carry).
49391 ADD HL,BC HL+=BC.
49392 LD B,(IX+3) B=*IX+3.
49395 LD C,(IX+4) C=*IX+4.
49398 PUSH BC Stash BC and DE on the stack.
49399 PUSH DE
49400 CALL 45490 Call 45490.
49403 POP HL Restore HL from the stack.
49404 ADD HL,HL HL+=HL.
49405 LD A,7 A=7.
49407 AND H Merge the bits from H.
49408 OR %01110000 Set bits 4-6.
49410 LD D,A D=A.
49411 LD E,L E=L.
49412 POP BC Restore BC, HL and AF from the stack.
49413 POP HL
49414 POP AF
49415 RLCA RLCA.
49416 ADD A,L A+=L.
49417 LD L,A L=A.
49418 JR NC,49421 Jump to 49421 if {} is higher.
49420 INC H Increment H by one.
49421 SLA C Shift C left (with carry).
49423 CALL PlayareaCopier Call PlayareaCopier.
49426 CALL 49470 Call 49470.
49429 LD B,(IX+3) B=*IX+3.
49432 LD A,(IX+7) A=*IX+7.
49435 AND %00000111 Keep only bits 0-2.
49437 LD C,A C=A.
49438 LD DE,61 DE=0061.
49441 LD A,(HL) A=*HL.
49442 AND %11111000 Keep only bits 3-7.
49444 OR C Set the bits from C.
49445 LD (HL),A Write A to *HL.
49446 INC L Increment L by one.
49447 SET 7,(HL) Set bit 7 of *HL.
49449 INC L Increment L by two.
49450 INC L
49451 BIT 0,(IX+4) Jump to 49466 if bit 0 of *IX+4 is set.
49455 JR NZ,49466
49457 DEC L Decrease L by one.
49458 LD A,(HL) A=*HL.
49459 AND %11111000 Keep only bits 3-7.
49461 OR C Set the bits from C.
49462 LD (HL),A Write A to *HL.
49463 INC L Increment L by one.
49464 SET 7,(HL) Set bit 7 of *HL.
49466 ADD HL,DE HL+=DE.
49467 DJNZ 49441 Decrease counter by one and loop back to 49441 until counter is zero.
49469 RET Return.
Prev: 49132 Up: Map Next: 49470