Add two map files

This commit is contained in:
Luciano Ciccariello 2022-01-20 22:02:05 +00:00
parent ac6f5e3079
commit 778a90c049
15 changed files with 793 additions and 11 deletions

View File

@ -28,6 +28,8 @@ jobs:
run: |
mkdir -p gh-pages/assets
python tools/report_progress.py DRA.BIN 630 src/dra > gh-pages/assets/progress-dra.json
python tools/report_progress.py MAD.BIN 116 src/st/mad > gh-pages/assets/progress-mad.json
python tools/report_progress.py NO3.BIN 210 src/st/no3 > gh-pages/assets/progress-no3.json
- name: Commit report
run: |
git config --global user.name 'GitHub Action'

6
.gitignore vendored
View File

@ -1,8 +1,10 @@
main.exe
DRA.BIN
ST/
*.ld
*auto.*.txt
generated.symbols.*.txt
__pycache__
asm/*/*.s
@ -10,5 +12,9 @@ asm/*/data/*.s
asm/*/nonmatchings/*.s
asm/*/nonmatchings/*/*.s
asm/*/nonmatchings/*/*/*.s
asm/st/*/data/*.s
asm/st/*/nonmatchings/*.s
asm/st/*/nonmatchings/*/*.s
asm/st/*/nonmatchings/*/*/*.s
assets/
build/

View File

@ -1,6 +1,8 @@
# Binaries
MAIN := main
DRA := dra
STMAD := stmad
STNO3 := stno3
# Compilers
GCC_MODERN := $(CROSS)gcc
@ -45,17 +47,39 @@ DRA_O_FILES := $(foreach file,$(DRA_S_FILES),$(BUILD_DIR)/$(file).o) \
DRA_TARGET := $(BUILD_DIR)/$(DRA)
DRABIN_TARGET := $(BUILD_DIR)/DRA.BIN
STMAD_ASM_DIRS := $(ASM_DIR)/st/mad $(ASM_DIR)/st/mad/data
STMAD_SRC_DIRS := $(SRC_DIR)/st/mad
STMAD_S_FILES := $(foreach dir,$(STMAD_ASM_DIRS),$(wildcard $(dir)/*.s)) \
$(foreach dir,$(STMAD_ASM_DIRS),$(wildcard $(dir)/**/*.s))
STMAD_C_FILES := $(foreach dir,$(STMAD_SRC_DIRS),$(wildcard $(dir)/*.c)) \
$(foreach dir,$(STMAD_SRC_DIRS),$(wildcard $(dir)/**/*.c))
STMAD_O_FILES := $(foreach file,$(STMAD_S_FILES),$(BUILD_DIR)/$(file).o) \
$(foreach file,$(STMAD_C_FILES),$(BUILD_DIR)/$(file).o)
STMAD_TARGET := $(BUILD_DIR)/$(STMAD)
STMADBIN_TARGET := $(BUILD_DIR)/MAD.BIN
STNO3_ASM_DIRS := $(ASM_DIR)/st/no3 $(ASM_DIR)/st/no3/data
STNO3_SRC_DIRS := $(SRC_DIR)/st/no3
STNO3_S_FILES := $(foreach dir,$(STNO3_ASM_DIRS),$(wildcard $(dir)/*.s)) \
$(foreach dir,$(STNO3_ASM_DIRS),$(wildcard $(dir)/**/*.s))
STNO3_C_FILES := $(foreach dir,$(STNO3_SRC_DIRS),$(wildcard $(dir)/*.c)) \
$(foreach dir,$(STNO3_SRC_DIRS),$(wildcard $(dir)/**/*.c))
STNO3_O_FILES := $(foreach file,$(STNO3_S_FILES),$(BUILD_DIR)/$(file).o) \
$(foreach file,$(STNO3_C_FILES),$(BUILD_DIR)/$(file).o)
STNO3_TARGET := $(BUILD_DIR)/$(STNO3)
STNO3BIN_TARGET := $(BUILD_DIR)/NO3.BIN
# Tooling
PYTHON := python3
SPLAT_DIR := $(TOOLS_DIR)/n64splat
SPLAT := $(PYTHON) $(SPLAT_DIR)/split.py
all: main dra
all: main dra mad no3
sha1sum --check slus00067.sha
clean:
rm -rf $(BUILD_DIR)
main: main_dirs $(MAIN_TARGET).exe
sha1sum --check $(MAIN).sha
main_dirs:
$(foreach dir,$(MAIN_ASM_DIRS) $(MAIN_SRC_DIRS),$(shell mkdir -p $(BUILD_DIR)/$(dir)))
$(MAIN_TARGET).exe: $(MAIN_TARGET).elf
@ -72,7 +96,6 @@ $(MAIN_TARGET).elf: $(MAIN_O_FILES)
-s
dra: dra_dirs $(DRABIN_TARGET)
sha1sum --check $(DRA).sha
dra_dirs:
$(foreach dir,$(DRA_ASM_DIRS) $(DRA_SRC_DIRS),$(shell mkdir -p $(BUILD_DIR)/$(dir)))
$(DRABIN_TARGET): $(DRA_TARGET).elf
@ -80,18 +103,55 @@ $(DRABIN_TARGET): $(DRA_TARGET).elf
$(DRA_TARGET).elf: $(DRA_O_FILES)
$(LD) -o $@ \
-Map $(DRA_TARGET).map \
-T dra.ld \
-T $(DRA).ld \
-T $(CONFIG_DIR)/undefined_syms_auto.$(DRA).txt \
-T $(CONFIG_DIR)/undefined_funcs_auto.$(DRA).txt \
--no-check-sections \
-nostdlib \
-s
extract: extract_main extract_dra
mad: mad_dirs $(STMADBIN_TARGET)
mad_dirs:
$(foreach dir,$(STMAD_ASM_DIRS) $(STMAD_SRC_DIRS),$(shell mkdir -p $(BUILD_DIR)/$(dir)))
$(STMADBIN_TARGET): $(STMAD_TARGET).elf
$(OBJCOPY) -O binary $< $@
$(STMAD_TARGET).elf: $(STMAD_O_FILES)
$(LD) -o $@ \
-Map $(STMAD_TARGET).map \
-T $(STMAD).ld \
-T $(CONFIG_DIR)/undefined_syms_auto.$(STMAD).txt \
-T $(CONFIG_DIR)/undefined_funcs_auto.$(STMAD).txt \
--no-check-sections \
-nostdlib \
-s
no3: no3_dirs $(STNO3BIN_TARGET)
no3_dirs:
$(foreach dir,$(STNO3_ASM_DIRS) $(STNO3_SRC_DIRS),$(shell mkdir -p $(BUILD_DIR)/$(dir)))
$(STNO3BIN_TARGET): $(STNO3_TARGET).elf
$(OBJCOPY) -O binary $< $@
$(STNO3_TARGET).elf: $(STNO3_O_FILES)
$(LD) -o $@ \
-Map $(STNO3_TARGET).map \
-T $(STNO3).ld \
-T $(CONFIG_DIR)/undefined_syms_auto.$(STNO3).txt \
-T $(CONFIG_DIR)/undefined_funcs_auto.$(STNO3).txt \
--no-check-sections \
-nostdlib \
-s
extract: extract_main extract_dra extract_mad extract_no3
extract_main: $(SPLAT_DIR)
$(SPLAT) --basedir . $(CONFIG_DIR)/splat.$(MAIN).yaml
extract_dra: $(SPLAT_DIR)
$(SPLAT) --basedir . $(CONFIG_DIR)/splat.$(DRA).yaml
extract_mad: $(SPLAT_DIR)
cat $(CONFIG_DIR)/symbols.txt $(CONFIG_DIR)/symbols.$(STMAD).txt > $(CONFIG_DIR)/generated.symbols.$(STMAD).txt
$(SPLAT) --basedir . $(CONFIG_DIR)/splat.$(STMAD).yaml
extract_no3: $(SPLAT_DIR)
cat $(CONFIG_DIR)/symbols.txt $(CONFIG_DIR)/symbols.$(STNO3).txt > $(CONFIG_DIR)/generated.symbols.$(STNO3).txt
$(SPLAT) --basedir . $(CONFIG_DIR)/splat.$(STNO3).yaml
$(CONFIG_DIR)/generated.symbols.%.txt:
$(SPLAT_DIR):
git submodule init $(SPLAT_DIR)
@ -110,5 +170,5 @@ $(BUILD_DIR)/%.c.s: %.c
SHELL = /bin/bash -e -o pipefail
.PHONY: all, clean
.PHONY: main, main_dirs, dra, dra_dirs
.PHONY: extract, extract_main, extract_dra
.PHONY: main, main_dirs, dra, dra_dirs, mad, mad_dirs, no3, no3_dirs
.PHONY: extract, extract_main, extract_dra, extract_mad, extract_no3

View File

@ -8,6 +8,8 @@ Recompilable code that creates 1:1 binaries for the commercial videogame Castlev
|--------------------------------------------|-----------|------------|----------
| `54828d4e44ea9575f2a0917ff63def42a304abff` | main.exe | SLUS-00067 | N/A
| `2eac5f7162e77416166c2511c787995488f01c37` | DRA.BIN | SLUS-00067 | ![progress DRA.BIN](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/Xeeynamo/sotn-decomp/gh-pages/assets/progress-dra.json)
| `adb3303e1ea707c63dfa978511a88cab4f61970a` | ST/MAD.BIN | SLUS-00067 | ![progress MAD.BIN](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/Xeeynamo/sotn-decomp/gh-pages/assets/progress-mad.json)
| `5d06216b895ab5ff892c88b0d9eff67ff16e2bd1` | ST/NO3.BIN | SLUS-00067 | ![progress NO3.BIN](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/Xeeynamo/sotn-decomp/gh-pages/assets/progress-no3.json)
## Build

View File

@ -1 +0,0 @@
d70de80ac9b04a8ba4c62a7c646173fe *main.exe

27
config/splat.stmad.yaml Normal file
View File

@ -0,0 +1,27 @@
options:
platform: psx
basename: stmad
base_path: .
target_path: ST/MAD.BIN
asm_path: asm/st/mad
asset_path: assets/st/mad
src_path: src/st/mad
compiler: GCC
symbol_addrs_path: config/generated.symbols.stmad.txt
undefined_syms_path: config/undefined_syms.stmad.txt
undefined_funcs_auto_path: config/undefined_funcs_auto.stmad.txt
undefined_syms_auto_path: config/undefined_syms_auto.stmad.txt
find_file_boundaries: yes
enable_ld_alignment_hack: yes
use_legacy_include_asm: no
segments:
- name: stmad
type: code
start: 0x00000000
vram: 0x80180000
subalign: 4
subsegments:
- [0x0, data]
- [0xD8C8, c]
- [0x197D8, data]
- [0x19E94]

27
config/splat.stno3.yaml Normal file
View File

@ -0,0 +1,27 @@
options:
platform: psx
basename: stno3
base_path: .
target_path: ST/NO3.BIN
asm_path: asm/st/no3
asset_path: assets/st/no3
src_path: src/st/no3
compiler: GCC
symbol_addrs_path: config/generated.symbols.stno3.txt
undefined_syms_path: config/undefined_syms.stno3.txt
undefined_funcs_auto_path: config/undefined_funcs_auto.stno3.txt
undefined_syms_auto_path: config/undefined_syms_auto.stno3.txt
find_file_boundaries: yes
enable_ld_alignment_hack: yes
use_legacy_include_asm: no
segments:
- name: stno3
type: code
start: 0x00000000
vram: 0x80180000
subalign: 4
subsegments:
- [0x0, data]
- [0x377D4, c]
- [0x570B0, data]
- [0x57E18]

0
config/symbols.stmad.txt Normal file
View File

0
config/symbols.stno3.txt Normal file
View File

View File

@ -1129,4 +1129,4 @@ g_OverlayBlockCount = 0x80137F8C;
g_OverlayLastBlockSize = 0x80137F90;
g_imgUnk8013C200 = 0x8013C200;
g_imgUnk8013C270 = 0x8013C270;
p = 0x80180014;
g_pStOverlay = 0x80180000;

View File

@ -1 +0,0 @@
2eac5f7162e77416166c2511c787995488f01c37 build/DRA.BIN

View File

@ -1 +0,0 @@
54828d4e44ea9575f2a0917ff63def42a304abff build/main.exe

4
slus00067.sha Normal file
View File

@ -0,0 +1,4 @@
54828d4e44ea9575f2a0917ff63def42a304abff build/main.exe
2eac5f7162e77416166c2511c787995488f01c37 build/DRA.BIN
adb3303e1ea707c63dfa978511a88cab4f61970a build/MAD.BIN
5d06216b895ab5ff892c88b0d9eff67ff16e2bd1 build/NO3.BIN

236
src/st/mad/D8C8.c Normal file
View File

@ -0,0 +1,236 @@
#include "common.h"
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_8018D8C8);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_8018DC28);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_8018DF0C);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_8018E090);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_8018E13C);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_8018E1D4);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_8018E5AC);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_8018E674);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_8018E830);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_8018E964);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_8018E994);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_8018EC90);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_8018EDB8);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_8018FEA0);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80190544);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80190608);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80190720);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80190838);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80190884);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_801908DC);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_801909D8);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80190AD8);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80190B24);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80190B7C);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80190C78);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80190D8C);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80190F04);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80190FB8);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_8019102C);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_801910A8);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80191120);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80191D3C);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80191DA8);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80191E24);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80191E6C);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80191F24);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_8019203C);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80192078);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_801920AC);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_801920F0);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80192120);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_8019214C);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80192190);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80192408);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80192618);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80192800);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80192860);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_8019288C);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_801928A8);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80192914);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_8019294C);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80192994);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_801929DC);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80192A34);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80192AC0);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80192AF0);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80192B28);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80192B70);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80192BD0);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80192BF0);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80192C0C);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80192CAC);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80192DA8);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80192DD0);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80192EF8);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80193050);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80193394);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_8019344C);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_801934D0);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_8019362C);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_801936E0);
void func_801937BC(void) {
}
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_801937C4);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_801937EC);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_801938FC);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_8019394C);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_8019399C);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_801939C4);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_801939E0);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80194218);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80194314);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_801943EC);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_801949C0);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80195520);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_8019563C);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_8019572C);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_8019583C);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_8019596C);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80195A54);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80195B44);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80195C38);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80195E68);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80195F64);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_801964E4);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_801965E4);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_801966B0);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_8019686C);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80196934);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_801969EC);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80196BC4);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_801971A4);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_801978A4);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80197A9C);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80197B94);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_801982BC);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80198650);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80198B00);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80198BC8);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80198FA0);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80199388);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_801994D8);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80199508);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80199584);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_8019960C);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_801996EC);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_80199740);
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_8019976C);

421
src/st/no3/377D4.c Normal file
View File

@ -0,0 +1,421 @@
#include "common.h"
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801B77D4);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801B78A8);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801B7A64);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801B7B98);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801B7C4C);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801B8254);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801B8564);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801B8A74);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801B8ED0);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801B9198);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801B94F0);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801B9650);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801B97D0);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801B989C);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801B9C44);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801B9CE8);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801B9E10);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801BA0A0);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801BA348);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801BA4C0);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801BA868);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801BABE8);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801BAD6C);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801BAEF0);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801BB3BC);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801BB548);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801BBB8C);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801BBDC0);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801BBE70);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801BBF38);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801BC05C);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801BC3FC);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801BC4EC);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801BC780);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801BC93C);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801BCC4C);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801BCE08);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801BD564);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801BD71C);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801BDEB0);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801BE080);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801BE134);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801BE444);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801BE544);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801BE598);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801BE75C);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801BE7BC);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801BE870);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801BE9F4);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801BEA20);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801BECCC);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801BEDAC);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801BEEB0);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801BFF00);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C033C);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C083C);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C11A4);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C12E8);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C13F8);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C14B8);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C184C);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C187C);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C1B78);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C1C80);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C2D98);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C343C);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C3500);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C3618);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C3730);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C377C);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C37D4);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C38D0);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C39E4);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C3A30);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C3A88);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C3B84);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C3C98);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C3E10);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C3EC4);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C3F38);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C3FB4);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C402C);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C4C64);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C4CD0);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C4D4C);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C4D94);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C4E4C);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C4F64);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C4FA0);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C4FD4);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C5018);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C5048);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C5074);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C52EC);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C54D4);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C5534);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C5560);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C557C);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C55E8);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C5620);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C5668);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C56B0);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C5708);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C5794);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C57C4);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C57FC);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C5844);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C58A4);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C58C4);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C58E0);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C5974);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C5A70);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C5A98);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C5BC0);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C5D18);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C605C);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C6114);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C6198);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C62F4);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C6374);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C6450);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C6568);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C660C);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C665C);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C6684);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C6EF8);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C6FF4);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C7098);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C7680);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C7930);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C8400);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C8528);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C8A84);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C8B74);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C8C84);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C8DB4);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C8E9C);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C8F8C);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C9080);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C92B0);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C93AC);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C992C);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C9A2C);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C9AF8);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C9BC0);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C9C78);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C9E50);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801CA430);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801CAB30);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801CAD28);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801CAE20);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801CAFF0);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801CBC74);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801CC008);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801CC4B8);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801CC5A4);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801CC6F8);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801CC820);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801CC90C);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801CC974);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801CDD80);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801CDF10);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801CE2F4);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801CE740);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801CE98C);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801CED60);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801CEF88);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801CF438);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801CF58C);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801CF5E0);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801CF6D8);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801CF740);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801D04A4);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801D0624);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801D06FC);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801D0A2C);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801D0B34);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801D16B4);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801D1FC0);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801D24AC);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801D2840);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801D2A9C);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801D2D40);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801D2E4C);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801D3F38);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801D4168);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801D423C);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801D4668);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801D4700);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801D48F8);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801D49C4);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801D4B20);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801D56D8);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801D583C);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801D58D4);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801D59D0);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801D5AAC);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801D615C);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801D6264);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801D64B0);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801D6710);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801D6880);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801D6C68);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801D6DB8);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801D6DE8);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801D6E64);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801D6EEC);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801D6FCC);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801D7020);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801D704C);