[jak2] workaround for cutscene playing (#2131)

This commit is contained in:
water111
2023-01-16 13:37:29 -05:00
committed by GitHub
parent 7fdef1c509
commit 7d7625f4f8
76 changed files with 4704 additions and 1299 deletions
+1
View File
@@ -26,6 +26,7 @@ class Wrapper {
std::vector<std::string> examples{};
std::vector<std::pair<std::string, replxx::Replxx::Color>> regex_colors{};
Wrapper(GameVersion version) : repl_config(version) {}
Wrapper(const std::string& _username, const Config& config, const StartupFile& startup)
: username(_username), repl_config(config), startup_file(startup) {}
replxx::Replxx& get_repl() { return repl; }
+1 -1
View File
@@ -48,7 +48,7 @@ std::string trim_newline_indents(const std::string& s) {
std::string join(const std::vector<std::string>& strs, const std::string& join_with) {
std::string out;
for (int i = 0; i < strs.size(); i++) {
for (size_t i = 0; i < strs.size(); i++) {
out += strs.at(i);
if (i < strs.size() - 1) {
out += join_with;
+60 -20
View File
@@ -16172,7 +16172,7 @@
(deftype collide-prim-core (structure)
((world-sphere vector :inline :offset-assert 0)
(collide-as collide-spec :offset-assert 16) ;; guessed by decompiler
(collide-as collide-spec :offset 16) ;; guessed by decompiler
(collide-with collide-spec :offset-assert 20)
(action collide-action :offset-assert 24) ;; guessed by decompiler
(prim-type prim-type :offset-assert 28)
@@ -16513,7 +16513,7 @@
(try-snap-to-surface (_type_ vector float float float) symbol 64)
(fill-and-try-snap-to-surface (_type_ vector float float float collide-query) symbol 65)
(step-collison! (_type_ vector vector float int) float 66)
(collide-shape-moving-method-67 () none 67)
(collide-with-all-collide-cache-prims (_type_ matrix collide-query) none 67)
)
)
@@ -24479,7 +24479,7 @@
;; (define-extern hflip-disp function)
(define-extern blit-displays (function none))
(define-extern draw-color-bars (function none))
;; (define-extern draw-raw-image function)
(define-extern draw-raw-image (function bucket-id art-group int int level int none))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; font-data ;;
@@ -32312,8 +32312,15 @@
;; idle-control ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defenum ic-cmd
:type uint8
(restart 0)
(play 1)
(push 2)
)
(deftype idle-control-frame (uint32)
((command uint8 :offset 0)
((command ic-cmd :offset 0)
(anim uint8 :offset 8)
(param0 uint8 :offset 16)
(param1 uint8 :offset 24)
@@ -33725,6 +33732,32 @@
:flag-assert #x900000008
)
(deftype rb-work (structure)
((cquery collide-query :inline)
(mat-1 matrix :inline :offset 544)
(vec-2 vector :inline :offset 608)
(vec-5 vector :inline :offset 624)
(vec-3 vector :inline :offset 640)
(float-4 float :offset 656)
(pat-id pat-surface :offset 660)
(rbody rigid-body :offset 664)
(prim-id int32 :offset 668)
(vec-1 vector :inline :offset 672)
(quat-1 quaternion :inline)
(vec-8 vector :inline :offset 704)
(vec-4 vector :inline :offset 720)
(vec-6 vector :inline)
(vec-7 vector :inline)
(vec-9 vector :inline)
(float-2 float :offset 784)
(float-3 float)
(dt float :offset 792)
(float-1 float)
(cnt int8 :offset 800)
)
)
(define-extern *rigid-body-work* rigid-body-work)
(define-extern matrix-3x3-triple-transpose-product (function matrix matrix matrix matrix))
(define-extern damping-time-adjust (function float float float))
@@ -44268,35 +44301,42 @@
;; title-obs ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#|
(deftype title-control (process)
()
((selected int32 :offset-assert 128)
(sprites hud-sprite 2 :inline :offset-assert 144)
(sprite-pos vector :inline :offset-assert 272)
(sprite-draw uint32 :offset-assert 288)
(buffer external-art-buffer 2 :offset-assert 292)
(want int32 2 :offset-assert 300)
(want-name basic 2 :offset-assert 308)
(have int32 2 :offset-assert 316)
(draw int32 :offset-assert 324)
(draw-name basic :offset-assert 328)
(active symbol :offset-assert 332)
(spark-time time-frame :offset-assert 336)
(gui-id uint32 :offset-assert 344)
)
:method-count-assert 18
:size-assert #x15c
:flag-assert #x1200e0015c
;; Failed to read fields.
(:methods
(title-control-method-9 () none 9)
(title-control-method-10 () none 10)
(title-control-method-11 () none 11)
(title-control-method-12 () none 12)
(title-control-method-13 () none 13)
(startup () _type_ :state 14)
(wait () _type_ :state 15)
(idle () _type_ :state 16)
(scrap-book () _type_ :state 17)
(scrap-book (int) _type_ :state 17)
)
)
|#
;; (define-extern title-plug-lightning function)
;; (define-extern title-screen-change function)
;; (define-extern wait-for-press function)
;; (define-extern title-menu function)
;; (define-extern title-fade-out function)
;; (define-extern title-progress function)
;; (define-extern title-control-init function)
(define-extern title-plug-lightning (function process-drawable vector cspace none))
(define-extern title-screen-change (function symbol int symbol int symbol symbol none :behavior title-control))
(define-extern wait-for-press (function time-frame time-frame symbol symbol))
(define-extern title-menu (function object :behavior title-control))
(define-extern title-fade-out (function float none))
(define-extern title-progress (function symbol none))
(define-extern title-control-init (function none :behavior title-control))
(define-extern target-title (state symbol target))
(define-extern *title-control* (pointer title-control))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; mech-part ;;
@@ -852,5 +852,11 @@
"whack": [
[0, "(function (pointer process) :behavior whack-a-metal)"],
[6, "(function int none :behavior whack-a-metal)"]
],
"title-obs": [
[3, "(function external-art-buffer none)"],
[16, "(function none)"],
[17, "(function process-drawable vector cspace object)"],
[18, "(function object)"]
]
}
+2 -1
View File
@@ -516,7 +516,8 @@
1, 2, 4, 6, 7, 14, 17, 19, 22, 24, 26, 27, 29, 31, 33, 35
],
"(anon-function 2 ruins-obs)": [7, 28, 37, 50, 51, 61, 62, 71],
"(anon-function 62 sig0-course)": [0, 1, 5, 6]
"(anon-function 62 sig0-course)": [0, 1, 5, 6],
"(method 67 collide-shape-moving)": [0, 1, 2, 3, 11, 12, 13]
},
// Sometimes the game might use format strings that are fetched dynamically,
+10 -4
View File
@@ -89,12 +89,12 @@
// "DGO/LTESS.DGO",
"DGO/CFA.DGO",
// "DGO/TOMBEXT.DGO",
// "DGO/LCGUARD.DGO",
"DGO/LCGUARD.DGO",
"DGO/TOE.DGO",
// "DGO/PALBOSS.DGO",
"DGO/FRB.DGO",
"DGO/PAE.DGO",
// "DGO/TITLE.DGO",
"DGO/TITLE.DGO",
"DGO/FORDUMPD.DGO",
"DGO/D3A.DGO",
"DGO/DRILLMTN.DGO",
@@ -123,7 +123,7 @@
"DGO/PAS.DGO",
// "DGO/LBBUSH.DGO",
"DGO/LPACKAGE.DGO",
// "DGO/LINTCSTB.DGO",
"DGO/LINTCSTB.DGO",
// "DGO/LPORTRUN.DGO",
// "DGO/LASHGRD.DGO",
"DGO/CGB.DGO",
@@ -143,7 +143,7 @@
"DGO/CMB.DGO",
"DGO/LGUARD.DGO",
"DGO/CPA.DGO",
// "DGO/LCITYLOW.DGO",
"DGO/LCITYLOW.DGO",
// "DGO/LTENTOUT.DGO",
"DGO/UNB.DGO",
"DGO/CPO.DGO",
@@ -208,13 +208,18 @@
"FEB.DGO",
"FOB.DGO",
"FOR.DGO",
"TITLE.DGO",
"FORDUMPD.DGO",
"GGA.DGO",
"HIDEOUT.DGO",
"HIPHOG.DGO",
"INTROCST.DGO",
"KIOSK.DGO",
"LCGUARD.DGO",
"LCITYLOW.DGO",
"LDJAKBRN.DGO",
"LGUARD.DGO",
"LINTCSTB.DGO",
"LPROTECT.DGO",
"LSACK.DGO",
"LTRNYSAM.DGO",
@@ -225,6 +230,7 @@
"MTX.DGO",
"ONINTENT.DGO",
"ORACLE.DGO",
"MTN.DGO",
"PRI.DGO",
"RUI.DGO",
"SAG.DGO",
@@ -1414,7 +1414,7 @@
"(code die fort-missile)": [[16, "matrix"]],
"birth-func-dig-digger-collide": [[16, ["inline-array", "vector", 5]]],
"(method 29 dig-bomb-crate)": [[16, "dig-bomb-crate-cylinder-spawn-params"]],
"(method 63 collide-shape-moving)": [[16, ["inline-array", "vector", 51]]],
"(method 63 collide-shape-moving)": [[16, "rb-work"]],
"(code active dig-spikey-sphere-door)": [
[32, "projectile-init-by-other-params"]
],
@@ -1644,5 +1644,12 @@
"(code active whack-a-metal)": [
[16, "vector"],
[32, "vector"]
],
"(code startup title-control)": [
[16, ["array", "symbol", 6]],
[48, "mc-slot-info"]
],
"title-plug-lightning": [
[16, "vector"]
]
}
+23 -2
View File
@@ -2359,7 +2359,7 @@
"(anon-function 31 script)": [
[25, "s3", "process-drawable"],
[59, "v0", "joint"],
[14, "s5", "(function process vector cspace)"]
[14, "s5", "(function process vector cspace none)"]
],
"(method 9 script-context)": [[81, "s5", "symbol"]],
"(anon-function 33 script)": [
@@ -7414,5 +7414,26 @@
],
"(anon-function 97 sig0-course)": [[62, "v1", "sigt-wait-spot"]],
"(anon-function 11 ash1-course)": [[51, "v1", "asht-wait-spot"]],
"(anon-function 4 ash1-course)": [[99, "v1", "asht-wait-spot"]]
"(anon-function 4 ash1-course)": [[99, "v1", "asht-wait-spot"]],
"(method 67 collide-shape-moving)": [
[8, "v1", "collide-shape-prim-group"],
[[30, 56], "s1", "collide-cache-prim"]
],
"(method 63 collide-shape-moving)": [
[118, "v1", "collide-shape-prim"],
[379, "a0", "collide-shape-prim-mesh"],
[410, "v1", "collide-shape-prim-mesh"],
[459, "v1", "collide-shape-prim-mesh"]
],
"(post startup title-control)": [
[[8, 32], "gp", "process-drawable"],
[[211, 216], "v1", "external-art-buffer"]
],
"(code startup title-control)": [
[[261, 265], "v1", "handle"],
[257, "gp", "handle"]
],
"title-plug-lightning": [
[99, "v1", "title-control"]
]
}
+34 -1
View File
@@ -58,7 +58,7 @@ struct RPC_Str_Cmd_Jak2 {
char basename[48]; // 32
};
struct RPC_Play_Cmd {
struct RPC_Play_Cmd_Jak1 {
u16 rsvd;
u16 result;
u32 address;
@@ -67,6 +67,39 @@ struct RPC_Play_Cmd {
char name[48];
};
struct SoundStreamName {
char chars[48];
};
struct RPC_Play_Cmd_Jak2 {
u16 rsvd;
u16 result;
u32 address;
u32 section;
u32 maxlen;
u32 id[4];
SoundStreamName names[4];
u32 pad[8];
};
static_assert(sizeof(RPC_Play_Cmd_Jak2) == 256);
/*
*
(deftype play-chunk-msg (structure)
((rsvd uint16 :offset-assert 0)
(result uint16 :offset-assert 2)
(address pointer :offset-assert 4)
(section uint32 :offset-assert 8)
(maxlen uint32 :offset-assert 12)
(id uint32 4 :offset-assert 16)
(basename sound-stream-name 4 :inline :offset-assert 32)
)
:method-count-assert 9
:size-assert #xe0
:flag-assert #x9000000e0
)
*/
constexpr int STR_RPC_RESULT_ERROR = 1;
constexpr int STR_RPC_RESULT_DONE = 0;
@@ -127,9 +127,14 @@ void OpenGLRenderer::init_bucket_renderers_jak2() {
init_bucket_renderer<TextureUploadHandler>("tex-l4-tfrag", BucketCategory::TEX,
BucketId::TEX_L4_TFRAG);
init_bucket_renderer<TFragment>("tfrag-l4-tfrag", BucketCategory::TFRAG, BucketId::TFRAG_L4_TFRAG,
std::vector{tfrag3::TFragmentTreeKind::NORMAL}, false, 3);
init_bucket_renderer<Tie3>("tie-l4-tfrag", BucketCategory::TIE, BucketId::TIE_L4_TFRAG, 3);
std::vector{tfrag3::TFragmentTreeKind::NORMAL}, false, 4);
init_bucket_renderer<Tie3>("tie-l4-tfrag", BucketCategory::TIE, BucketId::TIE_L4_TFRAG, 4);
// 60
init_bucket_renderer<TextureUploadHandler>("tex-l5-tfrag", BucketCategory::TEX,
BucketId::TEX_L5_TFRAG);
init_bucket_renderer<TFragment>("tfrag-l5-tfrag", BucketCategory::TFRAG, BucketId::TFRAG_L5_TFRAG,
std::vector{tfrag3::TFragmentTreeKind::NORMAL}, false, 5);
init_bucket_renderer<Tie3>("tie-l5-tfrag", BucketCategory::TIE, BucketId::TIE_L5_TFRAG, 5);
// 70
init_bucket_renderer<TextureUploadHandler>("tex-l0-shrub", BucketCategory::TEX,
BucketId::TEX_L0_SHRUB);
@@ -151,6 +156,9 @@ void OpenGLRenderer::init_bucket_renderers_jak2() {
BucketId::TEX_L4_SHRUB);
// 110
init_bucket_renderer<Shrub>("shrub-l4-shrub", BucketCategory::SHRUB, BucketId::SHRUB_L4_SHRUB);
init_bucket_renderer<TextureUploadHandler>("tex-l5-shrub", BucketCategory::TEX,
BucketId::TEX_L5_SHRUB);
init_bucket_renderer<Shrub>("shrub-l5-shrub", BucketCategory::SHRUB, BucketId::SHRUB_L5_SHRUB);
// 120
init_bucket_renderer<TextureUploadHandler>("tex-l0-alpha", BucketCategory::TEX,
BucketId::TEX_L0_ALPHA);
@@ -167,10 +175,15 @@ void OpenGLRenderer::init_bucket_renderers_jak2() {
init_bucket_renderer<Merc2>("merc-l1-alpha", BucketCategory::MERC, BucketId::MERC_L1_ALPHA);
init_bucket_renderer<TextureUploadHandler>("tex-l2-alpha", BucketCategory::TEX,
BucketId::TEX_L2_ALPHA);
init_bucket_renderer<TFragment>("tfrag-t-l2-alpha", BucketCategory::TFRAG,
BucketId::TFRAG_T_L2_ALPHA,
std::vector{tfrag3::TFragmentTreeKind::TRANS}, false, 2);
// 150
init_bucket_renderer<Merc2>("merc-l2-alpha", BucketCategory::MERC, BucketId::MERC_L2_ALPHA);
// 160
// 170
init_bucket_renderer<TextureUploadHandler>("tex-l5-alpha", BucketCategory::TEX,
BucketId::TEX_L5_ALPHA);
// 180
init_bucket_renderer<TextureUploadHandler>("tex-lcom-tfrag", BucketCategory::TEX,
BucketId::TEX_LCOM_TFRAG);
@@ -198,14 +211,17 @@ void OpenGLRenderer::init_bucket_renderers_jak2() {
init_bucket_renderer<Merc2>("merc-l4-pris", BucketCategory::MERC, BucketId::MERC_L4_PRIS);
init_bucket_renderer<TextureUploadHandler>("tex-l5-pris", BucketCategory::TEX,
BucketId::TEX_L5_PRIS);
init_bucket_renderer<Merc2>("merc-l5-pris", BucketCategory::MERC, BucketId::MERC_L5_PRIS);
// 220
init_bucket_renderer<TextureUploadHandler>("tex-lcom-pris", BucketCategory::TEX,
BucketId::TEX_LCOM_PRIS);
init_bucket_renderer<Merc2>("merc-lcom-pris", BucketCategory::MERC, BucketId::MERC_LCOM_PRIS);
init_bucket_renderer<TextureUploadHandler>("tex-l0-pris2", BucketCategory::TEX,
BucketId::TEX_L0_PRIS2);
init_bucket_renderer<Merc2>("merc-l0-pris2", BucketCategory::MERC, BucketId::MERC_L0_PRIS2);
init_bucket_renderer<TextureUploadHandler>("tex-l1-pris2", BucketCategory::TEX,
BucketId::TEX_L1_PRIS2);
init_bucket_renderer<Merc2>("merc-l1-pris2", BucketCategory::MERC, BucketId::MERC_L1_PRIS2);
// 230
init_bucket_renderer<TextureUploadHandler>("tex-l2-pris2", BucketCategory::TEX,
BucketId::TEX_L2_PRIS2);
@@ -228,15 +244,19 @@ void OpenGLRenderer::init_bucket_renderers_jak2() {
init_bucket_renderer<Merc2>("merc-l1-water", BucketCategory::MERC, BucketId::MERC_L1_WATER);
init_bucket_renderer<TFragment>("tfrag-w-l1-alpha", BucketCategory::TFRAG,
BucketId::TFRAG_W_L1_WATER,
std::vector{tfrag3::TFragmentTreeKind::WATER}, false, 0);
std::vector{tfrag3::TFragmentTreeKind::WATER}, false, 1);
// 270
init_bucket_renderer<TextureUploadHandler>("tex-l2-water", BucketCategory::TEX,
BucketId::TEX_L2_WATER);
init_bucket_renderer<Merc2>("merc-l2-water", BucketCategory::MERC, BucketId::MERC_L2_WATER);
init_bucket_renderer<TFragment>("tfrag-w-l2-alpha", BucketCategory::TFRAG,
BucketId::TFRAG_W_L2_WATER,
std::vector{tfrag3::TFragmentTreeKind::WATER}, false, 2);
init_bucket_renderer<TextureUploadHandler>("tex-l3-water", BucketCategory::TEX,
BucketId::TEX_L3_WATER);
// 280
init_bucket_renderer<Merc2>("merc-l3-water", BucketCategory::MERC, BucketId::MERC_L3_WATER);
init_bucket_renderer<TextureUploadHandler>("tex-l4-water", BucketCategory::TEX,
BucketId::TEX_L4_WATER);
init_bucket_renderer<Merc2>("merc-l4-water", BucketCategory::MERC, BucketId::MERC_L4_WATER);
@@ -261,6 +281,10 @@ void OpenGLRenderer::init_bucket_renderers_jak2() {
// 320
init_bucket_renderer<DirectRenderer>("progress", BucketCategory::OTHER, BucketId::PROGRESS,
0x8000);
init_bucket_renderer<DirectRenderer>("screen-filter", BucketCategory::OTHER,
BucketId::SCREEN_FILTER, 0x8000);
init_bucket_renderer<DirectRenderer>("bucket-322", BucketCategory::OTHER, BucketId::BUCKET_322,
0x8000);
init_bucket_renderer<DirectRenderer>("debug2", BucketCategory::OTHER, BucketId::DEBUG2, 0x8000);
init_bucket_renderer<DirectRenderer>("debug-no-zbuf2", BucketCategory::OTHER,
BucketId::DEBUG_NO_ZBUF2, 0x8000);
+14
View File
@@ -104,6 +104,9 @@ enum class BucketId {
TEX_L4_TFRAG = 51,
TFRAG_L4_TFRAG = 52,
TIE_L4_TFRAG = 53,
TEX_L5_TFRAG = 62,
TFRAG_L5_TFRAG = 63,
TIE_L5_TFRAG = 64,
TEX_L0_SHRUB = 73,
SHRUB_L0_SHRUB = 74,
MERC_L0_SHRUB = 79,
@@ -115,13 +118,17 @@ enum class BucketId {
SHRUB_L3_SHRUB = 101,
TEX_L4_SHRUB = 109,
SHRUB_L4_SHRUB = 110,
TEX_L5_SHRUB = 118,
SHRUB_L5_SHRUB = 119,
TEX_L0_ALPHA = 127,
TFRAG_T_L0_ALPHA = 128,
TEX_L1_ALPHA = 137,
MERC_L1_ALPHA = 141,
TFRAG_T_L1_ALPHA = 138,
TEX_L2_ALPHA = 147,
TFRAG_T_L2_ALPHA = 148,
MERC_L2_ALPHA = 151,
TEX_L5_ALPHA = 177,
TEX_LCOM_TFRAG = 187,
MERC_LCOM_TFRAG = 188,
TEX_LCOM_SHRUB = 191,
@@ -137,10 +144,13 @@ enum class BucketId {
TEX_L4_PRIS = 212,
MERC_L4_PRIS = 213,
TEX_L5_PRIS = 216,
MERC_L5_PRIS = 217,
TEX_LCOM_PRIS = 220,
MERC_LCOM_PRIS = 221,
TEX_L0_PRIS2 = 224,
MERC_L0_PRIS2 = 225,
TEX_L1_PRIS2 = 228,
MERC_L1_PRIS2 = 229,
TEX_L2_PRIS2 = 232,
TEX_L3_PRIS2 = 236,
TEX_L4_PRIS2 = 240,
@@ -152,7 +162,9 @@ enum class BucketId {
TFRAG_W_L1_WATER = 264,
TEX_L2_WATER = 270,
MERC_L2_WATER = 271,
TFRAG_W_L2_WATER = 273,
TEX_L3_WATER = 279,
MERC_L3_WATER = 280,
TEX_L4_WATER = 288,
MERC_L4_WATER = 289,
TEX_LCOM_WATER = 306,
@@ -165,6 +177,8 @@ enum class BucketId {
DEBUG_NO_ZBUF1 = 318,
TEX_ALL_MAP = 319,
PROGRESS = 320,
SCREEN_FILTER = 321,
BUCKET_322 = 322,
DEBUG2 = 324,
DEBUG_NO_ZBUF2 = 325,
DEBUG3 = 326,
+60 -7
View File
@@ -23,10 +23,13 @@ using namespace iop;
static RPC_Str_Cmd_Jak1 sSTRBufJak1;
static RPC_Str_Cmd_Jak2 sSTRBufJak2;
static RPC_Play_Cmd sPLAYBuf[2]; // todo type
static RPC_Play_Cmd_Jak1 sPLAYBufJak1[2];
static RPC_Play_Cmd_Jak2 sPLAYBufJak2[2];
void* RPC_STR_jak1(unsigned int fno, void* _cmd, int y);
void* RPC_STR_jak2(unsigned int fno, void* _cmd, int y);
void* RPC_PLAY(unsigned int fno, void* _cmd, int y);
void* RPC_PLAY_jak1(unsigned int fno, void* _cmd, int y);
void* RPC_PLAY_jak2(unsigned int fno, void* _cmd, int y);
static constexpr int PLAY_MSG_SIZE = 0x40;
@@ -59,7 +62,8 @@ CacheEntryJ2 sCacheJ2[STR_INDEX_CACHE_SIZE];
void stream_init_globals() {
memset(&sSTRBufJak1, 0, sizeof(RPC_Str_Cmd_Jak1));
memset(&sSTRBufJak2, 0, sizeof(RPC_Str_Cmd_Jak2));
memset(&sPLAYBuf, 0, sizeof(RPC_Play_Cmd));
memset(&sPLAYBufJak1, 0, sizeof(RPC_Play_Cmd_Jak1) * 2);
memset(&sPLAYBufJak2, 0, sizeof(RPC_Play_Cmd_Jak2) * 2);
}
/*!
@@ -94,7 +98,17 @@ u32 PLAYThread() {
CpuDisableIntr();
sceSifInitRpc(0);
sceSifSetRpcQueue(&dq, GetThreadId());
sceSifRegisterRpc(&serve, PLAY_RPC_ID[g_game_version], RPC_PLAY, sPLAYBuf, nullptr, nullptr, &dq);
if (g_game_version == GameVersion::Jak1) {
sceSifRegisterRpc(&serve, PLAY_RPC_ID[g_game_version], RPC_PLAY_jak1, sPLAYBufJak1, nullptr,
nullptr, &dq);
} else if (g_game_version == GameVersion::Jak2) {
sceSifRegisterRpc(&serve, PLAY_RPC_ID[g_game_version], RPC_PLAY_jak2, sPLAYBufJak2, nullptr,
nullptr, &dq);
} else {
ASSERT_MSG(false, "unsupported game version in PLAYThread initialization!");
}
CpuEnableIntr();
sceSifRpcLoop(&dq);
return 0;
@@ -216,7 +230,8 @@ void* RPC_STR_jak2(unsigned int fno, void* _cmd, int y) {
if (!file_record) {
// didn't find the file
printf("[OVERLORD STR] Failed to find animation %s\n", cmd->basename);
printf("[OVERLORD STR] Failed to find animation %s (%s)\n", cmd->basename,
animation_iso_name);
cmd->result = STR_RPC_RESULT_ERROR;
} else {
// found it! See if we've cached this animation's header.
@@ -263,11 +278,11 @@ void* RPC_STR_jak2(unsigned int fno, void* _cmd, int y) {
return cmd;
}
void* RPC_PLAY([[maybe_unused]] unsigned int fno, void* _cmd, int size) {
void* RPC_PLAY_jak1([[maybe_unused]] unsigned int fno, void* _cmd, int size) {
s32 n_messages = size / PLAY_MSG_SIZE;
char namebuf[16];
auto* cmd = (RPC_Play_Cmd*)(_cmd);
auto* cmd = (RPC_Play_Cmd_Jak1*)(_cmd);
while (n_messages > 0) {
if (cmd->name[0] == '$') {
char* name_part = &cmd->name[1];
@@ -319,3 +334,41 @@ void* RPC_PLAY([[maybe_unused]] unsigned int fno, void* _cmd, int size) {
return _cmd;
}
/*!
* This is just copied from Jak 1, and is totally wrong for jak 2.
* It does nothing.
*/
void* RPC_PLAY_jak2([[maybe_unused]] unsigned int fno, void* _cmd, int size) {
s32 n_messages = size / PLAY_MSG_SIZE;
char namebuf[16];
auto* cmd = (RPC_Play_Cmd_Jak2*)(_cmd);
while (n_messages > 0) {
if (cmd->names[0].chars[0] == '$') {
char* name_part = &cmd->names[0].chars[1];
size_t name_len = strlen(name_part);
if (name_len < 9) {
memset(namebuf, ' ', 8);
memcpy(namebuf, name_part, name_len);
} else {
memcpy(namebuf, name_part, 8);
}
// ASCII toupper
for (int i = 0; i < 8; i++) {
if (namebuf[i] >= 0x61 && namebuf[i] < 0x7b) {
namebuf[i] -= 0x20;
}
}
} else {
ISONameFromAnimationName(namebuf, cmd->names[0].chars);
}
n_messages--;
cmd++;
}
return _cmd;
}
+1 -1
View File
@@ -44,7 +44,7 @@
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command #x1 :anim #x3 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x3 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
+1 -1
View File
@@ -46,7 +46,7 @@
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command #x1 :anim #x4 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x4 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
+443
View File
@@ -7,3 +7,446 @@
;; DECOMP BEGINS
;;-*-Lisp-*-
(in-package goal)
;; definition for method 25 of type pov-camera
(defmethod abort? pov-camera ((obj pov-camera))
(when (or (and (>= (- (-> self clock frame-counter) (-> obj debounce-start-time)) (seconds 0.2))
(cpad-pressed? 0 triangle)
)
(logtest? (-> obj flags) (pov-camera-flag allow-abort))
)
(logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons triangle))
(logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons triangle))
(when (logtest? (-> obj flags) (pov-camera-flag notify-of-abort))
(send-event (handle->process (-> obj notify-handle)) 'notify 'abort-request)
#t
)
)
)
;; definition for method 26 of type pov-camera
(defmethod target-grabbed? pov-camera ((obj pov-camera))
(or (not *target*) (process-grab? *target* #f))
)
;; definition for method 29 of type pov-camera
(defmethod target-released? pov-camera ((obj pov-camera))
(or (not *target*) (process-release? *target*))
)
;; failed to figure out what this is:
(defstate pov-camera-startup (pov-camera)
:virtual #t
:code (behavior ()
(go-virtual pov-camera-start-playing)
(none)
)
)
;; failed to figure out what this is:
(defstate pov-camera-start-playing (pov-camera)
:virtual #t
:code (behavior ()
(logclear! (-> self mask) (process-mask actor-pause))
(while (not (target-grabbed? self))
(suspend)
)
(let ((gp-0 0))
(let ((v1-7 (the-as joint (get-art-by-name-method (-> self draw jgeo) "camera" (the-as type #f)))))
(if v1-7
(set! gp-0 (+ (-> v1-7 number) 1))
)
)
(let ((v1-10 (process-spawn othercam self gp-0 #t #t :to self)))
(send-event (ppointer->process v1-10) 'mask (-> self mask-to-clear))
)
)
(go-virtual pov-camera-playing)
(none)
)
)
;; definition for function pov-camera-play-and-reposition
;; WARN: Return type mismatch int vs none.
(defbehavior pov-camera-play-and-reposition pov-camera ((arg0 art-joint-anim) (arg1 vector) (arg2 float))
(let ((s4-0 #f))
(ja-no-eval :group! arg0 :num! (seek! (the float (+ (-> arg0 frames num-frames) -1)) arg2) :frame-num 0.0)
(until (ja-done? 0)
(let ((v1-4 (and (not s4-0) (< (the float (+ (-> (ja-group) frames num-frames) -4)) (ja-frame-num 0)))))
(when v1-4
(set! s4-0 #t)
(send-event *camera* 'teleport-to-vector-start-string arg1)
)
)
(suspend)
(ja :num! (seek! max arg2))
)
)
0
(none)
)
;; failed to figure out what this is:
(defstate pov-camera-playing (pov-camera)
:virtual #t
:event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block))
(case event-type
(('abort)
(when (logtest? (-> self flags) (pov-camera-flag notify-of-abort))
(logior! (-> self flags) (pov-camera-flag allow-abort))
(if (= (-> self anim-name type) string)
(go-virtual pov-camera-abort)
)
)
)
)
)
:enter (behavior ()
(set! (-> self debounce-start-time) (-> self clock frame-counter))
(if (= (-> self anim-name type) string)
(backup-load-state-and-set-cmds *load-state* (-> self command-list))
)
(none)
)
:exit (behavior ()
(if (= (-> self anim-name type) string)
(restore-load-state-and-cleanup *load-state*)
)
(remove-setting! 'music-volume)
(remove-setting! 'sfx-volume)
(none)
)
:code (behavior ()
(add-setting! 'music-volume 'rel (-> self music-volume-movie) 0)
(add-setting! 'sfx-volume 'rel (-> self sfx-volume-movie) 0)
(cond
((= (-> self anim-name type) string)
(ja-no-eval :group! (ja-group)
:num! (seek! (the float (+ (-> (ja-group) frames num-frames) -1)))
:frame-num 0.0
)
(until (ja-done? 0)
(abort? self)
(suspend)
(ja :num! (seek!))
)
)
((= (-> self anim-name type) spool-anim)
(ja-play-spooled-anim
(the-as spool-anim (-> self anim-name))
(the-as art-joint-anim #f)
(the-as art-joint-anim #f)
(method-of-object self abort?)
)
)
)
(go-virtual pov-camera-done-playing)
(none)
)
:post (behavior ()
(if (= (-> self anim-name type) string)
(execute-commands-up-to *load-state* (ja-aframe-num 0))
)
(ja-post)
(none)
)
)
;; failed to figure out what this is:
(defstate pov-camera-abort (pov-camera)
:virtual #t
:enter (behavior ()
(logior! (-> self flags) (pov-camera-flag allow-abort))
(none)
)
:code (behavior ()
(set-blackout-frames (seconds 0.035))
(suspend)
(suspend)
(go-virtual pov-camera-done-playing)
(none)
)
)
;; failed to figure out what this is:
(defstate pov-camera-done-playing (pov-camera)
:virtual #t
:code (behavior ()
(while (not (target-released? self))
(suspend)
)
(send-event (handle->process (-> self notify-handle)) 'notify 'die)
(suspend)
(suspend)
(cleanup-for-death self)
(deactivate self)
(none)
)
)
;; definition for method 28 of type pov-camera
;; WARN: Return type mismatch int vs none.
(defmethod pov-camera-method-28 pov-camera ()
0
(none)
)
;; definition for method 27 of type pov-camera
;; WARN: Return type mismatch int vs none.
(defmethod pov-camera-method-27 pov-camera ()
0
(none)
)
;; definition for function pov-camera-init-by-other
;; INFO: Used lq/sq
;; WARN: Return type mismatch object vs none.
(defbehavior pov-camera-init-by-other pov-camera ((arg0 vector) (arg1 skeleton-group) (arg2 string) (arg3 pov-camera-flag) (arg4 process-drawable) (arg5 pair))
((method-of-object self pov-camera-method-27))
(set! (-> *game-info* pov-camera-handle) (process->handle self))
(set! (-> self flags) arg3)
(set! (-> self command-list) arg5)
(set! (-> self music-volume-movie) 100.0)
(set! (-> self sfx-volume-movie) 100.0)
(if arg4
(set! (-> self notify-handle) (process->handle arg4))
(set! (-> self notify-handle) (the-as handle #f))
)
(set! (-> self debounce-start-time) (-> self clock frame-counter))
(logclear! (-> self mask) (process-mask actor-pause movie enemy platform projectile))
(set! (-> self root) (new 'process 'trsqv))
(set! (-> self root trans quad) (-> arg0 quad))
(when (logtest? (-> self flags) (pov-camera-flag inherit-orientation))
(let ((v1-21 (if (type? arg4 process-drawable)
arg4
)
)
)
(quaternion-copy! (-> self root quat) (-> v1-21 root quat))
)
)
(initialize-skeleton self arg1 (the-as pair 0))
(logior! (-> self draw status) (draw-control-status no-draw-bounds))
(logior! (-> self skel status) (joint-control-status sync-math))
(set! (-> self anim-name) arg2)
(cond
((= (-> arg2 type) string)
(logior! (-> self skel status) (joint-control-status valid-spooled-frame))
(let ((s5-1 (get-art-by-name (-> self draw art-group) arg2 art-joint-anim)))
(if (not s5-1)
(go process-drawable-art-error arg2)
)
(ja-channel-set! 1)
(set! (-> self skel root-channel 0 frame-group) s5-1)
)
)
((= (-> arg2 type) spool-anim)
)
)
(set! (-> self mask-to-clear) (process-mask movie enemy platform projectile))
(set! (-> self event-hook)
(lambda :behavior pov-camera
((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(the-as object (case arg2
(('mask)
(let ((v0-0 (the-as number (-> arg3 param 0))))
(set! (-> self mask-to-clear) (the-as process-mask v0-0))
v0-0
)
)
(('music-movie-volume)
(set! (-> self music-volume-movie) (the-as float (-> arg3 param 0)))
)
(('sfx-movie-volume)
(set! (-> self sfx-volume-movie) (the-as float (-> arg3 param 0)))
)
)
)
)
)
((method-of-object self pov-camera-method-28))
(go-virtual pov-camera-startup)
(none)
)
;; definition for function othercam-calc
(defun othercam-calc ((arg0 float))
(set! (-> *camera-other-fov* data) (* 2.0 (atan (/ 14.941477 (* 20.3 arg0)) 1.0)))
)
;; failed to figure out what this is:
(defstate othercam-running (othercam)
:event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block))
(local-vars (v0-0 object))
(case event-type
(('die)
(set! v0-0 #t)
(set! (-> self die?) (the-as symbol v0-0))
v0-0
)
(('joint)
(cond
((type? (-> event param 0) string)
(let ((v1-7 (the-as joint (get-art-by-name-method
(-> (the-as process-drawable (-> self hand process 0)) draw jgeo)
(the-as string (-> event param 0))
(the-as type #f)
)
)
)
)
(when v1-7
(set! v0-0 (+ (-> v1-7 number) 1))
(set! (-> self cam-joint-index) (the-as int v0-0))
v0-0
)
)
)
((not (logtest? (-> event param 0) 7))
(set! v0-0 (/ (the-as int (-> event param 0)) 8))
(set! (-> self cam-joint-index) (the-as int v0-0))
v0-0
)
)
)
(('target)
(set! v0-0 (process->handle (the-as process (-> event param 0))))
(set! (-> self hand) (the-as handle v0-0))
v0-0
)
(('mask)
(set! v0-0 (-> event param 0))
(set! (-> self mask-to-clear) (the-as process-mask v0-0))
v0-0
)
)
)
:enter (behavior ()
(hide-hud-quick #f)
(case (-> self spooling?)
(('logo 'scene-player)
)
(else
(add-setting! 'process-mask 'set 0 (-> self mask-to-clear))
(add-setting! 'movie (process->ppointer self) 0 0)
(if (not (-> self border-value))
(add-setting! 'border-mode (-> self border-value) 0 0)
)
)
)
(set! (-> self had-valid-frame) #f)
(let ((gp-0 (the-as process-drawable (-> self hand process 0))))
(vector<-cspace! (-> self old-pos) (-> gp-0 node-list data (-> self cam-joint-index)))
(let ((v1-20 (-> gp-0 node-list data (-> self cam-joint-index) bone transform)))
(vector-normalize-copy! (-> self old-mat-z) (-> v1-20 vector 2) -1.0)
)
)
(apply-settings *setting-control*)
(none)
)
:exit (behavior ()
(remove-setting! 'process-mask)
(apply-settings *setting-control*)
(none)
)
:code (behavior ()
(until #f
(let ((s2-0 (the-as process-drawable (-> self hand process 0))))
(when (not s2-0)
(format #t "ERROR<GMJ>: othercam parent invalid~%")
(deactivate self)
)
(set! (-> *camera-other-root* quad) (-> s2-0 root trans quad))
(let ((s4-0 (-> s2-0 node-list data (-> self cam-joint-index) bone transform))
(s3-0 (-> s2-0 node-list data (-> self cam-joint-index) bone scale))
(gp-0 (new 'stack-no-clear 'vector))
(s5-0 (new 'stack-no-clear 'vector))
(s1-0
(or (!= (-> self spooling?) #t) (logtest? (-> s2-0 skel status) (joint-control-status valid-spooled-frame)))
)
)
(vector<-cspace! s5-0 (-> s2-0 node-list data (-> self cam-joint-index)))
(vector-normalize-copy! gp-0 (-> s4-0 vector 2) -1.0)
(cond
((< (vector-length (-> s4-0 vector 2)) 0.1)
(set-blackout-frames (seconds 0.017))
(if (not (logtest? (-> s2-0 draw status) (draw-control-status no-draw no-draw-temp)))
(format 0 "ERROR: other camera zero matrix!~%")
)
)
(s1-0
(when (not (-> self had-valid-frame))
(set! (-> self had-valid-frame) (the-as basic #t))
(set! (-> self old-pos quad) (-> s5-0 quad))
(set! (-> self old-mat-z quad) (-> gp-0 quad))
)
(set! (-> *camera-other-trans* quad) (-> s5-0 quad))
(vector-normalize-copy!
(the-as vector (-> *camera-other-matrix* vector))
(the-as vector (-> s4-0 vector))
-1.0
)
(set! (-> *camera-other-matrix* vector 0 w) 0.0)
(vector-normalize-copy! (-> *camera-other-matrix* vector 1) (-> s4-0 vector 1) 1.0)
(set! (-> *camera-other-matrix* vector 1 w) 0.0)
(vector-normalize-copy! (-> *camera-other-matrix* vector 2) (-> s4-0 vector 2) -1.0)
(set! (-> *camera-other-matrix* vector 2 w) 0.0)
(vector-reset! (-> *camera-other-matrix* trans))
(set! (-> self fov) (othercam-calc (-> s3-0 x)))
(set! *camera-look-through-other* 2)
(set! (-> self old-pos quad) (-> s5-0 quad))
(set! (-> self old-mat-z quad) (-> gp-0 quad))
)
)
)
)
(suspend)
(let ((a0-27 (-> self hand process 0)))
(when (or (-> self die?) (and (not (-> self survive-anim-end?)) (ja-anim-done? a0-27)))
(let ((gp-1 (-> self clock frame-counter)))
(while (and (< (- (-> self clock frame-counter) gp-1) (seconds 60))
(or (and (-> self entity) (not (is-object-visible? (-> self level) (-> self entity extra vis-id))))
(< 81920.0 (vector-vector-distance (camera-pos) (-> *math-camera* trans)))
)
)
(suspend)
)
)
(deactivate self)
)
)
)
#f
(none)
)
)
;; definition for function othercam-init-by-other
;; WARN: Return type mismatch int vs none.
(defbehavior othercam-init-by-other othercam ((arg0 pov-camera) (arg1 int) (arg2 symbol) (arg3 symbol))
(set! (-> self spooling?) arg3)
(case (-> self spooling?)
(('logo)
)
(else
(set! (-> *game-info* other-camera-handle) (process->handle self))
)
)
(set! (-> self hand) (process->handle arg0))
(set! (-> self cam-joint-index) arg1)
(logclear! (-> self mask) (process-mask freeze pause menu actor-pause))
(set! (-> self border-value) #f)
(set! (-> self die?) #f)
(set! (-> self survive-anim-end?) arg2)
(set! (-> self mask-to-clear) (process-mask movie enemy platform projectile))
(set! (-> self event-hook) (-> othercam-running event))
(go othercam-running)
0
(none)
)
@@ -374,7 +374,7 @@
(deftype collide-prim-core (structure)
((world-sphere vector :inline :offset-assert 0)
(collide-as collide-spec :offset-assert 16)
(collide-as collide-spec :offset 16)
(collide-with collide-spec :offset-assert 20)
(action collide-action :offset-assert 24)
(prim-type prim-type :offset-assert 28)
@@ -566,7 +566,7 @@
(try-snap-to-surface (_type_ vector float float float) symbol 64)
(fill-and-try-snap-to-surface (_type_ vector float float float collide-query) symbol 65)
(step-collison! (_type_ vector vector float int) float 66)
(collide-shape-moving-method-67 () none 67)
(collide-with-all-collide-cache-prims (_type_ matrix collide-query) none 67)
)
)
@@ -1548,6 +1548,13 @@ This commonly includes things such as:
)
)
)
;; Note: there's some changes here to skip setting things if arg4 is #f.
;; the address of #f is misaligned, but on ps2 the lq instruction will silently mask.
;; Loading from #f doesn't really make sense, so this was likely just a mistake in the
;; original game.
;; the OpenGOAL compiler uses vmovaps, which will crash on a misaligned load because
;; this has been useful for finding errors. So to prevent this crash, we skip the load
;; if the argument is #f. (some callers of this directly pass #f, so it's not a bug higher up).
(cond
((>= 256 (the-as int arg4))
(set! (-> self target-joint0) (the-as int arg4))
@@ -1555,7 +1562,10 @@ This commonly includes things such as:
)
(else
(set! (-> self target-joint0) -1)
(set! (-> self offset0 quad) (-> arg4 quad))
;; hack, fixed bug in original game
(when arg4
(set! (-> self offset0 quad) (-> arg4 quad))
)
)
)
(cond
@@ -1565,7 +1575,10 @@ This commonly includes things such as:
)
(else
(set! (-> self target-joint1) -1)
(set! (-> self offset1 quad) (-> arg5 quad))
;; hack, fixed bug in original game
(when arg5
(set! (-> self offset1 quad) (-> arg5 quad))
)
)
)
(set! (-> self root) (new 'process 'trsqv))
+24 -13
View File
@@ -5,13 +5,20 @@
;; name in dgo: idle-control
;; dgos: GAME, COMMON
(defenum ic-cmd
:type uint8
(restart 0)
(play 1)
(push 2)
)
;; DECOMP BEGINS
(deftype idle-control-frame (uint32)
((command uint8 :offset 0 :size 8)
(anim uint8 :offset 8 :size 8)
(param0 uint8 :offset 16 :size 8)
(param1 uint8 :offset 24 :size 8)
((command ic-cmd :offset 0 :size 8)
(anim uint8 :offset 8 :size 8)
(param0 uint8 :offset 16 :size 8)
(param1 uint8 :offset 24 :size 8)
)
:method-count-assert 9
:size-assert #x4
@@ -47,15 +54,15 @@
;; TODO - method manually patched (maybe incorrectly) around `self` changing
;; WARN: Function (method 10 idle-control) has a return type of none, but the expression builder found a return statement.
(defmethod idle-control-method-10 idle-control ((obj idle-control) (arg0 process-drawable))
(local-vars (a1-1 int))
(local-vars (a1-1 int) (backup-pp process))
(when (nonzero? (-> obj anim))
(let ((s5-0 self))
(with-pp
(set! backup-pp pp)
(set! pp arg0)
(loop
(let* ((s4-0 (-> obj current 0))
(v1-4 (-> s4-0 command))
)
(cond
((= v1-4 1)
(let ((s4-0 (-> obj current 0)))
(case (-> s4-0 command)
(((ic-cmd play))
(if (< (-> s4-0 anim) 0)
(return #f)
)
@@ -102,14 +109,14 @@
)
)
)
((= v1-4 2)
(((ic-cmd push))
(ja-channel-push! 1 (the-as time-frame (-> s4-0 param0)))
(set! (-> obj current) (&-> (-> obj current) 1))
(set! (-> obj counter) 0)
(set! (-> obj target) 0)
0
)
((zero? v1-4)
(((ic-cmd restart))
(set! (-> obj current) (-> obj anim))
(set! (-> obj counter) 0)
(set! (-> obj target) 0)
@@ -118,8 +125,12 @@
)
)
)
(set! pp backup-pp)
)
)
0
(none)
)
@@ -66,5 +66,13 @@
)
)
;; hack
(defun draw-raw-image ((arg0 bucket-id) (arg1 art-group) (arg2 int) (arg3 int) (arg4 level) (arg5 int))
(format 0 "unimplemented draw-raw-image~%")
(none)
)
;; DECOMP BEGINS
+1 -1
View File
@@ -2684,7 +2684,7 @@
(camera-pos)
(new 'static 'boxed-array :type symbol :length 0 :allocated-length 6)
(update *setting-control*)
;; (update *gui-control* #t)
(update *gui-control* #t)
(update *art-control* #t)
(clear-rec *art-control*)
(dotimes (s5-0 6)
+43 -4
View File
@@ -783,9 +783,48 @@
)
)
;; to allow streaming animations to play without overload VAG streaming, set STREAM_PLAY_HACK.
;; in the ja-play-spooled-anim function below, we use the get-current-str-pos/get-str-id-is-playing?
;; instead of the usual current-str-pos/str-id-is-playing? functions. The #cond below remaps those
;; to point to hacked versions if STREAM_PLAY_HACK is true, otherwise it just maps to the original
;; version.
(defglobalconstant STREAM_PLAY_HACK #t)
(#cond
(STREAM_PLAY_HACK
(define *hack-pos-buffer-id* (new 'static 'array int 4)) ;; 4 channels?
(define *hack-pos-buffer-pos* (new 'static 'array int 4)) ;; 4 channels?
(define *hack-pos-next-idx* 0) ;; new channel, if none is found.
(define *hack-pos-speed* 5)
(defun get-current-str-pos ((obj sound-id))
(dotimes (i 4)
(when (= (-> *hack-pos-buffer-id* i) obj)
(+! (-> *hack-pos-buffer-pos* i) *hack-pos-speed*)
(return (-> *hack-pos-buffer-pos* i))
)
)
(set! (-> *hack-pos-buffer-id* *hack-pos-next-idx*) (the-as int obj))
(set! (-> *hack-pos-buffer-pos* *hack-pos-next-idx*) 0)
(+! *hack-pos-next-idx* 1)
(if (= *hack-pos-next-idx* 4)
(set! *hack-pos-next-idx* 0)
)
*hack-pos-speed*
)
(defun get-str-id-is-playing? ((obj int))
#t
)
)
(#t
(define get-current-str-pos current-str-pos)
(define get-str-id-is-playing? str-id-is-playing?)
)
)
(defbehavior ja-play-spooled-anim process-drawable ((arg0 spool-anim) (arg1 art-joint-anim) (arg2 art-joint-anim) (arg3 (function process-drawable symbol)))
(local-vars (v0-59 int) (sv-176 int))
(define *hack-pos* 12)
(let ((s2-0 arg2)
(s1-0 arg3)
(gp-0 (new 'stack 'spooler-block arg2 arg3))
@@ -1011,7 +1050,7 @@
(let* ((f30-0 (* 0.05859375 (-> s5-8 speed)))
(f28-0 (+ (-> gp-0 part-audio-start) (/ (the float (+ (-> s5-8 frames num-frames) -1)) f30-0)))
)
(set! sv-176 (current-str-pos (-> gp-0 sid)))
(set! sv-176 (get-current-str-pos (-> gp-0 sid))) ;; modified
(set! (-> gp-0 good-time) (-> self clock frame-counter))
(until (>= (the float v0-59) f28-0)
(if (= (-> self skel root-channel 0) (-> self skel channel))
@@ -1059,8 +1098,8 @@
(set! (-> gp-0 old-pos) sv-176)
(set! (-> gp-0 old-time) (-> self clock frame-counter))
(suspend)
(let* ((f26-0 (* (- (the float (current-str-pos (-> gp-0 sid))) (-> gp-0 part-audio-start)) f30-0))
(f0-16 (if (str-id-is-playing? (the-as int (-> gp-0 sid)))
(let* ((f26-0 (* (- (the float (get-current-str-pos (-> gp-0 sid))) (-> gp-0 part-audio-start)) f30-0))
(f0-16 (if (get-str-id-is-playing? (the-as int (-> gp-0 sid)))
(fmax 0.0 (fmin f26-0 (the float (+ (-> (ja-group) frames num-frames) -1))))
(fmax 0.0 (fmin (ja-frame-num 0) (the float (+ (-> (ja-group) frames num-frames) -1))))
)
@@ -1068,7 +1107,7 @@
)
(ja-no-eval :num! (seek!) :frame-num f0-16)
)
(set! v0-59 (current-str-pos (-> gp-0 sid)))
(set! v0-59 (get-current-str-pos (-> gp-0 sid)))
(set! sv-176 v0-59)
)
(set! (-> gp-0 part-audio-start) f28-0)
+276 -6
View File
@@ -5,8 +5,30 @@
;; name in dgo: rigid-body
;; dgos: GAME, COMMON
;; og:ignore-form:collide-shape-moving-method-63
;; og:ignore-form:collide-shape-moving-method-67
(deftype rb-work (structure)
((cquery collide-query :inline)
(mat-1 matrix :inline :offset 544)
(vec-2 vector :inline :offset 608)
(vec-5 vector :inline :offset 624)
(vec-3 vector :inline :offset 640)
(float-4 float :offset 656)
(pat-id pat-surface :offset 660)
(rbody rigid-body :offset 664)
(prim-id int32 :offset 668)
(vec-1 vector :inline :offset 672)
(quat-1 quaternion :inline)
(vec-8 vector :inline :offset 704)
(vec-4 vector :inline :offset 720)
(vec-6 vector :inline)
(vec-7 vector :inline)
(vec-9 vector :inline)
(float-2 float :offset 784)
(float-3 float)
(dt float :offset 792)
(float-1 float)
(cnt int8 :offset 800)
)
)
;; DECOMP BEGINS
@@ -311,15 +333,74 @@
)
(rigid-body-method-13 obj)
(if (logtest? (-> obj flags) (rigid-body-flag enable-collision))
;; TODO - disabled for now, method isnt decomp'd yet, it sucks
;; (collide-shape-moving-method-63 arg0 obj arg1)
(collide-shape-moving-method-63 arg0 obj arg1)
(rigid-body-method-14 obj arg1)
)
0
(none)
)
;; ERROR: function was not converted to expressions. Cannot decompile.
(defmethod collide-with-all-collide-cache-prims collide-shape-moving ((obj collide-shape-moving) (arg0 matrix) (arg1 collide-query))
(rlet ((acc :class vf)
(vf0 :class vf)
(vf1 :class vf)
(vf2 :class vf)
(vf3 :class vf)
(vf4 :class vf)
(vf5 :class vf)
(vf6 :class vf)
(vf7 :class vf)
(vf8 :class vf)
)
(init-vf0-vector)
(let ((s4-0 *collide-cache*)
(s3-0 (-> obj root-prim))
(s2-0 1)
)
(b! (nonzero? (-> s3-0 prim-core prim-type)) cfg-2 :delay (empty-form))
(let ((v1-2 s3-0))
(set! s3-0 (-> (the-as collide-shape-prim-group v1-2) child 0))
(set! s2-0 (the-as int (-> v1-2 specific 0)))
)
(label cfg-2)
(b! #t cfg-13 :delay (nop!))
(label cfg-3)
(+! s2-0 -1)
(let ((v1-4 -1))
(b! (!= (-> s3-0 prim-core prim-type) v1-4) cfg-12 :delay (nop!))
)
(.lvf vf5 (&-> s3-0 local-sphere quad))
(.lvf vf1 (&-> arg0 quad 0))
(.lvf vf2 (&-> arg0 quad 1))
(.lvf vf3 (&-> arg0 quad 2))
(.lvf vf4 (&-> arg0 trans quad))
(.lvf vf6 (&-> s3-0 prim-core world-sphere quad))
(.mul.x.vf acc vf1 vf5)
(.add.mul.y.vf acc vf2 vf5 acc)
(.add.mul.z.vf acc vf3 vf5 acc)
(.add.mul.w.vf vf7 vf4 vf0 acc :mask #b111)
(.sub.vf vf8 vf7 vf6 :mask #b111)
(.svf (&-> arg1 move-dist quad) vf8)
(let ((s1-0 (the-as collide-cache-prim (-> s4-0 prims))))
(countdown (s0-0 (-> s4-0 num-prims))
(when (logtest? (-> s3-0 prim-core collide-with) (-> s1-0 prim-core collide-as))
(if (>= (the-as int (-> s1-0 prim-core prim-type)) 0)
(collide-with-collide-cache-prim-mesh s3-0 arg1 s1-0)
(collide-with-collide-cache-prim-sphere s3-0 arg1 s1-0)
)
)
(&+! s1-0 48)
)
)
(label cfg-12)
(&+! s3-0 80)
(label cfg-13)
(b! (nonzero? s2-0) cfg-3 :delay (nop!))
)
0
(none)
)
)
(defun transform-rigid-body-prims ((arg0 collide-shape-prim) (arg1 matrix))
(rlet ((acc :class vf)
@@ -359,7 +440,196 @@
)
)
;; ERROR: failed type prop at 118: Could not figure out load: (set! v1 (l.wu v1))
(defmethod collide-shape-moving-method-63 collide-shape-moving ((obj collide-shape-moving) (arg0 rigid-body) (arg1 float))
(local-vars (s3-0 rigid-body))
(with-pp
(rlet ((acc :class vf)
(Q :class vf)
(vf0 :class vf)
(vf6 :class vf)
(vf7 :class vf)
(vf8 :class vf)
(vf9 :class vf)
)
(init-vf0-vector)
(let ((s5-0 (new 'stack-no-clear 'rb-work)))
(set! (-> s5-0 dt) arg1)
(set! (-> s5-0 float-1) 1.0)
(set! (-> s5-0 cnt) 0)
(until (not (and (< 0.05 (-> s5-0 float-1)) (< (-> s5-0 cnt) (the-as int (-> obj max-iteration-count)))))
(set! (-> s5-0 cquery best-dist) -100000000.0)
(set! (-> s5-0 cquery best-my-prim) #f)
(set! (-> s5-0 cquery num-spheres) (the-as uint #f))
(set! (-> s5-0 vec-1 quad) (-> arg0 position quad))
(quaternion-copy! (-> s5-0 quat-1) (-> arg0 rotation))
(rigid-body-method-14 arg0 (* (-> s5-0 float-1) (-> s5-0 dt)))
(mem-copy! (the-as pointer (-> s5-0 mat-1)) (the-as pointer (-> arg0 matrix)) 64)
(set! (-> arg0 position quad) (-> s5-0 vec-1 quad))
(quaternion-copy! (-> arg0 rotation) (-> s5-0 quat-1))
(rigid-body-method-24 arg0)
(transform-rigid-body-prims (-> obj root-prim) (-> arg0 matrix))
(collide-with-all-collide-cache-prims obj (-> s5-0 mat-1) (-> s5-0 cquery))
(let ((f30-0 (-> s5-0 cquery best-dist)))
(b! (>= f30-0 0.0) cfg-3 :delay #f)
(rigid-body-method-14 arg0 (* (-> s5-0 float-1) (-> s5-0 dt)))
(rigid-body-method-13 arg0)
(transform-rigid-body-prims (-> obj root-prim) (-> arg0 matrix))
(set! (-> s5-0 float-1) 0.0)
(b! #t cfg-44 :delay (nop!))
(label cfg-3)
(update-from-step-size *touching-list* f30-0)
(rigid-body-method-14 arg0 (* (-> s5-0 float-1) (-> s5-0 dt) f30-0))
)
(rigid-body-method-13 arg0)
(transform-rigid-body-prims (-> obj root-prim) (-> arg0 matrix))
(mem-copy! (the-as pointer (-> s5-0 mat-1)) (the-as pointer (-> arg0 matrix)) 64)
(set! s3-0 (the-as rigid-body #f))
(b! (not (-> s5-0 cquery num-spheres)) cfg-12 :delay (empty-form))
(let ((a0-20 (-> (the-as collide-shape-prim (-> s5-0 cquery num-spheres)) cshape process)))
(b! (zero? (-> a0-20 rbody)) cfg-12 :delay (empty-form))
(set! s3-0 (-> a0-20 rbody state))
(b! (not (logtest? (-> s3-0 flags) (rigid-body-flag active))) cfg-11 :delay (nop!))
(b! (logtest? (-> s3-0 flags) (rigid-body-flag enable-physics)) cfg-10 :delay (empty-form))
(send-event a0-20 'enable-physics)
)
(label cfg-10)
(b! #t cfg-12 :delay (nop!))
(label cfg-11)
(set! s3-0 (the-as rigid-body #f))
(label cfg-12)
(let ((v1-37 (-> s5-0 cquery best-my-prim)))
(.lvf vf7 (&-> (-> s5-0 cquery) best-other-tri intersect quad))
(.lvf vf6 (&-> v1-37 prim-core world-sphere quad))
(.sub.vf vf8 vf6 vf7)
(.mul.vf vf9 vf8 vf8 :mask #b111)
(.mul.x.vf acc vf0 vf9 :mask #b1000)
(.add.mul.y.vf acc vf0 vf9 acc :mask #b1000)
(.add.mul.z.vf vf9 vf0 vf9 acc :mask #b1000)
(.isqrt.vf Q vf0 vf9 :fsf #b11 :ftf #b11)
(.mov.vf vf8 vf0 :mask #b1000)
(.wait.vf)
(.mul.vf vf8 vf8 Q :mask #b111)
(.nop.vf)
(.nop.vf)
(.nop.vf)
(.svf (&-> s5-0 vec-5 quad) vf8)
(.svf (&-> s5-0 vec-2 quad) vf7)
(set! (-> s5-0 prim-id) (the-as int (-> v1-37 prim-id)))
)
(rigid-body-method-22 arg0 (-> s5-0 vec-2) (-> s5-0 vec-3))
(b! (not s3-0) cfg-14 :delay (empty-form))
(rigid-body-method-13 s3-0)
(rigid-body-method-22 s3-0 (-> s5-0 vec-2) (-> s5-0 vec-4))
(vector-! (-> s5-0 vec-3) (-> s5-0 vec-3) (-> s5-0 vec-4))
(label cfg-14)
(set! (-> s5-0 float-4) 0.0)
(set! (-> s5-0 float-2) (+ -409.6 (vector-dot (-> s5-0 vec-3) (-> s5-0 vec-5))))
(set! (-> s5-0 float-3) 0.0)
(b! (>= (-> s5-0 float-2) 0.0) cfg-39)
(vector-! (-> s5-0 vec-6) (-> s5-0 vec-2) (-> arg0 position))
(vector-cross! (-> s5-0 vec-7) (-> s5-0 vec-6) (-> s5-0 vec-5))
(vector-rotate*! (-> s5-0 vec-7) (-> s5-0 vec-7) (-> arg0 inv-i-world))
(vector-cross! (-> s5-0 vec-7) (-> s5-0 vec-7) (-> s5-0 vec-6))
(set! (-> s5-0 float-3) (+ (-> arg0 info inv-mass) (vector-dot (-> s5-0 vec-5) (-> s5-0 vec-7))))
(let ((f30-1 (-> arg0 info bounce-factor)))
(cond
(s3-0
(vector-! (-> s5-0 vec-6) (-> s5-0 vec-2) (-> s3-0 position))
(vector-cross! (-> s5-0 vec-7) (-> s5-0 vec-6) (-> s5-0 vec-5))
(vector-rotate*! (-> s5-0 vec-7) (-> s5-0 vec-7) (-> s3-0 inv-i-world))
(vector-cross! (-> s5-0 vec-7) (-> s5-0 vec-7) (-> s5-0 vec-6))
(+! (-> s5-0 float-3) (+ (-> s3-0 info inv-mass) (vector-dot (-> s5-0 vec-5) (-> s5-0 vec-7))))
(set! f30-1 (fmax
(fmax f30-1 (-> s3-0 info bounce-factor))
(* (-> arg0 info bounce-mult-factor) (-> s3-0 info bounce-mult-factor))
)
)
)
(else
)
)
(set! (-> s5-0 float-4) (* (+ 1.0 f30-1) (/ (- (-> s5-0 float-2)) (-> s5-0 float-3))))
)
(vector-float*! (-> s5-0 vec-8) (-> s5-0 vec-5) (-> s5-0 float-4))
(let ((f30-2 (-> arg0 info mass)))
(if s3-0
(set! f30-2 (fmin f30-2 (-> s3-0 info mass)))
)
(vector+float*! (-> s5-0 vec-9) (-> s5-0 vec-3) (-> s5-0 vec-5) (- (-> s5-0 float-2)))
(vector-normalize! (-> s5-0 vec-9) 1.0)
(let ((f0-31 (* -1.0 (fmin
(* (vector-dot (-> s5-0 vec-9) (-> s5-0 vec-3)) f30-2)
(* (-> arg0 info friction-factor) (-> s5-0 float-4))
)
)
)
)
(vector+float*! (-> s5-0 vec-8) (-> s5-0 vec-8) (-> s5-0 vec-9) f0-31)
)
)
(rigid-body-method-18 arg0 (-> s5-0 vec-2) (-> s5-0 vec-8))
(when s3-0
(vector-float*! (-> s5-0 vec-8) (-> s5-0 vec-8) -1.0)
(rigid-body-method-18 s3-0 (-> s5-0 vec-2) (-> s5-0 vec-8))
)
(rigid-body-method-12 arg0 1.0)
(rigid-body-method-13 arg0)
(let ((f30-3 (-> s5-0 cquery best-dist)))
(when (< f30-3 0.0001)
(vector+float*! (-> arg0 position) (-> arg0 position) (-> s5-0 vec-5) 40.96)
(rigid-body-method-24 arg0)
)
(set! (-> s5-0 float-1) (- (-> s5-0 float-1) (* f30-3 (-> s5-0 float-1))))
)
(set! (-> s5-0 pat-id) (-> s5-0 cquery best-other-tri pat))
(let ((v1-103 pp))
(let ((a0-49 (the-as object (-> s5-0 cquery num-spheres))))
(if (the-as uint a0-49)
(set! v1-103 (-> (the-as collide-shape-prim-mesh a0-49) cshape process))
)
)
(set! (-> s5-0 rbody) s3-0)
(send-event (-> obj process) 'impact-impulse :from v1-103 (-> s5-0 vec-2))
)
(b! (not s3-0) cfg-32 :delay (empty-form))
(rigid-body-method-12 s3-0 1.0)
(rigid-body-method-13 s3-0)
(let ((s2-0 (-> (the-as collide-shape-prim-mesh (-> s5-0 cquery num-spheres)) cshape)))
(transform-rigid-body-prims (-> s2-0 root-prim) (-> s3-0 matrix))
(vector-float*! (-> s5-0 vec-5) (-> s5-0 vec-5) -1.0)
(vector-float*! (-> s5-0 vec-3) (-> s5-0 vec-3) -1.0)
(set! (-> s5-0 rbody) arg0)
(send-event (-> s2-0 process) 'impact-impulse :from (-> obj process) (-> s5-0 vec-2))
)
(label cfg-32)
(+! (-> s5-0 cnt) 1)
)
(b! #t cfg-42 :delay (nop!))
(label cfg-39)
(b! (not s3-0) cfg-41 :delay (empty-form))
(set! (-> arg0 blocked-by) (-> (the-as collide-shape-prim-mesh (-> s5-0 cquery num-spheres)) cshape process))
0
(label cfg-41)
(vector+float*! (-> arg0 position) (-> arg0 position) (-> s5-0 vec-5) 40.96)
(rigid-body-method-24 arg0)
0
(label cfg-42)
(when (< 0.0 (-> s5-0 float-1))
(rigid-body-method-14 arg0 (* (-> s5-0 float-1) (-> s5-0 dt)))
(rigid-body-method-13 arg0)
(transform-rigid-body-prims (-> obj root-prim) (-> arg0 matrix))
(set! (-> s5-0 float-1) 0.0)
)
(label cfg-44)
(let ((f0-47 (* (- 1.0 (-> s5-0 float-1)) (-> s5-0 dt))))
(set! (-> arg0 time-remaining) (- (-> arg0 time-remaining) f0-47))
)
)
0
(none)
)
)
)
(defmethod rigid-body-method-15 rigid-body ((obj rigid-body) (arg0 collide-shape-moving) (arg1 float))
(local-vars
+3 -6
View File
@@ -870,10 +870,6 @@
(defstate wait (scene-player)
:virtual #t
:enter (behavior ((arg0 symbol))
;; HACK TO NOT GET STUCK WAITING FOR SCENE TO LOAD
;; progress from cutscenes however is handled by the command-list on the load-state cleanup
(go-virtual release)
;; END HACK - REMOVE ME EVENTUALLY
(set! (-> self state-time) (-> self clock frame-counter))
(when (or (-> self scene) (-> self preload-continue))
(let ((gp-0 (scene-decode-continue (the-as basic (if (-> self scene)
@@ -996,7 +992,8 @@
(!= (-> *setting-control* user-current movie) (process->ppointer self))
)
*progress-process*
(!= (get-status *gui-control* (the-as sound-id (-> self gui-id))) 3)
;; modified
(#if STREAM_PLAY_HACK #f (!= (get-status *gui-control* (the-as sound-id (-> self gui-id))) 3))
)
)
(suspend)
@@ -1073,7 +1070,7 @@
)
(v1-167 (get-status *gui-control* (the-as sound-id a1-26)))
)
(not (or (= v1-167 (gui-status ready)) (= v1-167 (gui-status active))))
(#if STREAM_PLAY_HACK #f (not (or (= v1-167 (gui-status ready)) (= v1-167 (gui-status active)))))
)
)
)
+2 -1
View File
@@ -2392,7 +2392,7 @@
)
(let* ((s5-0 (-> arg0 param 1))
(gp-0 (if (type? s5-0 function)
(the-as (function process vector cspace) s5-0)
(the-as (function process vector cspace none) s5-0)
)
)
(s3-0 (command-get-process (-> arg0 param 2) (the-as process #f)))
@@ -2442,6 +2442,7 @@
(-> arg0 trans)
)
)
(the-as cspace s3-1)
)
(format 0 "ERROR: SCRIPT: joint-eval: unknown entity ~A in:~%~T~A~%" (-> arg0 param 2) (-> arg0 expr))
)
+52 -49
View File
@@ -859,6 +859,14 @@
"TOMB"
"TWEAKVAL")
;; intro cutscenes
(copy-strs "INSHUT" "INVORTEX" "INCSQUAR" "INPRISON")
;; jak ambient
(copy-strs "JAA1" "JAA2" "JAA3" "JAA4" "JAA5" "JAA6")
(copy-vag-files "ENG")
;;;;;;;;;;;;;;;;;;;;;
;; Text
;;;;;;;;;;;;;;;;;;;;;
@@ -2521,33 +2529,29 @@
;; "lbrnermk"
;; )
;; ;;;;;;;;;;;;;;;;;;;;;
;; ;; LCGUARD
;; ;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;
;; LCGUARD
;;;;;;;;;;;;;;;;;;;;;
;; (cgo "LCGUARD.DGO" "lcguard.gd")
(cgo "LCGUARD.DGO" "lcguard.gd")
;; (copy-textures 2691)
(copy-textures 2691)
;; (copy-gos
;; "crimson-guard-highres-ag"
;; "lcguard"
;; )
(copy-gos
"lcguard"
)
;; ;;;;;;;;;;;;;;;;;;;;;
;; ;; LCITYLOW
;; ;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;
;; LCITYLOW
;;;;;;;;;;;;;;;;;;;;;
;; (cgo "LCITYLOW.DGO" "lcitylow.gd")
(cgo "LCITYLOW.DGO" "lcitylow.gd")
;; (copy-textures 2755 2756 3388)
(copy-textures 2755 2756 3388)
;; (copy-gos
;; "barons-ship-lores-ag"
;; "searchlight-ag"
;; "pal-windmill-ag"
;; "lcitylow"
;; )
(copy-gos
"lcitylow"
)
;;;;;;;;;;;;;;;;;;;;;
;; LDJAKBRN
@@ -2715,21 +2719,19 @@
;; "lhipout"
;; )
;; ;;;;;;;;;;;;;;;;;;;;;
;; ;; LINTCSTB
;; ;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;
;; LINTCSTB
;;;;;;;;;;;;;;;;;;;;;
;; (cgo "LINTCSTB.DGO" "lintcstb.gd")
(cgo "LINTCSTB.DGO" "lintcstb.gd")
;; (copy-textures 2752 2754 3243)
(copy-textures 2752 2754 3243)
;; (copy-gos
;; "keira-highres-ag"
;; "samos-highres-ag"
;; "rift-rider-break-ag"
;; "rift-rider-ag"
;; "lintcstb"
;; )
(copy-gos
"rift-rider-break-ag"
"rift-rider-ag"
"lintcstb"
)
;; ;;;;;;;;;;;;;;;;;;;;;
;; ;; LJAKDAX
@@ -3861,7 +3863,7 @@
"ruins-vis"
)
(copy-strs "RUB1" "RUBW1" "RUBW2" "RUBW3" "RUBW4" "RUBW5" "RUBW6" "RUDPA1" "RUPC1" "RUPC2")
(copy-strs "RUB1" "RUBW1" "RUBW2" "RUBW3" "RUBW4" "RUBW5" "RUBW6" "RUDPA1" "RUPC1" "RUPC2" "RUTVICTO")
;; ;;;;;;;;;;;;;;;;;;;;;
;; ;; SAG
@@ -4257,26 +4259,27 @@
"throne-vis"
)
;; ;;;;;;;;;;;;;;;;;;;;;
;; ;; TITLE
;; ;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;
;; TITLE
;;;;;;;;;;;;;;;;;;;;;
;; (cgo "TITLE.DGO" "title.gd")
(cgo "TITLE.DGO" "title.gd")
;; (goal-src-sequence
;; ""
;; :deps ("$OUT/obj/los-control.o")
;; "levels/title/title-obs.gc"
;; )
(goal-src-sequence
""
:deps ("$OUT/obj/los-control.o")
"levels/title/title-obs.gc"
)
;; (copy-textures 3091 3090)
(copy-textures 3091 3090)
;; (copy-gos
;; "daxter-highres-ag"
;; "jak-logo-ag"
;; "jak-stand-ag"
;; "title"
;; )
(copy-gos
"jak-logo-ag"
"jak-stand-ag"
"title"
)
(copy-strs "DESCREEN" "TIDINTRO")
;; ;;;;;;;;;;;;;;;;;;;;;
;; ;; TOA
@@ -127,7 +127,7 @@
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command #x1 :anim #x4 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x4 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
@@ -36,8 +36,8 @@
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x4 :param0 #x64 :param1 #x64)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x4 :param0 #x64 :param1 #x64)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
)
@@ -79,7 +79,7 @@
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command #x1 :anim #x4 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x4 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
@@ -9,10 +9,10 @@
(define *crimson-guard-fact* (new 'static 'fact-info-enemy-defaults :idle-distance (meters 200)))
(defskelgroup skel-crimson-guard-level crimson-guard 0 4
((1 (meters 20)) (2 (meters 999999)))
(defskelgroup skel-crimson-guard-level crimson-guard crimson-guard-lod0-jg crimson-guard-idle-ja
((crimson-guard-lod0-mg (meters 20)) (crimson-guard-lod2-mg (meters 999999)))
:bounds (static-spherem 0 0 0 5)
:shadow 3
:shadow crimson-guard-shadow-mg
:origin-joint-index 3
)
@@ -89,7 +89,7 @@
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command #x1 :anim #x4 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x4 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
@@ -201,7 +201,7 @@
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command #x1 :anim #x4 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x4 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
@@ -313,7 +313,7 @@
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command #x1 :anim #x4 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x4 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
@@ -425,7 +425,7 @@
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command #x1 :anim #x4 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x4 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
@@ -537,7 +537,7 @@
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command #x1 :anim #x4 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x4 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
+4 -4
View File
@@ -170,10 +170,10 @@
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 8
(new 'static 'idle-control-frame :command #x1 :anim #x4 :param0 #x1 :param1 #x5)
(new 'static 'idle-control-frame :command #x1 :anim #x5 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command #x1 :anim #x4 :param0 #x1 :param1 #x5)
(new 'static 'idle-control-frame :command #x1 :anim #x6 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x4 :param0 #x1 :param1 #x5)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x5 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x4 :param0 #x1 :param1 #x5)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x6 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
@@ -249,7 +249,7 @@
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command #x1 :anim #x6 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x6 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
@@ -86,7 +86,7 @@
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command #x1 :anim #x5 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x5 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
@@ -95,22 +95,22 @@
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 20
(new 'static 'idle-control-frame :command #x2 :param0 #x27)
(new 'static 'idle-control-frame :command #x1 :anim #x5 :param0 #x4 :param1 #x6)
(new 'static 'idle-control-frame :command #x2 :param0 #x27)
(new 'static 'idle-control-frame :command #x1 :anim #x7 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command #x1 :anim #x6 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command #x2 :param0 #x27)
(new 'static 'idle-control-frame :command #x1 :anim #x5 :param0 #x4 :param1 #x6)
(new 'static 'idle-control-frame :command #x1 :anim #x8 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command #x1 :anim #x7 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command #x1 :anim #x6 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command #x2 :param0 #x27)
(new 'static 'idle-control-frame :command #x1 :anim #x5 :param0 #x4 :param1 #x8)
(new 'static 'idle-control-frame :command #x2 :param0 #x27)
(new 'static 'idle-control-frame :command #x1 :anim #x8 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command #x2 :param0 #x27)
(new 'static 'idle-control-frame :command #x1 :anim #x6 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x27)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x5 :param0 #x4 :param1 #x6)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x27)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x7 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x6 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x27)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x5 :param0 #x4 :param1 #x6)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x8 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x7 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x6 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x27)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x5 :param0 #x4 :param1 #x8)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x27)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x8 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x27)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x6 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
@@ -392,10 +392,13 @@
)
)
(defskelgroup skel-sew-gunturret sew-gunturret 0 2 ((1 (meters 999999))) :bounds (static-spherem 0 0 0 5))
(defskelgroup skel-sew-gunturret sew-gunturret sew-gunturret-lod0-jg sew-gunturret-idle-ja
((sew-gunturret-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 5)
)
(defskelgroup skel-sew-gunturret-explode sew-gunturret 4 6
((5 (meters 999999)))
(defskelgroup skel-sew-gunturret-explode sew-gunturret sew-gunturret-explode-lod0-jg sew-gunturret-explode-idle-ja
((sew-gunturret-explode-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 15)
)
@@ -482,7 +485,7 @@
:move-to-ground #f
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command #x1 :anim #x2 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x2 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
@@ -1088,10 +1091,13 @@
(none)
)
(defskelgroup skel-pal-gun-turret pal-gun-turret 0 2 ((1 (meters 999999))) :bounds (static-spherem 0 0 0 4))
(defskelgroup skel-pal-gun-turret pal-gun-turret pal-gun-turret-lod0-jg pal-gun-turret-idle-ja
((pal-gun-turret-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 4)
)
(defskelgroup skel-pal-gun-turret-explode pal-gun-turret 4 6
((5 (meters 999999)))
(defskelgroup skel-pal-gun-turret-explode pal-gun-turret pal-gun-turret-explode-lod0-jg pal-gun-turret-explode-idle-ja
((pal-gun-turret-explode-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 15)
)
@@ -1105,7 +1111,7 @@
:move-to-ground #f
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command #x1 :anim #x2 :param0 #x2 :param1 #x2)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x2 :param0 #x2 :param1 #x2)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
+16 -18
View File
@@ -416,21 +416,21 @@
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 16
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x5 :param0 #x3 :param1 #x6)
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x6 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command #x1 :anim #x7 :param0 #xf :param1 #x1e)
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x5 :param0 #x2 :param1 #x4)
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x8 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command #x1 :anim #x9 :param0 #xa :param1 #x14)
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x5 :param0 #x1 :param1 #x2)
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x8 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command #x1 :anim #x9 :param0 #xf :param1 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x5 :param0 #x3 :param1 #x6)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x6 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x7 :param0 #xf :param1 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x5 :param0 #x2 :param1 #x4)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x8 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x9 :param0 #xa :param1 #x14)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x5 :param0 #x1 :param1 #x2)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x8 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x9 :param0 #xf :param1 #x1e)
(new 'static 'idle-control-frame)
)
:idle-anim 5
@@ -1445,8 +1445,6 @@
(the-as float s5-2)
)
)
(set! (-> obj minimap)
(add-icon! *minimap* obj (the-as uint 70) (the-as int #f) (the-as vector #t) 0)
)
(set! (-> obj minimap) (add-icon! *minimap* obj (the-as uint 70) (the-as int #f) (the-as vector #t) 0))
(none)
)
+35 -35
View File
@@ -136,41 +136,41 @@
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 36
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x5 :param0 #x1 :param1 #x3)
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x6 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command #x1 :anim #x7 :param0 #x1e :param1 #x69)
(new 'static 'idle-control-frame :command #x2 :param0 #x3c)
(new 'static 'idle-control-frame :command #x1 :anim #x5 :param0 #x1 :param1 #x3)
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x6 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command #x1 :anim #x7 :param0 #x1e :param1 #x69)
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x8 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command #x1 :anim #x9 :param0 #x1e :param1 #x69)
(new 'static 'idle-control-frame :command #x1 :anim #xa :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x5 :param0 #x1 :param1 #x3)
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x8 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command #x1 :anim #x9 :param0 #x1e :param1 #x69)
(new 'static 'idle-control-frame :command #x1 :anim #xa :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x5 :param0 #x1 :param1 #x3)
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x6 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command #x1 :anim #x7 :param0 #x1e :param1 #x69)
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x8 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command #x1 :anim #x9 :param0 #x1e :param1 #x69)
(new 'static 'idle-control-frame :command #x1 :anim #xa :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x5 :param0 #x1 :param1 #x3)
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x1e :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command #x2 :param0 #x3c)
(new 'static 'idle-control-frame :command #x1 :anim #x5 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x5 :param0 #x1 :param1 #x3)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x6 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x7 :param0 #x1e :param1 #x69)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x3c)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x5 :param0 #x1 :param1 #x3)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x6 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x7 :param0 #x1e :param1 #x69)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x8 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x9 :param0 #x1e :param1 #x69)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #xa :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x5 :param0 #x1 :param1 #x3)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x8 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x9 :param0 #x1e :param1 #x69)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #xa :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x5 :param0 #x1 :param1 #x3)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x6 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x7 :param0 #x1e :param1 #x69)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x8 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x9 :param0 #x1e :param1 #x69)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #xa :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x5 :param0 #x1 :param1 #x3)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x1e :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x3c)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x5 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
)
:idle-anim 5
+1 -1
View File
@@ -178,7 +178,7 @@
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command #x1 :anim #x5 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x5 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
+1 -1
View File
@@ -75,7 +75,7 @@
:move-to-ground #f
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command #x1 :anim #x5 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x5 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
+1 -1
View File
@@ -241,7 +241,7 @@
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command #x1 :anim #x5 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x5 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
+1 -1
View File
@@ -468,7 +468,7 @@
:move-to-ground #f
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command #x1 :anim #x4 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x4 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
@@ -7,3 +7,6 @@
;; DECOMP BEGINS
(defun set-jakb-prison-texture-morph! ((a int))
(none)
)
@@ -38,10 +38,10 @@
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 8
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x4 :param0 #x2 :param1 #x3)
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x5 :param0 #x1 :param1 #x2)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x4 :param0 #x2 :param1 #x3)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x5 :param0 #x1 :param1 #x2)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
+1 -1
View File
@@ -62,7 +62,7 @@
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command #x1 :anim #x5 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x5 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
+4 -4
View File
@@ -7,8 +7,8 @@
;; DECOMP BEGINS
(defskelgroup skel-gator amphibian 0 -1
((1 (meters 20)) (2 (meters 999999)))
(defskelgroup skel-gator amphibian amphibian-lod0-jg -1
((amphibian-lod0-mg (meters 20)) (amphibian-lod1-mg (meters 999999)))
:bounds (static-spherem 0 1 0 5.5)
)
@@ -42,8 +42,8 @@
:move-to-ground #f
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #xd :param0 #x64 :param1 #x64)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #xd :param0 #x64 :param1 #x64)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
)
+2 -2
View File
@@ -1457,8 +1457,8 @@ This commonly includes things such as:
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x5 :param0 #x1 :param1 #x3)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x5 :param0 #x1 :param1 #x3)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
)
+4 -4
View File
@@ -152,10 +152,10 @@
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 8
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x3 :param0 #x1 :param1 #x4)
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x4 :param0 #x1 :param1 #x4)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x3 :param0 #x1 :param1 #x4)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x4 :param0 #x1 :param1 #x4)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
File diff suppressed because it is too large Load Diff
+4 -1
View File
@@ -62,5 +62,8 @@ if (WIN32)
endif ()
add_executable(goalc main.cpp)
target_link_libraries(goalc common Zydis compiler sqlite3 SQLiteCpp)
add_executable(goalc-simple simple_main.cpp)
target_link_libraries(goalc common Zydis compiler sqlite3 SQLiteCpp)
target_link_libraries(goalc-simple common Zydis compiler sqlite3 SQLiteCpp)
+52
View File
@@ -0,0 +1,52 @@
#include "common/log/log.h"
#include "common/util/FileUtil.h"
#include "common/versions.h"
#include "goalc/compiler/Compiler.h"
int main(int argc, char** argv) {
// logging
lg::set_stdout_level(lg::level::info);
lg::set_flush_level(lg::level::info);
lg::initialize();
// game version
std::string game = "jak1";
if (argc > 1) {
game = argv[1];
}
GameVersion game_version = game_name_to_version(game);
// path
if (!file_util::setup_project_path(std::nullopt)) {
return 1;
}
lg::info("OpenGOAL Compiler {}.{}", versions::GOAL_VERSION_MAJOR, versions::GOAL_VERSION_MINOR);
std::unique_ptr<Compiler> compiler;
ReplStatus status = ReplStatus::OK;
try {
compiler =
std::make_unique<Compiler>(game_version, "", std::make_unique<REPL::Wrapper>(game_version));
while (status != ReplStatus::WANT_EXIT) {
if (status == ReplStatus::WANT_RELOAD) {
lg::info("Reloading compiler...");
if (compiler) {
compiler->save_repl_history();
}
compiler = std::make_unique<Compiler>(game_version, "",
std::make_unique<REPL::Wrapper>(game_version));
status = ReplStatus::OK;
}
std::string input_from_stdin = compiler->get_repl_input();
if (!input_from_stdin.empty()) {
status = compiler->handle_repl_string(input_from_stdin);
}
}
} catch (std::exception& e) {
lg::error("Compiler Fatal Error: {}", e.what());
}
return 0;
}
+1 -5
View File
@@ -66,7 +66,7 @@
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command #x1 :anim #x3 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x3 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
@@ -1437,7 +1437,3 @@
0
(none)
)
+1 -1
View File
@@ -67,7 +67,7 @@
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command #x1 :anim #x4 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x4 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
+2 -2
View File
@@ -181,7 +181,7 @@
;; definition of type collide-prim-core
(deftype collide-prim-core (structure)
((world-sphere vector :inline :offset-assert 0)
(collide-as collide-spec :offset-assert 16)
(collide-as collide-spec :offset 16)
(collide-with collide-spec :offset-assert 20)
(action collide-action :offset-assert 24)
(prim-type prim-type :offset-assert 28)
@@ -1628,7 +1628,7 @@
(try-snap-to-surface (_type_ vector float float float) symbol 64)
(fill-and-try-snap-to-surface (_type_ vector float float float collide-query) symbol 65)
(step-collison! (_type_ vector vector float int) float 66)
(collide-shape-moving-method-67 () none 67)
(collide-with-all-collide-cache-prims (_type_ matrix collide-query) none 67)
)
)
+12 -14
View File
@@ -3,10 +3,10 @@
;; definition of type idle-control-frame
(deftype idle-control-frame (uint32)
((command uint8 :offset 0 :size 8)
(anim uint8 :offset 8 :size 8)
(param0 uint8 :offset 16 :size 8)
(param1 uint8 :offset 24 :size 8)
((command ic-cmd :offset 0 :size 8)
(anim uint8 :offset 8 :size 8)
(param0 uint8 :offset 16 :size 8)
(param1 uint8 :offset 24 :size 8)
)
:method-count-assert 9
:size-assert #x4
@@ -28,13 +28,13 @@
(v1-4 (-> obj command))
)
(t9-1 a0-2 a1-1 a2-1 (cond
((= v1-4 1)
((= v1-4 (ic-cmd play))
"play"
)
((= v1-4 2)
((= v1-4 (ic-cmd push))
"push"
)
((zero? v1-4)
((= v1-4 (ic-cmd restart))
"restart"
)
(else
@@ -106,11 +106,9 @@
(let ((s5-0 self))
(set! self arg0)
(loop
(let* ((s4-0 (-> obj current 0))
(v1-4 (-> s4-0 command))
)
(cond
((= v1-4 1)
(let ((s4-0 (-> obj current 0)))
(case (-> s4-0 command)
(((ic-cmd play))
(if (< (-> s4-0 anim) 0)
(return #f)
)
@@ -157,14 +155,14 @@
)
)
)
((= v1-4 2)
(((ic-cmd push))
(ja-channel-push! 1 (the-as time-frame (-> s4-0 param0)))
(set! (-> obj current) (&-> (-> obj current) 1))
(set! (-> obj counter) 0)
(set! (-> obj target) 0)
0
)
((zero? v1-4)
(((ic-cmd restart))
(set! (-> obj current) (-> obj anim))
(set! (-> obj counter) 0)
(set! (-> obj target) 0)
File diff suppressed because it is too large Load Diff
@@ -216,7 +216,7 @@
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command #x1 :anim #x4 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x4 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
@@ -45,8 +45,8 @@
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x4 :param0 #x64 :param1 #x64)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x4 :param0 #x64 :param1 #x64)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
)
+1 -1
View File
@@ -124,7 +124,7 @@
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command #x1 :anim #x4 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x4 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
@@ -137,7 +137,7 @@
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command #x1 :anim #x4 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x4 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
@@ -251,7 +251,7 @@
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command #x1 :anim #x4 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x4 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
@@ -365,7 +365,7 @@
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command #x1 :anim #x4 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x4 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
@@ -479,7 +479,7 @@
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command #x1 :anim #x4 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x4 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
@@ -593,7 +593,7 @@
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command #x1 :anim #x4 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x4 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
+4 -4
View File
@@ -229,10 +229,10 @@
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 8
(new 'static 'idle-control-frame :command #x1 :anim #x4 :param0 #x1 :param1 #x5)
(new 'static 'idle-control-frame :command #x1 :anim #x5 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command #x1 :anim #x4 :param0 #x1 :param1 #x5)
(new 'static 'idle-control-frame :command #x1 :anim #x6 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x4 :param0 #x1 :param1 #x5)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x5 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x4 :param0 #x1 :param1 #x5)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x6 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
@@ -331,7 +331,7 @@
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command #x1 :anim #x6 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x6 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
@@ -135,7 +135,7 @@
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command #x1 :anim #x5 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x5 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
@@ -130,22 +130,22 @@
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 20
(new 'static 'idle-control-frame :command #x2 :param0 #x27)
(new 'static 'idle-control-frame :command #x1 :anim #x5 :param0 #x4 :param1 #x6)
(new 'static 'idle-control-frame :command #x2 :param0 #x27)
(new 'static 'idle-control-frame :command #x1 :anim #x7 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command #x1 :anim #x6 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command #x2 :param0 #x27)
(new 'static 'idle-control-frame :command #x1 :anim #x5 :param0 #x4 :param1 #x6)
(new 'static 'idle-control-frame :command #x1 :anim #x8 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command #x1 :anim #x7 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command #x1 :anim #x6 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command #x2 :param0 #x27)
(new 'static 'idle-control-frame :command #x1 :anim #x5 :param0 #x4 :param1 #x8)
(new 'static 'idle-control-frame :command #x2 :param0 #x27)
(new 'static 'idle-control-frame :command #x1 :anim #x8 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command #x2 :param0 #x27)
(new 'static 'idle-control-frame :command #x1 :anim #x6 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x27)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x5 :param0 #x4 :param1 #x6)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x27)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x7 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x6 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x27)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x5 :param0 #x4 :param1 #x6)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x8 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x7 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x6 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x27)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x5 :param0 #x4 :param1 #x8)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x27)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x8 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x27)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x6 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
@@ -554,7 +554,7 @@
:move-to-ground #f
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command #x1 :anim #x2 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x2 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
@@ -1209,7 +1209,7 @@
:move-to-ground #f
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command #x1 :anim #x2 :param0 #x2 :param1 #x2)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x2 :param0 #x2 :param1 #x2)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
+15 -15
View File
@@ -450,21 +450,21 @@
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 16
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x5 :param0 #x3 :param1 #x6)
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x6 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command #x1 :anim #x7 :param0 #xf :param1 #x1e)
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x5 :param0 #x2 :param1 #x4)
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x8 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command #x1 :anim #x9 :param0 #xa :param1 #x14)
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x5 :param0 #x1 :param1 #x2)
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x8 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command #x1 :anim #x9 :param0 #xf :param1 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x5 :param0 #x3 :param1 #x6)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x6 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x7 :param0 #xf :param1 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x5 :param0 #x2 :param1 #x4)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x8 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x9 :param0 #xa :param1 #x14)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x5 :param0 #x1 :param1 #x2)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x8 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x9 :param0 #xf :param1 #x1e)
(new 'static 'idle-control-frame)
)
:idle-anim 5
+35 -35
View File
@@ -197,41 +197,41 @@
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 36
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x5 :param0 #x1 :param1 #x3)
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x6 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command #x1 :anim #x7 :param0 #x1e :param1 #x69)
(new 'static 'idle-control-frame :command #x2 :param0 #x3c)
(new 'static 'idle-control-frame :command #x1 :anim #x5 :param0 #x1 :param1 #x3)
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x6 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command #x1 :anim #x7 :param0 #x1e :param1 #x69)
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x8 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command #x1 :anim #x9 :param0 #x1e :param1 #x69)
(new 'static 'idle-control-frame :command #x1 :anim #xa :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x5 :param0 #x1 :param1 #x3)
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x8 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command #x1 :anim #x9 :param0 #x1e :param1 #x69)
(new 'static 'idle-control-frame :command #x1 :anim #xa :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x5 :param0 #x1 :param1 #x3)
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x6 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command #x1 :anim #x7 :param0 #x1e :param1 #x69)
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x8 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command #x1 :anim #x9 :param0 #x1e :param1 #x69)
(new 'static 'idle-control-frame :command #x1 :anim #xa :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x5 :param0 #x1 :param1 #x3)
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x1e :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command #x2 :param0 #x3c)
(new 'static 'idle-control-frame :command #x1 :anim #x5 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x5 :param0 #x1 :param1 #x3)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x6 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x7 :param0 #x1e :param1 #x69)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x3c)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x5 :param0 #x1 :param1 #x3)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x6 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x7 :param0 #x1e :param1 #x69)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x8 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x9 :param0 #x1e :param1 #x69)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #xa :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x5 :param0 #x1 :param1 #x3)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x8 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x9 :param0 #x1e :param1 #x69)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #xa :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x5 :param0 #x1 :param1 #x3)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x6 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x7 :param0 #x1e :param1 #x69)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x8 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x9 :param0 #x1e :param1 #x69)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #xa :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x5 :param0 #x1 :param1 #x3)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x1e :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x3c)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x5 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
)
:idle-anim 5
+1 -1
View File
@@ -233,7 +233,7 @@
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command #x1 :anim #x5 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x5 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
+1 -1
View File
@@ -122,7 +122,7 @@
:move-to-ground #f
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command #x1 :anim #x5 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x5 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
+1 -1
View File
@@ -295,7 +295,7 @@
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command #x1 :anim #x5 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x5 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
+1 -1
View File
@@ -521,7 +521,7 @@
:move-to-ground #f
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command #x1 :anim #x4 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x4 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
+4 -4
View File
@@ -47,10 +47,10 @@
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 8
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x4 :param0 #x2 :param1 #x3)
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x5 :param0 #x1 :param1 #x2)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x4 :param0 #x2 :param1 #x3)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x5 :param0 #x1 :param1 #x2)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
+1 -1
View File
@@ -90,7 +90,7 @@
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command #x1 :anim #x5 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x5 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
+2 -2
View File
@@ -56,8 +56,8 @@
:move-to-ground #f
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #xd :param0 #x64 :param1 #x64)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #xd :param0 #x64 :param1 #x64)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
)
+2 -2
View File
@@ -1694,8 +1694,8 @@ This commonly includes things such as:
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x5 :param0 #x1 :param1 #x3)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x5 :param0 #x1 :param1 #x3)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
)
+4 -4
View File
@@ -408,10 +408,10 @@
:move-to-ground #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 8
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x3 :param0 #x1 :param1 #x4)
(new 'static 'idle-control-frame :command #x2 :param0 #x1e)
(new 'static 'idle-control-frame :command #x1 :anim #x4 :param0 #x1 :param1 #x4)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x3 :param0 #x1 :param1 #x4)
(new 'static 'idle-control-frame :command (ic-cmd push) :param0 #x1e)
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x4 :param0 #x1 :param1 #x4)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
File diff suppressed because it is too large Load Diff
+1
View File
@@ -61,6 +61,7 @@
"DGO/STD.DGO",
"DGO/STR.DGO",
"DGO/THR.DGO",
"DGO/TITLE.DGO",
"DGO/TOA.DGO",
"DGO/TOB.DGO",
"DGO/TOC.DGO",