ZX Format #04
14 июня 1996

Programmers - "IN SEARCH OF ETERNAL LIFE."

<b>Programmers</b> -
         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:

Toys - 48 irons (3 levels).

Toys - the passage of La abadia del crimen.

Toys - short story of the game "Adventures of Winnie the Pooh" (Level 1)

Programmers - learn BASIC (Part 4).

Programmers - Adapting programs for TR-DOS # 2.

Programmers - IMMORTAL # 2 (immortality in the games).

Programmers - music editors, which we choose.

Programmers - Guide to shadow service monitor Scorpion ZS 256.

Programmers - "IN SEARCH OF ETERNAL LIFE."

IS-DOS - Category "IS-DOS - for beginners" No 4.

IS-DOS - users "No4:" Working with electronic drive among the IS-DOS ".

IS-DOS - information about the company ISKRASOFT.

Iron - Nemo responds to users' questions.

Iron - Message from the firm Nemo (about microprocessors Z84C0010PEC).

Premiere - Assembler, which we choose (a description of XAS).

Premiere - Program Description 'CONVER-Commander V 4.50 pro'.

Premiere - UFO-2. Devils pit.

Presentation - Novgorod Group Digital Reality about yourself.

Interview - Interview with Captain Nemo with comments Iskrasoft firm.

Interview - Nikolay Rodionov and ZX-Sectrum.

Interview - an interview with the developer of computer HOBBIT Dmitry Mikhailov.

a rest - HAL 9000

a rest - Nemo tells the story of VirtualETnoy reality in Russia.

Mailbox - letters from readers.

Mailbox - Translator.

Mailbox - "Empire Spectrum".

Miscellaneous - The introductory story to the game Paradise Lost (Lost Paradise).

Miscellaneous - Perspectives P / O: WARCRAFT

Miscellaneous - Amiga Club: Questions and Answers # 2.

Miscellaneous - Amiga Rulez or propoganda healthy lifestyle.

From Writers - a new issue and plans for the future.

Authors Journal - ZX-Format No.4

Lottery - the first results of the first lottery.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Similar articles:
Advertising - advertising and announcements.
world of sound Spectrum - Chapter 6.1: Description of the coprocessor registers of the musical AY- 3-8910 (AY-3-8912).
Review - On the new games: PIRATES, MONTANA JONES 2.

В этот день...   2 May