D | y-coordinate of point requiring refresh |
E | x-coordinate of point requiring refresh |
26380 | 3AFF7F | LD A,(32767) | A=column of play area at far left of screen |
26383 | D602 | SUB 2 | |
26385 | 3802 | JR C,26389 | |
26387 | BB | CP E | |
26388 | D0 | RET NC | Return if the point requiring refresh is off-screen to the left |
26389 | C621 | ADD A,33 | A=column of play area at far right of screen |
26391 | BB | CP E | |
26392 | D8 | RET C | Return if the point requiring refresh is off-screen to the right |
26393 | D5 | PUSH DE | |
26394 | D620 | SUB 32 | |
26396 | 2F | CPL | |
26397 | 83 | ADD A,E | |
26398 | CB7F | BIT 7,A | |
26400 | 2801 | JR Z,26403 | |
26402 | 3C | INC A | |
26403 | 07 | RLCA | |
26404 | 07 | RLCA | |
26405 | 07 | RLCA | |
26406 | 5F | LD E,A | |
26407 | E638 | AND 56 | |
26409 | 2F | CPL | |
26410 | 3D | DEC A | |
26411 | 323D67 | LD (26429),A | |
26414 | F5 | PUSH AF | |
26415 | 7B | LD A,E | |
26416 | 07 | RLCA | |
26417 | 07 | RLCA | |
26418 | E603 | AND 3 | |
26420 | 82 | ADD A,D | |
26421 | 82 | ADD A,D | |
26422 | 82 | ADD A,D | |
26423 | 82 | ADD A,D | |
26424 | 5F | LD E,A | |
26425 | 167F | LD D,127 | |
26427 | EB | EX DE,HL | HL=appropriate byte of SRB |
26428 | CBx | SET n,(HL) | n=((26429)–198)/8 |
26430 | F1 | POP AF | |
26431 | C638 | ADD A,56 | |
26433 | 3808 | JR C,26443 | Jump if we've just set bit 0 of an SRB byte |
26435 | 2C | INC L | Next SRB byte |
26436 | 7D | LD A,L | Does this SRB byte correspond to the first byte of the next row of the screen? |
26437 | E603 | AND 3 | |
26439 | 2809 | JR Z,26450 | If so, skip it |
26441 | 3EFE | LD A,254 | Otherwise set bit 7 in this SRB byte |
26443 | F6C0 | OR 192 | |
26445 | 325167 | LD (26449),A | |
26448 | CBx | SET m,(HL) | m=((26449)–198)/8=(n–1)%8 |
26450 | EB | EX DE,HL | |
26451 | D1 | POP DE | |
26452 | C9 | RET |