summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NewerProject.yaml3
-rw-r--r--compression.yaml2
-rw-r--r--prolog.yaml9
-rw-r--r--src/prolog.S71
4 files changed, 83 insertions, 2 deletions
diff --git a/NewerProject.yaml b/NewerProject.yaml
index c628b50..b2f7718 100644
--- a/NewerProject.yaml
+++ b/NewerProject.yaml
@@ -1,7 +1,7 @@
----
output_dir: "NewerASM"
code_address: 0x808D9000
modules:
+ - processed/prolog.yaml
- processed/bugfixes.yaml
- processed/worldmap.yaml
- processed/levelnames.yaml
@@ -14,6 +14,7 @@ modules:
- processed/linegod.yaml
- processed/tilesetfixer.yaml
- processed/switchblock.yaml
+ - processed/eventblock.yaml
# - processed/msgbox.yaml
# - processed/replay.yaml
- processed/growup.yaml
diff --git a/compression.yaml b/compression.yaml
index 9d3a058..542ee6a 100644
--- a/compression.yaml
+++ b/compression.yaml
@@ -4,7 +4,7 @@ hooks:
- name: InitialiseEverything
type: branch_insn
branch_type: b
- src_addr_pal: 0x8015BC70
+ src_addr_pal: 0x8015BCA0
target_func: 'InitCompression'
- name: GetFileEntrynumNew
diff --git a/prolog.yaml b/prolog.yaml
new file mode 100644
index 0000000..ce7200d
--- /dev/null
+++ b/prolog.yaml
@@ -0,0 +1,9 @@
+---
+source_files: [../src/prolog.S]
+hooks:
+ - name: Prolog
+ type: branch_insn
+ branch_type: b
+ src_addr_pal: 0x8015BC70
+ target_func: 'Prolog'
+
diff --git a/src/prolog.S b/src/prolog.S
new file mode 100644
index 0000000..38bcb6b
--- /dev/null
+++ b/src/prolog.S
@@ -0,0 +1,71 @@
+.text
+.align 4
+.set sp, 1
+
+.extern __ctor_loc
+.extern __ctor_end
+.extern OSReport
+
+.global Prolog
+Prolog:
+ stwu sp, -0x20(sp)
+ mflr r0
+ stw r0, 0x24(sp)
+ stw r31, 0x1C(sp)
+ stw r30, 0x18(sp)
+ stw r29, 0x14(sp)
+ # -- Go!
+
+ li r30, 0
+
+ lis r31, __ctor_loc@h
+ ori r31, r31, __ctor_loc@l
+ lis r29, __ctor_end@h
+ ori r29, r29, __ctor_end@l
+
+ lis r3, PMsg@h
+ ori r3, r3, PMsg@l
+ mr r4, r31
+ mr r5, r29
+ crclr 4*cr1+eq
+ bl OSReport
+
+ b startLoop
+
+loop:
+ mtctr r12
+ bctrl
+ addi r31, r31, 4
+ addi r30, r30, 1
+startLoop:
+ lwz r12, 0(r31)
+ cmpw r31, r29
+ bne loop
+
+ lis r3, PMsg2@h
+ ori r3, r3, PMsg2@l
+ mr r4, r30
+ crclr 4*cr1+eq
+ bl OSReport
+
+ # -- Done
+ li r3, 1
+ lwz r31, 0x1C(sp)
+ lwz r30, 0x18(sp)
+ lwz r29, 0x14(sp)
+ lwz r0, 0x24(sp)
+ mtlr r0
+ addi sp, sp, 0x20
+ blr
+
+
+.data
+PMsg:
+ .string "Newer Super Mario Bros. Wii - Hacks by Treeki and Tempus 2009-2011\n.ctors: %p - %p\n"
+
+PMsg2:
+ .string "%d inits called\n"
+
+.align 4
+
+