Commit graph

3467 commits

Author SHA1 Message Date
Andrei Alexeyev
b2df4e34db
lasers: irrelevant quantize_laser optimizations 2023-09-28 17:43:14 +02:00
Andrei Alexeyev
c15934f666
dynarray: get rid of memset and add optional initializer arg to dynarray_append 2023-09-28 17:43:14 +02:00
Andrei Alexeyev
b02d831e41
util/geometry: small ellipse collision optimizations 2023-09-28 17:43:14 +02:00
Andrei Alexeyev
4f6384b257
util/miscmath: add component-wise complex div functions 2023-09-28 17:43:14 +02:00
Andrei Alexeyev
806427e8e0
util/miscmath: add cmplx mul & div functions that don't care about infs and nans 2023-09-28 17:43:14 +02:00
Andrei Alexeyev
c2810e228d
all: use re()/im() macros 2023-09-28 17:43:14 +02:00
Andrei Alexeyev
95053f7fe8
util/miscmath: annotate unlikely branches in approach_asymptotic funcs 2023-09-20 04:01:14 +02:00
Andrei Alexeyev
4547f6dc09
util/miscmath: deprecate creal/cimag/crealf/cimagf 2023-09-20 03:58:55 +02:00
Andrei Alexeyev
8b987dcc37
util/miscmath: add csort(z) and csortf(z) functions 2023-09-20 03:43:30 +02:00
Andrei Alexeyev
6e80df6e22
util/miscmath: mark smoothmin as attr_const 2023-09-20 03:42:21 +02:00
Andrei Alexeyev
13ae7a2f72
util/miscmath: remove some unused functions 2023-09-19 14:24:48 +02:00
Andrei Alexeyev
2795419256
util/miscmath: add type-generic min() and max() macros 2023-09-19 13:56:36 +02:00
Andrei Alexeyev
83373d139d
util/miscmath: add re(z) and im(z) macros
Shorter and type-generic replacements for creal() and cimag(). If z is
an l-value, the returned value is also an l-value, e.g.:

	cmplx foo = 420 + 69i;
	im(foo) = 1337;
	assert(foo == 420 + 1337i);
2023-09-19 13:51:10 +02:00
Andrei Alexeyev
a08d68a91a
demoplayer: ignore suspend/resume requests when not initialized
This fixes a nasty interaction between the intro sequence and the
demoplayer introduced in 3ff62045. The cutscene tries to suspend the
demoplayer for its duration and then resume it later. When the
suspension counter hits 0, the demoplayer event handlers are installed
globally. And then AFTER that happens, the demoplayer is actually
initialized, resetting the suspension counter and installing the event
handlers AGAIN. When the demoplayer is then suspended (e.g. by starting
the actual demo playback), only one set of those handlers is removed,
which has the effect of the demoplayer remaining active even in-game.
Eventually, it tries to play a demo while a game is already running,
at which point all hell breaks loose.

Fix this by making suspend and resume no-ops until the demoplayer has
been properly initialized.

Fixes #371
2023-09-10 06:41:32 +02:00
Andrei Alexeyev
e86b12482e
stage6: ricci: disable collision lerp for the danmaku field 2023-09-08 00:52:41 +02:00
Andrei Alexeyev
8847d79dfd
credits: shout out more FOSS projects that we use 2023-09-08 00:38:17 +02:00
Andrei Alexeyev
4639b6c6c4
credits: expand background so text doesn't overflow 2023-09-08 00:38:17 +02:00
Andrei Alexeyev
8363285082
stage6: fix timing of ToE intro screen shake and elly portrait change 2023-09-08 00:38:17 +02:00
Andrei Alexeyev
a0b9c750b4
stage: fix music sync after skip mode 2023-09-08 00:38:17 +02:00
Andrei Alexeyev
b8ad5f7099
stage: massively boost all-clear bonus
Depends on PIV, current score, and difficulty
2023-09-07 21:50:56 +02:00
Andrei Alexeyev
de2f91af42
cutscenes: mention that the extra stage is not yet ready 2023-09-07 21:15:14 +02:00
Andrei Alexeyev
f1c156cacd
stage3: fix bad collision lerp in swarm_trail_proj 2023-09-02 19:31:06 +02:00
Andrei Alexeyev
3ff62045dc
cutscene: suspend demoplayer while active
Fixes #369
2023-09-02 13:13:21 +02:00
Andrei Alexeyev
5d54618667
glcommon: disable norm16 formats on nouveau
These seem to be broken
2023-08-31 00:51:49 +02:00
Andrei Alexeyev
4aba2a925b
stage4: adjust second half to be a bit more fair 2023-08-30 18:50:19 +02:00
Andrei Alexeyev
a9366bc769
global: increase max continues to 5 2023-08-30 14:20:20 +02:00
Andrei Alexeyev
e3e501288c
stage5: atmospheric discharge adjustments
it's still pretty dumb
2023-08-28 19:15:40 +02:00
Andrei Alexeyev
cab432f843
gles: create angle context in webgl mode on windows
Cubemaps are broken in ANGLE's D3D11 backend, except in WebGL mode for
some reason. This is a terrible workaround, but it beats fucked up
rendering in stage backgrounds.
2023-08-28 19:15:40 +02:00
Andrei Alexeyev
1a2c4bc21a
stage4: make vlad's army slightly less unfair
it still sucks ass
2023-08-24 15:54:18 +02:00
Andrei Alexeyev
9cfbbb27c9
progress: zstd-compress and write with new filename
Old uncompressed progress.dat will be loaded if progress.zst is not
found. The reason for this change is that progress files are much larger
now, and taisei <1.4 had a stupid 4kb size limit for them. Older
versions of taisei would refuse to load the new large file at all,
resulting in possible data loss in case multiple versions are installed.
2023-08-24 14:30:41 +02:00
Andrei Alexeyev
a952fb1426
progress: track per-plrmode stage stats 2023-08-24 14:30:41 +02:00
Andrei Alexeyev
efb234284d
progress: actually change hiscore to uint64_t 2023-08-22 20:07:22 +02:00
Andrei Alexeyev
8cc0e568bf
transition: fix post-credits transition 2023-08-21 17:29:33 +02:00
Andrei Alexeyev
9e857e0229
stage3: firefly_storm: add missing sound 2023-08-20 16:13:35 +02:00
Andrei Alexeyev
d1f8ae883a
stage3: replace night ignite with a new spell card 2023-08-20 16:04:46 +02:00
Andrei Alexeyev
323183061b
common_tasks: add RADIAL_LOOP helper macro
Helps with writing radially symmetrical patterns.

Replace this:

	int cnt = 69;
	cmplx dir = initial_dir;
	cmplx turn = cdir(M_TAU/cnt);
	for(int = 0; i < cnt; ++i, dir *= turn) {
		pew_pew(dir);
	}

with this:

	RADIAL_LOOP(l, 69, initial_dir) {
		pew_pew(l.dir);
	}
2023-08-20 15:48:51 +02:00
Andrei Alexeyev
bc1267f0e8
projectile: fix .prevpos being set incorrectly
This broke collision lerping, and automatic angle calculation in cases
where position is influenced by external tasks. A stage 2 pattern seems
to have relied on this broken behavior, and was also fixed.
2023-08-17 01:28:29 +02:00
laochailan
d428063023
stage4: make animate wall more wally 2023-08-05 02:17:16 +02:00
laochailan
78836e6ca8
stage4: center hex fairy lattice 2023-08-05 02:17:16 +02:00
Andrei Alexeyev
153b1ab702
progress: increase file size limit 2023-07-30 06:24:32 +02:00
Andrei Alexeyev
b26e3b8d24
stagedraw: fix stage_draw_hud_score() signature 2023-07-30 06:22:14 +02:00
Andrei Alexeyev
296e330dae
progress: make hiscore 64-bit 2023-07-30 06:21:18 +02:00
Andrei Alexeyev
bd361067df
headers: isolate endings, remove stage.h inc. from plrmodes.h, fix resulting mess 2023-07-30 06:16:17 +02:00
Andrei Alexeyev
42cbdc7005
progress: move private definitions out of the header 2023-07-30 03:14:50 +02:00
Andrei Alexeyev
6cc8bf2d47
gl33: shut up -Wunreachable-code on emscripten builds 2023-07-30 03:01:58 +02:00
Andrei Alexeyev
b57445900f
gamepad: overhaul analog stick handling
* Use correctly scaled radial deadzones instead of naive per-axis
  deadzones
* Option to adjust the "maximum zone" (upper deadzone)
* Option to remap square input into circular. Unfortunately there's no
  nice way to detect which type the controller reports. We assume
  circular by default.
* A more sensible sensitivity setting
* Use a larger minimum deadzone when emulating key presses (e.g. in
  menus)
* Adjusted key repeat to be less aggressive
2023-07-12 00:13:19 +02:00
Andrei Alexeyev
115948857e
item: always collect at full value during power surge 2023-07-11 16:50:05 +02:00
Andrei Alexeyev
6f5f419c24
cutscenes: unlock bgm on enter 2023-06-26 09:07:47 +02:00
Andrei Alexeyev
e49c20d172
resources: add intro bgm 2023-06-26 09:02:46 +02:00
Andrei Alexeyev
a104c10691
menu/options: make it possible to exit text input with gamepad 2023-06-23 11:09:17 +02:00
Andrei Alexeyev
9564c20ed9
video: retarded broken-ass braindead piece of shit garbage 2023-06-23 10:58:28 +02:00
Andrei Alexeyev
f8adda39be
video: update scaling factor after resize
On wayland the scaling factor doesn't seem to be initialized correctly,
as we get a different framebuffer size from what was requested
initially, followed by a resize event with the correct size.
2023-06-23 10:58:28 +02:00
Andrei Alexeyev
f90c460af1
menu/options: very scuffed "reset to default" option 2023-06-23 10:58:28 +02:00
Andrei Alexeyev
5b0af506d7
config: fix config_reset() 2023-06-23 10:58:28 +02:00
Andrei Alexeyev
a9ccc5a91f
replay/demoplayer: reduce inter-demo wait time 2023-06-22 08:04:51 +02:00
Andrei Alexeyev
d84771dc03
laser: prevent potential replay desync 2023-06-20 05:27:12 +02:00
laochailan
40589013dc stages: add missing bgm unlock trigger
in stage 6 one was actually double
2023-06-19 21:48:03 -04:00
Andrei Alexeyev
91528ae8f4
menu/options: don't instantly disable gamepad when option is switched off 2023-06-20 01:13:50 +02:00
Andrei Alexeyev
cab67e9fc1
gamepad: fix early return from gamepad_init() when already initialized 2023-06-20 01:13:50 +02:00
Andrei Alexeyev
a2aa88cb62
gamepad: add gamepad_initialized() 2023-06-20 01:13:50 +02:00
Andrei Alexeyev
ee2bb877bc
global: basic kiosk mode support 2023-06-20 01:13:50 +02:00
Andrei Alexeyev
f99ea11bd2
video: attempt to enforce ALWAYS/NEVER capabilities 2023-06-20 01:13:50 +02:00
Andrei Alexeyev
eeb99858ca
video: make video_get_mode() safer 2023-06-20 01:13:50 +02:00
laochailan
eaa8c5655b stage6: nerf nerf nerf 2023-06-19 18:53:58 -04:00
Andrei Alexeyev
787e66f3fb
plrmodes/marisa_a: draw lasers on LAYER_PLAYER_SHOT_HIGH
Makes them appear under enemy bullets and not reflected in stage 1 water
2023-06-19 23:39:11 +02:00
Andrei Alexeyev
8bff89e1c1
player,config: add option to auto-activate surge at 6 power (on by default) 2023-06-19 23:39:11 +02:00
laochailan
57e90a8c67 stage5: nerf nerf nerf 2023-06-18 16:51:23 -04:00
Andrei Alexeyev
00a59451dd
stage: fix transition for demo with skipped frames 2023-06-18 22:02:55 +02:00
Andrei Alexeyev
31410b6ad7
build: emscripten: pass -lhtml5 for SDL 2023-06-18 14:59:03 +02:00
Andrei Alexeyev
c74ac7874a
gles30: alternative webgl framebuffer_copy impl to work around chrome bug 2023-06-18 14:56:00 +02:00
Andrei Alexeyev
153d809015
enemy: fix missing "taisei.h" include 2023-06-18 14:09:44 +02:00
Andrei Alexeyev
cabfec9cb4
stage6: fix warning 2023-06-17 22:56:45 +02:00
Andrei Alexeyev
c749a6767f
stage6: improve ToE background formulas 2023-06-17 22:30:16 +02:00
Andrei Alexeyev
b7f47e6580
replay/tsrtool: add a basic CLI replay editor 2023-06-17 21:53:48 +02:00
Andrei Alexeyev
ba8ef49030
replay/struct: define gflags and sflags via X-macros 2023-06-17 21:53:48 +02:00
Andrei Alexeyev
1df5454727
player: define INFLAGs via an X-macro 2023-06-17 21:53:48 +02:00
Andrei Alexeyev
086b68e9fd
replau/read: wrap common args in context struct; add flag to ignore errors 2023-06-17 21:53:24 +02:00
Andrei Alexeyev
100036c676
replay: add replay_save_syspath() 2023-06-17 21:53:24 +02:00
Andrei Alexeyev
6a7a65e6b8
stage: handle replays that have skip_frames 2023-06-17 21:53:24 +02:00
Andrei Alexeyev
f272ec5911
replay/state: add skip_frames counter for playback 2023-06-17 21:53:24 +02:00
Andrei Alexeyev
eede63333a
replay: introduce REPLAY_STRUCT_VERSION_TS104000_REV1
* Use zstd instead of zlib compression
* Remove plr_focus field
* Add skip_frames field for demos
2023-06-17 21:53:24 +02:00
Andrei Alexeyev
e74c3f60ea
replay/play: fix --rereplay mode 2023-06-17 21:53:24 +02:00
Andrei Alexeyev
e949419941
menu/replayview: cleanup events after watching replay 2023-06-17 21:52:44 +02:00
Andrei Alexeyev
79768da03a
version: add taisei_version_tostrbuf() 2023-06-17 21:35:10 +02:00
laochailan
a6e29bdc56 preload: update all preloads
endings and extra spells are not completely tested yet.
2023-06-16 22:19:11 -04:00
laochailan
57be4df75f stage6: make the calabi yau thing a bit nicer 2023-06-16 07:58:48 -04:00
laochailan
8eeafedcfc stage6: nerf wave theory on easy and normal 2023-06-16 07:29:31 -04:00
laochailan
3bb633bb0f stage2: make the fleas more flashy 2023-06-15 07:29:23 -04:00
Andrei Alexeyev
b7d6ff2e8a
stage4: vampiric_vapour: change spawning pattern
Introduce randomization and fix replay desync issue cause by huge value
of exp(i).
2023-06-15 05:53:40 +02:00
laochailan
0ede205dab stage4: more nerfs to the stage pattern 2023-06-14 07:58:24 -04:00
laochailan
aa4f2b4c6e stage6: line up the nonspell 1 shot sounds 2023-06-13 22:21:16 -04:00
laochailan
94e0385ebc stage6: preliminary fix for elly dialog/nonspell scythe control overlap
Before, skipping the dialog after boss_appears but before the scythe task is done would stop the scythe during the first nonspell. This is not the safest fix but seems to work. Better would be to actually wait for the task to be finished.
2023-06-13 22:17:53 -04:00
laochailan
6bacf32c51
stageinfo: rename stages 1 to 3 2023-06-13 04:11:09 +02:00
Andrei Alexeyev
8dd17e4214
stage: fix inverted logic in is_quicksave_allowed 2023-06-11 23:17:13 +02:00
Andrei Alexeyev
6c3f0cf238
stage4: various tweaks 2023-06-11 20:49:28 +02:00
Andrei Alexeyev
8210521c6f
build: use find_program('meson') for dynstage
58aa301acc
2023-06-11 18:11:08 +02:00
laochailan
6b9ec2c703 stage5: nerf fairies 2023-06-10 11:29:40 -04:00
laochailan
6cadd91dcb stage4: nerf various fairies 2023-06-09 22:10:48 -04:00
Andrei Alexeyev
ac8c311a6d
stage6: ricci: hack in a charge effect to telegraph a bit better 2023-06-10 01:19:09 +02:00
Andrei Alexeyev
04258e801a
stage3: light_singularity: use cdir(); hoist out of loop 2023-06-10 00:41:27 +02:00
Andrei Alexeyev
77fa9f647b
stage3: add spin to soul bullets in light_singularity 2023-06-10 00:37:50 +02:00
Andrei Alexeyev
8fb430607b
stage6: add spin to "soul" bullets in lhc 2023-06-10 00:34:23 +02:00
Andrei Alexeyev
3d585f3bef
stage4: spin the "soul" bullets in blow_the_walls 2023-06-10 00:32:19 +02:00
Andrei Alexeyev
27e2573632
stage5: fix limiter_fairy difficulty scaling 2023-06-10 00:27:32 +02:00
laochailan
2f60edc297 stage2: nerf hina second non 2023-06-08 08:29:33 -04:00
laochailan
eec69aaacc stage2: nerf twin-spinshots 2023-06-08 08:14:52 -04:00
Andrei Alexeyev
46e0dccc86
config: set mixer_chunksize to 512
512 is close enough to 400 (sample_rate/(2 * FPS)), so the mixing
callback should run at least once per frame now, improving timing
precision.
2023-06-08 04:34:54 +02:00
Andrei Alexeyev
118e1aae4a
boss: kill all enemies when force-clearing hazards 2023-06-08 02:07:31 +02:00
Andrei Alexeyev
acc7d186be
boss: use unicode … in "Spell Card failed…" 2023-06-08 02:01:26 +02:00
Andrei Alexeyev
6d92fc21cb
boss: remove AT_Immediate
Not used and not very useful
2023-06-08 01:59:52 +02:00
Andrei Alexeyev
f220b99296
boss: disable player collision if attack is inactive or an AT_Move 2023-06-08 01:56:49 +02:00
Andrei Alexeyev
fa7c1489be
credits: unlock bgm when entered 2023-06-08 01:51:01 +02:00
Andrei Alexeyev
9794e45ee5
credits: disable demoplayer 2023-06-08 01:50:28 +02:00
Andrei Alexeyev
f85b37b2a2
menu/savereplay: disable demoplayer 2023-06-08 01:46:39 +02:00
Andrei Alexeyev
f5d70f8398
menu: add MF_NoDemo MenuFlag
Disables the demoplayer while the menu is active
2023-06-08 01:45:48 +02:00
Andrei Alexeyev
5ea56a2314
stage3: slightly nerf logic bomb on easy and normal 2023-06-08 01:06:08 +02:00
Andrei Alexeyev
c28a74b28b
stage3: nerf scuttle's non on easy and normal 2023-06-08 01:03:59 +02:00
Andrei Alexeyev
79151ea3a0
stage3: some easy/normal nerfs (mostly) 2023-06-06 03:20:37 +02:00
laochailan
910e1d4846 stage3: check on aim == 0 instead 2023-06-05 21:15:32 -04:00
laochailan
5942f46581 stage3: clarify the comment 2023-06-05 21:06:55 -04:00
laochailan
d223eb4ab7 stage3: avoid a NaN velocity that caused frozen bullets in wriggle’s non 2023-06-05 21:02:44 -04:00
Alice D
918971e7d7
fix crash in youmu dialog 2023-06-04 00:34:20 -04:00
laochailan
9ad8c895b6
stage4: fix offset in the wrong line 2023-06-03 23:09:50 +02:00
laochailan
3e147af84a
stage4: vampiric_vapour: kill off screen and introduce deflection instead 2023-06-03 23:09:32 +02:00
laochailan
8e47b880fb
stage4: nerf vamp vape 2023-06-03 23:09:32 +02:00
laochailan
00d5fe2a32
stage4: stage pattern rearrangement 2023-06-03 23:09:32 +02:00
laochailan
d4a57ca462
stage4: remaster stage patterns for better flow 2023-06-03 23:09:32 +02:00
laochailan
56e69ecbd5
stage4: adjust vampiric_vapour
same but less trivial. mostly made the projectile live beyond the screen.
2023-06-03 23:09:32 +02:00
laochailan
25cb29f3ce
stage4: modernize animate_wall 2023-06-03 23:09:32 +02:00
laochailan
c681573c64
stage4: add hex and spiral post-mid patterns 2023-06-03 23:09:32 +02:00
laochailan
531e38efd3
stage4: remove unused swirl move task 2023-06-03 23:09:26 +02:00
laochailan
58b50695d9
stage4: fix kurumi background music 2023-06-03 23:03:24 +02:00
laochailan
3aab3d7929
stage4: make laser explosions even nicer 2023-06-03 23:03:24 +02:00
laochailan
ff8941b5dd
stage4: make the death lasers of gold more impressive 2023-06-03 23:03:24 +02:00
laochailan
cce8c1e9f2
stage4: make card busters huge 2023-06-03 23:03:24 +02:00
laochailan
8a6075059d
stage4: make swirl patterns prettier 2023-06-03 23:03:24 +02:00
laochailan
3139e10e8e
stage4: add some charges, revamp some stage patterns 2023-06-03 23:03:24 +02:00
Andrei Alexeyev
398f423c98
dialog/youmu: fix spelling in face reference 2023-06-03 23:02:53 +02:00
Andrei Alexeyev
bb96861fe0
stage6: experimental maxwell remake 2023-06-03 22:56:08 +02:00
Andrei Alexeyev
9f9b81d44f
stage6: tone down the item drops a notch 2023-06-02 22:26:34 +02:00
Andrei Alexeyev
1406f13c49
plrmodes/marisa_a: halve laser dmg after first penetration 2023-06-01 03:45:32 +02:00
Andrei Alexeyev
e753ef9423
plrmodes/marisa_a: nerf base shot dmg; buff lasers 2023-06-01 03:38:24 +02:00
Andrei Alexeyev
c5f4a15ef8
plrmodes/marisa_b: nerf basic shot damage 2023-06-01 03:35:32 +02:00
Andrei Alexeyev
efe1c1ea67
plrmodes/youmu_b: reduce base spirit damage by 33%; increase by 50% when released 2023-06-01 03:20:04 +02:00
Andrei Alexeyev
6fd71081d1
plrmodes/youmu_a: nerf myon's damage a bit 2023-06-01 03:02:24 +02:00
Andrei Alexeyev
02e122c1bd
plrmodes/reimu_b: nerf ofudas, slightly buff needles 2023-06-01 02:59:26 +02:00
Andrei Alexeyev
34c151af4a
plrmodes/reimu_b: lower opacity of needle particles 2023-06-01 02:13:48 +02:00
Andrei Alexeyev
3f9848576b
plrmodes/youmu_a: adjust unfocused myon visuals 2023-05-30 03:55:12 +02:00
Andrei Alexeyev
cb16b36326
plrmodes/youmu_a: remove focused myon distance limit 2023-05-30 03:48:05 +02:00
Andrei Alexeyev
79b162b443
plrmodes/youmu_a: more responsive and precise myon controls 2023-05-30 03:14:25 +02:00
Andrei Alexeyev
9abaf2444d
player: add uncapped_velocity field
Like velocity, but prior to clamping to viewport bounds.
2023-05-30 03:07:23 +02:00
Andrei Alexeyev
08e0060e19
enemy_classes: improve fairy summon effect
Makes it easier to tell when the fairy becomes active
2023-05-29 06:57:55 +02:00
Andrei Alexeyev
736e659bab
stage3: redesign scuttle's spell 2023-05-29 05:06:45 +02:00
Andrei Alexeyev
cf8015c784
boss: add boss_get_sprite_offset()
Useful for synchronizing stuff to the visual boss sprite oscillation
2023-05-29 02:40:44 +02:00
Andrei Alexeyev
0a6b1240bf
stage3: nerf laserballs on normal and hard 2023-05-29 02:19:41 +02:00
Andrei Alexeyev
63ef832031
config: set practice_power to 400 by default 2023-05-29 01:40:46 +02:00
Andrei Alexeyev
3041836f68
config: enable fullscreen by default 2023-05-29 01:37:35 +02:00
Andrei Alexeyev
b3025ad921
cli,main,progress: add --unlock-all flag for dev builds
Permanently unlocks all content
2023-05-29 00:48:50 +02:00
Andrei Alexeyev
6a6a736e74
projectile: fix bullet spawn effects
Broken by 0d77416e3b
2023-05-28 02:08:19 +02:00
Andrei Alexeyev
83708429af
util/geometry: remove bogus attr_pure from rect_join 2023-05-26 02:27:14 +02:00
Andrei Alexeyev
84e44fba12
util/geometry: remove bogus attr_pure from rect_rect_intersection
Causes gcc to miscompile calls to this function, assuming it doesn't
actually write to *out. Breaks ReimuB.
2023-05-26 02:25:00 +02:00
Andrei Alexeyev
192432cc77
stage6: fix gcc warnings 2023-05-26 02:25:00 +02:00
Andrei Alexeyev
ad08ddcd7b
log: fix gcc warnings 2023-05-26 02:25:00 +02:00
Andrei Alexeyev
b233afaaa6
common_tasks: fix gcc warnings 2023-05-26 01:41:41 +02:00
Andrei Alexeyev
0d77416e3b
stage: fix subtle logic order issues
global.frames was being updated at the end of stage_logic(), which is
called by the very first task (stage_comain). This means input and
entity processing code saw a different frame counter value from stage
tasks and end-of-frame processing e.g. replay desync checks. It's not
known yet if this had any significant effect on stage logic, but it
definitely broke the desync detection.

Inlined stage_logic into stage_comain to better reflect its purpose and
place in the call sequence. Moved some things out of it to the true end
of the frame, including the counter update.
2023-05-26 01:21:55 +02:00
Andrei Alexeyev
9051769586
global,stage: remove global.timer
Not used anymore
2023-05-26 00:58:32 +02:00
Andrei Alexeyev
4ff21bdb31
stage5: redesign artificial lightning 2023-05-25 04:54:50 +02:00
Andrei Alexeyev
1f0e4f1cd9
stage5: redesign natural cathode 2023-05-25 04:54:50 +02:00
Andrei Alexeyev
46a4733b90
stage5: redesign atmospheric discharge 2023-05-25 04:54:50 +02:00
Andrei Alexeyev
85dbe55bda
stage5: redesign stage 2023-05-25 04:54:33 +02:00
Andrei Alexeyev
bffe79281c
common_tasks: add common_play_sfx 2023-05-25 04:46:16 +02:00
Andrei Alexeyev
0b6aef74e5
stage6: add summoning effects 2023-05-20 06:14:40 +02:00
Andrei Alexeyev
6b745e4b16
stage3: use summoning effects 2023-05-20 05:45:33 +02:00
Andrei Alexeyev
2307ec77a4
stage2: use summoning effects 2023-05-20 05:30:05 +02:00
Andrei Alexeyev
aeeab82f29
stage1: use summoning effects 2023-05-20 05:07:45 +02:00
Andrei Alexeyev
a842150d6d
main: fix game exiting after intro
Broken by bad copypaste in e6fffc6b5f
2023-05-19 20:17:18 +02:00
Andrei Alexeyev
e75762c520
enemy_classes: draw stronger enemies on top of weaker ones 2023-05-18 23:15:24 +02:00
Andrei Alexeyev
ae595ca50c
enemy_classes: add ecls_anyfairy_summon 2023-05-18 23:15:24 +02:00
Andrei Alexeyev
361d85f28b
enemy_classes: expose basic scale/opacity controls 2023-05-18 21:02:29 +02:00
Andrei Alexeyev
3b1e6cd362
enemy_classes: add ecls_anyenemy_fake3dmovein 2023-05-18 21:02:29 +02:00
Andrei Alexeyev
57f6d3dfd8
enemy,enemy_classes: redesign draw callbacks
Allows to pass arbitrary data to draw callbacks.

Groundwork for alternative fairy spawn animations.
2023-05-18 21:02:29 +02:00
Andrei Alexeyev
907eb8ff4e
stageutils: add camera3d_project 2023-05-18 21:02:29 +02:00
Andrei Alexeyev
a6c9303350
build: add install tags 2023-05-18 21:02:29 +02:00
Andrei Alexeyev
9a476f58e2
resource/font: lots of text rendering improvements
* Consistently use floats in the API and internally; don't round stuff
  arbitrarily.
* Use freetype's "normal" hinting algorithm.
* Implement subpixel positioning to avoid bad glyph spacing at small
  font sizes.
* Improved border control: inner and outer borders can be adjusted
  separately and per-font. (The "inner border" affects the "highlight"
  effect used in some shaders (blue channel)).
* Fix borders causing all glyphs to be misaligned (shifted down-right)
  by a constant offset.
* Various other improvements.
2023-05-12 08:29:26 +02:00
Andrei Alexeyev
18408a46fa
resource/font: implement reloading 2023-05-12 08:29:26 +02:00
Andrei Alexeyev
25f67ffa59
resource: fix init order 2023-05-12 08:29:26 +02:00
Andrei Alexeyev
e6fffc6b5f
cli: add --populate-cache
Searches the VFS for resources and attempts to load them all, then
exits. Intended to fully populate the persistent cache.
2023-05-08 10:05:21 +02:00
Andrei Alexeyev
d21e81e7b6
taskmanager: spawn 2x the core count of threads by default
Because our multithreading code is generally terrible, this seems to
actually measurably improve throughput.
2023-05-08 10:05:21 +02:00
Andrei Alexeyev
18b221d473
taskmanager: use a semaphore for the task queue 2023-05-08 10:05:21 +02:00
Andrei Alexeyev
7133618cb3
resource: fix/simplify unload
Wait for ongoing load to finish before doing anything, and do actual
unload after releasing the ires.
2023-05-08 10:05:21 +02:00
Andrei Alexeyev
ca15faf23c
resource: remove dead code 2023-05-08 10:05:21 +02:00
Andrei Alexeyev
701db8a5ac
resource: init ireses with refcount of 1
Removes the need for dumb extra work of putting the ires into purgatory
only to immediately remove it, and avoids a nasty race condition there.
2023-05-08 10:05:21 +02:00
Andrei Alexeyev
963d21d152
stage: fix resgroup not propagating across quickloads 2023-05-08 10:05:21 +02:00
laochailan
d2ffe0ddce stage6: add subtle bg rotation to make the boss battle more interesting 2023-05-02 20:35:19 -04:00
Andrei Alexeyev
3e91b047bc
resource: fix a bunch of shit that i cbf to explain 2023-04-30 23:13:06 +02:00
Andrei Alexeyev
bb6216e6a0
audio: remove play_sfx_delayed 2023-04-30 20:23:51 +02:00
Andrei Alexeyev
387441adf6
stage5: don't use play_sfx_delayed 2023-04-30 20:20:30 +02:00
Andrei Alexeyev
f8100d0f81
stage6: don't use play_sfx_delayed 2023-04-30 20:15:02 +02:00
Andrei Alexeyev
9dade8ad33
resource: lifetime management redesign (WIP) 2023-04-29 20:01:50 +02:00
Andrei Alexeyev
d7b1ecfd6f
resource: remove res_util_filename 2023-04-29 20:01:50 +02:00