* Split replay.c into multiple files under replay/; improve logical
separation of replay-related code.
* Separate replay playback state from data.
* Get rid of global static replay struct and avoid unnecessary replay
copying.
* Replay playback and recording are now independent and may occur
simultaneously, although this functionality is not yet exposed. This
enables replay "re-recording" while synthesizing new desync check
events, possibly at a different rate from the original replay.
* Rate of recorded desync check events can now be controlled with the
TAISEI_REPLAY_DESYNC_CHECK_FREQUENCY environment variable. The default
value is 300 as before.
* Probably other stuff I forgot about.
Negative "recovery" is gone: bomb i-frames and recovery i-frames are
now decoupled from each other. Added brief comments explaining what
the timestamps are for.
* Smarter generic entity macros
The list of "core" entities is now defined in one macro, and hardcoded
_Generic dispatch tables are eliminated
* Get rid of "custom" entities
All entities are now "first-class". The list of known entity types has
been moved to known_entities.h. The system no longer needs to know the
definition of all entity structs.
* Refactor guts of ENT_BOX/ENT_UNBOX
Made the functions inline, Box::ent is now a proper pointer type (but
please don't use it directly), ENT_UNBOX returns NULL if the box is
"empty" (references NULL entity)
* Merge TASK_BIND_UNBOXED with TASK_BIND
* s/YoumuMyon/YoumuAMyon for consistency
This also introduces `float32`, `float64`, and `real` typedefs to be
used in place of `float` and `double` later. `real` is for game code and
other places where we don't particularly care about the precision and
format of the underlying type, and is currently defined to `double`.
`float32` and `float64` should replace `float` and `double` respectively
* implement player spellcard declarations on bomb
* stagedraw: move "bottom text" to a separate (higher) layer
* update boss spell declaration effect
* import afensorm's character portrait art
* improve dialog visuals
* acknowledge afensorm in credits and COPYING
* 'alphamap' functionality; effects for wriggle and youmu portraits
* update afens art
* add cirno alphamap
* dialog: draw active speaker above other other
* charselect: use r_draw_sprite
* WIP some projectile effects
* fix segfault
* Laser smoothing and glow via post-processing blur magic
TODO: make it optional
* fix memory corruption
* fix memory corruption for realsies now
* fix color_get_hsl for out-of-range colors
* some more bullet flare tweaks
* some lame clear effect workarounds
* spawn bullet flares after frame 0; looks better and fixes some problems
* New baryon explosion; fix petal_explosion; leanify everything
* Add missing bullet flare sprite, rebuild main atlas
* improve batching efficiency with bullet spawn flares
* forgot git add
* Group projectiles/particles by shader where possible
* Another take on baryon explosion; make fg framebuffers 16bit
* WIP some settings for toasters
* remove stupid debug log
* microoptimization that probably does nothing anyway
* somewhat more intuitive quality settings
* Whitelist more particles (MarisaB is on hold)
* Whitelist (and fix) some more stage6 particles (mostly ToE)
* Add a spell name background
* Experimental radial healthbar for bosses
* healthbar tweaks
* thiccer healthbars in response to feedback
* remove healthbar survival timer; just fade out on survivals
* Add linear healthbars option; WIP other boss HUD tweaks
* Use the proper spell card name format
* New font and some random garbage to go along with it
* Generate static font outlines for use in text shaders
* Use outlines in overlay text shader
* Complete boss HUD/healthbar fading logic
* fix boss timer limit
* stage5 bombs explosion effect
* split PFLAG_NOSPAWNZOOM into PFLAG_NOSPAWNFLARE and PFLAG_NOSPAWNFADE;
introduce PFLAG_NOSPAWNEFFECTS which disables both (it's just the two
values OR'd together)
simplify vampiric vapor bullet spawning effect
* Remove spawn fade-in from super-fast stage5 fairy projectiles (limiters)
* lower particle density in v.vapor in minimal mode
* graze effect tweaks
* fix text shortening, tweak replay menu layout
* stupid debug spam
* revisit grazing effects again
* dumb debug spam again
* improve boss attack timer
* overlay effect for boss deaths (similar to the player one)
* spice up spellcard declaration (HUD)
* don't spawn boss death overlay if fleed
* modify Exo2 font to use tabular figures
* adjust replay menu for the font change
* draw timer & power with standard font (phasing out the numbers font)
* WIP new HUD; random fixes/tweaks
* hud: move difficulty indicator
* hud: move debug stuff around
* preloads, mostly
* fix youmuA batching conflict
* shitty workaround for the shitty screenshake shit
* remove extraspell lag by stopping to draw stagebg sooner
which is possible because extra spells have a different spellcard_intro timing. Fun fact of the day: the duration of spellcard_intro is always ATTACK_START_DELAY_EXTRA even for normal spells!
* new stain particle
* i disabled background rendering…
* "batch" marisa_b masterspark draws
* remove these once a new atlas is generated
* make toe quick again
* hopefully fix all occurences of changed stain and ScaleFade behavior
* tweaking reimu_a and toe boson launch effects
* make lhc fast again
* softer involnerability effect
* fix stage 1 snow on the water bug (and improve performance)
translated the time to the future a bit because it only seemed to be an issue for small time values
* remove unnecessary spawnflare from toe
* tone down extra spell start effect
* experimental ReimuB gap shader optimization
* fix python3 shebangs
* generate simple blur shaders w/ hardcoded kernels
* New loading screen
* lasers: fix incorrect draw hook registration
* add webp support for atlas generator
* Use ImageMagick for atlas composition (adds 16-bit support)
* Atlas maintenance
* make the vampiric vapor bullets less prone to invisibility
* Revert a few particles to the quadratic fade curve
* experimental baryon effect
* improve baryon sprites
* disable the baryon effect on minimal postprocessing setting
* Reimu (#101)
* add the reimu
* Add Reimu story
* account for various blunders
* add reimu dialog picture
* Reimu: WIP yin-yang orbs
* reimu: fix up indents
* Reimu: swap the shotmode names to match the kanji order in her Japanese name
* Reimu: compatibility with the latest system
* WIP ReimuA crap
* ReimuA homing trails
* more ReimuA stuff
* more ReimuA adjustments + enhanced DPS stats
* Reimu: stubs for new player animation sequences
* Reimu: occupy the 0th character slot
* Reimu: tweak needle sprite
* Reimu: buff movement speed to better match Touhou
* Reimu: fixup for the recent projectile changes
* ReimuA: make homing shots a bit smaller; give them custom effect on collision
* Reimu: add intermediate frames; move some loose sprites to the atlas
* Reimu: fix compile errors
* replace DBL_MAX by INFINITY
* Don’t draw reimu orbs twice
fixes #127
* add new reimu dialog pic
* ReimuA adjustments (mostly homing); it's still OP
* wip ReimuB gaps
* still not sure where i'm going with these gaps
* meh
* Reimu: premultiplied alpha fixups after rebase
* reimuB shot pattern with basic power scaling (not balanced at all)
* reimuB: some lame-ass particle effects
* ReimuB bomb effect prototype
* reimuA bomb prototype
* fix reimu shots for the new damage system
* Reimu: use the new player_is_bomb_active() function, add placeholder BG for ReimuB
* some reimuB bomb projectiles
* ReimuB bomb bg and some framebuffer utils required to support it.
Might reuse this at least in part for ReimuA unless we come up with
something better.
* hack to fix ReimuB bomb fade; refactoring needed
* reimuA damaging bombs
* fix ub
* prevent nan when reimuA bombs without enemies present
* add a bomb_bg to reimuA
* ...
* various fantasy seal tweaks
* Reimu: placeholder bomb sounds; slight fantasy seal buff
* fix null pointer dereference
* Reimu "balance" adjustments; minor fixes
* putting bandaids over gunshot wounds
* Add aoe damage and bullet cancel to ReimuB's bomb
* more exorcism porn
* make reimu bomb bg runes better visible on dark backgrounds
* More ReimuA shot changes
We always record the replay now, even if "save replays" is set to
"never". In addition to fixing the crash bugs, changing this setting
mid-game also works correctly now.