Prev: B989 Up: Map Next: BD99
B9B1: Start Game
Used by the routine at 684B.
StartGame B9B1 LD ($B793),IY Write IY to *B793.
B9B5 LD HL,$1510 HL=1510.
B9B8 CALL ScreenAddress Call ScreenAddress.
B9BB LD ($B7A6),HL Write HL to *B7A6.
B9BE LD HL,$15C0 HL=15C0.
B9C1 CALL ScreenAddress Call ScreenAddress.
B9C4 LD ($B7C8),HL Write HL to *B7C8.
B9C7 LD HL,$1568 HL=1568.
B9CA CALL ScreenAddress Call ScreenAddress.
B9CD LD ($B7B6),HL Write HL to *B7B6.
B9D0 LD DE,$6000 DE=6000.
B9D3 LD HL,$9AD0 HL=9AD0.
B9D6 LD A,$0B A=0B.
StartGame_0 B9D8 LD BC,$0016 BC=0016.
B9DB LDIR LDIR.
B9DD DEC A Decrease A by one.
B9DE JR NZ,StartGame_0 Jump to StartGame_0 until A is zero.
B9E0 LD HL,$5CD8 HL=5CD8.
B9E3 LD B,$01 B=01.
B9E5 CALL $8EDA Call 8EDA.
StartGame_1 B9E8 LD A,($B7A6) A=*B7A6.
B9EB AND %00011111 Keep only bits 0-4.
B9ED CP $02 Call BE30 if A is not equal to 02.
B9EF CALL NZ,$BE30
B9F2 CALL $93F8 Call 93F8.
B9F5 LD HL,$0000 HL=0000.
B9F8 LD ($B7EC),HL Write HL to *1UP_Score.
B9FB LD ($B7ED),HL Write HL to *B7ED.
B9FE LD ($B7AA),HL Write HL to *B7AA.
BA01 LD ($B7AC),HL Write HL to *B7AC.
BA04 LD ($B7AE),HL Write HL to *B7AE.
BA07 LD ($B7CC),HL Write HL to *B7CC.
BA0A LD ($B7CE),HL Write HL to *B7CE.
BA0D LD ($B7D0),HL Write HL to *B7D0.
BA10 LD A,$03 Write 03 to *1UP_Lives.
BA12 LD ($B7E8),A
BA15 LD A,$C0 Write C0 to *B842.
BA17 LD ($B842),A
BA1A XOR A Reset the bits from A.
BA1B LD ($B7EA),A Write A to *1UP_Level.
BA1E LD ($B7EB),A Write A to *B7EB.
BA21 LD ($B7E6),A Write A to *B7E6.
BA24 CALL $BE54 Call BE54.
BA27 LD DE,$6100 DE=6100.
BA2A LD HL,($9789) HL=*9789.
BA2D LD BC,$00B4 BC=00B4.
BA30 LDIR LDIR.
BA32 LD DE,$B7F0 DE=B7F0.
BA35 LD HL,$B7E8 HL=1UP_Lives.
BA38 LD BC,$0007 BC=0007.
BA3B LDIR LDIR.
BA3D LD A,($B7E5) Jump to StartGame_2 if *GameMode is not zero.
BA40 AND A
BA41 JR NZ,StartGame_2
BA43 LD ($B7F0),A Write A to *B7F0.
StartGame_2 BA46 CALL $97AD Call 97AD.
BA49 CALL $97BC Call 97BC.
StartGame_3 BA4C CALL $9776 Call 9776.
BA4F CALL $BE8B Call BE8B.
BA52 CALL $B7F8 Call B7F8.
BA55 CALL $97AD Call 97AD.
BA58 CALL $B974 Call B974.
BA5B CALL $BDCF Call BDCF.
BA5E CALL $BDF6 Call BDF6.
BA61 CALL $B795 Call B795.
BA64 CALL $8F60 Call 8F60.
BA67 LD B,$04 B=04.
BA69 CALL $B7DC Call B7DC.
BA6C CALL $B765 Call B765.
BA6F LD HL,$8158 HL=8158.
BA72 LD BC,$0A28 BC=0A28.
BA75 CALL $9CF4 Call 9CF4.
BA78 LD HL,$D90B HL=D90B.
BA7B LD DE,$5A0B DE=5A0B (attribute buffer location).
BA7E LD BC,$008B BC=008B.
BA81 LDIR LDIR.
StartGame_4 BA83 LD A,($8D49) Call 8E72 if *8D49 is equal to 99.
BA86 CP $99
BA88 CALL Z,$8E72
BA8B XOR A Reset the bits from A.
BA8C LD ($5CDC),A Write A to *5CDC.
BA8F CALL $A161 Call A161.
BA92 LD HL,($8D46) HL=*8D46.
BA95 INC HL Increment HL by one.
BA96 LD ($8D46),HL Write HL to *8D46.
BA99 CALL $9EAA Call 9EAA.
BA9C CALL $8EB4 Call 8EB4.
BA9F LD IX,$9B54 IX=9B54.
BAA3 CALL $9F64 Call 9F64.
BAA6 LD A,($B7E5) Jump to StartGame_5 if *GameMode is not equal to 02.
BAA9 CP $02
BAAB JR NZ,StartGame_5
BAAD CALL $A66C Call A66C.
BAB0 LD A,($8ED9) A=*8ED9.
BAB3 PUSH AF Stash AF on the stack.
BAB4 LD A,($B7F7) A=*B7F7.
BAB7 CALL $A19E Call A19E.
BABA LD A,($8ED9) A=*8ED9.
BABD LD ($B972),A Write A to *B972.
BAC0 LD IX,$9B3E IX=9B3E.
BAC4 CALL $9F64 Call 9F64.
BAC7 POP AF Restore AF from the stack.
BAC8 LD ($8ED9),A Write A to *8ED9.
BACB LD IX,$9B54 IX=9B54.
BACF CALL $ACCE Call ACCE.
BAD2 LD IX,$9B3E IX=9B3E.
BAD6 CALL $ACAD Call ACAD.
BAD9 CALL $A66C Call A66C.
StartGame_5 BADC LD HL,$9F54 HL=9F54.
BADF CALL $B66A Call B66A.
BAE2 LD HL,$B684 HL=B684.
BAE5 CALL $B66A Call B66A.
BAE8 CALL $B694 Call B694.
BAEB JR StartGame_6 Jump to StartGame_6.
BAED LD A,($9BAC) A=*9BAC.
BAF0 AND A Set flags.
BAF1 JP NZ,StartGame_12 Jump to StartGame_12 if {} is not zero.
StartGame_6 BAF4 LD A,($5CD9) A=*5CD9.
BAF7 AND A Set flags.
BAF8 JP Z,StartGame_22 Jump to StartGame_22 if {} is zero.
BAFB LD A,($B7E9) A=*Number_Bricks.
BAFE AND A Set flags.
BAFF JP Z,StartGame_22 Jump to StartGame_22 if {} is zero.
BB02 CALL $97DE Call 97DE.
BB05 LD HL,$9910 HL=9910.
BB08 CALL $B66A Call B66A.
BB0B CALL Sounds_PlayQueue Call Sounds_PlayQueue.
BB0E JR NZ,StartGame_10 Jump to StartGame_10 if {} is not zero.
BB10 LD A,($D000) A=*D000.
BB13 CP $04 Compare A with 04.
BB15 JR Z,StartGame_7 Jump to StartGame_7 if {} is zero.
BB17 JR C,StartGame_9 Jump to StartGame_9 if {} is lower.
BB19 LD A,($5CD8) A=*5CD8.
BB1C CP $23 Compare A with 23.
BB1E JR NC,StartGame_10 Jump to StartGame_10 if {} is higher.
BB20 JR StartGame_9 Jump to StartGame_9.
StartGame_7 BB22 LD A,($9B60) A=*9B60.
BB25 CP $1C Compare A with 1C.
BB27 JR NZ,StartGame_8 Jump to StartGame_8 if {} is not zero.
BB29 LD A,($9B80) A=*9B80.
BB2C AND A Set flags.
BB2D JR NZ,StartGame_9 Jump to StartGame_9 if {} is not zero.
StartGame_8 BB2F LD A,($5CDC) A=*5CDC.
BB32 CP $03 Compare A with 03.
BB34 JR C,StartGame_10 Jump to StartGame_10 if {} is lower.
StartGame_9 BB36 EI Enable interrupts.
BB37 HALT Halt operation (suspend CPU until the next interrupt).
BB38 DI Disable interrupts.
StartGame_10 BB39 LD IX,$9B54 IX=9B54.
BB3D CALL $B8E6 Call B8E6.
BB40 LD A,($B7E5) A=*GameMode.
BB43 CP $02 Compare A with 02.
BB45 JR NZ,StartGame_11 Jump to StartGame_11 if {} is not zero.
BB47 CALL $B8D7 Call B8D7.
BB4A LD IX,$9B3E IX=9B3E.
BB4E CALL $B8E6 Call B8E6.
BB51 CALL $B8D7 Call B8D7.
StartGame_11 BB54 LD HL,$9C25 HL=9C25.
BB57 CALL $B66A Call B66A.
BB5A LD A,($9C24) A=*9C24.
BB5D AND A Set flags.
BB5E CALL NZ,$B717 Call B717 not zero.
BB61 CALL $987A Call 987A.
BB64 CALL $978B Call 978B.
BB67 JP StartGame_4 Jump to StartGame_4.
StartGame_12 BB6A LD B,$0B
BB6C LD DE,$0016
BB6F LD IX,$9AD0
StartGame_13 BB73 LD A,(IX+$00)
BB76 AND A
BB77 JR Z,StartGame_14
BB79 SET 7,(IX+$00)
StartGame_14 BB7D ADD IX,DE
BB7F DJNZ StartGame_13
BB81 LD A,$01
BB83 LD HL,$0000
BB86 LD (HL),A
BB87 LD A,$06
BB89 LD ($9BAC),A
BB8C LD A,$05
BB8E LD ($C0B8),A
BB91 XOR A
BB92 LD ($8D46),A
BB95 JR StartGame_16
StartGame_15 BB97 LD A,($8D46)
BB9A INC A
BB9B LD ($8D46),A
BB9E CALL $8EB4
BBA1 LD HL,$9F54
BBA4 CALL $B66A
BBA7 CALL $B694
StartGame_16 BBAA LD HL,$B684
BBAD CALL $B66A
BBB0 CALL $97DE
BBB3 LD HL,$9910
BBB6 CALL $B66A
BBB9 LD IY,($B793)
BBBD EI
BBBE HALT
BBBF DI
BBC0 CALL Sounds_PlayQueue
BBC3 LD HL,$9C25
BBC6 CALL $B66A
BBC9 LD A,($9C24)
BBCC AND A
BBCD CALL NZ,$B717
BBD0 CALL $989A
BBD3 CALL $978B
BBD6 LD A,($9BAC)
BBD9 AND A
BBDA JP Z,StartGame_20
BBDD JP StartGame_15
StartGame_17 BBE0 LD A,($B7EB)
BBE3 INC A
BBE4 LD ($B7EB),A
BBE7 LD A,($B7EA)
BBEA INC A
BBEB CP $0F
BBED JR Z,StartGame_18
BBEF LD ($B7EA),A
BBF2 JR StartGame_19
StartGame_18 BBF4 XOR A
BBF5 LD ($B7EA),A
StartGame_19 BBF8 JP $BE54
StartGame_20 BBFB CALL $AF81
StartGame_21 BBFE LD A,($B7E9)
BC01 AND A
BC02 CALL Z,Sounds_PlayQueue
BC05 CALL StartGame_17
BC08 LD B,$02
BC0A CALL $B7DC
BC0D JP StartGame_3
StartGame_22 BC10 LD A,($8E71)
BC13 AND A
BC14 JR Z,StartGame_23
BC16 LD IX,($8E70)
BC1A LD A,(IX+$02)
BC1D SUB $05
BC1F LD L,A
BC20 LD A,(IX+$04)
BC23 SUB $05
BC25 LD H,A
BC26 LD BC,$0417
BC29 CALL $9CF4
BC2C XOR A
BC2D LD ($8E71),A
StartGame_23 BC30 LD IX,$9AD0
BC34 LD B,$0B
BC36 LD DE,$0016
BC39 LD A,($9BAC)
BC3C PUSH AF
StartGame_24 BC3D LD A,(IX+$00)
BC40 AND A
BC41 JR Z,StartGame_25
BC43 SET 7,(IX+$00)
StartGame_25 BC47 ADD IX,DE
BC49 DJNZ StartGame_24
BC4B POP AF
BC4C LD ($9BAC),A
BC4F LD HL,$9910
BC52 CALL $B66A
BC55 LD HL,$9C25
BC58 CALL $B66A
BC5B LD A,($9C24)
BC5E AND A
BC5F CALL NZ,$B717
BC62 LD A,($B7E9)
BC65 AND A
BC66 JP Z,StartGame_21
BC69 LD A,$08
BC6B LD ($C0B8),A
BC6E LD A,$3D
BC70 LD ($C0B9),A
BC73 XOR A
BC74 LD ($A899),A
BC77 LD IX,$9AD0
BC7B LD B,$0A
BC7D LD A,($9B56)
BC80 LD C,A
BC81 LD A,($9B40)
BC84 SUB C
BC85 LD ($BCE7),A
BC88 LD A,($9B60)
BC8B SRL A
BC8D ADD A,C
BC8E SUB $0C
BC90 LD C,A
BC91 LD DE,$0016
BC94 LD L,$1B
StartGame_26 BC96 LD (IX+$14),$18
BC9A LD (IX+$15),$18
BC9E LD (IX+$0C),$08
BCA2 LD (IX+$0D),$07
BCA6 LD (IX+$08),$02
BCAA LD (IX+$09),$0B
BCAE LD (IX+$11),D
BCB1 LD (IX+$01),D
BCB4 LD (IX+$00),$07
BCB8 LD (IX+$02),C
BCBB LD (IX+$04),$AE
BCBF LD (IX+$06),L
BCC2 LD (IX+$07),$02
BCC6 LD A,L
BCC7 ADD A,$05
BCC9 AND $3F
BCCB LD L,A
BCCC ADD IX,DE
BCCE INC C
BCCF INC C
BCD0 INC C
BCD1 DJNZ StartGame_26
BCD3 LD A,($B7E5)
BCD6 CP $02
BCD8 JR NZ,StartGame_28
BCDA LD IX,$9AE6
BCDE LD DE,$0016
BCE1 LD B,$05
StartGame_27 BCE3 LD A,(IX+$02)
BCE6 ADD A,$00
BCE8 LD (IX+$02),A
BCEB ADD IX,DE
BCED ADD IX,DE
BCEF DJNZ StartGame_27
StartGame_28 BCF1 CALL $8EB4
BCF4 LD HL,$9F54
BCF7 CALL $B66A
BCFA CALL $B694
BCFD LD HL,$B684
BD00 CALL $B66A
BD03 CALL $97DE
BD06 LD HL,$9910
BD09 LD A,($9AE6)
BD0C RLA
BD0D CALL NC,$B66A
BD10 CALL Sounds_PlayQueue
BD13 LD HL,$9C25
BD16 CALL $B66A
BD19 LD A,($9C24)
BD1C AND A
BD1D CALL NZ,$B717
BD20 CALL $989A
BD23 CALL $978B
BD26 LD A,($9AE6)
BD29 AND A
BD2A JP NZ,StartGame_28
BD2D LD B,$03
BD2F CALL $B7DC
BD32 LD A,($B7E8)
BD35 DEC A
BD36 LD ($B7E8),A
BD39 JR Z,StartGame_29
BD3B LD A,($B7E5)
BD3E DEC A
BD3F CALL Z,$BE0C
BD42 JP StartGame_3
StartGame_29 BD45 LD B,$02
BD47 CALL $B7D4
BD4A CALL $97AD
BD4D CALL $97BC
BD50 LD A,($B7E6)
BD53 INC A
BD54 LD ($BDB2),A
BD57 LD DE,$BD99
BD5A LD B,$02
BD5C CALL $B796
BD5F LD A,($B7E5)
BD62 CP $02
BD64 CALL Z,$BDB3
BD67 LD B,$0C
BD69 CALL $B7D4
BD6C CALL $BE6E
BD6F CALL $910C
BD72 LD A,($B7E5)
BD75 CP $02
BD77 JR NZ,StartGame_30
BD79 CALL $BE30
BD7C CALL $BE6E
BD7F CALL $910C
BD82 CALL $BE30
BD85 JP StartGame_1
StartGame_30 BD88 DEC A
BD89 JP NZ,StartGame_1
BD8C LD A,($B7F0)
BD8F AND A
BD90 JP Z,StartGame_1
BD93 CALL $BE0C
BD96 JP StartGame_3
Prev: B989 Up: Map Next: BD99