Commit Graph

146 Commits

Author SHA1 Message Date
04779ede71 Readd Kistaro's level 15 with more visual polish 2022-12-30 15:35:33 -08:00
a5f1eea577 Add a prettier tileset (#16)
Tileset fuckery

First servicable

Better, black BG

Redo crate graphics

Make debug wall a less confusing color

Redo first few levels

Do another level!

Tile the whole intro

Merge branch 'main' into tiles (bad)

Fix bad merge

Co-authored-by: Nyeogmi <economicsbat@gmail.com>
Reviewed-on: pyrex/chameleonic#16
2022-12-30 04:12:39 +00:00
1629749857 Merge branch 'intro_sequence' into level-29 2022-12-29 15:09:29 -08:00
77a174f8c3 Merge branch 'main' into intro_sequence 2022-12-29 15:09:19 -08:00
8393b9d2f2 Fix more known rope bugs 2022-12-29 14:54:08 -08:00
5c7f48baf5 Bullshitty puzzle in slot 29 2022-12-28 21:57:08 -08:00
cec52623eb
mini-puzzle in room 14
I feel like there's a way to build on this theme. I think this is the minimal version of the puzzle; I'd be glad to remove elements if it turns out I can.
2022-12-28 20:38:20 -08:00
f25b41a1c1 Proposed full tutorial 2022-12-28 18:11:41 -08:00
a1f9617842 Fix can_move constants to remove path dependence 2022-12-28 13:23:34 -08:00
812d619cc7 can_move golf, redux (#14)
previous attempt tried to use shifts to get 0.4 to 0.2 or 0.8 and multiplication to get -0.8, forgetting that the multiplication would also turn 0.4 into 0 along the way. oops. I got ratholed on the mathematical approach, but a very straightforward lookup table can get more done.

Reviewed-on: pyrex/chameleonic#14
Co-authored-by: Kistaro Windrider <kistaro@gmail.com>
Co-committed-by: Kistaro Windrider <kistaro@gmail.com>
2022-12-28 21:12:23 +00:00
ad9d53887e Revert one broken golf attempt 2022-12-23 17:33:06 -08:00
9438597312 Save a few more tokens by removing an assertion 2022-12-23 16:09:57 -08:00
c480295b41 Save some tokens in horrible, horrible ways. (#13)
replace comparisons with bit math bullshit

integers in the range [0, 15] fit entirely in the bit mask 0x000F. integers out of that range will have at least one bit 0x0010 or higher, or will have the sign bit 0x8000 set. so to find out if one of two numbers is out of range [0, 15], we can check the bit mask of their bitwise or.

this saves tokens and cycles. it is also completely illegible. very in the spirit of Pico-8, I love it.

comment the bullshit

it needs it

packed crate representation

don't bother exploding crates into four bools, and then comparing them all individually to a bunch of conditions. absurd bit manipulation bullshit saves cycles and tokens. leaving a crate's movement rule represented as four bits means we can exploit our previous calculation of dx1 and dy1, which must each either be 0x0001 or 0x8FFF, and violently hammer them down to align with this bit-packed representation, giving this glorious little atrocity.

Fix crate math.

I forgot that -1 & 1 = 1 rather than 0 so all the bit math didn't work. But I can fix it with polynomial algebra! this is much better.

Save tokens on movemebnt checks

I promise this is mathematically equivalent-ish to the original. (0.2 and its multiples are nonterminating decimals in base 2, so there's a little jank when the negative shift right is a shift left.)

Trimming

Trim up redundant nil checks, sequential assignments that could be on a shared line, and repeated references to a deeply nested variable.

Reviewed-on: pyrex/chameleonic#13
Co-authored-by: Kistaro Windrider <kistaro@gmail.com>
Co-committed-by: Kistaro Windrider <kistaro@gmail.com>
2022-12-24 00:08:10 +00:00
8f65f884f2 Less annoying music 2022-12-23 16:05:38 -08:00
10948ce4a5 Turn off debug again for now 2022-12-22 19:24:41 -08:00
cf352fd918 Golf one thing on rope 2022-12-22 19:23:41 -08:00
930e27a8e3 Golf player a bit 2022-12-22 19:22:23 -08:00
ae7dc8374e Golf level slightly 2022-12-22 19:07:43 -08:00
9fbccee378 Golf level selector 2022-12-22 18:52:54 -08:00
137a390b65 Golf tostring() 2022-12-22 18:51:05 -08:00
58bf1d70bf Golf keyboard 2022-12-22 18:49:03 -08:00
1be4846698 Golf _rast 2022-12-22 18:42:44 -08:00
ed25ef0f94 Golf sgn0 2022-12-22 18:35:24 -08:00
94e4aea20b Golf _apply 2022-12-22 18:33:48 -08:00
2d565873b3 Golf linefill slightly more 2022-12-22 18:32:14 -08:00
f3a0b04cc4 Golf linefill 2022-12-22 18:30:05 -08:00
d782f6eb14 Fix another rope bug 2022-12-22 11:25:31 -08:00
791b49934f Add another case I missed 2022-12-21 21:55:21 -08:00
197c68dd88 Actually, that special case causes unnecessary rope shortening 2022-12-21 21:40:16 -08:00
4072499c4c This case shouldn't need to be special 2022-12-21 21:37:26 -08:00
e2334f55f7 Allow reeling in 2022-12-21 19:54:09 -08:00
6658f71ba2 Correct when the rope crashes into the other side of something 2022-12-21 19:12:21 -08:00
672f1b3951 Hint text for certain levels 2022-12-21 18:11:19 -08:00
a27cc2e6ef Re-center rope 2022-12-21 17:50:06 -08:00
0606c0417f New crate sprites 2022-12-20 23:22:27 -08:00
838214c5c5 Prototype tutorial (#12)
Prototype tutorial starting at level 10 using existing mechanics.

Reviewed-on: pyrex/chameleonic#12
Co-authored-by: Kistaro Windrider <kistaro@gmail.com>
Co-committed-by: Kistaro Windrider <kistaro@gmail.com>
2022-12-21 07:22:11 +00:00
6be3fd51b0 Player can only walk into pit if they want to 2022-12-20 21:57:22 -08:00
d2ee3d2078 Rewrite rope (#11)
Rope rewrite, part one

We should only care about anchors on the old path

Add comment expressing uncertainty

Add further algo notes

One final note

Well, this is closer to right!!

Elide points as needed

Save current changes

First version I couldn't immediately break

Everything _seems_ to work

Clean up some residual messes

Tidy up more loose ends

Co-authored-by: Nyeogmi <economicsbat@gmail.com>
Reviewed-on: pyrex/chameleonic#11
2022-12-21 05:44:15 +00:00
27692ba208 Cache for collision checks 2022-12-19 21:36:11 -08:00
f67b617a78 Turn off debug info by default 2022-12-19 18:14:07 -08:00
d62cb15547 Use same rule to touch as to elide 2022-12-19 18:13:18 -08:00
74ac91fdeb Misc additional rope physics changes 2022-12-19 18:01:02 -08:00
40859065df Also wrongbleep for tonguing the air 2022-12-19 16:53:11 -08:00
5831cdf4e8 Remove old flash-prevention code 2022-12-19 16:39:30 -08:00
2cdbb3d3f5 Bleep on wrong actions 2022-12-19 16:38:21 -08:00
b897f748be Revise controls 1 2022-12-19 16:25:38 -08:00
bcdce7fd2b Get rid of angle constraints 2022-12-19 16:02:15 -08:00
3e0ea841b9 Create a sandbox level in slot 8. (#10)
Reviewed-on: pyrex/chameleonic#10
Co-authored-by: Kistaro Windrider <kistaro@gmail.com>
Co-committed-by: Kistaro Windrider <kistaro@gmail.com>
2022-12-19 08:35:48 +00:00
426a404feb Fix level coordinate calculation. (#9)
Also adds a placeholder level 8, which will eventually become my general physics experimentation box and I'll start making levels in 9 and later.

Reviewed-on: pyrex/chameleonic#9
Co-authored-by: Kistaro Windrider <kistaro@gmail.com>
Co-committed-by: Kistaro Windrider <kistaro@gmail.com>
2022-12-19 08:29:54 +00:00
de9ad4fe34 level chooser and dotted lines for levels. (#8)
Add "dotted lines" spacing out level placement in the map. Also crudely drawn ID numbers.

Write a crappy level selector for debug/dev purposes.

Reviewed-on: pyrex/chameleonic#8
Co-authored-by: Kistaro Windrider <kistaro@gmail.com>
Co-committed-by: Kistaro Windrider <kistaro@gmail.com>
2022-12-19 07:57:36 +00:00
6e97d16222 label tabs (#6)
Reviewed-on: pyrex/chameleonic#6
Co-authored-by: Kistaro Windrider <kistaro@gmail.com>
Co-committed-by: Kistaro Windrider <kistaro@gmail.com>
2022-12-19 07:33:07 +00:00
47e1a80489 Recolor hooks 2022-12-18 18:59:45 -08:00
9f3438d281 How'd that typo get in there??? 2022-12-18 18:49:02 -08:00
4bb8612f75 Lower-token way to prevent flicker 2022-12-18 18:42:13 -08:00
14e37ba9dd Prevent highlight flicker for rope 2022-12-18 18:41:17 -08:00
8d37dbef80 Fix rope bugs I introduced 2022-12-18 18:31:06 -08:00
64ef489c2a Fix more rope bugs 2022-12-18 18:14:15 -08:00
456796beca Widen some angle tolerances, based on testing 2022-12-18 18:00:59 -08:00
35638b39cd Reinstate Price is Right typography 2022-12-18 17:53:13 -08:00
1968c6a739 Turn off debugging info by default again 2022-12-18 17:51:35 -08:00
546e5f2e07 More rope bugs 2022-12-18 17:47:28 -08:00
d76699c56e Fix another rope bug 2022-12-18 17:37:00 -08:00
37db329b08 Fix rope bug in pull code 2022-12-18 17:20:59 -08:00
d3583c27b4 Require pullers to be somewhat aligned with what they pull 2022-12-18 17:10:18 -08:00
e985c29e02 Fix yet another rope bug 2022-12-18 16:50:19 -08:00
5a0b8ab73d More rope fixes 2022-12-18 16:46:46 -08:00
d2e1e9274c Fix misc other rope bugs 2022-12-18 16:07:15 -08:00
97e580e7db Sorta working 2022-12-18 15:18:07 -08:00
581e345e31 More rope refactors 2022-12-18 14:53:58 -08:00
16aba34869 Some music 2022-12-17 23:25:42 -08:00
cc5c5f5e4d Well, let's try again 2022-12-17 22:26:33 -08:00
5dde3441e4 Replace Price is Right typography? 2022-12-17 22:21:02 -08:00
8b13b0e01a New title screen 2022-12-17 21:36:25 -08:00
3256babffd Don't vanish just on withdrawing tongue 2022-12-17 20:41:43 -08:00
5dc8e2c10d Fix sample level 2022-12-17 20:39:58 -08:00
8814edbdd4 Title screen, keyboard 2022-12-17 20:38:49 -08:00
06e09bfc2e Tongue anim and state machine 2022-12-17 20:10:01 -08:00
0821ae2bd7 Replace multiple pal calls with a single pal-table call, or some pokes. (#5)
Reviewed-on: pyrex/chameleonic#5
Co-authored-by: Kistaro Windrider <kistaro@gmail.com>
Co-committed-by: Kistaro Windrider <kistaro@gmail.com>
2022-12-18 02:24:42 +00:00
a0da322c3d Implement levels:anchor_in as a generator. (#4)
This gets rid of the (substantial!) overhead of preparing a list and then iterating over it, in exchange for a bit of bookkeeping to simulate the prior behavior of the for loop, which is much cheaper.

Reviewed-on: pyrex/chameleonic#4
Co-authored-by: Kistaro Windrider <kistaro@gmail.com>
Co-committed-by: Kistaro Windrider <kistaro@gmail.com>
2022-12-18 01:46:30 +00:00
db157b7952 Assorted micro-optimizations. (#3)
Some of these are pure token optimizations, some spend tokens for performance. Function calls are particularly expensive in Pico-8, so using the table form of `pal` whenever changing multiple colors seems worth it.

Also fixes a bug in palette swapping.

Reviewed-on: pyrex/chameleonic#3
Co-authored-by: Kistaro Windrider <kistaro@gmail.com>
Co-committed-by: Kistaro Windrider <kistaro@gmail.com>
2022-12-18 01:11:42 +00:00
823b3edc30 Reorient head based on tongue angle 2022-12-17 16:57:47 -08:00
047f180632 Use trans flag colors for the chameleon 2022-12-17 16:42:15 -08:00
8a88131d1e Immediately recover after a fall 2022-12-17 16:26:30 -08:00
99744a31d6 Chameleon FX to restart the level 2022-12-17 16:25:20 -08:00
d0eba82c7b Save a handful of tokens and fix indentation. (#2)
Reviewed-on: pyrex/chameleonic#2
Co-authored-by: Kistaro Windrider <kistaro@gmail.com>
Co-committed-by: Kistaro Windrider <kistaro@gmail.com>
2022-12-17 23:51:50 +00:00
0ff3065585 Working pits 2022-12-17 15:48:52 -08:00
11e33d0109 Fix some tiny level transition bugs 2022-12-17 15:15:56 -08:00
671e4a5051 Map and art changes, level transition 2022-12-17 15:08:54 -08:00
517c185688 Avoid recalculating operation names repeatedly. (#1)
Reviewed-on: pyrex/chameleonic#1
Co-authored-by: Kistaro Windrider <kistaro@gmail.com>
Co-committed-by: Kistaro Windrider <kistaro@gmail.com>
2022-12-17 22:58:56 +00:00
f7170428c9 Attempts to make this fast keep breaking things 2022-12-17 14:09:54 -08:00
770b952fe4 Move in bigger hops while dragging 2022-12-17 13:52:37 -08:00
29d86556ca Again, reduce the level of useless work 2022-12-17 13:45:46 -08:00
13e6c382be My fat bresenham implementation is really slow 2022-12-17 13:30:48 -08:00
a20ad44f75 Faster anchor search in some common cases 2022-12-17 13:24:54 -08:00
a8b921e05b Simplify rope recalculator (still slow) 2022-12-17 13:19:43 -08:00
429706dae9 Current state of code 2022-12-17 12:16:26 -08:00