Extract main (#26)

This commit is contained in:
Allison Mackenzie 2023-09-21 12:59:23 -05:00 committed by GitHub
parent 7b6c47d8bc
commit 7d6b041938
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 480 additions and 4 deletions

View File

@ -2,7 +2,9 @@
.SECONDARY:
# Binaries
MAIN := main
GAME := game
OVL_CH := ch
OVL_CR := cr
# Compiler
@ -73,7 +75,7 @@ endef
# Build
all: build check
build: game overlays
build: main game overlays
init:
$(MAKE) clean
@ -82,7 +84,12 @@ init:
### Game Executables ###
# TODO: SCUS_942.27
### This is SCUS_942.27
main: main_dirs $(BUILD_DIR)/SCUS_942.27
$(BUILD_DIR)/SCUS_942.27: $(BUILD_DIR)/$(MAIN).elf
$(OBJCOPY) -O binary $< $@
$(BUILD_DIR)/$(MAIN).elf: $(call list_o_files,main)
$(call link,main,$@)
game: game_dirs $(BUILD_DIR)/MEDIEVIL.EXE
$(BUILD_DIR)/MEDIEVIL.EXE: $(BUILD_DIR)/$(GAME).elf
@ -131,7 +138,12 @@ expected: check
# Assembly extraction
extract: extract_ovlcr extract_ovlch extract_game
extract: extract_main extract_game extract_ovlcr extract_ovlch
## Main
extract_main:
cat $(CONFIG_DIR)/symbols.txt $(CONFIG_DIR)/symbols.main.txt > $(CONFIG_DIR)/generated.symbols.main.txt
$(SPLAT) $(CONFIG_DIR)/splat.main.yaml
## Game
extract_game:

View File

@ -1,3 +1,4 @@
6e59ebb243fcb41152c29406c7f6d30629a1b8c9 build/SCUS_942.27
265ce5dc508002a339ae535e49a5b1b4e683b732 build/MEDIEVIL.EXE
b52e73eea027f2a517be47b6f2133e3a6ac73a15 build/CR.BIN
87fd421e4990c34075e901b4d658ca51f24ff2c7 build/CH.BIN
265ce5dc508002a339ae535e49a5b1b4e683b732 build/MEDIEVIL.EXE

52
config/splat.main.yaml Normal file
View File

@ -0,0 +1,52 @@
name: SCUS_942.27
sha1: 6e59ebb243fcb41152c29406c7f6d30629a1b8c9
options:
basename: scus_942.27
target_path: disk/SCUS_942.27
base_path: ..
platform: psx
compiler: GCC
asm_path: asm/main
src_path: src/main
build_path: build/
find_file_boundaries: False
ld_script_path: config/ld/main.ld
gp_value: 0x00000000
use_legacy_include_asm: False
asm_function_macro: glabel
asm_jtbl_label_macro: jlabel
section_order: [".rodata", ".text", ".data", ".bss"]
symbol_addrs_path: config/symbols.main.txt
undefined_funcs_auto_path: config/undefined_funcs_auto.main.txt
undefined_syms_auto_path: config/undefined_syms_auto.main.txt
extensions_path: tools/splat_ext
subalign: 2
string_encoding: ASCII
data_string_encoding: ASCII
rodata_string_guesser_level: 2
data_string_guesser_level: 2
segments:
- name: header
type: header
start: 0x0
- name: main
type: code
start: 0x800
vram: 0x801B0000
bss_size: 0x0
subsegments:
- [0x800, rodata, 800]
- [0x64D0, c, 64D0]
- [0x10750, data]
- [0x21000]

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

411
src/main/64D0.c Normal file
View File

@ -0,0 +1,411 @@
#include "common.h"
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B5CD0);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B5DE8);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B5E50);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B5EA0);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B5F50);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B5F90);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B5FD0);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B6670);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B66A4);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B66E0);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B6730);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B682C);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B6868);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B6990);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B6A00);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B6A3C);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B6A80);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B6AA0);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B6B88);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B6C00);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B6EA0);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B7060);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B711C);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B71C4);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B7444);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B74C8);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B752C);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B7570);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B7614);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B7650);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B76A8);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B76D0);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B76F8);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B7760);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B77A0);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B7870);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B78F0);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B7980);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B79B4);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B7A40);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B7AD8);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B7AE4);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B7B60);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B7B80);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B7BBC);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B7BF8);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B7C1C);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B7C40);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B7D30);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B7DC0);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B7E4C);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B7EE0);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B7F74);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B7F8C);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B8010);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B8040);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B8390);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B8480);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B84B0);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B8540);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B857C);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B85A4);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B85CC);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B8600);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B8610);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B8620);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B8630);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B863C);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B86A8);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B86C8);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B86DC);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B8710);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B8744);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B8764);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B8784);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B8798);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B87AC);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B88E8);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B8A1C);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B8B68);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B8B88);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B8BA8);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B8BC8);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B8BEC);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B8C0C);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B8D10);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B8D90);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B92EC);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B956C);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B9834);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B9C40);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B9CC8);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B9D9C);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B9E8C);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801B9ED8);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BA0B8);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BA220);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BA320);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BA40C);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BA418);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BA4F0);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BA7C8);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BA7E8);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BAAAC);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BAB50);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BADEC);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BAE60);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BAED0);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BAF50);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BAF84);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BB1F8);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BB2C8);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BB4B0);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BB650);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BB7EC);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BB8F0);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BB904);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BB920);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BB9A4);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BB9D0);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BBB0C);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BBC60);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BBDD8);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BBEB0);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BBF00);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BBF60);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BBFE0);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BC06C);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BC0D0);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BC160);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BC210);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BC250);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BC310);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BC330);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BCC4C);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BCC78);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BCE20);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BCE34);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BCE48);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BCE5C);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BCE80);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BCF98);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BCFC4);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BD02C);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BD1BC);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BD1D0);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BD29C);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BD2E0);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BD614);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BD704);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BD914);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BDB8C);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BDC1C);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BDC50);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BDCB8);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BDD90);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BDE3C);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BDEC8);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BE280);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BE2A0);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BE2C0);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BE2E0);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BE32C);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BE3F8);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BE4F0);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BE5C4);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BE66C);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BE6A4);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BE6EC);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BE740);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BE74C);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BE75C);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BE7E0);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BEA50);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BEA88);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BEB5C);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BEC04);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BEFFC);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BF064);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BF080);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BF148);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BF1E0);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BF234);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BF294);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BF2B4);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BF2C8);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BF2E8);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BF308);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BF328);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BF340);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BF4A0);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BF508);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BF5FC);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BF60C);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BF6C8);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BF944);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BF97C);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BF9A0);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BF9D0);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BFA04);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BFB14);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BFD78);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BFE58);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BFE90);
INCLUDE_ASM("asm/main/nonmatchings/64D0", func_801BFEB0);