Prev: 43527 Up: Map Next: 44313
43610: OptionsScreen
Draws the difficulty-selection screen and waits for a key. Clears display, fills attributes green (32), then draws the game title and five option lines using the tile-blit helper 44509. Reads port $F7FE in a loop: keys 1-4 (bits 0-3) set 33683 (reused here as difficulty, 0-3) and redraw the highlighted option; key 5 (bit 4) confirms the selection and returns. The selected difficulty level is stored at 33683 and used throughout the game to scale alien speed and crew health.
Input
Used by the routine at 36457.
43610 CALL 42501 ClearDisplay
43613 LD A,32 green ink on black
43615 CALL 42515 FillAttributes(32)
43618 LD HL,16450 HL = $4042 (screen row for title)
43621 LD (31257),HL set draw pointer
43624 LD DE,41717 DE = 41717 (title tile data)
43627 LD B,27 27 characters wide
43629 CALL 44509 blit title text
43632 LD HL,16619
43635 LD (31257),HL
This entry point is used by the routine at 42821.
43638 LD DE,41744
43641 LD B,12
43643 CALL 44509
This entry point is used by the routine at 42821.
43646 LD HL,18475
43649 LD (31257),HL
This entry point is used by the routine at 42821.
43652 LD DE,41756
This entry point is used by the routine at 42821.
43655 LD B,14
This entry point is used by the routine at 42821.
43657 CALL 44509
43660 LD HL,18539
43663 LD (31257),HL
43666 LD DE,41770
43669 LD B,12
43671 CALL 44509
43674 LD HL,18603
43677 LD (31257),HL
This entry point is used by the routine at 42821.
43680 LD DE,41782
43683 LD B,12
43685 CALL 44509
43688 LD HL,18667
43691 LD (31257),HL
This entry point is used by the routine at 42821.
43694 LD DE,41794
43697 LD B,10
43699 CALL 44509
43702 LD HL,20582
43705 LD (31257),HL
43708 LD DE,41804
43711 LD B,21
43713 CALL 44509
43716 LD HL,20674
43719 LD (31257),HL
43722 LD DE,41825
43725 LD B,28
43727 CALL 44509
43730 XOR A
43731 LD (33683),A
43734 CALL 44032
43737 LD HL,33683
43740 LD BC,63486
43743 IN A,(C)
43745 RRA
43746 JR NC,43762
43748 RRA
43749 JR NC,43773
43751 RRA
43752 JR NC,43785
43754 RRA
43755 JR NC,43797
43757 RRA
43758 JR NC,43809
43760 JR 43737
43762 LD A,(HL)
43763 AND A
43764 JR Z,43737
43766 CALL 44032
43769 LD (HL),0
43771 JR 43734
43773 LD A,(HL)
43774 CP 1
43776 JR Z,43737
43778 CALL 44032
43781 LD (HL),1
43783 JR 43734
43785 LD A,(HL)
43786 CP 2
43788 JR Z,43737
43790 CALL 44032
43793 LD (HL),2
43795 JR 43734
43797 LD A,(HL)
43798 CP 3
43800 JR Z,43737
43802 CALL 44032
43805 LD (HL),3
43807 JR 43734
43809 LD A,(HL)
43810 ADD A,A
43811 LD E,A
43812 LD D,0
43814 LD HL,41989
43817 ADD HL,DE
43818 LD A,(HL)
43819 INC HL
43820 LD H,(HL)
43821 LD L,A
43822 LD (34637),HL
43825 LD A,(33683)
43828 CP 3
43830 RET NZ
43831 CALL 42501
43834 LD A,32
43836 CALL 42515
43839 CALL 44109
43842 LD HL,16449
43845 LD (31257),HL
43848 LD DE,41853
43851 LD B,30
43853 CALL 44509
43856 LD A,(40502)
43859 AND A
43860 JR Z,43904
43862 LD HL,16516
43865 LD (31257),HL
43868 LD DE,41883
43871 LD B,24
43873 CALL 44509
43876 LD HL,16548
43879 LD (31257),HL
43882 LD DE,41907
43885 LD B,25
43887 CALL 44509
43890 CALL 44093
43893 LD BC,57342 BC = port 57342 ($DFFE): keyboard half-row P,O,I,U,Y
43896 IN A,(C) read keyboard row
43898 AND 16 bit 4 = the Y key (active low)
43900 RET NZ return if Y not pressed (keep default keys)
43901 CALL 44109
43904 LD HL,18436
43907 LD (31257),HL
43910 LD DE,41932
43913 LD B,24
43915 CALL 44509
43918 LD HL,18500
43921 LD (31257),HL
43924 LD DE,41956
43927 LD B,11
43929 CALL 44509
43932 CALL 44093
43935 LD (44047),BC
43939 LD (44052),A
43942 CALL 44109
43945 LD HL,18509
43948 LD (31257),HL
43951 LD DE,41967
43954 LD B,4
43956 CALL 44509
43959 CALL 44093
43962 LD (44059),BC
43966 LD (44064),A
43969 CALL 44109
43972 LD HL,18509
43975 LD (31257),HL
43978 LD DE,41971
43981 LD B,4
43983 CALL 44509
43986 CALL 44093
43989 LD (44071),BC
43993 LD (44076),A
43996 CALL 44109
43999 LD HL,18509
44002 LD (31257),HL
44005 LD DE,41975
44008 LD B,14
44010 CALL 44509
44013 CALL 44093
44016 LD (44083),BC
44020 LD (44088),A
44023 CALL 44109
44026 LD A,255
44028 LD (40502),A
44031 RET
44032 PUSH HL
44033 LD HL,22763
44036 CALL 43219
44039 POP HL
44040 RET
44041 LD HL,33682
44044 LD (HL),0
44046 LD BC,32766
44049 IN A,(C)
44051 AND 1
44053 JR NZ,44058
44055 SET 2,(HL)
44057 RET
44058 LD BC,32766
44061 IN A,(C)
44063 AND 2
44065 JR NZ,44070
44067 SET 3,(HL)
44069 RET
44070 LD BC,32766
44073 IN A,(C)
44075 AND 4
44077 JR NZ,44082
44079 SET 4,(HL)
44081 RET
44082 LD BC,32766
44085 IN A,(C)
44087 AND 8
44089 RET NZ
44090 SET 1,(HL)
44092 RET
This entry point is used by the routine at 44815.
44093 LD BC,65278
44096 IN A,(C)
44098 AND 31
44100 XOR 31
44102 RET NZ
44103 RLC B
44105 JR C,44096
44107 JR 44093
This entry point is used by the routines at 42821 and 44815.
44109 LD BC,65278
44112 IN A,(C)
44114 AND 31
44116 XOR 31
44118 JR NZ,44109
44120 RLC B
44122 JR C,44112
44124 RET
This entry point is used by the routines at 37490 and 38379.
44125 CALL 44561
44128 XOR A
44129 LD (40503),A
44132 CALL 44651
44135 CALL 44698
This entry point is used by the routine at 44313.
44138 CALL 44722
44141 CALL 44339
44144 CALL 44354
44147 CALL 44428
44150 CALL 44452
44153 CALL 44591
44156 JP 36457
This entry point is used by the routine at 38379.
44159 CALL 44561
44162 XOR A
44163 LD (40503),A
44166 LD DE,42068
44169 LD B,25
44171 LD HL,16387
44174 LD (31257),HL
44177 CALL 44509
44180 LD HL,31253
44183 BIT 0,(HL)
44185 JR NZ,44193
44187 CALL 44622
44190 JP 44144
44193 LD A,(38364)
44196 LD (42122),A
44199 LD HL,(38366)
44202 LD (42132),HL
44205 LD HL,16451
44208 LD (31257),HL
44211 LD B,25
44213 LD DE,42093
44216 CALL 44509
44219 LD HL,16483
44222 LD (31257),HL
44225 LD B,23
44227 LD DE,42119
44230 CALL 44509
44233 CALL 44651
44236 CALL 44722
44239 JP 44144
This entry point is used by the routine at 44313.
44242 CALL 44561
44245 XOR A
44246 LD (40503),A
44249 LD HL,16386
44252 LD (31257),HL
44255 LD DE,42234
44258 LD B,28
44260 CALL 44509
44263 LD HL,31253
44266 BIT 0,(HL)
44268 JP NZ,44193
44271 CALL 44622
44274 JP 44144
This entry point is used by the routine at 38379.
44277 CALL 44561
44280 LD HL,16385
44283 LD (31257),HL
44286 LD DE,42204
44289 LD B,30
44291 CALL 44509
44294 XOR A
44295 LD (40503),A
44298 LD HL,29581
44301 LD DE,8
44304 LD B,7
44306 LD (HL),2
44308 ADD HL,DE
44309 DJNZ 44306
44311 JR 44263
Prev: 43527 Up: Map Next: 44313