diff options
-rw-r--r-- | NewerProject.yaml | 3 | ||||
-rw-r--r-- | compression.yaml | 2 | ||||
-rw-r--r-- | prolog.yaml | 9 | ||||
-rw-r--r-- | src/prolog.S | 71 |
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 + + |