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.
_________________________________________