another fix

This commit is contained in:
water
2021-08-10 21:46:12 -04:00
parent df94e948bb
commit 2b7a8d8880
3 changed files with 12 additions and 22 deletions
+8 -9
View File
@@ -833,8 +833,10 @@ Ptr<uint8_t> link_and_exec(Ptr<uint8_t> data,
/*!
* Wrapper so this can be called from GOAL. Not in original game.
*/
u64 link_and_exec_wrapper(u64 data, u64 name, s64 size, u64 heap, u64 flags) {
return link_and_exec(Ptr<u8>(data), Ptr<char>(name).c(), size, Ptr<kheapinfo>(heap), flags)
u64 link_and_exec_wrapper(u64* args) {
// data, name, size, heap, flags
return link_and_exec(Ptr<u8>(args[0]), Ptr<char>(args[1]).c(), args[2], Ptr<kheapinfo>(args[3]),
args[4])
.offset;
}
@@ -843,13 +845,10 @@ u64 link_and_exec_wrapper(u64 data, u64 name, s64 size, u64 heap, u64 flags) {
* 47 -> output_load, output_true, execute, 8, force fast
* 39 -> no 8 (s7)
*/
uint64_t link_begin(uint64_t object_data,
uint64_t name,
int32_t size,
uint64_t heap,
uint32_t flags) {
saved_link_control.begin(Ptr<u8>(object_data), Ptr<char>(name).c(), size, Ptr<kheapinfo>(heap),
flags);
uint64_t link_begin(u64* args) {
// object data, name size, heap flags
saved_link_control.begin(Ptr<u8>(args[0]), Ptr<char>(args[1]).c(), args[2],
Ptr<kheapinfo>(args[3]), args[4]);
auto work_result = saved_link_control.work();
// if we managed to finish in one shot, take care of calling finish
if (work_result) {
+2 -11
View File
@@ -6,9 +6,6 @@
* DONE!
*/
#ifndef JAK_KLINK_H
#define JAK_KLINK_H
#include "Ptr.h"
#include "kmalloc.h"
#include "common/link_types.h"
@@ -94,7 +91,7 @@ struct ObjectFileHeader {
void klink_init_globals();
u64 link_and_exec_wrapper(u64 data, u64 name, s64 size, u64 heap, u64 flags);
u64 link_and_exec_wrapper(u64* args);
Ptr<uint8_t> link_and_exec(Ptr<uint8_t> data,
const char* name,
@@ -102,15 +99,9 @@ Ptr<uint8_t> link_and_exec(Ptr<uint8_t> data,
Ptr<kheapinfo> heap,
uint32_t flags);
uint64_t link_begin(uint64_t object_data,
uint64_t name,
int32_t size,
uint64_t heap,
uint32_t flags);
uint64_t link_begin(u64* args);
uint64_t link_resume();
void ultimate_memcpy(void* dst, void* src, uint32_t size);
extern link_control saved_link_control;
#endif // JAK_KLINK_H
+2 -2
View File
@@ -1927,7 +1927,7 @@ s32 InitHeapAndSymbol() {
make_function_symbol_from_c("method-set!", (void*)method_set);
// dgo
make_function_symbol_from_c("link", (void*)link_and_exec_wrapper);
make_stack_arg_function_symbol_from_c("link", (void*)link_and_exec_wrapper);
make_function_symbol_from_c("dgo-load", (void*)load_and_link_dgo);
// forward declare
@@ -1937,7 +1937,7 @@ s32 InitHeapAndSymbol() {
make_raw_function_symbol_from_c("symlink3", 0);
// game stuff
make_function_symbol_from_c("link-begin", (void*)link_begin);
make_stack_arg_function_symbol_from_c("link-begin", (void*)link_begin);
make_function_symbol_from_c("link-resume", (void*)link_resume);
// make_function_symbol_from_c("mc-run", &CKernel::not_yet_implemented);
// make_function_symbol_from_c("mc-format", &CKernel::not_yet_implemented);