Prev: D962 Up: Map Next: DBAE
DAC0: Main loop for the tile screen
Used by the routine at 947A.
DAC0 LD A,$00 Set screen border color to black
DAC2 OUT ($FE),A
DAC4 LD DE,$6018 Copy graphic data of FOOTMAN falling at $E336 into the buffer at $6018
DAC7 LD HL,$E336
DACA LD BC,$00C0
DACD LDIR
DACF LD DE,$4000 Copy the contents of the screen buffer at E4FF to the display and attribute file
DAD2 LD HL,$E4FF
DAD5 LD BC,$1B00
DAD8 LDIR
DADA LD B,$05 Set B to the number of lines of text of the select control popup
DADC LD IX,$DF05 Point IX at the first byte of the text definition data for the select control popup
DAE0 CALL $A13E Draws the select control popup on display file
DAE3 LD DE,$E4FF Copy the display and attribute file to the screen buffer at E4FF
DAE6 LD HL,$4000
DAE9 LD BC,$1B00
DAEC LDIR
Prepares to display the enemies windows showroom on title screen
DAEE LD DE,$4000 Copy the contents of the screen buffer at E4FF to the display and attribute file
DAF1 LD HL,$E4FF
DAF4 LD BC,$1B00
DAF7 LDIR
DAF9 XOR A Set A=0
DAFA LD ($A07F),A Initialise the animation frame number for the enemy animation on tile screen at A07F
DAFD LD ($A085),A Initialise the enemy windows of the tile screen to hidden at A085
DB00 LD HL,$E05B Initialise address for the animation definition at A083
DB03 LD ($A083),HL
DB06 LD A,$32 Initialise loop counter at A065
DB08 LD ($A065),A
DB0B LD HL,$DC26 Initialise the pointer to the first byte of the windows definition for the FOOT MAN POINTS popup
DB0E LD ($A086),HL
Draws the windows, the animated enemies and check for keyboard inputs There is a routine that waits aprox. 100 ms every loop of the counter (50 times), so the windows display duration and the duration between windows is aprox. 5 seconds.
DB11 LD HL,($A083) Set HL to the address pointer to the enemy animation definition
DB14 CALL $E00B Draws the animation frame for the corresponding enemy
DB17 LD BC,$07D0 Set BC=2000
DB1A CALL $C8DB Wait ~ 100ms = 182 t-states 2000 times
DB1D LD BC,$F7FE Read keys 1-2-3-4-5 into A
DB20 IN A,(C)
DB22 BIT 3,A Key 4 is pressed?
DB24 JP Z,$DE5D Jump if so
DB27 LD BC,$F7FE Read keys 1-2-3-4-5 into A
DB2A IN A,(C)
DB2C BIT 2,A Key 3 is pressed?
DB2E JP Z,$DE99 Jump if so
DB31 LD BC,$F7FE Read keys 1-2-3-4-5 into A
DB34 IN A,(C)
DB36 BIT 1,A Key 2 is pressed?
DB38 JP Z,$DE20 Jump if so
DB3B LD BC,$F7FE Read keys 1-2-3-4-5 into A
DB3E IN A,(C)
DB40 BIT 0,A Key 1 is pressed?
DB42 JP Z,$DD54 Jump if so
DB45 LD A,($A065) Decrease the loop counter at A065
DB48 DEC A
DB49 LD ($A065),A
DB4C OR A The loop counter is $00?
DB4D JP NZ,$DB11 Jump back if not
DB50 LD A,$32 Reset the loop counter at A065 to $32
DB52 LD ($A065),A
DB55 LD A,($A085) Show/hide the enemy windows in the title screen
DB58 XOR $01
DB5A LD ($A085),A
DB5D OR A Is the enemy windows hidden?
DB5E JP Z,$DB90 Jump if so
DB61 LD HL,($A083) Set HL to the value of the current address of the enemy animation defnition
DB64 LD DE,$000C Point HL to the next enemy animation definition
DB67 ADD HL,DE
DB68 LD A,(HL) Pick up the first byte of the enemy animation definition
DB69 CP $FF Is an end marker?
DB6B JP NZ,$DB71 Jump if not
DB6E LD HL,$E067 Point A083 to the initial enemy animation definition address
DB71 LD ($A083),HL
DB74 LD IX,($A086) Point IX to the address of the text definition data at A086
DB78 LD B,$02 Set B to the number of files of the windows
DB7A CALL $A13E Draw the corresponding windows in tile screen
DB7D LD A,(IX+$00) Set A to the first byte of the text definition data
DB80 CP $FF Is an end marker?
DB82 JP NZ,$DB89 Jump if not
DB85 LD IX,$DC26 Set IX to the address of the first windows definition (FOOT MAN) at DC26
DB89 LD ($A086),IX Save to A086 this windows defintion address
DB8D JP $DB11 Jump back
DB90 CALL $DB96 Hide the current visible enemy animation windows
DB93 JP $DB11 Jump back
Hide the current visible enemy animation windows
DB96 LD HL,$5800 Draw a rectangle (15x4) of color attribute $02 directly into the attribute file It does not seem necessary because later overwrites it with the content of the screen buffer
DB99 LD B,$04
DB9B LD E,$0F
DB9D LD A,$02
DB9F CALL $D909
DBA2 LD DE,$4000 Copy the contents of the screen buffer at $E4FF into de display file
DBA5 LD HL,$E4FF
DBA8 LD BC,$1B00
DBAB LDIR
DBAD RET
Prev: D962 Up: Map Next: DBAE