![]() |
Routines |
| Prev: ABF9 | Up: Map | Next: ACFC |
|
This draws the zoombox border.
Used by the routine at zoombox.
|
||||
| zoombox_draw_border | AC6F | LD A,($AB68) | Fetch zoombox_y | |
| AC72 | DEC A | Subtract one so that we draw around the zoombox fill area | ||
| AC73 | ADD A,A | Multiply it by 16 producing an offset into the game_window_start_addresses array | ||
| AC74 | ADD A,A | |||
| AC75 | ADD A,A | |||
| AC76 | ADD A,A | |||
| AC77 | LD HL,$EDD3 | Point HL at the game_window_start_addresses array | ||
| AC7A | ADD A,L | Combine it with the offset | ||
| AC7B | LD L,A | |||
| AC7C | JR NC,zoombox_draw_border_0 | |||
| AC7E | INC H | |||
| zoombox_draw_border_0 | AC7F | LD A,(HL) | Fetch the game window start address | |
| AC80 | INC HL | |||
| AC81 | LD H,(HL) | |||
| AC82 | LD L,A | |||
|
Top left corner tile.
|
||||
| AC83 | LD A,($AB66) | Fetch zoombox_x | ||
| AC86 | DEC A | Subtract one so that we draw around the zoombox fill area | ||
| AC87 | ADD A,L | Combine with game window start address | ||
| AC88 | LD L,A | |||
| AC89 | LD A,$00 | Draw a top-left zoombox border tile | ||
| AC8B | CALL zoombox_draw_tile | |||
| AC8E | INC L | Move the destination pointer forward | ||
|
Top horizontal run, moving right.
|
||||
| AC8F | LD A,($AB67) | Fetch zoombox_width | ||
| AC92 | LD B,A | Set iterations | ||
|
Start loop
|
||||
| zoombox_draw_border_1 | AC93 | LD A,$01 | Draw a horizontal zoombox border tile | |
| AC95 | CALL zoombox_draw_tile | |||
| AC98 | INC L | Move the destination pointer forward | ||
| AC99 | DJNZ zoombox_draw_border_1 | ...loop | ||
|
Top right corner tile.
|
||||
| AC9B | LD A,$02 | Draw a top-right zoombox border tile | ||
| AC9D | CALL zoombox_draw_tile | |||
| ACA0 | LD DE,$0020 | See similar code at AC5F onwards | ||
| ACA3 | LD A,L | |||
| ACA4 | CP $E0 | |||
| ACA6 | JR C,zoombox_draw_border_2 | |||
| ACA8 | LD D,$07 | |||
| zoombox_draw_border_2 | ACAA | ADD HL,DE | ||
|
Right hand vertical run, moving down.
|
||||
| ACAB | LD A,($AB69) | Fetch zoombox_height | ||
| ACAE | LD B,A | Set iterations | ||
|
Start loop
|
||||
| zoombox_draw_border_3 | ACAF | LD A,$03 | Draw a vertical zoombox border tile | |
| ACB1 | CALL zoombox_draw_tile | |||
| ACB4 | LD DE,$0020 | See similar code at AC5F onwards | ||
| ACB7 | LD A,L | |||
| ACB8 | CP $E0 | |||
| ACBA | JR C,zoombox_draw_border_4 | |||
| ACBC | LD D,$07 | |||
| zoombox_draw_border_4 | ACBE | ADD HL,DE | ||
| ACBF | DJNZ zoombox_draw_border_3 | ...loop | ||
|
Bottom right corner tile.
|
||||
| ACC1 | LD A,$04 | Draw a bottom-right zoombox border tile | ||
| ACC3 | CALL zoombox_draw_tile | |||
| ACC6 | DEC L | Move the destination pointer backwards | ||
|
Bottom horizontal run, moving left.
|
||||
| ACC7 | LD A,($AB67) | Fetch zoombox_width | ||
| ACCA | LD B,A | Set iterations | ||
|
Start loop
|
||||
| zoombox_draw_border_5 | ACCB | LD A,$01 | Draw a horizontal zoombox border tile | |
| ACCD | CALL zoombox_draw_tile | |||
| ACD0 | DEC L | Move the destination pointer backwards | ||
| ACD1 | DJNZ zoombox_draw_border_5 | ...loop | ||
|
Bottom left corner tile.
|
||||
| ACD3 | LD A,$05 | Draw a bottom-left zoombox border tile | ||
| ACD5 | CALL zoombox_draw_tile | |||
| ACD8 | LD DE,$FFE0 | Inversion of similar code at AC5F onwards | ||
| ACDB | LD A,L | |||
| ACDC | CP $20 | |||
| ACDE | JR NC,zoombox_draw_border_6 | |||
| ACE0 | LD DE,$F8E0 | |||
| zoombox_draw_border_6 | ACE3 | ADD HL,DE | ||
|
Left hand vertical run, moving up.
|
||||
| ACE4 | LD A,($AB69) | Fetch zoombox_height | ||
| ACE7 | LD B,A | Set iterations | ||
|
Start loop
|
||||
| zoombox_draw_border_7 | ACE8 | LD A,$03 | Draw a vertical zoombox border tile | |
| ACEA | CALL zoombox_draw_tile | |||
| ACED | LD DE,$FFE0 | Inversion of similar code at AC5F onwards | ||
| ACF0 | LD A,L | |||
| ACF1 | CP $20 | |||
| ACF3 | JR NC,zoombox_draw_border_8 | |||
| ACF5 | LD DE,$F8E0 | |||
| zoombox_draw_border_8 | ACF8 | ADD HL,DE | ||
| ACF9 | DJNZ zoombox_draw_border_7 | ...loop | ||
| ACFB | RET | Return | ||
| Prev: ABF9 | Up: Map | Next: ACFC |