![]() |
Routines |
| Prev: 62938 | Up: Map | Next: 63031 |
|
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).
|
||||||||
| 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 |