;;-*-Lisp-*-
(in-package goal)

;; name: settings.gc
;; name in dgo: settings
;; dgos: GAME

(define-extern set-kg-primary-target (function handle float none))
(define-extern set-mh-primary-target (function handle float none))
(define-extern set-ff-primary-target (function handle float none))
(define-extern set-video-mode (function symbol none))
(define-extern add-blackout (function time-frame int int int int int))
(define-extern set-aspect-ratio (function symbol none))
(define-extern cam-master-set-entity (function cam-setting-data none))
(define-extern cam-eye (state camera-slave))
(define-extern cam-endlessfall (state camera-slave))
(define-extern cam-free-floating (state camera-slave))
(define-extern *speech-control* speech-control)
(define-extern *master-exit* symbol)
(declare-type crate process-focusable)

;; DECOMP BEGINS

(defun get-current-language ()
  (-> *setting-control* user-current language)
  )

(defmethod user-setting-data-method-9 ((this user-setting-data) (arg0 engine) (arg1 engine-pers) (arg2 engine))
  (let ((s3-0 (-> arg1 alive-list)))
    (while s3-0
      (user-setting-data-method-10
        this
        (-> s3-0 param 0)
        (the-as symbol (-> s3-0 param 1))
        (the-as float (-> s3-0 param 2))
        (the-as uint (-> s3-0 param 3))
        )
      (set! s3-0 (-> s3-0 next))
      )
    )
  (let ((s3-1 (-> arg0 alive-list-end))
        (s2-0 (-> arg0 alive-list-end prev0))
        )
    (while (!= (the-as connection s3-1) (-> arg0 alive-list))
      (let ((s1-0 (-> (the-as connection s3-1) param0)))
        (case s1-0
          (('sfx-volume)
           (if (or (not (logtest? (-> *kernel-context* prevent-from-run) (process-mask progress)))
                   (= (get-process (the-as connection s3-1)) (ppointer->process *progress-process*))
                   )
               (user-setting-data-method-10
                 this
                 s1-0
                 (the-as symbol (-> (the-as connection s3-1) param1))
                 (the-as float (-> (the-as connection s3-1) param2))
                 (the-as uint (-> (the-as connection s3-1) param3))
                 )
               )
           )
          (else
            (user-setting-data-method-10
              this
              s1-0
              (the-as symbol (-> (the-as connection s3-1) param1))
              (the-as float (-> (the-as connection s3-1) param2))
              (the-as uint (-> (the-as connection s3-1) param3))
              )
            )
          )
        )
      (set! s3-1 s2-0)
      (set! s2-0 (-> (the-as connection s3-1) prev0))
      )
    )
  (let* ((v1-21 (-> arg2 alive-list next0))
         (s4-1 (-> v1-21 next0))
         )
    (while (!= v1-21 (-> arg2 alive-list-end))
      (user-setting-data-method-10
        this
        (-> (the-as connection v1-21) param0)
        (the-as symbol (-> (the-as connection v1-21) param1))
        (the-as float (-> (the-as connection v1-21) param2))
        (the-as uint (-> (the-as connection v1-21) param3))
        )
      (set! v1-21 s4-1)
      (set! s4-1 (-> s4-1 next0))
      )
    )
  this
  )

(defmethod user-setting-data-method-10 ((this user-setting-data) (arg0 object) (arg1 symbol) (arg2 float) (arg3 uint))
  (case arg0
    (('border-mode)
     (set! (-> this border-mode) arg1)
     )
    (('region-mode)
     (set! (-> this region-mode) arg1)
     )
    (('allow-look-around)
     (set! (-> this allow-look-around) arg1)
     )
    (('ocean-off)
     (set! (-> this ocean-off) arg1)
     )
    (('weather)
     (set! (-> this weather) arg1)
     )
    (('mouse)
     (set! (-> this mouse) arg1)
     )
    (('cursor)
     (set! (-> this cursor) arg1)
     )
    (('keybd)
     (set! (-> this keybd) arg1)
     )
    (('music)
     (set! (-> this music) arg1)
     )
    (('extra-bank)
     (when (< (-> this extra-bank-count) (the-as uint 3))
       (set! (-> this extra-bank (-> this extra-bank-count)) (the-as pair arg1))
       (+! (-> this extra-bank-count) 1)
       )
     )
    (('borrow)
     (when (< (-> this borrow-count) (the-as uint 3))
       (set! (-> this borrow (-> this borrow-count)) (the-as pair arg1))
       (+! (-> this borrow-count) 1)
       )
     )
    (('borrow-city)
     (when (< (-> this borrow-city-count) (the-as uint 3))
       (set! (-> this borrow-city (-> this borrow-city-count)) (the-as pair arg1))
       (+! (-> this borrow-city-count) 1)
       )
     )
    (('city-sound)
     (if (< arg3 (the-as uint 3))
         (set! (-> this city-sound arg3) (the-as pair arg1))
         )
     )
    (('borrow-hold)
     (when (< (-> this borrow-hold-count) (the-as uint 3))
       (set! (-> this borrow-hold (-> this borrow-hold-count)) (the-as pair arg1))
       (+! (-> this borrow-hold-count) 1)
       )
     )
    (('borrow-hold-perm)
     (when (< (-> this borrow-hold-perm-count) (the-as uint 3))
       (set! (-> this borrow-hold-perm (-> this borrow-hold-perm-count)) (the-as pair arg1))
       (+! (-> this borrow-hold-perm-count) 1)
       )
     )
    (('faction-command)
     (when (< (-> this faction-command-count) (the-as uint 3))
       (set! (-> this faction-command (-> this faction-command-count)) (the-as pair arg1))
       (+! (-> this faction-command-count) 1)
       )
     )
    (('kg-enemy-settings)
     (set! (-> this kg-enemy-settings) (the-as symbol arg3))
     )
    (('global-wind)
     (set! (-> this global-wind) (the-as symbol arg3))
     )
    (('ff-enemy-settings)
     (set! (-> this ff-enemy-settings) (the-as symbol arg3))
     )
    (('mh-enemy-settings)
     (set! (-> this mh-enemy-settings) (the-as symbol arg3))
     )
    (('player-control-override)
     (set! (-> this player-control-override) (the-as cpad-info arg3))
     )
    (('player-control-mask)
     (set! (-> this player-control-mask) arg3)
     )
    (('exclusive-task)
     (dotimes (v1-33 3)
       (set! (-> this exclusive-task v1-33) 0)
       )
     (set! (-> this exclusive-task 0) (the-as int arg3))
     (set! (-> this exclusive-task-count) (the-as uint 1))
     )
    (('exclusive-task-list)
     (let ((v1-36 (the-as object arg1)))
       (dotimes (a1-81 3)
         (set! (-> this exclusive-task a1-81) 0)
         )
       (set! (-> this exclusive-task-count) (the-as uint (min 3 (-> (the-as (array uint8) v1-36) length))))
       (dotimes (a1-86 (the-as int (-> this exclusive-task-count)))
         (set! (-> this exclusive-task a1-86) (the-as int (-> (the-as (array uint8) v1-36) a1-86)))
         )
       )
     )
    (('process-mask)
     (case arg1
       (('set)
        (logior! (-> this process-mask) arg3)
        )
       (('clear)
        (logclear! (-> this process-mask) arg3)
        )
       (('abs)
        (set! (-> this process-mask) (the-as process-mask arg3))
        )
       )
     )
    (('task-mask)
     (case arg1
       (('set)
        (logior! (-> this task-mask) arg3)
        )
       (('clear)
        (logclear! (-> this task-mask) arg3)
        )
       (('abs)
        (set! (-> this task-mask) (the-as task-mask arg3))
        )
       )
     )
    (('task-manager)
     (set! (-> this task-manager) (the-as (pointer process) arg1))
     )
    (('task)
     (set! (-> this task) arg1)
     )
    (('exclusive-load)
     (set! (-> this exclusive-load) arg1)
     )
    (('sfx-volume)
     (case arg1
       (('rel)
        (set! (-> this sfx-volume) (* (-> this sfx-volume) arg2))
        )
       (else
         (set! (-> this sfx-volume) arg2)
         )
       )
     )
    (('music-volume)
     (case arg1
       (('rel)
        (set! (-> this music-volume) (* (-> this music-volume) arg2))
        )
       (else
         (set! (-> this music-volume) arg2)
         )
       )
     )
    (('ambient-volume)
     (case arg1
       (('rel)
        (set! (-> this ambient-volume) (* (-> this ambient-volume) arg2))
        )
       (else
         (set! (-> this ambient-volume) arg2)
         )
       )
     )
    (('special-volume)
     (case arg1
       (('rel)
        (set! (-> this special-volume) (* (-> this special-volume) arg2))
        )
       (else
         (set! (-> this special-volume) arg2)
         )
       )
     )
    (('dynamic-ambient-volume)
     (case arg1
       (('rel)
        (set! (-> this dynamic-ambient-volume) (* (-> this dynamic-ambient-volume) arg2))
        )
       (('add)
        (set! (-> this dynamic-ambient-volume) (fmax 0.0 (fmin 1.0 (+ (-> this dynamic-ambient-volume) arg2))))
        )
       (else
         (set! (-> this dynamic-ambient-volume) arg2)
         )
       )
     )
    (('dialog-volume)
     (case arg1
       (('rel)
        (set! (-> this dialog-volume) (* (-> this dialog-volume) arg2))
        )
       (else
         (set! (-> this dialog-volume) arg2)
         )
       )
     )
    (('dialog-volume-talker)
     (case arg1
       (('rel)
        (set! (-> this dialog-volume-talker) (* (-> this dialog-volume-talker) arg2))
        )
       (else
         (set! (-> this dialog-volume-talker) arg2)
         )
       )
     )
    (('talker-volume)
     (case arg1
       (('rel)
        (set! (-> this talker-volume) (* (-> this talker-volume) arg2))
        )
       (else
         (set! (-> this talker-volume) arg2)
         )
       )
     )
    (('sfx-volume-movie)
     (case arg1
       (('rel)
        (set! (-> this sfx-volume-movie) (* (-> this sfx-volume-movie) arg2))
        )
       (else
         (set! (-> this sfx-volume-movie) arg2)
         )
       )
     )
    (('music-volume-movie)
     (case arg1
       (('rel)
        (set! (-> this music-volume-movie) (* (-> this music-volume-movie) arg2))
        )
       (else
         (set! (-> this music-volume-movie) arg2)
         )
       )
     )
    (('ambient-volume-movie)
     (case arg1
       (('rel)
        (set! (-> this ambient-volume-movie) (* (-> this ambient-volume-movie) arg2))
        )
       (else
         (set! (-> this ambient-volume-movie) arg2)
         )
       )
     )
    (('level-trans-time)
     (set! (-> this level-trans-time) (the-as int arg3))
     )
    (('fog-special-interp-targ)
     (set! (-> this fog-special-interp-targ) arg2)
     )
    (('dust-storm-fog-scalar)
     (set! (-> this dust-storm-fog-scalar) arg2)
     )
    (('city-heap-load)
     (set! (-> this city-heap-load) arg2)
     )
    (('dust-storm-sound-scalar)
     (set! (-> this dust-storm-sound-scalar) arg2)
     )
    (('fog-special-interp-rate)
     (set! (-> this fog-special-interp-rate) arg2)
     )
    (('ambient-wind-scalar)
     (set! (-> this ambient-wind-scalar) arg2)
     )
    (('halfpipe-jump-mult)
     (set! (-> this halfpipe-jump-mult) arg2)
     )
    (('board-max-speed)
     (set! (-> this board-max-speed) arg2)
     )
    (('kg-difficulty)
     (set! (-> this kg-difficulty) arg2)
     )
    (('kg-primary-target)
     (let ((v1-57 (new 'static 'handle :process (the-as (pointer process) arg1) :pid arg3)))
       (when (handle->process v1-57)
         (set! (-> this kg-primary-target) v1-57)
         (set! (-> this kg-target-float) arg2)
         )
       )
     )
    (('mh-primary-target)
     (let ((v1-59 (new 'static 'handle :process (the-as (pointer process) arg1) :pid arg3)))
       (when (handle->process v1-59)
         (set! (-> this mh-primary-target) v1-59)
         (set! (-> this target-float) arg2)
         )
       )
     )
    (('ff-primary-target)
     (let ((v1-61 (new 'static 'handle :process (the-as (pointer process) arg1) :pid arg3)))
       (when (handle->process v1-61)
         (set! (-> this ff-primary-target) v1-61)
         (set! (-> this ff-target-float) arg2)
         )
       )
     )
    (('sound-ear)
     (let ((v1-63 (new 'static 'handle :process (the-as (pointer process) arg1) :pid arg3)))
       (if (handle->process v1-63)
           (set! (-> this sound-ear) v1-63)
           )
       )
     )
    (('sound-ear-scale)
     (case arg1
       (('rel)
        (set! (-> this sound-ear-scale) (* (-> this sound-ear-scale) arg2))
        )
       (else
         (set! (-> this sound-ear-scale) arg2)
         )
       )
     )
    (('sound-flava)
     (when (>= arg2 (-> this sound-flava-priority))
       (set! (-> this sound-flava) arg3)
       (set! (-> this sound-flava-priority) arg2)
       )
     )
    (('sound-mode)
     (set! (-> this sound-mode) arg3)
     )
    (('sound-tune)
     (set! (-> this sound-tune) arg3)
     )
    (('sound-excitement)
     (case arg1
       (('rel)
        (set! (-> this sound-excitement) (* (-> this sound-excitement) arg2))
        )
       (('add)
        (+! (-> this sound-excitement) arg2)
        )
       (else
         (set! (-> this sound-excitement) arg2)
         )
       )
     )
    (('sound-reverb)
     (case arg1
       (('rel)
        (set! (-> this sound-reverb) (* (-> this sound-reverb) arg2))
        )
       (('add)
        (+! (-> this sound-reverb) arg2)
        )
       (else
         (set! (-> this sound-reverb) arg2)
         )
       )
     )
    (('mode-sound-bank)
     (set! (-> this mode-sound-bank) (the-as uint arg1))
     )
    (('spotlight-color)
     (set! (-> this spotlight-color) (the-as rgba arg3))
     )
    (('highlight-color)
     (set! (-> this highlight-color) (the-as rgba arg3))
     )
    (('bg-r)
     (set! (-> this bg-r) arg2)
     )
    (('bg-g)
     (set! (-> this bg-g) arg2)
     )
    (('bg-b)
     (set! (-> this bg-b) arg2)
     )
    (('bg-a)
     (set! (-> this bg-a) arg2)
     )
    (('bg-a-speed)
     (set! (-> this bg-a-speed) arg2)
     )
    (('bg-a-force)
     (set! (-> this bg-a-force) arg2)
     )
    (('allow-blackout)
     (set! (-> this allow-blackout) arg1)
     )
    (('letterbox)
     (set! (-> this letterbox) arg2)
     )
    (('letterbox-speed)
     (set! (-> this letterbox-speed) arg2)
     )
    (('blur-a)
     (set! (-> this blur-a) arg2)
     )
    (('blur-a-speed)
     (set! (-> this blur-a-speed) arg2)
     )
    (('rain)
     (set! (-> this rain) arg2)
     )
    (('snow)
     (set! (-> this snow) arg2)
     )
    (('scarf)
     (set! (-> this scarf) arg2)
     )
    (('goggles)
     (set! (-> this goggles) arg2)
     )
    (('language)
     (set! (-> this language) (the-as language-enum arg3))
     )
    (('subtitle-language)
     (set! (-> this subtitle-language) (the-as language-enum arg3))
     )
    (('audio-language)
     (set! (-> this audio-language) (the-as language-enum arg3))
     )
    (('vibration)
     (set! (-> this vibration) arg1)
     )
    (('auto-save)
     (set! (-> this auto-save) arg1)
     )
    (('allow-pause)
     (set! (-> this allow-pause) arg1)
     )
    (('allow-progress)
     (set! (-> this allow-progress) arg1)
     )
    (('allow-continue)
     (set! (-> this allow-continue) arg1)
     )
    (('allow-timeout)
     (set! (-> this allow-timeout) arg1)
     )
    (('allow-error)
     (set! (-> this allow-error) arg1)
     )
    (('under-water-pitch-mod)
     (set! (-> this under-water-pitch-mod) arg2)
     )
    (('slow-time)
     (set! (-> this slow-time) arg2)
     )
    (('sound-bank-load)
     (set! (-> this sound-bank-load) arg1)
     )
    (('play-hints)
     (set! (-> this play-hints) arg1)
     )
    (('subtitle)
     (set! (-> this subtitle) arg1)
     )
    (('mirror)
     (set! (-> this mirror) arg1)
     )
    (('movie)
     (set! (-> this movie) (the-as (pointer process) arg1))
     )
    (('movie-name)
     (set! (-> this movie-name) arg1)
     )
    (('movie-skip-frame)
     (set! (-> this movie-skip-frame) arg2)
     )
    (('restart-info)
     (set! (-> this restart-info) (the-as resetter-spec arg1))
     )
    (('fail-info)
     (set! (-> this fail-info) (the-as resetter-spec arg1))
     )
    (('death-info)
     (set! (-> this death-info) (the-as resetter-spec arg1))
     )
    (('quit-info)
     (set! (-> this quit-info) (the-as resetter-spec arg1))
     )
    (('talking)
     (set! (-> this talking) (the-as (pointer process) arg1))
     )
    (('spooling)
     (set! (-> this spooling) (the-as (pointer process) arg1))
     )
    (('spool-anim)
     (set! (-> this spool-anim) (the-as spool-anim arg1))
     )
    (('hint)
     (set! (-> this hint) (the-as (pointer process) arg1))
     )
    (('ambient)
     (set! (-> this ambient) (the-as (pointer process) arg1))
     )
    (('common-page)
     (case arg1
       (('set)
        (logior! (-> this common-page) arg3)
        )
       (('clear)
        (logclear! (-> this common-page) arg3)
        )
       )
     )
    (('duck)
     (set! (-> this duck) arg1)
     )
    (('jump)
     (set! (-> this jump) arg1)
     )
    (('double-jump)
     (set! (-> this double-jump) arg1)
     )
    (('darkjak)
     (set! (-> this darkjak) arg1)
     )
    (('lightjak)
     (set! (-> this lightjak) arg1)
     )
    (('endlessfall)
     (set! (-> this endlessfall) arg1)
     )
    (('pilot)
     (set! (-> this pilot) arg1)
     )
    (('pilot-exit)
     (set! (-> this pilot-exit) arg1)
     )
    (('pilot-death)
     (set! (-> this pilot-death) arg1)
     )
    (('turbo)
     (set! (-> this turbo) arg1)
     )
    (('attack)
     (set! (-> this attack) arg1)
     )
    (('board)
     (case arg1
       (('force)
        (set! (-> this gun) #f)
        (set! (-> this darkjak) #f)
        (set! (-> this lightjak) #f)
        (set! (-> this pilot) #f)
        )
       )
     (set! (-> this board) arg1)
     )
    (('cloth)
     (set! (-> this cloth) arg1)
     )
    (('armor)
     (set! (-> this armor) arg1)
     )
    (('gun-special-mode)
     (set! (-> this gun-special-mode) arg1)
     )
    (('lock-sound-camera-to-target)
     (set! (-> this lock-sound-camera-to-target) arg1)
     )
    (('board-trail)
     (set! (-> this board-trail) arg1)
     )
    (('gun)
     (set! (-> this gun) arg1)
     )
    (('change-gun)
     (set! (-> this change-gun) arg1)
     )
    (('gun-eject)
     (set! (-> this gun-eject) arg1)
     )
    (('gem-seek-target-dir?)
     (set! (-> this gem-seek-target-dir?) arg1)
     )
    (('disable-parking-spots?)
     (set! (-> this disable-parking-spots?) arg1)
     )
    (('nuke-active?)
     (set! (-> this nuke-active?) arg1)
     )
    (('disable-guard-chatter?)
     (set! (-> this disable-guard-chatter?) arg1)
     )
    (('use-alternate-bouncer?)
     (set! (-> this use-alternate-bouncer?) arg1)
     )
    (('doorway)
     (set! (-> this doorway) arg1)
     )
    (('dive)
     (set! (-> this dive) arg1)
     )
    (('calm)
     (set! (-> this attack) (not arg1))
     (set! (-> this gun) (not arg1))
     (set! (-> this board) (not arg1))
     (set! (-> this jump) (not arg1))
     (set! (-> this double-jump) (not arg1))
     (set! (-> this darkjak) (not arg1))
     (set! (-> this lightjak) (not arg1))
     (set! (-> this pilot) (not arg1))
     (case arg1
       ((#t)
        (set! (-> this speed-mult) 0.5)
        )
       )
     )
    (('airlock)
     (set! (-> this airlock) arg1)
     )
    (('airlock-command)
     (set! (-> this airlock-command) (the-as pair arg1))
     )
    (('gun-buoy)
     (set! (-> this gun-buoy) arg1)
     )
    (('ignore-target)
     (set! (-> this ignore-target) arg1)
     )
    (('speech-control)
     (set! (-> this speech-control) arg1)
     )
    (('vehicle-hijacking)
     (set! (-> this vehicle-hijacking) arg1)
     )
    (('traffic-spawn)
     (set! (-> this traffic-spawn) arg1)
     )
    (('stop-vehicle?)
     (set! (-> this stop-vehicle?) arg1)
     )
    (('stop-boats?)
     (set! (-> this stop-boats?) arg1)
     )
    (('gun-target-guards?)
     (set! (-> this gun-target-guards?) arg1)
     )
    (('hide-crates?)
     (set! (-> this hide-crates?) arg1)
     )
    (('pickups)
     (set! (-> this pickups) arg1)
     )
    (('duststorm-push-player?)
     (set! (-> this duststorm-push-player?) arg1)
     )
    (('part-bounds-check)
     (set! (-> this part-bounds-check) arg1)
     )
    (('citizen-fights)
     (set! (-> this citizen-fights) arg1)
     )
    (('allow-logo)
     (set! (-> this allow-logo) arg1)
     )
    (('freeze-screen)
     (set! (-> this freeze-screen) arg1)
     )
    (('unique-vehicle-mission-critical)
     (set! (-> this unique-vehicle-mission-critical) arg1)
     )
    (('features)
     (let ((v1-84 (logior arg3 (shl (the-as int arg2) 32))))
       (case arg1
         (('set)
          (logior! (-> this features) v1-84)
          )
         (('set-bit)
          (logior! (-> this features) (ash 1 (the-as int arg3)))
          )
         (('clear)
          (logclear! (-> this features) v1-84)
          )
         (('clear-bit)
          (logclear! (-> this features) (ash 1 (the-as int arg3)))
          )
         (('abs)
          (set! (-> this features) (the-as game-feature v1-84))
          )
         )
       )
     )
    (('vehicles)
     (let ((v1-89 (logior arg3 (shl (the-as int arg2) 32))))
       (case arg1
         (('set)
          (logior! (-> this vehicles) v1-89)
          )
         (('set-bit)
          (logior! (-> this vehicles) (ash 1 (the-as int arg3)))
          )
         (('clear)
          (logclear! (-> this vehicles) v1-89)
          )
         (('clear-bit)
          (logclear! (-> this vehicles) (ash 1 (the-as int arg3)))
          )
         (('abs)
          (set! (-> this vehicles) (the-as game-vehicles v1-89))
          )
         )
       )
     )
    (('gem)
     (set! (-> this gem) arg1)
     )
    (('minimap)
     (case arg1
       (('set)
        (logior! (-> this minimap) arg3)
        )
       (('clear)
        (logclear! (-> this minimap) arg3)
        )
       (('abs)
        (set! (-> this minimap) arg3)
        )
       )
     )
    (('race-minimap)
     (set! (-> this race-minimap) (the-as int arg3))
     )
    (('half-speed)
     (set! (-> this half-speed) arg1)
     )
    (('render)
     (set! (-> this render) arg1)
     )
    (('minimap-level)
     (set! (-> this minimap-level) arg1)
     )
    (('bigmap-level)
     (set! (-> this bigmap-level) arg1)
     )
    (('brightness)
     (set! (-> this brightness) arg2)
     )
    (('contrast)
     (set! (-> this contrast) arg2)
     )
    (('scanlines)
     (set! (-> this scanlines) arg2)
     )
    (('sky-type)
     (set! (-> this sky-type) arg1)
     )
    (('gem-pool-index)
     (set! (-> this gem-pool-index) (the-as int arg3))
     )
    (('timer-warn-seconds)
     (set! (-> this timer-warn-seconds) arg3)
     )
    )
  this
  )

(defmethod cam-setting-data-method-9 ((this cam-setting-data) (arg0 engine) (arg1 engine-pers) (arg2 engine))
  (let ((s3-0 (-> arg1 alive-list)))
    (while s3-0
      (cam-setting-data-method-10
        this
        (-> s3-0 param 0)
        (the-as (pointer process) (-> s3-0 param 1))
        (the-as float (-> s3-0 param 2))
        (the-as int (-> s3-0 param 3))
        )
      (set! s3-0 (-> s3-0 next))
      )
    )
  (let ((s3-1 (-> arg0 alive-list-end))
        (s2-0 (-> arg0 alive-list-end prev0))
        )
    (while (!= (the-as connection s3-1) (-> arg0 alive-list))
      (let ((s1-0 (-> (the-as connection s3-1) param0)))
        (case s1-0
          (('sfx-volume)
           (if (or (not (logtest? (-> *kernel-context* prevent-from-run) (process-mask progress)))
                   (= (get-process (the-as connection s3-1)) (ppointer->process *progress-process*))
                   )
               (cam-setting-data-method-10
                 this
                 s1-0
                 (the-as (pointer process) (-> (the-as connection s3-1) param1))
                 (the-as float (-> (the-as connection s3-1) param2))
                 (-> (the-as connection s3-1) param3)
                 )
               )
           )
          (else
            (cam-setting-data-method-10
              this
              s1-0
              (the-as (pointer process) (-> (the-as connection s3-1) param1))
              (the-as float (-> (the-as connection s3-1) param2))
              (-> (the-as connection s3-1) param3)
              )
            )
          )
        )
      (set! s3-1 s2-0)
      (set! s2-0 (-> (the-as connection s3-1) prev0))
      )
    )
  (let* ((v1-21 (-> arg2 alive-list next0))
         (s4-1 (-> v1-21 next0))
         )
    (while (!= v1-21 (-> arg2 alive-list-end))
      (cam-setting-data-method-10
        this
        (-> (the-as connection v1-21) param0)
        (the-as (pointer process) (-> (the-as connection v1-21) param1))
        (the-as float (-> (the-as connection v1-21) param2))
        (-> (the-as connection v1-21) param3)
        )
      (set! v1-21 s4-1)
      (set! s4-1 (-> s4-1 next0))
      )
    )
  this
  )

(defmethod cam-setting-data-method-10 ((this cam-setting-data) (arg0 object) (arg1 (pointer process)) (arg2 float) (arg3 int))
  (case arg0
    (('fov)
     (cond
       ((= arg1 'rel)
        (set! (-> this fov) (* (-> this fov) arg2))
        )
       ((= arg1 'hi)
        (set! (-> this fov-priority) 10.0)
        (set! (-> this fov) arg2)
        )
       (else
         (set! (-> this fov) arg2)
         )
       )
     )
    (('pov-handle)
     (let ((a0-6 (new 'static 'handle :process arg1 :pid arg3)))
       (when (handle->process a0-6)
         (set! (-> this pov-handle) a0-6)
         (set! (-> this pov-bone) (the int arg2))
         )
       )
     )
    (('pov-offset)
     (vector-copy! (-> this pov-offset) (the-as vector arg2))
     )
    (('string-max-length)
     (case arg1
       (('low)
        (if (-> this string-max-length-default)
            (set! (-> this string-max-length) arg2)
            )
        )
       (('rel)
        (set! (-> this string-max-length) (* (-> this string-max-length) arg2))
        )
       (else
         (set! (-> this string-max-length) arg2)
         )
       )
     (set! (-> this string-default) #f)
     (set! (-> this string-max-length-default) #f)
     )
    (('string-min-length)
     (case arg1
       (('low)
        (if (-> this string-min-length-default)
            (set! (-> this string-min-length) arg2)
            )
        )
       (('rel)
        (set! (-> this string-min-length) (* (-> this string-min-length) arg2))
        )
       (else
         (set! (-> this string-min-length) arg2)
         )
       )
     (set! (-> this string-default) #f)
     (set! (-> this string-min-length-default) #f)
     )
    (('string-max-height)
     (case arg1
       (('low)
        (if (-> this string-max-height-default)
            (set! (-> this string-max-height) arg2)
            )
        )
       (('rel)
        (set! (-> this string-max-height) (* (-> this string-max-height) arg2))
        )
       (else
         (set! (-> this string-max-height) arg2)
         )
       )
     (set! (-> this string-default) #f)
     (set! (-> this string-max-height-default) #f)
     )
    (('string-min-height)
     (case arg1
       (('low)
        (if (-> this string-min-height-default)
            (set! (-> this string-min-height) arg2)
            )
        )
       (('rel)
        (set! (-> this string-min-height) (* (-> this string-min-height) arg2))
        )
       (else
         (set! (-> this string-min-height) arg2)
         )
       )
     (set! (-> this string-default) #f)
     (set! (-> this string-min-height-default) #f)
     )
    (('string-cliff-height)
     (set! (-> this string-cliff-height) arg2)
     (set! (-> this string-default) #f)
     )
    (('string-camera-floor)
     (set! (-> this string-camera-floor) arg2)
     (set! (-> this string-default) #f)
     )
    (('string-camera-ceiling)
     (set! (-> this string-camera-ceiling) arg2)
     (set! (-> this string-default) #f)
     )
    (('gun-max-height)
     (set! (-> this gun-max-height) arg2)
     )
    (('gun-min-height)
     (set! (-> this gun-min-height) arg2)
     )
    (('string-local-down)
     (vector-normalize-copy! (-> this string-local-down) (the-as vector arg2) 1.0)
     )
    (('slave-options)
     (case arg1
       (('set)
        (logior! (-> this slave-options) arg3)
        )
       (('clear)
        (logclear! (-> this slave-options) arg3)
        )
       (('abs)
        (set! (-> this slave-options) (the-as cam-slave-options arg3))
        )
       )
     )
    (('rapid-tracking)
     (logior! (-> this slave-options) (cam-slave-options RAPID_TRACKING))
     )
    (('bike-mode)
     (logior! (-> this slave-options) (cam-slave-options BIKE_MODE))
     )
    (('vertical-follow-matches-camera)
     (logior! (-> this slave-options) (cam-slave-options VERTICAL_FOLLOW_MATCHES_CAMERA))
     )
    (('matrix-blend-max-angle)
     (set! (-> this matrix-blend-max-angle) arg2)
     )
    (('matrix-blend-max-partial)
     (set! (-> this matrix-blend-max-partial) arg2)
     )
    (('matrix-blend-turret-rot)
     (set! (-> this unk-float0) arg2)
     )
    (('string-spline-max-move)
     (set! (-> this string-spline-max-move) arg2)
     )
    (('string-spline-accel)
     (set! (-> this string-spline-accel) arg2)
     )
    (('string-spline-max-move-player)
     (set! (-> this string-spline-max-move-player) arg2)
     )
    (('string-spline-accel-player)
     (set! (-> this string-spline-accel-player) arg2)
     )
    (('target-height)
     (set! (-> this target-height) arg2)
     )
    (('head-offset)
     (set! (-> this head-offset) arg2)
     )
    (('foot-offset)
     (set! (-> this foot-offset) arg2)
     )
    (('teleport-on-entity-change)
     (set! (-> this teleport-on-entity-change) (the-as symbol arg2))
     )
    (('entity-name)
     (when (or *target* (and *camera* (not (send-event *camera* 'query-state cam-free-floating))))
       (set! (-> this entity-name) (the-as string arg1))
       (set! arg3 (cond
                    ((= arg3 -1)
                     0
                     )
                    (else
                      (empty)
                      arg3
                      )
                    )
             )
       (set! (-> this entity-mask) (the-as uint arg3))
       (set! (-> this mode-name) #f)
       )
     )
    (('cam-slope)
     (set! (-> this cam-slope) (the-as string arg1))
     )
    (('mode-name)
     (set! (-> this mode-name) (the-as symbol arg1))
     (set! (-> this entity-name) #f)
     )
    (('master-options)
     (case arg1
       (('set)
        (logior! (-> this master-options) arg3)
        )
       (('clear)
        (logclear! (-> this master-options) arg3)
        )
       (('abs)
        (set! (-> this master-options) (the-as cam-master-options arg3))
        )
       )
     )
    (('immediate-string-min-max)
     (logior! (-> this master-options) (cam-master-options IMMEDIATE_STRING_MIN_MAX))
     )
    (('no-intro)
     (set! (-> this no-intro) (the-as symbol arg2))
     )
    (('flip-horizontal)
     (set! (-> this flip-horizontal) (the-as symbol arg2))
     )
    (('flip-vertical)
     (set! (-> this flip-vertical) (the-as symbol arg2))
     )
    (('mouse-input)
     (set! (-> this mouse-input) (the-as symbol arg2))
     )
    (('cpad1-skip-buttons)
     (set! (-> this cpad1-skip-buttons) (the-as symbol arg2))
     )
    (('interp-time)
     (let* ((v1-99 arg1)
            (f0-38 (if (= v1-99 'hi)
                       1.0
                       0.0
                       )
                   )
            )
       (when (>= f0-38 (the float (-> this interp-time-priority)))
         (set! (-> this interp-time) (the-as uint (the int arg2)))
         (set! (-> this interp-time-priority) (the-as uint (the int f0-38)))
         )
       )
     )
    (('string-startup-vector)
     (set! (-> this use-string-startup-vector) #t)
     (vector-copy! (-> this string-startup-vector) (the-as vector arg2))
     )
    (('look-at-point)
     (set! (-> this use-look-at-point) #t)
     (vector-copy! (-> this look-at-point) (the-as vector arg2))
     )
    (('point-of-interest)
     (set! (-> this use-point-of-interest) #t)
     (vector-copy! (-> this point-of-interest) (the-as vector arg2))
     (set! (-> this handle-of-interest) (the-as handle #f))
     )
    (('mouse-tumble-point)
     (set! (-> this use-mouse-tumble-point) #t)
     (vector-copy! (-> this mouse-tumble-point) (the-as vector arg2))
     )
    (('handle-of-interest)
     (let ((a0-128 (new 'static 'handle :process arg1 :pid arg3)))
       (when (handle->process a0-128)
         (set! (-> this use-point-of-interest) #f)
         (set! (-> this handle-of-interest) a0-128)
         )
       )
     )
    (('butt-handle)
     (let ((a0-132 (new 'static 'handle :process arg1 :pid arg3)))
       (when (handle->process a0-132)
         (set! (-> this butt-handle) a0-132)
         (set! (-> this butt-angle) arg2)
         )
       )
     )
    (('extra-follow-height)
     (set! (-> this extra-follow-height) arg2)
     )
    )
  this
  )

(defmethod add-setting ((this setting-control) (arg0 process) (arg1 symbol) (arg2 object) (arg3 object) (arg4 object))
  (add-connection (-> this engine) arg0 arg1 arg2 arg3 arg4)
  )

(defmethod set-setting ((this setting-control) (arg0 process) (arg1 symbol) (arg2 object) (arg3 object) (arg4 object))
  (remove-setting this arg0 arg1)
  (add-connection (-> this engine) arg0 arg1 arg2 arg3 arg4)
  )

(defmethod persist-with-delay ((this setting-control) (arg0 symbol) (arg1 time-frame) (arg2 symbol) (arg3 symbol) (arg4 float) (arg5 int))
  (let ((v1-1 (schedule-callback (-> this engine-pers) arg0 arg1)))
    (when v1-1
      (set! (-> v1-1 param 0) arg2)
      (set! (-> v1-1 param 1) arg3)
      (set! (-> v1-1 param 2) arg4)
      (set! (-> v1-1 param 3) arg5)
      )
    )
  0
  (none)
  )

(defmethod remove-setting ((this setting-control) (arg0 process) (arg1 symbol))
  (when arg0
    (let ((s5-0 (-> this engine))
          (s4-0 (-> arg0 connection-list next1))
          )
      (while (the-as connection s4-0)
        (if (and (belongs-to-engine? (the-as connection s4-0) s5-0)
                 (or (= arg1 #t) (= arg1 (-> (the-as connection s4-0) param0)))
                 )
            (move-to-dead (the-as connection s4-0))
            )
        (set! s4-0 (-> (the-as connection s4-0) next1))
        )
      )
    )
  0
  (none)
  )

;; WARN: Return type mismatch int vs connectable.
(defmethod setting-control-method-14 ((this setting-control) (arg0 object))
  (if arg0
      ((method-of-type connection move-to-dead) (the-as connection arg0))
      )
  (the-as connectable 0)
  )

(defmethod kill-persister ((this setting-control) (arg0 engine-pers) (arg1 object))
  (kill-matching
    (-> this engine-pers)
    (lambda ((arg0 engine-pers) (arg1 connection-pers) (arg2 object) (arg3 object))
      (and (= (-> arg1 key) arg2) (= (-> arg1 param 0) arg3))
      )
    arg0
    arg1
    )
  0
  (none)
  )

(defmethod get-setting ((this setting-control) (arg0 object))
  (let ((v1-1 (-> this engine-hi alive-list next0)))
    (-> this engine-hi)
    (let ((a2-2 (-> (the-as connection v1-1) next0)))
      (while (!= v1-1 (-> this engine-hi alive-list-end))
        (if (= (-> (the-as connection v1-1) param0) arg0)
            (return v1-1)
            )
        (set! v1-1 a2-2)
        (-> this engine-hi)
        (set! a2-2 (-> a2-2 next0))
        )
      )
    )
  (the-as connectable #f)
  )

(defmethod remove-setting-by-arg0 ((this setting-control) (arg0 object))
  (remove-by-param0 (-> this engine-hi) arg0)
  0
  (none)
  )

(defmethod set-setting-by-param ((this setting-control) (arg0 symbol) (arg1 object) (arg2 object) (arg3 object))
  (remove-by-param0 (-> this engine-hi) arg0)
  (add-connection (-> this engine-hi) *dproc* arg0 arg1 arg2 arg3)
  )

(defmethod apply-settings ((this setting-control))
  (local-vars (a0-8 symbol) (a0-20 symbol) (a0-29 symbol) (a0-37 symbol))
  (let ((s5-0 (-> this user-current)))
    (let ((s4-0 (-> this user-target)))
      (mem-copy! (the-as pointer s4-0) (the-as pointer (-> this user-default)) 908)
      (set! (-> s4-0 ambient-volume) (* (-> this user-default sfx-volume) (-> this user-default ambient-volume)))
      (user-setting-data-method-9 s4-0 (-> this engine) (-> this engine-pers) (-> this engine-hi))
      (when (= (-> s5-0 sound-mode) 1)
        (-> s5-0 music)
        (set! (-> s4-0 music-volume) (* 1.111111 (-> s4-0 music-volume)))
        )
      (set! (-> s4-0 unk-volume) (cond
                                   ((not (movie?))
                                    (-> s4-0 sfx-volume)
                                    )
                                   ((= (-> *game-info* demo-state) 101)
                                    0.0
                                    )
                                   (else
                                     (-> s4-0 dialog-volume)
                                     )
                                   )
            )
      (set! (-> s4-0 special-volume) (* (-> this user-default sfx-volume) (-> s4-0 special-volume)))
      (set! (-> s5-0 border-mode) (-> s4-0 border-mode))
      (let ((v1-10 #f))
        (countdown (a0-6 3)
          (when (!= (-> s5-0 borrow a0-6) (-> s4-0 borrow a0-6))
            (set! a0-8 #t)
            (goto cfg-13)
            )
          )
        (set! a0-8 #f)
        (label cfg-13)
        (when a0-8
          (dotimes (v1-11 3)
            (set! (-> s5-0 borrow v1-11) (-> s4-0 borrow v1-11))
            )
          (set! (-> s5-0 borrow-count) (-> s4-0 borrow-count))
          (set! v1-10 #t)
          )
        (dotimes (a0-15 3)
          (set! (-> s5-0 city-sound a0-15) (-> s4-0 city-sound a0-15))
          )
        (countdown (a0-18 3)
          (when (!= (-> s5-0 borrow-city a0-18) (-> s4-0 borrow-city a0-18))
            (set! a0-20 #t)
            (goto cfg-27)
            )
          )
        (set! a0-20 #f)
        (label cfg-27)
        (when a0-20
          (dotimes (v1-15 3)
            (set! (-> s5-0 borrow-city v1-15) (-> s4-0 borrow-city v1-15))
            )
          (set! (-> s5-0 borrow-city-count) (-> s4-0 borrow-city-count))
          (set! v1-10 #t)
          )
        (countdown (a0-27 3)
          (when (!= (-> s5-0 faction-command a0-27) (-> s4-0 faction-command a0-27))
            (set! a0-29 #t)
            (goto cfg-38)
            )
          )
        (set! a0-29 #f)
        (label cfg-38)
        (when a0-29
          (dotimes (v1-19 3)
            (set! (-> s5-0 faction-command v1-19) (-> s4-0 faction-command v1-19))
            )
          (set! (-> s5-0 faction-command-count) (-> s4-0 faction-command-count))
          (set! v1-10 #t)
          )
        (set! a0-37 (or (!= (-> s5-0 exclusive-task-count) (-> s4-0 exclusive-task-count))
                        (begin
                          (dotimes (a0-38 3)
                            (when (!= (-> s5-0 exclusive-task a0-38) (-> s4-0 exclusive-task a0-38))
                              (set! a0-37 #t)
                              (goto cfg-52)
                              )
                            )
                          #f
                          )
                        )
              )
        (label cfg-52)
        (when a0-37
          (set! (-> s5-0 exclusive-task-count) (-> s4-0 exclusive-task-count))
          (dotimes (v1-24 3)
            (set! (-> s5-0 exclusive-task v1-24) (-> s4-0 exclusive-task v1-24))
            )
          (set! v1-10 #t)
          (+! (-> *game-info* task-counter) 1)
          )
        (if v1-10
            (update-task-masks 'event)
            )
        )
      (dotimes (v1-29 3)
        (set! (-> s5-0 borrow-hold v1-29) (-> s4-0 borrow-hold v1-29))
        (set! (-> s5-0 borrow-hold-perm v1-29) (-> s4-0 borrow-hold-perm v1-29))
        )
      (set! (-> s5-0 level-trans-time) (-> s4-0 level-trans-time))
      (set! (-> s5-0 region-mode) (-> s4-0 region-mode))
      (set! (-> s5-0 common-page) (-> s4-0 common-page))
      (set! (-> s5-0 vibration) (-> s4-0 vibration))
      (set! (-> s5-0 auto-save) (-> s4-0 auto-save))
      (set! (-> s5-0 play-hints) (-> s4-0 play-hints))
      (set! (-> s5-0 sound-bank-load) (-> s4-0 sound-bank-load))
      (set! (-> s5-0 subtitle) (-> s4-0 subtitle))
      (set! (-> s5-0 beard) (if (logtest? (-> *game-info* secrets) (game-secrets toggle-beard))
                                (not (-> s4-0 beard))
                                (-> s4-0 beard)
                                )
            )
      (set! (-> s5-0 movie) (-> s4-0 movie))
      (set! (-> s5-0 movie-name) (-> s4-0 movie-name))
      (set! (-> s5-0 restart-info) (-> s4-0 restart-info))
      (set! (-> s5-0 fail-info) (-> s4-0 fail-info))
      (set! (-> s5-0 death-info) (-> s4-0 death-info))
      (set! (-> s5-0 quit-info) (-> s4-0 quit-info))
      (set! (-> s5-0 talking) (-> s4-0 talking))
      (set! (-> s5-0 spooling) (-> s4-0 spooling))
      (set! (-> s5-0 spool-anim) (-> s4-0 spool-anim))
      (set! (-> s5-0 sound-ear) (-> s4-0 sound-ear))
      (set! (-> s5-0 hint) (-> s4-0 hint))
      (set! (-> s5-0 ambient) (-> s4-0 ambient))
      (set! (-> s5-0 allow-pause) (-> s4-0 allow-pause))
      (set! (-> s5-0 allow-progress) (-> s4-0 allow-progress))
      (set! (-> s5-0 allow-look-around) (-> s4-0 allow-look-around))
      (set! (-> s5-0 allow-continue) (-> s4-0 allow-continue))
      (set! (-> s5-0 allow-timeout) (-> s4-0 allow-timeout))
      (set! (-> s5-0 allow-error) (-> s4-0 allow-error))
      (set! (-> s5-0 under-water-pitch-mod) (-> s4-0 under-water-pitch-mod))
      (set! (-> s5-0 slow-time) (-> s4-0 slow-time))
      (if (and (-> s4-0 mirror) (= (level-status? *level* 'ctywide #f) 'active))
          (set! (-> s5-0 mirror) #f)
          (set! (-> s5-0 mirror) (-> s4-0 mirror))
          )
      (set! (-> s5-0 ocean-off) (-> s4-0 ocean-off))
      (set! (-> s5-0 weather) (-> s4-0 weather))
      (set! (-> s5-0 mouse) (-> s4-0 mouse))
      (set! (-> s5-0 cursor) (-> s4-0 cursor))
      (set! (-> s5-0 keybd) (-> s4-0 keybd))
      (set! (-> s5-0 ambient-volume-movie) (-> s4-0 ambient-volume-movie))
      (set! (-> s5-0 music-volume-movie) (-> s4-0 music-volume-movie))
      (set! (-> s5-0 sfx-volume-movie) (-> s4-0 sfx-volume-movie))
      (set! (-> s5-0 dialog-volume-talker) (-> s4-0 dialog-volume-talker))
      (set! (-> s5-0 talker-volume) (-> s4-0 talker-volume))
      (set! (-> s5-0 process-mask) (-> s4-0 process-mask))
      (set! (-> s5-0 movie-skip-frame) (-> s4-0 movie-skip-frame))
      (dotimes (v1-75 3)
        (set! (-> s5-0 extra-bank v1-75) (-> s4-0 extra-bank v1-75))
        )
      (set! (-> s5-0 extra-bank-count) (-> s4-0 extra-bank-count))
      (set! (-> s5-0 task-mask) (-> s4-0 task-mask))
      (set! (-> s5-0 task) (-> s4-0 task))
      (set! (-> s5-0 task-manager) (-> s4-0 task-manager))
      (set! (-> s5-0 exclusive-load) (-> s4-0 exclusive-load))
      (set! (-> s5-0 global-wind) (-> s4-0 global-wind))
      (set! (-> s5-0 kg-enemy-settings) (-> s4-0 kg-enemy-settings))
      (set! (-> s5-0 ff-enemy-settings) (-> s4-0 ff-enemy-settings))
      (set! (-> s5-0 mh-enemy-settings) (-> s4-0 mh-enemy-settings))
      (set! (-> s5-0 player-control-override) (-> s4-0 player-control-override))
      (set! (-> s5-0 player-control-mask) (-> s4-0 player-control-mask))
      (set! (-> s5-0 duck) (-> s4-0 duck))
      (set! (-> s5-0 jump) (-> s4-0 jump))
      (set! (-> s5-0 double-jump) (-> s4-0 double-jump))
      (set! (-> s5-0 darkjak) (-> s4-0 darkjak))
      (set! (-> s5-0 lightjak) (-> s4-0 lightjak))
      (set! (-> s5-0 endlessfall) (-> s4-0 endlessfall))
      (set! (-> s5-0 pilot) (-> s4-0 pilot))
      (set! (-> s5-0 pilot-exit) (-> s4-0 pilot-exit))
      (set! (-> s5-0 pilot-death) (-> s4-0 pilot-death))
      (set! (-> s5-0 turbo) (-> s4-0 turbo))
      (set! (-> s5-0 attack) (-> s4-0 attack))
      (set! (-> s5-0 board) (-> s4-0 board))
      (set! (-> s5-0 board-trail) (-> s4-0 board-trail))
      (set! (-> s5-0 cloth) (-> s4-0 cloth))
      (set! (-> s5-0 armor) (-> s4-0 armor))
      (set! (-> s5-0 gun-special-mode) (-> s4-0 gun-special-mode))
      (set! (-> s5-0 gun) (-> s4-0 gun))
      (set! (-> s5-0 change-gun) (-> s4-0 change-gun))
      (set! (-> s5-0 gun-eject) (-> s4-0 gun-eject))
      (set! (-> s5-0 disable-parking-spots?) (-> s4-0 disable-parking-spots?))
      (set! (-> s5-0 nuke-active?) (-> s4-0 nuke-active?))
      (set! (-> s5-0 disable-guard-chatter?) (-> s4-0 disable-guard-chatter?))
      (set! (-> s5-0 use-alternate-bouncer?) (-> s4-0 use-alternate-bouncer?))
      (set! (-> s5-0 gem-seek-target-dir?) (-> s4-0 gem-seek-target-dir?))
      (set! (-> s5-0 doorway) (-> s4-0 doorway))
      (set! (-> s5-0 dive) (-> s4-0 dive))
      (set! (-> s5-0 airlock) (-> s4-0 airlock))
      (set! (-> s5-0 airlock-command) (-> s4-0 airlock-command))
      (set! (-> s5-0 gun-buoy) (-> s4-0 gun-buoy))
      (set! (-> s5-0 ignore-target) (-> s4-0 ignore-target))
      (set! (-> s5-0 speech-control) (-> s4-0 speech-control))
      (set! (-> s5-0 vehicle-hijacking) (-> s4-0 vehicle-hijacking))
      (set! (-> s5-0 traffic-spawn) (-> s4-0 traffic-spawn))
      (set! (-> s5-0 stop-vehicle?) (-> s4-0 stop-vehicle?))
      (set! (-> s5-0 stop-boats?) (-> s4-0 stop-boats?))
      (set! (-> s5-0 gun-target-guards?) (-> s4-0 gun-target-guards?))
      (if (and (not (-> s5-0 hide-crates?)) (-> s4-0 hide-crates?))
          (kill-by-type-inherited crate *active-pool*)
          )
      (set! (-> s5-0 hide-crates?) (-> s4-0 hide-crates?))
      (set! (-> s5-0 pickups) (-> s4-0 pickups))
      (set! (-> s5-0 duststorm-push-player?) (-> s4-0 duststorm-push-player?))
      (set! (-> s5-0 part-bounds-check) (-> s4-0 part-bounds-check))
      (set! (-> s5-0 citizen-fights) (-> s4-0 citizen-fights))
      (set! (-> s5-0 allow-logo) (-> s4-0 allow-logo))
      (set! (-> s5-0 freeze-screen) (-> s4-0 freeze-screen))
      (set! (-> s5-0 speed-mult) (-> s4-0 speed-mult))
      (set! (-> s5-0 features) (-> s4-0 features))
      (set! (-> s5-0 vehicles) (-> s4-0 vehicles))
      (set! (-> s5-0 unique-vehicle-mission-critical) (-> s4-0 unique-vehicle-mission-critical))
      (set! (-> s5-0 rain) (-> s4-0 rain))
      (set! (-> s5-0 snow) (-> s4-0 snow))
      (set! (-> s5-0 scarf) (-> s4-0 scarf))
      (set! (-> s5-0 goggles) (-> s4-0 goggles))
      (set! (-> s5-0 gem) (-> s4-0 gem))
      (set! (-> s5-0 minimap) (-> s4-0 minimap))
      (set! (-> s5-0 race-minimap) (-> s4-0 race-minimap))
      (set! (-> s5-0 half-speed) (-> s4-0 half-speed))
      (set! (-> s5-0 render) (-> s4-0 render))
      (set! (-> s5-0 brightness) (-> s4-0 brightness))
      (set! (-> s5-0 contrast) (-> s4-0 contrast))
      (set! (-> s5-0 sky-type) (-> s4-0 sky-type))
      (set! (-> s5-0 lock-sound-camera-to-target) (-> s4-0 lock-sound-camera-to-target))
      )
    (set! (-> *kernel-context* prevent-from-run) (-> s5-0 process-mask))
    (let ((v1-147 0))
      (dotimes (a0-62 (-> *level* length))
        (let ((a1-43 (-> *level* level a0-62)))
          (if (= (-> a1-43 status) 'active)
              (set! v1-147
                    (the-as int (logior (the-as task-mask v1-147) (logand (-> a1-43 info base-task-mask) (task-mask primary0))))
                    )
              )
          )
        )
      (dotimes (a0-65 (-> *level* length))
        (let ((a1-52 (-> *level* level a0-65)))
          (if (= (-> a1-52 status) 'active)
              (set! (-> a1-52 task-mask)
                    (logior (logior (logand (-> a1-52 task-mask) (task-mask task0 task1 task2 task3 task4 task5 task6 task7 done))
                                    (logand (task-mask vehicle ctywide never movie0 movie1 movie2) (-> s5-0 task-mask))
                                    )
                            (logclear 8192 v1-147)
                            )
                    )
              )
          )
        )
      )
    (set! (-> *level* border?) (-> s5-0 border-mode))
    (when *target*
      (set! (-> *target* scarf-interp-targ) (-> s5-0 scarf))
      (set! (-> *target* goggles-interp-targ) (-> s5-0 goggles))
      (if (-> s5-0 duck)
          (logclear! (-> *target* target-flags) (target-flags prevent-duck))
          (logior! (-> *target* target-flags) (target-flags prevent-duck))
          )
      (if (-> s5-0 jump)
          (logclear! (-> *target* target-flags) (target-flags prevent-jump))
          (logior! (-> *target* target-flags) (target-flags prevent-jump))
          )
      (if (-> s5-0 double-jump)
          (logclear! (-> *target* target-flags) (target-flags prevent-double-jump))
          (logior! (-> *target* target-flags) (target-flags prevent-double-jump))
          )
      (if (-> s5-0 attack)
          (logclear! (-> *target* target-flags) (target-flags prevent-attack))
          (logior! (-> *target* target-flags) (target-flags prevent-attack))
          )
      (if (-> s5-0 board)
          (logclear! (-> *target* target-flags) (target-flags prevent-board))
          (logior! (-> *target* target-flags) (target-flags prevent-board))
          )
      (if (-> s5-0 gun)
          (logclear! (-> *target* target-flags) (target-flags prevent-gun))
          (logior! (-> *target* target-flags) (target-flags prevent-gun))
          )
      )
    )
  (-> this cam-current)
  (let ((s4-1 (-> this cam-target)))
    (mem-copy! (the-as pointer s4-1) (the-as pointer (-> this cam-default)) 780)
    (cam-setting-data-method-9 s4-1 (-> this engine) (-> this engine-pers) (-> this engine-hi))
    )
  (-> this user-current)
  )

(defmethod update ((this setting-control))
  (run-pending-updates! (-> this engine-pers) (-> *display* base-clock frame-counter))
  (if (not (paused?))
      (speech-control-method-11 *speech-control*)
      )
  (apply-settings this)
  (let ((s5-0 (-> this user-current)))
    (let ((s4-0 (-> this user-target)))
      (seek!
        (-> s5-0 dynamic-ambient-volume)
        (-> s4-0 dynamic-ambient-volume)
        (-> *display* real-clock seconds-per-frame)
        )
      (when *sound-player-enable*
        (when (!= (-> s5-0 sfx-volume) (-> s4-0 sfx-volume))
          (seek! (-> s5-0 sfx-volume) (-> s4-0 sfx-volume) (-> *display* real-clock seconds-per-frame))
          (sound-set-volume (sound-group sfx) (-> s5-0 sfx-volume))
          )
        (when (!= (-> s5-0 music-volume) (-> s4-0 music-volume))
          (seek! (-> s5-0 music-volume) (-> s4-0 music-volume) (-> *display* real-clock seconds-per-frame))
          (sound-set-volume (sound-group music) (* 0.75 (-> s5-0 music-volume)))
          )
        (when (!= (-> s5-0 dialog-volume) (-> s4-0 dialog-volume))
          (seek! (-> s5-0 dialog-volume) (-> s4-0 dialog-volume) (-> *display* real-clock seconds-per-frame))
          (sound-set-volume (sound-group dialog dialog2) (-> s5-0 dialog-volume))
          )
        (when (!= (-> s5-0 ambient-volume) (-> s4-0 ambient-volume))
          (seek! (-> s5-0 ambient-volume) (-> s4-0 ambient-volume) (-> *display* real-clock seconds-per-frame))
          (sound-set-volume (sound-group ambient) (-> s5-0 ambient-volume))
          )
        (when (!= (-> s5-0 special-volume) (-> s4-0 special-volume))
          (seek! (-> s5-0 special-volume) (-> s4-0 special-volume) (-> *display* real-clock seconds-per-frame))
          (sound-set-volume (sound-group special) (-> s5-0 special-volume))
          )
        (when (!= (-> s5-0 unk-volume) (-> s4-0 unk-volume))
          (seek! (-> s5-0 unk-volume) (-> s4-0 unk-volume) (-> *display* real-clock seconds-per-frame))
          (sound-set-volume (sound-group sog7) (-> s5-0 unk-volume))
          )
        )
      (when (!= (-> s5-0 language) (-> s4-0 language))
        (kset-language (-> s4-0 language))
        (set! (-> s5-0 language) (-> s4-0 language))
        )
      (when (and (!= (-> s5-0 audio-language) (-> s4-0 audio-language)) (zero? (rpc-busy? 1)))
        (set! (-> s5-0 audio-language) (-> s4-0 audio-language))
        (case (-> s5-0 audio-language)
          (((language-enum uk-english)
            (language-enum korean)
            (language-enum russian)
            (language-enum dutch)
            (language-enum portuguese)
            )
           (set-language (language-enum english))
           )
          (else
            (set-language (-> s5-0 audio-language))
            )
          )
        )
      (set! (-> s5-0 subtitle-language) (-> s4-0 subtitle-language))
      (when (!= (-> s5-0 stereo-mode) (-> s4-0 stereo-mode))
        (set! (-> s5-0 stereo-mode) (-> s4-0 stereo-mode))
        (sound-set-stereo-mode (-> s5-0 stereo-mode))
        )
      (when (and (!= (-> s4-0 music) (-> s5-0 music))
                 (and (zero? (rpc-busy? 1))
                      (or (not (-> s4-0 music))
                          (and (< 0.0 (-> s5-0 music-volume)) (not (load-in-progress? *level*)) (not (-> s5-0 movie)))
                          )
                      (not *master-exit*)
                      )
                 )
        (cond
          ((-> s4-0 music)
           (format 0 "Load music ~A~%" (-> s4-0 music))
           (set! (-> s5-0 sound-flava) (the-as uint 0))
           (sound-music-load (string->sound-name (symbol->string (-> s4-0 music))))
           )
          (else
            (format 0 "Unload music~%")
            (sound-music-unload)
            )
          )
        (set! (-> s5-0 music) (-> s4-0 music))
        )
      (set! (-> s4-0 sound-excitement) (fmax 0.0 (fmin 0.99 (-> s4-0 sound-excitement))))
      (set! (-> s4-0 sound-reverb) (fmax 0.0 (fmin 1.0 (-> s4-0 sound-reverb))))
      (when (and (nonzero? (-> this user-default sound-stinger))
                 (>= (- (-> *display* base-clock frame-counter) (-> this sound-stinger-time)) (seconds 0.5))
                 )
        (set! (-> this user-default sound-stinger) 0)
        0
        )
      (when *sound-player-enable*
        (cond
          ((!= (-> s5-0 sound-flava) (-> s4-0 sound-flava))
           (set! (-> s5-0 sound-flava) (-> s4-0 sound-flava))
           (sound-set-midi-reg 14 (the-as int (-> s5-0 sound-flava)))
           )
          ((!= (-> s5-0 sound-reverb) (-> s4-0 sound-reverb))
           (set! (-> s5-0 sound-reverb) (-> s4-0 sound-reverb))
           (sound-set-reverb 4 (-> s5-0 sound-reverb) (-> s5-0 sound-reverb) (the-as uint 3))
           )
          ((!= (-> s5-0 sound-mode) (-> s4-0 sound-mode))
           (set! (-> s5-0 sound-mode) (-> s4-0 sound-mode))
           (sound-set-midi-reg 3 (the-as int (-> s5-0 sound-mode)))
           )
          ((!= (-> s5-0 sound-tune) (-> s4-0 sound-tune))
           (set! (-> s5-0 sound-tune) (-> s4-0 sound-tune))
           (sound-set-midi-reg 4 (the-as int (-> s5-0 sound-tune)))
           )
          ((!= (-> s5-0 sound-stinger) (-> s4-0 sound-stinger))
           (set! (-> s5-0 sound-stinger) (-> s4-0 sound-stinger))
           (sound-set-midi-reg 0 (-> s5-0 sound-stinger))
           (set! (-> this sound-stinger-time) (-> *display* base-clock frame-counter))
           )
          ((!= (the int (* 4.0 (-> s4-0 sound-excitement))) (the int (* 4.0 (-> this sound-excitement-targ))))
           (let ((v1-103 (max 0 (min 3 (the int (* 4.0 (-> s4-0 sound-excitement)))))))
             (when (and (< (-> this sound-excitement-targ) (-> s4-0 sound-excitement))
                        (< (the-as int (-> this sound-excitement-level)) v1-103)
                        (zero? (-> this user-default sound-stinger))
                        )
               (set! (-> this sound-stinger-time) (-> *display* base-clock frame-counter))
               (set! (-> this sound-stinger-change-time v1-103) (-> *display* base-clock frame-counter))
               (set! (-> this user-default sound-stinger) (+ v1-103 9))
               )
             (cond
               ((< (the-as int (-> this sound-excitement-level)) v1-103)
                (set! (-> this sound-excitement-level) (the-as uint v1-103))
                )
               ((< v1-103 (the-as int (+ (-> this sound-excitement-level) -1)))
                (set! (-> this sound-excitement-level) (the-as uint (+ v1-103 1)))
                )
               ((zero? v1-103)
                (set! (-> this sound-excitement-level) (the-as uint v1-103))
                )
               )
             )
           (set! (-> this sound-excitement-change-time) (-> *display* base-clock frame-counter))
           (set! (-> this sound-excitement-targ) (-> s4-0 sound-excitement))
           )
          ((and (!= (the int (* 4.0 (-> s5-0 sound-excitement))) (the int (* 4.0 (-> this sound-excitement-targ))))
                (>= (- (-> *display* base-clock frame-counter) (-> this sound-excitement-change-time)) (seconds 0.8))
                )
           (max 0 (min 3 (the int (* 4.0 (-> this sound-excitement-targ)))))
           (sound-set-midi-reg 2 (the int (* 100.0 (-> s5-0 sound-excitement))))
           (set! (-> s5-0 sound-excitement) (-> this sound-excitement-targ))
           (sound-set-midi-reg 16 (the int (* 100.0 (-> s5-0 sound-excitement))))
           )
          )
        )
      (when (and (!= (-> s5-0 mode-sound-bank) (-> s4-0 mode-sound-bank)) (zero? (rpc-busy? 1)))
        (when (and (-> s5-0 mode-sound-bank) (-> s4-0 mode-sound-bank))
          (sound-bank-unload (string->sound-name (symbol->string (the-as symbol (-> s5-0 mode-sound-bank)))))
          (set! (-> s5-0 mode-sound-bank) (the-as uint #f))
          )
        (when (and (-> s4-0 mode-sound-bank) (zero? (rpc-busy? 1)))
          (format 0 "Load mode sound-bank ~S~%" (-> s4-0 mode-sound-bank))
          (sound-bank-load (string->sound-name (symbol->string (the-as symbol (-> s4-0 mode-sound-bank)))) 3 2)
          (set! (-> s5-0 mode-sound-bank) (-> s4-0 mode-sound-bank))
          )
        )
      (seek! (-> s5-0 scanlines) (-> s4-0 scanlines) (* 2.0 (-> *display* real-clock seconds-per-frame)))
      (set! (-> s5-0 fog-special-interp-rate) (-> s4-0 fog-special-interp-rate))
      (set! (-> s5-0 fog-special-interp-targ) (fmax 0.0 (fmin 2.0 (-> s4-0 fog-special-interp-targ))))
      (set! (-> s5-0 dust-storm-fog-scalar) (-> s4-0 dust-storm-fog-scalar))
      (set! (-> s5-0 city-heap-load) (-> s4-0 city-heap-load))
      (seek!
        (-> s5-0 dust-storm-sound-scalar)
        (-> s4-0 dust-storm-sound-scalar)
        (/ (-> *display* real-clock seconds-per-frame) 2)
        )
      (set! (-> s5-0 ambient-wind-scalar) (-> s4-0 ambient-wind-scalar))
      (set! (-> s5-0 halfpipe-jump-mult) (-> s4-0 halfpipe-jump-mult))
      (set! (-> s5-0 board-max-speed) (-> s4-0 board-max-speed))
      (set! (-> s5-0 sound-ear-scale) (-> s4-0 sound-ear-scale))
      (set! (-> s5-0 kg-difficulty) (-> s4-0 kg-difficulty))
      (set! (-> s5-0 mh-primary-target) (-> s4-0 mh-primary-target))
      (set! (-> s5-0 ff-primary-target) (-> s4-0 ff-primary-target))
      (set! (-> s5-0 kg-primary-target) (-> s4-0 kg-primary-target))
      (set! (-> s5-0 target-float) (-> s4-0 target-float))
      (set! (-> s5-0 ff-target-float) (-> s4-0 ff-target-float))
      (set! (-> s5-0 kg-target-float) (-> s4-0 kg-target-float))
      (case *city-mode*
        (('ctywide)
         (set-mh-primary-target (-> s5-0 mh-primary-target) (-> s5-0 target-float))
         (set-ff-primary-target (-> s5-0 ff-primary-target) (-> s5-0 target-float))
         (set-kg-primary-target (-> s5-0 kg-primary-target) (-> s5-0 target-float))
         )
        )
      (when (!= (-> s5-0 aspect-ratio) (-> s4-0 aspect-ratio))
        (set! (-> s5-0 aspect-ratio) (-> s4-0 aspect-ratio))
        (set-aspect-ratio (-> s5-0 aspect-ratio))
        )
      (when (!= (-> s5-0 set-video-mode) (-> s4-0 set-video-mode))
        (set! (-> s5-0 set-video-mode) (-> s4-0 set-video-mode))
        (set! (-> *video-params* set-video-mode) #t)
        )
      (when (!= (-> s5-0 video-mode) (-> s4-0 video-mode))
        (set! (-> s5-0 video-mode) (-> s4-0 video-mode))
        (set-video-mode (-> s5-0 video-mode))
        )
      (when (!= (-> s5-0 screenx) (-> s4-0 screenx))
        (set! (-> s5-0 screenx) (-> s4-0 screenx))
        (set! (-> *video-params* display-dx) (/ (-> s4-0 screenx) 2))
        )
      (when (!= (-> s5-0 screeny) (-> s4-0 screeny))
        (set! (-> s5-0 screeny) (-> s4-0 screeny))
        (set! (-> *video-params* display-dy) (* (/ (-> s4-0 screeny) 2) 2))
        )
      (set-horizontal-flip-flag
        *blit-displays-work*
        (logtest? (-> *game-info* secrets) (game-secrets hflip-screen))
        )
      (set! (-> s5-0 letterbox-speed) (-> s4-0 letterbox-speed))
      (seek!
        (-> s5-0 letterbox)
        (-> s4-0 letterbox)
        (* (-> s4-0 letterbox-speed) (-> *display* real-clock seconds-per-frame))
        )
      (set! (-> s5-0 allow-blackout) (-> s4-0 allow-blackout))
      (set! (-> s5-0 bg-a-speed) (-> s4-0 bg-a-speed))
      (set! (-> s5-0 bg-a-force) (-> s4-0 bg-a-force))
      (set! (-> s5-0 bg-r) (-> s4-0 bg-r))
      (set! (-> s5-0 bg-g) (-> s4-0 bg-g))
      (set! (-> s5-0 bg-b) (-> s4-0 bg-b))
      (seek! (-> s5-0 bg-a) (-> s4-0 bg-a) (* (-> s4-0 bg-a-speed) (-> *display* real-clock seconds-per-frame)))
      (let ((s3-9 *display*))
        (let ((f0-119 (-> s5-0 bg-a)))
          (if (!= (-> s5-0 bg-a-force) 0.0)
              (set! f0-119 (-> s5-0 bg-a-force))
              )
          (if (not (-> s5-0 allow-blackout))
              (set! f0-119 0.0)
              )
          (add-blackout
            (seconds 1.935)
            (the int (* 255.0 (-> s5-0 bg-r)))
            (the int (* 255.0 (-> s5-0 bg-g)))
            (the int (* 255.0 (-> s5-0 bg-b)))
            (the int (* 255.0 f0-119))
            )
          )
        (set! (-> s3-9 run-half-speed) (-> s5-0 half-speed))
        )
      (set! (-> s5-0 blur-a-speed) (-> s4-0 blur-a-speed))
      (when (!= (-> s5-0 blur-a) (-> s4-0 blur-a))
        (let ((s3-10 5))
          (if (= (-> s5-0 blur-a) 0.0)
              (set! s3-10 0)
              )
          (seek!
            (-> s5-0 blur-a)
            (-> s4-0 blur-a)
            (* (-> s5-0 blur-a-speed) (-> *display* real-clock seconds-per-frame))
            )
          (setup-zoom-blur-2d
            *blit-displays-work*
            (new 'static 'vector :x 256.0 :y 208.0 :w 1.0)
            s3-10
            (- 1.0 (-> s5-0 blur-a))
            #t
            )
          )
        )
      (set! (-> s5-0 spotlight-color) (-> s4-0 spotlight-color))
      (set! (-> s5-0 highlight-color) (-> s4-0 highlight-color))
      (set! (-> s5-0 minimap-level) (-> s4-0 minimap-level))
      (set! (-> s5-0 bigmap-level) (-> s4-0 bigmap-level))
      (set! (-> s5-0 timer-warn-seconds) (-> s4-0 timer-warn-seconds))
      (set! (-> s5-0 gem-pool-index) (-> s4-0 gem-pool-index))
      )
    (set! (-> *texture-pool* common-page-mask) (-> s5-0 common-page))
    (set! (-> *cpad-list* cpads 0 buzz) (-> s5-0 vibration))
    (let ((v1-202 *ocean*))
      (case (-> s5-0 ocean-off)
        ((#t)
         (set! (-> v1-202 off) #t)
         )
        (('mid)
         (set! (-> v1-202 mid-off) #t)
         )
        (('near)
         (set! (-> v1-202 near-off) #t)
         )
        )
      )
    (set! (-> *mouse* active) (-> s5-0 mouse))
    (set! (-> *mouse* cursor) (and (-> s5-0 mouse) (-> s5-0 cursor)))
    (set! (-> *keybd* active) (-> s5-0 keybd))
    )
  (let ((s5-1 (-> this cam-current)))
    (let ((s4-1 (-> this cam-target)))
      (set! (-> s5-1 entity-or-mode-changed) #f)
      (if (and (not (name= (-> s5-1 entity-name) (-> s4-1 entity-name)))
               (or (not *target*) (not (logtest? (-> *target* focus-status) (-> s4-1 entity-mask))))
               )
          (set! (-> s4-1 entity-or-mode-changed) #t)
          )
      (if (!= (-> s5-1 mode-name) (-> s4-1 mode-name))
          (set! (-> s4-1 entity-or-mode-changed) #t)
          )
      (set! (-> s5-1 teleport-on-entity-change) (-> s4-1 teleport-on-entity-change))
      (cam-master-set-entity s4-1)
      (cond
        ((not (-> s4-1 entity-or-mode-changed))
         )
        ((or (= (-> s5-1 cam-mode) cam-eye) (= (-> s4-1 cam-mode) cam-eye))
         (set! (-> s4-1 no-intro) #t)
         (set! (-> s4-1 interp-time) (the-as uint 60))
         (set! (-> s4-1 interp-time-priority) (the-as uint 2))
         )
        ((= (-> s4-1 cam-mode) cam-endlessfall)
         (set! (-> s4-1 no-intro) #t)
         (set! (-> s4-1 interp-time) (the-as uint 30))
         (set! (-> s4-1 interp-time-priority) (the-as uint 2))
         )
        ((or (= (-> s5-1 cam-mode) cam-free-floating) (= (-> s4-1 cam-mode) cam-free-floating))
         (set! (-> s4-1 interp-time) (the-as uint 0))
         (set! (-> s4-1 interp-time-priority) (the-as uint 2))
         )
        )
      (set! (-> s5-1 cam-slope) (-> s4-1 cam-slope))
      (set! (-> s5-1 entity-name) (-> s4-1 entity-name))
      (set! (-> s5-1 entity-mask) (-> s4-1 entity-mask))
      (set! (-> s5-1 mode-name) (-> s4-1 mode-name))
      (let ((v1-240 (-> s4-1 entity-or-mode-changed)))
        (set! (-> s5-1 entity-or-mode-changed) v1-240)
        (when v1-240
          (set! (-> s5-1 real-entity-name) (-> s4-1 real-entity-name))
          (set! (-> s5-1 cam-mode) (-> s4-1 cam-mode))
          )
        )
      (+! (-> s5-1 fov) (fmax -182.04445 (fmin 182.04445 (* 0.1 (- (-> s4-1 fov) (-> s5-1 fov))))))
      (set! (-> s5-1 fov-priority) (-> s4-1 fov-priority))
      (set! (-> s5-1 pov-handle) (-> s4-1 pov-handle))
      (set! (-> s5-1 pov-bone) (-> s4-1 pov-bone))
      (vector-copy! (-> s5-1 pov-offset) (-> s4-1 pov-offset))
      (set! (-> s5-1 string-default) (-> s4-1 string-default))
      (set! (-> s5-1 string-max-length-default) (-> s4-1 string-max-length-default))
      (set! (-> s5-1 string-min-length-default) (-> s4-1 string-min-length-default))
      (set! (-> s5-1 string-max-height-default) (-> s4-1 string-max-height-default))
      (set! (-> s5-1 string-min-height-default) (-> s4-1 string-min-height-default))
      (set! (-> s5-1 string-max-length) (-> s4-1 string-max-length))
      (set! (-> s5-1 string-min-length) (-> s4-1 string-min-length))
      (set! (-> s5-1 string-max-height) (-> s4-1 string-max-height))
      (set! (-> s5-1 string-min-height) (-> s4-1 string-min-height))
      (set! (-> s5-1 string-cliff-height) (-> s4-1 string-cliff-height))
      (set! (-> s5-1 string-camera-floor) (-> s4-1 string-camera-floor))
      (set! (-> s5-1 string-camera-ceiling) (-> s4-1 string-camera-ceiling))
      (cond
        ((-> s5-1 string-default)
         (set! (-> s5-1 gun-min-height) (-> s4-1 gun-min-height))
         (set! (-> s5-1 gun-max-height) (-> s4-1 gun-max-height))
         )
        (else
          (set! (-> s5-1 gun-min-height) (-> s4-1 string-min-height))
          (set! (-> s5-1 gun-max-height) (-> s4-1 string-max-height))
          )
        )
      (vector-copy! (-> s5-1 string-local-down) (-> s4-1 string-local-down))
      (set! (-> s5-1 slave-options) (-> s4-1 slave-options))
      (seek! (-> s5-1 matrix-blend-max-angle) (-> s4-1 matrix-blend-max-angle) 182.04445)
      (seek! (-> s5-1 matrix-blend-max-partial) (-> s4-1 matrix-blend-max-partial) 0.05)
      (set! (-> s5-1 unk-float0) (-> s4-1 unk-float0))
      (set! (-> s5-1 string-spline-max-move) (-> s4-1 string-spline-max-move))
      (set! (-> s5-1 string-spline-accel) (-> s4-1 string-spline-accel))
      (set! (-> s5-1 string-spline-max-move-player) (-> s4-1 string-spline-max-move-player))
      (set! (-> s5-1 string-spline-accel-player) (-> s4-1 string-spline-accel-player))
      (seek!
        (-> s5-1 target-height)
        (-> s4-1 target-height)
        (* 40960.0 (-> *display* real-clock seconds-per-frame))
        )
      (set! (-> s5-1 head-offset) (-> s4-1 head-offset))
      (set! (-> s5-1 foot-offset) (-> s4-1 foot-offset))
      (set! (-> s5-1 master-options) (-> s4-1 master-options))
      (set! (-> s5-1 no-intro) (-> s4-1 no-intro))
      (set! (-> s5-1 flip-horizontal) (-> s4-1 flip-horizontal))
      (set! (-> s5-1 flip-vertical) (-> s4-1 flip-vertical))
      (set! (-> s5-1 mouse-input) (-> s4-1 mouse-input))
      (set! (-> s5-1 cpad1-skip-buttons) (-> s4-1 cpad1-skip-buttons))
      (set! (-> s5-1 interp-time) (-> s4-1 interp-time))
      (set! (-> s5-1 interp-time-priority) (-> s4-1 interp-time-priority))
      (set! (-> s5-1 use-string-startup-vector) (-> s4-1 use-string-startup-vector))
      (vector-copy! (-> s5-1 string-startup-vector) (-> s4-1 string-startup-vector))
      (set! (-> s5-1 use-look-at-point) (-> s4-1 use-look-at-point))
      (vector-copy! (-> s5-1 look-at-point) (-> s4-1 look-at-point))
      (set! (-> s5-1 use-point-of-interest) (-> s4-1 use-point-of-interest))
      (vector-copy! (-> s5-1 point-of-interest) (-> s4-1 point-of-interest))
      (set! (-> s5-1 use-mouse-tumble-point) (-> s4-1 use-mouse-tumble-point))
      (vector-copy! (-> s5-1 mouse-tumble-point) (-> s4-1 mouse-tumble-point))
      (set! (-> s5-1 handle-of-interest) (-> s4-1 handle-of-interest))
      (let ((a0-159 (as-type (handle->process (-> s5-1 handle-of-interest)) process-focusable)))
        (when a0-159
          (set! (-> s5-1 use-point-of-interest) #t)
          (vector-copy! (-> s5-1 point-of-interest) (get-trans (the-as process-focusable a0-159) 4))
          )
        )
      (vector-copy! (-> this cam-default point-of-interest) (-> s5-1 point-of-interest))
      (set! (-> s5-1 butt-handle) (-> s4-1 butt-handle))
      (set! (-> s5-1 butt-angle) (-> s4-1 butt-angle))
      (set! (-> s5-1 extra-follow-height) (-> s4-1 extra-follow-height))
      )
    (if (-> s5-1 entity-or-mode-changed)
        (cam-master-activate-slave #f)
        )
    )
  (-> this user-current)
  )

(when (zero? *setting-control*)
  (kmemopen global "settings-struct")
  (set! *setting-control* (new 'global 'setting-control 64))
  (kmemclose)
  (let ((gp-0 (-> *setting-control* user-default))
        (s5-0 (-> *setting-control* user-current))
        )
    (let ((f0-1 (the float (scf-get-volume))))
      (set! (-> gp-0 ocean-off) #f)
      (set! (-> gp-0 weather) #t)
      (set! (-> gp-0 cursor) #f)
      (set! (-> gp-0 mouse) #f)
      (set! (-> gp-0 keybd) #f)
      (set! (-> gp-0 allow-look-around) #t)
      (set! (-> gp-0 border-mode) #f)
      (set! (-> gp-0 region-mode) #t)
      (set! (-> gp-0 level-trans-time) 1500)
      (set! (-> gp-0 sfx-volume) (* 0.01000001 f0-1))
      (set! (-> gp-0 music-volume) (* 0.01000001 f0-1))
      (set! (-> gp-0 dialog-volume) (* 0.01000001 f0-1))
      (set! (-> gp-0 ambient-volume) (* 0.01000001 f0-1))
      (set! (-> gp-0 special-volume) (* 0.01000001 f0-1))
      (set! (-> gp-0 unk-volume) (* 0.01000001 f0-1))
      (set! (-> gp-0 dynamic-ambient-volume) (* 0.0 f0-1))
      (set! (-> gp-0 sfx-volume-movie) (* 0.0 f0-1))
      (set! (-> gp-0 music-volume-movie) (* 0.0 f0-1))
      (set! (-> gp-0 ambient-volume-movie) (* 0.0 f0-1))
      (set! (-> gp-0 dialog-volume-talker) (* 0.01000001 f0-1))
      (set! (-> gp-0 talker-volume) (* 0.009000009 f0-1))
      )
    (set! (-> gp-0 spotlight-color) (new 'static 'rgba :r #xf0 :g #xf0 :b #xf0 :a #x80))
    (set! (-> gp-0 highlight-color) (new 'static 'rgba :r #xf0 :g #xf0 :b #xf0 :a #x80))
    (set! (-> gp-0 task-mask) (task-mask vehicle ctywide never))
    (set! (-> gp-0 task-manager) (the-as (pointer process) #f))
    (set! (-> gp-0 task) #f)
    (set! (-> gp-0 exclusive-task-count) (the-as uint 0))
    (set! (-> gp-0 exclusive-load) (the-as symbol '()))
    (set! (-> gp-0 minimap) (the-as uint 160))
    (set! (-> gp-0 race-minimap) 0)
    (set! (-> gp-0 language) (scf-get-language))
    (set! (-> gp-0 subtitle-language) (-> gp-0 language))
    (let ((v1-23 (-> gp-0 language)))
      (set! (-> gp-0 audio-language)
            (if (or (= v1-23 (language-enum uk-english))
                    (= v1-23 (language-enum korean))
                    (= v1-23 (language-enum russian))
                    (= v1-23 (language-enum dutch))
                    (= v1-23 (language-enum portuguese))
                    )
                (language-enum english)
                (the-as language-enum (the-as int (-> gp-0 language)))
                )
            )
      )
    (set! (-> gp-0 process-mask) (process-mask execute sleep))
    (set! (-> gp-0 set-video-mode) #f)
    (set! (-> *video-params* smode2) (the-as uint (if (-> gp-0 set-video-mode)
                                                      1
                                                      0
                                                      )
                                             )
          )
    (set! (-> gp-0 screenx) 0)
    (set! (-> gp-0 screeny) 0)
    (set! (-> gp-0 vibration)
          (if (or (= *kernel-boot-message* 'demo)
                  (or (= *kernel-boot-message* 'demo-shared) (nonzero? (scf-get-territory)))
                  )
              #f
              #t
              )
          )
    (set! (-> gp-0 camera-stick-dir) #f)
    (set! (-> gp-0 auto-save) #f)
    (set! (-> gp-0 play-hints) #t)
    (set! (-> gp-0 sound-bank-load) #t)
    (set! (-> gp-0 subtitle)
          (if (or (= *kernel-boot-message* 'demo)
                  (or (= *kernel-boot-message* 'demo-shared) (and (!= (scf-get-territory) 1) (!= *kernel-boot-message* 'kiosk)))
                  )
              #f
              #t
              )
          )
    (let ((v1-40 (scf-get-territory)))
      (set! (-> gp-0 beard) (if (or (= v1-40 2) (= v1-40 3))
                                #f
                                #t
                                )
            )
      )
    (set! (-> gp-0 movie) (the-as (pointer process) #f))
    (set! (-> gp-0 movie-name) #f)
    (set! (-> gp-0 restart-info) #f)
    (set! (-> gp-0 fail-info) #f)
    (set! (-> gp-0 death-info) #f)
    (set! (-> gp-0 quit-info) #f)
    (set! (-> gp-0 talking) (the-as (pointer process) #f))
    (set! (-> gp-0 spooling) (the-as (pointer process) #f))
    (set! (-> gp-0 spool-anim) #f)
    (set! (-> gp-0 sound-ear) (the-as handle #f))
    (set! (-> gp-0 hint) (the-as (pointer process) #f))
    (set! (-> gp-0 ambient) (the-as (pointer process) #f))
    (set! (-> gp-0 duck) #t)
    (set! (-> gp-0 jump) #t)
    (set! (-> gp-0 double-jump) #t)
    (set! (-> gp-0 darkjak) #t)
    (set! (-> gp-0 lightjak) #t)
    (set! (-> gp-0 endlessfall) #t)
    (set! (-> gp-0 pilot) #t)
    (set! (-> gp-0 pilot-exit) #t)
    (set! (-> gp-0 pilot-death) #f)
    (set! (-> gp-0 turbo) #t)
    (set! (-> gp-0 attack) #t)
    (set! (-> gp-0 board) #t)
    (set! (-> gp-0 board-trail) #f)
    (set! (-> gp-0 cloth) #t)
    (set! (-> gp-0 armor) #t)
    (set! (-> gp-0 gun-special-mode) #f)
    (set! (-> gp-0 gun) #t)
    (set! (-> gp-0 change-gun) #f)
    (set! (-> gp-0 gun-eject) #t)
    (set! (-> gp-0 disable-parking-spots?) #f)
    (set! (-> gp-0 nuke-active?) #f)
    (set! (-> gp-0 disable-guard-chatter?) #f)
    (set! (-> gp-0 use-alternate-bouncer?) #f)
    (set! (-> gp-0 gem-seek-target-dir?) #f)
    (set! (-> gp-0 doorway) #f)
    (set! (-> gp-0 dive) #t)
    (set! (-> gp-0 airlock) #t)
    (set! (-> gp-0 airlock-command) '())
    (set! (-> gp-0 gun-buoy) #t)
    (set! (-> gp-0 speech-control) #t)
    (set! (-> gp-0 vehicle-hijacking) #t)
    (set! (-> gp-0 traffic-spawn) #t)
    (set! (-> gp-0 hide-crates?) #f)
    (set! (-> gp-0 pickups) #t)
    (set! (-> gp-0 duststorm-push-player?) #t)
    (set! (-> gp-0 part-bounds-check) #t)
    (set! (-> gp-0 citizen-fights) #t)
    (set! (-> gp-0 allow-logo) #t)
    (set! (-> gp-0 freeze-screen) #f)
    (set! (-> gp-0 unique-vehicle-mission-critical) #t)
    (set! (-> gp-0 ignore-target) #f)
    (set! (-> gp-0 gem) #t)
    (set! (-> gp-0 half-speed) #f)
    (set! (-> gp-0 render) #t)
    (set! (-> gp-0 speed-mult) 1.0)
    (set! (-> gp-0 rain) 0.0)
    (set! (-> gp-0 snow) 0.0)
    (set! (-> gp-0 scarf) 0.0)
    (set! (-> gp-0 goggles) 0.0)
    (set! (-> gp-0 features) (the-as game-feature -1))
    (set! (-> gp-0 vehicles) (game-vehicles))
    (set! (-> gp-0 sound-flava) (the-as uint 0))
    (set! (-> gp-0 sound-flava-priority) 0.0)
    (set! (-> gp-0 sound-reverb) 0.0)
    (set! (-> gp-0 mode-sound-bank) (the-as uint #f))
    (set! (-> gp-0 music) #f)
    (dotimes (v1-75 3)
      (set! (-> gp-0 extra-bank v1-75) '())
      )
    (dotimes (v1-78 3)
      (set! (-> gp-0 borrow v1-78) '())
      )
    (dotimes (v1-81 3)
      (set! (-> gp-0 borrow-city v1-81) '())
      )
    (dotimes (v1-84 3)
      (set! (-> gp-0 city-sound v1-84) '())
      )
    (dotimes (v1-87 3)
      (set! (-> gp-0 faction-command v1-87) '())
      )
    (dotimes (v1-90 3)
      (set! (-> gp-0 borrow-hold v1-90) '())
      (set! (-> gp-0 borrow-hold-perm v1-90) '())
      )
    (set! (-> gp-0 bg-a-speed) 8.0)
    (set! (-> gp-0 under-water-pitch-mod) 0.0)
    (set! (-> gp-0 slow-time) 0.0)
    (set! (-> gp-0 allow-pause) #t)
    (set! (-> gp-0 allow-progress) #t)
    (set! (-> gp-0 allow-continue) #t)
    (set! (-> gp-0 allow-timeout) #f)
    (set! (-> gp-0 allow-error) #t)
    (set! (-> gp-0 mirror) #f)
    (set! (-> gp-0 common-page) 1)
    (set! (-> gp-0 stereo-mode) 2)
    (set! (-> gp-0 movie-skip-frame) -1.0)
    (set! (-> gp-0 allow-blackout) #t)
    (set! (-> gp-0 letterbox) 0.0)
    (set! (-> gp-0 letterbox-speed) 60.0)
    (set! (-> gp-0 fog-special-interp-targ) 0.0)
    (set! (-> gp-0 fog-special-interp-rate) 0.1)
    (set! (-> gp-0 dust-storm-fog-scalar) 1.0)
    (set! (-> gp-0 dust-storm-sound-scalar) 0.5)
    (set! (-> gp-0 city-heap-load) 0.5)
    (set! (-> gp-0 mh-primary-target) (the-as handle #f))
    (set! (-> gp-0 target-float) 0.0)
    (set! (-> gp-0 kg-primary-target) (the-as handle #f))
    (set! (-> gp-0 kg-difficulty) 1.0)
    (set! (-> gp-0 ambient-wind-scalar) 1.0)
    (set! (-> gp-0 halfpipe-jump-mult) 1.0)
    (set! (-> gp-0 board-max-speed) 409600.0)
    (set! (-> gp-0 sound-ear-scale) 1.0)
    (set! (-> gp-0 lock-sound-camera-to-target) #f)
    (set! (-> gp-0 kg-target-float) 0.0)
    (set! (-> gp-0 ff-primary-target) (the-as handle #f))
    (set! (-> gp-0 ff-target-float) 0.0)
    (set! (-> gp-0 global-wind) #f)
    (set! (-> gp-0 kg-enemy-settings) #f)
    (set! (-> gp-0 mh-enemy-settings) #f)
    (set! (-> gp-0 ff-enemy-settings) #f)
    (set! (-> gp-0 player-control-override) #f)
    (set! (-> gp-0 player-control-mask) (the-as uint 0))
    (set! (-> gp-0 stop-vehicle?) #f)
    (set! (-> gp-0 stop-boats?) #f)
    (set! (-> gp-0 gun-target-guards?) #t)
    (set! (-> gp-0 bg-a) 1.0)
    (set! (-> gp-0 blur-a) 0.0)
    (set! (-> gp-0 blur-a-speed) 1.0)
    (set! (-> gp-0 brightness) 0.5)
    (set! (-> gp-0 contrast) 0.5)
    (set! (-> gp-0 scanlines) 0.0)
    (set! (-> gp-0 sky-type) #f)
    (set! (-> gp-0 timer-warn-seconds) (the-as uint 10))
    (set! (-> gp-0 gem-pool-index) 0)
    (case (scf-get-aspect)
      ((2)
       (set! (-> gp-0 aspect-ratio) 'aspect16x9)
       )
      (else
        (set! (-> gp-0 aspect-ratio) 'aspect4x3)
        )
      )
    (if (zero? *boot-video-mode*)
        (set! (-> gp-0 video-mode) 'ntsc)
        (set! (-> gp-0 video-mode) 'pal)
        )
    (set! (-> gp-0 minimap-level) #f)
    (set! (-> gp-0 bigmap-level) #f)
    (set! (-> s5-0 sfx-volume) (+ -0.01 (-> gp-0 sfx-volume)))
    (set! (-> s5-0 music-volume) (+ -0.01 (-> gp-0 music-volume)))
    (set! (-> s5-0 dialog-volume) (+ -0.01 (-> gp-0 dialog-volume)))
    (set! (-> s5-0 ambient-volume) (+ -0.01 (-> gp-0 ambient-volume)))
    (set! (-> s5-0 special-volume) (+ -0.01 (-> gp-0 special-volume)))
    (set! (-> s5-0 unk-volume) (+ -0.01 (-> gp-0 unk-volume)))
    (set! (-> s5-0 dynamic-ambient-volume) (-> gp-0 dynamic-ambient-volume))
    (set! (-> s5-0 sfx-volume-movie) (-> gp-0 sfx-volume-movie))
    (set! (-> s5-0 music-volume-movie) (-> gp-0 music-volume-movie))
    (set! (-> s5-0 ambient-volume-movie) (-> gp-0 ambient-volume-movie))
    (set! (-> s5-0 dialog-volume-talker) (-> gp-0 dialog-volume-talker))
    (set! (-> s5-0 talker-volume) (-> gp-0 talker-volume))
    (set! (-> s5-0 spotlight-color) (-> gp-0 spotlight-color))
    (set! (-> s5-0 highlight-color) (-> gp-0 highlight-color))
    (set! (-> s5-0 movie) (-> gp-0 movie))
    (set! (-> s5-0 movie-name) (-> gp-0 movie-name))
    (set! (-> s5-0 restart-info) (-> gp-0 restart-info))
    (set! (-> s5-0 quit-info) (-> gp-0 quit-info))
    (set! (-> s5-0 death-info) (-> gp-0 death-info))
    (set! (-> s5-0 fail-info) (-> gp-0 fail-info))
    (set! (-> s5-0 talking) (-> gp-0 talking))
    (set! (-> s5-0 spooling) (-> gp-0 spooling))
    (set! (-> s5-0 spool-anim) (-> gp-0 spool-anim))
    (set! (-> s5-0 sound-ear) (-> gp-0 sound-ear))
    (set! (-> s5-0 hint) (-> gp-0 hint))
    (set! (-> s5-0 ambient) (-> gp-0 ambient))
    (set! (-> s5-0 level-trans-time) (-> gp-0 level-trans-time))
    (set! (-> s5-0 language) (+ (-> gp-0 language) -1))
    (set! (-> s5-0 subtitle-language) (-> gp-0 subtitle-language))
    (set! (-> s5-0 aspect-ratio) #f)
    (set! (-> s5-0 set-video-mode) #f)
    (set! (-> s5-0 video-mode) #f)
    (set! (-> s5-0 music) #f)
    (dotimes (v1-148 3)
      (set! (-> s5-0 extra-bank v1-148) '())
      )
    (dotimes (v1-151 3)
      (set! (-> s5-0 borrow v1-151) '())
      )
    (dotimes (v1-154 3)
      (set! (-> s5-0 borrow-city v1-154) '())
      )
    (dotimes (v1-157 3)
      (set! (-> gp-0 city-sound v1-157) '())
      )
    (dotimes (v1-160 3)
      (set! (-> s5-0 faction-command v1-160) '())
      )
    (set! (-> s5-0 allow-blackout) (-> gp-0 allow-blackout))
    (set! (-> s5-0 letterbox) (-> gp-0 letterbox))
    (set! (-> s5-0 letterbox-speed) (-> gp-0 letterbox-speed))
    (set! (-> s5-0 bg-a-speed) (-> gp-0 bg-a-speed))
    (set! (-> s5-0 under-water-pitch-mod) (-> gp-0 under-water-pitch-mod))
    (set! (-> s5-0 slow-time) (-> gp-0 slow-time))
    (set! (-> s5-0 allow-pause) (-> gp-0 allow-pause))
    (set! (-> s5-0 allow-progress) (-> gp-0 allow-progress))
    (set! (-> s5-0 allow-continue) (-> gp-0 allow-continue))
    (set! (-> s5-0 allow-look-around) (-> gp-0 allow-look-around))
    (set! (-> s5-0 allow-timeout) (-> gp-0 allow-timeout))
    (set! (-> s5-0 allow-error) (-> gp-0 allow-error))
    (set! (-> s5-0 mirror) (-> gp-0 mirror))
    (set! (-> s5-0 ocean-off) (-> gp-0 ocean-off))
    (set! (-> s5-0 weather) (-> gp-0 weather))
    (set! (-> s5-0 mouse) (-> gp-0 mouse))
    (set! (-> s5-0 cursor) (-> gp-0 cursor))
    (set! (-> s5-0 keybd) (-> gp-0 keybd))
    (set! (-> s5-0 mode-sound-bank) (the-as uint #f))
    (set! (-> s5-0 sound-reverb) (+ 0.01 (-> gp-0 sound-reverb)))
    (set! (-> s5-0 stereo-mode) 1)
    (set! (-> s5-0 duck) (-> gp-0 duck))
    (set! (-> s5-0 jump) (-> gp-0 jump))
    (set! (-> s5-0 double-jump) (-> gp-0 double-jump))
    (set! (-> s5-0 darkjak) (-> gp-0 darkjak))
    (set! (-> s5-0 lightjak) (-> gp-0 lightjak))
    (set! (-> s5-0 endlessfall) (-> gp-0 endlessfall))
    (set! (-> s5-0 pilot) (-> gp-0 pilot))
    (set! (-> s5-0 pilot-exit) (-> gp-0 pilot-exit))
    (set! (-> s5-0 pilot-death) (-> gp-0 pilot-death))
    (set! (-> s5-0 turbo) (-> gp-0 turbo))
    (set! (-> s5-0 attack) (-> gp-0 attack))
    (set! (-> s5-0 gun) (-> gp-0 gun))
    (set! (-> s5-0 change-gun) (-> gp-0 change-gun))
    (set! (-> s5-0 gun-eject) (-> gp-0 gun-eject))
    (set! (-> s5-0 disable-parking-spots?) (-> gp-0 disable-parking-spots?))
    (set! (-> s5-0 nuke-active?) (-> gp-0 nuke-active?))
    (set! (-> s5-0 disable-guard-chatter?) (-> gp-0 disable-guard-chatter?))
    (set! (-> s5-0 use-alternate-bouncer?) (-> gp-0 use-alternate-bouncer?))
    (set! (-> s5-0 gem-seek-target-dir?) (-> gp-0 gem-seek-target-dir?))
    (set! (-> s5-0 doorway) (-> gp-0 doorway))
    (set! (-> s5-0 dive) (-> gp-0 dive))
    (set! (-> s5-0 board) (-> gp-0 board))
    (set! (-> s5-0 board-trail) (-> gp-0 board-trail))
    (set! (-> s5-0 cloth) (-> gp-0 cloth))
    (set! (-> s5-0 armor) (-> gp-0 armor))
    (set! (-> s5-0 gun-special-mode) (-> gp-0 gun-special-mode))
    (set! (-> s5-0 gem) (-> gp-0 gem))
    (set! (-> s5-0 hide-crates?) (-> gp-0 hide-crates?))
    (set! (-> s5-0 pickups) (-> gp-0 pickups))
    (set! (-> s5-0 half-speed) (-> gp-0 half-speed))
    (set! (-> s5-0 render) (-> gp-0 render))
    (set! (-> s5-0 speed-mult) (-> gp-0 speed-mult))
    (set! (-> s5-0 rain) (-> gp-0 rain))
    (set! (-> s5-0 snow) (-> gp-0 snow))
    (set! (-> s5-0 scarf) (-> gp-0 scarf))
    (set! (-> s5-0 goggles) (-> gp-0 goggles))
    (set! (-> s5-0 movie-skip-frame) (-> gp-0 movie-skip-frame))
    (set! (-> s5-0 airlock) (-> gp-0 airlock))
    (set! (-> s5-0 airlock-command) (-> gp-0 airlock-command))
    (set! (-> s5-0 gun-buoy) (-> gp-0 gun-buoy))
    (set! (-> s5-0 ignore-target) (-> gp-0 ignore-target))
    (set! (-> s5-0 speech-control) (-> gp-0 speech-control))
    (set! (-> s5-0 vehicle-hijacking) (-> gp-0 vehicle-hijacking))
    (set! (-> s5-0 traffic-spawn) (-> gp-0 traffic-spawn))
    (set! (-> s5-0 features) (-> gp-0 features))
    (set! (-> s5-0 vehicles) (-> gp-0 vehicles))
    (set! (-> s5-0 task-mask) (-> gp-0 task-mask))
    (set! (-> s5-0 task) (-> gp-0 task))
    (set! (-> s5-0 exclusive-load) (-> gp-0 exclusive-load))
    (set! (-> s5-0 task-manager) (-> gp-0 task-manager))
    (set! (-> s5-0 bg-a) (-> gp-0 bg-a))
    (set! (-> s5-0 blur-a) (-> gp-0 blur-a))
    (set! (-> s5-0 blur-a-speed) (-> gp-0 blur-a-speed))
    (set! (-> s5-0 minimap-level) (-> gp-0 minimap-level))
    (set! (-> s5-0 bigmap-level) (-> gp-0 bigmap-level))
    (set! (-> s5-0 brightness) (-> gp-0 brightness))
    (set! (-> s5-0 contrast) (-> gp-0 contrast))
    (set! (-> s5-0 scanlines) (-> gp-0 scanlines))
    (set! (-> s5-0 sky-type) (-> gp-0 sky-type))
    (set! (-> s5-0 timer-warn-seconds) (-> gp-0 timer-warn-seconds))
    (set! (-> s5-0 gem-pool-index) (-> gp-0 gem-pool-index))
    )
  (let ((v1-228 (-> *setting-control* cam-default)))
    (let ((a0-49 (-> *setting-control* cam-current)))
      (set! (-> v1-228 fov) 11650.845)
      (set! (-> v1-228 pov-handle) (the-as handle #f))
      (set! (-> v1-228 pov-bone) 0)
      (vector-reset! (-> v1-228 pov-offset))
      (set! (-> v1-228 string-default) #t)
      (set! (-> v1-228 string-max-length-default) #t)
      (set! (-> v1-228 string-min-length-default) #t)
      (set! (-> v1-228 string-max-height-default) #t)
      (set! (-> v1-228 string-min-height-default) #t)
      (set! (-> v1-228 string-max-length) 51200.0)
      (set! (-> v1-228 string-min-length) 20480.0)
      (set! (-> v1-228 string-max-height) 12288.0)
      (set! (-> v1-228 string-min-height) 4096.0)
      (set! (-> v1-228 string-cliff-height) 163840.0)
      (set! (-> v1-228 string-camera-floor) -4096000000.0)
      (set! (-> v1-228 string-camera-ceiling) 4096000000.0)
      (set! (-> v1-228 gun-min-height) -4096.0)
      (set! (-> v1-228 gun-max-height) 32768.0)
      (set-vector! (-> v1-228 string-local-down) 0.0 -1.0 0.0 1.0)
      (set! (-> v1-228 slave-options) (cam-slave-options JUMP_PITCHES COLLIDE LINE_OF_SIGHT))
      (set! (-> v1-228 matrix-blend-max-angle) 364.0889)
      (set! (-> v1-228 matrix-blend-max-partial) 0.25)
      (set! (-> v1-228 unk-float0) 1.0)
      (set! (-> v1-228 string-spline-max-move) 2457.6)
      (set! (-> v1-228 string-spline-accel) 20.48)
      (set! (-> v1-228 string-spline-max-move-player) 2457.6)
      (set! (-> v1-228 string-spline-accel-player) 102.4)
      (set! (-> v1-228 target-height) (-> *CAMERA_MASTER-bank* target-height))
      (set! (-> v1-228 head-offset) (-> *CAMERA_MASTER-bank* onscreen-head-height))
      (set! (-> v1-228 foot-offset) (-> *CAMERA_MASTER-bank* onscreen-foot-height))
      (set! (-> v1-228 teleport-on-entity-change) #f)
      (set! (-> v1-228 cam-slope) #f)
      (set! (-> v1-228 entity-name) #f)
      (set! (-> v1-228 entity-mask) (the-as uint 32))
      (set! (-> v1-228 entity-or-mode-changed) #f)
      (set! (-> v1-228 master-options) (cam-master-options READ_BUTTONS))
      (set! (-> v1-228 mode-name) #f)
      (set! (-> v1-228 real-entity-name) #f)
      (set! (-> v1-228 cam-mode) #f)
      (set! (-> v1-228 no-intro) #f)
      (set! (-> v1-228 flip-vertical) #f)
      (set! (-> v1-228 flip-horizontal) #f)
      (set! (-> v1-228 mouse-input) #f)
      (set! (-> v1-228 cpad1-skip-buttons) #f)
      (set! (-> v1-228 interp-time) (the-as uint 450))
      (set! (-> v1-228 interp-time-priority) (the-as uint 0))
      (set! (-> v1-228 use-string-startup-vector) #f)
      (set! (-> v1-228 use-look-at-point) #f)
      (set! (-> v1-228 use-point-of-interest) #f)
      (set! (-> v1-228 use-mouse-tumble-point) #f)
      (set! (-> v1-228 handle-of-interest) (the-as handle #f))
      (set! (-> a0-49 mouse-input) (-> v1-228 mouse-input))
      (set! (-> a0-49 cpad1-skip-buttons) (-> v1-228 cpad1-skip-buttons))
      (set! (-> a0-49 teleport-on-entity-change) (-> v1-228 teleport-on-entity-change))
      (set! (-> a0-49 cam-slope) (-> v1-228 cam-slope))
      (set! (-> a0-49 entity-name) (-> v1-228 entity-name))
      (set! (-> a0-49 entity-mask) (-> v1-228 entity-mask))
      (set! (-> a0-49 mode-name) (-> v1-228 mode-name))
      (set! (-> a0-49 real-entity-name) (-> v1-228 real-entity-name))
      (set! (-> a0-49 cam-mode) (-> v1-228 cam-mode))
      (set! (-> a0-49 use-string-startup-vector) (-> v1-228 use-string-startup-vector))
      (set! (-> a0-49 use-point-of-interest) (-> v1-228 use-point-of-interest))
      (set! (-> a0-49 use-mouse-tumble-point) (-> v1-228 use-mouse-tumble-point))
      (set! (-> a0-49 handle-of-interest) (-> v1-228 handle-of-interest))
      )
    (set! (-> v1-228 butt-handle) (the-as handle #f))
    (set! (-> v1-228 butt-angle) 32768.0)
    (set! (-> v1-228 extra-follow-height) 0.0)
    )
  )
