profile
viewpoint
Stephen Hicks shicks Google Sunnyvale, CA I create because it pleases the Author of my story. If this bothers you, your idea of Authorship needs revision, but you can use these anyway. [adapting L.Wall]

google/styleguide 29706

Style guides for Google-originated open-source projects

crystalis-randomizer/crystalis-randomizer 9

Randomizer for the NES game Crystalis

shicks/gravity 2

A simple orbital simulator game, written in Javascript/SVG.

shicks/hsgame 2

network game framework

shicks/bolympus 1

Battle of Olympus Password Generator

shicks/bridgesheets 1

A collection of resources for teaching bridge

shicks/config 1

My personal configuration files

shicks/dog 1

toy game server

shicks/23 0

Analysis script for 23andMe results.

shicks/alacritty 0

A cross-platform, GPU-accelerated terminal emulator

push eventcrystalis-randomizer/crystalis-randomizer

GitHub Actions

commit sha 5eea414ea9d7f1db9a1cabea87c45170cfb6156c

Release latest 07e5799

view details

push time in 3 days

push eventcrystalis-randomizer/crystalis-randomizer

Stephen Hicks

commit sha 856e3716d94259f1cb135eb982b49b12040cdd12

fix some random broken bits

view details

Stephen Hicks

commit sha 07e579947744f89ebc36cc32bc53c14b79c1b613

make sword color match element

view details

push time in 3 days

Pull request review commentcrystalis-randomizer/crystalis-randomizer

[WIP] Enemy HP bar

 MaybeSetCheckpointActual:   .byte $20,$20,$1f     ;  _ _ |  .org $bb1b-  .byte $20             ;  _-.org $bb1f ; clear out the experience count thats there initially-.repeat 16+  .byte $82             ; Ey+; clear out the experience count thats there initially+; and make room for something like enemy name+.repeat 11   .byte $20 ;  _ .endrep+  ; hold spots here for the enemy hp amount+  .byte $20,$20,$20,$9d ; _ _ _ /+  .byte $20,$20,$20,$20 ; _ _ _ _

Thoughts about not displaying enemy's MaxHP? It would simplify the code quite a bit and removes some extra clutter from the HUD. If you attention to the first hit, you can see (more or less) what it was.

jroweboy

comment created time in 3 days

Pull request review commentcrystalis-randomizer/crystalis-randomizer

[WIP] Enemy HP bar

 MaybeSetCheckpointActual:   .byte $20,$20,$1f     ;  _ _ |  .org $bb1b-  .byte $20             ;  _-.org $bb1f ; clear out the experience count thats there initially-.repeat 16+  .byte $82             ; Ey+; clear out the experience count thats there initially+; and make room for something like enemy name+.repeat 11

What do you think about putting the number on the left and allowing the name to go more in the bottom-middle? I feel like that gives a better separation between the player's stats and the enemy stats.

jroweboy

comment created time in 3 days

Pull request review commentcrystalis-randomizer/crystalis-randomizer

[WIP] Enemy HP bar

 ActivateOpelStatue = $b9b0   .segment "1a"         ; 34000+

Can you move this block to above all the segment-specific addresses?

jroweboy

comment created time in 3 days

Pull request review commentcrystalis-randomizer/crystalis-randomizer

[WIP] Enemy HP bar

 ShouldRedisplayDifficulty = $61ff SelectedConsumableIndex = $642c SelectedQuestItemIndex  = $642e +ObjectMaxHPLo = $6a00

Oh man, we really gotta get HP back to a single byte...

jroweboy

comment created time in 3 days

Pull request review commentcrystalis-randomizer/crystalis-randomizer

[WIP] Enemy HP bar

 DataTable_362ac ;;; This is called by $3cd28 using $4a0,x:7f as the index. ;;; Note that entries $60..$6f are on a different page. ;;; STRIP: word=$2c000-ObjectActionJumpTable+ Table

This seems like a step backwards?

jroweboy

comment created time in 3 days

PullRequestReviewEvent
PullRequestReviewEvent

Pull request review commentcrystalis-randomizer/crystalis-randomizer

[WIP] Enemy HP bar

 Do16BitSubtractionForEXP:     jsr SubtractEnemyHP      bcc KillObject     lsr+    jmp UpdateEnemyHP+    ;implicit rts+;;; NOTE: must finish before 35152+FREE_UNTIL $9152++.reloc+UpdateEnemyHP:     lda $62     rol     sta ObjectDef,y-    rts-;;; NOTE: must finish before 35152-FREE_UNTIL $9152+    sty LastAttackedEnemyOffset+    jmp UpdateEnemyHPDisplay

I don't think this runs on a vanilla tink - can we add this there, too?

jroweboy

comment created time in 3 days

Pull request review commentcrystalis-randomizer/crystalis-randomizer

[WIP] Enemy HP bar

 Do16BitSubtractionForEXP:   .byte $00 .popseg +;;; ----------------------------------------------------+; [in] y - Offset for the current enemy we are displaying health for+.reloc+UpdateEnemyHPDisplay:+  ; We scratch x so save it before running+  txa+  pha+    lda ObjectHP, y+    tax+    lda ObjectDef, y+    ; mask off all but the lowest bit (since the enemy HP is only 9bits right now)+    and #$01+    cpx RecentEnemyCurrHPLo+    bne ++    cmp RecentEnemyCurrHPHi+    bne ++    beq CheckMax ; unconditional++   ; A = enemy curr hp hi, x = enemy curr hp lo+    sta RecentEnemyCurrHPHi+    txa+    sta RecentEnemyCurrHPLo+    tya+    pha+      lda #DISPLAY_NUMBER_ENEMYHP+      jsr DisplayNumberInternal+    pla+    tay+CheckMax:

Can you make this a local label? (I think it's an @-prefix, but I don't remember exactly)

jroweboy

comment created time in 3 days

Pull request review commentcrystalis-randomizer/crystalis-randomizer

[WIP] Enemy HP bar

 ObjectExp = $520 ; starting at zero and counting up to ExpToNextLevel, it will start at ExpToNextLevel ; and count down. PlayerExp = $704+LastAttackedEnemyOffset = $706 ; replaces PlayerMaxExp

Is there another place for this that would make more sense? (I don't have anything in particular in mind, but I think there's some free space out in PRG RAM)

jroweboy

comment created time in 3 days

Pull request review commentcrystalis-randomizer/crystalis-randomizer

[WIP] Enemy HP bar

 ActivateOpelStatue = $b9b0   .segment "1a"         ; 34000++; Constants used in DisplayNumberInternal for the NumericDisplays LUT+; These are including the overrides done in the randomizer

Can you clarify which ones are vanilla and which are overrides? (and which are moved?)

jroweboy

comment created time in 3 days

push eventcrystalis-randomizer/crystalis-randomizer

GitHub Actions

commit sha 5189554efe1508071984044385dbf3654c426f9c

Release latest a50ec8b

view details

push time in 5 days

push eventcrystalis-randomizer/crystalis-randomizer

Stephen Hicks

commit sha a50ec8b54a95b77e87b1cf26742b367999689549

fix unused import error

view details

push time in 5 days

push eventcrystalis-randomizer/crystalis-randomizer

Stephen Hicks

commit sha 7d00870c6701d5f56d9f122c9407b055d0339b1b

Fix flag name/text for Wa

view details

push time in 5 days

push eventcrystalis-randomizer/crystalis-randomizer

Stephen Hicks

commit sha 31171b1bd8167f54a022b19d2375e2ecb5c927a4

work towards area shuffle

view details

Stephen Hicks

commit sha db4e3e38d85c0e6df97e866bd3cb21d57e867925

iterate with markOutside

view details

Stephen Hicks

commit sha 3aa15cd2e074fd592c322c96c4e89e6901d928a2

lots of progress on area shuffle

view details

Stephen Hicks

commit sha b8db2663e812b12d5e2f55db01415aad3dc7063d

Incremental progress. NO_SQ=1

view details

Stephen Hicks

commit sha c12711c66c68ab5c019f333112d32a219c0bc1c3

work on closing other exits to sealed and prison caves

view details

Stephen Hicks

commit sha c00095a4057b56da500c9d8972ad58c59bc00fb0

fix up some of the closed-cave exits

view details

Stephen Hicks

commit sha 20346ded9b13b12ff8daf24cbcd860c863433317

Remove tracker html Replaces it with a note to use CodeGorilla's EmoTracker package, or else an older version of the web tracker (with a link to 1.2.4).

view details

push time in 5 days

push eventcrystalis-randomizer/crystalis-randomizer

Stephen Hicks

commit sha 20346ded9b13b12ff8daf24cbcd860c863433317

Remove tracker html Replaces it with a note to use CodeGorilla's EmoTracker package, or else an older version of the web tracker (with a link to 1.2.4).

view details

push time in 5 days

push eventcrystalis-randomizer/crystalis-randomizer

Stephen Hicks

commit sha 10c0b4b52e45c969a5cc2d1794a6fa75d246ed6e

bump package-lock.json versions

view details

Stephen Hicks

commit sha f86231c5cdbe0a6f7cb4561b6f2712052b629d9b

Fix kirisa plant trade-in bug This was a really subtle issue that can rarely show up when a W?t roll takes multiple attempts to complete. If an earlier roll shuffled trade-ins then we wrote a different item as "must be a girl to use" directly to PRG data. If a later attempt succeeds _without_ shuffling trade-ins, then the wrong item will still require Change. It turns out this doesn't actually break the logic (we correctly account for it) but it's unintended and surprising behavior that should be fixed. In general, we should avoid writing directly to the PRG data before randomization is complete.

view details

Stephen Hicks

commit sha b5239b351931661c74f14b667269309b563473c9

Avoid writing directly to PRG data mid-shuffle A previous commit already cleaned up the worst offender (Aryllis trade-in), but we were also doing this for the slime-angering element. This has now been moved to `ObjectData.write()` where it belongs, and a brief note added to the boss-shuffle scratch code that's not actually in use currently.

view details

Stephen Hicks

commit sha 31171b1bd8167f54a022b19d2375e2ecb5c927a4

work towards area shuffle

view details

Stephen Hicks

commit sha db4e3e38d85c0e6df97e866bd3cb21d57e867925

iterate with markOutside

view details

Stephen Hicks

commit sha 3aa15cd2e074fd592c322c96c4e89e6901d928a2

lots of progress on area shuffle

view details

Stephen Hicks

commit sha b8db2663e812b12d5e2f55db01415aad3dc7063d

Incremental progress. NO_SQ=1

view details

Stephen Hicks

commit sha c12711c66c68ab5c019f333112d32a219c0bc1c3

work on closing other exits to sealed and prison caves

view details

Stephen Hicks

commit sha c00095a4057b56da500c9d8972ad58c59bc00fb0

fix up some of the closed-cave exits

view details

push time in 5 days

push eventcrystalis-randomizer/crystalis-randomizer

GitHub Actions

commit sha 41a4cf9c78d45c4e439aa1cde2936b87bbc2ed28

Release latest b5239b3

view details

push time in 5 days

push eventcrystalis-randomizer/crystalis-randomizer

Stephen Hicks

commit sha 10c0b4b52e45c969a5cc2d1794a6fa75d246ed6e

bump package-lock.json versions

view details

Stephen Hicks

commit sha f86231c5cdbe0a6f7cb4561b6f2712052b629d9b

Fix kirisa plant trade-in bug This was a really subtle issue that can rarely show up when a W?t roll takes multiple attempts to complete. If an earlier roll shuffled trade-ins then we wrote a different item as "must be a girl to use" directly to PRG data. If a later attempt succeeds _without_ shuffling trade-ins, then the wrong item will still require Change. It turns out this doesn't actually break the logic (we correctly account for it) but it's unintended and surprising behavior that should be fixed. In general, we should avoid writing directly to the PRG data before randomization is complete.

view details

Stephen Hicks

commit sha b5239b351931661c74f14b667269309b563473c9

Avoid writing directly to PRG data mid-shuffle A previous commit already cleaned up the worst offender (Aryllis trade-in), but we were also doing this for the slime-angering element. This has now been moved to `ObjectData.write()` where it belongs, and a brief note added to the boss-shuffle scratch code that's not actually in use currently.

view details

push time in 5 days

pull request commentmicrosoft/TypeScript-DOM-lib-generator

DOM lib: Add support for Trusted Types API

Either way, this needs to take advantage of the new differently-typed getter/setter feature in order to be properly backwards-compatible. For example,

interface Element {
  get outerHTML(): string;
  set outerHTML(html: string|TrustedHTML);
}
tosmolka

comment created time in 8 days

issue commentmicrosoft/TypeScript

DOM lib: Add support for Trusted Types API

microsoft/TypeScript-DOM-lib-generator#1246 is backward-incompatible and will break a bunch of existing code. The fix is to only widen the type on writing, while leaving the read type the same:

interface Element {
  get outerHTML(): string;
  set outerHTML(html: string|TrustedHTML);
}
koto

comment created time in 8 days

pull request commentmicrosoft/TypeScript-DOM-lib-generator

DOM lib: Add support for Trusted Types API

My understanding is that there are polyfill options for other browsers, making appropriate typings still pretty important.

tosmolka

comment created time in 8 days

issue commenttc39/proposal-pipeline-operator

Bikeshedding the Hack topic token

@ljharb I used "may" in the table because it depends on the symbol and is potentially quite subjective. There was a lot of discussion about difficulty typing ^ in some keyboard layouts, as well as about confusion parsing ^^^. Other symbols may be easier to type, but that doesn't change the fact that there's been a lot of discussion upthread about the visual weight of different symbols, and their size compared to traditional identifiers - this is clearly a heavily subjective thing, and what's easy for you may not be so easy for others.

js-choi

comment created time in 12 days

issue commenttc39/proposal-pipeline-operator

Bikeshedding the Hack topic token

@bpartridge wrote

It's worth noting that various TC39 members have expressed intention to block both anything that could be a valid identifier, as well as identifiers prefixed with the @ symbol [...]

@noppa wrote

@ljharb has made it clear that any valid identifier won't get through so I'm not going to argue for that now. [...] You could pick a word that has literally never been written in code and it still wouldn't get through, or so I've understood.

I guess my point is that people can be convinced to change their minds. As opinions currently stand, yes, there is very strong objection to any valid identifier. And that's led us to a very convoluted and unsatisfying discussion where we're looking at every sort of hideous and unreadable combination of special characters, the use of which will essentially gobble up all syntax space for basically every other possible use sharing the same character, due to the fact that it's being treated as an identifier, which (rightfully) occupy a very large syntax space. So while there absolutely do exist alternatives, they are all very expensive (in terms of comprehensibility and future syntax space, at least). I'm not at all arguing that there's no cost to co-opt a valid identifier (there absolutely is), but just suggesting that compared with the cost of introducing a non-identifier syntax for the placeholder, it may be a better choice given the trade-offs.

I'll try to summarize what I see as the pros/cons here:

Pros Cons
Identifier Concise<br>Readable<br>Easy to type May shadow vars from outer scope[1]<br>May cause confusion
Symbols Hopefully easy to spot Uses up a lot of future syntax space<br>May be difficult to mentally parse<br>May be difficult to type

Footnote: [1] shadowing will already also necessarily happen with nested pipelines even if symbols are used (i.e. the placeholder symbol in an inner pipeline no longer refers to the topic from the outer pipeline), and is already a part of the language (i.e. functions and block-scoped variables can both shadow outside names, and this is already implicitly shadowed in various contexts), and thus refactoring tooling already needs to be able to handle it - so this is not actually a new refactoring hazard.

I'm not trying to make a straw man here - if my trade-off assessment is missing something important, please let me know. All I'm saying is that I'm surprised how highly some key stakeholders seem to be valuing this particular cost so that the trade-offs come out in favor of symbols over identifiers, and so I'd really like to understand what my analysis is missing. I agree we have a bunch of bad options in front of us, but it's not clear to me that summarily dismissing one of them is serving us well.

js-choi

comment created time in 12 days

push eventshicks/www.brieandsteve.com

Stephen Hicks

commit sha f3f7cd2a1c07e694de1216714e294b75c6023c00

move doctype into layout

view details

push time in 22 days

push eventshicks/www.brieandsteve.com

Stephen Hicks

commit sha 47e5c6888f2e45a8bea88ef5aa54b8d03d9490a2

factor out common CSS

view details

Stephen Hicks

commit sha 45760e2ca410b57100e0039a665095ddf79000ed

Merge branch 'main' of github.com:shicks/www.brieandsteve.com

view details

push time in 22 days

push eventshicks/www.brieandsteve.com

Stephen Hicks

commit sha 8b730485ad108223703120786132be12e0cb5b65

add GA tracking

view details

push time in 22 days

push eventshicks/www.brieandsteve.com

Stephen Hicks

commit sha 681027ef8ab460fef7abeaabaeaed703854c0285

add GA tracking

view details

push time in 22 days

more