update some physics code (#347)

* move commonly used scripts to specific folders

* fixes

* Update test.sh

* Update test.sh

* Fix file permission

* move commonly used scripts to specific folders

* fixes

* Update test.sh

* Update test.sh

* Fix file permission

* scripts to annoy me less

* [dynamics-h] clean-up

* make things neat

* more cleanup

* update surface-h

* fix error

* fix typo

* Spoonfeed the compiler

* [surface-h] rename sqrt to sqrtf
This commit is contained in:
ManDude 2021-03-29 23:30:58 +01:00 committed by GitHub
parent 0a76e6e157
commit 7867de8fd7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 839 additions and 845 deletions

View file

@ -7659,12 +7659,12 @@
;; dynamics-h
(deftype dynamics (basic)
((name basic :offset-assert 4)
(gravity-max float :offset-assert 8) ;; meters
(gravity-length float :offset-assert 12) ;; meters
(gravity-max float :offset-assert 8) ;; meters
(gravity-length float :offset-assert 12) ;; meters
(gravity vector :inline :offset-assert 16)
(gravity-normal vector :inline :offset-assert 32)
(walk-distance float :offset-assert 48) ;meters
(run-distance float :offset-assert 52) ; meters
(walk-distance float :offset-assert 48) ;; meters
(run-distance float :offset-assert 52) ;; meters
)
:method-count-assert 9
:size-assert #x38
@ -7718,57 +7718,57 @@
(define-extern surface-interp! (function surface surface surface float surface))
;;(define-extern standard object) ;; unknown type
;;(define-extern *edge-surface* object) ;; unknown type
;;(define-extern *uppercut-jump-mods* object) ;; unknown type
;;(define-extern *forward-pole-jump-mods* object) ;; unknown type
;;(define-extern *flip-jump-mods* object) ;; unknown type
(define-extern *edge-surface* surface) ;; unknown type
(define-extern *uppercut-jump-mods* surface) ;; unknown type
(define-extern *forward-pole-jump-mods* surface) ;; unknown type
(define-extern *flip-jump-mods* surface) ;; unknown type
(define-extern surface-clamp-speed (function surface surface surface int none))
;;(define-extern *flop-mods* object) ;; unknown type
(define-extern *flop-mods* surface) ;; unknown type
(define-extern surface type)
;;(define-extern *smack-jump-mods* object) ;; unknown type
;;(define-extern *dive-mods* object) ;; unknown type
;;(define-extern *swim-surface* object) ;; unknown type
(define-extern *smack-jump-mods* surface) ;; unknown type
(define-extern *dive-mods* surface) ;; unknown type
(define-extern *swim-surface* surface) ;; unknown type
(define-extern calc-terminal2-vel (function float float float float float))
;;(define-extern *wade-surface* object) ;; unknown type
;;(define-extern *jump-mods* object) ;; unknown type
;;(define-extern *turn-around-mods* object) ;; unknown type
;;(define-extern *jump-attack-mods* object) ;; unknown type
;;(define-extern *grass-surface* object) ;; unknown type
;;(define-extern *dive-bottom-mods* object) ;; unknown type
;;(define-extern *tread-surface* object) ;; unknown type
(define-extern *wade-surface* surface) ;; unknown type
(define-extern *jump-mods* surface) ;; unknown type
(define-extern *turn-around-mods* surface) ;; unknown type
(define-extern *jump-attack-mods* surface) ;; unknown type
(define-extern *grass-surface* surface) ;; unknown type
(define-extern *dive-bottom-mods* surface) ;; unknown type
(define-extern *tread-surface* surface) ;; unknown type
(define-extern surface-mult! (function surface surface surface surface))
;;(define-extern *forward-high-jump-mods* object) ;; unknown type
;;(define-extern *double-jump-mods* object) ;; unknown type
(define-extern *forward-high-jump-mods* surface) ;; unknown type
(define-extern *double-jump-mods* surface) ;; unknown type
;;(define-extern edge-grab object) ;; unknown type
;;(define-extern *high-jump-mods* object) ;; unknown type
;;(define-extern *ice-surface* object) ;; unknown type
;;(define-extern *grab-mods* object) ;; unknown type
;;(define-extern *run-attack-mods* object) ;; unknown type
;;(define-extern *quicksand-surface* object) ;; unknown type
;;(define-extern *walk-no-turn-mods* object) ;; unknown type
(define-extern *high-jump-mods* surface) ;; unknown type
(define-extern *ice-surface* surface) ;; unknown type
(define-extern *grab-mods* surface) ;; unknown type
(define-extern *run-attack-mods* surface) ;; unknown type
(define-extern *quicksand-surface* surface) ;; unknown type
(define-extern *walk-no-turn-mods* surface) ;; unknown type
(define-extern calc-terminal-vel (function float float float float))
;;(define-extern *duck-mods* object) ;; unknown type
;;(define-extern *duck-attack-mods* object) ;; unknown type
;;(define-extern *slope-surface* object) ;; unknown type
(define-extern *duck-mods* surface) ;; unknown type
(define-extern *duck-attack-mods* surface) ;; unknown type
(define-extern *slope-surface* surface) ;; unknown type
(define-extern calc-terminal4-vel (function float float float float))
;;(define-extern *edge-grab-mods* object) ;; unknown type
;;(define-extern *standard-ground-surface* object) ;; unknown type
;;(define-extern *flop-land-mods* object) ;; unknown type
;;(define-extern *wheel-mods* object) ;; unknown type
;;(define-extern *swim-mods* object) ;; unknown type
(define-extern *edge-grab-mods* surface) ;; unknown type
(define-extern *standard-ground-surface* surface) ;; unknown type
(define-extern *flop-land-mods* surface) ;; unknown type
(define-extern *wheel-mods* surface) ;; unknown type
(define-extern *swim-mods* surface) ;; unknown type
(define-extern *walk-mods* surface) ;; unknown type
;;(define-extern *attack-mods* object) ;; unknown type
;;(define-extern *neutral-mods* object) ;; unknown type
(define-extern *attack-mods* surface) ;; unknown type
(define-extern *neutral-mods* surface) ;; unknown type
;;(define-extern grab object) ;; unknown type
;;(define-extern *wade-mods* object) ;; unknown type
;;(define-extern *forward-jump-mods* object) ;; unknown type
(define-extern *wade-mods* surface) ;; unknown type
(define-extern *forward-jump-mods* surface) ;; unknown type
(define-extern *stone-surface* surface) ;; unknown type
;;(define-extern *launch-jump-mods* object) ;; unknown type
;;(define-extern *empty-mods* object) ;; unknown type
;;(define-extern *tar-surface* object) ;; unknown type
;;(define-extern *wheel-flip-mods* object) ;; unknown type
;;(define-extern *pole-mods* object) ;; unknown type
(define-extern *launch-jump-mods* surface) ;; unknown type
(define-extern *empty-mods* surface) ;; unknown type
(define-extern *tar-surface* surface) ;; unknown type
(define-extern *wheel-flip-mods* surface) ;; unknown type
(define-extern *pole-mods* surface) ;; unknown type
;; pat-h
(deftype pat-surface (uint32)
@ -33245,8 +33245,7 @@
(define-extern vu-lights<-light-group! function)
(define-extern time-to-apex (function float float int))
(define-extern time-to-ground (function float float float int))
;;(define-extern *standard-dynamics* object) ;; unknown type
(define-extern dynamics type)
(define-extern *standard-dynamics* dynamics)
;;(define-extern pole object) ;; unknown type
;;(define-extern wheel-flip object) ;; unknown type

View file

@ -5,17 +5,21 @@
;; name in dgo: dynamics-h
;; dgos: GAME, ENGINE
;; 1 / 300.
(defconstant TICKS_TO_SECONDS (the-as float #x3b5a740e))
;; TODO move these elsewhere
(defglobalconstant TICKS_TO_SECONDS (/ 1.0 300)) ;; #x3b5a740e - 0.0033333333...
(defmacro vel-to-tick (vel)
"turn a velocity value into a per-tick value"
`(* ,TICKS_TO_SECONDS ,vel)
)
(deftype dynamics (basic)
((name basic :offset-assert 4)
(gravity-max float :offset-assert 8) ;; meters
(gravity-length float :offset-assert 12) ;; meters
(gravity-max float :offset-assert 8) ;; meters
(gravity-length float :offset-assert 12) ;; meters
(gravity vector :inline :offset-assert 16)
(gravity-normal vector :inline :offset-assert 32)
(walk-distance float :offset-assert 48) ;meters
(run-distance float :offset-assert 52) ; meters
(walk-distance float :offset-assert 48) ;; meters
(run-distance float :offset-assert 52) ;; meters
)
:method-count-assert 9
:size-assert #x38
@ -23,31 +27,32 @@
)
(defun time-to-apex ((arg0 float) (arg1 float))
(the int (/ arg0 (- (* TICKS_TO_SECONDS arg1))))
(the int (/ arg0 (- (vel-to-tick arg1))))
)
(defun time-to-ground ((velocity float) (gravity float) (height float))
"How long to fall from height?"
(local-vars (v0-0 int) (position float))
(set! position 0.000000)
(set! v0-0 0)
;; loop in ticks until below the ground.
(while (< (- height) position)
(set! velocity (- velocity (* TICKS_TO_SECONDS gravity)))
(+! position (* TICKS_TO_SECONDS velocity))
(+! v0-0 1)
(let ((height-checked 0.0)
(ticks 0))
;; loop in ticks until we reach the ground
(while (< (- height) height-checked)
(let ((velocity (- velocity (vel-to-tick gravity))))
(+! height-checked (vel-to-tick velocity))
)
(+! ticks 1)
)
ticks
)
v0-0
)
(define *standard-dynamics*
(new 'static 'dynamics
:name 'standard
:gravity-max 163840.000000
:gravity-length 245760.000000
:gravity (new 'static 'vector :y 245760.000000 :w 1.000000)
:gravity-normal (new 'static 'vector :y 1.000000 :w 1.000000)
:walk-distance 8192.000000
:run-distance 20480.000000
:gravity-max GRAVITY_MAX
:gravity-length GRAVITY_AMOUNT
:gravity (new 'static 'vector :x 0.0 :y GRAVITY_AMOUNT :z 0.0 :w 1.0)
:gravity-normal (new 'static 'vector :x 0.0 :y 1.0 :z 0.0 :w 1.0)
:walk-distance 8192.0
:run-distance 20480.0
)
)

View file

@ -6,3 +6,5 @@
;; dgos: GAME, ENGINE
;; This file generates no code.
(defconstant GRAVITY_AMOUNT 245760.0) ;; (meters 60)
(defconstant GRAVITY_MAX 163840.0) ;; (meters 40)

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,2 @@
cd ..\..
git update-index --assume-unchanged decompiler\config\jak1_ntsc_black_label.jsonc

View file

@ -0,0 +1,2 @@
cd ..\..
git update-index --no-assume-unchanged decompiler\config\jak1_ntsc_black_label.jsonc