Cleaning up the repo

This commit is contained in:
Ogre 2023-08-30 01:39:39 +02:00
parent a45e28667c
commit 1928aa31f3
18 changed files with 263 additions and 72607 deletions

4
.gitignore vendored
View File

@ -3,4 +3,6 @@ baserom.z64
asm
assets
.vscode
.vscode
tools/build

177
Makefile Normal file
View File

@ -0,0 +1,177 @@
### Build Options ###
BASEROM := baserom.z64
TARGET := ogrebattle64
COMPARE ?= 1
NON_MATCHING ?= 0
CHECK ?= 1
VERBOSE ?= 1
PRETTY_PRINTING ?= 1
# Fail early if baserom does not exist
ifeq ($(wildcard $(BASEROM)),)
$(error Baserom `$(BASEROM)' not found.)
endif
# NON_MATCHING=1 implies COMPARE=0
ifeq ($(NON_MATCHING),1)
override COMPARE=0
endif
ifeq ($(VERBOSE),0)
V := @
endif
ifeq ($(PRETTY_PRINTING),0)
P := true ||
endif
### Output ###
BUILD_DIR := build
TOOLS_DIR := tools
BUILD_TOOLS_DIR := $(TOOLS_DIR)/build
ROM := $(BUILD_DIR)/$(TARGET).z64
ELF := $(BUILD_DIR)/$(TARGET).elf
LD_SCRIPT := $(TARGET).ld
LD_MAP := $(BUILD_DIR)/$(TARGET).map
PYTHON := python3
SPLAT_YAML := splat.yaml
SPLAT := $(PYTHON) $(TOOLS_DIR)/splat/split.py $(SPLAT_YAML)
DIFF := diff
CROSS := mips-linux-gnu-
LD := $(CROSS)ld
OBJDUMP := $(CROSS)objdump
AS := $(CROSS)as
OBJCOPY := $(CROSS)objcopy
STRIP := $(CROSS)strip
CC := $(BUILD_TOOLS_DIR)/gcc2.7.2/gcc -B $(BUILD_TOOLS_DIR)/gcc2.7.2/
CXX := $(BUILD_TOOLS_DIR)/gcc2.7.2/g++ -P
PRINT := printf '
ENDCOLOR := \033[0m
WHITE := \033[0m
ENDWHITE := $(ENDCOLOR)
GREEN := \033[0;32m
ENDGREEN := $(ENDCOLOR)
BLUE := \033[0;34m
ENDBLUE := $(ENDCOLOR)
YELLOW := \033[0;33m
ENDYELLOW := $(ENDCOLOR)
ENDLINE := \n'
### Compiler Options ###
IINC := -I include -I $(BUILD_DIR)/include -I src -I asm -I lib/libreultra/include/2.0I/
ASFLAGS := -Iinclude -EB -mtune=vr4300 -march=vr4300
CPPFLAGS := $(IINC) -D_LANGUAGE_C -D_FINALROM -DF3DEX_GBI_2 -D_MIPS_SZLONG=32 -nostdinc -mgp32 -mfp32 -mips2
CFLAGS := -c -G0 -mgp32 -mfp32 -mips2
LDFLAGS := -T undefined_syms.txt -T undefined_syms_auto.txt -T undefined_funcs_auto.txt -T undefined_funcs.txt -T $(LD_SCRIPT) -Map $(LD_MAP) --no-check-sections
OPTFLAGS := -O2
### Sources ###
# Empty file used to track the time that splat was most recently run
SPLAT_TIMESTAMP := asm/splat_timestamp
# Object files
OBJECTS := $(shell $(PYTHON) tools/splat_objects.py $(SPLAT_YAML))
DEPENDS := $(OBJECTS:=.d)
### Targets ###
all: $(ROM)
-include $(DEPENDS)
clean:
$(V)rm -rf build
$(info $(MAKEFLAGS))
distclean: clean
$(V)rm -rf asm
$(V)rm -rf assets
$(V)rm -f *auto.txt
$(V)rm -f $(TARGET).ld
$(V)rm -f include/ld_addrs.h
setup: clean distclean split
split:
$(V)$(SPLAT)
@touch $(SPLAT_TIMESTAMP)
# Run splat and update the timestamp
$(SPLAT_TIMESTAMP) : $(SPLAT_YAML) | $(BUILD_DIR)
@$(P)$(PRINT)$(GREEN)Running splat$(ENDGREEN)$(ENDLINE)
$(V)$(SPLAT)
@touch $@
# Disassemble asm files with splat (just update the timestamp so it's newer than the time splat was run)
asm/%.s: $(SPLAT_TIMESTAMP)
@touch $@
# Extract bin files with splat (same as above)
assets/%.bin: $(SPLAT_TIMESTAMP)
@touch $@
# Create the build directory
$(BUILD_DIR):
@$(P)$(PRINT)$(GREEN)Making build folder$(ENDGREEN)$(ENDLINE)
@mkdir -p $@
# Compile .c files
$(BUILD_DIR)/src/%.c.o: src/%.c $(SPLAT_TIMESTAMP) | $(BUILD_DIR)
@$(P)$(PRINT)$(GREEN)Compiling C file: $(ENDGREEN)$(BLUE)$<$(ENDBLUE)$(ENDLINE)
@mkdir -p $(shell dirname $@)
$(V)$(CC) $(CFLAGS) $(OPTFLAGS) $(CPPFLAGS) -o $@ $<
# && mips-linux-gnu-objcopy -N $< $@
# Assemble .s files with modern gnu as
$(BUILD_DIR)/asm/%.s.o: asm/%.s | $(BUILD_DIR)
@$(P)$(PRINT)$(GREEN)Assembling asm file: $(ENDGREEN)$(BLUE)$<$(ENDBLUE)$(ENDLINE)
@mkdir -p $(shell dirname $@)
$(V)$(AS) $(ASFLAGS) -o $@ $<
# Create .o files from .bin files.
$(BUILD_DIR)/%.bin.o: %.bin | $(BUILD_DIR)
@$(P)$(PRINT)$(GREEN)Objcopying binary file: $(ENDGREEN)$(BLUE)$<$(ENDBLUE)$(ENDLINE)
@mkdir -p $(shell dirname $@)
$(V)$(LD) -r -b binary -o $@ $<
# Link the .o files into the .elf
$(BUILD_DIR)/$(TARGET).elf: $(OBJECTS)
@$(P)$(PRINT)$(GREEN)Linking elf file: $(ENDGREEN)$(BLUE)$@$(ENDBLUE)$(ENDLINE)
$(V)$(LD) $(LDFLAGS) -o $@
# Convert the .elf to the final rom
$(ROM): $(BUILD_DIR)/$(TARGET).elf
@$(P)$(PRINT)$(GREEN)Creating z64: $(ENDGREEN)$(BLUE)$@$(ENDBLUE)$(ENDLINE)
$(V)$(OBJCOPY) $< $@ -O binary
$(V)$(OBJCOPY) -O binary --gap-fill 0xFF --pad-to 0x1000000 $< $@
ifeq ($(COMPARE),1)
@$(DIFF) $(BASEROM) $(ROM) && $(PRINT)OK$(ENDLINE) || ($(PRINT)FAILED (ROM BUILT, BUT DIFFERS FROM BASEROM)$(ENDLINE) && false)
endif
### File-Specific Rules ###
# build/src/os/O1/%.o: OPTFLAGS := -O1
# build/src/%.o: CC := python3 tools/asm_processor/build.py $(CC) -- $(AS) $(ASFLAGS) --
### Make Settings ###
# Prevent removing intermediate files
.SECONDARY:
# Specify which targets don't have a corresponding file
.PHONY: all clean distclean test setup split
# Print target for debugging
print-% : ; $(info $* is a $(flavor $*) variable set to [$($*)]) @true

View File

@ -1,39 +0,0 @@
.include "macro.inc"
/* assembler directives */
.set noat /* allow manual use of $at */
.set noreorder /* don't insert nops after branches */
.set gp=64 /* allow use of 64-bit general purpose registers */
.section .text, "ax"
/* Generated by spimdisasm 1.16.3 */
# Handwritten function
glabel func_80070C00
/* 1000 80070C00 3C08800B */ lui $t0, %hi(D_800AEDB0)
/* 1004 80070C04 2508EDB0 */ addiu $t0, $t0, %lo(D_800AEDB0)
/* 1008 80070C08 3C090004 */ lui $t1, %hi(D_3AE70)
/* 100C 80070C0C 2529AE70 */ addiu $t1, $t1, %lo(D_3AE70)
.L80070C10:
/* 1010 80070C10 AD000000 */ sw $zero, 0x0($t0)
/* 1014 80070C14 AD000004 */ sw $zero, 0x4($t0)
/* 1018 80070C18 21080008 */ addi $t0, $t0, 0x8 # handwritten instruction
/* 101C 80070C1C 2129FFF8 */ addi $t1, $t1, -0x8 # handwritten instruction
/* 1020 80070C20 1520FFFB */ bnez $t1, .L80070C10
/* 1024 80070C24 00000000 */ nop
/* 1028 80070C28 3C0A8008 */ lui $t2, %hi(func_8007F880)
/* 102C 80070C2C 254AF880 */ addiu $t2, $t2, %lo(func_8007F880)
/* 1030 80070C30 3C1D800C */ lui $sp, %hi(D_800C6D60)
/* 1034 80070C34 01400008 */ jr $t2
/* 1038 80070C38 27BD6D60 */ addiu $sp, $sp, %lo(D_800C6D60)
/* 103C 80070C3C 00000000 */ nop
/* 1040 80070C40 00000000 */ nop
/* 1044 80070C44 00000000 */ nop
/* 1048 80070C48 00000000 */ nop
/* 104C 80070C4C 00000000 */ nop
/* 1050 80070C50 00000000 */ nop
/* 1054 80070C54 00000000 */ nop
/* 1058 80070C58 00000000 */ nop
/* 105C 80070C5C 00000000 */ nop
.size func_80070C00, . - func_80070C00

51962
asm/1060.s

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,16 +0,0 @@
.section .data
.word 0x80371240 /* PI BSB Domain 1 register */
.word 0x0000000F /* Clockrate setting */
.word 0x80070C00 /* Entrypoint address */
.word 0x0000144A /* Revision */
.word 0xE6419BC5 /* Checksum 1 */
.word 0x69011DE3 /* Checksum 2 */
.word 0x00000000 /* Unknown 1 */
.word 0x00000000 /* Unknown 2 */
.ascii "OgreBattle64 " /* Internal name */
.word 0x00000000 /* Unknown 3 */
.word 0x0000004E /* Cartridge */
.ascii "OB" /* Cartridge ID */
.ascii "E" /* Country code */
.byte 0x00 /* Version */

Binary file not shown.

Binary file not shown.

32
include/include_asm.h Normal file
View File

@ -0,0 +1,32 @@
#ifndef __INCLUDE_ASM_H__
#define __INCLUDE_ASM_H__
#define STRINGIFY_(x) #x
#define STRINGIFY(x) STRINGIFY_(x)
#if !defined(SPLAT) && !defined(__CTX__) && !defined(PERMUTER)
#ifndef INCLUDE_ASM
#define INCLUDE_ASM_INTERNAL(TYPE, BASE_FOLDER, FOLDER, NAME, ARGS...) \
__asm__( \
".section .text\n" \
"\t.set noat\n" \
"\t.set noreorder\n" \
"\t.align\t2\n" \
"\t.globl\t"#NAME"\n" \
"\t.ent\t"#NAME"\n" \
#NAME ":\n" \
"\t.include \"asm/"BASE_FOLDER"/"FOLDER"/"#NAME".s\"\n" \
"\t.set reorder\n" \
"\t.set at\n" \
"\t.end\t"#NAME \
);
#define INCLUDE_ASM(TYPE, FOLDER, NAME, ARGS...) INCLUDE_ASM_INTERNAL(TYPE, "nonmatchings", FOLDER, NAME, ARGS)
#define INCLUDE_ASM_SHIFT(TYPE, FOLDER, NAME, ARGS...) INCLUDE_ASM_INTERNAL(TYPE, "shiftable", FOLDER, NAME, ARGS)
#endif
__asm__(".include \"include/macro.inc\"\n");
#else
#define INCLUDE_ASM(TYPE, FOLDER, NAME, ARGS...)
#endif
#endif

10
include/macro.inc Normal file
View File

@ -0,0 +1,10 @@
.macro glabel label
.global \label
.type \label, @function
\label:
.endm
.macro dlabel label
.global \label
\label:
.endm

4
install_compiler.sh Executable file
View File

@ -0,0 +1,4 @@
#!/bin/bash
curl -L "https://github.com/decompals/mips-gcc-2.7.2/releases/download/main/gcc-2.7.2-linux.tar.gz" | tar zx -C tools/build/gcc2.7.2
curl -L "https://github.com/decompals/mips-binutils-2.6/releases/download/v0.2/binutils-2.6-linux.tar.gz" | tar zx -C tools/build/gcc2.7.2

View File

@ -1,113 +0,0 @@
SECTIONS
{
__romPos = 0;
_gp = 0x0;
header_ROM_START = __romPos;
header_VRAM = ADDR(.header);
.header : AT(header_ROM_START) SUBALIGN(16)
{
header_DATA_START = .;
header_s = .;
build/asm/header.s.o(.data);
header_DATA_END = .;
header_DATA_SIZE = ABSOLUTE(header_DATA_END - header_DATA_START);
}
__romPos += SIZEOF(.header);
header_ROM_END = __romPos;
header_VRAM_END = .;
boot_ROM_START = __romPos;
boot_VRAM = ADDR(.boot);
.boot : AT(boot_ROM_START) SUBALIGN(16)
{
boot_DATA_START = .;
boot_bin = .;
build/assets/boot.bin.o(.data);
boot_DATA_END = .;
boot_DATA_SIZE = ABSOLUTE(boot_DATA_END - boot_DATA_START);
}
__romPos += SIZEOF(.boot);
boot_ROM_END = __romPos;
boot_VRAM_END = .;
entry_ROM_START = __romPos;
entry_VRAM = ADDR(.entry);
.entry 0x80070C00 : AT(entry_ROM_START) SUBALIGN(16)
{
entry_TEXT_START = .;
build/asm/1000.s.o(.text);
entry_TEXT_END = .;
entry_TEXT_SIZE = ABSOLUTE(entry_TEXT_END - entry_TEXT_START);
entry_DATA_START = .;
_1000_s = .;
build/asm/1000.s.o(.data);
entry_DATA_END = .;
entry_DATA_SIZE = ABSOLUTE(entry_DATA_END - entry_DATA_START);
entry_RODATA_START = .;
build/asm/1000.s.o(.rodata);
entry_RODATA_END = .;
entry_RODATA_SIZE = ABSOLUTE(entry_RODATA_END - entry_RODATA_START);
}
entry_bss_VRAM = ADDR(.entry_bss);
.entry_bss (NOLOAD) : SUBALIGN(16)
{
entry_BSS_START = .;
build/asm/1000.s.o(.bss);
entry_BSS_END = .;
entry_BSS_SIZE = ABSOLUTE(entry_BSS_END - entry_BSS_START);
}
__romPos += SIZEOF(.entry);
__romPos = ALIGN(__romPos, 16);
entry_ROM_END = __romPos;
entry_VRAM_END = .;
main_ROM_START = __romPos;
main_VRAM = ADDR(.main);
.main entry_VRAM_END : AT(main_ROM_START) SUBALIGN(16)
{
main_TEXT_START = .;
build/asm/1060.s.o(.text);
main_TEXT_END = .;
main_TEXT_SIZE = ABSOLUTE(main_TEXT_END - main_TEXT_START);
main_DATA_START = .;
_2E570_data__s = .;
build/asm/data/2E570.data.s.o(.data);
main_DATA_END = .;
main_DATA_SIZE = ABSOLUTE(main_DATA_END - main_DATA_START);
main_RODATA_START = .;
build/asm/1060.s.o(.rodata);
main_RODATA_END = .;
main_RODATA_SIZE = ABSOLUTE(main_RODATA_END - main_RODATA_START);
}
main_bss_VRAM = ADDR(.main_bss);
.main_bss (NOLOAD) : SUBALIGN(16)
{
main_BSS_START = .;
build/asm/data/3F1B0.bss.s.o(.bss);
main_BSS_END = .;
main_BSS_SIZE = ABSOLUTE(main_BSS_END - main_BSS_START);
}
__romPos += SIZEOF(.main);
__romPos = ALIGN(__romPos, 16);
main_ROM_END = __romPos;
main_VRAM_END = .;
_3F1B0_ROM_START = __romPos;
_3F1B0_VRAM = ADDR(._3F1B0);
._3F1B0 main_VRAM_END : AT(_3F1B0_ROM_START) SUBALIGN(16)
{
_3F1B0_DATA_START = .;
_3F1B0_bin = .;
build/assets/3F1B0.bin.o(.data);
_3F1B0_DATA_END = .;
_3F1B0_DATA_SIZE = ABSOLUTE(_3F1B0_DATA_END - _3F1B0_DATA_START);
}
__romPos += SIZEOF(._3F1B0);
_3F1B0_ROM_END = __romPos;
_3F1B0_VRAM_END = .;
/DISCARD/ :
{
*(*);
}
}

View File

@ -1,55 +0,0 @@
name: Ogrebattle64 (North America)
sha1: 9cd0cfb50b883edb068e0c30d213193b9cf89895
options:
basename: ogrebattle64
target_path: baserom.z64
base_path: .
compiler: GCC
find_file_boundaries: True
header_encoding: ASCII
platform: n64
# undefined_funcs_auto: True
# undefined_funcs_auto_path: undefined_funcs_auto.txt
# undefined_syms_auto: True
# undefined_syms_auto_path: undefined_syms_auto.txt
# symbol_addrs_path: symbol_addrs.txt
# asm_path: asm
# src_path: src
# build_path: build
# extensions_path: tools/splat_ext
# mips_abi_float_regs: o32
# section_order: [".text", ".data", ".rodata", ".bss"]
# auto_all_sections: [".data", ".rodata", ".bss"]
# libultra_symbols: True
# hardware_regs: True
segments:
- name: header
type: header
start: 0x0
- name: boot
type: bin
start: 0x40
- name: entry
type: code
start: 0x1000
vram: 0x80070C00
subsegments:
- [0x1000, hasm]
- name: main
type: code
start: 0x1060
vram: 0x80070C60
follows_vram: entry
bss_size: 0x3AE70
subsegments:
- [0x1060, asm]
- [0x2E570, data]
- { start: 0x3F1B0, type: bss, vram: 0x800AEDB0 }
- type: bin
start: 0x3F1B0
follows_vram: main
- [0x2800000]

View File

37
tools/splat_objects.py Normal file
View File

@ -0,0 +1,37 @@
#!/usr/bin/env python3
# Script to get a list of object files that will be in the linker script for a given splat file
import argparse
import sys
sys.path.append("./tools/splat")
from split import *
def main(config_path):
# Load config
with open(config_path) as f:
config = yaml.load(f.read(), Loader=yaml.SafeLoader)
options.initialize(config, config_path, None, None)
all_segments = initialize_segments(config["segments"])
objs = ""
for segment in all_segments:
linker_entries = segment.get_linker_entries()
for entry in linker_entries:
objs += str(entry.object_path) + " "
return objs
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Get objects for splat file',
formatter_class=argparse.RawDescriptionHelpFormatter)
parser.add_argument('yamls', nargs='+', help="Splat files")
args = parser.parse_args()
obj_lists = map(main, args.yamls)
map(print, obj_lists)
for obj_list in obj_lists:
print(obj_list)

View File

@ -1,45 +0,0 @@
func_80085BD0 = 0x80085BD0;
func_80093380 = 0x80093380;
func_800992EC = 0x800992EC;
func_800993DC = 0x800993DC;
func_800994E4 = 0x800994E4;
func_8009952C = 0x8009952C;
func_8009953C = 0x8009953C;
func_800996D0 = 0x800996D0;
func_8009D7B4 = 0x8009D7B4;
func_8009D880 = 0x8009D880;
func_8009D9F0 = 0x8009D9F0;
func_8009DA10 = 0x8009DA10;
func_800E9C20 = 0x800E9C20;
func_800E9CEC = 0x800E9CEC;
func_800E9E34 = 0x800E9E34;
func_800EA714 = 0x800EA714;
func_800EA8E0 = 0x800EA8E0;
func_800EAC24 = 0x800EAC24;
func_800EAF1C = 0x800EAF1C;
func_8016C900 = 0x8016C900;
func_8016CB44 = 0x8016CB44;
func_8016CD30 = 0x8016CD30;
func_8016CD3C = 0x8016CD3C;
func_8016CD50 = 0x8016CD50;
func_8016CD90 = 0x8016CD90;
func_8016CDCC = 0x8016CDCC;
func_8016CDF4 = 0x8016CDF4;
func_80173610 = 0x80173610;
func_80173B60 = 0x80173B60;
func_80173BA0 = 0x80173BA0;
func_80173D14 = 0x80173D14;
func_80173D4C = 0x80173D4C;
func_80173D84 = 0x80173D84;
func_80173DBC = 0x80173DBC;
func_80179060 = 0x80179060;
func_8017BDC0 = 0x8017BDC0;
func_8017C29C = 0x8017C29C;
func_8017F490 = 0x8017F490;
func_80180BDC = 0x80180BDC;
func_801841F4 = 0x801841F4;
func_80184D70 = 0x80184D70;
func_801AB720 = 0x801AB720;
func_801AB74C = 0x801AB74C;
func_84001120 = 0x84001120;
func_8400114C = 0x8400114C;

View File

@ -1,96 +0,0 @@
D_3AE70 = 0x3AE70;
D_3F1B0 = 0x3F1B0;
D_40E80 = 0x40E80;
D_66E10 = 0x66E10;
D_A9EF0 = 0xA9EF0;
D_AEDF0 = 0xAEDF0;
D_AEE30 = 0xAEE30;
D_594280 = 0x594280;
D_594284 = 0x594284;
D_80000000 = 0x80000000;
D_80000004 = 0x80000004;
D_80000008 = 0x80000008;
D_8000000C = 0x8000000C;
D_80000300 = 0x80000300;
D_80000308 = 0x80000308;
D_8000030C = 0x8000030C;
D_8000031C = 0x8000031C;
D_8007F880 = 0x8007F880;
D_80098D70 = 0x80098D70;
D_800996B8 = 0x800996B8;
D_800A81FE = 0x800A81FE;
D_800A81FF = 0x800A81FF;
D_800A8211 = 0x800A8211;
D_800A8212 = 0x800A8212;
D_800A8213 = 0x800A8213;
D_800A8215 = 0x800A8215;
D_800A9891 = 0x800A9891;
D_800AA051 = 0x800AA051;
D_800ABB72 = 0x800ABB72;
D_800ABBA2 = 0x800ABBA2;
D_800AEDB0 = 0x800AEDB0;
D_800C6D60 = 0x800C6D60;
D_800EB0B0 = 0x800EB0B0;
D_800EB0DC = 0x800EB0DC;
D_800EB12C = 0x800EB12C;
D_800EB17C = 0x800EB17C;
D_800EB1CC = 0x800EB1CC;
D_800EB21C = 0x800EB21C;
D_800EB26C = 0x800EB26C;
D_800EB2BC = 0x800EB2BC;
D_800EB8F0 = 0x800EB8F0;
D_80164760 = 0x80164760;
D_8016AF80 = 0x8016AF80;
D_801736E0 = 0x801736E0;
D_80173830 = 0x80173830;
D_80173920 = 0x80173920;
D_801776C0 = 0x801776C0;
D_801776F4 = 0x801776F4;
D_80177728 = 0x80177728;
D_801779F8 = 0x801779F8;
D_80177B78 = 0x80177B78;
D_80177D74 = 0x80177D74;
D_80177E4C = 0x80177E4C;
D_80177ED8 = 0x80177ED8;
D_80177F54 = 0x80177F54;
D_80178054 = 0x80178054;
D_80178060 = 0x80178060;
D_80178104 = 0x80178104;
D_801782B8 = 0x801782B8;
D_80178460 = 0x80178460;
D_8017846C = 0x8017846C;
D_801784BC = 0x801784BC;
D_8017B5B0 = 0x8017B5B0;
D_8017B5BC = 0x8017B5BC;
D_8017B5E0 = 0x8017B5E0;
D_8017BA34 = 0x8017BA34;
D_801862D0 = 0x801862D0;
D_80186310 = 0x80186310;
D_80186358 = 0x80186358;
D_80186610 = 0x80186610;
D_801869C8 = 0x801869C8;
D_80186E70 = 0x80186E70;
D_8018F481 = 0x8018F481;
D_8018F5A3 = 0x8018F5A3;
D_8018FDC0 = 0x8018FDC0;
D_80190F10 = 0x80190F10;
D_80196A28 = 0x80196A28;
D_80197168 = 0x80197168;
D_80197B70 = 0x80197B70;
D_80243DB0 = 0x80243DB0;
D_A0000000 = 0xA0000000;
D_A4040000 = 0xA4040000;
D_A4040010 = 0xA4040010;
D_A4080000 = 0xA4080000;
D_A4100000 = 0xA4100000;
D_A4300000 = 0xA4300000;
D_A4300008 = 0xA4300008;
D_A430000C = 0xA430000C;
D_A4400000 = 0xA4400000;
D_A4400010 = 0xA4400010;
D_A4500000 = 0xA4500000;
D_A450000C = 0xA450000C;
D_A4600000 = 0xA4600000;
D_A4600010 = 0xA4600010;
D_A4800000 = 0xA4800000;
D_A4800018 = 0xA4800018;