Prev: 45215 Up: Map Next: 45463
45286: Draws Sprites To The Shadow Buffer
Used by the routines at Draw_Characters_CurrentRoom, 61383 and 61815.
WriteSprite_ShadowBuffer 45286 EXX Switch to the shadow registers.
45287 LD E,(IY+35) E=*IY+35.
45290 LD D,(IY+40) D=*IY+40.
45293 LD (43067),SP Write SP to Temp_StackPointer_Storage.
45297 LD H,(IY+0) H=*IY+0.
45300 LD L,0 L=0.
45302 SRL H
45304 RR L
45306 ADD HL,DE
45307 LD SP,HL
45308 LD A,(IY+5) B=*IY+5.
45311 LD B,A
45312 AND %00000111 Keep only bits 0-2.
Self-modifying code.
45314 LD (45449),A Write A to 45449.
45317 INC A
45318 LD (45353),A
45321 LD (45381),A
45324 LD A,B
45325 AND %11111000 Keep only bits 3-7.
45327 RRCA
45328 RRCA
45329 RRCA
Self-modifying code.
45330 LD (45435),A Write A to 45435.
45333 ADD A,2
45335 LD E,A
45336 LD C,32
45338 LD L,(IY+10)
45341 LD H,0
45343 ADD HL,HL
45344 ADD HL,HL
45345 ADD HL,HL
45346 ADD HL,HL
45347 ADD HL,HL
45348 LD D,99
45350 ADD HL,DE
WriteSprite_ShadowBuffer_0 45351 POP DE
45352 LD B,0
45354 DEC B
45355 JR Z,WriteSprite_ShadowBuffer_2
45357 SCF
45358 LD A,255
WriteSprite_ShadowBuffer_1 45360 RR E
45362 RR D
45364 RRA
45365 DJNZ WriteSprite_ShadowBuffer_1
45367 AND (HL)
45368 LD (HL),A
WriteSprite_ShadowBuffer_2 45369 DEC HL
45370 LD A,(HL)
45371 AND D
45372 LD (HL),A
45373 DEC HL
45374 LD A,(HL)
45375 AND E
45376 LD (HL),A
45377 INC HL
45378 INC HL
45379 POP DE
45380 LD B,0
45382 DEC B
45383 JR Z,WriteSprite_ShadowBuffer_4
45385 XOR A
WriteSprite_ShadowBuffer_3 45386 SRL E
45388 RR D
45390 RRA
45391 DJNZ WriteSprite_ShadowBuffer_3
45393 OR (HL)
45394 LD (HL),A
WriteSprite_ShadowBuffer_4 45395 DEC HL
45396 LD A,(HL)
45397 OR D
45398 LD (HL),A
45399 DEC HL
45400 LD A,(HL)
45401 OR E
45402 LD (HL),A
45403 LD DE,34
45406 ADD HL,DE
45407 DEC C
45408 JP NZ,WriteSprite_ShadowBuffer_0
45411 LD A,(IY+10)
45414 AND %00000111 Keep only bits 0-2.
45416 JR Z,WriteSprite_ShadowBuffer_5
45418 LD B,5
45420 JR WriteSprite_ShadowBuffer_6
Characters are 4 characters tall.
WriteSprite_ShadowBuffer_5 45422 LD B,4 B=4 (counter).
WriteSprite_ShadowBuffer_6 45424 LD A,(IY+10) A=*IY+10.
45427 AND %11111000 Keep only bits 3-7.
45429 LD H,0 Create an offset in HL.
45431 LD L,A
45432 ADD HL,HL HL=64256+(HL*4).
45433 ADD HL,HL
45434 LD DE,64256
45437 ADD HL,DE
45438 LD DE,30 DE=0030.
Grab the characters attribute byte.
45441 LD C,(IY+30) C=*IY+30.
WriteSprite_ShadowBuffer_7 45444 LD (HL),C Write the attribute byte to the attribute buffer (*HL).
45445 INC HL Increment HL by one.
45446 LD (HL),C Write the attribute byte to the attribute buffer (*HL).
45447 INC HL Increment HL by one.
This is modified from 45314.
45448 LD A,255 B=255.
45450 OR A
45451 JR Z,WriteSprite_ShadowBuffer_8
45453 LD (HL),C
WriteSprite_ShadowBuffer_8 45454 ADD HL,DE
45455 DJNZ WriteSprite_ShadowBuffer_7
45457 EXX Switch to the normal registers.
45458 LD SP,(43067) Restore SP from Temp_StackPointer_Storage.
45462 RET Return.
Prev: 45215 Up: Map Next: 45463