Skip to content

Instantly share code, notes, and snippets.

@bates64
Last active February 17, 2020 19:31
Show Gist options
  • Save bates64/8e2faf8909d15ad393b0802c7aa60bf7 to your computer and use it in GitHub Desktop.
Save bates64/8e2faf8909d15ad393b0802c7aa60bf7 to your computer and use it in GitHub Desktop.
Star Rod compile.log to Project 64 symbols file script
# log-to-sym.ps1 v2
# https://gist.github.com/nanaian/8e2faf8909d15ad393b0802c7aa60bf7
#
# compile.log to Project 64 symbols file script
# by alex (imalex.xyz)
#
# usage:
# place this script in the $mod/logs directory
# compile with Star Rod as usual
# run this script (`.\log-to-sym.ps1` in PowerShell) and a PAPER MARIO.sym file will be produced
New-Item "PAPER MARIO.sym" -ItemType File -Force
Clear-Content "PAPER MARIO.sym"
function New-Symbol {
$ptr = $args[0]
$addr = $args[1]
$description = $args[2]
$type = 'data'
if ($ptr -like '$Function*') {
$type = 'code'
}
Add-Content "PAPER MARIO.sym" "$addr,$type,$ptr,$description"
}
$map_section = 'Executing patch: ([a-zA-Z0-9_]+).mpat'
$map_ptr = '(\$[^ ]+) will be placed at (8024[0-9A-F]{4})'
$active_map = ''
$global_ptr = 'Writing global struct (\$[^ ]+) to (80[0-9A-F]{6})'
$global2_ptr = '(80[0-9A-F]{6}) = (\$Global_[^ ]+)'
$other_ptr = '(Version information) will be stored at 0x(80[0-9A-F]{6})'
Get-Content compile.log | ForEach-Object {
if ($_ -match $map_section) {
$active_map = $matches[1]
}
if ($_ -match $map_section) {
$active_map = $matches[1]
}
if ($_ -match $map_ptr) {
New-Symbol $matches[1] $matches[2] "Map: $active_map"
}
if ($_ -match $global_ptr) {
New-Symbol $matches[1] $matches[2] 'Globally loaded'
}
if ($_ -match $global2_ptr) {
New-Symbol $matches[2] $matches[1] 'Globally loaded'
}
if ($_ -match $other_ptr) {
New-Symbol $matches[1] $matches[2] 'Constant'
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment