[decompiler] detect cpad-hold? and cpad-pressed? (#986)

* [decompiler] detect `cpad-hold?` and `cpad-pressed?`

* cleanup cpad macro button lookup

* better

* fix
This commit is contained in:
ManDude
2021-12-02 00:41:49 +00:00
committed by GitHub
parent 6a4348287e
commit d845524c23
30 changed files with 308 additions and 355 deletions
+29 -48
View File
@@ -1352,17 +1352,17 @@
)
((= v1-0 4)
(cond
((logtest? (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons up))
((cpad-pressed? 0 up)
(if (> (-> arg1 highlight-index) 0)
(+! (-> arg1 highlight-index) -1)
)
)
((logtest? (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons down))
((cpad-pressed? 0 down)
(if (< (-> arg1 highlight-index) (glst-num-elements (-> arg1 list)))
(+! (-> arg1 highlight-index) 1)
)
)
((logtest? (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons x))
((cpad-pressed? 0 x)
(let ((v1-38 (the-as object (-> arg1 list-owner))))
(set! (-> arg1 current-index) (-> arg1 the-index))
(set!
@@ -1372,7 +1372,7 @@
)
(send-event (ppointer->process *anim-tester*) 'reset #f)
)
((logtest? (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons square))
((cpad-pressed? 0 square)
(logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons square))
(logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons square))
(set! (-> *debug-menu-context* is-hidden) #f)
@@ -1492,7 +1492,7 @@
)
((= arg0 4)
(cond
((logtest? (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons up))
((cpad-pressed? 0 up)
(let ((v1-15 (-> arg1 list)))
"is the list empty, #t = empty"
(when (not (= (-> v1-15 tailpred) v1-15))
@@ -1523,7 +1523,7 @@
)
(label cfg-25)
)
((logtest? (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons down))
((cpad-pressed? 0 down)
(let ((v1-21 (-> arg1 list)))
"is the list empty, #t = empty"
(when (not (= (-> v1-21 tailpred) v1-21))
@@ -1558,7 +1558,7 @@
)
(else
(cond
((logtest? (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons x))
((cpad-pressed? 0 x)
(set! (-> arg1 current-index) (-> arg1 the-index))
(set!
(-> (the-as anim-test-obj v1-0) anim-index)
@@ -1574,7 +1574,7 @@
)
(send-event (ppointer->process *anim-tester*) 'change-anim #f)
)
((logtest? (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons square))
((cpad-pressed? 0 square)
(logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons square))
(logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons square))
(set! (-> *debug-menu-context* is-hidden) #f)
@@ -1700,7 +1700,7 @@
)
((= arg0 4)
(cond
((logtest? (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons up))
((cpad-pressed? 0 up)
(let ((v1-17 (-> arg1 list)))
"is the list empty, #t = empty"
(when (not (= (-> v1-17 tailpred) v1-17))
@@ -1734,7 +1734,7 @@
)
(label cfg-28)
)
((logtest? (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons down))
((cpad-pressed? 0 down)
(let ((v1-23 (-> arg1 list)))
"is the list empty, #t = empty"
(when (not (= (-> v1-23 tailpred) v1-23))
@@ -1768,7 +1768,7 @@
)
(label cfg-42)
)
((logtest? (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons x))
((cpad-pressed? 0 x)
(set! (-> arg1 current-index) (-> arg1 the-index))
(set! (-> v1-0 seq-index) (-> arg1 current-index))
(set! (-> v1-0 seq-hindex) (-> arg1 highlight-index))
@@ -1776,7 +1776,7 @@
(set! (-> *anim-tester* 0 edit-mode) 4)
(send-event (ppointer->process *anim-tester*) 'change-anim #f)
)
((logtest? (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons square))
((cpad-pressed? 0 square)
(logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons square))
(logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons square))
(set! (-> *debug-menu-context* is-hidden) #f)
@@ -1860,7 +1860,7 @@
;; definition for function anim-tester-adjust-frame
(defun anim-tester-adjust-frame ((arg0 float) (arg1 float))
(cond
((logtest? (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons down))
((cpad-hold? 0 down)
(cond
((= arg0 (-> (new 'static 'array float 1 -2.0) 0))
(set! arg0 (+ (-> (new 'static 'array float 1 -1.0) 0) arg1))
@@ -1873,7 +1873,7 @@
)
)
)
((logtest? (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons up))
((cpad-hold? 0 up)
(cond
((= arg0 (-> (new 'static 'array float 1 -1.0) 0))
(set! arg0 (-> (new 'static 'array float 1 0.0) 0))
@@ -2246,7 +2246,7 @@
(cond
((zero? v1-88)
(cond
((logtest? (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons x))
((cpad-pressed? 0 x)
(set!
(-> *anim-tester* 0 flags)
(logand -9 (-> *anim-tester* 0 flags))
@@ -2280,10 +2280,7 @@
)
)
)
((logtest?
(-> *cpad-list* cpads 0 button0-rel 0)
(pad-buttons square)
)
((cpad-pressed? 0 square)
(set!
(-> *anim-tester* 0 flags)
(logand -9 (-> *anim-tester* 0 flags))
@@ -2301,7 +2298,7 @@
(logand -9 (-> *anim-tester* 0 flags))
)
)
((logtest? (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons up))
((cpad-pressed? 0 up)
(let ((v1-124 (the-as anim-test-seq-item gp-0)))
"return the previous node in the list"
(let* ((s3-1 (-> v1-124 prev))
@@ -2326,7 +2323,7 @@
)
)
)
((logtest? (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons down))
((cpad-pressed? 0 down)
(let ((v1-142 (the-as anim-test-seq-item gp-0)))
"return the next node in the list"
(let* ((s3-2 (the-as anim-test-seq-item (-> v1-142 next)))
@@ -2378,20 +2375,14 @@
(case (-> *anim-tester* 0 item-field)
((1)
(cond
((logtest?
(-> *cpad-list* cpads 0 button0-abs 0)
(pad-buttons down)
)
((cpad-hold? 0 down)
(+! (-> (the-as anim-test-seq-item gp-0) speed) -10)
(anim-test-seq-mark-as-edited (the-as anim-test-sequence s4-0))
(if (< (-> (the-as anim-test-seq-item gp-0) speed) -300)
(set! (-> (the-as anim-test-seq-item gp-0) speed) -300)
)
)
((logtest?
(-> *cpad-list* cpads 0 button0-abs 0)
(pad-buttons up)
)
((cpad-hold? 0 up)
(+! (-> (the-as anim-test-seq-item gp-0) speed) 10)
(anim-test-seq-mark-as-edited (the-as anim-test-sequence s4-0))
(if (< 1000 (-> (the-as anim-test-seq-item gp-0) speed))
@@ -2402,10 +2393,7 @@
)
((2)
(cond
((logtest?
(-> *cpad-list* cpads 0 button0-abs 0)
(pad-buttons down)
)
((cpad-hold? 0 down)
(+! (-> (the-as anim-test-seq-item gp-0) blend) -1)
(anim-test-seq-mark-as-edited (the-as anim-test-sequence s4-0))
(when (< (-> (the-as anim-test-seq-item gp-0) blend) 0)
@@ -2413,10 +2401,7 @@
0
)
)
((logtest?
(-> *cpad-list* cpads 0 button0-abs 0)
(pad-buttons up)
)
((cpad-hold? 0 up)
(+! (-> (the-as anim-test-seq-item gp-0) blend) 1)
(anim-test-seq-mark-as-edited (the-as anim-test-sequence s4-0))
(if (< 9999 (-> (the-as anim-test-seq-item gp-0) blend))
@@ -2459,11 +2444,7 @@
(+! (-> *anim-tester* 0 inc-timer) -1)
)
)
(when
(or
(logtest? (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons down))
(logtest? (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons up))
)
(when (or (cpad-pressed? 0 down) (cpad-pressed? 0 up))
(set! (-> *anim-tester* 0 inc-delay) (-> *DISP_LIST-bank* INC_DELAY))
(set! (-> *anim-tester* 0 inc-timer) 0)
0
@@ -2474,12 +2455,12 @@
)
(else
(cond
((logtest? (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons up))
((cpad-pressed? 0 up)
(if (> (-> arg1 highlight-index) 0)
(+! (-> arg1 highlight-index) -1)
)
)
((logtest? (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons down))
((cpad-pressed? 0 down)
(if
(<
(the-as int (the-as anim-test-seq-item (-> arg1 highlight-index)))
@@ -2488,7 +2469,7 @@
(+! (-> arg1 highlight-index) 1)
)
)
((logtest? (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons left))
((cpad-pressed? 0 left)
(+! (-> *anim-tester* 0 item-field) -1)
(if (< (-> *anim-tester* 0 item-field) 0)
(set! (-> *anim-tester* 0 item-field) 11)
@@ -2497,7 +2478,7 @@
(set! (-> *anim-tester* 0 item-field) 5)
)
)
((logtest? (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons right))
((cpad-pressed? 0 right)
(+! (-> *anim-tester* 0 item-field) 1)
(when (>= (-> *anim-tester* 0 item-field) 12)
(set! (-> *anim-tester* 0 item-field) 0)
@@ -2507,13 +2488,13 @@
(set! (-> *anim-tester* 0 item-field) 9)
)
)
((logtest? (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons square))
((cpad-pressed? 0 square)
(logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons square))
(logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons square))
(set! (-> *anim-tester* 0 edit-mode) 3)
(logior! (-> *anim-tester* 0 flags) 4)
)
((logtest? (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons x))
((cpad-pressed? 0 x)
(cond
((logtest? (-> (the-as anim-test-seq-item gp-0) flags) 1)
(let ((v1-318 (-> *anim-tester* 0 item-field)))
+1 -1
View File
@@ -8981,7 +8981,7 @@
(defun menu-respond-to-pause ()
(case *master-mode*
(('menu)
(if (logtest? (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons l3))
(if (cpad-hold? 0 l3)
(debug-menu-context-send-msg
*popup-menu-context*
(debug-menu-msg activate)
+9 -11
View File
@@ -595,17 +595,15 @@
)
)
(when *stats-memory-short*
(let
((s2-2
(if (logtest? (-> *cpad-list* cpads 1 button0-abs 0) (pad-buttons l3))
#t
arg1
)
)
(s3-2 format)
(s1-1 "heap-~5,'-DK/~5,'-DK----~D---~D/~D~%")
(s0-1 (sar (memory-used *nk-dead-pool*) 10))
)
(let ((s2-2 (if (cpad-hold? 1 l3)
#t
arg1
)
)
(s3-2 format)
(s1-1 "heap-~5,'-DK/~5,'-DK----~D---~D/~D~%")
(s0-1 (sar (memory-used *nk-dead-pool*) 10))
)
(set! sv-80 (sar (memory-total *nk-dead-pool*) 10))
(let ((t0-1 (compact-time *nk-dead-pool*))
(t1-1 (-> *nk-dead-pool* compact-count))
+14 -23
View File
@@ -1723,7 +1723,7 @@
(debug-menu-context-release-joypad a0-1)
)
(set! (-> arg0 grabbed-joypad-p) #f)
(when (logtest? (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons circle))
(when (cpad-pressed? 0 circle)
(cond
((-> arg0 float-p)
(if (-> arg0 factivate-func)
@@ -1766,28 +1766,19 @@
)
)
((or
(logtest? (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons right))
(logtest? (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons left))
(logtest? (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons down))
(logtest? (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons up))
(cpad-hold? 0 right)
(cpad-hold? 0 left)
(cpad-hold? 0 down)
(cpad-hold? 0 up)
)
(let ((v1-39 (cond
((logtest?
(-> *cpad-list* cpads 0 button0-abs 0)
(pad-buttons right)
)
((cpad-hold? 0 right)
10
)
((logtest?
(-> *cpad-list* cpads 0 button0-abs 0)
(pad-buttons up)
)
((cpad-hold? 0 up)
1
)
((logtest?
(-> *cpad-list* cpads 0 button0-abs 0)
(pad-buttons down)
)
((cpad-hold? 0 down)
-1
)
(else
@@ -2103,7 +2094,7 @@
;; definition for function debug-menus-default-joypad-func
(defun debug-menus-default-joypad-func ((arg0 debug-menu-context))
(cond
((logtest? (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons square))
((cpad-pressed? 0 square)
(cond
((< 1 (-> arg0 sel-length))
(debug-menu-context-close-submenu arg0)
@@ -2112,19 +2103,19 @@
)
)
)
((logtest? (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons x))
((cpad-pressed? 0 x)
(debug-menu-context-activate-selection arg0)
)
((logtest? (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons up))
((cpad-pressed? 0 up)
(debug-menu-context-select-new-item arg0 -1)
)
((logtest? (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons down))
((cpad-pressed? 0 down)
(debug-menu-context-select-new-item arg0 1)
)
((logtest? (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons left))
((cpad-pressed? 0 left)
(debug-menu-context-select-new-item arg0 -5)
)
((logtest? (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons right))
((cpad-pressed? 0 right)
(debug-menu-context-select-new-item arg0 5)
)
)