decomp: mood (#672)

* decomp: Almost finished `mood`, but confused over the `mood-context` type!

* only function that remains involves vftoi / ppach instructions

* stash

* decomp: fix inline array access issue

* decomp: finalize `mood`

* linting
This commit is contained in:
Tyler Wilding
2021-08-01 16:11:22 -04:00
committed by GitHub
parent 9c9579aef3
commit d400ec3b2d
17 changed files with 7956 additions and 140 deletions
+2 -2
View File
@@ -284,7 +284,7 @@ void try_reverse_lookup_inline_array(const FieldReverseLookupInput& input,
const_idx_node.token.kind = FieldReverseLookupOutput::Token::Kind::CONSTANT_IDX;
const_idx_node.token.idx = elt_idx;
if (offset_into_elt == 0 && !input.deref.has_value()) {
if (offset_into_elt == 0 && !input.deref.has_value() && !input.stride) {
// just get an element (possibly zero, and we want to include the 0 if so)
// for the degenerate inline-array case, it seems more likely that we get the zeroth object
// rather than the array, so this goes before that case.
@@ -296,7 +296,7 @@ void try_reverse_lookup_inline_array(const FieldReverseLookupInput& input,
}
// can we just return the array?
if (offset_into_elt == 0 && !input.deref.has_value() && elt_idx == 0) {
if (offset_into_elt == 0 && !input.deref.has_value() && elt_idx == 0 && !input.stride) {
auto parent_vec = parent_to_vector(parent);
if (!parent_vec.empty()) {
output->results.emplace_back(false, input.base_type, parent_to_vector(parent));
+106 -107
View File
@@ -788,9 +788,9 @@
(game-options #x127)
(graphic-options #x128)
(sound-options #x129)
(hidden-power-cell #x12f) ;; why is this here??
(continue-without-saving #x13f)
(back #x13e)
(load-game #x14b)
@@ -800,7 +800,7 @@
(ok #x15e)
(exit-demo #x15f)
(quit-game #x16f)
(village1-mayor-money #x200)
(vollage1-uncle-money #x201)
(village1-yakow-herd #x202)
@@ -825,43 +825,43 @@
(misty-return-to-pool #x215) ;; task name??
(misty-find-transpad #x216) ;; task name?
(misty-balloon-lurkers #x217)
(village1-level-name #x220)
(beach-level-name #x221)
(jungle-level-name #x222)
(misty-level-name #x223)
(beach-seagull-get #x22e)
(jungle-lurkerm-unblock #x22f)
(jungle-lurkerm-return #x230)
(MISSING-orb-hint #x233)
(beach-gimmie #x262)
(beach-sentinel #x263)
(jungle-canyon-end #x264)
(jungle-temple-door #x265)
(misty-bike-jump #x266)
(misty-eco-challenge #x267)
(village2-gambler-money #x300)
(village2-geologist-money #x301)
(village2-warrior-money #x302)
(village2-oracle-money #x303)
(swamp-tether #x304)
(swamp-flutflut #x307)
(swamp-billy #x309)
(sunken-elevator-raise #x30a)
(sunken-elevator-get-to-roof #x30b)
(sunken-pipe #x30c)
(sunken-climb-tube #x30d) ;; task name?
(sunken-pool #x30e) ;; task name?
(sunken-platforms #x30f)
(rolling-moles #x310)
(rolling-moles-return #x311)
(rolling-robbers #x312)
@@ -869,22 +869,22 @@
(rolling-race-return #x314)
(rolling-lake #x315)
(rolling-plants #x316)
(unknown-buzzers #x317)
(village2-level-name #x319)
(rolling-level-name #x31b)
(swamp-level-name #x31c)
(sunken-level-name #x31d)
(ogre-level-name #x31e)
(swamp-battle #x321)
(sunken-bottom #x322) ;; task name?
(reach-center #x323) ;; task name?
(rolling-ring-chase-1 #x324)
(rolling-ring-chase-2 #x325)
(village3-miner-money #x400)
(village3-oracle-money #x401)
(snow-ram-3-left #x402)
@@ -893,58 +893,58 @@
(snow-fort #x405)
(snow-bunnies #x406)
(snow-open-door #x408) ;; task name?
(cave-robot-climb #x40e)
(cave-dark-climb #x40f) ;; destroy crystals
(cave-gnawers #x410)
(cave-dark-crystals #x411)
(village3-buzzer #x413)
(village3-level-name #x415)
(snowy-level-name #x417)
(cave-level-name #x419)
(lavatube-level-name #x41b)
(snow-eggtop #x421)
(cave-spider-tunnel #x423)
(cave-platforms #x424)
(cave-swing-poles #x426)
(snow-frozen-crate #x42b) ;; task name?
(snow-bumpers #x42c)
(fire-canyon-end #x500)
(fire-canyon-buzzer #x501)
(fire-canyon-level-name #x50c)
(ogre-end #x600)
(ogre-buzzer #x601)
(ogre-boss #x603)
(lavatube-end #x700)
(lavatube-buzzer #x701)
(citadel-buzzer #x800)
(citadel-level-name #x801)
(citadel-sage-blue #x802)
(citadel-sage-red #x803)
(citadel-sage-yellow #x804)
(citadel-sage-green #x805)
(training-gimmie-task-name #x91b)
(training-buzzer-task-name #x91c)
(training-door-task-name #x91d)
(training-climb-task-name #x91e)
(training-level-name #x91f)
(inc #xf10)
(europe #xf11)
)
@@ -2192,7 +2192,7 @@
(point-toward-point! (_type_ vector) quaternion 12)
(seek-toward-yaw-angle! (_type_ float float int) quaternion 13)
(set-yaw-angle-clear-roll-pitch! (_type_ float) quaternion 14)
(set-roll-to-grav! (_type_ float) quaternion 15)
(set-roll-to-grav-2! (_type_ float) quaternion 16)
(rotate-toward-orientation! (_type_ quaternion float float) quaternion 17)
@@ -6417,7 +6417,7 @@
)
(deftype light-volume (basic)
((light-array basic :offset-assert 4)
((light-array light-array :offset-assert 4)
)
:method-count-assert 9
:size-assert #x8
@@ -7182,6 +7182,7 @@
(itimes vector4w 4 :inline :offset-assert 1856)
(state uint8 16 :offset-assert 1920)
(num-stars float :offset-assert 1936)
(some-byte uint8 :offset 1939)
)
(:methods
(new (symbol type) _type_ 0)
@@ -9817,7 +9818,7 @@
(dist meters :offset-assert 84)
(control float :offset-assert 88)
(angle basic :offset-assert 92)
(rotate-to degrees :offset-assert 96)
(rotate-to degrees :offset-assert 96)
(prev-state basic :offset-assert 100)
)
:method-count-assert 10
@@ -11393,6 +11394,7 @@
;; - Types
(declare-type sidekick basic)
(deftype target (process-drawable)
((control control-info :score 100 :offset 112)
(skel2 basic :offset-assert 176)
@@ -11402,8 +11404,8 @@
(state-hook-time uint64 :offset-assert 192)
(state-hook function :offset-assert 200)
(cam-user-mode symbol :offset-assert 204)
(sidekick uint32 :offset-assert 208)
(manipy uint32 :offset-assert 212)
(sidekick (pointer sidekick) :offset-assert 208)
(manipy (pointer manipy) :offset-assert 212)
(attack-info attack-info :inline :offset-assert 224)
(attack-info-rec attack-info :inline :offset-assert 336)
(anim-seed uint64 :offset-assert 440)
@@ -15407,7 +15409,7 @@
;;(define-extern *use-generic* object) ;; unknown type
(define-extern *merc-global-array* merc-global-array) ;; unknown type
;;(define-extern *bones-first* object) ;; unknown type
;;(define-extern *default-shadow-settings* object) ;; unknown type
(define-extern *default-shadow-settings* shadow-settings)
;; ----------------------
@@ -16906,75 +16908,72 @@
;; - Functions
(define-extern clear-mood-times function)
(define-extern update-mood-quick function)
(define-extern update-mood-flames function)
(define-extern update-mood-light function)
(define-extern target-joint-pos function)
(define-extern update-mood-itimes function)
(define-extern update-mood-fog (function mood-fog mood-lights-table none))
(define-extern update-mood-sky-texture function)
(define-extern update-mood-palette function)
(define-extern update-mood-interp function)
(define-extern update-mood-lightning function)
(define-extern update-mood-lava function)
(define-extern update-light-kit function)
(define-extern set-target-light-index function)
(define-extern update-mood-caustics function)
(define-extern update-mood-jungleb-blue function)
(define-extern update-mood-prt-color function)
(define-extern update-mood-default function)
(define-extern update-mood-misty function)
(define-extern update-mood-village2 function)
(define-extern update-mood-swamp function)
(define-extern update-mood-village1 function)
(define-extern update-mood-jungle function)
(define-extern update-mood-jungleb function)
(define-extern update-mood-sunken function)
(define-extern update-mood-rolling function)
(define-extern update-mood-firecanyon function)
(define-extern update-mood-training function)
(define-extern update-mood-maincave function)
(define-extern update-mood-darkcave function)
(define-extern update-mood-robocave function)
(define-extern update-mood-snow function)
(define-extern update-mood-village3 function)
(define-extern update-mood-lavatube function)
(define-extern update-mood-ogre function)
(define-extern update-mood-finalboss function)
(define-extern update-mood-citadel function)
(define-extern clear-mood-times (function mood-context symbol))
(define-extern update-mood-quick (function mood-context int int int int vector))
(define-extern update-mood-flames (function mood-context int int int float float float none))
(define-extern update-mood-light (function mood-context int int int float float float int none))
(define-extern target-joint-pos (function vector)) ;; TODO - unconfirmed
(define-extern update-mood-itimes (function mood-context none)) ;; TODO - implement VFTOI12 and PPACH
(define-extern update-mood-fog (function mood-context float vector))
(define-extern update-mood-sky-texture (function mood-context float vector))
(define-extern update-mood-palette (function mood-context float int float))
(define-extern update-mood-interp (function mood-context mood-context mood-context float none))
(define-extern update-mood-lightning (function mood-context int int int int float symbol none)) ;; TODO - asm - ret not verified
(define-extern update-mood-lava (function mood-context float int symbol none))
(define-extern update-light-kit (function light-group light float float))
(define-extern set-target-light-index (function int int))
(define-extern update-mood-caustics (function mood-context int int float)) ;; TODO - double check
(define-extern update-mood-jungleb-blue (function mood-context float int vector))
(define-extern update-mood-prt-color (function mood-context vector))
(define-extern update-mood-default (function mood-context float int none))
(define-extern update-mood-misty (function mood-context float float none))
(define-extern update-mood-village2 (function mood-context float int none))
(define-extern update-mood-swamp (function mood-context float int none))
(define-extern update-mood-village1 (function mood-context float int none))
(define-extern update-mood-jungle (function mood-context float int none))
(define-extern update-mood-jungleb (function mood-context float int none))
(define-extern update-mood-sunken (function mood-context float int none))
(define-extern update-mood-rolling (function mood-context float int none))
(define-extern update-mood-firecanyon (function mood-context float int none))
(define-extern update-mood-training (function mood-context float int none))
(define-extern update-mood-maincave (function mood-context float int none))
(define-extern update-mood-darkcave (function mood-context float int none))
(define-extern update-mood-robocave (function mood-context float int none))
(define-extern update-mood-snow (function mood-context float int none)) ;; TODO - weirdness with `state` on `mood-context`
(define-extern update-mood-village3 (function mood-context float int none))
(define-extern update-mood-lavatube (function mood-context float int none))
(define-extern update-mood-ogre (function mood-context float int none))
(define-extern update-mood-finalboss (function mood-context float int none))
(define-extern update-mood-citadel (function mood-context float int none))
;; - Symbols
(define-extern *time-of-day-proc* (pointer time-of-day-proc))
;; - Unknowns
;;(define-extern *lightning-time2* object) ;; unknown type
;;(define-extern *rolling-spheres-on* object) ;; unknown type
;;(define-extern *rolling-spheres-light0* object) ;; unknown type
;;(define-extern *rolling-spheres-light1* object) ;; unknown type
;;(define-extern *rolling-spheres-light2* object) ;; unknown type
;;(define-extern *rolling-spheres-light3* object) ;; unknown type
;;(define-extern *rolling-spheres-light4* object) ;; unknown type
;;(define-extern *flash0* object) ;; unknown type
;;(define-extern *flash1* object) ;; unknown type
;;(define-extern *flash2* object) ;; unknown type
;;(define-extern *flash3* object) ;; unknown type
;;(define-extern *flash4* object) ;; unknown type
;;(define-extern *flash5* object) ;; unknown type
;;(define-extern *flash6* object) ;; unknown type
;;(define-extern *flash7* object) ;; unknown type
;;(define-extern *lightning-index* object) ;; unknown type
;;(define-extern *lightning-time* object) ;; unknown type
;;(define-extern *lightning-frame-done* object) ;; unknown type
;;(define-extern *lightning-realtime-done* object) ;; unknown type
;;(define-extern *thunder-id0* object) ;; unknown type
;;(define-extern *thunder-id1* object) ;; unknown type
;;(define-extern *thunder-id2* object) ;; unknown type
;;(define-extern *thunder-id* object) ;; unknown type
;;(define-extern *thunder-count* object) ;; unknown type
;;(define-extern *lava-time* object) ;; unknown type
(define-extern *lightning-time2* float) ;; TODO - guess
(define-extern *rolling-spheres-on* (inline-array vector)) ;; 11 vectors
(define-extern *rolling-spheres-light0* vector) ;; TODO - what is going on here...
(define-extern *rolling-spheres-light1* (inline-array vector)) ; TODO - what is going on here...
(define-extern *rolling-spheres-light2* light-ellipse)
(define-extern *rolling-spheres-light3* (inline-array vector))
(define-extern *rolling-spheres-light4* vector) ;; TODO - what is going on here...
(define-extern *flash0* (array float))
(define-extern *flash1* (array float))
(define-extern *flash2* (array float))
(define-extern *flash3* (array float))
(define-extern *flash4* (array float))
(define-extern *flash5* (array float))
(define-extern *flash6* (array float))
(define-extern *flash7* (array float))
(define-extern *lightning-index* int)
(define-extern *lightning-time* float) ;; a guess, might be uint (useconds)
(define-extern *lightning-frame-done* symbol)
(define-extern *lightning-realtime-done* symbol)
(define-extern *thunder-id0* sound-id)
(define-extern *thunder-id1* sound-id)
(define-extern *thunder-id2* sound-id)
(define-extern *thunder-id* sound-id)
(define-extern *thunder-count* int)
(define-extern *lava-time* int) ;; TODO - guess
;; ----------------------
@@ -1343,6 +1343,64 @@
["L99", "float", true]
],
"mood": [
["L256", "vector", true],
["L257", "vector", true],
["L258", "vector", true],
["L259", "vector", true],
["L260", "vector", true],
["L261", "vector", true],
["L262", "(inline-array vector)", true, 2],
["L263", "light-ellipse", true],
["L264", "(inline-array vector)", true, 4],
["L265", "vector", true],
["L266", "(inline-array vector)", true, 11],
["L267", "vector", true],
["L268", "vector", true],
["L269", "vector", true],
["L270", "vector", true],
["L271", "vector", true],
["L272", "vector", true],
["L273", "vector", true],
["L274", "vector", true],
["L275", "vector", true],
["L276", "vector", true],
["L277", "vector", true],
["L278", "vector", true],
["L279", "vector", true],
["L287", "(array float)", true],
["L286", "(array float)", true],
["L285", "(array float)", true],
["L284", "(array float)", true],
["L283", "(array float)", true],
["L282", "(array float)", true],
["L281", "(array float)", true],
["L280", "(array float)", true],
["L290", "float", true],
["L291", "float", true],
["L392", "float", true],
["L393", "float", true],
["L404", "float", true],
["L419", "float", true],
["L420", "float", true],
["L421", "float", true],
["L429", "float", true],
["L450", "float", true],
["L452", "float", true],
["L453", "float", true],
["L454", "float", true],
["L455", "float", true],
["L460", "float", true],
["L461", "float", true],
["L463", "float", true],
["L465", "float", true],
["L471", "float", true],
["L480", "float", true],
["L494", "float", true],
["L497", "float", true],
["L508", "float", true]
],
// please do not add things after this entry! git is dumb.
"object-file-that-doesnt-actually-exist-and-i-just-put-this-here-to-prevent-merge-conflicts-with-this-file": []
}
@@ -720,5 +720,81 @@
[48, "vector"]
],
"(anon-function 28 task-control)": [[16, "event-message-block"]],
"update-mood-prt-color": [
[16, "vector"]
],
"update-mood-swamp": [
[16, "vector"]
],
"update-mood-village1": [
[16, "vector"]
],
"update-mood-maincave": [
[16, "vector"]
],
"update-mood-ogre": [
[16, "vector"]
],
"update-mood-finalboss": [
[16, "vector"],
[32, "vector"]
],
"update-mood-darkcave": [
[16, "vector"],
[32, "vector"]
],
"update-mood-citadel": [
[16, "vector"],
[32, "vector"],
[48, "vector"],
[64, "vector"],
[80, "vector"],
[96, "vector"],
[112, "vector"],
[128, "vector"]
],
"update-mood-jungleb": [
[16, "vector"],
[32, "vector"],
[48, "vector"]
],
"update-mood-sunken": [
[16, "vector"],
[32, "vector"],
[48, "vector"],
[64, "vector"]
],
"update-mood-village2": [
[16, "vector"],
[32, "vector"],
[48, "vector"],
[64, "vector"]
],
"update-mood-rolling": [
[16, "vector"] // TODO - really not sure about this one
],
"update-mood-village3": [
[16, "vector"],
[32, "vector"],
[48, "vector"],
[64, "vector"],
[80, "vector"],
[96, "vector"]
],
"placeholder-do-not-add-below!": []
}
@@ -1647,5 +1647,48 @@
[[54, 58], "t9", "(function object object)"]
],
"update-mood-village3": [
[[236, 245], "s0", "(array float)"],
[245, "s0", "(array int8)"],
[[246, 297], "s0", "(array float)"],
[[297, 309], "s0", "(array uint8)"],
[[309, 314], "s0", "matrix"] // TODO - there is no way this is correct lol
],
"update-mood-citadel": [
[291, "s5", "(pointer float)"],
[298, "s5", "(pointer float)"],
[300, "s5", "(pointer float)"],
[304, "s5", "(pointer float)"],
[307, "s5", "(pointer float)"],
[318, "s5", "(pointer float)"]
],
"update-mood-finalboss": [
[40, "s4", "(pointer int64)"],
[44, "s4", "(pointer int64)"],
[174, "s4", "(pointer int64)"],
[251, "s4", "(pointer int64)"],
[255, "s4", "(pointer int64)"],
[347, "s4", "(pointer int64)"]
],
"update-mood-ogre": [
[57, "s4", "(pointer float)"],
[64, "s4", "(pointer float)"],
[90, "s4", "(pointer float)"],
[92, "s4", "(pointer float)"],
[95, "s4", "(pointer float)"],
[98, "s4", "(pointer float)"],
[100, "s4", "(pointer float)"],
[105, "s4", "(pointer float)"],
[144, "s4", "(pointer float)"]
],
"update-mood-snow": [
[93, "s5", "vector"],
[110, "s5", "vector"]
],
"placeholder-do-not-add-below": []
}
File diff suppressed because it is too large Load Diff
+3
View File
@@ -125,3 +125,6 @@
)
(define-extern vu-lights<-light-group! (function vu-lights light-group none))
;; TODO - for mood
(define-extern *default-shadow-settings* shadow-settings)
+2
View File
@@ -136,3 +136,5 @@
(defun-extern on symbol process)
(defun-extern off int)
(define-extern set-master-mode (function symbol none))
(define-extern paused? (function symbol))
+1 -1
View File
@@ -54,7 +54,7 @@
)
(deftype light-volume (basic)
((light-array basic :offset-assert 4)
((light-array light-array :offset-assert 4)
)
:method-count-assert 9
:size-assert #x8
+4 -3
View File
@@ -82,10 +82,11 @@
(itimes vector4w 4 :inline :offset-assert 1856)
(state uint8 16 :offset-assert 1920)
(num-stars float :offset-assert 1936)
(some-byte uint8 :offset 1939)
)
(:methods
(new (symbol type) _type_ 0)
)
(:methods
(new (symbol type) _type_ 0)
)
:method-count-assert 9
:size-assert #x794
:flag-assert #x900000794
+2
View File
@@ -111,3 +111,5 @@
(define *time-of-day-mode* 8) ;; flags? enum?
(define *time-of-day-context* (new 'static 'time-of-day-context))
;; TODO for mood
(define-extern *time-of-day-proc* (pointer time-of-day-proc))
+6 -2
View File
@@ -6,6 +6,7 @@
;; dgos: GAME, ENGINE
;; definition of type target
(declare-type sidekick basic)
(deftype target (process-drawable)
((control control-info :score 100 :offset 112)
(skel2 basic :offset-assert 176)
@@ -15,8 +16,8 @@
(state-hook-time uint64 :offset-assert 192)
(state-hook function :offset-assert 200)
(cam-user-mode symbol :offset-assert 204)
(sidekick uint32 :offset-assert 208)
(manipy uint32 :offset-assert 212)
(sidekick (pointer sidekick) :offset-assert 208)
(manipy (pointer manipy) :offset-assert 212)
(attack-info attack-info :inline :offset-assert 224)
(attack-info-rec attack-info :inline :offset-assert 336)
(anim-seed uint64 :offset-assert 440)
@@ -62,3 +63,6 @@
(defun-extern stop symbol int)
(defun-extern start symbol continue-point target)
;; TODO - for mood
(define-extern target-joint-pos (function vector)) ;; TODO - unconfirmed
File diff suppressed because it is too large Load Diff
@@ -95,7 +95,7 @@
;; definition of type light-volume
(deftype light-volume (basic)
((light-array basic :offset-assert 4)
((light-array light-array :offset-assert 4)
)
:method-count-assert 9
:size-assert #x8
@@ -138,6 +138,7 @@
(itimes vector4w 4 :inline :offset-assert 1856)
(state uint8 16 :offset-assert 1920)
(num-stars float :offset-assert 1936)
(some-byte uint8 :offset 1939)
)
:method-count-assert 9
:size-assert #x794
@@ -3,30 +3,30 @@
;; definition of type target
(deftype target (process-drawable)
((control control-info :offset 112)
(skel2 basic :offset-assert 176)
(racer basic :offset-assert 180)
(game game-info :offset-assert 184)
(neck joint-mod :offset-assert 188)
(state-hook-time uint64 :offset-assert 192)
(state-hook function :offset-assert 200)
(cam-user-mode symbol :offset-assert 204)
(sidekick uint32 :offset-assert 208)
(manipy uint32 :offset-assert 212)
(attack-info attack-info :inline :offset-assert 224)
(attack-info-rec attack-info :inline :offset-assert 336)
(anim-seed uint64 :offset-assert 440)
(alt-cam-pos vector :inline :offset-assert 448)
(snowball basic :offset-assert 464)
(tube basic :offset-assert 468)
(flut basic :offset-assert 472)
(current-level level :offset-assert 476)
(saved-pos transformq :inline :offset-assert 480)
(saved-owner uint64 :offset-assert 528)
(alt-neck-pos vector :inline :offset-assert 544)
(fp-hud uint64 :offset-assert 560)
(no-load-wait uint64 :offset-assert 568)
(no-look-around-wait uint64 :offset-assert 576)
((control control-info :offset 112)
(skel2 basic :offset-assert 176)
(racer basic :offset-assert 180)
(game game-info :offset-assert 184)
(neck joint-mod :offset-assert 188)
(state-hook-time uint64 :offset-assert 192)
(state-hook function :offset-assert 200)
(cam-user-mode symbol :offset-assert 204)
(sidekick (pointer sidekick) :offset-assert 208)
(manipy (pointer manipy) :offset-assert 212)
(attack-info attack-info :inline :offset-assert 224)
(attack-info-rec attack-info :inline :offset-assert 336)
(anim-seed uint64 :offset-assert 440)
(alt-cam-pos vector :inline :offset-assert 448)
(snowball basic :offset-assert 464)
(tube basic :offset-assert 468)
(flut basic :offset-assert 472)
(current-level level :offset-assert 476)
(saved-pos transformq :inline :offset-assert 480)
(saved-owner uint64 :offset-assert 528)
(alt-neck-pos vector :inline :offset-assert 544)
(fp-hud uint64 :offset-assert 560)
(no-load-wait uint64 :offset-assert 568)
(no-look-around-wait uint64 :offset-assert 576)
)
:heap-base #x1e0
:method-count-assert 21
+4
View File
@@ -81,6 +81,10 @@ const std::unordered_set<std::string> g_functions_expected_to_reject = {
// collide-mesh-h
"(method 11 collide-mesh-cache)", // asm
// mood
"update-mood-lava", // asm
"update-mood-lightning", // asm
"debug-menu-item-var-render" // asm
};