summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorred031000 <rubenru09@aol.com>2020-09-19 15:10:27 +0100
committerred031000 <rubenru09@aol.com>2020-09-19 15:10:27 +0100
commitfeaf56f2b7d8cadcf218dfba2b6661863287b1d1 (patch)
tree95064c2bd19f850114102bfd0ba6fe0e8e0643d1
parentc4b1aa3f30028918ac4e324c462304edb821c5bf (diff)
decompile ptmf.o
-rw-r--r--Makefile6
-rw-r--r--asm/libstdc++/ptmf.s17
-rw-r--r--include/libstdc++/CPlusLib.h14
-rw-r--r--obj_files.mk2
-rw-r--r--src/libstdc++/ptmf.c17
5 files changed, 35 insertions, 21 deletions
diff --git a/Makefile b/Makefile
index 1b79620..d1c3561 100644
--- a/Makefile
+++ b/Makefile
@@ -28,7 +28,7 @@ TARGET := pbr_pal
BUILD_DIR := build/$(TARGET)
-SRC_DIRS := src src/SDK/OS
+SRC_DIRS := src src/SDK/OS src/libstdc++
ASM_DIRS := asm asm/SDK/OS asm/libstdc++ asm/MetroTRK
# Inputs
@@ -67,11 +67,11 @@ PYTHON := python3
#POSTPROC := tools/postprocess.py
# Options
-INCLUDES := -i . -I- -i include -i include/SDK
+INCLUDES := -i . -I- -i include -i include/SDK -i include/libstdc++
ASFLAGS := -mgekko -I include
LDFLAGS := -map $(MAP) -fp hard -nodefaults
-CFLAGS := -Cpp_exceptions off -proc gekko -fp hard -O4,p -nodefaults -msgstyle gcc -ipa file $(INCLUDES)
+CFLAGS := -Cpp_exceptions off -proc gekko -fp hard -O4,p -nodefaults -msgstyle gcc -ipa file $(INCLUDES) -W all
# for postprocess.py
PROCFLAGS := -fprologue-fixup=old_stack
diff --git a/asm/libstdc++/ptmf.s b/asm/libstdc++/ptmf.s
deleted file mode 100644
index 380f7bd..0000000
--- a/asm/libstdc++/ptmf.s
+++ /dev/null
@@ -1,17 +0,0 @@
-.include "macros.inc"
-
-.section .text, "ax" # 0x80006980 - 0x803E1E60
-
-.global __ptmf_scall
-__ptmf_scall:
-/* 801C6FD8 001C2C38 80 0C 00 00 */ lwz r0, 0(r12)
-/* 801C6FDC 001C2C3C 81 6C 00 04 */ lwz r11, 4(r12)
-/* 801C6FE0 001C2C40 81 8C 00 08 */ lwz r12, 8(r12)
-/* 801C6FE4 001C2C44 7C 63 02 14 */ add r3, r3, r0
-/* 801C6FE8 001C2C48 2C 0B 00 00 */ cmpwi r11, 0
-/* 801C6FEC 001C2C4C 41 80 00 0C */ blt lbl_801C6FF8
-/* 801C6FF0 001C2C50 7D 83 60 2E */ lwzx r12, r3, r12
-/* 801C6FF4 001C2C54 7D 8C 58 2E */ lwzx r12, r12, r11
-lbl_801C6FF8:
-/* 801C6FF8 001C2C58 7D 89 03 A6 */ mtctr r12
-/* 801C6FFC 001C2C5C 4E 80 04 20 */ bctr
diff --git a/include/libstdc++/CPlusLib.h b/include/libstdc++/CPlusLib.h
new file mode 100644
index 0000000..819c0a9
--- /dev/null
+++ b/include/libstdc++/CPlusLib.h
@@ -0,0 +1,14 @@
+#ifndef POKEREVO_CPLUSLIB_H
+#define POKEREVO_CPLUSLIB_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void __ptmf_scall(...);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif //POKEREVO_CPLUSLIB_H
diff --git a/obj_files.mk b/obj_files.mk
index 899bab2..ba75258 100644
--- a/obj_files.mk
+++ b/obj_files.mk
@@ -16,7 +16,7 @@ TEXT_O_FILES := \
$(BUILD_DIR)/asm/libstdc++/__va_arg.o \
$(BUILD_DIR)/asm/libstdc++/global_destructor_chain.o \
$(BUILD_DIR)/asm/libstdc++/NMWException.o \
- $(BUILD_DIR)/asm/libstdc++/ptmf.o \
+ $(BUILD_DIR)/src/libstdc++/ptmf.o \
$(BUILD_DIR)/asm/text_5_2.o \
$(BUILD_DIR)/asm/libstdc++/__init_cpp_exceptions.o \
$(BUILD_DIR)/asm/text_5_3.o \
diff --git a/src/libstdc++/ptmf.c b/src/libstdc++/ptmf.c
new file mode 100644
index 0000000..34d3d3e
--- /dev/null
+++ b/src/libstdc++/ptmf.c
@@ -0,0 +1,17 @@
+#include "CPlusLib.h"
+
+asm void __ptmf_scall(...)
+{
+ nofralloc
+ lwz r0, 0(r12)
+ lwz r11, 4(r12)
+ lwz r12, 8(r12)
+ add r3, r3, r0
+ cmpwi r11, 0
+ blt lbl_801C6FF8
+ lwzx r12, r3, r12
+ lwzx r12, r12, r11
+lbl_801C6FF8:
+ mtctr r12
+ bctr
+}