3
// episode 1 data offset:
7
// Note: Tyrian doesn't actually use these, they are hardcoded in the source for some reason.
10
POWER_NUM:16 = 6 (Note: SPECIAL_NUM isn't on the file)
16
// Size in bytes: 0x50
19
drain:16 // Filler, not used
20
shotRepeat:8 // Rate of fire (lower == faster)
21
multi:8 // How many to shoot at once (use to shoot multiple pattern frames at once)
22
weapAni:16 // Number of frames in the animation (0 == 1 frame, 1 == 2 frames, ...)
23
max:8 // Number of pattern frames (better explanation needed =P it cycles thru the 8x arrays)
24
tx:8 // TODO: Not used in player
25
ty:8 // TODO: Not used in player
26
aim:8 // Homing ability, the bigger the number, the more the shot can turn
28
// There's one of these for each frame
29
8x attack:8 // Attacking power and effect (99 == Ice, >=250: Attacking power is attack-250 and goes thru enemies)
30
8x del:8 // Shot life (how long before it disappears)
31
8x sx:s8 // Horizontal speed
32
8x sy:s8 // Vertical speed
33
8x bx:s8 // Horizontal offset
34
8x by:s8 // Vertical offset
35
8x sg:16 // Shape number (graphics)
37
acceleration:s8 // Vertical acceleration
38
accelerationx:s8 // Horizontal acceleration
39
circleSize:8 // Perturbs the weapons travel:
40
// 0-19: Circle (radius)
41
// Other produce varying results, experiment (pattern changes roughly ever 20 steps)
43
sound:8 // Sound the effect makes (0 == no sound)
44
trail:8 // Shot trail effect (0xFF == none, 0x62 == smoke, others == various or garbage, experiment)
45
shipBlastFilter:8 // TODO: Not sure, but probably has something to do with the color enemies get after being hit
50
str_len:8 = 0x1E // Pascal string length, leave alone
51
name:str30 // Weapon name
52
opnum:8 // How many firing modes weapon has. (1 or 2, only really works for rear guns)
53
2x { // Weapon patterns (What it does, it's an index into the weapons structure). One for each firing mode.
54
11x op:16 // Each entry corresponds to a power level
56
cost:16 // How much does the weapon cost. Upgrades are calculated off this.
57
itemGraphic:16 // Weapon graphic in the shop.
58
powerUse:16 // Power drain when firing
61
// Special moves, those things that show up in the upper left corner with a fake charging bar
63
str_len:8 = 0x1E // Pascal string length, leave alone
65
itemGraphic:16 // The graphic that's displayed during gameplay
66
pwr:8 // Time needed between recharges, may be overriden
67
sType:8 // Determines the type of the special: TODO
68
wpn:16 // Argument used for some kinds of sType
69
} SPECIAL_NUM+1 (46+1)
73
str_len:8 = 0x1E // Pascal string length
75
itemGraphic:16 // Graphic that's displayed in the shop
76
power:s8 // Amount of power provided by generator
78
cost:16 // Cost in shop
83
str_len:8 = 0x1E // String length
85
shipGraphic:16 // Graphic used in-game
86
itemGraphic:16 // Graphic in shop
87
ani:8 // Sets the threshold for when to change to the turning frames
89
dmg:8 // amount of armor ship has
90
cost:16 // Cost in shop
91
bigShipGraphic:8 // Big graphic displayed on the left while in shop
96
str_len:8 = 0x1E // String length
98
pwr:8 // Number of charge stages
99
itemGraphic:16 // Graphic in shop
100
cost:16 // Cost in shop
101
tr:8 // Position and movement of sidekick
102
// 0: Attached to side of ship
103
// 1: Follower ship with turning graphics
104
// 2: Attached to front of ship (player can "launch" if right sidekick)
105
// 3: Follower ship with normal graphic
106
// 4: Orbits around ship
107
option:8 // Determines animation for ship
109
// 1: Constantly animating
110
// 2: Animates when firing
112
ani:8 // Number of frames in animation
113
20x gr:16 // In-game sprite for each animation frame
114
wport:8 // Weapon used for power usage, etc (index into weaponPort array)
115
wpnum:16 // Bullet pattern (index into weapon array)
116
ammo:8 // Amount of ammo
118
iconGr:8 // Icon in ammo indicators
119
} OPTION_NUM+1 (30+1)
122
str_len:8 = 0x1E // String length
124
tpwr:8 // Generator power needed to charge
125
mpwr:8 // Amount of protection
126
itemGraphic:16 // Item icon in shop
127
cost:16 // Cost in shop
128
} SHIELD_NUM+1 (10+1)
130
// Enemy definitions (warning: some of this may be wrong)
132
ani:8 // Number of frames in animation
133
3x tur:8 // Type of shot to fire (index into weapon) (1st: downwards, 2nd: right, 3rd: left)
134
3x freq:8 // Wait between shots
135
xmove:s8 // Horizontal speed
136
ymove:s8 // Vertical speed
139
xcaccel:s8 // Horizontal acceleration, more is less
140
ycaccel:s8 // Vertical acceleration
160
} ENEMY_NUM+1 (850+1)