2020-02-15 20:13:31 +00:00
|
|
|
if GAME eq 4
|
|
|
|
bullet_template_delta_t union
|
|
|
|
spread_angle db ?
|
|
|
|
stack_speed db ?
|
|
|
|
bullet_template_delta_t ends
|
|
|
|
endif
|
|
|
|
|
[Reverse-engineering] [th04/th05] Bullet pattern types
uth05win TL note: "n-way all-around" means "ring"… yep, let's better
improve on the naming here, once again using established terminology
from Sparen's Danmaku Design Guide at
https://sparen.github.io/ph3tutorials/ddsga3.html
Since TH04 only supports rings *or* spreads *or* stacks, overloading
[delta] to store both spread angle and stack speed, that enum does
serve kind of a purpose in TH04. Unlike TH05, where it could be vastly
simplified to a bitfield with 4 flags: aim to player, randomize angle,
randomize speed, force single. Which could then actually create *more*
types of patterns than these uselessly defined 14 distinct types, all
of which can already be derived from the other values of the upcoming
template structure:
• Set [stack] to 1 if you don't want a stack
• Set [spread] to 1 if you don't want a spread
• Set [spread_delta_angle] to 0 to turn a N-way spread into a ring
Easy.
Part of P0075, funded by Myles and -Tom-.
2020-02-14 16:34:06 +00:00
|
|
|
bullet_template_t struc
|
2020-02-15 20:13:31 +00:00
|
|
|
spawn_type db ?
|
|
|
|
patnum db ?
|
|
|
|
BT_origin Point <?>
|
|
|
|
if GAME eq 5
|
|
|
|
pattern db ?
|
|
|
|
BT_special_motion db ?
|
|
|
|
spread db ?
|
|
|
|
spread_angle_delta db ?
|
|
|
|
BT_stack db ?
|
|
|
|
stack_speed_delta db ?
|
|
|
|
BT_angle db ?
|
|
|
|
speed db ?
|
|
|
|
else
|
|
|
|
BT_velocity Point <?>
|
[Reverse-engineering] [th04/th05] Bullet pattern types
uth05win TL note: "n-way all-around" means "ring"… yep, let's better
improve on the naming here, once again using established terminology
from Sparen's Danmaku Design Guide at
https://sparen.github.io/ph3tutorials/ddsga3.html
Since TH04 only supports rings *or* spreads *or* stacks, overloading
[delta] to store both spread angle and stack speed, that enum does
serve kind of a purpose in TH04. Unlike TH05, where it could be vastly
simplified to a bitfield with 4 flags: aim to player, randomize angle,
randomize speed, force single. Which could then actually create *more*
types of patterns than these uselessly defined 14 distinct types, all
of which can already be derived from the other values of the upcoming
template structure:
• Set [stack] to 1 if you don't want a stack
• Set [spread] to 1 if you don't want a spread
• Set [spread_delta_angle] to 0 to turn a N-way spread into a ring
Easy.
Part of P0075, funded by Myles and -Tom-.
2020-02-14 16:34:06 +00:00
|
|
|
pattern db ?
|
2020-02-15 20:13:31 +00:00
|
|
|
BT_angle db ?
|
|
|
|
speed db ?
|
|
|
|
count db ?
|
|
|
|
BT_delta bullet_template_delta_t <?>
|
|
|
|
db ?
|
|
|
|
BT_special_motion db ?
|
|
|
|
db ?
|
|
|
|
endif
|
[Reverse-engineering] [th04/th05] Bullet pattern types
uth05win TL note: "n-way all-around" means "ring"… yep, let's better
improve on the naming here, once again using established terminology
from Sparen's Danmaku Design Guide at
https://sparen.github.io/ph3tutorials/ddsga3.html
Since TH04 only supports rings *or* spreads *or* stacks, overloading
[delta] to store both spread angle and stack speed, that enum does
serve kind of a purpose in TH04. Unlike TH05, where it could be vastly
simplified to a bitfield with 4 flags: aim to player, randomize angle,
randomize speed, force single. Which could then actually create *more*
types of patterns than these uselessly defined 14 distinct types, all
of which can already be derived from the other values of the upcoming
template structure:
• Set [stack] to 1 if you don't want a stack
• Set [spread] to 1 if you don't want a spread
• Set [spread_delta_angle] to 0 to turn a N-way spread into a ring
Easy.
Part of P0075, funded by Myles and -Tom-.
2020-02-14 16:34:06 +00:00
|
|
|
bullet_template_t ends
|
|
|
|
|
|
|
|
public _bullet_template
|
|
|
|
_bullet_template bullet_template_t <?>
|