; ;(C) 1983,1984,1999,2000 Matthew Smith - all rights reserved ; ;Disassembly of Manic Miner, done by John Elliott with the Dazzlestar ;disassembler under CP/M. ; ;Note: I have deleted most of the data structures (from the title screen onward) ; as the format of these areas is documented elsewhere. ; ; Compared to my JSW disassembly, this is very thinly commented indeed; I've ; only looked at bits which relate to the patch I did or which appear in ; the embedded source code. ; SCREEN EQU 4000h ATTR EQU 5800h T5C00 EQU 5C00h T5E00 EQU 5E00h T5F00 EQU 5F00h T6000 EQU 6000h T7000 EQU 7000h SP_SWFS EQU 0B2E0h ;Room 0 vguard: SwordFish SP_PEDE EQU 0B6E0h ;Room 1 vguard: Pedestal SP_FOOT EQU 0BAE0h ;Room 2 vguard: Foot ORG 8000h ; ; Blank spaces in Manic Miner tend to fill up with source code. I have ; rendered these as DS directives and put the source code in comments. This ; means the code won't assemble to the same result, but it's much more ; readable. ; ; This is the source for data at T846E. ; T8000: DEFS 20h ; ... 50,171,192,50,48,68 ; DB 50,48,58,50,171,192,50,136,137 B8020: DEFS 9; B8029: DEFS 9; B8032: DEFS 9; B803B: DEFS 9; DB 50,136,137,50,114,115,50,76,77 B8044: DEFS 9; B804D: DEFS 9; B8056: DEFS 15; DB 50,7 B8065: DEFS 3; B8068: DEFB 0 B8069: DEFB 0 B806A: DEFB 0 B806B: DEFB 0 W806C: DEFB 0 B806D: DEFB 0 B806E: DEFB 0 B806F: DEFB 0 W8070: DEFW 0 B8072: DEFB 0 BORDER: DEFB 0 ;Border B8074: DEFB 0 T8075: DEFS 25 ; 92,50,38,484 ; DB 50,38,4 DEFB 0FFh B808F: DEFB 0 T8090: DEFS 32 ; 50,171,192,50,48,68' ; DB 50,48, W80B0: DEFW 0 W80B2: DEFW 0 T80B4: DEFW 2C30h DEFW 3731h DEFW 2C31h DEFW 3931h B80BC: DEFB 0 B80BD: DEFB 0 T80BE: DEFS 13 ; 50,136,137 B80CB: DEFS 15 ; DB 50,136,137, DEFB 0FFh B80DB: DEFB 0 EUGHGT: DEFB 0 ;Height of Eugene T80DD: DEFS 3 ; 114,115,50,76,77 T80E0: DEFS 17 ; B 50,76,77,50,171,203,50,38,51 DEFB 0FFh ; DB 50,38,51,50,171,203,50,51,64 DEFS 270 ; DB 50,51,64,50,171,203,50,128,129 ; DB 50,128,129,50,102,103,50,86,87 ; DB 50,64,65,50,128,171,50,32,43 ; DB 50,32,43,50,128,171,50,43,51 ; DB 50,43,51,50,128,171,50,128,129 ; DB 50,128,129,50,102 MANDAT: DEFB 6,0,3Eh,0,7Ch,0,34h,0,3Eh,0,3Ch,0,18h,0,3Ch,0,7Eh,0,7Eh DEFB 0,0F7h,0,0FBh,0,3Ch,0,76h,0,6Eh,0,77h,0,1,80h,0Fh,80h,1Fh DEFB 0,0Dh,0,0Fh,80h,0Fh,0,6,0,0Fh,0,1Bh,80h,1Bh,80h,1Bh,80h DEFB 1Dh,80h,0Fh,0,6,0,6,0,7,0 DEFB 0,60h,3,0E0h,7,0C0h,3,40h,3,0E0h,3,0C0h,1,80h,3,0C0h,7 DEFB 0E0h,7,0E0h,0Fh,70h,0Fh,0B0h,3,0C0h,7,60h,6,0E0h,7,70h DEFB 0,18h,0,0F8h,1,0F0h,0,0D0h,0,0F8h,0,0F0h,0,60h,0,0F0h,1 DEFB 0F8h,3,0FCh,7,0FEh,6,0F6h,0,0F8h,1,0DAh,3,0Eh,3,84h,18h DEFB 0,1Fh,0,0Fh,80h,0Bh,0,1Fh,0,0Fh,0,6,0,0Fh,0,1Fh,80h,3Fh DEFB 0C0h,7Fh,0E0h,6Fh,60h,1Fh,0,5Bh,80h,70h,0C0h,21h,0C0h,6 DEFB 0,7,0C0h,3,0E0h,2,0C0h,7,0C0h,3,0C0h,1,80h,3,0C0h,7,0E0h DEFB 7,0E0h,0Eh,0F0h,0Dh,0F0h,3,0C0h,6,0E0h,7,60h,0Eh,0E0h,1 DEFB 80h,1,0F0h,0,0F8h,0,0B0h,1,0F0h,0,0F0h,0,60h,0,0F0h,1,0F8h DEFB 1,0D8h,1,0D8h,1,0B8h,0,0F0h,0,60h,0,60h,0,0E0h,0,60h,0 DEFB 7Ch,0,3Eh,0,2Ch,0,7Ch,0,3Ch,0,18h,0,3Ch,0,7Eh,0,7Eh,0,0EFh DEFB 0,0DFh,0,3Ch,0,6Eh,0,76h,0,0EEh ; ; X,Y lookup table ; DEFW T6000 ,T6000+100h,T6000+200h,T6000+300h DEFW T6000+400h,T6000+500h,T6000+600h,T6000+700h DEFW T6000+ 20h,T6000+120h,T6000+220h,T6000+320h DEFW T6000+420h,T6000+520h,T6000+620h,T6000+720h DEFW T6000+ 40h,T6000+140h,T6000+240h,T6000+340h DEFW T6000+440h,T6000+540h,T6000+640h,T6000+740h DEFW T6000+ 60h,T6000+160h,T6000+260h,T6000+360h DEFW T6000+460h,T6000+560h,T6000+660h,T6000+760h DEFW T6000+ 80h,T6000+180h,T6000+280h,T6000+380h DEFW T6000+480h,T6000+580h,T6000+680h,T6000+780h DEFW T6000+0A0h,T6000+1A0h,T6000+2A0h,T6000+3A0h DEFW T6000+4A0h,T6000+5A0h,T6000+6A0h,T6000+7A0h DEFW T6000+0C0h,T6000+1C0h,T6000+2C0h,T6000+3C0h DEFW T6000+4C0h,T6000+5C0h,T6000+6C0h,T6000+7C0h DEFW T6000+0E0h,T6000+1E0h,T6000+2E0h,T6000+3E0h DEFW T6000+4E0h,T6000+5E0h,T6000+6E0h,T6000+7E0h ; ; Main entry point ; DI LD SP,MEMTOP JP START SHEET: DEFB 0 T8408: DEFB 0,1,0,1,1,3,1,3,2,0,2,0,0,1,2,3 S_AIR: DEFB 'AIR' DEFB '0000' HGHSCOR: DEFB '000000' DEFB '0000' SCORBUF: DEFB '000000' SCORES: DEFB 'High Score 000000' DEFB ' Score 000000' MESSG: DEFB 'Game' MESSO: DEFB 'Over' NOMEN: DEFB 0 ;No. of lives B8458: DEFB 0 KEMP: DEFB 0 ;Kempston joystick flag DEMO: DEFB 0 ;Demo mode? B845B: DEFB 0 T845C: DEFB 0 CHEAT: DEFB 0 ;Cheat mode? DEFW 01F1Fh ;---------- ;Cheat string CHEATDT: DEFW 0F1Fh ;----6----- DEFW 1E1Fh ;0--------- DEFW 1F1Bh ;-------3-- DEFW 1F1Eh ;---------1 DEFW 171Fh ;---7------ DEFW 0F1Fh ;----6----- DEFW 1D1Fh ;-9-------- T846E: DEFB 50h,80h,81h,50h,66h,67h,50h,56h,57h,32h,56h,57h,32h,0ABh DEFB 0CBh,32h,2Bh,33h,32h,2Bh,33h,32h,0ABh,0CBh,32h,33h,40h DEFB 32h,33h,40h,32h,0ABh,0CBh,32h,80h,81h,32h,80h,81h,32h,66h DEFB 67h,32h,56h,57h,32h,60h,56h,32h,0ABh,0C0h,32h,2Bh,30h,32h DEFB 2Bh,30h ; ; Source for this bit is at 08000h ; DEFB 32h,0ABh,0C0h,32h,30h,44h,32h,30h,44h,32h,0ABh DEFB 0C0h,32h,88h,89h,32h,88h,89h,32h,72h,73h,32h,4Ch,4Dh,32h DEFB 4Ch,4Dh,32h,0ABh,0C0h,32h,26h,30h,32h,26h,30h,32h,0ABh DEFB 0C0h,32h,30h,44h,32h,30h,44h,32h,0ABh,0C0h,32h,88h,89h DEFB 32h,88h,89h,32h,72h,73h,32h,4Ch,4Dh,32h,4Ch,4Dh,32h,0ABh DEFB 0CBh,32h,26h,33h,32h,26h,33h,32h,0ABh,0CBh,32h,33h,40h DEFB 32h,33h,40h,32h,0ABh,0CBh,32h,80h,81h,32h,80h,81h,32h,66h DEFB 67h,32h,56h,57h,32h,40h,41h,32h,80h,0ABh,32h,20h,2Bh,32h DEFB 20h,2Bh,32h,80h,0ABh,32h,2Bh,33h,32h,2Bh,33h,32h,80h,0ABh DEFB 32h,80h,81h,32h,80h,81h,32h,66h,67h,32h,56h,57h,32h,40h DEFB 41h,32h,80h,98h,32h,20h,26h,32h,20h,26h,32h,80h,98h,32h DEFB 26h,30h,32h,26h,30h,32h,0,0,32h,72h,73h,32h,72h,73h,32h DEFB 60h,61h,32h,4Ch,4Dh,32h,4Ch,99h,32h,4Ch,4Dh,32h,4Ch,4Dh DEFB 32h,4Ch,99h,32h,5Bh,5Ch,32h,56h,57h,32h,33h,0CDh,32h,33h DEFB 34h,32h,33h,34h,32h,33h,0CDh,32h,40h,41h,32h,66h,67h,64h DEFB 66h,67h,32h,72h,73h,64h,4Ch,4Dh,32h,56h,57h,32h,80h,0CBh DEFB 19h,80h,0,19h,80h,81h,32h,80h,0CBh,0FFh T858C: DEFB 80h,72h,66h,60h,56h,66h,56h,56h,51h,60h,51h,51h,56h,66h DEFB 56h,56h,80h,72h,66h,60h,56h,66h,56h,56h,51h,60h,51h,51h DEFB 56h,56h,56h,56h,80h,72h,66h,60h,56h,66h,56h,56h,51h,60h DEFB 51h,51h,56h,66h,56h,56h,80h,72h,66h,60h,56h,66h,56h,40h DEFB 56h,66h,80h,66h,56h,56h,56h,56h ; ; Game restart point ; START: XOR A LD (SHEET),A LD (KEMP),A LD (DEMO),A LD (B845B),A LD (B8458),A LD A,2 ;Initial lives count LD (NOMEN),A LD HL,T845C SET 0,(HL) LD HL,SCREEN LD DE,SCREEN+1 LD BC,17FFh ;Clear screen image LD (HL),0 LDIR LD HL,0A000h ;Title screen bitmap LD DE,SCREEN LD BC,4096 LDIR LD HL,SCREEN + 800h + 1*32 + 29 LD DE,MANDAT+64 LD C,0 CALL DRWFIX LD HL,0FC00h ;Attributes for the last room LD DE,ATTR ;(top third) LD BC,256 LDIR LD HL,09E00h ;Attributes for title screen LD BC,512 ;(bottom two-thirds) LDIR LD BC,31 DI XOR A R8621: IN E,(C) OR E DJNZ R8621 ;$-03 AND 20h JR NZ,R862F ;$+07 LD A,1 LD (KEMP),A R862F: LD IY,T846E CALL C92DC JP NZ,L8684 XOR A LD (EUGHGT),A R863D: LD A,(EUGHGT) LD IX,TITLEMSG DEFB 0DDh LD L,A ;LD XL,A LD DE,SCREEN+4096+3*32 LD C,20h CALL PMESS LD A,(EUGHGT) AND 6 RRCA RRCA RRCA LD E,A LD D,82h LD HL,SCREEN + 100h + 1*32 + 29 LD C,0 CALL DRWFIX LD BC,100 R8664: DJNZ R8664 ;$-00 DEC C JR NZ,R8664 ;$-03 LD BC,0BFFEh IN A,(C) AND 1 CP 1 JR NZ,L8684 ;$+12 LD A,(EUGHGT) INC A CP 0E0h LD (EUGHGT),A JR NZ,R863D ;$-40 LD A,40h LD (DEMO),A L8684: LD HL,SCORBUF-4 LD DE,SCORBUF-3 LD BC,9 LD (HL),30h LDIR NEWSHT: LD A,(SHEET) SLA A ;*512 SLA A ;*1k ADD A,0B0h ;+B000 LD H,A LD L,0 ;Copy the first half-k to T5E00, LD DE,T5E00 LD BC,512 LDIR ;and the second to T8000. LD DE,T8000 LD BC,512 LDIR CALL C8A75 LD HL,SCREEN+4096 LD DE,SCREEN+4097 LD BC,2047 LD (HL),0 LDIR LD IX,T8000 LD C,20h LD DE,SCREEN+4096 CALL PMESS LD IX,S_AIR LD C,3 LD DE,SCREEN+4096+1*32 CALL PMESS LD A,52h R86D7: LD H,A LD D,A LD L,24h LD E,25h LD B,A LD A,(B80BC) SUB 24h LD C,A LD A,B LD B,0 LD (HL),0FFh LDIR INC A CP 56h JR NZ,R86D7 ;$-17 LD IX,SCORES LD DE,SCREEN+4096+3*32 LD C,20h CALL PMESS LD A,(BORDER) ;Border LD C,0FEh OUT (C),A LD A,(DEMO) OR A JR Z,LOOP ;$+07 LD A,40h LD (DEMO),A ; ;Main game loop ; LOOP: LD A,(NOMEN) LD HL,SCREEN + 4096 + 5*32 OR A JR Z,R8730 ;$+1B LD B,A R8718: LD C,0 PUSH HL PUSH BC LD A,(B845B) RLCA RLCA RLCA AND 60h LD E,A LD D,82h CALL DRWFIX POP BC POP HL INC HL INC HL DJNZ R8718 ;$-16 R8730: LD A,(CHEAT) CP 7 JR NZ,R873F ;$+0A LD DE,SP_FOOT LD C,0 CALL DRWFIX R873F: LD HL,T5E00 LD DE,T5C00 LD BC,512 LDIR LD HL,T7000 LD DE,T6000 LD BC,4096 LDIR CALL C8D0F LD A,(DEMO) OR A CALL Z,C8ABB LD A,(DEMO) OR A CALL Z,C923A CALL C8DAA CALL C9105 CALL C8F63 ; ; Special-case code ; LD A,(SHEET) CP 4 ;Eugene's Lair CALL Z,EUGENE LD A,(SHEET) CP 0Dh ;Skylab Landing Bay JP Z,SKYLAB LD A,(SHEET) CP 8 ;Wacky Amoebatrons and more: Vertical guardians CALL NC,VGUARD LD A,(SHEET) CP 7 ;Kong Beast CALL Z,KONG LD A,(SHEET) CP 0Bh ;Kong Beast CALL Z,KONG LD A,(SHEET) CP 12h ;Solar Power Generator CALL Z,SOLAR L879F: CALL C8FC5 L87A2: LD HL,T6000 LD DE,SCREEN LD BC,4096 LDIR LD A,(B8458) OR A JR Z,R87C8 ;$+17 DEC A LD (B8458),A RLCA RLCA RLCA AND 38h LD HL,T5C00 LD DE,T5C00+1 LD BC,511 LD (HL),A LDIR R87C8: LD HL,T5C00 LD DE,ATTR LD BC,512 LDIR LD IX,SCORBUF LD DE,SCREEN + 4096 + 5*32 + 26 ;AT 21,26 LD C,6 CALL PMESS LD IX,HGHSCOR LD DE,SCREEN + 4096 + 3*32 + 11 LD C,6 CALL PMESS CALL C8A3C JP Z,MANDEAD LD BC,0FEFEh IN A,(C) LD E,A LD B,7Fh IN A,(C) OR E AND 1 JP Z,START LD B,0FDh IN A,(C) AND 1Fh CP 1Fh JR Z,R8815 ;$+0C R880B: LD B,2 IN A,(C) AND 1Fh CP 1Fh JR Z,R880B ;$-08 R8815: LD A,(B806B) CP 0FFh JP Z,MANDEAD LD B,0BFh LD HL,T845C IN A,(C) AND 1Fh CP 1Fh JR Z,R8834 ;$+0C BIT 0,(HL) JR NZ,R8836 ;$+0A LD A,(HL) XOR 3 LD (HL),A JR R8836 ;$+04 R8834: RES 0,(HL) R8836: BIT 1,(HL) JR NZ,NONOTE4 ;$+27 LD A,(B845B) INC A LD (B845B),A AND 7Eh RRCA LD E,A LD D,0 LD HL,T858C ADD HL,DE LD A,(BORDER) ;Border LD E,(HL) LD BC,3 TM51: OUT (0FEh),A ; ;Source for this bit is present at X934C ; X8854: DEC E JR NZ,NOFLP6 LD E,(HL) XOR 18h NOFLP6: DJNZ TM51 ;$-08 DEC C JR NZ,TM51 ;$-0B NONOTE4: LD A,(DEMO) OR A JR Z,NODEM1 ;$+21 DEC A JP Z,MANDEAD LD (DEMO),A LD BC,0FEh ;Check for any keypress IN A,(C) AND 1Fh CP 1Fh ;and if there is one, return to the opening JP NZ,START ;screen. LD A,(KEMP) OR A JR Z,NODEM1 ;$+08 IN A,(1Fh) OR A JP NZ,START NODEM1: LD BC,0EFFEh ;Keys 6-9 IN A,(C) BIT 4,A ;Check for "6" JP NZ,CKCHEAT LD A,(CHEAT) ;and if it's pressed, check for cheat mode CP 7 JP NZ,CKCHEAT LD B,0F7h ;And if it's on, get the room from keys IN A,(C) ;1-5 CPL AND 1Fh CP 14h ;If it's >20, cancel JP NC,CKCHEAT LD (SHEET),A ;Else jump to new room JP NEWSHT CKCHEAT: LD A,(CHEAT) ;If in cheat mode, don't check CP 7 JP Z,LOOP RLCA LD E,A LD D,0 LD IX,CHEATDT ADD IX,DE LD BC,0F7FEh ;Test keys 1-5 IN A,(C) AND 1Fh CP (IX+0) ;Next character in sequence? JR Z,CKNXCHT CP 1Fh ;No character? JP Z,LOOP CP (IX+-2) ;Current character in sequence? JP Z,LOOP XOR A ;Incorrect character LD (CHEAT),A JP LOOP CKNXCHT: ;Test keys 6-9 LD B,0EFh IN A,(C) AND 1Fh CP (IX+1) ;Next character JR Z,INCCHT CP 1Fh ;No character JP Z,LOOP CP (IX+-1) ;Current character JP Z,LOOP XOR A ;Incorrect character LD (CHEAT),A JP LOOP INCCHT: LD A,(CHEAT) ;Move to next character in the code INC A LD (CHEAT),A JP LOOP ; MANDEAD: LD A,(DEMO) OR A JP NZ,NXSHEET LD A,47h LPDEAD1: LD HL,ATTR LD DE,ATTR+1 LD BC,511 ;Attributes to white on black LD (HL),A LDIR LD E,A CPL AND 7 RLCA RLCA RLCA OR 7 LD D,A LD C,E RRC C RRC C RRC C OR 10h XOR A TM21: OUT (0FEh),A XOR 18h LD B,D TM22: DJNZ TM22 DEC C JR NZ,TM21 LD A,E DEC A CP 3Fh JR NZ,LPDEAD1 LD HL,NOMEN LD A,(HL) OR A JP Z,ENDGAM DEC (HL) JP NEWSHT ENDGAM: LD HL,HGHSCOR ;Compare high score LD DE,SCORBUF ;with current score LD B,6 LPHGH: LD A,(DE) CP (HL) JP C,FEET ;Current score is less JP NZ,NEWHGH ;Current score is more INC HL INC DE DJNZ LPHGH NEWHGH: LD HL,SCORBUF ;Set high score to current LD DE,HGHSCOR LD BC,6 LDIR FEET: LD HL,SCREEN ;Foot animation LD DE,SCREEN+1 LD BC,4095 LD (HL),0 LDIR XOR A ;Eugene's height LD (EUGHGT),A LD DE,MANDAT+64 LD HL,SCREEN+800h+4*32+15 LD C,0 CALL DRWFIX ;Draw Willy LD DE,SP_PEDE LD HL,SCREEN+800h+6*32+15 LD C,0 CALL DRWFIX ;Draw pedestal LOOPFT: LD A,(EUGHGT) LD C,A LD B,83h LD A,(BC) ;Calc foot position OR 0Fh LD L,A INC BC LD A,(BC) SUB 20h LD H,A LD DE,SP_FOOT LD C,0 CALL DRWFIX ;Draw foot LD A,(EUGHGT) CPL LD E,A XOR A LD BC,64 TM111: OUT (0FEh),A XOR 18h LD B,E TM112: DJNZ TM111 ;$-00 DEC C JR NZ,TM112 ;$-08 LD HL,ATTR LD DE,ATTR+1 LD BC,511 LD A,(EUGHGT) AND 0Ch ;Flicker colours RLCA OR 47h LD (HL),A LDIR LD A,(EUGHGT) ADD A,4 LD (EUGHGT),A CP 0C4h JR NZ,LOOPFT ;$-48 LD IX,MESSG LD C,4 LD DE,SCREEN + 6*32 + 10 CALL PMESS LD IX,MESSO LD C,4 LD DE,SCREEN + 6*32 + 18 CALL PMESS LD BC,0 LD D,6 TM91: DJNZ TM91 LD A,C ;Make the "game over" message flicker AND 7 OR 40h LD (ATTR + 6*32 + 10),A INC A AND 7 OR 40h LD (ATTR + 6*32 + 11),A INC A AND 7 OR 40h LD (ATTR + 6*32 + 12),A INC A AND 7 OR 40h LD (ATTR + 6*32 + 13),A INC A AND 7 OR 40h LD (ATTR + 6 * 32 + 18),A INC A AND 7 OR 40h LD (ATTR + 6 * 32 + 19),A INC A AND 7 OR 40h LD (ATTR + 6 * 32 + 20),A INC A AND 7 OR 40h LD (ATTR + 6 * 32 + 21),A DEC C JR NZ,TM91 DEC D JR NZ,TM91 JP START C8A3C: LD A,(B80BD) SUB 4 LD (B80BD),A CP 0FCh JR NZ,R8A55 ;$+0F LD A,(B80BC) CP 24h RET Z DEC A LD (B80BC),A LD A,(B80BD) R8A55: AND 0E0h RLCA RLCA RLCA LD E,0 OR A JR Z,R8A66 ;$+09 LD B,A R8A60: RRC E SET 7,E DJNZ R8A60 ;$-04 R8A66: LD A,(B80BC) LD L,A LD H,52h LD B,4 R8A6E: LD (HL),E INC H DJNZ R8A6E ;$-02 XOR A INC A RET C8A75: LD IX,T5E00 LD A,70h LD (L8A9B+1),A CALL C8A8A LD IX,T5F00 LD A,78h LD (L8A9B+1),A C8A8A: LD C,0 L8A8C: LD E,C LD A,(IX+0) LD HL,B8020 LD BC,72 CPIR LD C,E LD B,8 L8A9B: LD D,0 R8A9D: LD A,(HL) LD (DE),A INC HL INC D DJNZ R8A9D ;$-04 INC IX INC C JP NZ,L8A8C LD A,(SHEET) CP 13h RET NZ LD HL,0A000h ;Title page LD DE,T7000 LD BC,2048 LDIR RET C8ABB: LD A,(B806B) CP 1 JR NZ,R8B10 ;$+50 LD A,(B806E) RES 0,A SUB 8 LD HL,B8068 ADD A,(HL) LD (HL),A CALL C8B82 LD A,(B803B) CP (HL) JP Z,L8BA2 INC HL CP (HL) JP Z,L8BA2 LD A,(B806E) INC A LD (B806E),A SUB 8 JP P,L8AEB NEG L8AEB: INC A RLCA RLCA RLCA LD D,A LD C,20h LD A,(BORDER) ;Border R8AF5: OUT (0FEh),A XOR 18h LD B,D R8AFA: DJNZ R8AFA ;$-00 DEC C JR NZ,R8AF5 ;$-08 LD A,(B806E) CP 12h JP Z,L8B96 CP 10h JR Z,R8B10 ;$+07 CP 0Dh JP NZ,L8C83 R8B10: LD A,(B8068) AND 0Fh JR NZ,R8B51 ;$+3C LD HL,(W806C) LD DE,64 ADD HL,DE LD A,(B8032) CP (HL) CALL Z,C8BBA LD A,(B804D) CP (HL) JR Z,R8B51 ;$+28 LD A,(B8056) CP (HL) JR Z,R8B51 ;$+22 INC HL LD A,(B8032) CP (HL) CALL Z,C8BBA LD A,(B804D) CP (HL) JR Z,R8B51 ;$+14 LD A,(B8056) CP (HL) JR Z,R8B51 ;$+0E LD A,(B8020) CP (HL) DEC HL JP NZ,L8BDD CP (HL) JP NZ,L8BDD R8B51: LD A,(B806B) CP 1 JP Z,L8C83 LD HL,B806A RES 1,(HL) OR A JP Z,L8B9C INC A LD (B806B),A RLCA RLCA RLCA RLCA LD D,A LD C,20h LD A,(BORDER) ;Border R8B70: OUT (0FEh),A XOR 18h LD B,D R8B75: DJNZ R8B75 ;$-00 DEC C JR NZ,R8B70 ;$-08 LD A,(B8068) ADD A,8 LD (B8068),A C8B82: AND 0F0h LD L,A XOR A RL L ADC A,5Ch LD H,A LD A,(W806C) AND 1Fh OR L LD L,A LD (W806C),HL RET L8B96: LD A,6 LD (B806B),A RET L8B9C: LD A,2 LD (B806B),A RET L8BA2: LD A,(B8068) ADD A,10h AND 0F0h LD (B8068),A CALL C8B82 LD A,2 LD (B806B),A LD HL,B806A RES 1,(HL) RET C8BBA: LD C,L LD A,H ADD A,1Bh OR 7 LD B,A R8BC1: DEC B LD A,(BC) INC B LD (BC),A DEC B LD A,B AND 7 JR NZ,R8BC1 ;$-08 XOR A LD (BC),A LD A,B ADD A,7 LD B,A LD A,(BC) OR A RET NZ LD A,(B8020) INC H INC H LD (HL),A DEC H DEC H RET L8BDD: LD A,(B806B) CP 0Ch JP NC,L8D06 LD E,0FFh XOR A LD (B806B),A LD A,(B8044) CP (HL) JR Z,R8BF5 ;$+06 INC HL CP (HL) JR NZ,R8BFB ;$+08 R8BF5: LD A,(B806F) SUB 3 LD E,A R8BFB: LD BC,0DFFEh IN A,(C) AND 1Fh OR 20h AND E LD E,A LD BC,0FBFEh IN A,(C) AND 1Fh RLC A OR 1 AND E LD E,A LD B,0F7h IN A,(C) RRCA OR 0F7h AND E LD E,A LD B,0EFh IN A,(C) OR 0FBh AND E LD E,A LD A,(KEMP) OR A JR Z,R8C34 ;$+0C LD BC,1Fh IN A,(C) AND 3 CPL AND E LD E,A R8C34: LD C,0 LD A,E AND 2Ah CP 2Ah JR Z,R8C3F ;$+04 LD C,4 R8C3F: LD A,E AND 15h CP 15h JR Z,R8C48 ;$+04 SET 3,C R8C48: LD A,(B806A) ADD A,C LD C,A LD B,0 LD HL,T8408 ADD HL,BC LD A,(HL) LD (B806A),A LD BC,07EFEh IN A,(C) AND 1Fh CP 1Fh JR NZ,R8C7B ;$+1B LD B,0EFh IN A,(C) AND 9 CP 9 JR NZ,R8C7B ;$+11 LD A,(KEMP) OR A JR Z,L8C83 ;$+13 LD BC,1Fh IN A,(C) BIT 4,A JR Z,L8C83 ;$+0A R8C7B: XOR A LD (B806E),A INC A LD (B806B),A L8C83: LD A,(B806A) AND 2 RET Z LD A,(B806A) AND 1 JP Z,L8CCA LD A,(B8069) OR A JR Z,R8C9C ;$+07 DEC A LD (B8069),A RET R8C9C: LD HL,(W806C) DEC HL LD DE,32 ADD HL,DE LD A,(B803B) CP (HL) RET Z LD A,(B8068) AND 0Fh JR Z,R8CB9 ;$+0B LD A,(B803B) ADD HL,DE CP (HL) RET Z OR A SBC HL,DE R8CB9: LD A,(B803B) OR A SBC HL,DE CP (HL) RET Z LD (W806C),HL LD A,3 LD (B8069),A RET L8CCA: LD A,(B8069) CP 3 JR Z,R8CD6 ;$+07 INC A LD (B8069),A RET R8CD6: LD HL,(W806C) INC HL INC HL LD DE,32 LD A,(B803B) ADD HL,DE CP (HL) RET Z LD A,(B8068) AND 0Fh JR Z,R8CF4 ;$+0B LD A,(B803B) ADD HL,DE CP (HL) RET Z OR A SBC HL,DE R8CF4: LD A,(B803B) OR A SBC HL,DE CP (HL) RET Z DEC HL LD (W806C),HL XOR A LD (B8069),A RET L8D05: POP HL L8D06: POP HL L8D07: LD A,0FFh LD (B806B),A JP L87A2 C8D0F: LD IY,T80BE LD DE,7 R8D16: LD A,(IY+0) CP 0FFh RET Z OR A JR Z,R8D6F ;$+52 LD A,(B80BD) AND 4 RRCA RRCA RRCA AND (IY+0) JR NZ,R8D6F ;$+45 LD A,(IY+4) CP 3 JR Z,R8D43 ;$+12 CP 4 JR Z,R8D5A ;$+25 JR NC,R8D3E ;$+07 INC (IY+4) JR R8D6F ;$+33 R8D3E: DEC (IY+4) JR R8D6F ;$+2E R8D43: LD A,(IY+1) CP (IY+6) JR NZ,R8D51 ;$+08 LD (IY+4),7 JR R8D6F ;$+20 R8D51: LD (IY+4),0 INC (IY+1) JR R8D6F ;$+17 R8D5A: LD A,(IY+1) CP (IY+5) JR NZ,R8D68 ;$+08 LD (IY+4),0 JR R8D6F ;$+09 R8D68: LD (IY+4),7 DEC (IY+1) R8D6F: ADD IY,DE JR R8D16 ;$-5B SOLAR: LD HL,T5C00+23 LD DE,32 R8D79: LD A,(B8029) CP (HL) RET Z LD A,(B803B) CP (HL) RET Z LD A,27h CP (HL) JR NZ,R8D98 ;$+12 EXX CALL C8A3C CALL C8A3C CALL C8A3C CALL C8A3C EXX JR R8DA5 ;$+0F R8D98: LD A,(B8020) CP (HL) JR Z,R8DA5 ;$+09 LD A,E XOR 0DFh LD E,A LD A,D CPL LD D,A R8DA5: LD (HL),77h ADD HL,DE JR R8D79 ;$-2F C8DAA: LD IY,T80BE R8DAE: LD A,(IY+0) CP 0FFh RET Z OR A JR Z,R8DF1 ;$+3C LD DE,31 LD L,(IY+1) LD H,(IY+2) AND 7Fh LD (HL),A INC HL LD (HL),A ADD HL,DE LD (HL),A INC HL LD (HL),A LD C,1 LD A,(IY+4) RRCA RRCA RRCA LD E,A LD A,(SHEET) CP 7 JR C,R8DE3 ;$+0C CP 9 JR Z,R8DE3 ;$+08 CP 0Fh JR Z,R8DE3 ;$+04 SET 7,E R8DE3: LD D,81h LD L,(IY+1) LD H,(IY+3) CALL DRWFIX JP NZ,L8D06 R8DF1: LD DE,7 ADD IY,DE JR R8DAE ;$-48 EUGENE: LD A,(B8074) OR A JR Z,R8E0F ;$+13 LD A,(B80DB) OR A JR Z,R8E0F ;$+0D LD A,(EUGHGT) DEC A JR Z,R8E1C ;$+14 LD (EUGHGT),A JR R8E24 ;$+17 R8E0F: LD A,(EUGHGT) INC A CP 58h JR Z,R8E1C ;$+07 LD (EUGHGT),A JR R8E24 ;$+0A R8E1C: LD A,(B80DB) XOR 1 LD (B80DB),A R8E24: LD A,(EUGHGT) AND 7Fh RLCA LD E,A LD D,83h LD A,(DE) OR 0Fh LD L,A INC DE LD A,(DE) LD H,A LD DE,T80E0 LD C,1 CALL DRWFIX JP NZ,L8D06 LD A,(EUGHGT) AND 78h RLCA OR 7 SCF RL A LD L,A LD A,0 ADC A,5Ch LD H,A LD A,(B8074) OR A LD A,7 JR NZ,R8E5F ;$+09 LD A,(B80BD) RRCA RRCA AND 7 R8E5F: C8E5F: LD (HL),A LD A,(B8020) AND 0F8h OR (HL) LD (HL),A LD DE,31 INC HL LD (HL),A ADD HL,DE LD (HL),A INC HL LD (HL),A ADD HL,DE LD (HL),A INC HL LD (HL),A RET SKYLAB: LD IY,T80DD R8E79: LD A,(IY+0) CP 0FFh JP Z,L879F LD A,(IY+2) CP (IY+6) JR NC,R8E91 ;$+0A ADD A,(IY+4) LD (IY+2),A JR R8EAF ;$+20 R8E91: INC (IY+1) LD A,(IY+1) CP 8 JR NZ,R8EAF ;$+16 LD A,(IY+5) LD (IY+2),A LD A,(IY+3) ADD A,8 AND 1Fh LD (IY+3),A LD (IY+1),0 R8EAF: LD E,(IY+2) RLC E LD D,83h LD A,(DE) ADD A,(IY+3) LD L,A INC DE LD A,(DE) LD H,A LD A,(IY+1) RRCA RRCA RRCA LD E,A LD D,81h LD C,1 CALL DRWFIX JP NZ,L8D07 LD A,(IY+2) AND 40h RLCA RLCA ADD A,5Ch LD H,A LD A,(IY+2) RLCA RLCA AND 0E0h OR (IY+3) LD L,A LD A,(IY+0) CALL C8E5F LD DE,7 ADD IY,DE JR R8E79 ;$-76 VGUARD: LD IY,T80DD R8EF5: LD A,(IY+0) CP 0FFh RET Z INC (IY+1) RES 2,(IY+1) LD A,(IY+2) ADD A,(IY+4) CP (IY+5) JR C,R8F17 ;$+0C CP (IY+6) JR NC,R8F17 ;$+07 LD (IY+2),A JR R8F1F ;$+0A R8F17: LD A,(IY+4) NEG LD (IY+4),A R8F1F: LD A,(IY+2) AND 7Fh RLCA LD E,A LD D,83h LD A,(DE) OR (IY+3) LD L,A INC DE LD A,(DE) LD H,A LD A,(IY+1) RRCA RRCA RRCA LD E,A LD D,81h LD C,1 CALL DRWFIX JP NZ,L8D06 LD A,(IY+2) AND 40h RLCA RLCA ADD A,5Ch LD H,A LD A,(IY+2) RLCA RLCA AND 0E0h OR (IY+3) LD L,A LD A,(IY+0) CALL C8E5F LD DE,7 ADD IY,DE JR R8EF5 ;$-6C C8F63: XOR A LD (B8074),A LD IY,T8075 R8F6B: LD A,(IY+0) CP 0FFh JR Z,R8FBA ;$+4A OR A JR Z,R8FAE ;$+3B LD E,(IY+1) LD D,(IY+2) LD A,(DE) AND 7 CP 7 JR NZ,R8F8E ;$+0E LD HL,SCORBUF+3 CALL C90FE LD (IY+0),0 JR R8FAE ;$+22 R8F8E: LD A,(IY+0) AND 0F8h OR 3 LD B,A LD A,(IY+0) AND 3 ADD A,B LD (IY+0),A LD (DE),A LD (B8074),A LD D,(IY+3) LD HL,T80B4 LD B,8 CALL C92D5 R8FAE: INC IY INC IY INC IY INC IY INC IY JR R8F6B ;$-4D R8FBA: LD A,(B8074) OR A RET NZ LD HL,B808F SET 7,(HL) RET C8FC5: LD HL,(W80B0) LD A,(W806C) CP L JR NZ,R8FDF ;$+13 LD A,(B806D) CP H JR NZ,R8FDF ;$+0D LD A,(B808F) BIT 7,A JR Z,R8FDF ;$+06 POP HL JP NXSHEET R8FDF: LD A,(B808F) LD (HL),A INC HL LD (HL),A LD DE,31 ADD HL,DE LD (HL),A INC HL LD (HL),A LD DE,T8090 LD HL,(W80B2) LD C,0 DRWFIX: LD B,10h R8FF6: BIT 0,C LD A,(DE) JR Z,R8FFF ;$+06 AND (HL) RET NZ LD A,(DE) OR (HL) R8FFF: LD (HL),A INC L INC DE BIT 0,C LD A,(DE) JR Z,R900B ;$+06 AND (HL) RET NZ LD A,(DE) OR (HL) R900B: LD (HL),A DEC L INC H INC DE LD A,H AND 7 JR NZ,R9024 ;$+12 LD A,H SUB 8 LD H,A LD A,L ADD A,20h LD L,A AND 0E0h JR NZ,R9024 ;$+06 LD A,H ADD A,8 LD H,A R9024: DJNZ R8FF6 ;$-2E XOR A RET NXSHEET: LD A,(SHEET) INC A CP 20 JR NZ,R9091 ; ; Reached the end! ; LD A,(DEMO) OR A JP NZ,L9090 ;If in demo mode, wrap. LD A,(CHEAT) CP 7 JR Z,L9090 ;If in cheat mode, wrap. LD C,0 LD DE,MANDAT+96 ;Draw Willy at top of screen LD HL,SCREEN + 2*32 + 19 CALL DRWFIX LD DE,SP_SWFS ;SwordFish LD HL,SCREEN+ 5*32 +19 CALL DRWFIX LD HL,ATTR + 2*32 + 19 ;Set Willy attributes LD DE,31 LD (HL),2Fh INC HL LD (HL),2Fh ADD HL,DE LD (HL),27h INC HL LD (HL),27h ADD HL,DE INC HL ADD HL,DE LD (HL),45h INC HL LD (HL),45h ADD HL,DE LD (HL),46h INC HL LD (HL),47h ADD HL,DE LD (HL),0 INC HL LD (HL),0 LD BC,0 LD D,32h XOR A R907D: OUT (0FEh),A XOR 18h LD E,A LD A,C ADD A,D ADD A,D ADD A,D LD B,A LD A,E R9088: DJNZ R9088 ;$-00 DEC C JR NZ,R907D ;$-0E DEC D JR NZ,R907D ;$-11 L9090: XOR A R9091: LD (SHEET),A LD A,3Fh R9096: LD HL,ATTR LD DE,ATTR+1 LD BC,511 LD (HL),A LDIR LD BC,4 R90A5: DJNZ R90A5 ;$-00 DEC C JR NZ,R90A5 ;$-03 DEC A JR NZ,R9096 ;$-15 LD A,(DEMO) OR A JP NZ,NEWSHT R90B4: CALL C8A3C JP Z,NEWSHT LD HL,SCORBUF+5 CALL C90FE LD IX,SCORBUF LD C,6 LD DE,SCREEN + 4096 + 3*32 + 26 CALL PMESS LD C,4 LD A,(B80BC) CPL AND 3Fh RLC A LD D,A R90D7: LD A,0 OUT (0FEh),A LD B,D R90DC: DJNZ R90DC ;$-00 LD A,18h OUT (0FEh),A LD B,D R90E3: DJNZ R90E3 ;$-00 DEC C JR NZ,R90D7 ;$-0F JR R90B4 ;$-34 R90EA: LD (HL),30h DEC HL LD A,L CP 2Ah JR NZ,C90FE ;$+0E LD A,8 LD (B8458),A LD A,(NOMEN) INC A LD (NOMEN),A C90FE: LD A,(HL) CP 39h JR Z,R90EA ;$-17 INC (HL) RET C9105: LD HL,(W8070) LD E,L LD D,H LD A,(B8072) LD B,A LD A,(B806F) OR A JR NZ,R9127 ;$+15 LD A,(HL) RLC A RLC A INC H INC H LD C,(HL) RRC C RRC C R9120: LD (DE),A LD (HL),C INC L INC E DJNZ R9120 ;$-04 RET R9127: LD A,(HL) RRC A RRC A INC H INC H LD C,(HL) RLC C RLC C JR R9120 ;$-13 KONG: LD HL,T5C00+6 CALL C921B LD A,(B80DB) CP 2 RET Z LD A,(T7000 + 506h) CP 10h JP Z,L91F9 LD A,(T5F00+3*32+17) OR A JR Z,R9176 ;$+29 LD HL,T7000 + 0F71h R9152: LD A,(HL) OR A JR NZ,R916C ;$+18 DEC H LD A,H CP 77h JR NZ,R9152 ;$-08 LD A,(B8020) LD (T5F00+3*32+17),A LD (T5F00+4*32+17),A LD A,72h LD (B80CB),A JR R9176 ;$+0C R916C: LD (HL),0 LD L,91h LD A,H XOR 7 LD H,A LD (HL),0 R9176: LD HL,T5C00+18 CALL C921B JR NZ,R919D ;$+21 XOR A LD (EUGHGT),A INC A LD (B80DB),A LD A,(B8020) LD (T5E00+2*32+15),A LD (T5E00+2*32+16),A LD HL,T7000 + 2*32 + 15 LD B,8 R9194: LD (HL),0 INC L LD (HL),0 DEC L INC H DJNZ R9194 ;$-07 R919D: LD A,(B80DB) OR A JR Z,L91F9 ;$+58 LD A,(EUGHGT) CP 64h JR Z,R91F3 ;$+4B ADD A,4 LD (EUGHGT),A LD C,A LD D,10h LD A,(BORDER) ;Border R91B5: OUT (0FEh),A XOR 18h LD B,C R91BA: DJNZ R91BA ;$-00 DEC D JR NZ,R91B5 ;$-08 LD A,C RLCA LD E,A LD D,83h LD A,(DE) OR 0Fh LD L,A INC DE LD A,(DE) LD H,A LD D,81h LD A,(B80BD) AND 20h OR 40h LD E,A LD C,0 CALL DRWFIX LD HL,SCORBUF+3 CALL C90FE LD A,(EUGHGT) AND 78h LD L,A LD H,17h ADD HL,HL ADD HL,HL LD A,L OR 0Fh LD L,A LD A,6 JP C8E5F R91F3: LD A,2 LD (B80DB),A RET L91F9: LD A,(B80BD) AND 20h LD E,A LD D,81h LD HL,T6000+15 LD C,1 CALL DRWFIX JP NZ,L8D06 LD A,44h ;Kong colour: Bright green LD (T5C00+1*32+15),A LD (T5C00+1*32+16),A LD (T5C00+15),A LD (T5C00+16),A RET C921B: LD A,(W806C) INC A AND 0FEh CP L RET NZ LD A,(B806D) CP H RET NZ LD A,(B8065) LD H,75h CP (HL) RET NZ LD (HL),8 INC H LD (HL),6 INC H LD (HL),6 XOR A OR A RET C923A: LD HL,(W806C) LD DE,31 LD C,0Fh CALL C925F INC HL CALL C925F ADD HL,DE CALL C925F INC HL CALL C925F LD A,(B8068) LD C,A ADD HL,DE CALL C925F INC HL CALL C925F JR R927F ;$+22 C925F: LD A,(B8020) CP (HL) JR NZ,R9270 ;$+0D LD A,C AND 0Fh JR Z,R9270 ;$+08 LD A,(B8020) OR 7 LD (HL),A R9270: LD A,(B804D) CP (HL) JP Z,L8D05 LD A,(B8056) CP (HL) JP Z,L8D05 RET R927F: LD A,(B8068) DEFB 0DDh LD H,83h ;LD XH,83h DEFB 0DDh LD L,A ;LD XL,A LD A,(B806A) AND 1 RRCA LD E,A LD A,(B8069) AND 3 RRCA RRCA RRCA OR E LD E,A LD D,82h LD B,10h LD A,(W806C) AND 1Fh LD C,A R92A2: LD A,(IX+0) LD H,(IX+1) OR C LD L,A LD A,(DE) OR (HL) LD (HL),A INC HL INC DE LD A,(DE) OR (HL) LD (HL),A INC IX INC IX INC DE DJNZ R92A2 ;$-15 RET PMESS: LD A,(IX+0) CALL C92CB INC IX INC E LD A,D SUB 8 LD D,A DEC C JR NZ,PMESS ;$-0E RET C92CB: LD H,7 LD L,A SET 7,L ADD HL,HL ADD HL,HL ADD HL,HL LD B,8 C92D5: LD A,(HL) LD (DE),A INC HL INC D DJNZ C92D5 ;$-04 RET C92DC: LD A,(IY+0) CP 0FFh RET Z LD C,A LD B,0 XOR A LD D,(IY+1) LD A,D CALL C932B LD (HL),50h LD E,(IY+2) LD A,E CALL C932B LD (HL),28h R92F8: OUT (0FEh),A DEC D JR NZ,R9302 ;$+07 LD D,(IY+1) XOR 18h R9302: DEC E JR NZ,R930A ;$+07 LD E,(IY+2) XOR 18h R930A: DJNZ R92F8 ;$-12 DEC C JR NZ,R92F8 ;$-15 CALL C9337 RET NZ LD A,(IY+1) CALL C932B LD (HL),38h LD A,(IY+2) CALL C932B LD (HL),38h INC IY INC IY INC IY JR C92DC ;$-4D C932B: SUB 8 RRCA RRCA RRCA CPL OR 0E0h LD L,A LD H,59h RET C9337: LD A,(KEMP) OR A JR Z,R9342 ;$+07 IN A,(1Fh) BIT 4,A RET NZ R9342: LD BC,0BFFEh IN A,(C) AND 1 CP 1 RET ; ; A great tract of empty space, containing source code for the code from X8854 ;on. ; X934C: DEFS 2482 ; ; DEC E ; JR NZ,NOFLP6 ; LD E,(HL) ; XOR 24 ; NOFLP6 DJNZ TM51 ; DEC C ; JR NZ,TM51 ; NONOTE4 LD A,(DEMO) ; OR A ; JR Z,NODEM1 ; DEC A ; JP Z,MANDEAD ; LD (DEMO),A ; LD BC,0FEh ; IN A,(C) ; AND 31 ; CP 31 ; JP NZ,START ; LD A,(KEMP) ; OR A ; JR Z,NODEM1 ; IN A,(31) ; OR A ; JP NZ,START ; NODEM1 LD BC,0EFFEh ; IN A,(C) ; BIT 4,A ; JP NZ,CKCHEAT ; ; [JCE] Why use JPs here? JRs would do it nicely ; ; LD A,(CHEAT) ; CP 7 ; JP NZ,CKCHEAT ; LD B,0F7h ; IN A,(C) ; CPL ; AND 31 ; CP 20 ; JP NC,CKCHEAT ; LD (SHEET),A ; JP NEWSHT ; CKCHEAT LD A,(CHEAT) ; CP 7 ; JP Z,LOOP ; RLCA ; LD E,A ; LD D,0 ; LD IX,CHEATDT ; ADD IX,DE ; LD BC,0F7FEh ; IN A,(C) ; AND 31 ; CP (IX+0) ; JR Z,CKNXCHT ; CP 31 ; JP Z,LOOP ; CP (IX-2) ; JP Z,LOOP ; XOR A ; LD (CHEAT),A ; JP LOOP ; CKNXCHT LD B,0EFh ; IN A,(C) ; AND 31 ; CP (IX+1) ; JR Z,INCCHT ; CP 31 ; JP Z,LOOP ; CP (IX-1) ; JP Z,LOOP ; XOR A ; LD (CHEAT),A ; JP LOOP ; INCCHT LD A,(CHEAT) ; INC A ; LD (CHEAT),A ; JP LOOP ; MANDEAD LD A,(DEMO) ; OR A ; JP NZ,NXSHEET ; LD A,H ; LPDEAD1 LD HL,5800h ; LD DE,5801h ; LD BC,1FFFh ; LD (HL),A ; LDIR ; LD E,A ; CPL ; AND 7 ; RLCA ; RLCA ; RLCA ; OR 7 ; LD D,A ; LD C,E ; RRC C ; RRC C ; RRC C ; OR 16 ; XOR A ; TM21 OUT (254),A ; XOR 24 ; LD B,D ; TM22 DJNZ TM22 ; DEC C ; JR NZ,TM21 ; LD A,E ; DEC A ; CP 3Fh ; JR NZ,LPDEAD1 ; LD HL,NOMEN ; LD A,(HL) ; OR A ; JP Z,ENDGAM ; DEC (HL) ; JP NEWSHT ; ENDGAM LD HL,HGHSCOR ; LD DE,SCORBUF ; LD B,6 ; LPHGH LD A,(DE) ; CP (HL) ; JP C,FEET ; JP NZ,NEWHGH ; INC HL ; INC DE ; DJNZ LPHGH ; NEWHGH LD HL,SCORBUF ; LD HL,HGHSCOR ; LD BC,6 ; LDIR ; FEET LD HL,4000h ; LD DE,4001h ; LD BC,0FFFh ; LD (HL),0 ; LDIR ; XOR A ; LD (EUGHGT),A ; LD DE,MANDAT+64 ; LD HL,488Fh ; LD C,0 ; CALL DRWFIX ; LD DE,0B6E0h ; LD HL,48CFh ; LD C,0 ; CALL DRWFIX ; LOOPFT LD A,(EUGHGT) ; LD C,A ; LD B,83h ; LD A,(BC) ; OR 0Fh ; LD L,A ; INC BC ; LD A,(BC) ; SUB H ; LD H,A ; LD DE,0BAE0h ; LD C,0 ; CALL DRWFIX ; LD A,(EUGHGT) ; CPL ; LD E,A ; XOR A ; LD BC,40h ; TM111 OUT (254),A ; XOR 24 ; LD B,E ; TM112 DJNZ TM112 ; DEC C ; JR NZ,TM111 ; LD HL,5800h ; LD DE,5801h ; LD BC,1FFh ; LD A,(EUGHGT) ; AND 0Ch ; RLCA ; OR 47h ; LD (HL),A ; LDIR ; LD A,(EUGHGT) ; ADD A,4 ; LD (EUGHGT),A ; CP 0C4h ; JR NZ,LOOPFT ; LD IX,MESSG ; LD C,4 ; LD DE,40CAh ; CALL PMESS ; LD IX,MESSO ; LD C,4 ; LD DE,40D2h ; CALL PMESS ; LD BC,0 ; LD D,6 ; TM91 DJNZ TM91 ; LD A,C MEMTOP: DEFB 9,'A' ;The remains of "AND 7" ; ; - and at this point, the manuscript comes to an end ; TITLEMSG: DEFB '. . . . . .' DEFB ' . . . . . MANIC' DEFB ' MINER . . ' DEFB 7Fh DEFB ' BUG-BYTE ltd. 1983' DEFB ' . . By Matthew Smith' DEFB ' . . . Q to P = Left' DEFB ' & Right . . Bottom' DEFB ' row = Jump . . A' DEFB ' to G = Pause . .' DEFB ' H to L = Tune On/Off' DEFB ' . . . Guide Miner' DEFB ' Willy through 20' DEFB ' lethal caverns .' DEFB ' . . . . . ' DEFB ' . .' END ; ;(C) 1983,1984,1999,2000 Matthew Smith - all rights reserved ;