CPU2
;================================================================ ; Startup comes here 0000: 31 00 91 LD SP,$9100 ; Initialize stack 0003: C3 7C 05 JP $057C ; Continue processing 0006: FF RST 0X38 ; Filler for RST 0007: FF RST 0X38 ; Filler for RST ; ;================================================================ ; Add A*2 to HL. (If A is zero, add 0x100 to HL) 0008: 87 ADD A,A ; A*2 0009: 30 05 JR NC,$10 ; Overflow? 000B: 24 INC H ; Yes ... bump HL 000C: C3 10 00 JP $0010 ; Continue with add routine 000F: FF RST 0X38 ; Filler ; ;================================================================ ; Add A to HL 0010: 85 ADD A,L ; Offset L by A 0011: 6F LD L,A ; Overflow? 0012: D0 RET NC ; No - HL is fine 0013: 24 INC H ; Yes - Add carry to H 0014: C9 RET ; Done 0015: FF RST 0X38 ; Filler 0016: FF RST 0X38 ; Filler 0017: FF RST 0X38 ; Filler ; ;================================================================ ; Fill buffer pointed to by HL (length in B) ; with byte value in A. 0018: 77 LD (HL),A ; Store value to buffer 0019: 23 INC HL ; Next in buffer 001A: 10 FC DJNZ $18 ; Do B times 001C: C9 RET ; Done ; Looks like data from here to 34 001D: 23 INC HL ; # 001E: 06 16 LD B,$16 ; # 0020: 23 INC HL ; # 0021: 00 NOP ; # 0022: 19 ADD HL,DE ; # 0023: F7 RST 0X30 ; # 0024: 4B LD C,E ; # 0025: 00 NOP ; # 0026: 23 INC HL ; # 0027: F0 RET P ; # 0028: 02 LD (BC),A ; # 0029: F0 RET P ; # 002A: 5E LD E,(HL) ; # 002B: 00 NOP ; # 002C: 23 INC HL ; # 002D: F0 RET P ; # 002E: 24 INC H ; # 002F: FB EI ; # 0030: 23 INC HL ; # 0031: 00 NOP ; # 0032: FF RST 0X38 ; # 0033: FF RST 0X38 ; # 0034: E9 JP (HL) ; Jump to routine pointed to by HL ; 0035: FF RST 0X38 ; (Routine RETs to caller) 0036: FF RST 0X38 ; 0037: FF RST 0X38 ; 0038: C3 13 05 JP $0513 ; IRQ Routine ; Jump table for commands 003B: BE 05 ;RET 003D: BF 05 ; Commenting this disables the drawing of the Blue bees and the Big Bees 003F: D3 08 ; Commenting this disables all enemies. They don't appear on the screen and the levels progress automatically upwards. 0041: BE 05 ; RET 0043: F5 06 ; Commenting this disables player fire. The bullet appears but stays in place at the bottom. Collisions with it do not explode. 0045: EE 05 ; Commenting this disables player collision detection. Bullets and bees pass under the player undetected. 0047: BE 05 ; RET 0049: CA 0E ; ??Expansion check? Commenting seemed to have no effect. ; Looks like data from here to 516 004B: 23 ; # 004C: F0 RET P ; # 004D: 26 23 LD H,$23 ; # 004F: 14 INC D ; # 0050: 13 INC DE ; # 0051: FE 0D CP $0D ; # 0053: 0B DEC BC ; # 0054: 0A LD A,(BC) ; # 0055: 08 EX AF,AF' ; # 0056: 06 04 LD B,$04 ; # 0058: 03 INC BC ; # 0059: 01 23 FF LD BC,$FF23 ; # 005C: FF RST 0X38 ; # 005D: FF RST 0X38 ; # 005E: 44 LD B,H ; # 005F: E4 18 FB CALL PO,$FB18 ; # 0062: 44 LD B,H ; # 0063: 00 NOP ; # 0064: FF RST 0X38 ; # 0065: FF RST 0X38 ; # 0066: C9 RET ; # hardware interrupt 0067: 23 INC HL ; # 0068: 08 EX AF,AF' ; # 0069: 08 EX AF,AF' ; # 006A: 23 INC HL ; # 006B: 03 INC BC ; # 006C: 1B DEC DE ; # 006D: 23 INC HL ; # 006E: 08 EX AF,AF' ; # 006F: 0F RRCA ; # 0070: 23 INC HL ; # 0071: 16 15 LD D,$15 ; # 0073: F7 RST 0X30 ; # 0074: 84 ADD A,H ; # 0075: 00 NOP ; # 0076: 23 INC HL ; # 0077: 16 03 LD D,$03 ; # 0079: F0 RET P ; # 007A: 97 SUB A ; # 007B: 00 NOP ; # 007C: 23 INC HL ; # 007D: 16 19 LD D,$19 ; # 007F: FB EI ; # 0080: 23 INC HL ; # 0081: 00 NOP ; # 0082: FF RST 0X38 ; # 0083: FF RST 0X38 ; # 0084: 23 INC HL ; # 0085: 16 01 LD D,$01 ; # 0087: FE 0D CP $0D ; # 0089: 0C INC C ; # 008A: 0A LD A,(BC) ; # 008B: 08 EX AF,AF' ; # 008C: 06 04 LD B,$04 ; # 008E: 03 INC BC ; # 008F: 01 23 FC LD BC,$FC23 ; # 0092: 30 23 JR NC,$B7 ; # 0094: 00 NOP ; # 0095: FF RST 0X38 ; # 0096: FF RST 0X38 ; # 0097: 44 LD B,H ; # 0098: 27 DAA ; # 0099: 0E FB LD C,$FB ; # 009B: 44 LD B,H ; # 009C: 00 NOP ; # 009D: FF RST 0X38 ; # 009E: FF RST 0X38 ; # 009F: 33 INC SP ; # 00A0: 06 18 LD B,$18 ; # 00A2: 23 INC HL ; # 00A3: 00 NOP ; # 00A4: 18 F7 JR $9D ; # 00A6: B6 OR (HL) ; # 00A7: 00 NOP ; # 00A8: 23 INC HL ; # 00A9: F0 RET P ; # 00AA: 08 EX AF,AF' ; # 00AB: F0 RET P ; # 00AC: CC 00 23 CALL Z,$2300 ; # 00AF: F0 RET P ; # 00B0: 20 FB JR NZ,$AD ; # 00B2: 23 INC HL ; # 00B3: 00 NOP ; # 00B4: FF RST 0X38 ; # 00B5: FF RST 0X38 ; # 00B6: 23 INC HL ; # 00B7: F0 RET P ; # 00B8: 20 23 JR NZ,$DD ; # 00BA: 10 0D DJNZ $C9 ; # 00BC: FE 1A CP $1A ; # 00BE: 18 15 JR $D5 ; # 00C0: 10 0C DJNZ $CE ; # 00C2: 08 EX AF,AF' ; # 00C3: 05 DEC B ; # 00C4: 03 INC BC ; # 00C5: 23 INC HL ; # 00C6: FE 30 CP $30 ; # 00C8: 23 INC HL ; # 00C9: 00 NOP ; # 00CA: FF RST 0X38 ; # 00CB: FF RST 0X38 ; # 00CC: 33 INC SP ; # 00CD: E0 RET PO ; # 00CE: 10 FB DJNZ $CB ; # 00D0: 44 LD B,H ; # 00D1: 00 NOP ; # 00D2: FF RST 0X38 ; # 00D3: FF RST 0X38 ; # 00D4: 23 INC HL ; # 00D5: 03 INC BC ; # 00D6: 18 33 JR $10B ; # 00D8: 04 INC B ; # 00D9: 10 23 DJNZ $FE ; # 00DB: 08 EX AF,AF' ; # 00DC: 0A LD A,(BC) ; # 00DD: 44 LD B,H ; # 00DE: 16 12 LD D,$12 ; # 00E0: F7 RST 0X30 ; # 00E1: 60 LD H,B ; # 00E2: 01 44 16 LD BC,$1644 ; # 00E5: 03 INC BC ; # 00E6: F0 RET P ; # 00E7: 73 LD (HL),E ; # 00E8: 01 44 16 LD BC,$1644 ; # 00EB: 1D DEC E ; # 00EC: FB EI ; # 00ED: 23 INC HL ; # 00EE: 00 NOP ; # 00EF: FF RST 0X38 ; # 00F0: FF RST 0X38 ; # 00F1: 12 LD (DE),A ; # 00F2: 18 17 JR $10B ; # 00F4: 12 LD (DE),A ; # 00F5: 00 NOP ; # 00F6: 80 ADD A,B ; # 00F7: FF RST 0X38 ; # 00F8: FF RST 0X38 ; # 00F9: FF RST 0X38 ; # 00FA: FF RST 0X38 ; # 00FB: FF RST 0X38 ; # 00FC: FF RST 0X38 ; # 00FD: FF RST 0X38 ; # 00FE: FF RST 0X38 ; # 00FF: FF RST 0X38 ; # ; Table used in Movement E 0100: 14 INC D ; # 0101: 06 14 LD B,$14 ; # 0103: 0C INC C ; # 0104: 14 INC D ; # 0105: 08 EX AF,AF' ; # 0106: 14 INC D ; # 0107: 0A LD A,(BC) ; # 0108: 1C INC E ; # 0109: 00 NOP ; # 010A: 1C INC E ; # 010B: 12 LD (DE),A ; # 010C: 1E 00 LD E,$00 ; # 010E: 1E 12 LD E,$12 ; # 0110: 1C INC E ; # 0111: 02 LD (BC),A ; # 0112: 1C INC E ; # 0113: 10 1E DJNZ $133 ; # 0115: 02 LD (BC),A ; # 0116: 1E 10 LD E,$10 ; # 0118: 1C INC E ; # 0119: 04 INC B ; # 011A: 1C INC E ; # 011B: 0E 1E LD C,$1E ; # 011D: 04 INC B ; # 011E: 1E 0E LD E,$0E ; # 0120: 1C INC E ; # 0121: 06 1C LD B,$1C ; # 0123: 0C INC C ; # 0124: 1E 06 LD E,$06 ; # 0126: 1E 0C LD E,$0C ; # 0128: 1C INC E ; # 0129: 08 EX AF,AF' ; # 012A: 1C INC E ; # 012B: 0A LD A,(BC) ; # 012C: 1E 08 LD E,$08 ; # 012E: 1E 0A LD E,$0A ; # 0130: 16 06 LD D,$06 ; # 0132: 16 0C LD D,$0C ; # 0134: 16 08 LD D,$08 ; # 0136: 16 0A LD D,$0A ; # 0138: 18 00 JR $13A ; # 013A: 18 12 JR $14E ; # 013C: 1A LD A,(DE) ; # 013D: 00 NOP ; # 013E: 1A LD A,(DE) ; # 013F: 12 LD (DE),A ; # 0140: 18 02 JR $144 ; # 0142: 18 10 JR $154 ; # 0144: 1A LD A,(DE) ; # 0145: 02 LD (BC),A ; # 0146: 1A LD A,(DE) ; # 0147: 10 18 DJNZ $161 ; # 0149: 04 INC B ; # 014A: 18 0E JR $15A ; # 014C: 1A LD A,(DE) ; # 014D: 04 INC B ; # 014E: 1A LD A,(DE) ; # 014F: 0E 18 LD C,$18 ; # 0151: 06 18 LD B,$18 ; # 0153: 0C INC C ; # 0154: 1A LD A,(DE) ; # 0155: 06 1A LD B,$1A ; # 0157: 0C INC C ; # 0158: 18 08 JR $162 ; # 015A: 18 0A JR $166 ; # 015C: 1A LD A,(DE) ; # 015D: 08 EX AF,AF' ; # 015E: 1A LD A,(DE) ; # 015F: 0A LD A,(BC) ; # 0160: 44 LD B,H ; # 0161: 16 06 LD D,$06 ; # 0163: FE 0C CP $0C ; # 0165: 0B DEC BC ; # 0166: 0A LD A,(BC) ; # 0167: 08 EX AF,AF' ; # 0168: 06 04 LD B,$04 ; # 016A: 02 LD (BC),A ; # 016B: 01 23 FE LD BC,$FE23 ; # 016E: 30 23 JR NC,$193 ; # 0170: 00 NOP ; # 0171: FF RST 0X38 ; # 0172: FF RST 0X38 ; # 0173: 66 LD H,(HL) ; # 0174: 20 14 JR NZ,$18A ; # 0176: FB EI ; # 0177: 44 LD B,H ; # 0178: 00 NOP ; # 0179: FF RST 0X38 ; # 017A: FF RST 0X38 ; # 017B: 23 INC HL ; # 017C: 06 18 LD B,$18 ; # 017E: 23 INC HL ; # 017F: 00 NOP ; # 0180: 18 F7 JR $179 ; # 0182: 92 SUB D ; # 0183: 01 44 F0 LD BC,$F044 ; # 0186: 08 EX AF,AF' ; # 0187: F0 RET P ; # 0188: A8 XOR B ; # 0189: 01 44 F0 LD BC,$F044 ; # 018C: 20 FB JR NZ,$189 ; # 018E: 23 INC HL ; # 018F: 00 NOP ; # 0190: FF RST 0X38 ; # 0191: FF RST 0X38 ; # 0192: 44 LD B,H ; # 0193: F0 RET P ; # 0194: 26 23 LD H,$23 ; # 0196: 10 0B DJNZ $1A3 ; # 0198: FE 22 CP $22 ; # 019A: 20 1E JR NZ,$1BA ; # 019C: 1B DEC DE ; # 019D: 18 15 JR $1B4 ; # 019F: 12 LD (DE),A ; # 01A0: 10 23 DJNZ $1C5 ; # 01A2: FE 30 CP $30 ; # 01A4: 23 INC HL ; # 01A5: 00 NOP ; # 01A6: FF RST 0X38 ; # 01A7: FF RST 0X38 ; # 01A8: 66 LD H,(HL) ; # 01A9: E0 RET PO ; # 01AA: 10 FB DJNZ $1A7 ; # 01AC: 44 LD B,H ; # 01AD: 00 NOP ; # 01AE: FF RST 0X38 ; # 01AF: FF RST 0X38 ; # 01B0: 23 INC HL ; # 01B1: 03 INC BC ; # 01B2: 20 23 JR NZ,$1D7 ; # 01B4: 08 EX AF,AF' ; # 01B5: 0F RRCA ; # 01B6: 23 INC HL ; # 01B7: 16 12 LD D,$12 ; # 01B9: F7 RST 0X30 ; # 01BA: CA 01 23 JP Z,$2301 ; # 01BD: 16 03 LD D,$03 ; # 01BF: F0 RET P ; # 01C0: E0 RET PO ; # 01C1: 01 23 16 LD BC,$1623 ; # 01C4: 1D DEC E ; # 01C5: FB EI ; # 01C6: 23 INC HL ; # 01C7: 00 NOP ; # 01C8: FF RST 0X38 ; # 01C9: FF RST 0X38 ; # 01CA: 23 INC HL ; # 01CB: 16 01 LD D,$01 ; # 01CD: FE 0D CP $0D ; # 01CF: 0C INC C ; # 01D0: 0B DEC BC ; # 01D1: 09 ADD HL,BC ; # 01D2: 07 RLCA ; # 01D3: 05 DEC B ; # 01D4: 03 INC BC ; # 01D5: 02 LD (BC),A ; # 01D6: 23 INC HL ; # 01D7: 02 LD (BC),A ; # 01D8: 20 23 JR NZ,$1FD ; # 01DA: FC 12 23 CALL M,$2312 ; # 01DD: 00 NOP ; # 01DE: FF RST 0X38 ; # 01DF: FF RST 0X38 ; # 01E0: 44 LD B,H ; # 01E1: 20 14 JR NZ,$1F7 ; # 01E3: FB EI ; # 01E4: 44 LD B,H ; # 01E5: 00 NOP ; # 01E6: FF RST 0X38 ; # 01E7: FF RST 0X38 ; # 01E8: 23 INC HL ; # 01E9: 00 NOP ; # 01EA: 10 23 DJNZ $20F ; # 01EC: 01 40 22 LD BC,$2240 ; # 01EF: 0C INC C ; # 01F0: 37 SCF ; # 01F1: 23 INC HL ; # 01F2: 00 NOP ; # 01F3: FF RST 0X38 ; # 01F4: FF RST 0X38 ; # 01F5: 23 INC HL ; # 01F6: 02 LD (BC),A ; # 01F7: 3A 23 10 LD A,($1023) ; # 01FA: 09 ADD HL,BC ; # 01FB: 23 INC HL ; # 01FC: 00 NOP ; # 01FD: 18 23 JR $222 ; # 01FF: 20 10 JR NZ,$211 ; # 0201: 23 INC HL ; # 0202: 00 NOP ; # 0203: 18 23 JR $228 ; # 0205: 20 0D JR NZ,$214 ; # 0207: 23 INC HL ; # 0208: 00 NOP ; # 0209: FF RST 0X38 ; # 020A: FF RST 0X38 ; # 020B: 23 INC HL ; # 020C: 00 NOP ; # 020D: 10 23 DJNZ $232 ; # 020F: 01 30 00 LD BC,$0030 ; # 0212: 40 LD B,B ; # 0213: 08 EX AF,AF' ; # 0214: 23 INC HL ; # 0215: FF RST 0X38 ; # 0216: 30 23 JR NC,$23B ; # 0218: 00 NOP ; # 0219: FF RST 0X38 ; # 021A: FF RST 0X38 ; # 021B: 23 INC HL ; # 021C: 00 NOP ; # 021D: 30 23 JR NC,$242 ; # 021F: 05 DEC B ; # 0220: 80 ADD A,B ; # 0221: 23 INC HL ; # 0222: 05 DEC B ; # 0223: 4C LD C,H ; # 0224: 23 INC HL ; # 0225: 04 INC B ; # 0226: 01 23 00 LD BC,$0023 ; # 0229: 50 LD D,B ; # 022A: FF RST 0X38 ; # 022B: 23 INC HL ; # 022C: 00 NOP ; # 022D: 28 23 JR Z,$252 ; # 022F: 06 1D LD B,$1D ; # 0231: 23 INC HL ; # 0232: 00 NOP ; # 0233: 11 00 40 LD DE,$4000 ; # 0236: 08 EX AF,AF' ; # 0237: 23 INC HL ; # 0238: 00 NOP ; # 0239: 11 23 FA LD DE,$FA23 ; # 023C: 1D DEC E ; # 023D: 23 INC HL ; # 023E: 00 NOP ; # 023F: 50 LD D,B ; # 0240: FF RST 0X38 ; # 0241: 23 INC HL ; # 0242: 00 NOP ; # 0243: 21 00 20 LD HL,$2000 ; # 0246: 10 23 DJNZ $26B ; # 0248: F8 RET M ; # 0249: 20 23 JR NZ,$26E ; # 024B: FF RST 0X38 ; # 024C: 20 23 JR NZ,$271 ; # 024E: F8 RET M ; # 024F: 1B DEC DE ; # 0250: 23 INC HL ; # 0251: E8 RET PE ; # 0252: 0B DEC BC ; # 0253: 23 INC HL ; # 0254: 00 NOP ; # 0255: 21 00 20 LD HL,$2000 ; # 0258: 08 EX AF,AF' ; # 0259: 23 INC HL ; # 025A: 00 NOP ; # 025B: 42 LD B,D ; # 025C: FF RST 0X38 ; # 025D: 23 INC HL ; # 025E: 00 NOP ; # 025F: 08 EX AF,AF' ; # 0260: 00 NOP ; # 0261: 20 08 JR NZ,$26B ; # 0263: 23 INC HL ; # 0264: F0 RET P ; # 0265: 20 23 JR NZ,$28A ; # 0267: 10 20 DJNZ $289 ; # 0269: 23 INC HL ; # 026A: F0 RET P ; # 026B: 40 LD B,B ; # 026C: 23 INC HL ; # 026D: 10 20 DJNZ $28F ; # 026F: 23 INC HL ; # 0270: F0 RET P ; # 0271: 20 00 JR NZ,$273 ; # 0273: 20 08 JR NZ,$27D ; # 0275: 23 INC HL ; # 0276: 00 NOP ; # 0277: 30 FF JR NC,$278 ; # 0279: 23 INC HL ; # 027A: 10 0C DJNZ $288 ; # 027C: 23 INC HL ; # 027D: 00 NOP ; # 027E: 20 23 JR NZ,$2A3 ; # 0280: E8 RET PE ; # 0281: 10 23 DJNZ $2A6 ; # 0283: F4 10 23 CALL P,$2310 ; # 0286: E8 RET PE ; # 0287: 10 23 DJNZ $2AC ; # 0289: F4 32 23 CALL P,$2332 ; # 028C: E8 RET PE ; # 028D: 10 23 DJNZ $2B2 ; # 028F: F4 32 23 CALL P,$2332 ; # 0292: E8 RET PE ; # 0293: 10 23 DJNZ $2B8 ; # 0295: F4 10 23 CALL P,$2310 ; # 0298: E8 RET PE ; # 0299: 0E 23 LD C,$23 ; # 029B: 02 LD (BC),A ; # 029C: 30 FF JR NC,$29D ; # 029E: 23 INC HL ; # 029F: F1 POP AF ; # 02A0: 08 EX AF,AF' ; # 02A1: 23 INC HL ; # 02A2: 00 NOP ; # 02A3: 10 23 DJNZ $2C8 ; # 02A5: 05 DEC B ; # 02A6: 3C INC A ; # 02A7: 23 INC HL ; # 02A8: 07 RLCA ; # 02A9: 42 LD B,D ; # 02AA: 23 INC HL ; # 02AB: 0A LD A,(BC) ; # 02AC: 40 LD B,B ; # 02AD: 23 INC HL ; # 02AE: 10 2D DJNZ $2DD ; # 02B0: 23 INC HL ; # 02B1: 20 19 JR NZ,$2CC ; # 02B3: 00 NOP ; # 02B4: FC 14 23 CALL M,$2314 ; # 02B7: 02 LD (BC),A ; # 02B8: 4A LD C,D ; # 02B9: FF RST 0X38 ; # 02BA: 23 INC HL ; # 02BB: 04 INC B ; # 02BC: 20 23 JR NZ,$2E1 ; # 02BE: 00 NOP ; # 02BF: 16 23 LD D,$23 ; # 02C1: F0 RET P ; # 02C2: 30 23 JR NC,$2E7 ; # 02C4: 00 NOP ; # 02C5: 12 LD (DE),A ; # 02C6: 23 INC HL ; # 02C7: 10 30 DJNZ $2F9 ; # 02C9: 23 INC HL ; # 02CA: 00 NOP ; # 02CB: 12 LD (DE),A ; # 02CC: 23 INC HL ; # 02CD: 10 30 DJNZ $2FF ; # 02CF: 23 INC HL ; # 02D0: 00 NOP ; # 02D1: 16 23 LD D,$23 ; # 02D3: 04 INC B ; # 02D4: 20 23 JR NZ,$2F9 ; # 02D6: 00 NOP ; # 02D7: 10 FF DJNZ $2D8 ; # 02D9: 23 INC HL ; # 02DA: 00 NOP ; # 02DB: 15 DEC D ; # 02DC: 00 NOP ; # 02DD: 20 08 JR NZ,$2E7 ; # 02DF: 23 INC HL ; # 02E0: 00 NOP ; # 02E1: 11 00 E0 LD DE,$E000 ; # 02E4: 08 EX AF,AF' ; # 02E5: 23 INC HL ; # 02E6: 00 NOP ; # 02E7: 18 00 JR $2E9 ; # 02E9: 20 08 JR NZ,$2F3 ; # 02EB: 23 INC HL ; # 02EC: 00 NOP ; # 02ED: 13 INC DE ; # 02EE: 00 NOP ; # 02EF: E0 RET PO ; # 02F0: 08 EX AF,AF' ; # 02F1: 23 INC HL ; # 02F2: 00 NOP ; # 02F3: 1F RRA ; # 02F4: 00 NOP ; # 02F5: 20 08 JR NZ,$2FF ; # 02F7: 23 INC HL ; # 02F8: 00 NOP ; # 02F9: 30 FF JR NC,$2FA ; # 02FB: 23 INC HL ; # 02FC: 02 LD (BC),A ; # 02FD: 0E 23 LD C,$23 ; # 02FF: 00 NOP ; # 0300: 34 INC (HL) ; # 0301: 23 INC HL ; # 0302: 12 LD (DE),A ; # 0303: 19 ADD HL,DE ; # 0304: 23 INC HL ; # 0305: 00 NOP ; # 0306: 20 23 JR NZ,$32B ; # 0308: E0 RET PO ; # 0309: 0E 23 LD C,$23 ; # 030B: 00 NOP ; # 030C: 12 LD (DE),A ; # 030D: 23 INC HL ; # 030E: 20 0E JR NZ,$31E ; # 0310: 23 INC HL ; # 0311: 00 NOP ; # 0312: 0C INC C ; # 0313: 23 INC HL ; # 0314: E0 RET PO ; # 0315: 0E 23 LD C,$23 ; # 0317: 1B DEC DE ; # 0318: 08 EX AF,AF' ; # 0319: 23 INC HL ; # 031A: 00 NOP ; # 031B: 10 FF DJNZ $31C ; # 031D: 23 INC HL ; # 031E: 00 NOP ; # 031F: 0D DEC C ; # 0320: 00 NOP ; # 0321: C0 RET NZ ; # 0322: 04 INC B ; # 0323: 23 INC HL ; # 0324: 00 NOP ; # 0325: 21 00 40 LD HL,$4000 ; # 0328: 06 23 LD B,$23 ; # 032A: 00 NOP ; # 032B: 51 LD D,C ; # 032C: 00 NOP ; # 032D: C0 RET NZ ; # 032E: 06 23 LD B,$23 ; # 0330: 00 NOP ; # 0331: 73 LD (HL),E ; # 0332: FF RST 0X38 ; # 0333: 23 INC HL ; # 0334: 08 EX AF,AF' ; # 0335: 20 23 JR NZ,$35A ; # 0337: 00 NOP ; # 0338: 16 23 LD D,$23 ; # 033A: E0 RET PO ; # 033B: 0C INC C ; # 033C: 23 INC HL ; # 033D: 02 LD (BC),A ; # 033E: 0B DEC BC ; # 033F: 23 INC HL ; # 0340: 11 0C 23 LD DE,$230C ; # 0343: 02 LD (BC),A ; # 0344: 0B DEC BC ; # 0345: 23 INC HL ; # 0346: E0 RET PO ; # 0347: 0C INC C ; # 0348: 23 INC HL ; # 0349: 00 NOP ; # 034A: 16 23 LD D,$23 ; # 034C: 08 EX AF,AF' ; # 034D: 20 FF JR NZ,$34E ; # 034F: 12 LD (DE),A ; # 0350: 18 1E JR $370 ; # 0352: 12 LD (DE),A ; # 0353: 00 NOP ; # 0354: 34 INC (HL) ; # 0355: 12 LD (DE),A ; # 0356: FB EI ; # 0357: 26 12 LD H,$12 ; # 0359: 00 NOP ; # 035A: 02 LD (BC),A ; # 035B: FC 2E 12 CALL M,$122E ; # 035E: FA 3C FA JP M,$FA3C ; # 0361: 9E SBC (HL) ; # 0362: 03 INC BC ; # 0363: 12 LD (DE),A ; # 0364: F8 RET M ; # 0365: 10 12 DJNZ $379 ; # 0367: FA 5C 12 JP M,$125C ; # 036A: 00 NOP ; # 036B: 23 INC HL ; # 036C: F8 RET M ; # 036D: F9 LD SP,HL ; # 036E: EF RST 0X28 ; # 036F: 7C LD A,H ; # 0370: 03 INC BC ; # 0371: F6 AB OR $AB ; # 0373: 12 LD (DE),A ; # 0374: 01 28 12 LD BC,$1228 ; # 0377: 0A LD A,(BC) ; # 0378: 18 FD JR $377 ; # 037A: 52 LD D,D ; # 037B: 03 INC BC ; # 037C: F6 B0 OR $B0 ; # 037E: 23 INC HL ; # 037F: 08 EX AF,AF' ; # 0380: 1E 23 LD E,$23 ; # 0382: 00 NOP ; # 0383: 19 ADD HL,DE ; # 0384: 23 INC HL ; # 0385: F8 RET M ; # 0386: 16 23 LD D,$23 ; # 0388: 00 NOP ; # 0389: 02 LD (BC),A ; # 038A: FC 30 23 CALL M,$2330 ; # 038D: F7 RST 0X30 ; # 038E: 26 FA LD H,$FA ; # 0390: 9E SBC (HL) ; # 0391: 03 INC BC ; # 0392: 23 INC HL ; # 0393: F0 RET P ; # 0394: 0A LD A,(BC) ; # 0395: 23 INC HL ; # 0396: F5 PUSH AF ; # 0397: 31 23 00 LD SP,$0023 ; # 039A: 10 FD DJNZ $399 ; # 039C: 6C LD L,H ; # 039D: 03 INC BC ; # 039E: 12 LD (DE),A ; # 039F: F8 RET M ; # 03A0: 10 12 DJNZ $3B4 ; # 03A2: 00 NOP ; # 03A3: 40 LD B,B ; # 03A4: FB EI ; # 03A5: 12 LD (DE),A ; # 03A6: 00 NOP ; # 03A7: FF RST 0X38 ; # 03A8: FF RST 0X38 ; # 03A9: 12 LD (DE),A ; # 03AA: 18 1D JR $3C9 ; # 03AC: 12 LD (DE),A ; # 03AD: 00 NOP ; # 03AE: 28 12 JR Z,$3C2 ; # 03B0: FA 02 F3 JP M,$F302 ; # 03B3: 3F CCF ; # 03B4: 3B DEC SP ; # 03B5: 36 32 LD (HL),$32 ; # 03B7: 28 26 JR Z,$3DF ; # 03B9: 24 INC H ; # 03BA: 22 12 04 LD ($0412),HL ; # 03BD: 30 12 JR NC,$3D1 ; # 03BF: FC 30 12 CALL M,$1230 ; # 03C2: 00 NOP ; # 03C3: 18 F8 JR $3BD ; # 03C5: F9 LD SP,HL ; # 03C6: FA 0C 04 JP M,$040C ; # 03C9: EF RST 0X28 ; # 03CA: D7 RST 0X10 ; # 03CB: 03 INC BC ; # 03CC: F6 B0 OR $B0 ; # 03CE: 12 LD (DE),A ; # 03CF: 01 28 12 LD BC,$1228 ; # 03D2: 0A LD A,(BC) ; # 03D3: 15 DEC D ; # 03D4: FD AC XOR IYH ; # 03D6: 03 INC BC ; # 03D7: F6 C0 OR $C0 ; # 03D9: 23 INC HL ; # 03DA: 08 EX AF,AF' ; # 03DB: 10 23 DJNZ $400 ; # 03DD: 00 NOP ; # 03DE: 23 INC HL ; # 03DF: 23 INC HL ; # 03E0: F8 RET M ; # 03E1: 0F RRCA ; # 03E2: 23 INC HL ; # 03E3: 00 NOP ; # 03E4: 48 LD C,B ; # 03E5: F8 RET M ; # 03E6: F9 LD SP,HL ; # 03E7: FA 0C 04 JP M,$040C ; # 03EA: F6 B0 OR $B0 ; # 03EC: 23 INC HL ; # 03ED: 08 EX AF,AF' ; # 03EE: 20 23 JR NZ,$413 ; # 03F0: 00 NOP ; # 03F1: 08 EX AF,AF' ; # 03F2: 23 INC HL ; # 03F3: F8 RET M ; # 03F4: 02 LD (BC),A ; # 03F5: F3 DI ; # 03F6: 34 INC (HL) ; # 03F7: 31 2D 29 LD SP,$292D ; # 03FA: 22 26 1F LD ($1F26),HL ; # 03FD: 18 23 JR $422 ; # 03FF: 08 EX AF,AF' ; # 0400: 18 23 JR $425 ; # 0402: F8 RET M ; # 0403: 18 23 JR $428 ; # 0405: 00 NOP ; # 0406: 10 F8 DJNZ $400 ; # 0408: F9 LD SP,HL ; # 0409: FD CC 03 FB CALL Z,$FB03 ; # 040D: 12 LD (DE),A ; # 040E: 00 NOP ; # 040F: FF RST 0X38 ; # 0410: FF RST 0X38 ; # 0411: 12 LD (DE),A ; # 0412: 18 14 JR $428 ; # 0414: 12 LD (DE),A ; # 0415: 03 INC BC ; # 0416: 2A 12 10 LD HL,($1012) ; # 0419: 40 LD B,B ; # 041A: 12 LD (DE),A ; # 041B: 01 20 12 LD BC,$1220 ; # 041E: FE 71 CP $71 ; # 0420: F9 LD SP,HL ; # 0421: F1 POP AF ; # 0422: FA 0C 04 JP M,$040C ; # 0425: EF RST 0X28 ; # 0426: 30 04 JR NC,$42C ; # 0428: F6 AB OR $AB ; # 042A: 12 LD (DE),A ; # 042B: 02 LD (BC),A ; # 042C: 20 FD JR NZ,$42B ; # 042E: 14 INC D ; # 042F: 04 INC B ; # 0430: F6 B0 OR $B0 ; # 0432: 23 INC HL ; # 0433: 04 INC B ; # 0434: 1A LD A,(DE) ; # 0435: 23 INC HL ; # 0436: 03 INC BC ; # 0437: 1D DEC E ; # 0438: 23 INC HL ; # 0439: 1A LD A,(DE) ; # 043A: 25 DEC H ; # 043B: 23 INC HL ; # 043C: 03 INC BC ; # 043D: 10 23 DJNZ $462 ; # 043F: FD 48 LD C,B ; # 0441: FD 20 04 JR NZ,$448 ; # 0444: 12 LD (DE),A ; # 0445: 18 14 JR $45B ; # 0447: 12 LD (DE),A ; # 0448: 03 INC BC ; # 0449: 2A 12 10 LD HL,($1012) ; # 044C: 40 LD B,B ; # 044D: 12 LD (DE),A ; # 044E: 01 20 12 LD BC,$1220 ; # 0451: FE 78 CP $78 ; # 0453: FF RST 0X38 ; # 0454: 12 LD (DE),A ; # 0455: 18 14 JR $46B ; # 0457: F4 12 00 CALL P,$0012 ; # 045A: 04 INC B ; # 045B: FC 48 00 CALL M,$0048 ; # 045E: FC FF 23 CALL M,$23FF ; # 0461: 00 NOP ; # 0462: 30 F8 JR NC,$45C ; # 0464: F9 LD SP,HL ; # 0465: FA 0C 04 JP M,$040C ; # 0468: FD 25 DEC IYH ; # 046A: 04 INC B ; # 046B: 12 LD (DE),A ; # 046C: 18 14 JR $482 ; # 046E: FB EI ; # 046F: 12 LD (DE),A ; # 0470: 00 NOP ; # 0471: FF RST 0X38 ; # 0472: FF RST 0X38 ; # 0473: 12 LD (DE),A ; # 0474: 18 1E JR $494 ; # 0476: 12 LD (DE),A ; # 0477: 00 NOP ; # 0478: 08 EX AF,AF' ; # 0479: F2 99 04 JP P,$0499 ; # 047C: 00 NOP ; # 047D: 00 NOP ; # 047E: 0A LD A,(BC) ; # 047F: F2 99 04 JP P,$0499 ; # 0482: 00 NOP ; # 0483: 00 NOP ; # 0484: 0A LD A,(BC) ; # 0485: 12 LD (DE),A ; # 0486: 00 NOP ; # 0487: 2C INC L ; # 0488: 12 LD (DE),A ; # 0489: FB EI ; # 048A: 26 12 LD H,$12 ; # 048C: 00 NOP ; # 048D: 02 LD (BC),A ; # 048E: FC 2E 12 CALL M,$122E ; # 0491: FA 3C FA JP M,$FA3C ; # 0494: 9E SBC (HL) ; # 0495: 03 INC BC ; # 0496: FD 63 LD IYH,E ; # 0498: 03 INC BC ; # 0499: 12 LD (DE),A ; # 049A: 00 NOP ; # 049B: 2C INC L ; # 049C: 12 LD (DE),A ; # 049D: FB EI ; # 049E: 26 12 LD H,$12 ; # 04A0: 00 NOP ; # 04A1: 02 LD (BC),A ; # 04A2: FC 2E 12 CALL M,$122E ; # 04A5: FA 18 12 JP M,$1218 ; # 04A8: 00 NOP ; # 04A9: 10 FF DJNZ $4AA ; # 04AB: 12 LD (DE),A ; # 04AC: 18 13 JR $4C1 ; # 04AE: F2 C6 04 JP P,$04C6 ; # 04B1: 00 NOP ; # 04B2: 00 NOP ; # 04B3: 08 EX AF,AF' ; # 04B4: F2 CF 04 JP P,$04CF ; # 04B7: 00 NOP ; # 04B8: 00 NOP ; # 04B9: 08 EX AF,AF' ; # 04BA: 12 LD (DE),A ; # 04BB: 18 0B JR $4C8 ; # 04BD: 12 LD (DE),A ; # 04BE: 00 NOP ; # 04BF: 34 INC (HL) ; # 04C0: 12 LD (DE),A ; # 04C1: FB EI ; # 04C2: 26 FD LD H,$FD ; # 04C4: 58 LD E,B ; # 04C5: 03 INC BC ; # 04C6: 12 LD (DE),A ; # 04C7: 00 NOP ; # 04C8: 10 12 DJNZ $4DC ; # 04CA: 18 0B JR $4D7 ; # 04CC: FD D8 RET C ; # 04CE: 04 INC B ; # 04CF: 12 LD (DE),A ; # 04D0: 00 NOP ; # 04D1: 08 EX AF,AF' ; # 04D2: 12 LD (DE),A ; # 04D3: 18 0B JR $4E0 ; # 04D5: 12 LD (DE),A ; # 04D6: 00 NOP ; # 04D7: 06 12 LD B,$12 ; # 04D9: 00 NOP ; # 04DA: 22 12 FB ; LD ($FB12),HL ; # 04DD: 26 12 LD H,$12 ; # 04DF: 00 NOP ; # 04E0: 02 LD (BC),A ; # 04E1: FC 2E 12 CALL M,$122E ; # 04E4: FA 18 12 JP M,$1218 ; # 04E7: 00 NOP ; # 04E8: 20 FF JR NZ,$4E9 ; # 04EA: 12 LD (DE),A ; # 04EB: 18 1E JR $50B ; # 04ED: 12 LD (DE),A ; # 04EE: 00 NOP ; # 04EF: 14 INC D ; # 04F0: F2 02 05 JP P,$0502 ; # 04F3: 12 LD (DE),A ; # 04F4: 00 NOP ; # 04F5: 08 EX AF,AF' ; # 04F6: F2 02 05 JP P,$0502 ; # 04F9: 12 LD (DE),A ; # 04FA: 00 NOP ; # 04FB: 18 12 JR $50F ; # 04FD: FB EI ; # 04FE: 26 FD LD H,$FD ; # 0500: 58 LD E,B ; # 0501: 03 INC BC ; # 0502: 12 LD (DE),A ; # 0503: E2 01 F3 JP PO,$F301 ; # 0506: 08 EX AF,AF' ; # 0507: 07 RLCA ; # 0508: 06 05 LD B,$05 ; # 050A: 04 INC B ; # 050B: 03 INC BC ; # 050C: 02 LD (BC),A ; # 050D: 01 F5 23 LD BC,$23F5 ; # 0510: 00 NOP ; # 0511: 48 LD C,B ; # 0512: FF RST 0X38 ; # ;================================================================ ; Interrupt comes here ; Interrupt is ignored if DSW2:5 is clear [FREEZE]. 0513: AF XOR A ; Disable ... 0514: 32 21 68 LD ($6821),A ; ... interrupt delivery 0517: 3A 04 68 LD A,($6804) ; Read DSW bit 5 051A: E6 02 AND $02 ; FREEZE DIP switch set to 0? 051C: CA 75 05 JP Z,$0575 ; Yes - skip processing 051F: 3A A0 92 LD A,($92A0) ; Bump counter ... 0522: 3C INC A ; ... 0523: 32 A0 92 LD ($92A0),A ; ... in 92A0 0526: 2A A1 92 LD HL,($92A1) ; Pair of special counters 0529: E6 1F AND $1F ; Mask off upper three bits of count 052B: 3D DEC A ; Is the current count 1? 052C: 28 08 JR Z,$536 ; Yes, add 1 to H 052E: 3C INC A ; Was it 0? 052F: 20 06 JR NZ,$537 ; No, leave 92A1 alone 0531: 7C LD A,H ; Set ... 0532: F6 01 OR $01 ; ... bit 0 ... 0534: 67 LD H,A ; ... of H 0535: 2C INC L ; Add 1 to L 0536: 24 INC H ; Add 1 to H 0537: 22 A1 92 LD ($92A1),HL ; TOPHER ? 053A: 3A C7 99 LD A,($99C7) ; 053D: 5F LD E,A ; 053E: 3A A7 92 LD A,($92A7) ; 0541: BB CP E ; 0542: CB 10 RL B ; 0544: 3A 15 90 LD A,($9015) ; 0547: A0 AND B ; 0548: E6 01 AND $01 ; 054A: 32 AA 92 LD ($92AA),A ; ; 054D: 0E 00 LD C,$00 ; First command 054F: 21 20 90 LD HL,$9020 ; Command flags 0552: 79 LD A,C ; Command to A 0553: 85 ADD A,L ; Bump HL ... 0554: 6F LD L,A ; ... by command number 0555: 7E LD A,(HL) ; Get flag 0556: A7 AND A ; Do command ... 0557: 20 03 JR NZ,$55C ; ... if flag is not 0 0559: 0C INC C ; Else ... 055A: 18 F3 JR $54F ; ... continue with next command. ; ; Do commands 055C: 47 LD B,A ; Hold flag byte 055D: 21 3B 00 LD HL,$003B ; Jump table 0560: 79 LD A,C ; Command 0561: CB 27 SLA A ; *2 0563: 85 ADD A,L ; Offset into table 0564: 6F LD L,A ; Set HL to table point 0565: 5E LD E,(HL) ; Get LSB 0566: 23 INC HL ; Bump 0567: 56 LD D,(HL) ; Get MSB 0568: EB EX DE,HL ; HL to DE 0569: C5 PUSH BC ; Preserve BC (B=flag,C=command) 056A: CD 34 00 CALL $0034 ; Vector to command 056D: C1 POP BC ; Restore BC 056E: 78 LD A,B ; Flag byte 056F: 81 ADD A,C ; Add to command number 0570: 4F LD C,A ; Back to command number 0571: E6 F8 AND $F8 ; Only 8 commands 0573: 28 DA JR Z,$54F ; Reload flag table ; 0575: 3E 01 LD A,$01 ; Enable ... 0577: 32 21 68 LD ($6821),A ; ... interrupt delivery 057A: FB EI ; Enable interrupt receiver 057B: C9 RET ; Done ;================================================================ ; Initialization ; Wait for CLEAR, send checksum results, and wait for CLEAR. ; Enable IRQ ; Initialize 7 bytes of memory at 89E0 ; Infinite loop processing IRQ and resetting stack to 9100. 057C: 11 00 91 LD DE,$9100 ; Semaphore 057F: 1A LD A,(DE) ; Wait for ... 0580: A7 AND A ; ... CPU1 to ... 0581: 20 FC JR NZ,$57F ; ... initialize 0583: 67 LD H,A ; Zero H 0584: 6F LD L,A ; Zero L 0585: 01 10 00 LD BC,$0010 ; Checksum ... 0588: 86 ADD A,(HL) ; ... first ... 0589: 23 INC HL ; ... 1000 ... 058A: 10 FC DJNZ $588 ; ... bytes 058C: 0D DEC C ; ... 058D: 20 F9 JR NZ,$588 ; ... of ROM 058F: FE FF CP $FF ; ROM checksum looks good? 0591: 28 02 JR Z,$595 ; Yes - move on 0593: 3E 11 LD A,$11 ; Bad checksum value 0595: 12 LD (DE),A ; Tell CPU2 0596: 1A LD A,(DE) ; Wait ... 0597: A7 AND A ; ... for ... 0598: 20 FC JR NZ,$596 ; ... acknowledgement 059A: ED 56 IM 1 ; Set interrupt mode 059C: AF XOR A ; Zero 059D: 32 E0 89 LD ($89E0),A ; Clear byte 05A0: 21 B7 05 LD HL,$05B7 ; Copy ... 05A3: 11 21 90 LD DE,$9021 ; ... bytes ... 05A6: 01 07 00 LD BC,$0007 ; ... from ... 05A9: ED B0 LDIR ; ... ROM 05AB: 3E 01 LD A,$01 ; Enable ... 05AD: 32 21 68 LD ($6821),A ; ... IRQ delivery 05B0: FB EI ; Enable IRQ handling 05B1: 31 00 91 LD SP,$9100 ; Infinte loop ... 05B4: C3 B1 05 JP $05B1 ; ... resets stack after each ;================================================================ ; TOPHER Moved to 89E0 05B7: 01 01 00 LD BC,$0001 ; 05BA: 01 01 00 LD BC,$0001 ; 05BD: 0A LD A,(BC) ; ; Commands 0,3,6 05BE: C9 RET ; ;================================================================ ; Command 1 : Looks like drawing of the blue bees and the big bees ; TOPHER What exactly is going on here? ; Linked to CPU1 0863 05BF: 3E 01 LD A,$01 ; Flag move ... 05C1: 32 D7 92 LD ($92D7),A ; ... in progress 05C4: 21 00 8B LD HL,$8B00 ; Move 0x40 bytes ... 05C7: 11 80 8B LD DE,$8B80 ; ... from ... 05CA: 01 40 00 LD BC,$0040 ; ... 8B80 to 8B00 ... 05CD: ED B0 LDIR ; . 05CF: 21 00 93 LD HL,$9300 ; Move 0x40 bytes ... 05D2: 11 80 93 LD DE,$9380 ; ... from ... 05D5: 0E 40 LD C,$40 ; ... 05D7: ED B0 LDIR ; . 05D9: 21 00 9B LD HL,$9B00 ; Move 0x40 bytes ... 05DC: 11 80 9B LD DE,$9B80 ; ... from ... 05DF: 0E 40 LD C,$40 ; ... 05E1: ED B0 LDIR ; . 05E3: AF XOR A ; Flag move ... 05E4: 32 D7 92 LD ($92D7),A ; ... is complete 05E7: 3A D6 92 LD A,($92D6) ; Wait for 92D6 ... 05EA: 3D DEC A ; ... to got to ... 05EB: 28 FA JR Z,$5E7 ; ... 01 05ED: C9 RET ; Done ;================================================================ ; Command 5: Player Collision Detection 05EE: 3A 14 90 LD A,($9014) ; Do detection? 05F1: A7 AND A ; No ... 05F2: C8 RET Z ; ... return 05F3: 32 17 92 LD ($9217),A ; 05F6: 3A 27 98 LD A,($9827) ; 05F9: A7 AND A ; 05FA: 28 17 JR Z,$613 ; 05FC: 21 60 93 LD HL,$9360 ; 05FF: 7E LD A,(HL) ; 0600: A7 AND A ; 0601: 28 10 JR Z,$613 ; 0603: CD 81 06 CALL $0681 ; 0606: 3A BF 99 LD A,($99BF) ; 0609: A7 AND A ; 060A: 28 07 JR Z,$613 ; 060C: CD 49 06 CALL $0649 ; 060F: AF XOR A ; 0610: 32 2B 98 LD ($982B),A ; 0613: 21 62 93 LD HL,$9362 ; 0616: 7E LD A,(HL) ; 0617: A7 AND A ; 0618: C8 RET Z ; 0619: CD 81 06 CALL $0681 ; 061C: 3A BF 99 LD A,($99BF) ; 061F: A7 AND A ; 0620: C8 RET Z ; 0621: 3A 27 98 LD A,($9827) ; 0624: A7 AND A ; 0625: 28 12 JR Z,$639 ; 0627: AF XOR A ; 0628: 32 2B 98 LD ($982B),A ; 062B: 3A 60 93 LD A,($9360) ; 062E: 32 62 93 LD ($9362),A ; 0631: 3A E2 93 LD A,($93E2) ; 0634: 21 E0 93 LD HL,$93E0 ; 0637: 18 16 JR $64F ; 0639: AF XOR A ; 063A: 32 14 90 LD ($9014),A ; 063D: 32 15 90 LD ($9015),A ; 0640: 32 25 90 LD ($9025),A ; 0643: 32 B9 99 LD ($99B9),A ; 0646: 32 17 92 LD ($9217),A ; 0649: EB EX DE,HL ; 064A: 26 93 LD H,$93 ; 064C: CB FD SET 7,L ; 064E: 7E LD A,(HL) ; 064F: D6 08 SUB $08 ; 0651: CB BD RES 7,L ; 0653: 77 LD (HL),A ; 0654: 2C INC L ; 0655: 7E LD A,(HL) ; 0656: D6 08 SUB $08 ; 0658: 77 LD (HL),A ; 0659: 26 8B LD H,$8B ; 065B: 36 0B LD (HL),$0B ; 065D: 2D DEC L ; 065E: 36 20 LD (HL),$20 ; 0660: 26 88 LD H,$88 ; 0662: 36 08 LD (HL),$08 ; 0664: 2C INC L ; 0665: 36 0F LD (HL),$0F ; 0667: 2D DEC L ; 0668: 26 9B LD H,$9B ; 066A: 36 0C LD (HL),$0C ; 066C: AF XOR A ; 066D: 32 27 98 LD ($9827),A ; 0670: 3A 01 92 LD A,($9201) ; 0673: 3D DEC A ; 0674: 32 B9 9A LD ($9AB9),A ; 0677: 3A 17 92 LD A,($9217) ; 067A: A7 AND A ; 067B: C0 RET NZ ; 067C: 3C INC A ; 067D: 32 13 92 LD ($9213),A ; 0680: C9 RET ; ; 0681: AF XOR A ; 0682: 32 BF 99 LD ($99BF),A ; 0685: 26 88 LD H,$88 ; 0687: 7E LD A,(HL) ; 0688: 26 93 LD H,$93 ; 068A: FE 08 CP $08 ; 068C: C8 RET Z ; 068D: 7E LD A,(HL) ; 068E: DD 6F LD IXL,A ; 0690: 2C INC L ; 0691: 46 LD B,(HL) ; 0692: 26 9B LD H,$9B ; 0694: 7E LD A,(HL) ; 0695: 0F RRCA ; 0696: CB 18 RR B ; 0698: DD 60 LD IXH,B ; 069A: 2D DEC L ; 069B: 5D LD E,L ; 069C: 3A 08 90 LD A,($9008) ; 069F: A7 AND A ; 06A0: 28 06 JR Z,$6A8 ; 06A2: 2E 38 LD L,$38 ; 06A4: 06 04 LD B,$04 ; 06A6: 18 04 JR $6AC ; 06A8: 2E 00 LD L,$00 ; 06AA: 06 30 LD B,$30 ; 48 Bees to check 06AC: CD B7 06 CALL $06B7 ; Check collision with bees 06AF: 2E 68 LD L,$68 ; Shot space 06B1: 06 08 LD B,$08 ; Eight shots to check 06B3: CD B7 06 CALL $06B7 ; Check collision with fire 06B6: C9 RET ; ; 06B7: 26 92 LD H,$92 ; 06B9: 7E LD A,(HL) ; 06BA: 26 88 LD H,$88 ; 06BC: B6 OR (HL) ; 06BD: 07 RLCA ; Upper bit set? 06BE: 38 30 JR C,$6F0 ; Yes ... next entity 06C0: 7E LD A,(HL) ; 06C1: E6 FE AND $FE ; 06C3: FE 04 CP $04 ; 06C5: 28 29 JR Z,$6F0 ; Next entity 06C7: 26 93 LD H,$93 ; 06C9: 7E LD A,(HL) ; 06CA: A7 AND A ; 06CB: 28 23 JR Z,$6F0 ; Next entity 06CD: DD 95 SUB IXL ; 06CF: D6 07 SUB $07 ; 06D1: C6 0D ADD $0D ; 06D3: 30 1B JR NC,$6F0 ; Next entity 06D5: 2C INC L ; 06D6: 7E LD A,(HL) ; 06D7: 26 9B LD H,$9B ; 06D9: 4E LD C,(HL) ; 06DA: 2D DEC L ; 06DB: CB 09 RRC C ; 06DD: 1F RRA ; 06DE: DD 94 SUB IXH ; 06E0: D6 04 SUB $04 ; 06E2: C6 07 ADD $07 ; 06E4: 30 0A JR NC,$6F0 ; Next entity 06E6: 3E 01 LD A,$01 ; 06E8: 32 BF 99 LD ($99BF),A ; 06EB: B7 OR A ; 06EC: 08 EX AF,AF' ; 06ED: C3 C2 07 JP $07C2 ; User hit? ; 06F0: 2C INC L ; Next ... 06F1: 2C INC L ; ... pointer 06F2: 10 C3 DJNZ $6B7 ; Do until all checked. 06F4: C9 RET ; Then return ;================================================================ ; Command 4 : Move the player's fire 06F5: 11 A4 92 LD DE,$92A4 ; 06F8: 21 64 93 LD HL,$9364 ; 06FB: CD 04 07 CALL $0704 ; 06FE: 11 A5 92 LD DE,$92A5 ; 0701: 21 66 93 LD HL,$9366 ; 0704: 7E LD A,(HL) ; 0705: A7 AND A ; 0706: C8 RET Z ; 0707: 1A LD A,(DE) ; 0708: 47 LD B,A ; 0709: E6 07 AND $07 ; 070B: 08 EX AF,AF' ; 070C: 3E 06 LD A,$06 ; 070E: CB 78 BIT 7,B ; 0710: 28 01 JR Z,$713 ; 0712: 08 EX AF,AF' ; 0713: CB 70 BIT 6,B ; 0715: 28 02 JR Z,$719 ; 0717: ED 44 NEG ; 0719: 86 ADD A,(HL) ; 071A: 77 LD (HL),A ; 071B: FE F0 CP $F0 ; 071D: 30 44 JR NC,$763 ; 071F: DD 6F LD IXL,A ; 0721: 2C INC L ; 0722: 08 EX AF,AF' ; 0723: CB 68 BIT 5,B ; 0725: 28 02 JR Z,$729 ; 0727: ED 44 NEG ; 0729: 4F LD C,A ; 072A: 86 ADD A,(HL) ; 072B: 77 LD (HL),A ; 072C: 1F RRA ; 072D: A9 XOR C ; 072E: 26 9B LD H,$9B ; 0730: 07 RLCA ; 0731: 30 05 JR NC,$738 ; 0733: CB 0E RRC (HL) ; 0735: 3F CCF ; 0736: CB 16 RL (HL) ; 0738: 4E LD C,(HL) ; 0739: 26 93 LD H,$93 ; 073B: 7E LD A,(HL) ; 073C: CB 09 RRC C ; 073E: 1F RRA ; 073F: DD 67 LD IXH,A ; 0741: FE 14 CP $14 ; 0743: 38 1B JR C,$760 ; 0745: FE 9C CP $9C ; 0747: 30 17 JR NC,$760 ; 0749: 5D LD E,L ; 074A: 3A 1D 90 LD A,($901D) ; 074D: A7 AND A ; 074E: 28 07 JR Z,$757 ; 0750: 21 08 93 LD HL,$9308 ; 0753: 06 2C LD B,$2C ; 0755: 18 05 JR $75C ; 0757: 21 00 93 LD HL,$9300 ; 075A: 06 30 LD B,$30 ; 48 descriptors to check 075C: CD 6A 07 CALL $076A ; Check them ... 075F: C9 RET ; ... and out ; 0760: 2D DEC L ; 0761: 26 93 LD H,$93 ; 0763: 36 00 LD (HL),$00 ; 0765: 26 9B LD H,$9B ; 0767: 36 00 LD (HL),$00 ; 0769: C9 RET ; ; 076A: 26 92 LD H,$92 ; ** Loop starts here ** 076C: 7E LD A,(HL) ; 076D: 26 88 LD H,$88 ; 076F: B6 OR (HL) ; 0770: 07 RLCA ; 0771: 38 41 JR C,$7B4 ; Cary set if #80 -- 0773: 7E LD A,(HL) ; 0774: 4F LD C,A ; 0775: E6 FE AND $FE ; 0777: FE 04 CP $04 ; 0779: 28 39 JR Z,$7B4 ; 077B: 2C INC L ; 077C: 26 9B LD H,$9B ; 077E: 56 LD D,(HL) ; 077F: 26 93 LD H,$93 ; 0781: 7E LD A,(HL) ; 0782: CB 0A RRC D ; 0784: 1F RRA ; 0785: 2D DEC L ; 0786: DD 94 SUB IXH ; 0788: D6 03 SUB $03 ; 078A: C6 06 ADD $06 ; 078C: 30 26 JR NC,$7B4 ; Move on to next 078E: 79 LD A,C ; 078F: 3D DEC A ; 0790: E6 FE AND $FE ; 0792: 08 EX AF,AF' ; 0793: 3A 27 98 LD A,($9827) ; 0796: A7 AND A ; 0797: 7E LD A,(HL) ; 0798: 20 0A JR NZ,$7A4 ; 079A: DD 95 SUB IXL ; 079C: D6 06 SUB $06 ; 079E: C6 0B ADD $0B ; 07A0: 38 17 JR C,$7B9 ; 07A2: 18 10 JR $7B4 ; Move on to next 07A4: DD 95 SUB IXL ; 07A6: D6 14 SUB $14 ; 07A8: C6 0B ADD $0B ; 07AA: 38 0D JR C,$7B9 ; 07AC: C6 04 ADD $04 ; 07AE: 38 04 JR C,$7B4 ; 07B0: C6 0B ADD $0B ; 07B2: 38 05 JR C,$7B9 ; 07B4: 2C INC L ; Next ... 07B5: 2C INC L ; ... descriptor 07B6: 10 B2 DJNZ $76A ; Do all 07B8: C9 RET ; Return after all descriptors are processed 07B9: 7D LD A,L ; 07BA: 2A 44 98 LD HL,($9844) ; 07BD: 23 INC HL ; 07BE: 22 44 98 LD ($9844),HL ; 07C1: 6F LD L,A ; ; 07C2: 16 93 LD D,$93 ; 07C4: AF XOR A ; 07C5: 12 LD (DE),A ; 07C6: 16 9B LD D,$9B ; 07C8: 12 LD (DE),A ; 07C9: 2C INC L ; 07CA: 26 8B LD H,$8B ; 07CC: 7E LD A,(HL) ; 07CD: 4F LD C,A ; 07CE: A7 AND A ; 07CF: CA CA 08 JP Z,$08CA ; 07D2: 2D DEC L ; 07D3: FE 0B CP $0B ; 07D5: 28 3E JR Z,$815 ; 07D7: 08 EX AF,AF' ; 07D8: 20 44 JR NZ,$81E ; 07DA: 08 EX AF,AF' ; 07DB: 26 92 LD H,$92 ; 07DD: 36 81 LD (HL),$81 ; 07DF: 3A 28 98 LD A,($9828) ; 07E2: 95 SUB L ; 07E3: 20 07 JR NZ,$7EC ; 07E5: 32 2B 98 LD ($982B),A ; 07E8: 3C INC A ; 07E9: 32 28 98 LD ($9828),A ; 07EC: E5 PUSH HL ; 07ED: 79 LD A,C ; 07EE: FE 07 CP $07 ; 07F0: 20 03 JR NZ,$7F5 ; 07F2: 3D DEC A ; 07F3: 18 03 JR $7F8 ; 07F5: 3D DEC A ; 07F6: E6 03 AND $03 ; 07F8: 21 A1 9A LD HL,$9AA1 ; 07FB: D7 RST 0X10 ; 07FC: 36 01 LD (HL),$01 ; 07FE: 79 LD A,C ; 07FF: FE 07 CP $07 ; 0801: 20 05 JR NZ,$808 ; 0803: 21 2B 98 LD HL,$982B ; 0806: 36 00 LD (HL),$00 ; 0808: 21 90 92 LD HL,$9290 ; 080B: D7 RST 0X10 ; 080C: 34 INC (HL) ; 080D: 08 EX AF,AF' ; 080E: 28 01 JR Z,$811 ; 0810: 34 INC (HL) ; 0811: E1 POP HL ; 0812: C3 B4 07 JP $07B4 ; ; 0815: 26 93 LD H,$93 ; Putting a return here crashes the game at lev 3 0817: 36 00 LD (HL),$00 ; 0819: 26 88 LD H,$88 ; 081B: 36 80 LD (HL),$80 ; Doesn't seem to be called anywhere 081D: C9 RET ; ; 081E: 26 88 LD H,$88 ; 0820: E5 PUSH HL ; 0821: 08 EX AF,AF' ; 0822: 2C INC L ; 0823: 7E LD A,(HL) ; 0824: 26 91 LD H,$91 ; 0826: C6 13 ADD $13 ; 0828: 6F LD L,A ; 0829: 36 00 LD (HL),$00 ; 082B: 21 88 92 LD HL,$9288 ; 082E: 34 INC (HL) ; 082F: 21 A8 92 LD HL,$92A8 ; 0832: 35 DEC (HL) ; 0833: E1 POP HL ; 0834: 20 13 JR NZ,$849 ; 0836: 26 92 LD H,$92 ; 0838: 3A 85 92 LD A,($9285) ; 083B: 77 LD (HL),A ; 083C: 3A 84 92 LD A,($9284) ; 083F: 67 LD H,A ; 0840: 3A 9F 92 LD A,($929F) ; 0843: 84 ADD A,H ; 0844: 32 9F 92 LD ($929F),A ; 0847: 18 96 JR $7DF ; 0849: 79 LD A,C ; 084A: FE 07 CP $07 ; 084C: 20 04 JR NZ,$852 ; 084E: 16 B8 LD D,$B8 ; 0850: 18 5E JR $8B0 ; 0852: 3A 2D 98 LD A,($982D) ; 0855: BD CP L ; 0856: CA B6 08 JP Z,$08B6 ; 0859: 7D LD A,L ; 085A: E6 38 AND $38 ; 085C: FE 38 CP $38 ; 085E: CA B6 08 JP Z,$08B6 ; 0861: 79 LD A,C ; 0862: FE 01 CP $01 ; 0864: C2 DB 07 JP NZ,$07DB ; 0867: D5 PUSH DE ; 0868: 7D LD A,L ; 0869: E6 07 AND $07 ; 086B: 5F LD E,A ; 086C: 16 88 LD D,$88 ; 086E: 1A LD A,(DE) ; 086F: FE 09 CP $09 ; 0871: 20 26 JR NZ,$899 ; 0873: E5 PUSH HL ; 0874: EB EX DE,HL ; 0875: 2C INC L ; 0876: 7E LD A,(HL) ; 0877: C6 13 ADD $13 ; 0879: 5F LD E,A ; 087A: 16 91 LD D,$91 ; 087C: AF XOR A ; 087D: 12 LD (DE),A ; 087E: 26 8B LD H,$8B ; 0880: 36 09 LD (HL),$09 ; 0882: 2D DEC L ; 0883: 7D LD A,L ; 0884: 32 28 98 LD ($9828),A ; 0887: 26 88 LD H,$88 ; 0889: AF XOR A ; 088A: 77 LD (HL),A ; 088B: 32 8B 92 LD ($928B),A ; 088E: 3C INC A ; 088F: 32 1D 90 LD ($901D),A ; 0892: 32 8D 92 LD ($928D),A ; 0895: 32 B1 9A LD ($9AB1),A ; 0898: E1 POP HL ; 0899: D1 POP DE ; 089A: E5 PUSH HL ; 089B: 3E 06 LD A,$06 ; 089D: 32 AD 92 LD ($92AD),A ; 08A0: 7D LD A,L ; 08A1: E6 07 AND $07 ; 08A3: 21 30 98 LD HL,$9830 ; 08A6: D7 RST 0X10 ; 08A7: 7E LD A,(HL) ; 08A8: 2C INC L ; 08A9: 56 LD D,(HL) ; 08AA: 21 9F 92 LD HL,$929F ; 08AD: 86 ADD A,(HL) ; 08AE: 77 LD (HL),A ; 08AF: E1 POP HL ; 08B0: 26 92 LD H,$92 ; 08B2: 72 LD (HL),D ; 08B3: C3 DF 07 JP $07DF ; 08B6: E5 PUSH HL ; 08B7: 21 B0 99 LD HL,$99B0 ; 08BA: 35 DEC (HL) ; 08BB: E1 POP HL ; 08BC: C2 DB 07 JP NZ,$07DB ; 08BF: 3A B2 99 LD A,($99B2) ; 08C2: 57 LD D,A ; 08C3: 3A B1 99 LD A,($99B1) ; 08C6: E5 PUSH HL ; 08C7: C3 AA 08 JP $08AA ; 08CA: 3C INC A ; 08CB: 77 LD (HL),A ; 08CC: 32 A4 9A LD ($9AA4),A ; 08CF: 2D DEC L ; 08D0: C3 B4 07 JP $07B4 ; ;================================================================ ; Command 2: Process All Enemies 08D3: DD 21 00 91 LD IX,$9100 ; Bee space 08D7: 3E 0C LD A,$0C ; 12 to do 08D9: 32 89 92 LD ($9289),A ; Set counter 08DC: 21 86 92 LD HL,$9286 ; Move (9286) ... 08DF: 7E LD A,(HL) ; ... to (9287) ... 08E0: 36 00 LD (HL),$00 ; ... and ... 08E2: 23 INC HL ; ... clear ... 08E3: 77 LD (HL),A ; ... 9286. ; 08E4: DD CB 13 46 BIT 0,(IX+$13) ; This bee active? 08E8: CA FA 0D JP Z,$0DFA ; No ... next bee 08EB: 21 86 92 LD HL,$9286 ; 08EE: 34 INC (HL) ; 08EF: DD 6E 10 LD L,(IX+$10) ; 08F2: 26 88 LD H,$88 ; 08F4: 7E LD A,(HL) ; 08F5: FE 03 CP $03 ; 08F7: 28 09 JR Z,$902 ; 08F9: FE 09 CP $09 ; 08FB: 28 05 JR Z,$902 ; 08FD: FE 07 CP $07 ; 08FF: C2 48 0E JP NZ,$0E48 ; Movement Routine 0: Not 7 0902: DD 35 0D DEC (IX+$0D) ; 0905: C2 00 0C JP NZ,$0C00 ; 0908: DD 6E 08 LD L,(IX+$08) ; Get movement ... 090B: DD 66 09 LD H,(IX+$09) ; ... command byte 090E: 7E LD A,(HL) ; Movement routine 090F: FE EF CP $EF ; CPL(EF) = 00010000 0911: DA D7 0B JP C,$0BD7 ; Not in table - jump into routine 5 0914: E5 PUSH HL ; Save descriptor on stack 0915: 2F CPL ; Complement 0916: 21 20 09 LD HL,$0920 ; Movement routines 0919: CF RST 0X08 ; Get offset 091A: 7E LD A,(HL) ; Put ... 091B: 23 INC HL ; ... routine ... 091C: 66 LD H,(HL) ; ... pointer ... 091D: 6F LD L,A ; ... in HL. 091E: E3 EX (SP),HL ; Put routine on the stack 091F: C9 RET ; Continue with movement routine ; Movement routines 0920: 48 0E ; 0: (Code does little.) ? 0922: 11 0B ; 1: Blue Bees Attack Pattern 0924: 41 0B ; 2: 0926: 49 0B ; 3: 0928: 9B 0A ; 4: Keeps ships from leaving initial circle to formation 092A: CC 0B ; 5: Keeps attack pattern from returning to formation 092C: 5A 0B ; 6: " 092E: 82 0B ; 7: Keeps pick-up bee from returning to formation 0930: 93 0B ; 8: Something strange in the very first fly-on 0932: A3 0B ; 9: Something strange late in a wave 0934: 42 09 ; A: CHECK THIS OUT -- freezes blue bees after "cheat bee's" first dive 0936: 50 0A ; B: Pickers caught in circle at top 0938: FE 09 ; C: Red bee caught in large circle 093A: 7B 09 ; D: Split bee into specail bees 093C: 68 09 ; E: ? 093E: 55 09 ; F: Initial wave caught in initial circle 0940: 4E 09 ; 10: ? ; Move command A 0942: DD 5E 10 LD E,(IX+$10) ; 0945: 16 88 LD D,$88 ; 0947: 3E 03 LD A,$03 ; 0949: 12 LD (DE),A ; 094A: 23 INC HL ; 094B: C3 0E 09 JP $090E ; ; Movement Routine 10 094E: 3A C9 99 LD A,($99C9) ; 0951: A7 AND A ; 0952: C3 59 09 JP $0959 ; ; Movement Routine F 0955: 3A C8 99 LD A,($99C8) ; 0958: A7 AND A ; 0959: 28 08 JR Z,$963 ; 095B: 23 INC HL ; 095C: 7E LD A,(HL) ; 095D: 23 INC HL ; 095E: 66 LD H,(HL) ; 095F: 6F LD L,A ; 0960: C3 87 0B JP $0B87 ; 0963: 23 INC HL ; 0964: 23 INC HL ; 0965: C3 86 0B JP $0B86 ; ; Movement Routine E 0968: DD 5E 10 LD E,(IX+$10) ; 096B: 16 01 LD D,$01 ; 096D: 1A LD A,(DE) ; 096E: 5F LD E,A ; 096F: 16 99 LD D,$99 ; 0971: 1C INC E ; 0972: 1A LD A,(DE) ; 0973: C6 20 ADD $20 ; Add 20 0975: DD 77 01 LD (IX+$01),A ; Y coordinate 0978: C3 86 0B JP $0B86 ; ; Movement Routine D (Split blue bee into special bees) 097B: E5 PUSH HL ; 097C: DD 5E 10 LD E,(IX+$10) ; 097F: 21 38 88 LD HL,$8838 ; 0982: 06 04 LD B,$04 ; 4 to do 0984: 7E LD A,(HL) ; Get flag 0985: 07 RLCA ; Left bit into C 0986: 38 07 JR C,$98F ; Slot is empty - so something 0988: 2C INC L ; Find ... 0989: 2C INC L ; ... next slot 098A: 10 F8 DJNZ $984 ; Look at all 098C: C3 FA 09 JP $09FA ; No slots found. Can't do this. 098F: 26 8B LD H,$8B ; 0991: 54 LD D,H ; 0992: 1A LD A,(DE) ; 0993: 77 LD (HL),A ; 0994: 2C INC L ; 0995: 1C INC E ; 0996: 1A LD A,(DE) ; 0997: 77 LD (HL),A ; 0998: 2D DEC L ; 0999: 7D LD A,L ; 099A: 08 EX AF,AF' ; 099B: 21 EF 91 LD HL,$91EF ; 099E: 11 EC FF LD DE,$FFEC ; -0x14? 09A1: 06 0C LD B,$0C ; 12 bees 09A3: 7E LD A,(HL) ; Check the bee 09A4: E6 01 AND $01 ; Good one ... 09A6: 28 06 JR Z,$9AE ; ... use it 09A8: 19 ADD HL,DE ; Back up a bee 09A9: 10 F8 DJNZ $9A3 ; Do all bees 09AB: C3 FA 09 JP $09FA ; Next bee 09AE: 19 ADD HL,DE ; Back up a bee 09AF: 23 INC HL ; 09B0: DD 7E 00 LD A,(IX+$00) ; X Coordinate 09B3: DD 5D LD E,IXL ; 09B5: DD 54 LD D,IXH ; 09B7: EB EX DE,HL ; 09B8: FD 6B LD IYL,E ; 09BA: FD 62 LD IYH,D ; 09BC: 01 06 00 LD BC,$0006 ; 09BF: ED B0 LDIR ; 09C1: 0E 06 LD C,$06 ; 09C3: 09 ADD HL,BC ; 09C4: EB EX DE,HL ; 09C5: 19 ADD HL,DE ; 09C6: EB EX DE,HL ; 09C7: 0E 04 LD C,$04 ; 09C9: ED B0 LDIR ; 09CB: DD 7E 13 LD A,(IX+$13) ; 09CE: FD 77 13 LD (IY+$13),A ; 09D1: E1 POP HL ; 09D2: 23 INC HL ; 09D3: 7E LD A,(HL) ; 09D4: FD 77 08 LD (IY+$08),A ; 09D7: 23 INC HL ; 09D8: 7E LD A,(HL) ; 09D9: FD 77 09 LD (IY+$09),A ; 09DC: FD 36 0A 01 LD (IY+$0A),$01 ; 09E0: FD 36 0B 02 LD (IY+$0B),$02 ; 09E4: FD 36 0D 01 LD (IY+$0D),$01 ; 09E8: 08 EX AF,AF' ; 09E9: FD 77 10 LD (IY+$10),A ; 09EC: 5F LD E,A ; 09ED: 16 88 LD D,$88 ; 09EF: 3E 09 LD A,$09 ; 09F1: 12 LD (DE),A ; 09F2: 1C INC E ; 09F3: FD 7D LD A,IYL ; 09F5: 12 LD (DE),A ; 09F6: 23 INC HL ; 09F7: C3 0E 09 JP $090E ; 09FA: E1 POP HL ; 09FB: C3 9D 0B JP $0B9D ; ; Movement Routine C 09FE: E5 PUSH HL ; 09FF: EB EX DE,HL ; 0A00: 3A 15 92 LD A,($9215) ; 0A03: 4F LD C,A ; 0A04: 3A 62 93 LD A,($9362) ; 0A07: FE 1E CP $1E ; 0A09: 30 02 JR NC,$A0D ; 0A0B: 3E 1E LD A,$1E ; 0A0D: FE D1 CP $D1 ; 0A0F: 38 02 JR C,$A13 ; 0A11: 3E D1 LD A,$D1 ; 0A13: CB 41 BIT 0,C ; 0A15: 28 04 JR Z,$A1B ; 0A17: C6 0E ADD $0E ; 0A19: ED 44 NEG ; 0A1B: CB 3F SRL A ; 0A1D: DD 96 03 SUB (IX+$03) ; 0A20: 1F RRA ; 0A21: DD CB 13 7E BIT 7,(IX+$13) ; 0A25: 28 02 JR Z,$A29 ; 0A27: ED 44 NEG ; 0A29: C6 18 ADD $18 ; 0A2B: F2 2F 0A JP P,$0A2F ; 0A2E: AF XOR A ; 0A2F: FE 30 CP $30 ; 0A31: 38 02 JR C,$A35 ; 0A33: 3E 2F LD A,$2F ; 0A35: 67 LD H,A ; 0A36: 3E 06 LD A,$06 ; 0A38: CD A9 0E CALL $0EA9 ; 0A3B: 7C LD A,H ; 0A3C: 3C INC A ; 0A3D: EB EX DE,HL ; 0A3E: D7 RST 0X10 ; 0A3F: 7E LD A,(HL) ; 0A40: DD 77 0D LD (IX+$0D),A ; 0A43: E1 POP HL ; 0A44: 3E 09 LD A,$09 ; 0A46: D7 RST 0X10 ; 0A47: DD 75 08 LD (IX+$08),L ; 0A4A: DD 74 09 LD (IX+$09),H ; 0A4D: C3 FA 0B JP $0BFA ; ; Movement Routine B 0A50: E5 PUSH HL ; 0A51: 3A 15 92 LD A,($9215) ; 0A54: 4F LD C,A ; 0A55: 3A 62 93 LD A,($9362) ; 0A58: C6 03 ADD $03 ; 0A5A: E6 F8 AND $F8 ; 0A5C: 3C INC A ; 0A5D: FE 29 CP $29 ; 0A5F: 30 02 JR NC,$A63 ; 0A61: 3E 29 LD A,$29 ; 0A63: FE CA CP $CA ; 0A65: 38 02 JR C,$A69 ; 0A67: 3E C9 LD A,$C9 ; 0A69: CB 41 BIT 0,C ; 0A6B: 28 03 JR Z,$A70 ; 0A6D: C6 0D ADD $0D ; 0A6F: 2F CPL ; 0A70: 32 8A 92 LD ($928A),A ; 0A73: CB 3F SRL A ; 0A75: 5F LD E,A ; 0A76: 16 48 LD D,$48 ; 0A78: DD 66 01 LD H,(IX+$01) ; Y coordinate 0A7B: DD 6E 03 LD L,(IX+$03) ; 0A7E: CD 5A 0E CALL $0E5A ; 0A81: CB 3C SRL H ; 0A83: CB 1D RR L ; 0A85: DD 75 04 LD (IX+$04),L ; 0A88: DD 74 05 LD (IX+$05),H ; 0A8B: AF XOR A ; 0A8C: 32 8B 92 LD ($928B),A ; 0A8F: 3C INC A ; 0A90: 32 19 90 LD ($9019),A ; 0A93: DD 7D LD A,IXL ; 0A95: 32 29 98 LD ($9829),A ; 0A98: C3 0C 0B JP $0B0C ; ; Movement Routine 4 0A9B: E5 PUSH HL ; 0A9C: DD 6E 10 LD L,(IX+$10) ; 0A9F: 26 88 LD H,$88 ; 0AA1: 36 09 LD (HL),$09 ; 0AA3: 26 01 LD H,$01 ; 0AA5: 4E LD C,(HL) ; 0AA6: 2C INC L ; 0AA7: 6E LD L,(HL) ; 0AA8: 26 99 LD H,$99 ; 0AAA: 46 LD B,(HL) ; 0AAB: 2C INC L ; 0AAC: 5E LD E,(HL) ; 0AAD: 69 LD L,C ; 0AAE: 4E LD C,(HL) ; 0AAF: 2C INC L ; 0AB0: 56 LD D,(HL) ; 0AB1: CB 3B SRL E ; 0AB3: D5 PUSH DE ; 0AB4: DD 70 11 LD (IX+$11),B ; 0AB7: DD 71 12 LD (IX+$12),C ; 0ABA: 3A 15 92 LD A,($9215) ; 0ABD: A7 AND A ; 0ABE: 28 08 JR Z,$AC8 ; 0AC0: 78 LD A,B ; 0AC1: ED 44 NEG ; 0AC3: 47 LD B,A ; 0AC4: 79 LD A,C ; 0AC5: ED 44 NEG ; 0AC7: 4F LD C,A ; 0AC8: DD 6E 00 LD L,(IX+$00) ; X Coordinate 0ACB: DD 66 01 LD H,(IX+$01) ; Y Coordinate 0ACE: 51 LD D,C ; 0ACF: 1E 00 LD E,$00 ; 0AD1: CB 2A SRA D ; 0AD3: CB 1B RR E ; 0AD5: 19 ADD HL,DE ; 0AD6: DD 75 00 LD (IX+$00),L ; New X coordinate 0AD9: DD 74 01 LD (IX+$01),H ; New Y coordiante 0ADC: 5C LD E,H ; 0ADD: DD 6E 02 LD L,(IX+$02) ; 0AE0: DD 66 03 LD H,(IX+$03) ; 0AE3: 0E 00 LD C,$00 ; 0AE5: CB 28 SRA B ; 0AE7: CB 19 RR C ; 0AE9: ED 42 SBC HL,BC ; 0AEB: DD 75 02 LD (IX+$02),L ; 0AEE: DD 74 03 LD (IX+$03),H ; 0AF1: 6C LD L,H ; 0AF2: 63 LD H,E ; 0AF3: 4A LD C,D ; 0AF4: D1 POP DE ; 0AF5: CD 5A 0E CALL $0E5A ; 0AF8: CB 3C SRL H ; 0AFA: CB 1D RR L ; 0AFC: DD 75 04 LD (IX+$04),L ; 0AFF: DD 74 05 LD (IX+$05),H ; 0B02: DD 72 06 LD (IX+$06),D ; 0B05: DD 73 07 LD (IX+$07),E ; 0B08: DD CB 13 F6 SET 6,(IX+$13) ; 0B0C: E1 POP HL ; 0B0D: 23 INC HL ; 0B0E: C3 0E 09 JP $090E ; ; Movement Routine 1 0B11: E5 PUSH HL ; 0B12: EB EX DE,HL ; 0B13: 3A 15 92 LD A,($9215) ; 0B16: 0F RRCA ; 0B17: DD 46 13 LD B,(IX+$13) ; 0B1A: A8 XOR B ; 0B1B: 07 RLCA ; 0B1C: 3A E2 93 LD A,($93E2) ; 0B1F: 3C INC A ; 0B20: 3D DEC A ; 0B21: 20 02 JR NZ,$B25 ; 0B23: 3E 80 LD A,$80 ; 0B25: 38 04 JR C,$B2B ; 0B27: ED 44 NEG ; 0B29: C6 F2 ADD $F2 ; 0B2B: C6 0E ADD $0E ; 0B2D: 67 LD H,A ; 0B2E: 3E 1E LD A,$1E ; 0B30: CD A9 0E CALL $0EA9 ; 0B33: 7C LD A,H ; 0B34: EB EX DE,HL ; 0B35: D7 RST 0X10 ; HL+=A 0B36: 7E LD A,(HL) ; 0B37: DD 77 0D LD (IX+$0D),A ; 0B3A: E1 POP HL ; 0B3B: 3E 09 LD A,$09 ; Add ... 0B3D: D7 RST 0X10 ; ... 9 to HL 0B3E: C3 FA 0B JP $0BFA ; ; Movement Routine 2 0B41: 23 INC HL ; 0B42: 5E LD E,(HL) ; 0B43: 23 INC HL ; 0B44: 56 LD D,(HL) ; 0B45: EB EX DE,HL ; 0B46: C3 0E 09 JP $090E ; ; Movement Routine 3 0B49: 23 INC HL ; 0B4A: 5E LD E,(HL) ; 0B4B: 23 INC HL ; 0B4C: DD 73 06 LD (IX+$06),E ; 0B4F: DD 36 07 00 LD (IX+$07),$00 ; 0B53: DD CB 13 EE SET 5,(IX+$13) ; 0B57: C3 FA 0B JP $0BFA ; ; Movement Routine 6 0B5A: 3A 15 92 LD A,($9215) ; 0B5D: 4F LD C,A ; 0B5E: DD 5E 10 LD E,(IX+$10) ; 0B61: 1C INC E ; 0B62: 16 01 LD D,$01 ; 0B64: 1A LD A,(DE) ; 0B65: 5F LD E,A ; 0B66: 16 98 LD D,$98 ; 0B68: 1A LD A,(DE) ; 0B69: CB 41 BIT 0,C ; 0B6B: 28 04 JR Z,$B71 ; 0B6D: C6 0E ADD $0E ; 0B6F: ED 44 NEG ; 0B71: CB 3F SRL A ; 0B73: DD 77 03 LD (IX+$03),A ; 0B76: 3A AA 92 LD A,($92AA) ; 0B79: A7 AND A ; 0B7A: CA 86 0B JP Z,$0B86 ; 0B7D: 32 B3 9A LD ($9AB3),A ; 0B80: 18 04 JR $B86 ; ; Movement Routine 7 0B82: DD 36 01 9C LD (IX+$01),$9C ; Set Y coorinate to top of screen 0B86: 23 INC HL ; 0B87: DD 75 08 LD (IX+$08),L ; 0B8A: DD 74 09 LD (IX+$09),H ; 0B8D: DD 34 0D INC (IX+$0D) ; 0B90: C3 FA 0D JP $0DFA ; Next Bee ; Movement Routine 8 0B93: DD 7E 10 LD A,(IX+$10) ; 0B96: E6 38 AND $38 ; 0B98: FE 38 CP $38 ; 0B9A: CA 41 0B JP Z,$0B41 ; 0B9D: 23 INC HL ; 0B9E: 23 INC HL ; 0B9F: 23 INC HL ; 0BA0: C3 0E 09 JP $090E ; ; Starts getting called when there are less than 6 bees alive. ; Cheat happens when this is called 255 times in a row. ; Movement Routine 9 0BA3: 23 INC HL ; 0BA4: 7E LD A,(HL) ; 0BA5: DD CB 13 7E BIT 7,(IX+$13) ; 0BA9: 28 04 JR Z,$BAF ; 0BAB: C6 80 ADD $80 ; 0BAD: ED 44 NEG ; 0BAF: 0E 00 LD C,$00 ; 0BB1: CB 27 SLA A ; 0BB3: CB 11 RL C ; 0BB5: CB 27 SLA A ; 0BB7: CB 11 RL C ; 0BB9: DD 77 04 LD (IX+$04),A ; 0BBC: DD 71 05 LD (IX+$05),C ; 0BBF: DD 36 0E 1E LD (IX+$0E),$1E ; Hard set delay between shots. 0BC3: 3A C8 92 LD A,($92C8) ; Reload shot ... 0BC6: DD 77 0F LD (IX+$0F),A ; ... delay shift from CPU1. 0BC9: C3 86 0B JP $0B86 ; Continue ; Movement Routine 5 0BCC: 3A AA 92 LD A,($92AA) ; 0BCF: 4F LD C,A ; 0BD0: 3A 1D 90 LD A,($901D) ; 0BD3: 3D DEC A ; 0BD4: A1 AND C ; 0BD5: 18 C3 JR $B9A ; 0BD7: 4F LD C,A ; 0BD8: E6 0F AND $0F ; 0BDA: DD 77 0A LD (IX+$0A),A ; 0BDD: 79 LD A,C ; 0BDE: 07 RLCA ; 0BDF: 07 RLCA ; 0BE0: 07 RLCA ; 0BE1: 07 RLCA ; 0BE2: E6 0F AND $0F ; 0BE4: 23 INC HL ; 0BE5: DD 77 0B LD (IX+$0B),A ; 0BE8: 7E LD A,(HL) ; 0BE9: 23 INC HL ; 0BEA: DD CB 13 7E BIT 7,(IX+$13) ; 0BEE: 28 02 JR Z,$BF2 ; 0BF0: ED 44 NEG ; 0BF2: DD 77 0C LD (IX+$0C),A ; 0BF5: 7E LD A,(HL) ; 0BF6: 23 INC HL ; 0BF7: DD 77 0D LD (IX+$0D),A ; 0BFA: DD 75 08 LD (IX+$08),L ; 0BFD: DD 74 09 LD (IX+$09),H ; 0C00: DD CB 13 76 BIT 6,(IX+$13) ; 0C04: 28 22 JR Z,$C28 ; 0C06: DD 7E 01 LD A,(IX+$01) ; Y coordinate 0C09: DD 96 06 SUB (IX+$06) ; 0C0C: 28 08 JR Z,$C16 ; 0C0E: F2 13 0C JP P,$0C13 ; 0C11: ED 44 NEG ; 0C13: 3D DEC A ; 0C14: 20 12 JR NZ,$C28 ; 0C16: DD 7E 03 LD A,(IX+$03) ; 0C19: DD 96 07 SUB (IX+$07) ; 0C1C: CA 07 0E JP Z,$0E07 ; 0C1F: F2 24 0C JP P,$0C24 ; 0C22: ED 44 NEG ; 0C24: 3D DEC A ; 0C25: CA 07 0E JP Z,$0E07 ; 0C28: DD CB 13 6E BIT 5,(IX+$13) ; 0C2C: 28 13 JR Z,$C41 ; 0C2E: DD 7E 01 LD A,(IX+$01) ; Y coordiante 0C31: DD 96 06 SUB (IX+$06) ; 0C34: 28 03 JR Z,$C39 ; 0C36: 3C INC A ; 0C37: 20 08 JR NZ,$C41 ; 0C39: DD 36 0D 01 LD (IX+$0D),$01 ; 0C3D: DD CB 13 AE RES 5,(IX+$13) ; 0C41: DD 46 0C LD B,(IX+$0C) ; 0C44: DD 7E 04 LD A,(IX+$04) ; 0C47: 5F LD E,A ; 0C48: 80 ADD A,B ; 0C49: DD 77 04 LD (IX+$04),A ; 0C4C: DD 56 05 LD D,(IX+$05) ; 0C4F: 2E 01 LD L,$01 ; 0C51: CB 78 BIT 7,B ; 0C53: 28 02 JR Z,$C57 ; 0C55: 2E FF LD L,$FF ; 0C57: 1F RRA ; 0C58: A8 XOR B ; 0C59: 7A LD A,D ; 0C5A: F2 5E 0C JP P,$0C5E ; 0C5D: 85 ADD A,L ; 0C5E: DD 77 05 LD (IX+$05),A ; 0C61: 7B LD A,E ; 0C62: 4A LD C,D ; 0C63: CB 41 BIT 0,C ; 0C65: 28 01 JR Z,$C68 ; 0C67: 2F CPL ; 0C68: C6 15 ADD $15 ; 0C6A: 30 04 JR NC,$C70 ; 0C6C: 06 06 LD B,$06 ; 0C6E: 18 0C JR $C7C ; 0C70: CB 3F SRL A ; 0C72: 47 LD B,A ; 0C73: CB 38 SRL B ; 0C75: 80 ADD A,B ; 0C76: 07 RLCA ; 0C77: 07 RLCA ; 0C78: 07 RLCA ; 0C79: E6 07 AND $07 ; 0C7B: 47 LD B,A ; 0C7C: 26 8B LD H,$8B ; 0C7E: DD 6E 10 LD L,(IX+$10) ; 0C81: 7E LD A,(HL) ; 0C82: E6 F8 AND $F8 ; 0C84: B0 OR B ; 0C85: 77 LD (HL),A ; 0C86: 26 9B LD H,$9B ; 0C88: 79 LD A,C ; 0C89: CB 09 RRC C ; 0C8B: A9 XOR C ; 0C8C: 3C INC A ; 0C8D: CB 09 RRC C ; 0C8F: 17 RLA ; 0C90: E6 03 AND $03 ; 0C92: 77 LD (HL),A ; 0C93: 3A A0 92 LD A,($92A0) ; 0C96: E6 01 AND $01 ; 0C98: 28 05 JR Z,$C9F ; 0C9A: DD 7E 0A LD A,(IX+$0A) ; 0C9D: 18 03 JR $CA2 ; 0C9F: DD 7E 0B LD A,(IX+$0B) ; 0CA2: A7 AND A ; 0CA3: CA FE 0C JP Z,$0CFE ; 0CA6: E5 PUSH HL ; 0CA7: DD E5 PUSH IX ; 0CA9: E1 POP HL ; 0CAA: 47 LD B,A ; 0CAB: 7A LD A,D ; 0CAC: E6 03 AND $03 ; 0CAE: 57 LD D,A ; 0CAF: CB 03 RLC E ; 0CB1: CB 12 RL D ; 0CB3: D5 PUSH DE ; 0CB4: AA XOR D ; 0CB5: 0F RRCA ; 0CB6: 38 02 JR C,$CBA ; 0CB8: 2C INC L ; 0CB9: 2C INC L ; 0CBA: 14 INC D ; 0CBB: CB 52 BIT 2,D ; 0CBD: 78 LD A,B ; 0CBE: 28 02 JR Z,$CC2 ; 0CC0: ED 44 NEG ; 0CC2: 4F LD C,A ; 0CC3: CB 29 SRA C ; 0CC5: 30 04 JR NC,$CCB ; 0CC7: 7E LD A,(HL) ; 0CC8: C6 80 ADD $80 ; 0CCA: 77 LD (HL),A ; 0CCB: 2C INC L ; 0CCC: 7E LD A,(HL) ; 0CCD: 89 ADC A,C ; 0CCE: 77 LD (HL),A ; 0CCF: 2D DEC L ; 0CD0: EB EX DE,HL ; 0CD1: 7B LD A,E ; 0CD2: EE 02 XOR $02 ; 0CD4: 5F LD E,A ; 0CD5: E1 POP HL ; 0CD6: CB 3D SRL L ; 0CD8: 30 04 JR NC,$CDE ; 0CDA: 7D LD A,L ; 0CDB: EE 7F XOR $7F ; 0CDD: 6F LD L,A ; 0CDE: 78 LD A,B ; 0CDF: 44 LD B,H ; 0CE0: 26 00 LD H,$00 ; 0CE2: CD 96 0E CALL $0E96 ; HL = HL * A 0CE5: 78 LD A,B ; 0CE6: EE 02 XOR $02 ; 0CE8: 3D DEC A ; 0CE9: CB 57 BIT 2,A ; 0CEB: 28 08 JR Z,$CF5 ; 0CED: 44 LD B,H ; 0CEE: 4D LD C,L ; 0CEF: 21 00 00 LD HL,$0000 ; 0CF2: A7 AND A ; 0CF3: ED 42 SBC HL,BC ; 0CF5: EB EX DE,HL ; 0CF6: 7B LD A,E ; 0CF7: 86 ADD A,(HL) ; 0CF8: 77 LD (HL),A ; 0CF9: 2C INC L ; 0CFA: 7A LD A,D ; 0CFB: 8E ADC A,(HL) ; 0CFC: 77 LD (HL),A ; 0CFD: E1 POP HL ; 0CFE: 3A 15 92 LD A,($9215) ; 0D01: 4F LD C,A ; 0D02: 26 93 LD H,$93 ; 0D04: DD 56 03 LD D,(IX+$03) ; 0D07: 3E 7F LD A,$7F ; 0D09: DD BE 02 CP (IX+$02) ; 0D0C: 7A LD A,D ; 0D0D: 17 RLA ; 0D0E: CB 41 BIT 0,C ; 0D10: 28 03 JR Z,$D15 ; 0D12: C6 0D ADD $0D ; 0D14: 2F CPL ; 0D15: DD CB 13 76 BIT 6,(IX+$13) ; 0D19: 28 03 JR Z,$D1E ; 0D1B: DD 86 11 ADD A,(IX+$11) ; 0D1E: 77 LD (HL),A ; 0D1F: 2C INC L ; 0D20: DD 46 01 LD B,(IX+$01) ; Y coordinate 0D23: 3E 7F LD A,$7F ; 0D25: DD BE 00 CP (IX+$00) ; X coordinate 0D28: CB 13 RL E ; 0D2A: 78 LD A,B ; 0D2B: CB 41 BIT 0,C ; 0D2D: 20 04 JR NZ,$D33 ; 0D2F: C6 4F ADD $4F ; 0D31: 2F CPL ; 0D32: 1D DEC E ; 0D33: CB 1B RR E ; 0D35: 17 RLA ; 0D36: CB 13 RL E ; 0D38: DD CB 13 76 BIT 6,(IX+$13) ; 0D3C: 28 0D JR Z,$D4B ; 0D3E: DD 86 12 ADD A,(IX+$12) ; 0D41: 57 LD D,A ; 0D42: 1F RRA ; 0D43: DD AE 12 XOR (IX+$12) ; 0D46: 07 RLCA ; 0D47: 7A LD A,D ; 0D48: 30 01 JR NC,$D4B ; 0D4A: 1C INC E ; 0D4B: 77 LD (HL),A ; 0D4C: 26 9B LD H,$9B ; 0D4E: CB 0E RRC (HL) ; 0D50: CB 0B RRC E ; 0D52: CB 16 RL (HL) ; ; Initiate bee shot 0D54: DD 35 0E DEC (IX+$0E) ; Enough time ellapsed between shots? 0D57: C2 FA 0D JP NZ,$0DFA ; No ... skip shooting. 0D5A: DD CB 0F 3E SRL (IX+$0F) ; Another delay component ... 0D5E: D2 F4 0D JP NC,$0DF4 ; Too soon to drop another. 0D61: DD 7E 01 LD A,(IX+$01) ; Y coordinate 0D64: FE 4C CP $4C ; Don't fire if ... 0D66: DA F4 0D JP C,$0DF4 ; ... too close to the bottom. 0D69: 3A 15 90 LD A,($9015) ; Fighter ... 0D6C: A7 AND A ; ... capture sequence? 0D6D: CA F4 0D JP Z,$0DF4 ; Yes ... no shooting 0D70: 3A AD 92 LD A,($92AD) ; After user ... 0D73: A7 AND A ; ... explosion? 0D74: C2 F4 0D JP NZ,$0DF4 ; Yes ... skip shooting 0D77: EB EX DE,HL ; Hold HL 0D78: 21 68 88 LD HL,$8868 ; Shot pointers 0D7B: 06 08 LD B,$08 ; 8 shots 0D7D: 7E LD A,(HL) ; Get shot info 0D7E: FE 80 CP $80 ; Shot active? 0D80: 28 06 JR Z,$D88 ; No -- use it 0D82: 2C INC L ; Try ... 0D83: 2C INC L ; ... next slot. 0D84: 10 F7 DJNZ $D7D ; Try all slots 0D86: 18 6C JR $DF4 ; None available ... reload 0E for this bee and do next bee ; ; While the cheat is in effect, all shots end up not ; finding a slot. All slots are taken. The question is ... ; ... why and what does it have to do with Movement9? ; ; Initialize shot 0D88: 36 06 LD (HL),$06 ; First byte no longer 0x80 0D8A: 26 9B LD H,$9B ; 0D8C: 36 01 LD (HL),$01 ; 0D8E: E5 PUSH HL ; Hold the 88xx pointer 0D8F: 26 93 LD H,$93 ; Shot coordinates 0D91: 54 LD D,H ; Hold onto it 0D92: 1D DEC E ; 0D93: 1A LD A,(DE) ; Get bee coordinate 0D94: 4F LD C,A ; 0D95: 77 LD (HL),A ; Set X 0D96: 1C INC E ; 0D97: 2C INC L ; Point to Y 0D98: 1A LD A,(DE) ; 0D99: 47 LD B,A ; 0D9A: 77 LD (HL),A ; Set Y 0D9B: 26 9B LD H,$9B ; 0D9D: 54 LD D,H ; 0D9E: 1A LD A,(DE) ; 0D9F: CB 0E RRC (HL) ; 0DA1: 0F RRCA ; 0DA2: CB 16 RL (HL) ; 0DA4: 07 RLCA ; 0DA5: CB 18 RR B ; 0DA7: 3A 62 93 LD A,($9362) ; 0DAA: 91 SUB C ; 0DAB: F5 PUSH AF ; 0DAC: 30 02 JR NC,$DB0 ; 0DAE: ED 44 NEG ; 0DB0: 67 LD H,A ; 0DB1: 3A 15 92 LD A,($9215) ; 0DB4: A7 AND A ; 0DB5: 3E 95 LD A,$95 ; 0DB7: 28 02 JR Z,$DBB ; 0DB9: 3E 1C LD A,$1C ; 0DBB: 90 SUB B ; 0DBC: 30 02 JR NC,$DC0 ; 0DBE: ED 44 NEG ; 0DC0: CD A9 0E CALL $0EA9 ; 0DC3: 44 LD B,H ; 0DC4: 4D LD C,L ; 0DC5: CB 3C SRL H ; 0DC7: CB 1D RR L ; 0DC9: CB 3C SRL H ; 0DCB: CB 1D RR L ; 0DCD: 09 ADD HL,BC ; 0DCE: CB 3C SRL H ; 0DD0: CB 1D RR L ; 0DD2: CB 3C SRL H ; 0DD4: CB 1D RR L ; 0DD6: 7C LD A,H ; 0DD7: A7 AND A ; 0DD8: 20 05 JR NZ,$DDF ; Yes ... use max X velocity 0DDA: 7D LD A,L ; Get calculated X velocity 0DDB: FE 60 CP $60 ; X velocity too great? 0DDD: 38 02 JR C,$DE1 ; No -- keep it 0DDF: 3E 60 LD A,$60 ; Set max X velocity 0DE1: 47 LD B,A ; Hold in B 0DE2: F1 POP AF ; 0DE3: CB 18 RR B ; X velocity divided by 2 0DE5: E1 POP HL ; Restore 88xx pointer 0DE6: 7D LD A,L ; Add 8 bytes ... 0DE7: C6 08 ADD $08 ; ... to LSB ... 0DE9: E6 0F AND $0F ; ... and Make it 0-15 0DEB: 21 B0 92 LD HL,$92B0 ; Read by CPU1 while moving shots 0DEE: 85 ADD A,L ; Add in new ... 0DEF: 6F LD L,A ; ... LSB offset. 0DF0: 70 LD (HL),B ; Set X velocity 0DF1: 23 INC HL ; Point to Y velocity 0DF2: 36 00 LD (HL),$00 ; Set Y velocity to 0 (not used by CPU1) 0DF4: 3A E2 92 LD A,($92E2) ; Reload .... 0DF7: DD 77 0E LD (IX+$0E),A ; ... shot delay counter. ; Next bee 0DFA: 21 89 92 LD HL,$9289 ; Counter 0DFD: 35 DEC (HL) ; All done? 0DFE: C8 RET Z ; Yes ... out 0DFF: 11 14 00 LD DE,$0014 ; Point to next ... 0E02: DD 19 ADD IX,DE ; ... structure 0E04: C3 E4 08 JP $08E4 ; Continue with next bee. 0E07: AF XOR A ; 0 0E08: DD CB 13 86 RES 0,(IX+$13) ; 0E0C: DD 77 00 LD (IX+$00),A ; 0 out X coordinate 0E0F: DD 77 02 LD (IX+$02),A ; 0E12: 26 88 LD H,$88 ; 0E14: DD 6E 10 LD L,(IX+$10) ; 0E17: 36 02 LD (HL),$02 ; 0E19: 26 8B LD H,$8B ; 0E1B: 2C INC L ; 0E1C: 7E LD A,(HL) ; 0E1D: 2D DEC L ; 0E1E: 3C INC A ; 0E1F: E6 07 AND $07 ; 0E21: FE 05 CP $05 ; 0E23: 38 14 JR C,$E39 ; 0E25: 3A 2E 98 LD A,($982E) ; 0E28: 4F LD C,A ; 0E29: E6 F8 AND $F8 ; 0E2B: C6 06 ADD $06 ; 0E2D: 77 LD (HL),A ; 0E2E: 2C INC L ; 0E2F: 79 LD A,C ; 0E30: E6 07 AND $07 ; 0E32: 77 LD (HL),A ; 0E33: 2D DEC L ; 0E34: 3E 01 LD A,$01 ; 0E36: 32 2D 98 LD ($982D),A ; 0E39: DD 7E 06 LD A,(IX+$06) ; 0E3C: DD 77 01 LD (IX+$01),A ; Y coordinate 0E3F: DD 7E 07 LD A,(IX+$07) ; 0E42: DD 77 03 LD (IX+$03),A ; 0E45: C3 FE 0C JP $0CFE ; ; Movement Routine 0 : Remove bee from active processing 0E48: 26 88 LD H,$88 ; 0E4A: DD 6E 10 LD L,(IX+$10) ; 0E4D: 36 80 LD (HL),$80 ; ? Make sprite available ? 0E4F: 26 93 LD H,$93 ; 0E51: 36 00 LD (HL),$00 ; 0E53: DD 36 13 00 LD (IX+$13),$00 ; Flag bee as inactive 0E57: C3 FA 0D JP $0DFA ; Continue with next bee ; Math routines 0E5A: C5 PUSH BC ; 0E5B: D5 PUSH DE ; 0E5C: 7B LD A,E ; 0E5D: 95 SUB L ; 0E5E: 06 00 LD B,$00 ; 0E60: 30 04 JR NC,$E66 ; 0E62: CB C0 SET 0,B ; 0E64: ED 44 NEG ; 0E66: 4F LD C,A ; 0E67: 7A LD A,D ; 0E68: 94 SUB H ; 0E69: 30 0A JR NC,$E75 ; 0E6B: 57 LD D,A ; 0E6C: 78 LD A,B ; 0E6D: EE 01 XOR $01 ; 0E6F: F6 02 OR $02 ; 0E71: 47 LD B,A ; 0E72: 7A LD A,D ; 0E73: ED 44 NEG ; 0E75: B9 CP C ; 0E76: F5 PUSH AF ; 0E77: 17 RLA ; 0E78: A8 XOR B ; 0E79: 1F RRA ; 0E7A: 3F CCF ; 0E7B: CB 10 RL B ; 0E7D: F1 POP AF ; 0E7E: 30 03 JR NC,$E83 ; 0E80: 51 LD D,C ; 0E81: 4F LD C,A ; 0E82: 7A LD A,D ; 0E83: 61 LD H,C ; 0E84: 2E 00 LD L,$00 ; 0E86: CD A9 0E CALL $0EA9 ; 0E89: 7C LD A,H ; 0E8A: A8 XOR B ; 0E8B: E6 01 AND $01 ; 0E8D: 28 03 JR Z,$E92 ; 0E8F: 7D LD A,L ; 0E90: 2F CPL ; 0E91: 6F LD L,A ; 0E92: 60 LD H,B ; 0E93: D1 POP DE ; 0E94: C1 POP BC ; 0E95: C9 RET ; ; HL = HL * A 0E96: D5 PUSH DE ; Hold DE 0E97: EB EX DE,HL ; HL -> DE 0E98: 21 00 00 LD HL,$0000 ; Accumulator 0E9B: CB 3F SRL A ; Is bit set 0E9D: 30 01 JR NC,$EA0 ; No ... skip adding 0E9F: 19 ADD HL,DE ; Add the target 0EA0: CB 23 SLA E ; Slide target to 0EA2: CB 12 RL D ; ... the left 0EA4: A7 AND A ; All bits in A done? 0EA5: 20 F4 JR NZ,$E9B ; No ... keep looping 0EA7: D1 POP DE ; Restore DE 0EA8: C9 RET ; Done ; HL=HL/A (remainder in A) 0EA9: C5 PUSH BC ; Preserve B and C 0EAA: 4F LD C,A ; Hold original divisor 0EAB: AF XOR A ; Clear remainder (and carry) 0EAC: 06 11 LD B,$11 ; Loop 17 times 0EAE: 8F ADC A,A ; Remainder left and add in cary 0EAF: 38 0B JR C,$EBC ; Overflow ... 0EB1: B9 CP C ; Remainder still less than divisor? 0EB2: 38 01 JR C,$EB5 ; Yes 0EB4: 91 SUB C ; Reset remainder, set bit in result 0EB5: 3F CCF ; Set bit for result 0EB6: ED 6A ADC HL,HL ; Shift result and add in new bit 0EB8: 10 F4 DJNZ $EAE ; Do all bits 0EBA: C1 POP BC ; Restore B and C 0EBB: C9 RET ; Done 0EBC: 91 SUB C ; Back down remainder 0EBD: 37 SCF ; Set C flag (fill result with 1's) 0EBE: C3 B6 0E JP $0EB6 ; Continue 0EC1: FF RST 0X38 ; Room for growth 0EC2: FF RST 0X38 ; 0EC3: FF RST 0X38 ; 0EC4: FF RST 0X38 ; 0EC5: FF RST 0X38 ; 0EC6: FF RST 0X38 ; 0EC7: FF RST 0X38 ; 0EC8: FF RST 0X38 ; 0EC9: FF RST 0X38 ; ; Command 7 : ; Automatic Rack Advance (cheat mode) WHATEVER THAT MEANS 0ECA: 3A 06 68 LD A,($6806) ; 2nd DSW Bit 6 0ECD: E6 02 AND $02 ; Bit clear? 0ECF: C0 RET NZ ; Normal operation 0ED0: 21 FF 10 LD HL,$10FF ; Address beyond this ROM 0ED3: 7E LD A,(HL) ; Get byte 0ED4: 2E DF LD L,$DF ; From 10DF 0ED6: 4E LD C,(HL) ; Check for ... 0ED7: 7E LD A,(HL) ; ... 0ED8: A9 XOR C ; ... 0ED9: CB 67 BIT 4,A ; ... valid data 0EDB: 20 01 JR NZ,$EDE ; Yes ... use it 0EDD: C7 RST 0X00 ; Restart this CPU 0EDE: 11 F7 89 LD DE,$89F7 ; 0EE1: 21 F6 89 LD HL,$89F6 ; 0EE4: 01 13 00 LD BC,$0013 ; 0EE7: ED B8 LDDR ; 0EE9: DD 21 D5 0F LD IX,$0FD5 ; Data at the end of ROM 0EED: 1E E0 LD E,$E0 ; 0EEF: 01 04 05 LD BC,$0504 ; ; 0EF2: DD 7E 00 LD A,(IX+$00) ; 0EF5: DD 23 INC IX ; 0EF7: 6F LD L,A ; 0EF8: 26 10 LD H,$10 ; 0EFA: 7E LD A,(HL) ; 0EFB: 7B LD A,E ; 0EFC: 81 ADD A,C ; 0EFD: 5F LD E,A ; 0EFE: 7E LD A,(HL) ; 0EFF: 12 LD (DE),A ; 0F00: 10 F0 DJNZ $EF2 ; ; 0F02: 06 05 LD B,$05 ; 0F04: 21 E4 89 LD HL,$89E4 ; 0F07: 7E LD A,(HL) ; 0F08: 2C INC L ; 0F09: B6 OR (HL) ; 0F0A: 2C INC L ; 0F0B: 2F CPL ; 0F0C: A6 AND (HL) ; 0F0D: 2C INC L ; 0F0E: A6 AND (HL) ; 0F0F: 2C INC L ; 0F10: E6 0F AND $0F ; 0F12: 20 04 JR NZ,$F18 ; 0F14: 10 F1 DJNZ $F07 ; 0F16: 18 40 JR $F58 ; 0F18: 05 DEC B ; 0F19: 28 4F JR Z,$F6A ; 0F1B: 05 DEC B ; 0F1C: CB 20 SLA B ; 0F1E: CB 20 SLA B ; 0F20: 0F RRCA ; 0F21: 38 03 JR C,$F26 ; 0F23: 04 INC B ; 0F24: 18 FA JR $F20 ; 0F26: 3A E0 89 LD A,($89E0) ; 0F29: CB 3F SRL A ; 0F2B: 5F LD E,A ; 0F2C: CB 11 RL C ; 0F2E: C6 E1 ADD $E1 ; 0F30: 6F LD L,A ; 0F31: 26 89 LD H,$89 ; 0F33: 7E LD A,(HL) ; 0F34: CB 41 BIT 0,C ; 0F36: 28 04 JR Z,$F3C ; 0F38: 07 RLCA ; 0F39: 07 RLCA ; 0F3A: 07 RLCA ; 0F3B: 07 RLCA ; 0F3C: E6 F0 AND $F0 ; 0F3E: B0 OR B ; 0F3F: CB 41 BIT 0,C ; 0F41: 28 04 JR Z,$F47 ; 0F43: 07 RLCA ; 0F44: 07 RLCA ; 0F45: 07 RLCA ; 0F46: 07 RLCA ; 0F47: 77 LD (HL),A ; 0F48: 3A E0 89 LD A,($89E0) ; 0F4B: A7 AND A ; 0F4C: 20 02 JR NZ,$F50 ; 0F4E: 3E 02 LD A,$02 ; 0F50: 3D DEC A ; 0F51: 32 E0 89 LD ($89E0),A ; 0F54: 7B LD A,E ; 0F55: A7 AND A ; 0F56: 28 09 JR Z,$F61 ; 0F58: 2A E2 89 LD HL,($89E2) ; 0F5B: 7E LD A,(HL) ; 0F5C: 32 E1 89 LD ($89E1),A ; 0F5F: 18 42 JR $FA3 ; 0F61: 2A E2 89 LD HL,($89E2) ; 0F64: 3A E1 89 LD A,($89E1) ; 0F67: 77 LD (HL),A ; 0F68: 18 39 JR $FA3 ; 0F6A: 4F LD C,A ; 0F6B: 21 E0 89 LD HL,$89E0 ; 0F6E: CB 41 BIT 0,C ; 0F70: 20 2D JR NZ,$F9F ; 0F72: 7E LD A,(HL) ; 0F73: CB 3F SRL A ; 0F75: 28 13 JR Z,$F8A ; 0F77: CB 59 BIT 3,C ; 0F79: 20 0C JR NZ,$F87 ; 0F7B: 7E LD A,(HL) ; 0F7C: FE 05 CP $05 ; 0F7E: 30 03 JR NC,$F83 ; 0F80: 34 INC (HL) ; 0F81: 18 D5 JR $F58 ; 0F83: 36 05 LD (HL),$05 ; 0F85: 18 D1 JR $F58 ; 0F87: 35 DEC (HL) ; 0F88: 18 CE JR $F58 ; 0F8A: 2A E2 89 LD HL,($89E2) ; 0F8D: CB 59 BIT 3,C ; 0F8F: 20 03 JR NZ,$F94 ; 0F91: 2B DEC HL ; 0F92: 18 01 JR $F95 ; 0F94: 23 INC HL ; 0F95: 22 E2 89 LD ($89E2),HL ; 0F98: 3E 01 LD A,$01 ; 0F9A: 32 E0 89 LD ($89E0),A ; 0F9D: 18 B9 JR $F58 ; 0F9F: 36 05 LD (HL),$05 ; 0FA1: 18 B5 JR $F58 ; 0FA3: 21 CA 83 LD HL,$83CA ; 0FA6: 11 E1 89 LD DE,$89E1 ; 0FA9: 06 03 LD B,$03 ; 3 bytes (6 nibbles) 0FAB: 1A LD A,(DE) ; Get nibble 0FAC: 1C INC E ; Next nibble 0FAD: CD C6 0F CALL $0FC6 ; Separate nibbles 0FB0: 10 F9 DJNZ $FAB ; Do all bytes 0FB2: 21 CA 87 LD HL,$87CA ; 0FB5: 3A E0 89 LD A,($89E0) ; 0FB8: 06 06 LD B,$06 ; 0FBA: A7 AND A ; 0FBB: 4F LD C,A ; 0FBC: 28 02 JR Z,$FC0 ; 0FBE: 0E 01 LD C,$01 ; 0FC0: 71 LD (HL),C ; 0FC1: 2C INC L ; 0FC2: 3D DEC A ; 0FC3: 10 F5 DJNZ $FBA ; 0FC5: C9 RET ; ; Store LSNibble to (HL) and MSNibble to (HL+1). ; HL=HL+2 0FC6: 4F LD C,A ; 0FC7: E6 0F AND $0F ; Mask off upper 4 bits 0FC9: 77 LD (HL),A ; Set byte 0FCA: 2C INC L ; Next pointer 0FCB: 79 LD A,C ; Original 0FCC: 07 RLCA ; Move upper 4 bits ... 0FCD: 07 RLCA ; ... 0FCE: 07 RLCA ; ... 0FCF: 07 RLCA ; ... to lower 4 bits. 0FD0: E6 0F AND $0F ; Mask off the upper 0FD2: 77 LD (HL),A ; Store byte 0FD3: 2C INC L ; Next pointer 0FD4: C9 RET ; Out ; Looks like data from here down 0FD5: FD FB EI ; 0FD7: F7 RST 0X30 ; 0FD8: EF RST 0X28 ; 0FD9: FE 23 CP $23 ; 0FDB: 00 NOP ; 0FDC: 1B DEC DE ; 0FDD: 23 INC HL ; 0FDE: F0 RET P ; 0FDF: 40 LD B,B ; 0FE0: 23 INC HL ; 0FE1: 00 NOP ; 0FE2: 09 ADD HL,BC ; 0FE3: 23 INC HL ; 0FE4: 05 DEC B ; 0FE5: 11 23 00 LD DE,$0023 ; 0FE8: 10 23 DJNZ $100D ; 0FEA: 10 40 DJNZ $102C ; 0FEC: 23 INC HL ; 0FED: 04 INC B ; 0FEE: 30 FF JR NC,$FEF ; 0FF0: 23 INC HL ; 0FF1: 02 LD (BC),A ; 0FF2: 35 DEC (HL) ; 0FF3: 23 INC HL ; 0FF4: 08 EX AF,AF' ; 0FF5: 10 23 DJNZ $101A ; 0FF7: 10 3C DJNZ $1035 ; 0FF9: 23 INC HL ; 0FFA: 00 NOP ; 0FFB: FF RST 0X38 ; 0FFC: FF RST 0X38 ; 0FFD: AC XOR H ; 0FFE: FF RST 0X38 ; 0FFF: FF RST 0X38 ;