![]() |
Routines |
Prev: 72C9 | Up: Map | Next: 7564 |
Used by the routine at 72C9.
|
||||||||||||||||||||
GameIntro | 74A4 | CALL ClearScreen | Call ClearScreen. | |||||||||||||||||
Don't bother with the animation if this is the demo mode.
|
||||||||||||||||||||
74A7 | LD A,($66F3) | Return if *Flag_ActiveDemoMode is set. | ||||||||||||||||||
74AA | OR A | |||||||||||||||||||
74AB | RET NZ | |||||||||||||||||||
Set the attribute buffer to all cyan.
|
||||||||||||||||||||
74AC | LD HL,$5800 | Copy CYAN to 0300 bytes starting from 5800 in the attribute buffer. | ||||||||||||||||||
74AF | LD DE,$5801 | |||||||||||||||||||
74B2 | LD BC,$02FF | |||||||||||||||||||
74B5 | LD (HL),$05 | |||||||||||||||||||
74B7 | LDIR | |||||||||||||||||||
74B9 | LD HL,$6C13 | HL=Table_MusicData. | ||||||||||||||||||
74BC | LD B,$2E | Set a counter in B for 2E stars to draw. | ||||||||||||||||||
GameIntro_StarLoop | 74BE | LD A,B | Jump to GameIntro_MusicLoop if B is greater than or equal to 2D. | |||||||||||||||||
74BF | CP $2D | |||||||||||||||||||
74C1 | JR NC,GameIntro_MusicLoop | |||||||||||||||||||
Check if the control method is the Kempson joystick?
|
||||||||||||||||||||
74C3 | LD A,($66F6) | Jump to GameIntro_CheckAGF if *ControlMethod is not the Kempston joystick. | ||||||||||||||||||
74C6 | CP $02 | |||||||||||||||||||
74C8 | JR NZ,GameIntro_CheckAGF | |||||||||||||||||||
The control method is Kempston joystick, so test the fire button.
|
||||||||||||||||||||
74CA | IN A,($1F) | A=read from the Kempston joystick port. | ||||||||||||||||||
74CC | AND %00010000 | Jump to GameIntro_Done if the fire button was pressed. | ||||||||||||||||||
74CE | JP NZ,GameIntro_Done | |||||||||||||||||||
74D1 | JR GameIntro_MusicLoop | Jump to GameIntro_MusicLoop. | ||||||||||||||||||
Check if the control method is the AGF joystick?
|
||||||||||||||||||||
GameIntro_CheckAGF | 74D3 | CP $01 | Jump to GameIntro_IsKeyboard if *ControlMethod is not the AGF joystick. | |||||||||||||||||
74D5 | JR NZ,GameIntro_IsKeyboard | |||||||||||||||||||
74D7 | LD A,$EF |
|
||||||||||||||||||
74D9 | JR GameIntro_CheckFireButton | Jump to GameIntro_CheckFireButton. | ||||||||||||||||||
Else, the only control option left is the keyboard.
|
||||||||||||||||||||
GameIntro_IsKeyboard | 74DB | LD A,$7F |
|
|||||||||||||||||
GameIntro_CheckFireButton | 74DD | IN A,($FE) | Read from the keyboard. | |||||||||||||||||
74DF | BIT 0,A | Jump to GameIntro_Done if the fire button was pressed. | ||||||||||||||||||
74E1 | JR Z,GameIntro_Done | |||||||||||||||||||
GameIntro_MusicLoop | 74E3 | PUSH BC | Stash the star counter on the stack. | |||||||||||||||||
74E4 | LD C,(HL) | Fetch the pitch from the music data pointer. | ||||||||||||||||||
74E5 | INC HL | |||||||||||||||||||
74E6 | LD B,(HL) | |||||||||||||||||||
74E7 | INC HL | Fetch the duration from the music data pointer. | ||||||||||||||||||
74E8 | LD E,(HL) | |||||||||||||||||||
74E9 | LD D,$01 | D=01. | ||||||||||||||||||
74EB | INC HL | Move the music data pointer to the next byte. | ||||||||||||||||||
74EC | PUSH HL | Stash the music data pointer on the stack. | ||||||||||||||||||
74ED | PUSH BC | HL=BC (using the stack). | ||||||||||||||||||
74EE | POP HL | |||||||||||||||||||
74EF | CALL $03B5 | Call BEEPER. | ||||||||||||||||||
74F2 | DI | Disable interrupts. | ||||||||||||||||||
74F3 | LD HL,$57DF | HL=57DF (screen buffer location). | ||||||||||||||||||
74F6 | LD DE,$57FF | DE=57FF (screen buffer location). | ||||||||||||||||||
74F9 | LD C,$03 | C=03. | ||||||||||||||||||
GameIntro_0 | 74FB | LD B,$08 | B=08. | |||||||||||||||||
GameIntro_1 | 74FD | PUSH BC | Stash BC, HL and DE on the stack. | |||||||||||||||||
74FE | PUSH HL | |||||||||||||||||||
74FF | PUSH DE | |||||||||||||||||||
7500 | LD BC,$00E0 | BC=00E0. | ||||||||||||||||||
7503 | LDDR | LDDR. | ||||||||||||||||||
7505 | LD C,$20 | C=20. | ||||||||||||||||||
7507 | LD L,$FF | L=FF. | ||||||||||||||||||
7509 | LD A,H | Jump to GameIntro_2 if H is less than 47. | ||||||||||||||||||
750A | CP $47 | |||||||||||||||||||
750C | JR C,GameIntro_2 | |||||||||||||||||||
750E | SUB $07 | Subtract 07 and store the result in H. | ||||||||||||||||||
7510 | LD H,A | |||||||||||||||||||
7511 | LDDR | LDDR. | ||||||||||||||||||
GameIntro_2 | 7513 | POP DE | Restore DE and HL from the stack. | |||||||||||||||||
7514 | POP HL | |||||||||||||||||||
7515 | DEC D | Decrease D by one. | ||||||||||||||||||
7516 | DEC H | Decrease H by one. | ||||||||||||||||||
7517 | POP BC | Restore BC from the stack. | ||||||||||||||||||
7518 | DJNZ GameIntro_1 | Decrease counter by one and loop back to GameIntro_1 until counter is zero. | ||||||||||||||||||
751A | DEC C | Decrease C by one. | ||||||||||||||||||
751B | JR NZ,GameIntro_0 | Jump to GameIntro_0 until C is zero. | ||||||||||||||||||
751D | LD H,$40 | H=40. | ||||||||||||||||||
751F | LD B,$08 | B=08. | ||||||||||||||||||
GameIntro_3 | 7521 | PUSH BC | Stash BC on the stack. | |||||||||||||||||
7522 | LD BC,$001F | BC=001F. | ||||||||||||||||||
7525 | LD D,H | D=H. | ||||||||||||||||||
7526 | LD L,B | L=B. | ||||||||||||||||||
7527 | LD E,$01 | E=01. | ||||||||||||||||||
7529 | LD (HL),B | Write B to *HL. | ||||||||||||||||||
752A | LDIR | LDIR. | ||||||||||||||||||
752C | INC H | Increment H by one. | ||||||||||||||||||
752D | POP BC | Restore BC from the stack. | ||||||||||||||||||
752E | DJNZ GameIntro_3 | Decrease counter by one and loop back to GameIntro_3 until counter is zero. | ||||||||||||||||||
7530 | LD HL,$61DB | HL=Graphics_StarLarge. | ||||||||||||||||||
Draw two stars; one large and one small.
|
||||||||||||||||||||
7533 | LD B,$02 | Set a counter in B for the number of types of stars to draw. | ||||||||||||||||||
GameIntro_DrawStar_Loop | 7535 | PUSH BC | Stash the star type counter on the stack. | |||||||||||||||||
GameIntro_4 | 7536 | CALL $670E | Call 670E. | |||||||||||||||||
7539 | AND %00011111 | Keep only bits 0-4. | ||||||||||||||||||
753B | JR Z,GameIntro_4 | Jump to GameIntro_4 if H is equal to 02 or A is equal to 1F. | ||||||||||||||||||
753D | CP $1F | |||||||||||||||||||
753F | JR Z,GameIntro_4 | |||||||||||||||||||
7541 | LD E,A | E=A. | ||||||||||||||||||
7542 | LD D,$40 | D=40. | ||||||||||||||||||
7544 | LD B,$08 | Set a line counter in B (08 lines in a UDG). | ||||||||||||||||||
GameIntro_DrawStar_LineLoop | 7546 | LD A,(HL) | Copy the UDG data to the screen buffer. | |||||||||||||||||
7547 | LD (DE),A | |||||||||||||||||||
7548 | INC HL | Move to the next UDG graphic data byte. | ||||||||||||||||||
7549 | INC D | Move down one pixel line in the screen buffer. | ||||||||||||||||||
754A | DJNZ GameIntro_DrawStar_LineLoop | Decrease the line counter by one and loop back to GameIntro_DrawStar_LineLoop until all 08 lines of the UDG character have been drawn. | ||||||||||||||||||
754C | LD HL,$624B | HL=Graphics_StarSmall. | ||||||||||||||||||
754F | POP BC | Restore the star type counter from the stack. | ||||||||||||||||||
7550 | DJNZ GameIntro_DrawStar_Loop | Decrease star type counter by one and loop back to GameIntro_DrawStar_Loop until both types of star have been drawn. | ||||||||||||||||||
7552 | POP HL | Restore the music data pointer and star counter from the stack. | ||||||||||||||||||
7553 | POP BC | |||||||||||||||||||
7554 | DEC B | Decrease the star counter by one. | ||||||||||||||||||
7555 | JP NZ,GameIntro_StarLoop | Jump back to GameIntro_StarLoop until all the stars have been drawn. | ||||||||||||||||||
The animation is finished.
|
||||||||||||||||||||
GameIntro_Done | 7558 | CALL ClearScreen | Call ClearScreen. | |||||||||||||||||
755B | LD BC,$0000 | Set a counter in BC of 0000. | ||||||||||||||||||
GameIntro_Done_PauseLoop | 755E | DJNZ GameIntro_Done_PauseLoop | Decrease the pause counter by one and loop back to GameIntro_Done_PauseLoop until the counter is zero. | |||||||||||||||||
7560 | DEC C | Decrease C by one. | ||||||||||||||||||
7561 | JR NZ,GameIntro_Done_PauseLoop | Jump to GameIntro_Done_PauseLoop until C is zero. | ||||||||||||||||||
7563 | RET | Return. |
Prev: 72C9 | Up: Map | Next: 7564 |