Prev: 62938 Up: Map Next: 63031
62982: OR Blit Title Strips
Used by the routine at DrawAttractTitle.
OR-blits horizontal strips of bitmap data from the source pointer in HL into the screen buffer, using the four-byte parameter block at TitleBlit_Params–50428. *TitleBlit_Params seeds the outer strip counter in B; *50426 drives the screen row lookup (with 35840 / 141 style indexing); *50427 is the byte count per strip (LDIR length); the loop runs until B reaches *50428 after each pass. Called from DrawAttractTitle with HL pointing at ROM graphics (28029 and 28677).
Input
HL Pointer to source bitmap data in ROM
BlitTitleStrips 62982 LD A,(50425) B=*TitleBlit_Params (initial strip index for B).
62985 LD B,A
BlitTitleStrips_Strip 62986 PUSH BC Stash BC on the stack (strip index and loop state).
62987 PUSH HL Stash HL on the stack (source pointer for this strip).
Derive a screen destination from *50426 and the screen row address lookup table; combine with the next source byte and OR into the low byte of the destination address.
62988 LD L,B L=B (strip index into the row term).
62989 LD B,69 B=69 (row address table high-byte base, rotated with *50426).
62991 LD A,(50426) C=*50426 (row / band parameter).
62994 LD C,A
62995 SLA C Shift C left; rotate into B (table pointer high byte 140 / 141).
62997 RL B
62999 LD H,70 H=70 (row address table base high byte).
63001 SLA L Shift L left through H (index into the row address table).
63003 RL H
63005 LD A,(HL) A=*(HL) (low byte of the screen row base address).
63006 INC HL Advance HL.
63007 LD H,(HL) H=*(HL) (high byte of the screen row base address).
63008 LD L,A L=A (full row base address in HL).
63009 LD A,(BC) A=*(BC) (source bitmap byte).
63010 OR L OR with L (low byte of the screen address).
63011 LD L,A Write merged low byte back to L.
63012 POP DE Restore destination pointer into DE from the stack.
63013 EX DE,HL Swap DE and HL (destination now in HL).
63014 LD B,0 Clear B (high byte of LDIR length).
63016 LD A,(50427) C=*50427 (bytes to OR along this strip).
63019 LD C,A
63020 LDIR LDIR copies BC bytes from the source bitmap (HL) into the strip at DE.
63022 POP BC Restore BC from the stack.
63023 INC B Advance the strip index B by one.
63024 LD A,(50428) A=*50428 (terminal strip index).
63027 CP B Compare A with B.
63028 JR NZ,BlitTitleStrips_Strip Loop back to BlitTitleStrips_Strip until all strips for this bitmap are done.
63030 RET Return.
Prev: 62938 Up: Map Next: 63031