jak-project/goal_src/pc_debug/font-encode-test.gc
ManDude 0e96cdb6c5
[de/compiler] New text tool (#918)
* fix `citb-drop-plat` a bit and PAL `fisher`

* Clean up `pc-pad-utils`. Looks so clean!

* Increase process stacks by ~2x

* Convert `game_text` custom encoding to and from a readable one (UTF-8)

* clang

* add missing characters

* support all diacritic variants

* fix a character

* remaining cases

* fix tests

* fix memory leak?

* clang

* add custom characters w/ diacritics

* Update all-types.gc

* robustness

* minor bug

* move custom font decoding function to `FontUtils.cpp`

* Move valid source chars patching to Reader constructor
2021-10-19 00:02:18 -04:00

105 lines
3.4 KiB
Common Lisp

;;-*-Lisp-*-
(in-package goal)
;; This file is used for debugging and testing the large font encoding.
;; This file should *not* be included as part of any packages, it should be manually loaded by the user.
;; To run this:
#|
(make-group "iso") ;; build the game
(lt) ;; connect to the runtime
(lg) ;; have the runtime load the game engine
(test-play) ;; start the game loop
(ml "goal_src/pc_debug/font-encode-test.gc") ;; build and load this file.
|#
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; constants
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defconstant FONT_ENCODE_TEXT_LEFT 56)
(defconstant FONT_ENCODE_TEXT_Y 80)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; functions
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define *font-string* (new 'global 'string 64 (the-as string #f)))
(define *font-string-ex* "")
(define *font-string-val* #x96)
(defun-debug font-encode-test-start ()
"start the encode test proc"
(unless (process-by-name 'font-encode *active-pool*)
(make-function-process process :name 'font-encode
(lambda :behavior process ()
(stack-size-set! (-> self main-thread) 768)
(let ((fnt (new 'stack 'font-context *font-default-matrix* FONT_ENCODE_TEXT_LEFT FONT_ENCODE_TEXT_Y 0.0
(font-color orange-red) (font-flags shadow kerning large middle)))
)
(set-width! fnt 400)
(set-height! fnt 100)
(loop
(suspend)
(if (or (cpad-pressed? 0 left) (cpad-hold? 0 l1))
(-! *font-string-val* 1)
)
(if (or (cpad-pressed? 0 right) (cpad-hold? 0 r1))
(+! *font-string-val* 1)
)
(if (< *font-string-val* 1)
(set! *font-string-val* 1)
)
(if (> *font-string-val* #x1ff)
(set! *font-string-val* #x1ff)
)
(clear *font-string*)
(cond
((>= *font-string-val* #x100)
(set! (-> *font-string* data 0) (/ *font-string-val* 256))
(set! (-> *font-string* data 1) (mod *font-string-val* 256))
(set! (-> *font-string* data 2) 0)
)
(else
(set! (-> *font-string* data 0) (mod *font-string-val* 256))
(set! (-> *font-string* data 1) 0)
)
)
(set-origin! fnt FONT_ENCODE_TEXT_LEFT FONT_ENCODE_TEXT_Y)
(set-flags! fnt (font-flags shadow kerning large middle))
(print-game-text *font-string* fnt #f 128 24)
(set-origin! fnt FONT_ENCODE_TEXT_LEFT (+ FONT_ENCODE_TEXT_Y 32))
(print-game-text *font-string-ex* fnt #f 128 24)
(set-origin! fnt FONT_ENCODE_TEXT_LEFT (- FONT_ENCODE_TEXT_Y 16))
(set-flags! fnt (font-flags shadow kerning middle))
(print-game-text (string-format "#x~X" *font-string-val*) fnt #f 128 12)
)
)
)
)
)
)
(defun-debug font-encode-test-stop ()
"stop the encode test proc"
(kill-by-name 'font-encode *active-pool*)
)