ZX Format #04
14 июня 1996 |
|
Programmers - "IN SEARCH OF ETERNAL LIFE."
SEARCHING FOR ETERNAL LIFE CopyRight (c) 1992-95 by Max Iwamoto / Code Busters Beginning of this description has been put in when one of us came to idea to make a game that we do not could pass, lifeless. This idea a success that provided the impetus for attempts to make lifeless other games and come to grips with their device, specificity. As a result, we have made practical techniques for working with games (under working on the game here (and dale e) means the desire to make this game immortal). These techniques have been divided into five groups and presented on. All the reasons mentioned below were tested on MSX2 computers and ZX-Spectrum using programs such as: Debugger, Mons4, STS3.3, etc. This version of the article islyuchitelno is designed for users ZX-Spectrum. , This guide is designed to users, almost without at least minimal experience in Assembler Z80, but knowing its basic team. We offer for your consideration several methods by which we were able to convert more than one hundred games. METHOD 1 ------ Came to your mind itself Try to search the cell in which stores the number of lives and increase them (this should be borne in mind that in some games, the number of lives that are bred on the screen at 1 and sometimes even 2 smaller than gruzhaetsya), and yet, do not put nikogda 255 lives since if you suddenly add life, then life will become counter equal to 0 and then comes Game Over. Most often, NeuStar is a battery (Hereafter Acc): # 6000:3 E03 LD A, # 03; living in Acc # 6002:3200 C0 LD (# C000), A; Acc in cell ; (# C000) Change the number at # 6001, if the olichestvo lives in the game increased, so the cell (# C000) contains a number of lives. In addition to entry through a battery, there are many others here some of them: # 6000:2100 C0 LD HL, # C000; # C000 in HL # 6003:3603 LD (HL), # 03; life ; (# C000) In this case, the cell with which you want to continue to work - (# C000). Some firms have gone more artful ways. They use a few more ways to download lives in a cell: # 6000:210300 LD HL, # 0003; Download 3 ; In HL # 6003:7 D LD A, L; in Acc in L # 6004:3200 C0 LD (# C000), A; Acc in cell ; (# C000) # 6000:210300 LD HL, # 0003; Download 3 ; In HL # 6003:2200 C0 LD (# C000), HL; HL in cell ; (# C000) HL can be used instead of DE, BC, IX, IY, but the main thing for us to find cell that contains life. If the cell found, it is necessary to go to Search subtraction life, because If we simply increase the value in the cell It may happen that even a large the number of lives is not enough for the passing game. Search subtraction life look at an example game BUGGY RANGER: We have 3 lives. We find: # B9EB: 3E03 A, # 03; living in Acc # B9ED: 3238A9 LD (# A938), A; Acc in cell ; (# A938) We are looking for treatment to a cell (# A938). We find: # B959: 2138A9 LD HL, # A938; # B95C: 35 DEC (HL); subtraction ; Lives Once we remove the DEC (HL) (# 00 to # B95C) the game becomes immortal but to pass it is practically impossible, since how energy is subtracted too quickly. Therefore, we are beginning to look that entered in the cell next to the cell life ie (A9??): # B9FF: 3EFF A, # FF; energy in ; Acc # BA01: 3239A9 LD (# A939), A; Acc in cell ; (# A939) Further, we find: # C72C: 3A39A9 LD A, (# A939); energy ; Acc # C72F: 95 SUB L; subtraction Acc # C730: 3239A9 LD (# A939), A; Acc in cell ; Energy # C733: B7 OR A; exposure ; Flags # C734: CA38C7 JP Z, # C738; transition , If 0 # C737: C9 RET; return, And if not 0 # C738: AF XOR A; Reset # C739: 3239A9 LD (# A939), A; cell ; Energy # C73C: C359B9 JP # B959; transition to ; Procedure , Subtraction ; Life Similarly, we can detect fuel and guns: the cell (A93A) and (A941). Their subtraction similar subtraction of lives. The next way is then m, which is placed in a cell is not the number itself, and the ASCII code for this chisla.Naprimer if 3 lives in a toy, in accordance cell will be placed instead of 3, and # 33, have code numbers 3.Sootvetsvenno and lives in this toy can not be more 9, as well as verification is carried out not to 0, and the ASCII code code 0, ie at # 30. Very fond of using this method of Bob Pape, who wrote the R-TYPE, DRAGON BREED, TUSKER. Take for example TUSKER: In this game, 3 lives. Therefore, we start looking for entry 3 in Acc, but found nothing. Next, start looking for NeuStar ASCII code number of 3 - # 33. We find: # 94D4: 3E33 A, # 33, living in Acc # 94D6: 3221FE LD (# FE21), A; Acc in cell ; (# FE21) Now start looking for treatment to cell (# FE21): # 96E0: 3A21FE LD A, (# FE21) # 96E3: 3D DEC A # 96E4: 3221FE LD (# FE21), A # 96E7: FE30 CP # 30 # 96E9: CA0184 JP Z, # 8401 DEC A we have suspicious, they reinforced when we see CP # 30 (check the code number 0). Now at # 96E3 put # 00 and start the program. And lastly, the most cunning and most rarely seen way. Data on the life, energy, number of steps stored in the body program, and its address is sent a team LDIR. Moreover, most After all, they are stored routines shipping! # 6000:210 C60 LD HL, # 600C; Source # 6003:1100 C0 LD DE, # C000; accepter # 6006:010300 LD BC, # 0003, how many ; Forward # 6009: EDB0 LDIR; forward 3 ; Bytes # 600B: C9 RET; with # 600C at # C000 # 600C: 03 INC BC; sent # 600D: 011200 LD BC, # 0012; data In this case, the cell where you want to search for life - this is (# C000). In (# C001) is stored segment number, and (# C002) of energy player. But there is another type of game. This game where multiple players are involved. In them all done through the indexed addressing, ie, to subtract the lives of both Players use one and the same routine. But if the game is fighting (eg Street Fighter), then removing procedure of subtraction of energy (or life) you make the immortals both players and the game will lose meaning. In this case you do not remove the command subtraction, and recourse to the procedure for subtracting one of the players. I must say one more often TSA rechayuscheysya oshibke.Esli in a toy of some items is the same, entry into cells is often found in the same place. For example, in the game Saigon Combat Unit 1, the number of lives exactly the number of grenades and entering is next: # A823: 3E04 A, # 04; number 4 in the Acc # A825: 3220B0 LD (# B020), A; in the cell life ; It # A828: 3221B0 LD (# B021), A; the cell boundary , Nat But in fact the most severe when creators of the game stipulate that their game someone will obessmerchivat. For example, it was done in the game EQUINOX.Zhizni it turned off quite simple, but If you reassign the keyboard before game or you do not have enough time to passing a level, then started the game first You'll find that life is deducted. If this happens, then you need to search entering command code subtracting the memory. In this sluchaemy find: # 7006:3 E35 A, # 35; command code ; DEC (HL) # 7008:32 B19B LD (# 9BB1), A; A at ; # 9BB1, just , And is ; You reciting ; Lives! Therefore, if you put, instead of # 00 # 3 5 at # 7007, the game will be absolutely infinite. METHOD 2 ------ SEARCH checking to zero If the first method does not lead to positive results, you should seek scan cells to zero, remove it and see what happens. Next I Here are some of the options: # 6000:3 A00C0 LD A, (# C000); in the Acc of ; (# C000) # 6003: B7 OR A; set ; Flags # 6004: CA0080 JP Z, # 8000; go if ; A = 0 Remove the jump to the address # 6004 and see what happens. If the screen number of lives = 0, and the inscription Game Over has not yet appeared, it means that a cell lives in this case - (# C000). Search subtraction can not do, because Game Over, and so would never come, but need to remember that checking for 0 can be in several places. Consider a few examples: # 6000:2100 C0 LD HL, # C000; # C000 in HL # 6003: A6 AND (HL); Set ; Flags # 6004: CA0080 JP Z, # 8000; Go, , If 0 Remove the jump to the address # 6004. # 6000:3 A00C0 LD A, (# C000); In Acc of ; (# C000) # 6003: D600 SUB # 00; Set ; Flags # 6005: CA0080 JP Z, # 8000; Jump if ; A = 0 Remove the jump to the address # 6005. Very often instead of SUB # 00 meets SUB # 01 and thus killed two hares at once - subtracted life and verify the equality zero. In this case, please SUB # 00 instead of SUB # 01 and life will be eternal. METHOD 3 ------ SEARCH THE REDUCTION OF LIVES You can also search subtracting any Lieb of cells, among them may be living and subtraction. Subtraction can be performed by any teams subtraction, for example: DEC N, SUB N, where N - A, B, C, D, E, H, L, (IX +??), (IY +??), HL, DE, BC. But there are more perverted methods: # 6000:2 A00C0 LD HL, (# C000); In the HL of ; Memory # 6003:110100 LD DE, # 0001; How ; Take # 6006: ED52 SBC HL, DE; Reduce HL ; On DE # 6008:7 C LD A, H; instead of 0 if , We have # 6009:5 B OR L; in HL? # 600A: CA0080 JP Z, # 8000; if 0, then ; Game Over # 600D: 2200C0 LD (# C000), HL; otherwise pro ; Should ... Need to put # 00 at # 6004. And some are doing more unusual: # 6000:3 EFF LD A, # FF; lives in L, ; # FF in Acc # 6003:85 ADD A, L; Zoom L ; At A =- 1 # 6004:3200 C0 LD (# C000), A; Return ; Acc in (# C000) In this case, you can put a # 00 n on at # 6001 or # 6002 at the address. Method 4 ------ USING THE FEATURES OF THE GAME Many games are added lives for anything, so you can find adding them. And if we know that life can not be greater than N, then we can find a check for that number to determine cell from which it is taken and edit a Method 1, for example: # 6000:3 A00C0 LD A, (# C000); in the Acc of ; (# C000) # 6003: FE09 CP # 09; check ; Equality 9 # 6005: CA0080 JP Z, # 8000; leave And if = 9 The cell to which treatment should be sought - (# C000). Often the number of lives (the number of weapons, h. trills, etc.) represented by numbers. You can find a place in the program where they are printed. We consider several possible cases: # 6000:7 E LD A, (HL); Download ; In A of (HL) # 6001: D601 SUB # 01; Decrease ; Acc 1 # 6003:27 DAA; Decimal ; Korretsiya # 6004: CD???? CALL PRINT; call procedure ; Fools Print # 6000:7 E LD A, (HL); download ; In A of (HL) # 6001: C630 ADD A, # 30, add # 30 ; To Acc # 6003: CD???? CALL PRINT; call procedure ; Fools Print In the second example, we add # 3 0 to Acc and get an equal number of ASCII code of this number, and print as usual text message. In this case, you need to look for numbers in the HL. The meaning of the following method is to find a place where printed label Game Over (or any other, which indicates the end of the game). It is likely that somewhere nearby there is a check of any cell to zero. If not, then keep searching. Method 5 ------ This method is the so-called shock therapy or method of "scientific spear" successfully used in our science during the 73. It is used for digging games in which absolutely nothing to catch. Most often this game with a graphic indicator life. This method is based on your intuition and is the creation of artificial clue: you're "riding" in Monitors Listing games and relying on intuition change certain parts of the program, responsible, in your opinion, life attempts, things, etc. It must be noted that the above addresses and examples of purely conventional. In your game to these addresses modut be different more than that: these examples may overlap in the most bizarre combinations. Max. _________________________________________
Other articles:
Similar articles:
В этот день... 21 November