Я более внимательно пересмотрел ссылки на исходники, которые давал выше. Первые две ссылки - одно и то же, отличный листинг с анализом от
Thomas Jentzsch. Между тем, в самом начале листинга расписан алгоритм работы River Raid, приведу его здесь:
Quote:
; *** R I V E R R A I D ***
; Copyright 1982 Activision
; Designer: Carol Shaw
; Analyzed, labeled and commented
; by Thomas Jentzsch (JTZ)
; Last Update: 13.08.2001 (v0.9)
; Section generation:
; The river is divided into sections which are generated by random. The random
; number generator can generate 57337 different sections. Each section is
; divided into 16 blocks. The last block is the bridge. For each other block a
; random Id is generated, which defines the shape of the river. The river is
; randomly generated with or without islands.
; Each block is 32 lines high and is divided into two parts. Those parts are
; neccessary for the bridge only, because it is smaller than a whole block.
;
; All objects are also randomly generated. There is one object in each block.
; First the game randomly selects if a fuel tank, an enemy object (ship, plane
; or helicopter) or a house should be generated. Then a starting x-position is
; defined and finally the direction (left/right) of the object is set.
; The ships and helicopters start patroling also randomly.
;
; Kernel:
; The main display is 160 lines tall. Below is the state display (score, fuel,
; lives and copyright).
; The kernel displays five or six of the section blocks. When a block leaves
; the display, it is replaced on the fly by a new generated one.
; It's basically a two line kernel, which is repeated twelve times. After that,
; there is code for eight more lines, where the block is iterated and all new
; parameter are set. (12 * 2 + 8 = 32!)
; The parameters for each block are:
; - a pointer to the current playfield pattern
; - a flag for a bright or dark green playfield
; - two pointers for the current object, the data is displayed interlaced,
; this gives in a single line resolution here
; - a color pointer for the object
; - x-positioning values for the object
; - some flags for the object (size, reflection...)
; All collisons are checked for each displayed block and only the hardware
; collision registers are used for that (no software calculations).
; Misc:
; - There are no score variables, the score is stored and changed directly in
; the display pointers!
; - The are no variables to store the x-positions of the objects, all
; calculations are done directly with the position values.
; (There aren't any BCD calculations in this code!)
; - All variables for the players are swapped, when the players change.
; - The game speeds aren't adjusted for PAL, the PAL game run's about 16% slower.
; (This seems to be true for most PAL conversions.)
; - ...
Надеюсь, кто-то сделает толковый перевод.
Напоследок еще одна новость. Кто мог предположить, что RR написала женщина? Однако это так. Ее зовут Кэрол Шоу, она даже упомянута в статье "
15 самых важных женщин в истории техники". Вот ее фото в наши дни:
А кто желает увидеть Кэрол в годы былые, тот может открыть
статью о ней на сайте "Новая реальность".
Кстати, там же о ней можно прочесть интересный отзыв одного из коллег мужеского пола:
Quote:
Кэрол Шоу я встретил, когда я работал в Activision. Её алгоритм создание русла реки в River Raid является одной из самых элегантных решений программирования, которые я когда-либо видел.
К чему это я пишу? К тому, что с RR надо соблюдать осторожность -
ЖЕНСКАЯ ЛОГИКА ДЕТЕКТЕД!