From 8cd986cc742ec84dfcc0de53706419ec923d39ca Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 12 Aug 2021 17:45:10 -0400 Subject: [PATCH] Add some more scripts --- .gitignore | 1 + fix_ov.sh | 6 ++++++ make_defs.sh | 7 +++++++ sfix_arm.sed | 39 +++++++++++++++++++++++++++++++++++++++ sfix_thumb.sed | 27 +++++++++++++++++++++++++++ 5 files changed, 80 insertions(+) create mode 100644 .gitignore create mode 100644 fix_ov.sh create mode 100644 make_defs.sh create mode 100644 sfix_arm.sed create mode 100644 sfix_thumb.sed diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9f11b75 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.idea/ diff --git a/fix_ov.sh b/fix_ov.sh new file mode 100644 index 0000000..751fb18 --- /dev/null +++ b/fix_ov.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +OV=$1 + +echo "sed -r -f <(grep -wE \"(thumb|arm)_func_start\" overlays/${OV}/module_${OV}.dump.s | grep -oE \"\w+$\" | xargs | sed -r -e 's/ FUN_/|/g' -e 's/^(MOD'${OV}')_/s\/\(FUN\|\1\)_\(/' -e 's/$/\)\/ov'${OV}'_\\2\/g/') overlays/${OV}/module_${OV}.dump.s > overlays/${OV}/module_${OV}.s" +sed -r -f <(grep -wE "(thumb|arm)_func_start" overlays/${OV}/module_${OV}.dump.s | grep -oE "\w+$" | xargs | sed -r -e 's/ FUN_/|/g' -e 's/^(MOD'${OV}'|FUN)_/s\/\(FUN\|\1\)_\(/' -e 's/$/\)\/ov'${OV}'_\\2\/g/') overlays/${OV}/module_${OV}.dump.s > overlays/${OV}/module_${OV}.s diff --git a/make_defs.sh b/make_defs.sh new file mode 100644 index 0000000..ff1abed --- /dev/null +++ b/make_defs.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +(head -c 44 baserom.nds | tail -c 4 +head -c 40 baserom.nds | tail -c 4 +head -c 48 baserom.nds | tail -c 4 +head -c 116 baserom.nds | tail -c 4 +sed -r '/^Overlay/!d' main.lsf | sed 's/Overlay //g' | while read ovname; do echo -ne "${ovname}.sbin\0"; done) > main_defs.sbin diff --git a/sfix_arm.sed b/sfix_arm.sed new file mode 100644 index 0000000..0652679 --- /dev/null +++ b/sfix_arm.sed @@ -0,0 +1,39 @@ +## Common +# 4byte/2byte +s/4byte/word/ +s/2byte/short/ + +# Comment chars +s/@/;/g + +# blx instructions are added link-time +/blx (r[0-9]+|sb|sl|fp|ip|sp|lr|pc)/!s/blx/bl/ + +# swi +s/svc #?/swi / + +## Arm-specific +# Conditional byte/half load/store insns +s/(ldr|str)(s?[bh])(\w{2})/\1\3\2/ + +# ldm/stm +s/(ldm|stm)([id][ab])(\w{2})/\1\3\2/ +s/(ldm|stm)(eq|ne|cs|lo|hi|hs|lt|gt|le|ge)?\b/\1\2ia/ + +# Push/pop +s/push/stmdb sp!,/ +s/pop(\w*)/ldm\1ia sp!,/ + +# Shift instructions +s/(lsl|lsr|asr|ror)(\w* .+,)( \S+)$/mov\2 \1\3/ +s/rrx(.+)/mov\1, rrx/ + +# apsr --> cpsr +s/apsr/cpsr/i +s/cpsr_nzcvq/cpsr_f/i + +# mcr/mrc +/(mcr|mrc)/s/#//g + +# conditional and/orr/eor/bic +s/(add|sub|and|orr|eor|bic|mul)s(\w{2})/\1\2s/ diff --git a/sfix_thumb.sed b/sfix_thumb.sed new file mode 100644 index 0000000..e2ebfdc --- /dev/null +++ b/sfix_thumb.sed @@ -0,0 +1,27 @@ +## Common +# 4byte/2byte +s/4byte/word/ +s/2byte/short/ + +# Comment chars +s/@/;/g + +# blx instructions are added link-time +/blx (r\d+|sb|sl|fp|ip|sp|lr|pc)/!s/blx/bl/ + +# swi +s/svc #?/swi / + +## Thumb-specific +# Flag-setting instructions +s/(\t\w{3})s\b/\1/ + +# rsb instructions are not valid in mwasmarm +s/rsb (\w+, \w+), \#0/neg \1/ + +# ldm/stm must have the "ia" suffix +s/(ldm|stm)\b/\0ia/ +s/((ldm|stm)ia \w+),/\1!,/ + +# mul arg syntax +s/(mul \w+, \w+), \w+/\1/