mirror of
https://github.com/sonicdcer/sf64.git
synced 2024-11-23 13:00:06 +00:00
progress on disassembly
This commit is contained in:
parent
121283fbed
commit
b2f3d928a4
14
Makefile
Normal file
14
Makefile
Normal file
@ -0,0 +1,14 @@
|
||||
VERSION ?= us
|
||||
|
||||
BASEROM := baserom.$(VERSION).z64
|
||||
TARGET := starfox64
|
||||
|
||||
SPLAT ?= tools/splat/split.py
|
||||
SPLAT_YAML ?= $(TARGET).$(VERSION).yaml
|
||||
|
||||
|
||||
|
||||
extract:
|
||||
# $(RM) -r asm/$(VERSION) bin/$(VERSION)
|
||||
# $(CAT) yamls/$(VERSION)/header.yaml yamls/$(VERSION)/makerom.yaml yamls/$(VERSION)/main.yaml > $(SPLAT_YAML)
|
||||
$(SPLAT) yamls/$(SPLAT_YAML)
|
202
Makefile_Progess
Normal file
202
Makefile_Progess
Normal file
@ -0,0 +1,202 @@
|
||||
# Build options can be changed by modifying the makefile or by building with 'make SETTING=value'.
|
||||
# It is also possible to override the settings in Defaults in a file called .make_options as 'SETTING=value'.
|
||||
|
||||
-include .make_options
|
||||
|
||||
MAKEFLAGS += --no-builtin-rules
|
||||
|
||||
#### Defaults ####
|
||||
|
||||
# If COMPARE is 1, check the output md5sum after building
|
||||
COMPARE ?= 1
|
||||
# If NON_MATCHING is 1, define the NON_MATCHING C flag when building
|
||||
NON_MATCHING ?= 0
|
||||
# if WERROR is 1, pass -Werror to CC_CHECK, so warnings would be treated as errors
|
||||
WERROR ?= 0
|
||||
# Keep .mdebug section in build
|
||||
KEEP_MDEBUG ?= 0
|
||||
# Check code syntax with host compiler
|
||||
RUN_CC_CHECK ?= 1
|
||||
CC_CHECK_COMP ?= gcc
|
||||
# Dump build object files
|
||||
OBJDUMP_BUILD ?= 0
|
||||
# Number of threads to compress with
|
||||
N_THREADS ?= $(shell nproc)
|
||||
|
||||
# Set prefix to mips binutils binaries (mips-linux-gnu-ld => 'mips-linux-gnu-') - Change at your own risk!
|
||||
# In nearly all cases, not having 'mips-linux-gnu-*' binaries on the PATH is indicative of missing dependencies
|
||||
MIPS_BINUTILS_PREFIX ?= mips-linux-gnu-
|
||||
|
||||
|
||||
VERSION ?= us
|
||||
|
||||
BASEROM := baserom.$(VERSION).z64
|
||||
TARGET := starfox64
|
||||
|
||||
|
||||
### Output ###
|
||||
|
||||
BUILD_DIR := build
|
||||
ROM := $(BUILD_DIR)/$(TARGET).$(VERSION).z64
|
||||
ELF := $(BUILD_DIR)/$(TARGET).$(VERSION).elf
|
||||
LD_MAP := $(BUILD_DIR)/$(TARGET).$(VERSION).map
|
||||
LD_SCRIPT := linker_scripts/$(VERSION)/$(TARGET).ld
|
||||
|
||||
|
||||
#### Setup ####
|
||||
|
||||
BUILD_DEFINES ?=
|
||||
|
||||
ifeq ($(VERSION),us)
|
||||
BUILD_DEFINES += -DVERSION_US=1
|
||||
else
|
||||
$(error Invalid VERSION variable detected. Please use 'us')
|
||||
endif
|
||||
|
||||
|
||||
ifeq ($(NON_MATCHING),1)
|
||||
BUILD_DEFINES += -DNON_MATCHING -DAVOID_UB
|
||||
COMPARE := 0
|
||||
endif
|
||||
|
||||
MAKE = make
|
||||
CPPFLAGS += -fno-dollars-in-identifiers -P
|
||||
LDFLAGS := --no-check-sections --accept-unknown-input-arch --emit-relocs
|
||||
|
||||
UNAME_S := $(shell uname -s)
|
||||
ifeq ($(OS),Windows_NT)
|
||||
$(error Native Windows is currently unsupported for building this repository, use WSL instead c:)
|
||||
else ifeq ($(UNAME_S),Linux)
|
||||
DETECTED_OS := linux
|
||||
else ifeq ($(UNAME_S),Darwin)
|
||||
DETECTED_OS := mac
|
||||
MAKE := gmake
|
||||
CPPFLAGS += -xc++
|
||||
endif
|
||||
|
||||
#### Tools ####
|
||||
ifneq ($(shell type $(MIPS_BINUTILS_PREFIX)ld >/dev/null 2>/dev/null; echo $$?), 0)
|
||||
$(error Unable to find $(MIPS_BINUTILS_PREFIX)ld. Please install or build MIPS binutils, commonly mips-linux-gnu. (or set MIPS_BINUTILS_PREFIX if your MIPS binutils install uses another prefix))
|
||||
endif
|
||||
|
||||
|
||||
CC := tools/ido/$(DETECTED_OS)/7.1/cc
|
||||
CC_OLD := tools/ido/$(DETECTED_OS)/5.3/cc
|
||||
|
||||
|
||||
AS := $(MIPS_BINUTILS_PREFIX)as
|
||||
LD := $(MIPS_BINUTILS_PREFIX)ld
|
||||
OBJCOPY := $(MIPS_BINUTILS_PREFIX)objcopy
|
||||
OBJDUMP := $(MIPS_BINUTILS_PREFIX)objdump
|
||||
CPP := cpp
|
||||
ICONV := iconv
|
||||
ASM_PROC := python3 tools/asm-processor/build.py
|
||||
CAT := cat
|
||||
|
||||
ASM_PROC_FLAGS := --input-enc=utf-8 --output-enc=euc-jp --convert-statics=global-with-filename
|
||||
|
||||
SPLAT ?= tools/splat/split.py
|
||||
SPLAT_YAML ?= $(TARGET).$(VERSION).yaml
|
||||
|
||||
|
||||
|
||||
IINC := -Iinclude -Ibin/$(VERSION) -I.
|
||||
IINC += -Ilib/ultralib/include -Ilib/ultralib/include/PR -Ilib/ultralib/include/ido
|
||||
|
||||
ifeq ($(KEEP_MDEBUG),0)
|
||||
RM_MDEBUG = $(OBJCOPY) --remove-section .mdebug $@
|
||||
else
|
||||
RM_MDEBUG = @:
|
||||
endif
|
||||
|
||||
# Check code syntax with host compiler
|
||||
CHECK_WARNINGS := -Wall -Wextra -Wimplicit-fallthrough -Wno-unknown-pragmas -Wno-missing-braces -Wno-sign-compare -Wno-uninitialized
|
||||
# Have CC_CHECK pretend to be a MIPS compiler
|
||||
MIPS_BUILTIN_DEFS := -DMIPSEB -D_MIPS_FPSET=16 -D_MIPS_ISA=2 -D_ABIO32=1 -D_MIPS_SIM=_ABIO32 -D_MIPS_SZINT=32 -D_MIPS_SZPTR=32
|
||||
ifneq ($(RUN_CC_CHECK),0)
|
||||
# The -MMD flags additionaly creates a .d file with the same name as the .o file.
|
||||
CC_CHECK := $(CC_CHECK_COMP)
|
||||
CC_CHECK_FLAGS := -MMD -MP -fno-builtin -fsyntax-only -funsigned-char -fdiagnostics-color -std=gnu89 -m32 -DNON_MATCHING -DAVOID_UB -DCC_CHECK=1
|
||||
ifneq ($(WERROR), 0)
|
||||
CHECK_WARNINGS += -Werror
|
||||
endif
|
||||
else
|
||||
CC_CHECK := @:
|
||||
endif
|
||||
|
||||
|
||||
CFLAGS += -G 0 -non_shared -Xcpluscomm -nostdinc -Wab,-r4300_mul
|
||||
|
||||
WARNINGS := -fullwarn -verbose -woff 624,649,838,712,516,513,596,564,594
|
||||
ASFLAGS := -march=vr4300 -32 -G0
|
||||
COMMON_DEFINES := -D_MIPS_SZLONG=32
|
||||
GBI_DEFINES := -DF3DEX_GBI
|
||||
RELEASE_DEFINES := -DNDEBUG -D_FINALROM
|
||||
AS_DEFINES := -DMIPSEB -D_LANGUAGE_ASSEMBLY -D_ULTRA64
|
||||
C_DEFINES := -DLANGUAGE_C -D_LANGUAGE_C
|
||||
ENDIAN := -EB
|
||||
|
||||
OPTFLAGS := -O2 -g3
|
||||
MIPS_VERSION := -mips2
|
||||
ICONV_FLAGS := --from-code=UTF-8 --to-code=EUC-JP
|
||||
|
||||
# Use relocations and abi fpr names in the dump
|
||||
OBJDUMP_FLAGS := --disassemble --reloc --disassemble-zeroes -Mreg-names=32 -Mno-aliases
|
||||
|
||||
ifneq ($(OBJDUMP_BUILD), 0)
|
||||
OBJDUMP_CMD = $(OBJDUMP) $(OBJDUMP_FLAGS) $@ > $(@:.o=.dump.s)
|
||||
OBJCOPY_BIN = $(OBJCOPY) -O binary $@ $@.bin
|
||||
else
|
||||
OBJDUMP_CMD = @:
|
||||
OBJCOPY_BIN = @:
|
||||
endif
|
||||
|
||||
# rom compression flags
|
||||
COMPFLAGS := --threads $(N_THREADS)
|
||||
ifeq ($(NON_MATCHING),0)
|
||||
COMPFLAGS += --matching
|
||||
endif
|
||||
|
||||
#### Files ####
|
||||
|
||||
$(shell mkdir -p asm bin linker_scripts/$(VERSION)/auto)
|
||||
|
||||
SRC_DIRS := $(shell find src -type d)
|
||||
ASM_DIRS := $(shell find asm/$(VERSION) -type d -not -path "asm/$(VERSION)/nonmatchings/*")
|
||||
BIN_DIRS := $(shell find bin -type d)
|
||||
|
||||
C_FILES := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.c))
|
||||
S_FILES := $(foreach dir,$(ASM_DIRS) $(SRC_DIRS),$(wildcard $(dir)/*.s))
|
||||
BIN_FILES := $(foreach dir,$(BIN_DIRS),$(wildcard $(dir)/*.bin))
|
||||
O_FILES := $(foreach f,$(C_FILES:.c=.o),$(BUILD_DIR)/$f) \
|
||||
$(foreach f,$(S_FILES:.s=.o),$(BUILD_DIR)/$f) \
|
||||
$(foreach f,$(BIN_FILES:.bin=.o),$(BUILD_DIR)/$f)
|
||||
|
||||
|
||||
# Automatic dependency files
|
||||
DEP_FILES := $(O_FILES:.o=.d) \
|
||||
$(O_FILES:.o=.asmproc.d)
|
||||
|
||||
# create build directories
|
||||
$(shell mkdir -p $(BUILD_DIR)/linker_scripts/$(VERSION) $(BUILD_DIR)/linker_scripts/$(VERSION)/auto $(foreach dir,$(SRC_DIRS) $(ASM_DIRS) $(BIN_DIRS),$(BUILD_DIR)/$(dir)))
|
||||
|
||||
|
||||
# directory flags
|
||||
build/src/main/O2/%.o: OPTFLAGS := -O2
|
||||
|
||||
# per-file flags
|
||||
|
||||
# cc & asm-processor
|
||||
build/src/%.o: CC := $(ASM_PROC) $(ASM_PROC_FLAGS) $(CC) -- $(AS) $(ASFLAGS) --
|
||||
|
||||
|
||||
#### Main Targets ###
|
||||
|
||||
uncompressed: $(ROM)
|
||||
ifneq ($(COMPARE),0)
|
||||
@md5sum $(ROM)
|
||||
@md5sum -c $(TARGET).$(VERSION).md5
|
||||
endif
|
||||
|
||||
extract:
|
||||
$(SPLAT) $(SPLAT_YAML)
|
6
starfox64.yaml → yamls/starfox64.us.yaml
Normal file → Executable file
6
starfox64.yaml → yamls/starfox64.us.yaml
Normal file → Executable file
@ -2,9 +2,9 @@ name: Starfox64 (North America)
|
||||
sha1: 09f0d105f476b00efa5303a3ebc42e60a7753b7a
|
||||
options:
|
||||
basename: starfox64
|
||||
target_path: sf64.z64
|
||||
target_path: baserom.us.z64
|
||||
elf_path: build/starfox64.elf
|
||||
base_path: .
|
||||
base_path: ..
|
||||
platform: n64
|
||||
compiler: ido
|
||||
|
||||
@ -71,7 +71,7 @@ segments:
|
||||
- [0x1050, asm]
|
||||
- [0x1270, asm]
|
||||
- [0x3440, asm] #func_80002840
|
||||
- [0x35A8, asm]
|
||||
- [0x35A8, c]
|
||||
- [0xC3EE0, data]
|
||||
- { start: 0xDE480, type: bss, vram: 0x800DD880 }
|
||||
|
Loading…
Reference in New Issue
Block a user