![]() |
Routines |
| Prev: D408 | Up: Map | Next: D4E8 |
|
|
||||
| WriteSceneToShadowBuffer | D409 | LD BC,$0000 | BC=0000. | |
|
Self-modifying code. These lines populate the value for a LoaD command below. The values relate to areas of the shadow screen buffer:
|
||||
| D40C | LD A,$6B | Write 6B to: | ||
| D40E | LD ($D475),A | |||
| D411 | LD ($D4B6),A | |||
| D414 | CALL WriteSceneToShadowBuffer_Loop_1 | Call WriteSceneToShadowBuffer_Loop_1. | ||
| D417 | LD A,$73 | Write 73 to: | ||
| D419 | LD ($D475),A | |||
| D41C | LD ($D4B6),A | |||
| D41F | CALL WriteSceneToShadowBuffer_Loop_1 | Call WriteSceneToShadowBuffer_Loop_1. | ||
| D422 | LD A,$7B | Write 7B to: | ||
| D424 | LD ($D475),A | |||
| D427 | LD ($D4B6),A | |||
| WriteSceneToShadowBuffer_Loop_1 | D42A | LD A,$89 | A=89. | |
| D42C | EX AF,AF' | Exchange the AF register with the shadow AF register. | ||
| D42D | LD A,B | A=B. | ||
| D42E | ADD A,$68 | A+=68. | ||
| D430 | LD H,A | H=A. | ||
| D431 | LD L,C | L=C. | ||
| D432 | LD D,$00 | D=00. | ||
| D434 | LD A,(HL) | Jump to WriteSceneToShadowBuffer_Loop_3 if *HL is zero. | ||
| D435 | AND A | |||
| D436 | JP Z,WriteSceneToShadowBuffer_Loop_3 | |||
| D439 | LD (HL),D | Write D to *HL. | ||
| D43A | LD A,$60 | Write 60 to *D220. | ||
| D43C | LD ($D220),A | |||
| D43F | DEC H | Decrease H by three. | ||
| D440 | DEC H | |||
| D441 | DEC H | |||
| D442 | LD A,(HL) | Jump to WriteSceneToShadowBuffer_Loop_2 if *HL is not zero. | ||
| D443 | AND A | |||
| D444 | JP NZ,WriteSceneToShadowBuffer_Loop_2 | |||
| D447 | LD A,$20 | Write 20 to *D220. | ||
| D449 | LD ($D220),A | |||
| D44C | DEC H | Decrease H by three. | ||
| D44D | DEC H | |||
| D44E | DEC H | |||
| D44F | LD A,(HL) | Jump to WriteSceneToShadowBuffer_Loop_2 if *HL is not zero. | ||
| D450 | AND A | |||
| D451 | JP NZ,WriteSceneToShadowBuffer_Loop_2 | |||
| D454 | XOR A | Write 00 to *D220. | ||
| D455 | LD ($D220),A | |||
| D458 | DEC H | Decrease H by three. | ||
| D459 | DEC H | |||
| D45A | DEC H | |||
| D45B | LD A,$86 | A=86. | ||
| D45D | EX AF,AF' | Exchange the AF register with the shadow AF register. | ||
| D45E | LD A,(HL) | A=*HL. | ||
| WriteSceneToShadowBuffer_Loop_2 | D45F | AND %01111111 | Keep only bits 0-6. | |
| D461 | LD E,A | E=A. | ||
| D462 | LD A,(HL) | A=*HL. | ||
| D463 | LD ($D222),A | Write A to *D222. | ||
| D466 | LD H,D | H=D. | ||
| D467 | LD L,E | L=E. | ||
| D468 | ADD HL,HL | HL*=08+DE. | ||
| D469 | ADD HL,HL | |||
| D46A | ADD HL,HL | |||
| D46B | ADD HL,DE | |||
| D46C | CP $80 | Jump to WriteSceneToShadowBuffer_0 if A is higher than 80. | ||
| D46E | JP NC,WriteSceneToShadowBuffer_0 | |||
| D471 | CALL $D4E8 | Call D4E8. | ||
| D474 | LD D,$00 | D=00 (as above). | ||
| D476 | LD A,(HL) | A=*HL. | ||
| D477 | LD (DE),A | Write A to *DE. | ||
| D478 | INC HL | Increment HL by one. | ||
| D479 | INC D | Increment D by one. | ||
| D47A | LD A,(HL) | A=*HL. | ||
| D47B | LD (DE),A | Write A to *DE. | ||
| D47C | INC HL | Increment HL by one. | ||
| D47D | INC D | Increment D by one. | ||
| D47E | LD A,(HL) | A=*HL. | ||
| D47F | LD (DE),A | Write A to *DE. | ||
| D480 | INC HL | Increment HL by one. | ||
| D481 | INC D | Increment D by one. | ||
| D482 | LD A,(HL) | A=*HL. | ||
| D483 | LD (DE),A | Write A to *DE. | ||
| D484 | INC HL | Increment HL by one. | ||
| D485 | INC D | Increment D by one. | ||
| D486 | LD A,(HL) | A=*HL. | ||
| D487 | LD (DE),A | Write A to *DE. | ||
| D488 | INC HL | Increment HL by one. | ||
| D489 | INC D | Increment D by one. | ||
| D48A | LD A,(HL) | A=*HL. | ||
| D48B | LD (DE),A | Write A to *DE. | ||
| D48C | INC HL | Increment HL by one. | ||
| D48D | INC D | Increment D by one. | ||
| D48E | LD A,(HL) | A=*HL. | ||
| D48F | LD (DE),A | Write A to *DE. | ||
| D490 | INC HL | Increment HL by one. | ||
| D491 | INC D | Increment D by one. | ||
| D492 | LD A,(HL) | A=*HL. | ||
| D493 | LD (DE),A | Write A to *DE. | ||
| WriteSceneToShadowBuffer_Loop_3 | D494 | INC C | Increment C by one. | |
| D495 | JP NZ,WriteSceneToShadowBuffer_Loop_1 | Jump to WriteSceneToShadowBuffer_Loop_1 if {} is not zero. | ||
| D498 | INC B | Increment B by one. | ||
| D499 | RET | Return. | ||
| WriteSceneToShadowBuffer_0 | D49A | CALL $D4E8 | Call D4E8. | |
| D49D | PUSH BC | Stash BC on the stack. | ||
| D49E | LD A,C | A=C. | ||
| D49F | EXX | Switch to the shadow registers. | ||
| D4A0 | LD C,A | C=A. | ||
| D4A1 | EX AF,AF' | Exchange the AF register with the shadow AF register. | ||
| D4A2 | XOR C | Reset the bits from C. | ||
| D4A3 | AND %00000011 | Keep only bits 0-1. | ||
| D4A5 | LD C,A | C=A. | ||
| D4A6 | ADD A,A | A*=08+C. | ||
| D4A7 | ADD A,A | |||
| D4A8 | ADD A,A | |||
| D4A9 | ADD A,C | |||
| D4AA | LD B,$00 | B=00. | ||
| D4AC | LD C,A | C=A. | ||
| D4AD | LD HL,$8B40 | HL=8B40. | ||
| D4B0 | ADD HL,BC | HL+=BC. | ||
| D4B1 | INC L | Increment L by one. | ||
| D4B2 | PUSH HL | Stash HL on the stack. | ||
| D4B3 | EXX | Switch back to the normal registers. | ||
| D4B4 | POP BC | Restore BC from the stack. | ||
| D4B5 | LD D,$00 | D=00 (as above). | ||
| D4B7 | LD A,(BC) | A=*BC. | ||
| D4B8 | OR (HL) | Set the bits from *HL. | ||
| D4B9 | LD (DE),A | Write A to *DE. | ||
| D4BA | INC HL | Increment HL by one. | ||
| D4BB | INC BC | Increment BC by one. | ||
| D4BC | INC D | Increment D by one. | ||
| D4BD | LD A,(BC) | A=*BC. | ||
| D4BE | OR (HL) | Set the bits from *HL. | ||
| D4BF | LD (DE),A | Write A to *DE. | ||
| D4C0 | INC HL | Increment HL by one. | ||
| D4C1 | INC BC | Increment BC by one. | ||
| D4C2 | INC D | Increment D by one. | ||
| D4C3 | LD A,(BC) | A=*BC. | ||
| D4C4 | OR (HL) | Set the bits from *HL. | ||
| D4C5 | LD (DE),A | Write A to *DE. | ||
| D4C6 | INC HL | Increment HL by one. | ||
| D4C7 | INC BC | Increment BC by one. | ||
| D4C8 | INC D | Increment D by one. | ||
| D4C9 | LD A,(BC) | A=*BC. | ||
| D4CA | OR (HL) | Set the bits from *HL. | ||
| D4CB | LD (DE),A | Write A to *DE. | ||
| D4CC | INC HL | Increment HL by one. | ||
| D4CD | INC BC | Increment BC by one. | ||
| D4CE | INC D | Increment D by one. | ||
| D4CF | LD A,(BC) | A=*BC. | ||
| D4D0 | OR (HL) | Set the bits from *HL. | ||
| D4D1 | LD (DE),A | Write A to *DE. | ||
| D4D2 | INC HL | Increment HL by one. | ||
| D4D3 | INC BC | Increment BC by one. | ||
| D4D4 | INC D | Increment D by one. | ||
| D4D5 | LD A,(BC) | A=*BC. | ||
| D4D6 | OR (HL) | Set the bits from *HL. | ||
| D4D7 | LD (DE),A | Write A to *DE. | ||
| D4D8 | INC HL | Increment HL by one. | ||
| D4D9 | INC BC | Increment BC by one. | ||
| D4DA | INC D | Increment D by one. | ||
| D4DB | LD A,(BC) | A=*BC. | ||
| D4DC | OR (HL) | Set the bits from *HL. | ||
| D4DD | LD (DE),A | Write A to *DE. | ||
| D4DE | INC HL | Increment HL by one. | ||
| D4DF | INC BC | Increment BC by one. | ||
| D4E0 | INC D | Increment D by one. | ||
| D4E1 | LD A,(BC) | A=*BC. | ||
| D4E2 | OR (HL) | Set the bits from *HL. | ||
| D4E3 | LD (DE),A | Write A to *DE. | ||
| D4E4 | POP BC | Restore BC from the stack. | ||
| D4E5 | JP WriteSceneToShadowBuffer_Loop_3 | Jump to WriteSceneToShadowBuffer_Loop_3. | ||
| Prev: D408 | Up: Map | Next: D4E8 |