![]() |
Routines |
| Prev: AB6B | Up: Map | Next: ABF9 |
|
This animates the window buffer onto the screen using a zooming box effect.
|
||||
| zoombox | ABA0 | LD A,$0C | Initialise zoombox_x to 12 | |
| ABA2 | LD ($AB66),A | |||
| ABA5 | LD A,$08 | Initialise zoombox_y to 8 | ||
| ABA7 | LD ($AB68),A | |||
| ABAA | CALL choose_game_window_attributes | Choose the game window attributes (the chosen attribute is returned in A) | ||
| ABAD | LD H,A | Duplicate attribute into both bytes of HL | ||
| ABAE | LD L,A | |||
| ABAF | LD ($5932),HL | Set the attributes of the initial zoombox fill rectangle | ||
| ABB2 | LD ($5952),HL | |||
| ABB5 | XOR A | Set zoombox_width and zoombox_height to zero | ||
| ABB6 | LD ($AB67),A | |||
| ABB9 | LD ($AB69),A | |||
|
Start loop
Shrink X and grow width until X is 1
|
||||
| zoombox_0 | ABBC | LD HL,$AB66 | Point HL at zoombox_x | |
| ABBF | LD A,(HL) | Fetch it | ||
| ABC0 | CP $01 | Is it 1? | ||
| ABC2 | JP Z,zoombox_1 | Skip the next chunk if so | ||
| ABC5 | DEC (HL) | Decrement zoombox_x | ||
| ABC6 | DEC A | And the register copy too | ||
| ABC7 | INC HL | Point HL at zoombox_width | ||
| ABC8 | INC (HL) | Increment zoombox_width | ||
| ABC9 | DEC HL | Step back | ||
|
Grow width until it's 22
|
||||
| zoombox_1 | ABCA | INC HL | Point HL at zoombox_width | |
| ABCB | ADD A,(HL) | Add width to x | ||
| ABCC | CP $16 | Did we hit 22? | ||
| ABCE | JP NC,zoombox_2 | Jump if not | ||
| ABD1 | INC (HL) | Increment zoombox_width | ||
|
Shrink Y and grow height until Y is 1
|
||||
| zoombox_2 | ABD2 | INC HL | Point HL at zoombox_y | |
| ABD3 | LD A,(HL) | Fetch it | ||
| ABD4 | CP $01 | Is it 1? | ||
| ABD6 | JP Z,zoombox_3 | Skip the next chunk if so | ||
| ABD9 | DEC (HL) | Decrement zoombox_y | ||
| ABDA | DEC A | And the register copy too | ||
| ABDB | INC HL | Point HL at zoombox_height | ||
| ABDC | INC (HL) | Increment zoombox_height | ||
| ABDD | DEC HL | Step back | ||
|
Grow height until it's 15
|
||||
| zoombox_3 | ABDE | INC HL | Point HL at zoombox_height | |
| ABDF | ADD A,(HL) | Add height to y | ||
| ABE0 | CP $0F | Did we hit 15? | ||
| ABE2 | JP NC,zoombox_4 | Jump if not | ||
| ABE5 | INC (HL) | Increment zoombox_height | ||
| zoombox_4 | ABE6 | CALL zoombox_fill | Draw the zoombox contents | |
| ABE9 | CALL zoombox_draw_border | Draw the zoombox border | ||
| ABEC | LD HL,$AB67 | Sum the width and height | ||
| ABEF | LD A,($AB69) | |||
| ABF2 | ADD A,(HL) | |||
| ABF3 | CP $23 | If it's less than 35 then ...loop | ||
| ABF5 | JP C,zoombox_0 | |||
| ABF8 | RET | Return | ||
| Prev: AB6B | Up: Map | Next: ABF9 |