![]() |
Routines |
Prev: 45278 | Up: Map | Next: 45386 |
Used by the routine at DisplayImage_WoodedVale.
|
||||||||
Print_RoomImage | 45323 | PUSH IX | HL=IX (using the stack). | |||||
45325 | POP HL | |||||||
45326 | LD DE,512 | Add 512 to the image data to skip the header. | ||||||
45329 | ADD HL,DE | |||||||
45330 | LD DE,16384 | Initialise the screen buffer pointer in DE to 16384 (the beginning of the screen buffer). | ||||||
45333 | LD BC,512 | Set a counter in BC for 512 bytes to process. | ||||||
DecompressPixelData_Loop | 45336 | PUSH BC | Stash the byte counter on the stack. | |||||
45337 | LD B,8 | B=8. | ||||||
45339 | LD C,(IX+0) | C=*IX+0. | ||||||
Print_RoomImage_0 | 45342 | SLA C | Shift C left (with carry). | |||||
45344 | JR NC,Print_RoomImage_1 | Jump to Print_RoomImage_1 if ?? is greater than or equal to 8. | ||||||
45346 | LD A,(HL) | A=*HL. | ||||||
45347 | LD (DE),A | Write A to *DE. | ||||||
45348 | INC HL | Increment HL by one. | ||||||
Print_RoomImage_1 | 45349 | INC DE | Increment DE by one. | |||||
45350 | DJNZ Print_RoomImage_0 | Decrease counter by one and loop back to Print_RoomImage_0 until counter is zero. | ||||||
45352 | INC IX | Increment IX by one. | ||||||
45354 | POP BC | Restore the byte counter from the stack. | ||||||
45355 | DEC BC | Decrease the byte counter by one. | ||||||
45356 | LD A,B | Jump back to DecompressPixelData_Loop until all bytes have been processed. | ||||||
45357 | OR C | |||||||
45358 | JR NZ,DecompressPixelData_Loop | |||||||
Decompress the attribute data.
|
||||||||
45360 | PUSH HL | IX=HL (using the stack). | ||||||
45361 | POP IX | |||||||
45363 | LD HL,22528 | Initialise the attribute buffer pointer in HL to 22528 (the beginning of the attribute buffer). | ||||||
DecompressAttributeData_Loop | 45366 | LD A,(IX+0) | Fetch the attribute byte from *IX+0 and store it in A. | |||||
45369 | LD B,(IX+1) | Fetch the repeat count from *IX+1 and store this in B. | ||||||
45372 | INC IX | Increment IX by two. | ||||||
45374 | INC IX | |||||||
RepeatAttribute_Loop | 45376 | LD (HL),A | Write the attribute byte to the attribute buffer pointer. | |||||
45377 | INC HL | Increment the attribute buffer pointer by one. | ||||||
45378 | DJNZ RepeatAttribute_Loop | Decrease the repeat counter by one and loop back to RepeatAttribute_Loop until the counter is zero. | ||||||
Keep looping back until the end of the attribute buffer is reached.
|
||||||||
45380 | LD A,H | Jump back to DecompressAttributeData_Loop until H is equal to 90. | ||||||
45381 | CP 90 | |||||||
45383 | JR NZ,DecompressAttributeData_Loop | |||||||
45385 | RET | Return. |
Prev: 45278 | Up: Map | Next: 45386 |