mirror of
https://github.com/open-goal/jak-project
synced 2026-08-21 14:54:53 -04:00
decomp more level stuff (#932)
* more level stuff * vi1 to jun load working, with multiple skies * small fixes * add level ref test * clang
This commit is contained in:
@@ -119,6 +119,9 @@ bool check_stopped(const ThreadID& tid, SignalInfo* out) {
|
||||
case SIGTRAP:
|
||||
out->kind = SignalInfo::BREAK;
|
||||
break;
|
||||
case SIGILL:
|
||||
out->kind = SignalInfo::ILLEGAL_INSTR;
|
||||
break;
|
||||
|
||||
default:
|
||||
out->kind = SignalInfo::UNKNOWN;
|
||||
|
||||
@@ -83,6 +83,7 @@ struct SignalInfo {
|
||||
SEGFAULT, // access bad memory
|
||||
BREAK, // hit a breakpoint or execute int3
|
||||
MATH_EXCEPTION, // divide by zero
|
||||
ILLEGAL_INSTR, // bad instruction
|
||||
UNKNOWN, // some other signal that is unsupported
|
||||
DISAPPEARED, // process disappeared (maybe killed by the user)
|
||||
|
||||
|
||||
@@ -5099,19 +5099,19 @@
|
||||
(unload! (_type_) _type_ 12)
|
||||
(bsp-name (_type_) symbol 13)
|
||||
(dummy-14 (_type_ object) memory-usage-block 14)
|
||||
(dummy-15 (_type_ vector) symbol 15)
|
||||
(point-in-boxes? (_type_ vector) symbol 15)
|
||||
(update-vis! (_type_ level-vis-info uint uint) symbol 16)
|
||||
(load-continue (_type_) _type_ 17)
|
||||
(load-begin (_type_) _type_ 18)
|
||||
(login (_type_) _type_ 19)
|
||||
(login-begin (_type_) _type_ 19)
|
||||
(vis-load (_type_) uint 20)
|
||||
(dummy-21 (_type_) none 21)
|
||||
(activate (_type_) _type_ 22)
|
||||
(birth (_type_) _type_ 22)
|
||||
(level-status-set! (_type_ symbol) _type_ 23)
|
||||
(dummy-24 (_type_) _type_ 24)
|
||||
(dummy-25 (_type_) int 25)
|
||||
(load-required-packages (_type_) _type_ 24)
|
||||
(init-vis (_type_) int 25)
|
||||
(vis-clear (_type_) int 26)
|
||||
(dummy-27 (_type_ vector string) none 27)
|
||||
(debug-print-splitbox (_type_ vector string) none 27)
|
||||
(art-group-get-by-name (_type_ string) art-group 28)
|
||||
)
|
||||
)
|
||||
@@ -6153,7 +6153,7 @@
|
||||
(collide-y-probe (_type_ int collide-list) none 12)
|
||||
(collide-ray (_type_ int collide-list) none 13)
|
||||
(dummy-14 (_type_) none 14)
|
||||
(dummy-15 (_type_ object object) none 15) ;; something debugging
|
||||
(debug-draw (_type_ drawable object) none 15)
|
||||
(dummy-16 (_type_ object object) object 16)
|
||||
(collect-ambients (_type_ sphere int ambient-list) none 17)
|
||||
)
|
||||
@@ -6180,6 +6180,9 @@
|
||||
((length int16 :offset 6)
|
||||
(data drawable 1 :offset-assert 32)
|
||||
)
|
||||
(:methods
|
||||
(new (symbol type int) _type_)
|
||||
)
|
||||
:flag-assert #x1200000024
|
||||
)
|
||||
|
||||
@@ -6262,7 +6265,7 @@
|
||||
)
|
||||
|
||||
(deftype drawable-tree-array (drawable-group)
|
||||
()
|
||||
((trees drawable-tree 1 :offset 32 :score 100))
|
||||
:flag-assert #x1200000024
|
||||
)
|
||||
|
||||
@@ -7737,7 +7740,7 @@
|
||||
(login (_type_) _type_ 9)
|
||||
(dummy-10 (_type_ string type) joint 10)
|
||||
(dummy-11 (_type_ string type) int 11)
|
||||
(dummy-12 (_type_) symbol 12)
|
||||
(needs-link? (_type_) symbol 12)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -11985,7 +11988,7 @@
|
||||
(unk-data-5 float :offset-assert 164)
|
||||
(adgifs adgif-shader-array :offset-assert 168)
|
||||
(actor-birth-order (pointer uint32) :offset-assert 172)
|
||||
(unk-data-7 pointer :offset-assert 176)
|
||||
(split-box-indices (pointer uint16) :offset-assert 176)
|
||||
(unk-data-8 uint32 55 :offset-assert 180)
|
||||
|
||||
)
|
||||
@@ -11995,7 +11998,7 @@
|
||||
(:methods
|
||||
(relocate (_type_ kheap (pointer uint8)) none :replace 7)
|
||||
(birth (_type_) none 18)
|
||||
(dummy-19 (_type_) none 19)
|
||||
(deactivate-entities (_type_) none 19)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -12704,7 +12707,7 @@
|
||||
(dma-base uint32 :offset 36)
|
||||
(dma-level-1 uint32 :offset 40)
|
||||
(dma-qwc uint32 4 :offset 44)
|
||||
(shader uint32 :offset 48)
|
||||
(shader (inline-array adgif-shader) :offset 48)
|
||||
(num-shaders uint8 :offset 52)
|
||||
(num-base-colors uint8 :offset 53)
|
||||
(num-level0-colors uint8 :offset 54)
|
||||
@@ -16500,7 +16503,7 @@
|
||||
;; - Functions
|
||||
|
||||
(define-extern edge-debug-lines function)
|
||||
(define-extern vis-cull function)
|
||||
(define-extern vis-cull (function int symbol))
|
||||
|
||||
|
||||
;; ----------------------
|
||||
|
||||
@@ -1787,6 +1787,14 @@
|
||||
[140, "s1", "(pointer uint128)"]
|
||||
],
|
||||
|
||||
"(method 15 level)": [
|
||||
[[21, 60], "v1", "(inline-array box8s)"]
|
||||
],
|
||||
|
||||
"(method 27 level)": [
|
||||
[[23, 68], "s2", "(inline-array box8s)"]
|
||||
],
|
||||
|
||||
"unpack-comp-huf": [[[21, 23], "t3", "(pointer uint16)"]],
|
||||
|
||||
"(method 9 merc-fragment)": [[[13, 161], "s3", "adgif-shader"]],
|
||||
@@ -2287,6 +2295,14 @@
|
||||
[7, "t9", "(function entity-actor entity-actor)"]
|
||||
],
|
||||
|
||||
"(method 10 drawable-group)": [
|
||||
[19, "s5", "drawable-group"]
|
||||
],
|
||||
|
||||
"(method 15 drawable-group)": [
|
||||
[19, "s5", "drawable-group"]
|
||||
],
|
||||
|
||||
"(method 14 level-group)": [
|
||||
[[54, 164], "s1", "process-drawable"],
|
||||
[[319, 342], "s0", "process-drawable"],
|
||||
|
||||
+2
-1
@@ -22,4 +22,5 @@ VI2.DGO out/iso/VI2.DGO
|
||||
VI3.DGO out/iso/VI3.DGO
|
||||
TRA.DGO out/iso/TRA.DGO
|
||||
FIN.DGO out/iso/FIN.DGO
|
||||
FIC.DGO out/iso/FIC.DGO
|
||||
FIC.DGO out/iso/FIC.DGO
|
||||
JUN.DGO out/iso/JUN.DGO
|
||||
@@ -15,11 +15,17 @@ enum class BucketId {
|
||||
BUCKET1 = 1,
|
||||
SKY_DRAW = 3,
|
||||
TFRAG_TEX_LEVEL0 = 5,
|
||||
TFRAG_TEX_LEVEL1 = 12,
|
||||
SHRUB_TEX_LEVEL0 = 19,
|
||||
SHRUB_TEX_LEVEL1 = 25,
|
||||
ALPHA_TEX_LEVEL0 = 31,
|
||||
SKY_LEVEL0 = 32,
|
||||
SKY_BLEND_LEVEL0 = 32,
|
||||
ALPHA_TEX_LEVEL1 = 38,
|
||||
SKY_BLEND_LEVEL1 = 39,
|
||||
PRIS_TEX_LEVEL0 = 48,
|
||||
PRIS_TEX_LEVEL1 = 51,
|
||||
WATER_TEX_LEVEL0 = 57,
|
||||
WATER_TEX_LEVEL1 = 60,
|
||||
// ...
|
||||
PRE_SPRITE_TEX = 65, // maybe it's just common textures?
|
||||
SPRITE = 66,
|
||||
|
||||
@@ -61,11 +61,18 @@ void OpenGLRenderer::init_bucket_renderers() {
|
||||
init_bucket_renderer<EmptyBucketRenderer>("bucket0", BucketId::BUCKET0);
|
||||
init_bucket_renderer<SkyRenderer>("sky", BucketId::SKY_DRAW);
|
||||
init_bucket_renderer<TextureUploadHandler>("tfrag-tex-0", BucketId::TFRAG_TEX_LEVEL0);
|
||||
init_bucket_renderer<SkyTextureHandler>("sky-tex-0", BucketId::SKY_LEVEL0);
|
||||
init_bucket_renderer<TextureUploadHandler>("tfrag-tex-1", BucketId::TFRAG_TEX_LEVEL1);
|
||||
init_bucket_renderer<TextureUploadHandler>("shrub-tex-0", BucketId::SHRUB_TEX_LEVEL0);
|
||||
init_bucket_renderer<TextureUploadHandler>("shrub-tex-1", BucketId::SHRUB_TEX_LEVEL1);
|
||||
init_bucket_renderer<TextureUploadHandler>("alpha-tex-0", BucketId::ALPHA_TEX_LEVEL0);
|
||||
init_bucket_renderer<TextureUploadHandler>("alpha-tex-1", BucketId::ALPHA_TEX_LEVEL1);
|
||||
auto sky_blender = std::make_shared<SkyBlender>();
|
||||
init_bucket_renderer<SkyBlendHandler>("sky-blend-0", BucketId::SKY_BLEND_LEVEL0, sky_blender);
|
||||
init_bucket_renderer<SkyBlendHandler>("sky-blend-1", BucketId::SKY_BLEND_LEVEL1, sky_blender);
|
||||
init_bucket_renderer<TextureUploadHandler>("pris-tex-0", BucketId::PRIS_TEX_LEVEL0);
|
||||
init_bucket_renderer<TextureUploadHandler>("pris-tex-1", BucketId::PRIS_TEX_LEVEL1);
|
||||
init_bucket_renderer<TextureUploadHandler>("water-tex-0", BucketId::WATER_TEX_LEVEL0);
|
||||
init_bucket_renderer<TextureUploadHandler>("water-tex-1", BucketId::WATER_TEX_LEVEL1);
|
||||
init_bucket_renderer<TextureUploadHandler>("pre-sprite-tex", BucketId::PRE_SPRITE_TEX);
|
||||
init_bucket_renderer<SpriteRenderer>("sprite", BucketId::SPRITE);
|
||||
init_bucket_renderer<DirectRenderer>("debug-draw-0", BucketId::DEBUG_DRAW_0, 102,
|
||||
|
||||
@@ -19,8 +19,7 @@
|
||||
|
||||
// size of the sky texture is 64x96, but it's actually a 64x64 (clouds) and a 32x32 (sky)
|
||||
|
||||
SkyTextureHandler::SkyTextureHandler(const std::string& name, BucketId my_id)
|
||||
: BucketRenderer(name, my_id) {
|
||||
SkyBlender::SkyBlender() {
|
||||
// generate textures for sky blending
|
||||
glGenFramebuffers(2, m_framebuffers);
|
||||
glGenTextures(2, m_textures);
|
||||
@@ -70,22 +69,16 @@ SkyTextureHandler::SkyTextureHandler(const std::string& name, BucketId my_id)
|
||||
m_vertex_data[5].y = 1;
|
||||
}
|
||||
|
||||
SkyTextureHandler::~SkyTextureHandler() {
|
||||
SkyBlender::~SkyBlender() {
|
||||
glDeleteFramebuffers(2, m_framebuffers);
|
||||
glDeleteBuffers(1, &m_gl_vertex_buffer);
|
||||
glDeleteTextures(2, m_textures);
|
||||
}
|
||||
|
||||
void SkyTextureHandler::handle_sky_copies(DmaFollower& dma,
|
||||
SharedRenderState* render_state,
|
||||
ScopedProfilerNode& prof) {
|
||||
if (!m_enabled) {
|
||||
while (dma.current_tag().qwc == 6) {
|
||||
dma.read_and_advance();
|
||||
dma.read_and_advance();
|
||||
}
|
||||
return;
|
||||
}
|
||||
SkyBlender::Stats SkyBlender::do_sky_blends(DmaFollower& dma,
|
||||
SharedRenderState* render_state,
|
||||
ScopedProfilerNode& prof) {
|
||||
Stats stats;
|
||||
GLuint vao;
|
||||
glGenVertexArrays(1, &vao);
|
||||
glBindVertexArray(vao);
|
||||
@@ -201,15 +194,15 @@ void SkyTextureHandler::handle_sky_copies(DmaFollower& dma,
|
||||
|
||||
if (buffer_idx == 0) {
|
||||
if (is_first_draw) {
|
||||
m_stats.sky_draws++;
|
||||
stats.sky_draws++;
|
||||
} else {
|
||||
m_stats.sky_blends++;
|
||||
stats.sky_blends++;
|
||||
}
|
||||
} else {
|
||||
if (is_first_draw) {
|
||||
m_stats.cloud_draws++;
|
||||
stats.cloud_draws++;
|
||||
} else {
|
||||
m_stats.cloud_blends++;
|
||||
stats.cloud_blends++;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -241,11 +234,32 @@ void SkyTextureHandler::handle_sky_copies(DmaFollower& dma,
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, old_framebuffer);
|
||||
glBindVertexArray(0);
|
||||
glDeleteVertexArrays(1, &vao);
|
||||
|
||||
return stats;
|
||||
}
|
||||
|
||||
void SkyTextureHandler::render(DmaFollower& dma,
|
||||
SharedRenderState* render_state,
|
||||
ScopedProfilerNode& prof) {
|
||||
SkyBlendHandler::SkyBlendHandler(const std::string& name,
|
||||
BucketId my_id,
|
||||
std::shared_ptr<SkyBlender> shared_blender)
|
||||
: BucketRenderer(name, my_id), m_shared_blender(shared_blender) {}
|
||||
|
||||
void SkyBlendHandler::handle_sky_copies(DmaFollower& dma,
|
||||
SharedRenderState* render_state,
|
||||
ScopedProfilerNode& prof) {
|
||||
if (!m_enabled) {
|
||||
while (dma.current_tag().qwc == 6) {
|
||||
dma.read_and_advance();
|
||||
dma.read_and_advance();
|
||||
}
|
||||
return;
|
||||
} else {
|
||||
m_stats = m_shared_blender->do_sky_blends(dma, render_state, prof);
|
||||
}
|
||||
}
|
||||
|
||||
void SkyBlendHandler::render(DmaFollower& dma,
|
||||
SharedRenderState* render_state,
|
||||
ScopedProfilerNode& prof) {
|
||||
m_stats = {};
|
||||
// First thing should be a NEXT with two nops. this is a jump from buckets to sprite data
|
||||
auto data0 = dma.read_and_advance();
|
||||
@@ -288,7 +302,7 @@ void SkyTextureHandler::render(DmaFollower& dma,
|
||||
assert(dma.current_tag_offset() == render_state->next_bucket);
|
||||
}
|
||||
|
||||
void SkyTextureHandler::draw_debug_window() {
|
||||
void SkyBlendHandler::draw_debug_window() {
|
||||
ImGui::Separator();
|
||||
ImGui::Text("Draw/Blend ( sky ): %d/%d", m_stats.sky_draws, m_stats.sky_blends);
|
||||
ImGui::Text("Draw/Blend (cloud): %d/%d", m_stats.cloud_draws, m_stats.cloud_blends);
|
||||
|
||||
@@ -3,21 +3,21 @@
|
||||
#include "game/graphics/opengl_renderer/BucketRenderer.h"
|
||||
#include "game/graphics/opengl_renderer/DirectRenderer.h"
|
||||
|
||||
/*!
|
||||
* Handles texture blending for the sky.
|
||||
* Will insert the result texture into the texture pool.
|
||||
*/
|
||||
class SkyTextureHandler : public BucketRenderer {
|
||||
class SkyBlender {
|
||||
public:
|
||||
SkyTextureHandler(const std::string& name, BucketId my_id);
|
||||
void render(DmaFollower& dma, SharedRenderState* render_state, ScopedProfilerNode& prof) override;
|
||||
void draw_debug_window() override;
|
||||
~SkyTextureHandler();
|
||||
SkyBlender();
|
||||
~SkyBlender();
|
||||
|
||||
struct Stats {
|
||||
int sky_draws = 0;
|
||||
int cloud_draws = 0;
|
||||
int sky_blends = 0;
|
||||
int cloud_blends = 0;
|
||||
};
|
||||
|
||||
Stats do_sky_blends(DmaFollower& dma, SharedRenderState* render_state, ScopedProfilerNode& prof);
|
||||
|
||||
private:
|
||||
void handle_sky_copies(DmaFollower& dma,
|
||||
SharedRenderState* render_state,
|
||||
ScopedProfilerNode& prof);
|
||||
GLuint m_framebuffers[2]; // sky, clouds
|
||||
GLuint m_textures[2]; // sky, clouds
|
||||
int m_sizes[2] = {32, 64};
|
||||
@@ -29,16 +29,30 @@ class SkyTextureHandler : public BucketRenderer {
|
||||
float intensity = 0;
|
||||
};
|
||||
|
||||
struct FrameStats {
|
||||
int sky_draws = 0;
|
||||
int cloud_draws = 0;
|
||||
int sky_blends = 0;
|
||||
int cloud_blends = 0;
|
||||
} m_stats;
|
||||
|
||||
Vertex m_vertex_data[6];
|
||||
};
|
||||
|
||||
/*!
|
||||
* Handles texture blending for the sky.
|
||||
* Will insert the result texture into the texture pool.
|
||||
*/
|
||||
class SkyBlendHandler : public BucketRenderer {
|
||||
public:
|
||||
SkyBlendHandler(const std::string& name,
|
||||
BucketId my_id,
|
||||
std::shared_ptr<SkyBlender> shared_blender);
|
||||
void render(DmaFollower& dma, SharedRenderState* render_state, ScopedProfilerNode& prof) override;
|
||||
void draw_debug_window() override;
|
||||
|
||||
private:
|
||||
void handle_sky_copies(DmaFollower& dma,
|
||||
SharedRenderState* render_state,
|
||||
ScopedProfilerNode& prof);
|
||||
|
||||
std::shared_ptr<SkyBlender> m_shared_blender;
|
||||
SkyBlender::Stats m_stats;
|
||||
};
|
||||
|
||||
/*!
|
||||
* Handles sky drawing.
|
||||
*/
|
||||
|
||||
@@ -64,7 +64,7 @@ void link_control::begin(Ptr<uint8_t> object_file,
|
||||
|
||||
if (link_debug_printfs) {
|
||||
char* goal_name = object_file.cast<char>().c();
|
||||
printf("link %s\n", goal_name);
|
||||
printf("link %s\n", m_object_name);
|
||||
printf("link_control::begin %c%c%c%c\n", goal_name[0], goal_name[1], goal_name[2],
|
||||
goal_name[3]);
|
||||
}
|
||||
|
||||
@@ -71,6 +71,9 @@ void* RPC_Loader(unsigned int /*fno*/, void* data, int size) {
|
||||
}
|
||||
}
|
||||
} break;
|
||||
case SoundCommand::UNLOAD_BANK:
|
||||
printf("ignoring unload bank command!\n");
|
||||
break;
|
||||
case SoundCommand::GET_IRX_VERSION: {
|
||||
cmd->irx_version.major = IRX_VERSION_MAJOR;
|
||||
cmd->irx_version.minor = IRX_VERSION_MINOR;
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
("JUN.DGO"
|
||||
("eichar-fish+0-ag-JUN.go" "eichar-fish+0")
|
||||
("jungle-elevator.o" "jungle-elevator")
|
||||
("bouncer.o" "bouncer")
|
||||
("hopper.o" "hopper")
|
||||
("junglesnake.o" "junglesnake")
|
||||
("darkvine.o" "darkvine")
|
||||
("jungle-obs.o" "jungle-obs")
|
||||
("jungle-mirrors.o" "jungle-mirrors")
|
||||
("junglefish.o" "junglefish")
|
||||
("fisher-JUN.o" "fisher")
|
||||
("jungle-part.o" "jungle-part")
|
||||
("launcherdoor.o" "launcherdoor")
|
||||
("tpage-385.go" "tpage-385")
|
||||
("tpage-531.go" "tpage-531")
|
||||
("tpage-386.go" "tpage-386")
|
||||
("tpage-388.go" "tpage-388")
|
||||
("tpage-765.go" "tpage-765")
|
||||
("accordian-ag.go" "accordian")
|
||||
("babak-ag.go" "babak")
|
||||
("bounceytarp-ag.go" "bounceytarp")
|
||||
("catch-fisha-ag.go" "catch-fisha")
|
||||
("catch-fishb-ag.go" "catch-fishb")
|
||||
("catch-fishc-ag.go" "catch-fishc")
|
||||
("darkvine-ag-JUN.go" "darkvine")
|
||||
("ecovalve-ag-JUB-JUN.go" "ecovalve")
|
||||
("fish-net-ag.go" "fish-net")
|
||||
("fisher-ag.go" "fisher")
|
||||
("hopper-ag.go" "hopper")
|
||||
("junglecam-ag.go" "junglecam")
|
||||
("junglefish-ag.go" "junglefish")
|
||||
("junglesnake-ag.go" "junglesnake")
|
||||
("launcherdoor-ag-JUN.go" "launcherdoor")
|
||||
("logtrap-ag.go" "logtrap")
|
||||
("lurkerm-piston-ag.go" "lurkerm-piston")
|
||||
("lurkerm-tall-sail-ag.go" "lurkerm-tall-sail")
|
||||
("maindoor-ag.go" "maindoor")
|
||||
("medres-firecanyon-ag.go" "medres-firecanyon")
|
||||
("orb-cache-top-ag-JUN.go" "orb-cache-top")
|
||||
("periscope-ag.go" "periscope")
|
||||
("plat-button-ag.go" "plat-button")
|
||||
("plat-eco-ag-JUN.go" "plat-eco")
|
||||
("precurbridge-ag.go" "precurbridge")
|
||||
("reflector-mirror-ag.go" "reflector-mirror")
|
||||
("ropebridge-52-ag.go" "ropebridge-52")
|
||||
("ropebridge-70-ag.go" "ropebridge-70")
|
||||
("sharkey-ag-JUN-MIS.go" "sharkey")
|
||||
("sidedoor-ag.go" "sidedoor")
|
||||
("towertop-ag.go" "towertop")
|
||||
("water-anim-jungle-ag.go" "water-anim-jungle")
|
||||
("jungle-vis.go" "jungle-vis")
|
||||
)
|
||||
@@ -12,4 +12,23 @@
|
||||
|
||||
|
||||
(define-extern joint-control-copy! (function joint-control joint-control joint-control))
|
||||
(define-extern joint-control-remap! (function joint-control art-group art-group pair int string object))
|
||||
(define-extern joint-control-remap! (function joint-control art-group art-group pair int string object))
|
||||
|
||||
|
||||
(defmethod needs-link? art ((obj art))
|
||||
#f
|
||||
)
|
||||
|
||||
(defmethod needs-link? art-group ((obj art-group))
|
||||
(the-as
|
||||
symbol
|
||||
(and
|
||||
(-> obj length)
|
||||
(type-type? (-> obj data 0 type) art-joint-anim)
|
||||
(!=
|
||||
(-> obj name)
|
||||
(-> (the-as art-joint-anim (-> obj data 0)) master-art-group-name)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -132,7 +132,7 @@
|
||||
(login (_type_) _type_ 9)
|
||||
(dummy-10 (_type_ string type) joint 10)
|
||||
(dummy-11 (_type_ string type) int 11)
|
||||
(dummy-12 (_type_) symbol 12)
|
||||
(needs-link? (_type_) symbol 12)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -10,6 +10,9 @@
|
||||
((length int16 :offset 6)
|
||||
(data drawable 1 :offset-assert 32)
|
||||
)
|
||||
(:methods
|
||||
(new (symbol type int) _type_)
|
||||
)
|
||||
:flag-assert #x1200000024
|
||||
)
|
||||
|
||||
|
||||
@@ -5,3 +5,111 @@
|
||||
;; name in dgo: drawable-group
|
||||
;; dgos: GAME, ENGINE
|
||||
|
||||
(defmethod new drawable-group ((allocation symbol) (type-to-make type) (arg0 int))
|
||||
"Allocate a drawable-group with enough room for arg0 drawables"
|
||||
(let ((v0-0 (object-new allocation type-to-make
|
||||
(the-as int (+ (-> type-to-make size) (* (+ arg0 -1) 4)))
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> v0-0 length) arg0)
|
||||
v0-0
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod inspect drawable-group ((obj drawable-group))
|
||||
(format #t "[~8x] ~A~%" obj (-> obj type))
|
||||
(format #t "~Tid: ~D~%" (-> obj id))
|
||||
(format #t "~Tlength: ~D~%" (-> obj length))
|
||||
(format #t "~Tdata[~D]: @ #x~X~%" (-> obj length) (-> obj data))
|
||||
(dotimes (s5-0 (-> obj length))
|
||||
(format #t "~T [~D] ~A~%" s5-0 (-> obj data s5-0))
|
||||
)
|
||||
obj
|
||||
)
|
||||
|
||||
(defmethod print drawable-group ((obj drawable-group))
|
||||
(format #t "#<~A @ #x~X [~D]" (-> obj type) obj (-> obj length))
|
||||
(dotimes (s5-0 (-> obj length))
|
||||
(format #t " ~A" (-> obj data s5-0))
|
||||
)
|
||||
(format #t ">")
|
||||
obj
|
||||
)
|
||||
|
||||
(defmethod length drawable-group ((obj drawable-group))
|
||||
(-> obj length)
|
||||
)
|
||||
|
||||
(defmethod asize-of drawable-group ((obj drawable-group))
|
||||
(the-as int (+ (-> drawable-group size) (* (+ (-> obj length) -1) 4)))
|
||||
)
|
||||
|
||||
(defmethod mem-usage drawable-group ((obj drawable-group) (arg0 memory-usage-block) (arg1 int))
|
||||
(set! (-> arg0 length) (max 1 (-> arg0 length)))
|
||||
(set! (-> arg0 data 0 name) "drawable-group")
|
||||
(+! (-> arg0 data 0 count) 1)
|
||||
(let ((v1-6 (asize-of obj)))
|
||||
(+! (-> arg0 data 0 used) v1-6)
|
||||
(+! (-> arg0 data 0 total) (logand -16 (+ v1-6 15)))
|
||||
)
|
||||
(dotimes (s3-0 (-> obj length))
|
||||
(mem-usage (-> obj data s3-0) arg0 arg1)
|
||||
)
|
||||
obj
|
||||
)
|
||||
|
||||
(defmethod login drawable-group ((obj drawable-group))
|
||||
(dotimes (s5-0 (-> obj length))
|
||||
(login (-> obj data s5-0))
|
||||
)
|
||||
obj
|
||||
)
|
||||
|
||||
(defmethod draw drawable-group ((obj drawable-group) (arg0 drawable) (arg1 display-frame))
|
||||
(when (vis-cull (-> obj id))
|
||||
(when (sphere-cull (-> obj bsphere))
|
||||
(dotimes (s3-0 (-> obj length))
|
||||
(draw (-> obj data s3-0) (-> (the-as drawable-group arg0) data s3-0) arg1)
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod dummy-14 drawable-group ((obj drawable-group))
|
||||
(when (vis-cull (-> obj id))
|
||||
(when (sphere-cull (-> obj bsphere))
|
||||
(dotimes (s5-0 (-> obj length))
|
||||
(dummy-14 (-> obj data s5-0))
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
|
||||
(defmethod debug-draw drawable-group ((obj drawable-group) (arg0 drawable) (arg1 object))
|
||||
(when (vis-cull (-> obj id))
|
||||
(when (sphere-cull (-> obj bsphere))
|
||||
(dotimes (s3-0 (-> obj length))
|
||||
(debug-draw
|
||||
(-> obj data s3-0)
|
||||
(-> (the-as drawable-group arg0) data s3-0)
|
||||
arg1
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod dummy-16 drawable-group ((obj drawable-group) (arg0 object) (arg1 object))
|
||||
(dotimes (s4-0 (-> obj length))
|
||||
(set! arg1 (dummy-16 (-> obj data s4-0) arg0 arg1))
|
||||
)
|
||||
arg1
|
||||
)
|
||||
@@ -29,7 +29,7 @@
|
||||
(collide-y-probe (_type_ int collide-list) none 12)
|
||||
(collide-ray (_type_ int collide-list) none 13)
|
||||
(dummy-14 (_type_) none 14)
|
||||
(dummy-15 (_type_ object object) none 15)
|
||||
(debug-draw (_type_ drawable object) none 15)
|
||||
(dummy-16 (_type_ object object) object 16)
|
||||
(collect-ambients (_type_ sphere int ambient-list) none 17)
|
||||
)
|
||||
@@ -53,3 +53,4 @@
|
||||
|
||||
;; for anim-tester
|
||||
(define-extern dma-add-process-drawable function)
|
||||
(define-extern vis-cull (function int symbol))
|
||||
@@ -24,7 +24,7 @@
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod dummy-15 drawable-inline-array ((obj drawable-inline-array) (arg0 object) (arg1 object))
|
||||
(defmethod debug-draw drawable-inline-array ((obj drawable-inline-array) (arg0 drawable) (arg1 object))
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
@@ -11,6 +11,6 @@
|
||||
)
|
||||
|
||||
(deftype drawable-tree-array (drawable-group)
|
||||
()
|
||||
((trees drawable-tree 1 :offset 32))
|
||||
:flag-assert #x1200000024
|
||||
)
|
||||
|
||||
@@ -1319,7 +1319,206 @@
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(when *display-split-boxes*
|
||||
(dotimes (s5-4 (-> obj length))
|
||||
(let ((s4-4 (-> obj level s5-4)))
|
||||
(when (= (-> s4-4 status) 'active)
|
||||
(when (nonzero? (-> s4-4 bsp boxes))
|
||||
(let ((s3-4 (-> s4-4 bsp boxes)))
|
||||
(countdown (s2-4 (-> s3-4 length))
|
||||
(add-debug-box
|
||||
#t
|
||||
(bucket-id debug-draw0)
|
||||
(the-as vector (-> s3-4 data s2-4))
|
||||
(the-as vector (+ (the-as uint (-> s3-4 data 0 max)) (* s2-4 32)))
|
||||
(the-as rgba (if (zero? (-> s4-4 index))
|
||||
(the-as uint #x80808000)
|
||||
(the-as uint #x808080ff)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none))
|
||||
|
||||
;; birth!
|
||||
;; entity-deactivate-handler
|
||||
;; kill!
|
||||
;; birth bsp-header
|
||||
|
||||
(define-extern process-drawable-from-entity! (function process-drawable res-lump none))
|
||||
(define-extern entity-birth-no-kill (function entity none))
|
||||
|
||||
(defmethod run-logic? process-drawable ((obj process-drawable))
|
||||
(or
|
||||
(zero? (logand (-> obj mask) (process-mask actor-pause)))
|
||||
(or
|
||||
(>=
|
||||
(+ (-> *ACTOR-bank* pause-dist) (-> obj root pause-adjust-distance))
|
||||
(vector-vector-distance (-> obj root trans) (math-camera-pos))
|
||||
)
|
||||
(and
|
||||
(nonzero? (-> obj skel))
|
||||
(!= (-> obj skel root-channel 0) (-> obj skel channel))
|
||||
)
|
||||
(and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) 16))
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod deactivate-entities bsp-header ((obj bsp-header))
|
||||
(let ((s5-0 (-> obj actors)))
|
||||
(when (nonzero? s5-0)
|
||||
(dotimes (s4-0 (-> s5-0 length))
|
||||
(let ((s3-0 (-> s5-0 data s4-0 actor)))
|
||||
(kill! s3-0)
|
||||
(remove-from-level! s3-0 *level*)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((s5-1 (-> obj cameras)))
|
||||
(when (nonzero? s5-1)
|
||||
(dotimes (s4-1 (-> s5-1 length))
|
||||
(kill! (-> s5-1 s4-1))
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((s5-2 (-> *entity-pool* child))
|
||||
(s4-2 (-> obj level heap base))
|
||||
(s3-1 (-> obj level heap top-base))
|
||||
)
|
||||
(while s5-2
|
||||
(let ((s2-0 (ppointer->process s5-2)))
|
||||
(set! s5-2 (-> s5-2 0 brother))
|
||||
(cond
|
||||
((-> (the-as process s2-0) entity)
|
||||
(when (= (-> (the-as process s2-0) entity extra level) (-> obj level))
|
||||
(format #t "NOTICE: rogue level entity ~A~% still alive~%" s2-0)
|
||||
(deactivate s2-0)
|
||||
)
|
||||
)
|
||||
((= (-> s2-0 type) part-tracker)
|
||||
(let ((v1-28 (the-as part-tracker s2-0)))
|
||||
(if
|
||||
(and
|
||||
(nonzero? (-> v1-28 part))
|
||||
(>= (the-as int (-> v1-28 part group)) (the-as int s4-2))
|
||||
(< (the-as int (-> v1-28 part group)) (the-as int s3-1))
|
||||
)
|
||||
(deactivate s2-0)
|
||||
)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(let* ((s1-0 s2-0)
|
||||
(v1-34
|
||||
(if
|
||||
(and
|
||||
(nonzero? s1-0)
|
||||
(type-type? (-> s1-0 type) process-drawable)
|
||||
)
|
||||
s1-0
|
||||
)
|
||||
)
|
||||
)
|
||||
(when v1-34
|
||||
(cond
|
||||
((and
|
||||
(nonzero? (-> (the-as process-drawable v1-34) part))
|
||||
(>=
|
||||
(the-as int (-> (the-as process-drawable v1-34) part group))
|
||||
(the-as int s4-2)
|
||||
)
|
||||
(<
|
||||
(the-as int (-> (the-as process-drawable v1-34) part group))
|
||||
(the-as int s3-1)
|
||||
)
|
||||
)
|
||||
(format
|
||||
#t
|
||||
"NOTICE: rogue null level entity (using part ~A) ~A~% still alive~%"
|
||||
(->
|
||||
(the-as process-drawable (-> (the-as process-drawable v1-34) part))
|
||||
brother
|
||||
)
|
||||
s2-0
|
||||
)
|
||||
(deactivate s2-0)
|
||||
)
|
||||
((and
|
||||
(nonzero? (-> (the-as process-drawable v1-34) draw))
|
||||
(>=
|
||||
(the-as int (-> (the-as process-drawable v1-34) draw art-group))
|
||||
(the-as int s4-2)
|
||||
)
|
||||
(<
|
||||
(the-as int (-> (the-as process-drawable v1-34) draw art-group))
|
||||
(the-as int s3-1)
|
||||
)
|
||||
)
|
||||
(format
|
||||
#t
|
||||
"NOTICE: rogue null level entity (using art ~A) ~A~% still alive~%"
|
||||
(->
|
||||
(the-as process-drawable (-> (the-as process-drawable v1-34) draw))
|
||||
mask
|
||||
)
|
||||
s2-0
|
||||
)
|
||||
(deactivate s2-0)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod
|
||||
update-perm!
|
||||
entity-perm
|
||||
((obj entity-perm) (arg0 symbol) (arg1 entity-perm-status))
|
||||
(cond
|
||||
((= arg0 'game)
|
||||
(logclear! (-> obj status) arg1)
|
||||
)
|
||||
((nonzero? (-> obj task))
|
||||
(logclear!
|
||||
(-> obj status)
|
||||
(logior (if (logtest? (-> obj status) (entity-perm-status bit-4))
|
||||
524
|
||||
0
|
||||
)
|
||||
515
|
||||
)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(logclear!
|
||||
(-> obj status)
|
||||
(logior arg1 (if (logtest? (-> obj status) (entity-perm-status bit-4))
|
||||
524
|
||||
0
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(when
|
||||
(zero? (logand (-> obj status) (entity-perm-status user-set-from-cstage)))
|
||||
(set! (-> obj user-uint64) (the-as uint 0))
|
||||
0
|
||||
)
|
||||
obj
|
||||
)
|
||||
@@ -656,6 +656,19 @@
|
||||
;; added
|
||||
(format *stdcon* "~3Lglobal heap at ~,,2fK remaining~0L~%"
|
||||
(* (1/ 1024) (&- (-> global top) (-> global current))))
|
||||
#|
|
||||
;; added, prints some level status.
|
||||
(dotimes (i 2)
|
||||
(let ((level-heap (-> *level* level i heap)))
|
||||
(format *stdcon* "~17Llevel ~d: ~A ~A ~,,2fK remaining~0L~%"
|
||||
i
|
||||
(-> *level* level i name)
|
||||
(-> *level* level i status)
|
||||
(* (1/ 1024) (&- (-> level-heap top) (-> level-heap current)))
|
||||
)
|
||||
)
|
||||
)
|
||||
|#
|
||||
|
||||
(display-file-info)
|
||||
) ;; end dma let
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
(dma-base uint32 :offset 36)
|
||||
(dma-level-1 uint32 :offset 40)
|
||||
(dma-qwc uint32 4 :offset-assert 44)
|
||||
(shader uint32 :offset 48)
|
||||
(shader (inline-array adgif-shader) :offset 48)
|
||||
(num-shaders uint8 :offset 52)
|
||||
(num-base-colors uint8 :offset 53)
|
||||
(num-level0-colors uint8 :offset 54)
|
||||
|
||||
@@ -5,3 +5,16 @@
|
||||
;; name in dgo: tfrag
|
||||
;; dgos: GAME, ENGINE
|
||||
|
||||
(defmethod login tfragment ((obj tfragment))
|
||||
(dotimes (s5-0 (the-as int (-> obj num-shaders)))
|
||||
(adgif-shader-login-no-remap (-> obj shader s5-0))
|
||||
)
|
||||
obj
|
||||
)
|
||||
|
||||
(defmethod login drawable-inline-array-tfrag ((obj drawable-inline-array-tfrag))
|
||||
(dotimes (s5-0 (-> obj length))
|
||||
(login (-> obj data s5-0))
|
||||
)
|
||||
obj
|
||||
)
|
||||
@@ -62,7 +62,7 @@
|
||||
(unk-data-5 float :offset-assert 164)
|
||||
(adgifs adgif-shader-array :offset-assert 168)
|
||||
(actor-birth-order (pointer uint32) :offset-assert 172)
|
||||
(unk-data-7 pointer :offset-assert 176)
|
||||
(split-box-indices (pointer uint16) :offset-assert 176)
|
||||
(unk-data-8 uint32 55 :offset-assert 180)
|
||||
)
|
||||
:method-count-assert 20
|
||||
@@ -71,7 +71,7 @@
|
||||
(:methods
|
||||
(relocate (_type_ kheap (pointer uint8)) none :replace 7)
|
||||
(birth (_type_) none 18)
|
||||
(dummy-19 (_type_) none 19)
|
||||
(deactivate-entities (_type_) none 19)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -129,8 +129,8 @@
|
||||
(+! (-> mem-use data 57 used) v1-92)
|
||||
(+! (-> mem-use data 57 total) (logand -16 (+ v1-92 15)))
|
||||
)
|
||||
;; add unk-data-7 (reloated to boxes?)
|
||||
(when (nonzero? (-> obj unk-data-7))
|
||||
;; add box indices
|
||||
(when (nonzero? (-> obj split-box-indices))
|
||||
(set! (-> mem-use length) (max 58 (-> mem-use length)))
|
||||
(set! (-> mem-use data 57 name) "bsp-misc")
|
||||
(+! (-> mem-use data 57 count) 1)
|
||||
@@ -326,8 +326,8 @@
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod dummy-15 bsp-header ((obj bsp-header) (arg0 object) (arg1 object))
|
||||
"This is some sort of debugging thing. It calls dummy-15 on the drawables
|
||||
(defmethod debug-draw bsp-header ((obj bsp-header) (arg0 drawable) (arg1 object))
|
||||
"This is some sort of debugging thing. It calls debug-draw on the drawables
|
||||
with the scratchpad and vfs set up."
|
||||
(let ((s4-0 (-> obj level)))
|
||||
;; set up some stuff in the scratchpad
|
||||
@@ -372,7 +372,7 @@
|
||||
)
|
||||
)
|
||||
(let ((a1-3 (-> obj drawable-trees)))
|
||||
(dummy-15 a1-3 a1-3 arg1)
|
||||
(debug-draw a1-3 a1-3 arg1)
|
||||
)
|
||||
(if *debug-segment*
|
||||
(add-frame (-> *display* frames (-> *display* on-screen) frame profile-bar 0)
|
||||
|
||||
@@ -157,19 +157,19 @@
|
||||
(unload! (_type_) _type_ 12)
|
||||
(bsp-name (_type_) symbol 13)
|
||||
(dummy-14 (_type_ object) memory-usage-block 14)
|
||||
(dummy-15 (_type_ vector) symbol 15)
|
||||
(point-in-boxes? (_type_ vector) symbol 15)
|
||||
(update-vis! (_type_ level-vis-info uint uint) symbol 16)
|
||||
(load-continue (_type_) _type_ 17)
|
||||
(load-begin (_type_) _type_ 18)
|
||||
(login (_type_) _type_ 19)
|
||||
(login-begin (_type_) _type_ 19)
|
||||
(vis-load (_type_) uint 20)
|
||||
(dummy-21 (_type_) none 21)
|
||||
(activate (_type_) _type_ 22)
|
||||
(birth (_type_) _type_ 22)
|
||||
(level-status-set! (_type_ symbol) _type_ 23)
|
||||
(dummy-24 (_type_) _type_ 24)
|
||||
(dummy-25 (_type_) int 25)
|
||||
(load-required-packages (_type_) _type_ 24)
|
||||
(init-vis (_type_) int 25)
|
||||
(vis-clear (_type_) int 26)
|
||||
(dummy-27 (_type_ vector string) none 27)
|
||||
(debug-print-splitbox (_type_ vector string) none 27)
|
||||
(art-group-get-by-name (_type_ string) art-group 28)
|
||||
)
|
||||
)
|
||||
|
||||
+800
-286
File diff suppressed because it is too large
Load Diff
@@ -264,6 +264,10 @@
|
||||
)
|
||||
|
||||
(set! *display-profile* #t)
|
||||
(set! *display-split-boxes* #t)
|
||||
(set! *display-level-border* #t)
|
||||
(set! *display-split-box-info* #t)
|
||||
(set! *display-deci-count* #t)
|
||||
|
||||
(defun text-randomizer ()
|
||||
(dotimes (i 10000)
|
||||
|
||||
@@ -215,6 +215,7 @@
|
||||
"out/iso/TRA.DGO"
|
||||
"out/iso/FIN.DGO"
|
||||
"out/iso/FIC.DGO"
|
||||
"out/iso/JUN.DGO"
|
||||
)
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
@@ -245,6 +246,7 @@
|
||||
"village_common/oracle.gc"
|
||||
|
||||
"common/blocking-plane.gc"
|
||||
"common/launcherdoor.gc"
|
||||
|
||||
"racer_common/target-racer-h-FIC-LAV-MIS-OGR-ROL.gc"
|
||||
"racer_common/racer-part.gc"
|
||||
@@ -327,6 +329,69 @@
|
||||
"village1-vis"
|
||||
)
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;
|
||||
;; Jungle
|
||||
;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(cgo "JUN.DGO"
|
||||
"jun.gd")
|
||||
|
||||
(goal-src-sequence
|
||||
"levels/jungle/"
|
||||
:deps ;; no idea what these depend on, make it depend on the whole engine
|
||||
("out/obj/default-menu.o")
|
||||
|
||||
"jungle-elevator.gc"
|
||||
"bouncer.gc"
|
||||
"hopper.gc"
|
||||
"junglesnake.gc"
|
||||
"darkvine.gc"
|
||||
"jungle-obs.gc"
|
||||
"jungle-mirrors.gc"
|
||||
"junglefish.gc"
|
||||
"fisher-JUN.gc"
|
||||
"jungle-part.gc"
|
||||
)
|
||||
|
||||
(copy-gos
|
||||
"eichar-fish+0-ag-JUN"
|
||||
"accordian-ag"
|
||||
"bounceytarp-ag"
|
||||
"catch-fisha-ag"
|
||||
"catch-fishb-ag"
|
||||
"catch-fishc-ag"
|
||||
"darkvine-ag-JUN"
|
||||
"ecovalve-ag-JUB-JUN"
|
||||
"fish-net-ag"
|
||||
"fisher-ag"
|
||||
"hopper-ag"
|
||||
"junglecam-ag"
|
||||
"junglefish-ag"
|
||||
"junglesnake-ag"
|
||||
"launcherdoor-ag-JUN"
|
||||
"logtrap-ag"
|
||||
"lurkerm-piston-ag"
|
||||
"lurkerm-tall-sail-ag"
|
||||
"maindoor-ag"
|
||||
"medres-firecanyon-ag"
|
||||
"orb-cache-top-ag-JUN"
|
||||
"periscope-ag"
|
||||
"plat-button-ag"
|
||||
"plat-eco-ag-JUN"
|
||||
"precurbridge-ag"
|
||||
"reflector-mirror-ag"
|
||||
"ropebridge-52-ag"
|
||||
"ropebridge-70-ag"
|
||||
"sharkey-ag-JUN-MIS"
|
||||
"sidedoor-ag"
|
||||
"towertop-ag"
|
||||
"water-anim-jungle-ag"
|
||||
"jungle-vis"
|
||||
)
|
||||
|
||||
(copy-textures 385 531 386 388 765)
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;
|
||||
;; Fire Canyon
|
||||
;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
@@ -616,6 +616,14 @@ void Debugger::watcher() {
|
||||
printf("Target has disappeared. Maybe it quit or was killed.\n");
|
||||
handle_disappearance();
|
||||
break;
|
||||
case xdbg::SignalInfo::ILLEGAL_INSTR:
|
||||
printf(
|
||||
"Target has crashed due to an illegal instruction. Run (:di) to get more "
|
||||
"information.\n");
|
||||
break;
|
||||
case xdbg::SignalInfo::UNKNOWN:
|
||||
printf("Target has encountered an unknown signal. Run (:di) to get more information.\n");
|
||||
break;
|
||||
default:
|
||||
printf("[Debugger] unhandled signal in watcher: %d\n", int(signal_info.kind));
|
||||
assert(false);
|
||||
|
||||
+1
-1
@@ -232,7 +232,7 @@
|
||||
(login (_type_) _type_ 9)
|
||||
(dummy-10 (_type_ string type) joint 10)
|
||||
(dummy-11 (_type_ string type) int 11)
|
||||
(dummy-12 (_type_) symbol 12)
|
||||
(needs-link? (_type_) symbol 12)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -9,6 +9,9 @@
|
||||
:method-count-assert 18
|
||||
:size-assert #x24
|
||||
:flag-assert #x1200000024
|
||||
(:methods
|
||||
(new (symbol type int) _type_ 0)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for symbol *collide-nodes*, type int
|
||||
|
||||
+1
-1
@@ -16,7 +16,7 @@
|
||||
(collide-y-probe (_type_ int collide-list) none 12)
|
||||
(collide-ray (_type_ int collide-list) none 13)
|
||||
(dummy-14 (_type_) none 14)
|
||||
(dummy-15 (_type_ object object) none 15)
|
||||
(debug-draw (_type_ drawable object) none 15)
|
||||
(dummy-16 (_type_ object object) object 16)
|
||||
(collect-ambients (_type_ sphere int ambient-list) none 17)
|
||||
)
|
||||
|
||||
@@ -31,9 +31,9 @@
|
||||
;; definition for method 15 of type drawable-inline-array
|
||||
;; INFO: Return type mismatch int vs none.
|
||||
(defmethod
|
||||
dummy-15
|
||||
debug-draw
|
||||
drawable-inline-array
|
||||
((obj drawable-inline-array) (arg0 object) (arg1 object))
|
||||
((obj drawable-inline-array) (arg0 drawable) (arg1 object))
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
@@ -11,7 +11,8 @@
|
||||
|
||||
;; definition of type drawable-tree-array
|
||||
(deftype drawable-tree-array (drawable-group)
|
||||
()
|
||||
((trees drawable-tree 1 :offset 32)
|
||||
)
|
||||
:method-count-assert 18
|
||||
:size-assert #x24
|
||||
:flag-assert #x1200000024
|
||||
|
||||
+20
-20
@@ -55,26 +55,26 @@
|
||||
|
||||
;; definition of type tfragment
|
||||
(deftype tfragment (drawable)
|
||||
((color-index uint16 :offset 6)
|
||||
(debug-data tfragment-debug-data :offset 8)
|
||||
(color-indices uint32 :offset 12)
|
||||
(colors uint32 :offset 12)
|
||||
(dma-chain uint32 3 :offset-assert 32)
|
||||
(dma-common uint32 :offset 32)
|
||||
(dma-level-0 uint32 :offset 32)
|
||||
(dma-base uint32 :offset 36)
|
||||
(dma-level-1 uint32 :offset 40)
|
||||
(dma-qwc uint32 4 :offset 44)
|
||||
(shader uint32 :offset 48)
|
||||
(num-shaders uint8 :offset 52)
|
||||
(num-base-colors uint8 :offset 53)
|
||||
(num-level0-colors uint8 :offset 54)
|
||||
(num-level1-colors uint8 :offset 55)
|
||||
(color-offset uint8 :offset 56)
|
||||
(color-count uint8 :offset 57)
|
||||
(pad0 uint8 :offset 58)
|
||||
(pad1 uint8 :offset 59)
|
||||
(generic generic-tfragment :offset-assert 60)
|
||||
((color-index uint16 :offset 6)
|
||||
(debug-data tfragment-debug-data :offset 8)
|
||||
(color-indices uint32 :offset 12)
|
||||
(colors uint32 :offset 12)
|
||||
(dma-chain uint32 3 :offset-assert 32)
|
||||
(dma-common uint32 :offset 32)
|
||||
(dma-level-0 uint32 :offset 32)
|
||||
(dma-base uint32 :offset 36)
|
||||
(dma-level-1 uint32 :offset 40)
|
||||
(dma-qwc uint32 4 :offset 44)
|
||||
(shader (inline-array adgif-shader) :offset 48)
|
||||
(num-shaders uint8 :offset 52)
|
||||
(num-base-colors uint8 :offset 53)
|
||||
(num-level0-colors uint8 :offset 54)
|
||||
(num-level1-colors uint8 :offset 55)
|
||||
(color-offset uint8 :offset 56)
|
||||
(color-count uint8 :offset 57)
|
||||
(pad0 uint8 :offset 58)
|
||||
(pad1 uint8 :offset 59)
|
||||
(generic generic-tfragment :offset-assert 60)
|
||||
)
|
||||
:method-count-assert 18
|
||||
:size-assert #x40
|
||||
|
||||
+2
-2
@@ -54,7 +54,7 @@
|
||||
(unk-data-5 float :offset-assert 164)
|
||||
(adgifs adgif-shader-array :offset-assert 168)
|
||||
(actor-birth-order (pointer uint32) :offset-assert 172)
|
||||
(unk-data-7 pointer :offset-assert 176)
|
||||
(split-box-indices (pointer uint16) :offset-assert 176)
|
||||
(unk-data-8 uint32 55 :offset-assert 180)
|
||||
)
|
||||
:method-count-assert 20
|
||||
@@ -63,7 +63,7 @@
|
||||
(:methods
|
||||
(relocate (_type_ kheap (pointer uint8)) none :replace 7)
|
||||
(birth (_type_) none 18)
|
||||
(dummy-19 (_type_) none 19)
|
||||
(deactivate-entities (_type_) none 19)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
+7
-7
@@ -103,7 +103,7 @@
|
||||
(+! (-> mem-use data 57 used) v1-92)
|
||||
(+! (-> mem-use data 57 total) (logand -16 (+ v1-92 15)))
|
||||
)
|
||||
(when (nonzero? (-> obj unk-data-7))
|
||||
(when (nonzero? (-> obj split-box-indices))
|
||||
(set! (-> mem-use length) (max 58 (-> mem-use length)))
|
||||
(set! (-> mem-use data 57 name) "bsp-misc")
|
||||
(+! (-> mem-use data 57 count) 1)
|
||||
@@ -280,7 +280,7 @@
|
||||
|
||||
;; definition for method 15 of type bsp-header
|
||||
;; INFO: Return type mismatch profile-frame vs none.
|
||||
(defmethod dummy-15 bsp-header ((obj bsp-header) (arg0 object) (arg1 object))
|
||||
(defmethod debug-draw bsp-header ((obj bsp-header) (arg0 drawable) (arg1 object))
|
||||
(rlet ((vf16 :class vf)
|
||||
(vf17 :class vf)
|
||||
(vf18 :class vf)
|
||||
@@ -338,7 +338,7 @@
|
||||
)
|
||||
)
|
||||
(let ((a1-3 (-> obj drawable-trees)))
|
||||
(dummy-15 a1-3 a1-3 arg1)
|
||||
(debug-draw a1-3 a1-3 arg1)
|
||||
)
|
||||
(if *debug-segment*
|
||||
(add-frame
|
||||
@@ -453,7 +453,7 @@
|
||||
(+! (-> *collide-stats* calls) 1)
|
||||
(let ((s4-0 (-> obj drawable-trees)))
|
||||
(dotimes (s3-0 (-> s4-0 length))
|
||||
(collide-with-box (-> s4-0 data s3-0) arg0 arg1)
|
||||
(collide-with-box (-> s4-0 trees s3-0) arg0 arg1)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
@@ -468,7 +468,7 @@
|
||||
(+! (-> *collide-stats* calls) 1)
|
||||
(let ((s4-0 (-> obj drawable-trees)))
|
||||
(dotimes (s3-0 (-> s4-0 length))
|
||||
(collide-y-probe (-> s4-0 data s3-0) arg0 arg1)
|
||||
(collide-y-probe (-> s4-0 trees s3-0) arg0 arg1)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
@@ -483,7 +483,7 @@
|
||||
(+! (-> *collide-stats* calls) 1)
|
||||
(let ((s4-0 (-> obj drawable-trees)))
|
||||
(dotimes (s3-0 (-> s4-0 length))
|
||||
(collide-ray (-> s4-0 data s3-0) arg0 arg1)
|
||||
(collide-ray (-> s4-0 trees s3-0) arg0 arg1)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
@@ -497,7 +497,7 @@
|
||||
((obj bsp-header) (arg0 sphere) (arg1 int) (arg2 ambient-list))
|
||||
(let ((s3-0 (-> obj drawable-trees)))
|
||||
(dotimes (s2-0 (-> s3-0 length))
|
||||
(collect-ambients (-> s3-0 data s2-0) arg0 arg1 arg2)
|
||||
(collect-ambients (-> s3-0 trees s2-0) arg0 arg1 arg2)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
|
||||
+6
-6
@@ -191,19 +191,19 @@
|
||||
(unload! (_type_) _type_ 12)
|
||||
(bsp-name (_type_) symbol 13)
|
||||
(dummy-14 (_type_ object) memory-usage-block 14)
|
||||
(dummy-15 (_type_ vector) symbol 15)
|
||||
(point-in-boxes? (_type_ vector) symbol 15)
|
||||
(update-vis! (_type_ level-vis-info uint uint) symbol 16)
|
||||
(load-continue (_type_) _type_ 17)
|
||||
(load-begin (_type_) _type_ 18)
|
||||
(login (_type_) _type_ 19)
|
||||
(login-begin (_type_) _type_ 19)
|
||||
(vis-load (_type_) uint 20)
|
||||
(dummy-21 (_type_) none 21)
|
||||
(activate (_type_) _type_ 22)
|
||||
(birth (_type_) _type_ 22)
|
||||
(level-status-set! (_type_ symbol) _type_ 23)
|
||||
(dummy-24 (_type_) _type_ 24)
|
||||
(dummy-25 (_type_) int 25)
|
||||
(load-required-packages (_type_) _type_ 24)
|
||||
(init-vis (_type_) int 25)
|
||||
(vis-clear (_type_) int 26)
|
||||
(dummy-27 (_type_ vector string) none 27)
|
||||
(debug-print-splitbox (_type_ vector string) none 27)
|
||||
(art-group-get-by-name (_type_ string) art-group 28)
|
||||
)
|
||||
)
|
||||
|
||||
+2165
File diff suppressed because it is too large
Load Diff
@@ -112,6 +112,9 @@
|
||||
|
||||
// decompiler BUG
|
||||
"level-hint-task-process",
|
||||
"(method 26 level)",
|
||||
"(method 9 level)",
|
||||
"(method 10 level)", // asm
|
||||
|
||||
// cam-states
|
||||
"cam-los-collide", // vector-dot involving the stack
|
||||
|
||||
Reference in New Issue
Block a user